Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
jinli gu
MCMS
Commits
c9bf4f7e
Commit
c9bf4f7e
authored
Jan 29, 2019
by
yinxr
Browse files
Signed-off-by: yinxr <2273460044@qq.com>
parent
a16292b8
Changes
314
Hide whitespace changes
Inline
Side-by-side
Too many changes to show.
To preserve performance only
20 of 314+
files are displayed.
Plain diff
Email patch
src/main/webapp/WEB-INF/lib/ojdbc14-10.2.0.4.0.jar
deleted
100644 → 0
View file @
a16292b8
File deleted
src/main/webapp/WEB-INF/manager/cms/article/article_form.ftl
deleted
100644 → 0
View file @
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="$
{
S
ession
.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
}
</#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
src/main/webapp/WEB-INF/manager/cms/article/article_main.ftl
deleted
100644 → 0
View file @
a16292b8
<@
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
>
src/main/webapp/WEB-INF/manager/cms/article/index.ftl
deleted
100644 → 0
View file @
a16292b8
<!
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
src/main/webapp/WEB-INF/manager/cms/column/shiro-button.ftl
deleted
100644 → 0
View file @
a16292b8
<@
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
src/main/webapp/WEB-INF/manager/cms/column/shiro-update.ftl
deleted
100644 → 0
View file @
a16292b8
<@
shiro
.hasPermission
name="cms:column:update">
var
url = "$
{
managerPath
}
/$
{
model
?
default
(
""
)}
/column/"+row.categoryId+"/edit.do?modelId=$
{
S
ession
.model_id_session
?
default
(
0
)}
&modelTitle=$
{
S
ession
.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
src/main/webapp/WEB-INF/manager/cms/generate/index.ftl
deleted
100644 → 0
View file @
a16292b8
<@
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
>
src/main/webapp/WEB-INF/manager/exit-system.ftl
deleted
100644 → 0
View file @
a16292b8
<!--
退出系统 -->
<
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
src/main/webapp/WEB-INF/manager/images/data/img.png
deleted
100644 → 0
View file @
a16292b8
320 KB
src/main/webapp/WEB-INF/manager/images/data/ms-bg_1.jpg
deleted
100644 → 0
View file @
a16292b8
210 KB
src/main/webapp/WEB-INF/manager/include/head-file.ftl
deleted
100644 → 0
View file @
a16292b8
<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
src/main/webapp/WEB-INF/manager/index.ftl
deleted
100644 → 0
View file @
a16292b8
<!
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
:
''
,
//当前激活
tab
的
name
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
src/main/webapp/WEB-INF/manager/login.ftl
deleted
100644 → 0
View file @
a16292b8
<!
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
D
ate
()
.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
D
ate
()
.getTime
()
;
},
},
mounted
:
function
(){
this
.verifCode
=
ms
.manager
+
"/code?t="
+
new
D
ate
()
.getTime
()
}
}
)
</
script
>
\ No newline at end of file
src/main/webapp/WEB-INF/manager/main.ftl
deleted
100644 → 0
View file @
a16292b8
<!
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
src/main/webapp/WEB-INF/manager/mweixin/article/index.ftl
deleted
100644 → 0
View file @
a16292b8
<!--
新建图文 -->
<
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
src/main/webapp/WEB-INF/manager/mweixin/keyword/form.ftl
deleted
100644 → 0
View file @
a16292b8
<!--
关键词回复 -->
<
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
src/main/webapp/WEB-INF/manager/mweixin/keyword/index.ftl
deleted
100644 → 0
View file @
a16292b8
<!--
关键字列表 -->
<
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
src/main/webapp/WEB-INF/manager/mweixin/menu.ftl
deleted
100644 → 0
View file @
a16292b8
<
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
src/main/webapp/WEB-INF/manager/mweixin/menu/index.ftl
deleted
100644 → 0
View file @
a16292b8
<!--
自定义菜单 -->
<
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
src/main/webapp/WEB-INF/manager/mweixin/menu/material-bank-form.ftl
deleted
100644 → 0
View file @
a16292b8
<!--
素材库 -->
<
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
Prev
1
2
3
4
5
…
16
Next
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment