Commit c9bf4f7e authored by yinxr's avatar yinxr
Browse files

Signed-off-by: yinxr <2273460044@qq.com>

parent a16292b8
<@ms.html5>
<@ms.nav title="文章管理" back=true>
<#if article.basicId == 0>
<@ms.saveButton id="saveUpdate" value="保存"/>
<#else>
<@ms.updateButton id="saveUpdate" value="更新"/>
</#if>
</@ms.nav>
<@ms.panel>
<@ms.form isvalidation=true name="articleForm" action="${managerPath}/cms/article/${autoCURD}.do">
<@ms.text name="basicTitle" colSm="2" width="400" label="文章标题" title="文章标题" size="5" placeholder="请输入文章标题" value="${article.basicTitle?default('')}" validation={"maxlength":"300","required":"true", "data-bv-notempty-message":"文章标题不能为空","data-bv-stringlength-message":"标题在300个字符以内!", "data-bv-notempty-message":"必填项目"}/>
<@ms.text name="basicSort" colSm="2" width="200" label="自定义顺序" title="自定义顺序" size="5" placeholder="请输入文章顺序" value="${article.basicSort?c?default(0)}" validation={"data-bv-between":"true","required":"true", "data-bv-between-message":"自定义顺序必须大于0","data-bv-between-min":"0", "data-bv-between-max":"99999999","data-bv-notempty-message":"自定义顺序不能为空"}/>
<#if articleType?has_content>
<@ms.checkboxlist colSm="2" name="checkbox" label="文章属性" list=articleType listKey="dictValue" listValue="dictLabel" />
</#if>
<@ms.radio name="basicDisplay"
list=[{"id":"0","value":"是"},{"id":"1","value":"否"}] value="${article.basicDisplay?c?default()}"
listKey="id" listValue="value" label="是否显示" help="选择否后前端将不显示,需要重新生成才有效果"
/>
<@ms.formRow colSm="2" label="文章缩略图" width="400" >
<@ms.uploadImg path="article" uploadFloderPath="${articleImagesUrl?default('')}" inputName="basicThumbnails" size="1" msg="提示:文章缩略图,支持jpg格式" imgs="${article.basicThumbnails?default('')}" />
</@ms.formRow>
<@ms.text name="articleSource" colSm="2" width="200" label="文章来源" title="文章来源" size="5" placeholder="请输入文章来源" value="${article.articleSource?default('')}" validation={"maxlength":"300", "data-bv-stringlength-message":"文章来源在300个字符以内!"} />
<@ms.text name="articleAuthor" colSm="2" width="200" label="文章作者" title="文章作者" size="5" placeholder="请输入文章作者" value="${article.articleAuthor?default('')}" validation={"maxlength":"12", "data-bv-stringlength-message":"文章作者在12个字符以内!"} />
<#if !isEditCategory><!-- 如果不是单篇 -->
<@ms.formRow colSm="2" label="所属栏目" width="300">
<#if categoryTitle=="">
<@ms.treeInput treeId="inputTree" json="${listColumn?default('')}" jsonId="categoryId" jsonPid="categoryCategoryId" jsonName="categoryTitle" inputName="basicCategoryId" inputValue="${categoryId}" buttonText="选择栏目" clickZtreeId="clickZtreeId(event,treeId,treeNode);" expandAll="true" showIcon="true"/>
<#else>
<@ms.treeInput treeId="inputTree" json="${listColumn?default('')}" jsonId="categoryId" jsonPid="categoryCategoryId" jsonName="categoryTitle" inputName="basicCategoryId" inputValue="${categoryId}" buttonText="${(categoryTitle)!}" clickZtreeId="clickZtreeId(event,treeId,treeNode);" expandAll="true" showIcon="true"/>
</#if>
</@ms.formRow>
</#if>
<@ms.hidden id="basicDateTime" name="basicDateTime" value=""/>
<@ms.date id="articleDateTime" name="articleDateTime" time=true label="发布时间" single=true readonly="readonly" width="300" value="${(article.basicDateTime?default(.now))?string('yyyy-MM-dd HH:mm')}" validation={"required":"true", "data-bv-notempty-message":"必填项目"} placeholder="点击该框选择时间段" />
<@ms.textarea colSm="2" name="basicDescription" label="描述" wrap="Soft" rows="4" size="" value="${article.basicDescription?default('')}" placeholder="请输入对该文章的简短描述,以便用户查看文章简略" validation={"maxlength":"400","data-bv-stringlength-message":"文章描述在400个字符以内!"}/>
<@ms.textarea colSm="2" name="articleKeyword" label="关键字" wrap="Soft" rows="4" size="" placeholder="请输入文章关键字" value="${article.articleKeyword?default('')}" validation={"maxlength":"155", "data-bv-stringlength-message":"文章作者在155个字符以内!"}/>
<!--新填字段内容开始-->
<div id="addFieldForm">
</div>
<@ms.hidden name="articleTypeJson" />
<@ms.editor colSm="2" name="articleContent" label="文章内容" content="${article.articleContent?default('')}" appId="${appId?default(0)}"/>
<@ms.hidden name="modelId" value="${Session.model_id_session?default('0')}" />
</@ms.form>
</@ms.panel>
</@ms.html5>
<script>
//重写时间控件
$('#articleDateTime').daterangepicker({
format:'YYYY-MM-DD HH:mm',
singleDatePicker: true,
showDropdowns: true,
timePickerIncrement: 1,
timePicker: true,
timePicker12Hour: true,
startDate: moment().hours(0).minutes(0).seconds(0),
showDropdowns: true,
showWeekNumbers: true,
});
$('#articleDateTime').on('apply.daterangepicker', function(ev, picker) {
$('#articleDateTime').parents("form:first").data('bootstrapValidator').revalidateField('articleDateTime');
});
var articleBasicId=0;
$(function(){
//页面标题
var articleTitle="<#if categoryTitle?has_content>${categoryTitle}&nbsp;</#if><#if article.basicId !=0><small>编辑文章</small><#else><small>添加文章</small></#if>";
$(".ms-weixin-content-body-title>span").html(articleTitle);
//隐藏跳转地址
$("input[name='articleUrl']").parent().hide();
//文章属性
var actionUrl="";
<#if article.basicId !=0>
actionUrl = "${managerPath}/cms/article/${article.basicId?c?default(0)}/update.do";
var type="${article.articleType?default('')}";
var articleType = new Array;
//文章属性
$("#articleForm input[name='checkbox']").each(function(){
if(type!=""){
articleType = type.split(",");
for(i=0;i<articleType.length;i++){
if($(this).val()==articleType[i]){
$(this).attr("checked",'true');
}
}
}
});
articleBasicId=${article.basicId?c?default(0)};
<#else>
actionUrl = "${managerPath}/cms/article/save.do";
</#if>
//获取当前栏目的自定义模型
var url="${managerPath}/mdiy/contentModel/contentModelField/"+${categoryId?default(0)}+"/queryField.do";
var articleId="basicId="+${article.basicId?c?default(0)};
$(this).request({url:url,data:articleId,method:"post",func:function(data) {
$("#addFieldForm").html(data);
}});
//显示跳转地址
$("input[name='checkbox']").click(function(){
$("input[name='checkbox']").each(function(){
if( $(this).val() == 'j'){
if($(this).is(":checked") ){
$("input[name='articleUrl']").parent().show();
}else{
$("input[name='articleUrl']").parent().hide();
}
}
});
});
//更新或保存
$("#saveUpdate").click(function(){
//禁用按钮
$("#saveUpdate").attr("disabled",true);
//获取按钮值
var bottonText = $("#saveUpdate").text().trim();
//设置按钮加载状态值
$("#saveUpdate").attr("data-loading-text",bottonText+"中");
var articleDateTimeValue = $("#articleDateTime").val()+":00";//让时间能精确到秒与后台对应
$("#basicDateTime").val(articleDateTimeValue); //给basicDateTime字段赋值
//获取所有栏目属性被选中的值
var typeJson=""
$("#articleTypeField").find("select").each(function(index){
var typeValue=0;
if($(this).find("option:selected").val()==undefined){
return;
}
var typeValue=$(this).find("option:selected").val();
if($("#articleTypeField").find("select").length==index){
typeJson =typeJson+ "{bcCategoryId:\"" + typeValue + "\",bcBasicId:'${article.basicId?default(0)}'}"
}else{
typeJson =typeJson+ "{bcCategoryId:\"" + typeValue + "\",bcBasicId:'${article.basicId?default(0)}'},"
}
})
$("input[name=articleTypeJson]").val("["+typeJson+"]");
var basicCategoryId="";
<#if !isEditCategory><!-- 如果不是单篇 -->
basicCategoryId=$("input[name='basicCategoryId']").val(); //多篇时的文章栏目
<#else>
basicCategoryId=${categoryId}; //单篇时的文章栏目
</#if>
//文章所属栏目是数字且不能为0
if(basicCategoryId !=0 && !isNaN(basicCategoryId) ){
//将表单序列化
var saveArticle = $("#articleForm").serialize();
saveArticle += "&basicCategoryId="+basicCategoryId;
//文章属性
var checkboxType="";
$("input[name='checkbox']").each(function(){
if($(this).is(":checked")){
checkboxType+=$(this).val()+",";
}
});
var dataMsg = saveArticle+"&checkboxType="+checkboxType;
var seeMsg = "";
<#if article.basicId !=0>
seeMsg="更新中....";
<#else>
seeMsg="保存中....";
</#if>
var vobj = $("#articleForm").data('bootstrapValidator').validate();
if(vobj.isValid()){
if(isNaN($("input[name=basicSort]").val())){
<@ms.notify msg="自定义排序必须是数字" type="warning"/>
$("input[name=basicSort]").val(0);
//启用按钮
$("#saveUpdate").button('reset');
return;
}
$(this).request({url:actionUrl,data:dataMsg,loadingText:seeMsg,method:"post",type:"json",func:function(obj) {
//执行加载状态
$("#saveUpdate").button('loading');
if(obj.result){
<#if article.basicId !=0>
<@ms.notify msg="更新文章成功" type="success"/>
<#else>
<@ms.notify msg="保存文章成功" type="success"/>
</#if>
var columnType = ${columnType?default(0)};
if(columnType == 1){
//更新并生成之后路径进行跳转
location.href=managerPath+"/cms/article/${categoryId?default(0)}/main.do";
}else{
var dataId = obj.resultData;
if(dataId!=""){
location.href = "${managerPath}/cms/article/"+dataId+"/edit.do";
}
};
$("#saveUpdate").button('reset');
}else{
$('.ms-notifications').offset({top:43}).notify({
type:'warning',
message: { text:obj.resultMsg }
}).show();
}
}});
}
}else{
<@ms.notify msg="请选择文章所属栏目" type="warning"/>
//启用按钮
$("#saveUpdate").attr("disabled",false);
}
//启用按钮
$("#saveUpdate").button('reset');
$("#saveUpdate").attr("disabled",false);
});
});
//选择栏目后查询自定义模型
function clickZtreeId(event,treeId,treeNode){
if(treeNode.columnType == 2){
<@ms.notify msg="不能选择单篇栏目" />
return false;
}
if(treeNode.isParent==true){
<@ms.notify msg="不能选择父级栏目" />
return false;
}
var url="${managerPath}/mdiy/contentModel/contentModelField/"+treeNode.categoryId+"/queryField.do";
var basicId="basicId=${article.basicId?c?default(0)}";
$(this).request({url:url,data:basicId,method:"post",func:function(data) {
$("#addFieldForm").html("");
$("#addFieldForm").html(data);
}});
}
</script>
\ No newline at end of file
<@ms.html5>
<@ms.nav title="文章列表"></@ms.nav>
<@ms.searchForm name="searchForm" action="">
<#if articleTypeList?has_content>
<@ms.select label="文章属性" default="全部" value="a" name="articleType" id="forumSelect" list=articleTypeList listValue="dictLabel" listKey="dictValue" value="${articleType?default('')}"/>
<#else>
<@ms.select label="文章属性" name="articleType" id="forumSelect" value="" list=["默认属性"] />
</#if>
<@ms.text label="文章标题" name="basicTitle" value="" title="请输入文章标题" placeholder="请输入文章标题" />
<@ms.searchFormButton>
<@ms.queryButton id="submitSearch" />
</@ms.searchFormButton>
</@ms.searchForm>
<div id="toolbar">
<@ms.panelNavBtnGroup>
<@shiro.hasPermission name="article:save"><@ms.panelNavBtnAdd title=""/></@shiro.hasPermission>
<@shiro.hasPermission name="article:del"><@ms.panelNavBtnDel title=""/></@shiro.hasPermission>
</@ms.panelNavBtnGroup>
</div>
<@ms.panel>
<table id="articleListTable"
data-show-refresh="true"
data-show-columns="true"
data-show-export="true"
data-method="post"
data-detail-formatter="detailFormatter"
data-pagination="true"
data-page-size="10"
data-side-pagination="server">
</table>
</@ms.panel>
</@ms.html5>
<!--删除限时文章-->
<@ms.modal modalName="delete" title="删除文章">
<@ms.modalBody>
确定要删除所选的文章吗?
</@ms.modalBody>
<@ms.modalButton>
<@ms.button class="btn btn-danger rightDelete" value="确定"/>
</@ms.modalButton>
</@ms.modal>
<script>
$(function(){
var search = $("form[name='searchForm']").serializeJSON();
var articleType = search.articleType;
$("#articleListTable").bootstrapTable({
url:"${managerPath}/cms/article/${categoryId}/list.do?articleTypeStr="+articleType,
contentType : "application/x-www-form-urlencoded",
queryParamsType : "undefined",
toolbar: "#toolbar",
columns: [{ checkbox: true}, {
field: 'column.categoryTitle',
title: '栏目名',
width: 90,
align: 'left'
},{
field: 'basicTitle',
title: '文章标题',
formatter: function (value, row, index){
<@shiro.hasPermission name="article:update">
var url='${managerPath}/cms/article/'+row.articleID+"/edit.do";
return "<a href="+url+" target='_self' >"+value+"</a>";
</@shiro.hasPermission>
<@shiro.lacksPermission name="article:update">
return value;
</@shiro.lacksPermission>
}
}, {
field: 'articleAuthor',
title: '作者',
width: 100
}, {
field: 'basicSort',
title: '排序',
align: 'center',
width: 50
}, {
field: 'basicHit',
title: '点击',
align: 'center',
width: 50
}, {
field: 'basicDateTime',
title: '发布时间',
align: 'center',
width: 90
}]
});
//查询文章标题
$("#submitSearch").click(function(){
var search = $("form[name='searchForm']").serializeJSON();
var params = $('#articleListTable').bootstrapTable('getOptions');
params.queryParams = function(params) {
$.extend(params,search);
return params;
}
$("#articleListTable").bootstrapTable('refresh', {query:$("form[name='searchForm']").serializeJSON()});
});
//添加文章
$("#addButton").click(function(){
if(${isParent}==true){
<@ms.notify msg="不能选择父级栏目" />
return false;
}
location.href = "${managerPath}/cms/article/add.do?categoryId=${categoryId?default(0)}&modelId=${Session.model_id_session?default(0)}&categoryTitle=${categoryTitle?default('')}";
});
//点击重置按钮
$(".reset").click(function(){
$("input[name=basicTitle]").val("");
})
//多选删除
$("#delButton").click(function(){
//获取勾选的所在行的所有数据
var rows = $("#articleListTable").bootstrapTable("getSelections");
if(rows!=""){
//弹出modal窗体
$(".delete").modal();
}else{
<@ms.notify msg="请选择文章!" type="warning"/>
}
});
//删除多个文章
$(".rightDelete").click(function(){
var rows = $("#articleListTable").bootstrapTable("getSelections");
if(rows!=""){
$.ajax({
url:"${managerPath}/cms/article/delete.do",
type:'post',
dataType:'json',
data:JSON.stringify(rows),
contentType:'application/json',
success:function(msg) {
if (msg.result) {
<@ms.notify msg="删除成功!" type="success"/>
location.reload();
} else {
<@ms.notify msg="删除失败" type="fail"/>
}
}
});
}else{
<@ms.notify msg="请选择文章!" type="warning"/>
}
});
});
</script>
<!DOCTYPE html>
<html lang="zh">
<head>
<#include "/include/macro.ftl"/>
<#include "/include/meta.ftl"/>
</head>
<body class="over-hide">
<@ms.content>
<@ms.contentMenu>
<!-- 树形模块菜单开始 -->
<#if listColumn?has_content>
<@ms.tree treeId="inputTree" json="${listColumn?default('')}" addNodesName="全部" jsonId="categoryId" jsonPid="categoryCategoryId" jsonName="categoryTitle" showIcon="true" expandAll="true" getZtreeId="getZtreeId(event,treeId,treeNode);" />
<#else>
<@ms.nodata content="暂无栏目"/>
</#if>
<!-- 树形模块菜单结束 -->
</@ms.contentMenu>
<@ms.contentBody width="85%" style="overflow-y: hidden;">
<@ms.contentPanel style="margin:0;padding:0;overflow-y: hidden;">
<iframe src="${managerPath}/cms/article/0/main.do" style="width:100%;maring:0;padding:0;border:none;height:100%;background-image: url(${skin_manager_loadding}); background-repeat: no-repeat; background-position: center;" id="listFrame" target="listFrame" ></iframe>
</@ms.contentPanel>
</@ms.contentBody>
</@ms.content>
<script>
//树形结点
function getZtreeId(event,treeId,treeNode){
if (treeNode.columnType==1) {
//父级栏目为true,子级栏目为false
var isParent = false;
if(treeNode.isParent == true){
isParent = true;
}
$("#listFrame").attr("src","${managerPath}/cms/article/"+treeNode.categoryId+"/main.do?isParent="+isParent+"&categoryTitle="+encodeURIComponent(treeNode.categoryTitle));
} else if(treeNode.columnType==2){
//判断该单篇栏目是否存在文章
$.ajax({
type: "POST",
url: "${managerPath}/cms/article/"+treeNode.categoryId+"/queryColumnArticle.do",
dataType:"json",
success: function(msg){
if (msg.result) {
$("#listFrame").attr("src","${managerPath}/cms/article/add.do?categoryId="+treeNode.categoryId+"&categoryTitle="+encodeURIComponent(treeNode.categoryTitle));
} else {
//如果该单篇栏目下存在文章则跳转到文章编辑页
$("#listFrame").attr("src","${managerPath}/cms/article/"+treeNode.categoryId+"/edit.do?categoryId="+treeNode.categoryId+"&categoryTitle="+encodeURIComponent(treeNode.categoryTitle));
}
},
});
} else if(treeNode.columnType=="" || treeNode.columnType == undefined){
$("#listFrame").attr("src","${managerPath}/cms/article/0/main.do");
}
}
</script>
</body>
</html>
\ No newline at end of file
<@shiro.hasPermission name="cms:column:save"><@ms.addButton id="addColumnBtn"/></@shiro.hasPermission>
<@shiro.hasPermission name="cms:column:del"><@ms.delButton id="delColumnBtn"/></@shiro.hasPermission>
\ No newline at end of file
<@shiro.hasPermission name="cms:column:update">
var url = "${managerPath}/${model?default("")}/column/"+row.categoryId+"/edit.do?modelId=${Session.model_id_session?default(0)}&modelTitle=${Session.model_title_session?default('')}";
return "<a href=" +url+ " target='_self'>" + value + "</a>";
</@shiro.hasPermission>
<@shiro.lacksPermission name="cms:column:update">
return value;
</@shiro.lacksPermission>
\ No newline at end of file
<@ms.html5>
<@ms.nav title="静态化"></@ms.nav>
<@ms.panel>
<p class="alert alert-info" role="alert">
<span class="glyphicon glyphicon-pushpin text-lef "></span>
<a class="alert-link text-lef" style="margin-left: 12px;">
更新主页,如果系统存在引导页面可以手动修改主页位置文件名,default.html引导页面index.html主页。
</a><br/>
<span class="glyphicon glyphicon-pushpin text-lef "></span>
<a class="alert-link text-lef" style="margin-left: 12px;">
更新栏目列表,推荐使用指定栏目更新。系统提示“更新中...”请不要刷新页面或点击其他菜单。
</a><br/>
<span class="glyphicon glyphicon-pushpin text-lef "></span>
<a class="alert-link text-lef" style="margin-left: 12px;">
根据时间与栏目类型生成文章
</a>
</p>
<@ms.form name="generateIndex">
<@ms.formRow label="选择主页模板" width="300">
<select class="form-control" id="select_id"></select>
<input type="hidden" name="url"/>
</@ms.formRow>
<@ms.text id="position" label="选择主页位置 " width="300" value="index" placeholder="输入主页位置" name="position" help="注:主页位置htm文件名一般为index.html或default.html"/>
<div class="form-group ms-form-group"><div class="col-sm-2"></div><div class="col-sm-9 ms-from-group-input ms-form-input">
<@shiro.hasPermission name="cms:generate:index">
<@ms.button class="btn btn-primary" id="updateIndex" value="生成主页" />
<@ms.panelNavBtnSave title="" id="viewIndex" value="预览主页" />
</@shiro.hasPermission>
</div>
</div>
</@ms.form>
<!--选择更新的栏目-->
<@ms.form name="generateColumn">
<@ms.formRow label="选择要生成栏目" width="300">
<#if list?has_content>
<@ms.treeInput treeId="inputTree" json="${list?default('')}" jsonId="categoryId" jsonPid="categoryCategoryId" jsonName="categoryTitle" buttonText="选择更新的栏目" addNodesName="所有栏目" inputName="columnId" showIcon="true" expandAll="true" />
<#else>
<@ms.treeInput treeId="errorTree" buttonText="暂无数据" />
</#if>
</@ms.formRow>
<div class="form-group ms-form-group"><div class="col-sm-2"></div><div class="col-sm-9 ms-from-group-input ms-form-input">
<@shiro.hasPermission name="cms:generate:column">
<@ms.button class="btn btn-primary" id="updateColumn" value="生成栏目" />
</@shiro.hasPermission>
</div></div>
</@ms.form>
<@ms.form name="generateArticle">
<@ms.formRow label="文章栏目" width="300">
<#if list?has_content>
<@ms.treeInput treeId="inputTreee" json="${list?default('')}" jsonId="categoryId" jsonPid="categoryCategoryId" jsonName="categoryTitle" addNodesName="所有栏目" buttonText="选择更新的栏目" inputName="articleId" showIcon="true" expandAll="true" />
<#else>
<@ms.treeInput treeId="errorTree" buttonText="暂无数据" />
</#if>
</@ms.formRow>
<@ms.date name="dateTime" label="指定时间" single=true readonly="readonly" width="300" value="${now?string('yyyy-MM-dd')}" validation={"required":"true", "data-bv-notempty-message":"必填项目"} placeholder="点击该框选择时间段" />
<div class="form-group ms-form-group"><div class="col-sm-2"></div><div class="col-sm-9 ms-from-group-input ms-form-input">
<@shiro.hasPermission name="cms:generate:article">
<@ms.button class="btn btn-primary" id="updateArticle" value="生成文章" />
</@shiro.hasPermission>
</div></div>
</@ms.form>
</@ms.panel>
</@ms.html5>
<!--点击进行按钮提交-->
<script>
$(function(){
var URL="${managerPath}/template/queryTemplateFileForColumn.do";
var DATA = "";
$(this).request({url:URL,data:DATA,type:"json",method:"get",func:function(msg) {
if(msg.length==0){
$("#select_id").append("<option value='' >暂无文件</option>")
}
for(var i = 0;i<msg.length;i++){
$("#select_id").append("<option value="+msg[i]+">"+msg[i]+"</option>");
//如果存在index.html
if(msg[i]=="index.html" || msg[i]=="index.htm"){
$("#select_id").find("option[value='"+msg[i]+"']").attr("selected",true);
}
}
}});
})
//点击一键更新主页时,进行主页更新
$("#updateIndex").click(function(){
//选择的主页模板名称和主页位置
var url = $("#select_id").val();
var position =$("input[name='position']").val();
//封装ajax请求参数
var URL="${managerPath}/cms/generate//generateIndex.do";
var DATA = "url="+url+"&position="+position;
$(this).html("更新中..").attr("disabled", "disabled");
$(this).request({url:URL,data:DATA,type:"json",method:"post",func:function(msg) {
$("#updateIndex").html("更新主页").removeAttr("disabled");
if(msg.result){
<@ms.notify msg="更新成功" type="success"/>
}else{
$('.ms-notifications').offset({top:43}).notify({
type:'warning',
message: { text:msg.resultMsg }
}).show();
}
$("#updateIndex").html("更新主页")
}});
});
//点击预览时,进行预览
$("#viewIndex").click(function(){
var position =$("input[name='position']").val();
window.open("${managerPath}/cms/generate/"+position+"/viewIndex.do");
});
</script>
<!--点击生成栏目按钮-->
<script>
$("#updateColumn").click(function() {
var columnId = 0;
if($("input[name='columnId']").val() !="" && $("input[name='columnId']").val().length>0){
columnId = $("input[name='columnId']").val();
}
var URL="${managerPath}/cms/generate/"+columnId+"/genernateColumn.do";
$(this).html("更新中..").attr("disabled", "disabled");
$(this).request({url:URL,data:columnId,type:"json",method:"post",func:function(msg) {
$("#updateColumn").html("更新栏目").removeAttr("disabled");
//回调处理方式
if(msg.result){
<@ms.notify msg="更新成功" type="success"/>
}else{
$('.ms-notifications').offset({top:43}).notify({
type:'warning',
message: { text:msg.resultMsg }
}).show();
}
}});
});
</script>
<!--点击生成文章按钮-->
<script>
$("#updateArticle").click(function() {
var articleId = 0;
if($("input[name='articleId']").val() !="" ){
articleId = $("input[name='articleId']").val();
}
var URL="${managerPath}/cms/generate/" + articleId + "/generateArticle.do";
var DATA = "dateTime=" + $("input[name='dateTime']").val();
$(this).html("更新中..").attr("disabled", "disabled");
$(this).request({url:URL,data:DATA,type:"json",method:"post",func:function(msg) {
$("#updateArticle").html("更新文档").removeAttr("disabled");
//回调处理方式
if(msg.result){
<@ms.notify msg="更新成功" type="success"/>
}else{
$('.ms-notifications').offset({top:43}).notify({
type:'warning',
message: { text:msg.resultMsg }
}).show();
}
}});
});
</script>
<!-- 退出系统 -->
<div id="exit-system" class="exit-system">
<el-dialog title="退出提示" :visible.sync="isShow">
确认退出
<div slot="footer" class="dialog-footer">
<el-button @click="isShow = false">取 消</el-button>
<el-button type="primary" @click="loginOut">确认退出</el-button>
</div>
</el-dialog>
</div>
<script>
var exitSystemVue = new Vue({
el: '#exit-system',
data: {
isShow: false, // 模态框的显示
},
methods: {
loginOut: function () {
var that = this;
ms.http.get(ms.manager + "/loginOut.do")
.then((data) => {
isShow = false;
location.href = ms.manager + "/login.do";
}, (err) => {
that.$message.error(data.resultMsg);
})
}
}
})
</script>
\ No newline at end of file
<meta charset="utf-8">
<!--浏览器小图标-->
<link rel="icon" href="http://cdn.mingsoft.net/global/images/ms.ico" type="x-icon">
<script type="text/javascript" src="https://unpkg.com/vue@2.5.21/dist/vue.min.js"></script>
<!--小图标-->
<link rel="stylesheet" href="//at.alicdn.com/t/font_847907_mkdvd7gopsg.css">
<!-- 引入样式 -->
<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
<!-- 引入组件库 -->
<script src="https://unpkg.com/element-ui/lib/index.js"></script>
<!--网络请求框架-->
<script src="https://cdn.bootcss.com/axios/0.18.0/axios.min.js"></script>
<script src="https://cdn.bootcss.com/qs/6.5.2/qs.min.js"></script>
<!--铭飞-->
<script src="http://cdn.mingsoft.net/ms/1.0/ms.js"></script>
<script src="http://cdn.mingsoft.net/ms/1.0/ms.http.js"></script>
<script src="http://cdn.mingsoft.net/ms/1.0/ms.util.js"></script>
<!--jquery-->
<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<!--百度富文本-->
<script type="text/javascript" charset="utf-8" src="http://mpm.mingsoft.net/static/plugins/ueditor/1.4.3.1/ueditor.parse.js"></script>
<script type="text/javascript" charset="utf-8" src="http://mpm.mingsoft.net/static/plugins/ueditor/1.4.3.1/ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="http://mpm.mingsoft.net/static/plugins/ueditor/1.4.3.1/ueditor.all.js"></script>
<script type="text/javascript" charset="utf-8" src="http://mpm.mingsoft.net/static/plugins/ueditor/1.4.3.1/lang/zh-cn/zh-cn.js"></script>
<!-- 拖拽 -->
<script src="//cdn.jsdelivr.net/npm/sortablejs@1.7.0/Sortable.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/Vue.Draggable/2.17.0/vuedraggable.min.js"></script>
<!-- <link rel="stylesheet" href="${base}/static/ms-admin/4.7.0/css/login.css"> -->
<!-- <link rel="stylesheet" href="${base}/static/mweixin/css/custom-menu.css"> -->
<!-- <link rel="stylesheet" href="${base}/static/mweixin/css/message-reply.css"> -->
<!--图片懒加载-->
<script src="https://cdn.bootcss.com/vue-lazyload/1.2.6/vue-lazyload.js"></script>
<link rel="stylesheet" href="../../../static/ms-admin/4.7.0/css/login.css">
<link rel="stylesheet" href="../../../static/mweixin/css/custom-menu.css">
<link rel="stylesheet" href="../../../static/mweixin/css/message-reply.css">
<script>
// ms.base = "${base}";
// ms.manager = "${managerPath}";
ms.base = "http://192.168.0.54:82";
ms.manager = "http://192.168.0.54:82/apis/ms";
//图片懒加载
Vue.use(VueLazyload, {
error: ms.base + '/images/ic_image_deault.png',
loading: ms.base + '/images/ic_image_deault.png',
})
</script>
\ No newline at end of file
<!DOCTYPE html>
<html>
<head>
<title></title>
<!-- <#include "/include/head-file.ftl"/> -->
<!-- <link rel="stylesheet" href="${base}/static/ms-admin/4.7.0/css/index.css"> -->
<!--#include virtual="include/head-file.ftl" -->
<!--#include virtual="./reset-password.ftl" -->
<!--#include virtual="./exit-system.ftl" -->
<link rel="stylesheet" href="../../../static/ms-admin/4.7.0/css/index.css">
</head>
<body>
<div id="app" class="index">
<el-container>
<!--头部-->
<el-header class="ms-admin-header">
<el-aside width="200px" class="ms-admin-logo">
<img :src="ms.base+'/static/ms-admin/4.7.0/images/logo.png'" />
<div>
<img :src="ms.base+'/static/ms-admin/4.7.0/images/version.png'" />
<span>v4.6.3</span>
</div>
</el-aside>
<!--头部menu-->
<el-menu class="ms-admin-header-menu" :default-active="0+''" mode="horizontal" >
<el-menu-item
class="ms-admin-menu-item"
:index="i+''"
v-for="(menu,i) in mainParentMenuList"
:key='i'
@click="openMenu(menu,i)"
v-text="menu.modelTitle"
></el-menu-item>
<el-menu-item class="ms-admin-menu-item" :index="menuList.length+''" @click=''>
<i class="iconfont icon-gengduo" @click.stop.self='shortcutMenu = !shortcutMenu'></i>
</el-menu-item>
<!-- 快捷菜单 -->
<ul class="ms-admin-shortcut-menu" v-show='shortcutMenu'>
<li v-for="(item,index) of parentMenuList"
:key='index'
v-text='item.modelTitle'
@click='openMenu(item,index)'
></li>
<i class="iconfont icon-gengduo" @click.stop.self='shortcutMenu = !shortcutMenu'></i>
</ul>
</el-menu>
<!--头部右侧-->
<el-main class="ms-admin-mstore">
<!--登录-->
<el-dropdown trigger="click" class="ms-admin-login" placement="top-start" @visible-change="loginDown = !loginDown">
<span class="el-dropdown-link" :class="{'active':loginDown}">
<img src="http://cdn.mingsoft.net/global/static/ms-admin/4.7.0//msheader.png" />
<span v-text='peopleInfo.managerName'></span>
</span>
<el-dropdown-menu class="ms-admin-login-down" slot="dropdown" @click.native='openModal'>
<el-dropdown-item>修改密码</el-dropdown-item>
<el-dropdown-item>退出</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<!--mstore按钮-->
<div class="ms-admin-mstore-icon">
<i class="iconfont icon-gengduo1"></i>
</div>
</el-main>
</el-header>
<el-container class="ms-admin-container">
<!--菜单-->
<el-aside :class="['ms-admin-menu-aside',{'ms-admin-menu-aside-active':collapseMenu}]">
<el-menu
:class="['ms-admin-menu',{'ms-admin-menu-active':collapseMenu}]"
:default-active="menuActive"
:collapse="collapseMenu"
mode='vertical'
:collapse-transition='true'
:unique-opened='true'
ref='menu'
>
<el-submenu
:index="i+''"
v-for="(menu,i) in parentMenuList"
:key='i'
>
<template slot="title">
<i class="iconfont" :class="iconType(menu.modelTitle)"></i>
<span v-text="menu.modelTitle"></span>
</template>
<!-- 子菜单 -->
<el-menu-item
:index="i+'-'+index"
v-for="(sub,index) in getSubMenu(menu.modelId)"
:key='sub.modelModelId'
v-text="sub.modelTitle"
@click.self='open(sub.modelTitle,sub.modelUrl)'
></el-menu-item>
</el-submenu>
<!-- 收缩按钮 -->
<div :class="['ms-menu-expand',{'ms-menu-expand-active':collapseMenu}]" @click='collapseMenu = !collapseMenu'>
<i class="iconfont icon-shousuo"></i>
</div>
</el-menu>
</el-aside>
<!--内容-->
<el-main class="ms-admin-main">
<!--选项卡-->
<el-tabs
class="ms-admin-tabs"
v-model="currentTab"
type="card"
closable
@tab-remove="closeTab"
>
<el-tab-pane
v-for="(item, index) in editableTabs"
:key="index"
:label="item.title"
:name="item.title"
>
<iframe :src='ms.manager+"/"+item.url'></iframe>
</el-tab-pane>
</el-tabs>
</el-main>
</el-container>
</el-container>
</div>
</body>
</html>
<script>
var indexVue = new Vue({
el: "#app",
data: {
// 预置菜单图标
icon:{
'消息管理':'icon-xiaoxiguanli',
'评论管理':'icon-pinglunguanli',
'内容管理':'icon-bianji1',
'会员中心':'icon-huiyuan',
'自定义管理':'icon-gengduo-2',
'权限管理':'icon-UPMSquanxianicon-',
'系统管理':'icon-xitong',
},
menuList:[],//菜单接口数据
parentMenuList:[],//一级菜单
subMenuList:[],//二级菜单 所有
mainParentMenuList:[],//头部菜单显示主要的选项
loginDown: false, //登录下拉
menuActive: "", //选中菜单
editableTabsValue: '',
editableTabs: [],//当前打开的tab页面
shortcutMenu:false,//快捷菜单显示状态
collapseMenu:false,//菜单折叠,false不折叠
currentTab:'',//当前激活tabname
tabIndex: 2,
//登录用户信息
peopleInfo:{
managerName:''//账号
},
},
watch:{
menuList:function(n,o){
var that = this;
n && n.forEach(function(item,index){
item.modelModelId == 0 ? that.parentMenuList.push(item) : that.subMenuList.push(item)
})
},
parentMenuList:function(n,o){
this.mainParentMenuList = n.slice(0,5);
},
},
methods: {
// 菜单列表
list:function(){
var that = this;
ms.http.get(ms.manager + "/model/list.do")
.then((data)=>{
that.menuList = data.rows
}, (err) => {
that.$message.error(err);
})
},
// 菜单打开页面
open:function(title,url){
var result = '';
result = this.editableTabs.some(function (item,index) {return item.title == title})
!result ? this.editableTabs.push({title:title,url:url}) : ""
this.currentTab = title;
// 处理其他逻辑
},
// 获取当前菜单的子菜单
getSubMenu:function (modelId) {
var result = [];
var that = this;
that.subMenuList && that.subMenuList.forEach(function (item) {
item.modelModelId == modelId ? result.push(item) : ''
})
return result;
},
// 匹配图标
iconType:function (title) {
return this.icon[title] || 'icon-xitongpeizhi'
},
//关闭tab标签页
closeTab(targetName) {
var that = this;
// 关闭的面板是当前激活面板
if(that.currentTab == targetName){
that.editableTabs.forEach(function (tab,index,arr) {
if(tab.title == targetName){
var nextTab = arr[index + 1] || arr[index - 1];
if(nextTab){
that.currentTab = nextTab.title
}
}
})
}
// 关闭的不是当前面板
that.editableTabs = that.editableTabs.filter(function (tab) {
return tab.title !== targetName
})
},
// 头部导航打开菜单
openMenu:function(menu,index){
this.$refs.menu.open(index);
var children = [];
this.menuList.forEach(function (tab) {
if(tab.modelModelId == menu.modelId){
children.push(tab)
}
})
this.currentTab = children[0] && children[0].modelTitle;
this.open(children[0].modelTitle,children[0].modelUrl);
var that = this;
setTimeout(function(){
that.shortcutMenu = false
},50)
},
managerGet:function(){
var that = this;
ms.http.get(ms.manager + "/basic/manager/get.do")
.then((data)=>{
that.peopleInfo = data
}, (err) => {
that.$message.error(err);
})
},
// 打开修改密码,退出的模态框
openModal:function(){
console.log('event.target',event.target.innerText);
event.target.innerText.indexOf('修改密码')>-1
? resetPasswordVue.isShow=true : exitSystemVue.isShow=true
}
},
mounted:function(){
// 菜单列表
this.list();
//获取登录用户信息
this.managerGet();
},
})
</script>
\ No newline at end of file
<!DOCTYPE html>
<html lang="">
<head>
<title></title>
<!-- <#include "/include/head-file.ftl"/> -->
<!-- <link rel="stylesheet" href="${base}/static/ms-admin/4.7.0/css/login.css"> -->
<!--#include virtual="include/head-file.ftl" -->
<link rel="stylesheet" href="../../../static/ms-admin/4.7.0/css/login.css">
</head>
<body>
<div id="login" class="login">
<el-container class="ms-admin-login-container">
<el-main class="ms-admin-login-main">
<div class="ms-admin-login-warp">
<img :src="ms.base+'/static/ms-admin/4.7.0/images/login-slogn.png'">
<el-form :model="loginForm" status-icon :rules="loginFormRule" ref="loginForm" label-width="100px" class="ms-admin-login-form">
<h1><span>账户登录 / </span>User login</h1>
<el-form-item prop="name" class="ms-admin-form-item">
<el-input type="text" placeholder='用户名' v-model="loginForm.managerName" autocomplete="off"></el-input>
</el-form-item>
<el-form-item prop="pass" class="ms-admin-form-item">
<el-input type="password" placeholder='密码' v-model="loginForm.managerPassword" autocomplete="off"></el-input>
</el-form-item>
<el-form-item prop="code" class="ms-admin-form-item ms-admin-form-item-code">
<el-input type="text" placeholder='验证码' v-model="loginForm.rand_code" autocomplete="off"></el-input>
<img :src="verifCode" class="code-img" @click="code" />
<p><span>看不清?</span><span @click="code">换一张</span></p>
</el-form-item>
<el-form-item class="ms-admin-form-item ms-admin-form-item-checkout">
<el-checkbox v-model="rememberPass">记住密码</el-checkbox>
</el-form-item>
<el-form-item class="ms-admin-form-item">
<el-button type="primary" @click="checkLogin" class="ms-admin-login-btn">登录</el-button>
</el-form-item>
</el-form>
</div>
</el-main>
</el-container>
</div>
</body>
</html>
<script>
var loginVue = new Vue({
el: '#login',
data: {
loginForm: {
managerName: '',
managerPassword: "",
rand_code: '',
},
verifCode: ms.manager + "/code?t=" + new Date().getTime(),
rememberPass: '',
loginFormRule: {
managerName: [{
required: true,
message: '请输入用户名',
trigger: 'blur'
},
{
min: 3,
max: 6,
message: '长度在 3 5 个字符',
trigger: 'blur'
}
],
managerPassword: [{
required: true,
message: '请输入密码',
trigger: 'blur'
},
{
min: 6,
max: 20,
message: '长度在 6 20 个字符',
trigger: 'blur'
}
],
rand_code: [{
required: true,
message: '请填写验证码',
trigger: 'blur'
},
{
min: 1,
max: 4,
message: '长度在1 4 个字符',
trigger: 'blur'
}
],
}
},
methods: {
// 登录
checkLogin: function() {
var that = this;
ms.http.post(ms.manager + "/checkLogin.do", that.loginForm).then(function(data) {
if (data.result) {
that.$notify({
title: '成功',
message: '登录成功',
type: 'success'
});
location.href = ms.manager+"/index.do";
} else {
that.$notify({
title: '失败',
message: data.resultMsg,
type: 'warning'
});
}
}, (err) => {
that.$message.error(data.resultMsg);
})
},
code: function() {
this.verifCode = ms.manager + "/code?t=" + new Date().getTime();
},
},
mounted:function(){
this.verifCode = ms.manager + "/code?t=" + new Date().getTime()
}
})
</script>
\ No newline at end of file
<!DOCTYPE html>
<html lang="en">
<head>
<title>铭飞CMS</title>
<meta content="IE=edge" http-equiv="X-UA-Compatible" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<style>
body{ height: 100%;}
</style>
</head>
<body>
<div style="
text-align: center;
color: #555;
background: #FCFCFC;
height: 300px;
padding-top: 200px;
vertical-align: middle;
"><h2>欢迎进入MS系统</h2><p>欢迎加群: ①231212174 ②221335098 或到<a href="http://ms.mingsoft.net/mbbs/main.do" target="_blank" style="
text-decoration: none;
">官方论坛进行技术交流</a></p></div>
</body>
</html>
\ No newline at end of file
<!-- 新建图文 -->
<link rel="stylesheet" href="../../../../static/mweixin/css/article.css">
<div id='article' class="ms-article ms-container" v-show="menuVue.menuActive == '新建图文'">
<el-container>
<el-aside width="280px">
<div class="ms-main-article">
<img :src='mainArticle.basicPic'>
<div class="ms-main-article-mask"></div>
<span v-text='mainArticle.basicTitle'></span>
</div>
<draggable v-model="subArticleList" :options="{draggable:'.ms-article-item'}">
<div v-for="(element,index) in subArticleList" :key="index" class="ms-article-item">
<p><span v-text='element.basicTitle'></span></p>
<img :src='element.basicThumbnailsl'>
</div>
</draggable>
<div class="ms-article-footer">
<el-button size='medium' icon='el-icon-plus' @click='addArticle'>添加图文</el-button>
</div>
</el-aside>
<el-main>
<div class="ms-main-header">
<el-upload class="ms-pic-upload" :show-file-list="false">
<img v-if="false" :src="false" class="avatar">
<i v-else class="el-icon-picture"></i>
<span>添加封面</span>
</el-upload>
<el-form label-width='40px'>
<el-form-item label="标题" prop="">
<el-input size='small' placeholder="请输入图文标题" v-model='articleForm.basicTitle' @input="resetWordNum('title')">
<span slot='suffix' v-text="titleWordNumber+'/64'"></span>
</el-input>
</el-form-item>
<el-form-item label="作者" prop="">
<el-input size='small' placeholder="请输入图文作者" v-model='articleForm.articleAuthor' @input="resetWordNum('author')">
<span slot='suffix' v-text="authorWordNumber+'/8'"></span>
</el-input>
</el-form-item>
<el-form-item label="摘要" prop="">
<el-input
size='small'
type='textarea'
placeholder="选填,如果不写会默认抓取正文前54个字"
:autosize="{ minRows: 2, maxRows: 2}"
resize='none'
v-model='articleForm.basicDescription'
@input="resetWordNum('desc')"
>
<span slot='suffix' v-text="descWordNumber+'/54'"></span>
</el-input>
</el-form-item>
</el-form>
</div>
<div class="ms-main-body">
<!-- 百度编辑器 -->
<script id="ueditorArticle" type="text/plain" name="articleContent"></script>
</div>
</el-main>
</el-container>
</div>
<script>
var articleVue = new Vue({
el: '#article',
data: {
mainArticle: {
basicPic: 'https://img03.sogoucdn.com/app/a/100520091/20190125112329', //主图
basicTitle: '国足0-3不敌伊朗被淘汰,赛后还有一个消息', //标题
},
// 文章列表
subArticleList: [{
basicTitle: '硬核!年会当着老板面唱,“干活的干不过写PPT的……',
basicThumbnailsl: 'https://img01.sogoucdn.com/app/a/100520091/20190125112509'
}, {
basicTitle: '知否知否,党组织犯错,处理有多严?',
basicThumbnailsl: 'https://img01.sogoucdn.com/app/a/100520091/20190125112509'
}, {
basicTitle: '没有奇迹,国足0-3不敌伊朗止步八强!',
basicThumbnailsl: 'https://img03.sogoucdn.com/app/a/100520091/20190125113148'
}],
titleWordNumber: 64, //图文标题剩余字数
authorWordNumber: 8, //图文作者剩余字数
descWordNumber:54,//摘要
editor: null, //富文本实例
articleForm:{
basicTitle:'',//标题
articleAuthor:'',//作者
basicDescription:'', //摘要
articleContent:'', //正文
}
},
methods: {
// 添加文章
addArticle: function () {
this.subArticleList.push({
basicTitle: '新增文章标题',
basicThumbnailsl: 'https://img03.sogoucdn.com/app/a/100520091/20190125113148'
})
},
// 计算剩余字数
resetWordNum:function(type){
}
},
mounted: function () {
let that = this;
//富文本加载
var URL = window.UEDITOR_HOME_URL || "http://mpm.mingsoft.net/static/plugins/ueditor/1.4.3.1/";
if (this.editor == null) {
this.editor = UE.getEditor('ueditorArticle', {
toolbars: [
['fullscreen', 'undo', 'redo', '|', 'bold', 'italic', 'underline',
'strikethrough',
'removeformat', 'blockquote',
'|', 'forecolor', 'backcolor', 'insertorderedlist',
'insertunorderedlist', '|', 'attachment', 'simpleupload', 'link'
]
],
imageScaleEnabled: true,
// 服务器统一请求接口路径
serverUrl: URL +
"jsp/msController.jsp?jsonConfig=%7BvideoUrlPrefix:'http://mpm.mingsoft.net/',fileUrlPrefix:'http://mpm.mingsoft.net/',imageUrlPrefix:'http://mpm.mingsoft.net/',imagePathFormat:'/upload/pm/editor/%7Btime%7D',filePathFormat:'/upload/pm/editor/%7Btime%7D',videoPathFormat:'/upload/pm/editor/%7Btime%7D'%7D",
autoHeightEnabled: true,
autoFloatEnabled: true,
scaleEnabled: false,
compressSide: 0,
maxImageSideLength: 2000,
maximumWords: 80000,
zIndex: 10000,
elementPathEnabled: false,
wordCount: false,
initialFrameWidth: '100%',
initialFrameHeight: 500,
});
this.editor.ready(function () {
var a = $("#ueditor_0").contents()[0].activeElement;
$(a).addClass("ms-webkit-scrollbar").before(
"<style>.ms-webkit-scrollbar::-webkit-scrollbar,::-webkit-scrollbar{width:10px;/*滚动条宽度*/height:1.5%;/*滚动条高度*/}/*定义滚动条轨道内阴影+圆角*/.ms-webkit-scrollbar::-webkit-scrollbar-track,::-webkit-scrollbar-track{border-radius:10px;/*滚动条的背景区域的圆角*/background-color:#eeeeee;/*滚动条的背景颜色*/}.ms-task-content::-webkit-scrollbar-track{border-radius:10px;background-color:#FFFFFF;}/*定义滑块内阴影+圆角*/.ms-webkit-scrollbar::-webkit-scrollbar-thumb,::-webkit-scrollbar-thumb{border-radius:10px;/*滚动条的圆角*/background-color:#dddddd;/*滚动条的背景颜色*/}</style>"
);
});
}
}
})
</script>
\ No newline at end of file
<!-- 关键词回复 -->
<link rel="stylesheet" href="../../../../static/mweixin/css/keyword-reply.css">
<div id="keyword-reply" class="keyword-reply ms-container ms-weixin-content" v-if="menuVue.menuActive == '关键词表单'">
<el-form :model="keywordReplyForm" status-icon :rules="keywordReplyFormRules" ref="keywordReplyForm" label-width="100px">
<el-form-item label="关键词" prop="keyword" class="ms-keyword-input">
<el-row type='flex' justify='space-between' align='center'>
<el-col :span='12'>
<el-input placeholder="请输入内容" v-model="keywordReplyForm.keyword" class="input-with-select" size='mini' maxlength='30' @input='resetWord'>
<el-select v-model="keywordReplyForm.select" slot="prepend" placeholder="请选择">
<el-option label="模糊匹配" value="1"></el-option>
<el-option label="全匹配" value="2"></el-option>
</el-select>
<span slot='suffix' v-text="wordNumber+'/30'"></span>
</el-input>
</el-col>
<el-col>
<i class="el-icon-plus" @click='addKeyWord'></i>
</el-col>
</el-row>
</el-form-item>
<el-form-item class="ms-keyword-reply-content" label="回复内容">
<el-tabs v-model="activeName" @tab-click="" class="keyword-reply-tabs">
<el-tab-pane label="文字" name="text">
<el-input type="textarea" v-model="keywordReplyForm.reply" :autosize="{ minRows: 4, maxRows: 4}" resize='none'>
</el-input>
<i class="el-icon-delete" @click="keywordReplyForm.reply = ''"></i>
<div class="footer">
<i class="el-icon-star-off"></i>
<a>插入超链接</a>
</div>
</el-tab-pane>
<el-tab-pane label="图片" name="picture">
</el-tab-pane>
<el-tab-pane label="图文" name="article">
</el-tab-pane>
</el-tabs>
</el-form-item>
</el-form>
</div>
<script>
var keywordReplyVue = new Vue({
el: '#keyword-reply',
data: {
keywordReplyForm: {
keyword: "", //关键词
select: '',
reply: "",
},
keywordReplyFormRules: {
},
activeName: 'text',
wordNumber: 30, //剩余字数
},
methods: {
// 添加关键词
addKeyWord: function() {
},
// 计算剩余字数
resetWord: function(value) {
if(!value) return 30;
if(value.length >= 30) {
this.$message.error('任务名称不得超过30个字');
// 这里涉及到获取数据更新之后的DOM,需要用$nextTick
this.$nextTick(function() {
this.keywordReplyForm.keyword = event.target.value = value.slice(0, 30);
})
this.wordNumber = 0
} else {
this.wordNumber = 30 - value.length
}
}
}
})
</script>
\ No newline at end of file
<!-- 关键字列表 -->
<link rel="stylesheet" href="../../../../static/mweixin/css/keyword-list.css">
<div id="keyword-list" class="keyword-list ms-container ms-weixin-content" v-if="menuVue.menuActive == '关键词回复'">
<el-table :data="tableData" border style="width: 100%">
<el-table-column prop="date" label="规则名" width="180" align='center'>
</el-table-column>
<el-table-column prop="name" label="关键词" width="180" align='center'>
</el-table-column>
<el-table-column prop="address" label="消息回复类型" align='center'>
</el-table-column>
<el-table-column prop="address" label="发送对象" align='center'>
</el-table-column>
<el-table-column prop="address" label="回复方式" align='center'>
</el-table-column>
</el-table>
</div>
<script>
var keywordListVue = new Vue({
el: '#keyword-list',
data: {
tableData: [{
date: '2016-05-02',
name: '王小虎',
address: '上海市普陀区金沙江路 1518 弄'
}, {
date: '2016-05-04',
name: '王小虎',
address: '上海市普陀区金沙江路 1517 弄'
}, {
date: '2016-05-01',
name: '王小虎',
address: '上海市普陀区金沙江路 1519 弄'
}, {
date: '2016-05-03',
name: '王小虎',
address: '上海市普陀区金沙江路 1516 弄'
}]
},
methods: {
// 获取关键词列表
list: function() {
}
}
})
</script>
\ No newline at end of file
<link rel="stylesheet" href="../../../static/mweixin/css/menu.css">
<div id="menu-vue">
<!--左侧-->
<el-container class="ms-admin-menu">
<!--右侧头部-->
<el-header class="ms-header" height="50px">
<div>
<i class="el-icon-arrow-left"></i>
<span>
吕小布微信号
</span>
</div>
</el-header>
<el-main>
<el-menu class="ms-admin-menu-menu" default-active="0-0">
<template v-for="(menu,i) in menuList">
<!--单个选项-->
<el-menu-item :index="i" @click="menuActive = menu.title" v-if="!menu.sub" v-text="menu.title"></el-menu-item>
<!--多个选项-->
<el-submenu :index="i+''" v-if="menu.sub">
<template slot="title">
<span v-text="menu.title"></span>
</template>
<el-menu-item class="ms-admin-menu-menu-item" @click="menuActive = sub.title" :index="i+'-'+index" v-for="(sub,index) in menu.sub" v-text="sub.title"></el-menu-item>
</el-submenu>
</template>
</el-menu>
</el-main>
</el-container>
</div>
<script>
var menuVue = new Vue({
el: "#menu-vue",
data: {
menuList: [{
title: '图文素材',
sub: [{
title: '图文'
}, {
title: '图片'
}],
}, {
title: '自定义菜单',
}, {
title: '自动回复',
sub: [{
title: '关注时回复'
}, {
title: '消息回复'
}, {
title: '关键词回复'
}]
},{
title:'新建图文'
}
], //左侧导航列表
menuActive: '图文', //选中
}
})
</script>
\ No newline at end of file
<!-- 自定义菜单 -->
<link rel="stylesheet" href="../../../../static/mweixin/css/custom-menu.css">
<div id="custom-menu" class="ms-custom-menu ms-weixin-content" v-if="menuVue.menuActive == '自定义菜单'">
<el-container class="ms-custom-container">
<el-aside>
<el-container>
<el-header>公众号</el-header>
<el-main></el-main>
<el-footer>
<el-button icon="el-icon-date"></el-button>
<div class="ms-create-menu">
<div class="ms-create-sub-menu">
<el-button type="primary" @click='addSubMenuShow = !addSubMenuShow'>新建菜单</el-button>
<el-button icon="el-icon-plus" v-show='addSubMenuShow'></el-button>
</div>
<el-button icon="el-icon-plus"></el-button>
</div>
</el-footer>
</el-container>
</el-aside>
<el-main>
<el-card class="custom-menu-card" shadow="never">
<div slot="header" class="clearfix">
<span>新建菜单</span>
</div>
<el-form ref="customMenuForm" :rule='customMenuFormRules' :model="customMenuForm" label-width="80px">
<el-form-item label="菜单名称" prop='name' class="ms-custom-menu-name">
<el-input v-model="customMenuForm.name" size='mini'></el-input>
<span>菜单名称字数不多于5个汉字或10个字母</span>
</el-form-item>
<el-form-item label="菜单内容" class="ms-custom-menu-content">
<el-tabs v-model="activeName" @tab-click="">
<el-tab-pane label="图片" name="picture">
<span slot="label">
<i class="el-icon-picture"></i>图片</span>
<div onclick="materialBankFormVue.open()">
<i class="el-icon-picture-outline"></i>
<span>从素材库选择</span>
</div>
<div onclick="newPicFormVue.open()">
<i class="el-icon-plus"></i>
<span>新建图片</span>
</div>
</el-tab-pane>
<el-tab-pane label="图文管理" name="article">
<span slot="label">
<i class="el-icon-picture"></i>图文管理</span>
</el-tab-pane>
</el-tabs>
</el-form-item>
</el-form>
</el-card>
</el-main>
</el-container>
</div>
<script>
var customMenuVue = new Vue({
el: "#custom-menu",
data: {
customMenuForm: {
name: '',
},
customMenuFormRules: {
name: [{
required: true,
message: '请输入菜单名称',
trigger: ['blur', 'change']
},
{
min: 1,
max: 5,
message: '长度在 1 5 个字符',
trigger: ['blur', 'change']
}
],
},
addSubMenuShow: false, //子菜单添加弹窗
activeName: 'picture'
},
methods: {
}
})
</script>
\ No newline at end of file
<!-- 素材库 -->
<link rel="stylesheet" href="../../../../static/mweixin/css/material-bank-form.css">
<div id="material-bank-form" class="material-bank-form">
<el-dialog title="选择图片" :visible.sync="isShow" custom-class='ms-weixin-dialog'>
<el-tabs tab-position="left">
<el-tab-pane :label="group.label + '('+group.total+')'" v-for='(group,index) of materialGroup' :key='index'>
<el-upload :file-list='fileList' action="" list-type="picture-card" :on-preview="handlePictureCardPreview"
:on-remove="handleRemove">
<i class="el-icon-plus"></i>
</el-upload>
<el-dialog :visible.sync="dialogVisible" :modal='false' :title='flieName' custom-class='ms-weixin-dialog'>
<!-- 这是图片放大 -->
<img width="100%" :src="dialogImageUrl" alt="">
</el-dialog>
<el-row type='flex' justify='end'>
<el-col :span='11'>
<el-pagination
@size-change="handleSizeChange"
background
:pager-count="1"
@current-change="handleCurrentChange"
:current-page.sync="currentPage"
:page-size="10"
layout="prev, pager, next, jumper"
:total="50">
</el-pagination>
</el-col>
</el-row>
</el-tab-pane>
</el-tabs>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="isShow = false" size='mini'>确 定</el-button>
<el-button @click="isShow = false" size='mini'>取 消</el-button>
</div>
</el-dialog>
</div>
<script>
var materialBankFormVue = new Vue({
el: '#material-bank-form',
data: {
isShow: false,
materialGroup: [{
label: '未分组',
total:36,
},
{
label: '云创',
total:12,
},
{
label: 'PM管理',
total:16,
},
],
fileList: [], //文件列表
dialogImageUrl: '',//点击放大,触发弹窗里面的图片地址
dialogVisible: false,
flieName:"",//放大图片的文件名
currentPage:'',//当前页数
},
watch:{
fileList:{
handler:function(n,o){
console.log('文件列表',n);
},
deep:true
}
},
methods: {
// 表单打开
open: function () {
this.isShow = true;
},
handlePictureCardPreview:function(file){
// 点击预览大图触发的钩子函数
console.log('file',file);
this.dialogVisible = true;
this.dialogImageUrl = file.url
this.flieName = file.name
},
handleRemove:function(){
},
handleSizeChange:function(){
},
handleCurrentChange:function(){
}
}
})
</script>
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment