Commit 0a2f344b authored by 信 赵's avatar 信 赵

Merge branch '5.0.1' of https://gitee.com/mingSoft/MCMS into 5.0.1

 Conflicts:
	pom.xml
	src/main/webapp/static/plugins/ms/1.0.0/compatible.js
parents ef542c34 db98d5aa
...@@ -24,9 +24,12 @@ ...@@ -24,9 +24,12 @@
</p> </p>
<p align="center"> <p align="center">
铭飞平台:<a href="https://ms.mingsoft.net">https://ms.mingsoft.net/</a> <br/> <a href="https://ms.mingsoft.net" target="_blank">铭飞平台</a>
演示:<a href="http://demo.cms.mingsoft.net/ms/login.do">http://demo.cms.mingsoft.net/ms/login.do</a><br/> <a href="http://demo.cms.mingsoft.net/ms/login.do" target="_blank">在线演示</a>
<a href="http://file.mingsoft.net/ms-runner-4.7.2.zip">一键运行版本</a> <a href="http://doc.ms.mingsoft.net/plugs-cms/" target="_blank">在线使用手册</a>
<a href="https://mingsoft.ke.qq.com/?tuin=383187f3#tab=1&category=-1" target="_blank">腾讯课堂在线视频</a><br/>
<a href="https://ke.qq.com/course/478498" target="_blank">代码生成器视频教程</a><br/>
<a href="http://file.mingsoft.net/ms-runner-5.0.0.zip" target="_blank">Windows一键运行版本\Linux一键运行版本</a>
</p> </p>
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
......
This diff is collapsed.
...@@ -99,6 +99,7 @@ public class CategoryAction extends BaseAction{ ...@@ -99,6 +99,7 @@ public class CategoryAction extends BaseAction{
BaseEntity categoryEntity = categoryBiz.getEntity(Integer.parseInt(category.getId())); BaseEntity categoryEntity = categoryBiz.getEntity(Integer.parseInt(category.getId()));
model.addAttribute("categoryEntity",categoryEntity); model.addAttribute("categoryEntity",categoryEntity);
} }
model.addAttribute("appId",BasicUtil.getAppId());
return "/cms/category/form"; return "/cms/category/form";
} }
......
...@@ -102,6 +102,7 @@ public class ContentAction extends BaseAction{ ...@@ -102,6 +102,7 @@ public class ContentAction extends BaseAction{
BaseEntity contentEntity = contentBiz.getEntity(Integer.parseInt(content.getId())); BaseEntity contentEntity = contentBiz.getEntity(Integer.parseInt(content.getId()));
model.addAttribute("contentEntity",contentEntity); model.addAttribute("contentEntity",contentEntity);
} }
model.addAttribute("appId",BasicUtil.getAppId());
return "/cms/content/form"; return "/cms/content/form";
} }
......
...@@ -24,7 +24,6 @@ package net.mingsoft.cms.action; ...@@ -24,7 +24,6 @@ package net.mingsoft.cms.action;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions; import cn.hutool.core.bean.copier.CopyOptions;
import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.FileUtil;
import net.mingsoft.basic.action.BaseAction;
import net.mingsoft.basic.biz.IModelBiz; import net.mingsoft.basic.biz.IModelBiz;
import net.mingsoft.basic.entity.AppEntity; import net.mingsoft.basic.entity.AppEntity;
import net.mingsoft.basic.util.BasicUtil; import net.mingsoft.basic.util.BasicUtil;
...@@ -52,12 +51,12 @@ import java.util.ArrayList; ...@@ -52,12 +51,12 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
* *
* @ClassName: GeneraterAction * @ClassName: GeneraterAction
* @Description:TODO 生成器 * @Description:TODO 生成器
* @author: 铭飞开发团队 * @author: 铭飞开发团队
* @date: 2018年1月31日 下午2:52:07 * @date: 2018年1月31日 下午2:52:07
* *
* @Copyright: 2018 www.mingsoft.net Inc. All rights reserved. * @Copyright: 2018 www.mingsoft.net Inc. All rights reserved.
*/ */
@Controller("cmsGenerater") @Controller("cmsGenerater")
...@@ -92,7 +91,7 @@ public class GeneraterAction extends BaseAction { ...@@ -92,7 +91,7 @@ public class GeneraterAction extends BaseAction {
/** /**
* 更新主页 * 更新主页
* *
* @return * @return
*/ */
@RequestMapping("/index") @RequestMapping("/index")
...@@ -102,7 +101,7 @@ public class GeneraterAction extends BaseAction { ...@@ -102,7 +101,7 @@ public class GeneraterAction extends BaseAction {
/** /**
* 生成主页 * 生成主页
* *
* @param request * @param request
* @param response * @param response
*/ */
...@@ -114,7 +113,7 @@ public class GeneraterAction extends BaseAction { ...@@ -114,7 +113,7 @@ public class GeneraterAction extends BaseAction {
String tmpFileName = request.getParameter("url"); String tmpFileName = request.getParameter("url");
// 生成后的文件名称 // 生成后的文件名称
String generateFileName = request.getParameter("position"); String generateFileName = request.getParameter("position");
// 获取文件所在路径 首先判断用户输入的模版文件是否存在 // 获取文件所在路径 首先判断用户输入的模版文件是否存在
if (!FileUtil.exist(ParserUtil.buildTempletPath())) { if (!FileUtil.exist(ParserUtil.buildTempletPath())) {
this.outJson(response, false, getResString("templet.file")); this.outJson(response, false, getResString("templet.file"));
...@@ -128,12 +127,12 @@ public class GeneraterAction extends BaseAction { ...@@ -128,12 +127,12 @@ public class GeneraterAction extends BaseAction {
} }
} }
} }
/** /**
* 生成列表的静态页面 * 生成列表的静态页面
* *
* @param request * @param request
* @param response * @param response
* @param CategoryId * @param CategoryId
...@@ -194,7 +193,7 @@ public class GeneraterAction extends BaseAction { ...@@ -194,7 +193,7 @@ public class GeneraterAction extends BaseAction {
/** /**
* 根据栏目id更新所有的文章 * 根据栏目id更新所有的文章
* *
* @param request * @param request
* @param response * @param response
* @param columnId * @param columnId
...@@ -219,12 +218,12 @@ public class GeneraterAction extends BaseAction { ...@@ -219,12 +218,12 @@ public class GeneraterAction extends BaseAction {
this.outJson(response, false); this.outJson(response, false);
} }
} }
/** /**
* 用户预览主页 * 用户预览主页
* *
* @param request * @param request
* @return * @return
*/ */
...@@ -236,4 +235,4 @@ public class GeneraterAction extends BaseAction { ...@@ -236,4 +235,4 @@ public class GeneraterAction extends BaseAction {
+ File.separator + position + ParserUtil.HTML_SUFFIX; + File.separator + position + ParserUtil.HTML_SUFFIX;
return "redirect:" + indexPosition; return "redirect:" + indexPosition;
} }
} }
\ No newline at end of file
...@@ -33,3 +33,4 @@ category.id=\u6240\u5C5E\u680F\u76EE ...@@ -33,3 +33,4 @@ category.id=\u6240\u5C5E\u680F\u76EE
content.sort=\u81EA\u5B9A\u4E49\u987A\u5E8F content.sort=\u81EA\u5B9A\u4E49\u987A\u5E8F
category.diy.url=\u81EA\u5B9A\u4E49\u94FE\u63A5 category.diy.url=\u81EA\u5B9A\u4E49\u94FE\u63A5
content.keyword=\u5173\u952E\u5B57 content.keyword=\u5173\u952E\u5B57
templet.file=\u672A\u627E\u5230\u6A21\u677F\u6587\u4EF6
...@@ -33,3 +33,4 @@ category.id=\u6240\u5C5E\u680F\u76EE ...@@ -33,3 +33,4 @@ category.id=\u6240\u5C5E\u680F\u76EE
content.sort=\u81EA\u5B9A\u4E49\u987A\u5E8F content.sort=\u81EA\u5B9A\u4E49\u987A\u5E8F
category.diy.url=\u81EA\u5B9A\u4E49\u94FE\u63A5 category.diy.url=\u81EA\u5B9A\u4E49\u94FE\u63A5
content.keyword=\u5173\u952E\u5B57 content.keyword=\u5173\u952E\u5B57
templet.file=\u672A\u627E\u5230\u6A21\u677F\u6587\u4EF6
package net.mingsoft.config; package net.mingsoft.config;
import java.util.LinkedHashMap; import net.mingsoft.basic.security.BaseAuthRealm;
import java.util.Map;
import org.apache.shiro.mgt.SecurityManager; import org.apache.shiro.mgt.SecurityManager;
import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor; import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;
import org.apache.shiro.spring.web.ShiroFilterFactoryBean; import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
...@@ -11,9 +9,9 @@ import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreato ...@@ -11,9 +9,9 @@ import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreato
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import net.mingsoft.basic.security.BaseAuthRealm; import java.util.LinkedHashMap;
import java.util.Map;
@Configuration @Configuration
public class ShiroConfig { public class ShiroConfig {
...@@ -21,6 +19,29 @@ public class ShiroConfig { ...@@ -21,6 +19,29 @@ public class ShiroConfig {
@Value("${ms.manager.path}") @Value("${ms.manager.path}")
private String managerPath; private String managerPath;
/**
* 开启Shiro的注解(如@RequiresRoles , @RequiresPermissions),需借助SspringAOP扫描使用Sshiro注解的类,并在必要时进行安全逻辑验证
* 配置以下两个bean(Defaul tAdvisorAutoProxyCreator和uthorizat ionAttributeSourceAdvisor)即可实现此功能
*/
@Bean
public DefaultAdvisorAutoProxyCreator advisorAutoProxyCreator(){
DefaultAdvisorAutoProxyCreator advisorAutoProxyCreator = new DefaultAdvisorAutoProxyCreator();
advisorAutoProxyCreator.setProxyTargetClass(true);
return advisorAutoProxyCreator;
}
/**
* 开启shiro aop注解支持
* 使用代理方式;所以需要开启代码支持
* @param securityManager
*/
@Bean
public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager){
AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor();
authorizationAttributeSourceAdvisor.setSecurityManager(securityManager);
return authorizationAttributeSourceAdvisor;
}
@Bean @Bean
public AuthorizationAttributeSourceAdvisor getAuthorizationAttributeSourceAdvisor( public AuthorizationAttributeSourceAdvisor getAuthorizationAttributeSourceAdvisor(
DefaultWebSecurityManager securityManager) { DefaultWebSecurityManager securityManager) {
......
...@@ -72,163 +72,177 @@ ...@@ -72,163 +72,177 @@
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</el-main> </el-main>
</div> </div>
</body> </body>
</html> </html>
<script> <script>
var indexVue = new Vue({ "use strict";
el: '#index',
data:{ var indexVue = new Vue({
dataList: [], //分类列表 el: '#index',
selectionList:[],//分类列表选中 data: {
loading: true,//加载状态 dataList: [],
emptyText:'',//提示文字 //分类列表
manager: ms.manager, selectionList: [],
loadState:false, //分类列表选中
categoryTypeOptions:[{"value":"1","label":"列表"},{"value":"2","label":"封面"}], loading: true,
//搜索表单 //加载状态
form:{ emptyText: '',
// 栏目管理名称 //提示文字
categoryTitle:'', manager: ms.manager,
// 所属栏目 loadState: false,
categoryId:'', categoryTypeOptions: [{
// 栏目管理属性 "value": "1",
categoryType:'2', "label": "列表"
// 自定义顺序 }, {
categorySort:0, "value": "2",
// 列表模板 "label": "封面"
categoryListUrl:'', }],
// 内容模板 //搜索表单
categoryUrl:'', form: {
// 栏目管理关键字 // 栏目管理名称
categoryKeyword:'', categoryTitle: '',
// 栏目管理描述 // 所属栏目
categoryDescrip:'', categoryId: '',
// 缩略图 // 栏目管理属性
categoryImg: [], categoryType: '2',
// 自定义链接 // 自定义顺序
categoryDiyUrl:'', categorySort: 0,
// 栏目管理的内容模型id // 列表模板
mdiyModelId:'', categoryListUrl: '',
// 内容模板
categoryUrl: '',
// 栏目管理关键字
categoryKeyword: '',
// 栏目管理描述
categoryDescrip: '',
// 缩略图
categoryImg: [],
// 自定义链接
categoryDiyUrl: '',
// 栏目管理的内容模型id
mdiyModelId: ''
}
}, },
}, methods: {
methods:{ //查询列表
//查询列表 list: function () {
list: function() { var that = this;
var that = this; this.loadState = false;
this.loadState = false; this.loading = true;
this.loading = true; ms.http.get(ms.manager + "/cms/category/list.do", {
ms.http.get(ms.manager+"/cms/category/list.do",{ pageSize: 999
pageSize:999, }).then(function (res) {
}).then( if (that.loadState) {
function(res) { that.loading = false;
if(that.loadState){ } else {
that.loading = false; that.loadState = true;
}else { }
that.loadState = true
if (!res.result || res.data.total <= 0) {
that.emptyText = '暂无数据';
that.dataList = [];
} else {
that.emptyText = '';
that.dataList = ms.util.treeData(res.data.rows, 'id', 'categoryId', 'children');
}
}).catch(function (err) {
console.log(err);
});
setTimeout(function () {
if (that.loadState) {
that.loading = false;
} else {
that.loadState = true;
}
}, 500);
},
copyUrl: function () {
var clipboard = new ClipboardJS('.copyBtn');
var self = this;
clipboard.on('success', function (e) {
self.$notify({
title: '提示',
message: "链接地址已保存到剪切板",
type: 'success'
});
clipboard.destroy();
});
},
//分类列表选中
handleSelectionChange: function (val) {
this.selectionList = val;
},
//删除
del: function (row) {
var that = this;
that.$confirm('此操作将永久删除所选内容, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(function () {
ms.http.post(ms.manager + "/cms/category/delete.do", row.length ? row : [row], {
headers: {
'Content-Type': 'application/json'
} }
if (!res.result||res.data.total <= 0) { }).then(function (res) {
that.emptyText = '暂无数据' if (res.result) {
that.dataList = []; that.$notify({
type: 'success',
message: '删除成功!'
}); //删除成功,刷新列表
that.list();
} else { } else {
that.emptyText = ''; that.$notify({
that.dataList = ms.util.treeData(res.data.rows,'id','categoryId','children'); title: '失败',
message: res.msg,
type: 'warning'
});
} }
}).catch(function(err) { });
console.log(err); }).catch(function () {
}); that.$notify({
setTimeout(()=>{ type: 'info',
if(that.loadState){ message: '已取消删除'
that.loading = false; });
}else {
that.loadState = true
}
}, 500);
},
copyUrl: function(){
var clipboard = new ClipboardJS('.copyBtn');
var self = this;
clipboard.on('success', function (e) {
self.$notify({
title: '提示',
message: "链接地址已保存到剪切板",
type: 'success'
}); });
clipboard.destroy(); },
}); //表格数据转换
}, categoryTypeFormat: function (row, column, cellValue, index) {
//分类列表选中 var value = "";
handleSelectionChange:function(val){
this.selectionList = val; if (cellValue) {
}, var data = this.categoryTypeOptions.find(function (value) {
//删除 return value.value == cellValue;
del: function(row){ });
var that = this;
that.$confirm('此操作将永久删除所选内容, 是否继续?', '提示', { if (data && data.label) {
confirmButtonText: '确定', value = data.label;
cancelButtonText: '取消', }
type: 'warning'
}).then(() => {
ms.http.post(ms.manager+"/cms/category/delete.do", row.length?row:[row],{
headers: {
'Content-Type': 'application/json'
}
}).then(
function(res){
if (res.result) {
that.$notify({
type: 'success',
message: '删除成功!'
});
//删除成功,刷新列表
that.list();
}else {
that.$notify({
title: '失败',
message: res.msg,
type: 'warning'
});
}
});
}).catch(() => {
that.$notify({
type: 'info',
message: '已取消删除'
});
});
},
//表格数据转换
categoryTypeFormat(row, column, cellValue, index){
var value="";
if(cellValue){
var data = this.categoryTypeOptions.find(function(value){
return value.value==cellValue;
})
if(data&&data.label){
value = data.label;
} }
return value;
},
//新增
save: function (id) {
if (id) {
location.href = this.manager + "/cms/category/form.do?id=" + id;
} else {
location.href = this.manager + "/cms/category/form.do";
}
},
//重置表单
rest: function () {
this.$refs.searchForm.resetFields();
} }
return value;
},
//新增
save:function(id){
if(id){
location.href=this.manager+"/cms/category/form.do?id="+id;
}else {
location.href=this.manager+"/cms/category/form.do";
}
},
//重置表单
rest(){
this.$refs.searchForm.resetFields();
}, },
}, created: function () {
created(){ /* this.categoryListUrlOptionsGet();
/* this.categoryListUrlOptionsGet(); this.categoryUrlOptionsGet();*/
this.categoryUrlOptionsGet();*/ this.list();
this.list(); }
}, });
}) </script>
</script>
\ No newline at end of file
...@@ -25,75 +25,78 @@ ...@@ -25,75 +25,78 @@
var indexVue = new Vue({ var indexVue = new Vue({
el: "#index", el: "#index",
data: { data: {
action:"", //跳转页面 action: "",
//跳转页面
defaultProps: { defaultProps: {
children: 'children', children: 'children',
label: 'categoryTitle' label: 'categoryTitle'
}, },
treeData:[], treeData: [],
loading:true, loading: true,
emptyText:'', emptyText: ''
}, },
methods:{ methods: {
handleNodeClick: function(data){ handleNodeClick: function (data) {
if(data.categoryType == '1'){ if (data.categoryType == '1') {
this.action = ms.manager +"/cms/content/main.do?categoryId="+data.id; this.action = ms.manager + "/cms/content/main.do?categoryId=" + data.id;
} else if(data.categoryType == '2'){ } else if (data.categoryType == '2') {
this.action = ms.manager +"/cms/content/form.do?categoryId="+data.id+"&type=2"; this.action = ms.manager + "/cms/content/form.do?categoryId=" + data.id + "&type=2";
} else{ } else {
this.action = ms.manager +"/cms/content/main.do"; this.action = ms.manager + "/cms/content/main.do";
} }
}, },
treeList: function(){ treeList: function () {
var that = this; var that = this;
this.loadState = false; this.loadState = false;
this.loading = true; this.loading = true;
ms.http.get(ms.manager+"/cms/category/list.do",{ ms.http.get(ms.manager + "/cms/category/list.do", {
pageSize:999, pageSize: 999
}).then( }).then(function (res) {
function(res) { if (that.loadState) {
if(that.loadState){ that.loading = false;
that.loading = false; } else {
}else { that.loadState = true;
that.loadState = true }
}
if (!res.result||res.data.total <= 0) { if (!res.result || res.data.total <= 0) {
that.emptyText = '暂无数据'; that.emptyText = '暂无数据';
that.treeData = []; that.treeData = [];
} else { } else {
that.emptyText = ''; that.emptyText = '';
that.treeData = ms.util.treeData(res.data.rows,'id','categoryId','children'); that.treeData = ms.util.treeData(res.data.rows, 'id', 'categoryId', 'children');
that.treeData = [{ that.treeData = [{
id:0, id: 0,
categoryTitle:'全部', categoryTitle: '全部',
children: that.treeData, children: that.treeData
}] }];
} }
}).catch(function(err) { }).catch(function (err) {
console.log(err); console.log(err);
}); });
setTimeout(()=>{ setTimeout(function () {
if(that.loadState){ if (that.loadState) {
that.loading = false; that.loading = false;
}else { } else {
that.loadState = true that.loadState = true;
} }
}, 500); }, 500);
}, }
}, },
mounted(){ mounted: function () {
this.action = ms.manager +"/cms/content/main.do"; this.action = ms.manager + "/cms/content/main.do";
this.treeList(); this.treeList();
} }
}) });
</script> </script>
<style> <style>
#index .index-menu { #index .index-menu {
height: 100vh;
min-height: 100vh; min-height: 100vh;
min-width: 140px; min-width: 140px;
} }
#index .ms-iframe-style { #index .ms-iframe-style {
width: 100%; width: 100%;
height: 100%;
border: 0; border: 0;
} }
......
...@@ -119,113 +119,163 @@ ...@@ -119,113 +119,163 @@
</body> </body>
</html> </html>
<script> <script>
"use strict";
var app = new Vue({ var app = new Vue({
el: '#app', el: '#app',
watch:{ watch: {},
},
data: { data: {
homeLoading:false, homeLoading: false,
articleLoading:false, articleLoading: false,
columnLoading:false, columnLoading: false,
template:'index.htm',//主题模板 template: '',
templateOptions:[], //主题模板
position:'index', //位置 templateOptions: [],
contentSection:'0', //文章栏目 position: 'index',
section:'0', //栏目 //位置
time:ms.util.date.fmt(new Date(),"yyyy-MM-dd"), contentSection: '0',
treeList:[{ //文章栏目
id:'0', section: '0',
categoryTitle:'顶级栏目', //栏目
children:[], time: ms.util.date.fmt(new Date(), "yyyy-MM-dd"),
}], treeList: [{
id: '0',
categoryTitle: '顶级栏目',
children: []
}]
}, },
methods: { methods: {
//更新主页 //更新主页
updataIndex(){ updataIndex: function () {
var that = this; var that = this;
if(!that.position || that.position == ''){ if (!that.position || that.position == '') {
this.$notify({ title: '请输入主页位置!', type: 'warning' }); this.$notify({
title: '请输入主页位置!',
type: 'warning'
});
return; return;
} }
that.homeLoading = true; that.homeLoading = true;
ms.http.post(ms.manager+'/cms/generate//generateIndex.do', {url:that.template,position:that.position}).then(function (data) { ms.http.post(ms.manager + '/cms/generate//generateIndex.do', {
if(data.result){ url: that.template,
that.$notify({ title: '更新成功!', type: 'success' }); position: that.position
}else { }).then(function (data) {
that.$notify({ title: '更新失败!',message: "错误", type: 'error' }); if (data.result) {
that.$notify({
title: '更新成功!',
type: 'success'
});
} else {
that.$notify({
title: '更新失败!',
message: "错误",
type: 'error'
});
} }
}).catch(function (err) { }).catch(function (err) {
that.$notify({ title: '更新失败!',message: err, type: 'error' }); that.$notify({
title: '更新失败!',
message: err,
type: 'error'
});
console.log(err); console.log(err);
}).finally(()=>{ }).finally(function () {
that.homeLoading = false; that.homeLoading = false;
}); });
}, },
//预览主页 //预览主页
viewIndex(){ viewIndex: function () {
if(!this.position || this.position == ''){ if (!this.position || this.position == '') {
this.$notify({ title: '请输入主页位置!', type: 'warning' }); this.$notify({
title: '请输入主页位置!',
type: 'warning'
});
return; return;
} }
window.open(ms.manager+"/cms/generate/"+this.position+"/viewIndex.do"); window.open(ms.manager + "/cms/generate/" + this.position + "/viewIndex.do");
}, },
//更新栏目 //更新栏目
updateColumn(){ updateColumn: function () {
var that = this; var that = this;
that.columnLoading = true; that.columnLoading = true;
ms.http.get(ms.manager+'/cms/generate/'+(that.section?that.section:0)+'/genernateColumn.do').then(function (data) { ms.http.get(ms.manager + '/cms/generate/' + (that.section ? that.section : 0) + '/genernateColumn.do').then(function (data) {
if(data.result){ if (data.result) {
that.$notify({ title: '更新成功!', type: 'success' }); that.$notify({
title: '更新成功!',
type: 'success'
});
} }
}).catch(function (err) { }).catch(function (err) {
that.$notify({ title: '更新失败!',message: err, type: 'error' }); that.$notify({
title: '更新失败!',
message: err,
type: 'error'
});
console.log(err); console.log(err);
}).finally(()=>{ }).finally(function () {
that.columnLoading = false; that.columnLoading = false;
}); });
}, },
//生成文章栏目 //生成文章栏目
updateArticle(){ updateArticle: function () {
var that = this; var that = this;
that.articleLoading = true; that.articleLoading = true;
ms.http.post(ms.manager+'/cms/generate/'+(that.contentSection?that.contentSection:0)+'/generateArticle.do', {dateTime:that.time}).then(function (data) { ms.http.post(ms.manager + '/cms/generate/' + (that.contentSection ? that.contentSection : 0) + '/generateArticle.do', {
if(data.result){ dateTime: that.time
that.$notify({ title: '更新成功!', type: 'success' }); }).then(function (data) {
if (data.result) {
that.$notify({
title: '更新成功!',
type: 'success'
});
} }
}).catch(function (err) { }).catch(function (err) {
that.$notify({ title: '更新失败!',message: err, type: 'error' }); that.$notify({
title: '更新失败!',
message: err,
type: 'error'
});
console.log(err); console.log(err);
}).finally(()=>{ }).finally(function () {
that.articleLoading = false; that.articleLoading = false;
}); });
}, },
//获取主题模板数据源 //获取主题模板数据源
templateOptionsGet() { templateOptionsGet: function () {
var that = this; var that = this;
ms.http.get(ms.manager+'/template/queryTemplateFileForColumn.do', {pageSize:99999}).then(function (data) { ms.http.get(ms.manager + '/template/queryTemplateFileForColumn.do', {
that.templateOptions = data.data; pageSize: 99999
}).then(function (data) {
that.templateOptions = data.data; //寻找主页
var template = that.templateOptions.find(function (x) {
return x.indexOf("index") != -1 || x.indexOf("default") != -1;
}); //没有就找其他的
that.template = template || (that.templateOptions.length > 0 ? that.templateOptions[0] : "");
}).catch(function (err) { }).catch(function (err) {
console.log(err); console.log(err);
}); });
}, },
getTree(){ getTree: function () {
var that = this; var that = this;
ms.http.get(ms.manager+"/cms/category/list.do",{pageSize:9999}).then(function(res){ ms.http.get(ms.manager + "/cms/category/list.do", {
if(res.result){ pageSize: 9999
}).then(function (res) {
if (res.result) {
//res.data.rows.push({id:0,categoryId: null,categoryTitle:'顶级栏目管理'}); //res.data.rows.push({id:0,categoryId: null,categoryTitle:'顶级栏目管理'});
that.treeList[0].children = ms.util.treeData(res.data.rows,'id','categoryId','children'); that.treeList[0].children = ms.util.treeData(res.data.rows, 'id', 'categoryId', 'children');
} }
}).catch(function(err){ }).catch(function (err) {
console.log(err); console.log(err);
}); });
}, }
}, },
created(){ created: function () {
this.getTree(); this.getTree();
this.templateOptionsGet(); this.templateOptionsGet();
} }
}) });
</script> </script>
<style> <style>
input{ input{
...@@ -702,4 +752,4 @@ ...@@ -702,4 +752,4 @@
.el-date-editor{ .el-date-editor{
width: 100%; width: 100%;
} }
</style> </style>
\ No newline at end of file
...@@ -427,92 +427,115 @@ ...@@ -427,92 +427,115 @@
<script> <script>
var app = new Vue({ var app = new Vue({
el: '#app', el: '#app',
watch:{ watch: {},
},
data: { data: {
base:ms.base, base: ms.base,
msNewsLast: '', msNewsLast: '',
msNewsPath: '' msNewsPath: ''
}, },
methods: { methods: {
jumpArtcleManager(){ jumpArtcleManager: function () {
window.parent.indexVue.openMenu({modelId:706,modelTitle:'文章管理',modelIcon: "icon-neirongguanli"}); window.parent.indexVue.openMenu({
modelId: 706,
modelTitle: '文章管理',
modelIcon: "icon-neirongguanli"
});
}, },
//栏目管理 //栏目管理
jumpCategorymanager(){ jumpCategorymanager: function () {
window.parent.indexVue.open({"modelId":708,"modelTitle":"栏目管理","modelModelId":706,"modelUrl":"cms/category/index.do"}); window.parent.indexVue.open({
"modelId": 708,
"modelTitle": "栏目管理",
"modelModelId": 706,
"modelUrl": "cms/category/index.do"
});
}, },
//静态化 //静态化
jumpStaticManager(){ jumpStaticManager: function () {
window.parent.indexVue.open({"modelId":406,"modelTitle":"静态化","modelModelId":23,"modelUrl":"cms/generate/index.do"}); window.parent.indexVue.open({"modelId":709,"modelTitle":"静态化","modelModelId":706,"modelUrl":"cms/generate/index.do"});
}, },
//管理员管理 //管理员管理
jumpAdmininstatorManager(){ jumpAdmininstatorManager: function () {
window.parent.indexVue.open({"modelId":411,"modelTitle":"管理员管理","modelModelId":23,"modelUrl":"basic/manager/index.do"}); window.parent.indexVue.open({
"modelId": 411,
"modelTitle": "管理员管理",
"modelModelId": 23,
"modelUrl": "basic/manager/index.do"
});
}, },
//角色管理 //角色管理
jumpUserManager(){ jumpUserManager: function () {
window.parent.indexVue.open({"modelId":406,"modelTitle":"角色管理","modelModelId":23,"modelUrl":"basic/role/index.do"}); window.parent.indexVue.open({
"modelId": 406,
"modelTitle": "角色管理",
"modelModelId": 23,
"modelUrl": "basic/role/index.do"
});
}, },
//菜单管理 //菜单管理
jumpMenuManager(){ jumpMenuManager: function () {
window.parent.indexVue.open({"modelId":183,"modelTitle":"菜单管理","modelModelId":23,"modelUrl":"model/index.do"}); window.parent.indexVue.open({
"modelId": 183,
"modelTitle": "菜单管理",
"modelModelId": 23,
"modelUrl": "model/index.do"
});
}, },
//模板管理 //模板管理
jumpTemplateManager(){ jumpTemplateManager: function () {
window.parent.indexVue.open({"modelId":87,"modelTitle":"模板管理","modelModelId":84,"modelUrl":"template/index.do"}); window.parent.indexVue.open({
"modelId": 87,
"modelTitle": "模板管理",
"modelModelId": 84,
"modelUrl": "template/index.do"
});
}, },
//应用管理 //应用管理
jumpApplicationManager(){ jumpApplicationManager: function () {
window.parent.indexVue.open({"modelId":86,"modelTitle":"应用管理","modelModelId":84,"modelUrl":"app/-1/edit.do"}); window.parent.indexVue.open({
"modelId": 86,
"modelTitle": "应用管理",
"modelModelId": 84,
"modelUrl": "app/-1/edit.do"
});
}, },
//铭飞开发文档 //铭飞开发文档
jumpMCMSDocument(){ jumpMCMSDocument: function () {
window.open("http://doc.ms.mingsoft.net/plugs-cms/"); window.open("http://doc.ms.mingsoft.net/plugs-cms/");
}, },
enterQQOneGroup(){ enterQQOneGroup: function () {
window.open("https://shang.qq.com/wpa/qunwpa?idkey=ebf251dc9758de6b9c78c499956431cba73e28b3f0b72c0fc28242e98b20fca2"); window.open("https://shang.qq.com/wpa/qunwpa?idkey=ebf251dc9758de6b9c78c499956431cba73e28b3f0b72c0fc28242e98b20fca2");
}, },
enterQQTwoGroup(){ enterQQTwoGroup: function () {
window.open("http://shang.qq.com/wpa/qunwpa?idkey=cfb32b0f47d89d7ef1c3a9493984d4ffbdfe14049fdedd90c517a072e90d68b9"); window.open("http://shang.qq.com/wpa/qunwpa?idkey=cfb32b0f47d89d7ef1c3a9493984d4ffbdfe14049fdedd90c517a072e90d68b9");
}, },
enterQQThreeGroup(){ enterQQThreeGroup: function () {
window.open("http://shang.qq.com/wpa/qunwpa?idkey=5dd11fdb492c4ded090fa1f78a166583978e33c4a61301b136d31e9e3eb7df72"); window.open("http://shang.qq.com/wpa/qunwpa?idkey=5dd11fdb492c4ded090fa1f78a166583978e33c4a61301b136d31e9e3eb7df72");
}, },
enterQQFourGroup(){ enterQQFourGroup: function () {
window.open("http://shang.qq.com/wpa/qunwpa?idkey=565f1e4c4fabeee42947f6c6b96ac7ca4853dece16559d3d78e944ca2931b7f5"); window.open("http://shang.qq.com/wpa/qunwpa?idkey=565f1e4c4fabeee42947f6c6b96ac7ca4853dece16559d3d78e944ca2931b7f5");
}, },
addBusinessQQ(){ addBusinessQQ: function () {
window.open("http://wpa.qq.com/msgrd?v=3&uin=3336073455&site=qq&menu=yes"); window.open("http://wpa.qq.com/msgrd?v=3&uin=3336073455&site=qq&menu=yes");
}, },
//打开铭飞消息页面 //打开铭飞消息页面
openMCMSNews(){ openMCMSNews: function () {
window.open(this.msNewsPath); window.open(this.msNewsPath);
}, },
getNewsLast(){ getNewsLast: function () {
var that = this; var that = this;
axios.create({ axios.create({
withCredentials: true withCredentials: true
}).get("https://ms.mingsoft.net/cms/content/list.do?contentCategoryId=202").then(function (res){ }).get("https://ms.mingsoft.net/cms/content/list.do?contentCategoryId=202").then(function (res) {
that.msNewsLast = res.data.data.rows[0].contentTitle.toString(); that.msNewsLast = res.data.data.rows[0].contentTitle.toString();
that.msNewsPath = 'https://ms.mingsoft.net/html/1/203/202/'+res.data.data.rows[0].id+'.html' that.msNewsPath = 'https://ms.mingsoft.net/html/1/203/202/' + res.data.data.rows[0].id + '.html';
}) });
} }
}, },
created(){ created: function () {
this.getNewsLast() this.getNewsLast();
} }
}) });
</script> </script>
<style> <style>
.custom-body { .custom-body {
...@@ -2844,4 +2867,4 @@ ...@@ -2844,4 +2867,4 @@
#app{ #app{
overflow-x: hidden; overflow-x: hidden;
} }
</style> </style>
\ No newline at end of file
//ie的兼容
//Object.assign 对ie对支持
if (typeof Object.assign != 'function') { if (typeof Object.assign != 'function') {
Object.assign = function(target) { Object.assign = function(target) {
'use strict'; 'use strict';
...@@ -17,4 +20,4 @@ if (typeof Object.assign != 'function') { ...@@ -17,4 +20,4 @@ if (typeof Object.assign != 'function') {
} }
return target; return target;
}; };
} }
\ No newline at end of file
...@@ -9,6 +9,8 @@ ...@@ -9,6 +9,8 @@
function(config) { function(config) {
config.headers = { config.headers = {
'Content-Type': 'application/x-www-form-urlencoded', 'Content-Type': 'application/x-www-form-urlencoded',
'Cache-Control': 'no-cache',
'Pragma': 'no-cache',
'X-Requested-With': 'XMLHttpRequest' 'X-Requested-With': 'XMLHttpRequest'
} }
if (config.method === 'post' && config.headers["Content-Type"] === "application/x-www-form-urlencoded") { if (config.method === 'post' && config.headers["Content-Type"] === "application/x-www-form-urlencoded") {
...@@ -171,4 +173,4 @@ ...@@ -171,4 +173,4 @@
} }
window.ms.http = http; window.ms.http = http;
window.ms.isLoginRedirect = true; window.ms.isLoginRedirect = true;
}()); }());
\ No newline at end of file
/** /**
* 通用工具类 * 通用工具类
*/ */
(function() { (function() {
...@@ -20,23 +20,38 @@ ...@@ -20,23 +20,38 @@
log(e.message); log(e.message);
} }
} }
//树形数据组织
function treeData (source, id, parentId, children) { /**
let cloneData = JSON.parse(JSON.stringify(source)) * 列表数据转化为树形结构的列表
return cloneData.filter(father => { * @param source 数据源list
let branchArr = cloneData.filter(child => father[id] == child[parentId]); * @param id 编号
branchArr.length > 0 ? father[children] = branchArr : '' * @param parentId 父级编号
return !father[parentId]||father[parentId]=='0' // 如果第一层不是parentId=0,请自行修改 * @param children 树形子集变量
}) * @returns {*}
* 支持父级编号为 0或null
* 原始数据[{id:1,titile:"标题",pid:0},{id:2,titile:"标题",pid:1}]
* 转化树形数据:[{id:1,titile:"标题",pid:0,children:[{id:2,titile:"标题",pid:1}]}]
*/
function treeData(source, id, parentId, children) {
var cloneData = JSON.parse(JSON.stringify(source));
return cloneData.filter(function (father) {
var branchArr = cloneData.filter(function (child) {
return father[id] == child[parentId];
});
branchArr.length > 0 ? father[children] = branchArr : '';
return !father[parentId] || father[parentId] == '0' || father[parentId] == null ;
});
} }
//验证是否为子集 //验证是否为子集
function childValidate (sourceList,id,parentId,key,parentKey){ function childValidate(sourceList, id, parentId, key, parentKey) {
var data=sourceList.find(x=>x[key]==parentId); var data = sourceList.find(function (x) {
if(data&&data[parentKey]!='0'&&data[parentKey]){ return x[key] == parentId;
if(id==data[parentKey]){ });
return false if (data && data[parentKey] != '0' && data[parentKey]) {
if (id == data[parentKey]) {
return false;
} }
return childValidate(sourceList,id,data[parentKey],key,parentKey) return childValidate(sourceList, id, data[parentKey], key, parentKey);
} }
return true; return true;
} }
...@@ -44,20 +59,19 @@ ...@@ -44,20 +59,19 @@
//日期处理 //日期处理
var date = { var date = {
//格式化时间 //格式化时间
fmt: function(date, fmt) { fmt: function(de, fmt) {
var date = new Date(date); var date = new Date(typeof de == "string"?de.replace(/-/g, "/"):de);
log(fmt);
if (!fmt) { if (!fmt) {
fmt = "yyyy-mm-dd"; fmt = "yyyy-mm-dd";
} }
var o = { var o = {
"M+": date.getMonth() + 1, //月份 "M+": date.getMonth() + 1, //月份
"d+": date.getDate(), //日 "d+": date.getDate(), //日
"h+": date.getHours(), //小时 "h+": date.getHours(), //小时
"m+": date.getMinutes(), //分 "m+": date.getMinutes(), //分
"s+": date.getSeconds(), //秒 "s+": date.getSeconds(), //秒
"q+": Math.floor((date.getMonth() + 3) / 3), //季度 "q+": Math.floor((date.getMonth() + 3) / 3), //季度
"S": date.getMilliseconds() //毫秒 "S": date.getMilliseconds() //毫秒
}; };
if (/(y+)/.test(fmt)) if (/(y+)/.test(fmt))
fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length)); fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
...@@ -226,4 +240,4 @@ ...@@ -226,4 +240,4 @@
} }
window.ms.util = util; window.ms.util = util;
window.ms.debug = false window.ms.debug = false
}()); }());
\ No newline at end of file
Markdown is supported
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