tianbj před 5 roky
rodič
revize
3932bb6bbd

+ 11 - 3
src/main/java/net/mingsoft/cms/action/CategoryAction.java

@@ -204,11 +204,9 @@ public class CategoryAction extends BaseAction{
 	@LogAnn(title = "删除分类", businessType = BusinessTypeEnum.DELETE)
 	@RequiresPermissions("cms:category:del")
 	public ResultData delete(@RequestBody List<CategoryEntity> categorys,HttpServletResponse response, HttpServletRequest request) {
-		int[] ids = new int[categorys.size()];
 		for(int i = 0;i<categorys.size();i++){
-			ids[i] =Integer.parseInt(categorys.get(i).getId()) ;
+			categoryBiz.delete(Integer.parseInt(categorys.get(i).getId()));
 		}
-		categoryBiz.delete(ids);
 		return ResultData.build().success();
 	}
 	/**
@@ -265,6 +263,16 @@ public class CategoryAction extends BaseAction{
 		if(!StringUtil.checkLength(category.getCategoryParentId()+"", 0, 100)){
 			return ResultData.build().error(getResString("err.length", this.getResString("category.parent.id"), "1", "100"));
 		}
+		//判断是否选择子级为所属栏目
+		 CategoryEntity _category = new CategoryEntity();
+		 _category.setCategoryParentId(category.getId());
+		 _category.setAppId(BasicUtil.getAppId());
+		 List<CategoryEntity> categoryList = categoryBiz.queryChilds(_category);
+		 for(CategoryEntity item:categoryList){
+			 if(item.getId().equals(category.getCategoryId())){
+				 return ResultData.build().error(getResString("cannot.select.child"));
+			 }
+		 }
 		 category.setAppId(BasicUtil.getAppId());
 		categoryBiz.updateEntity(category);
 		return ResultData.build().success(category);

+ 2 - 0
src/main/java/net/mingsoft/cms/biz/ICategoryBiz.java

@@ -24,4 +24,6 @@ public interface ICategoryBiz extends IBaseBiz {
     void saveEntity(CategoryEntity entity);
 
     void updateEntity(CategoryEntity entity);
+
+    void delete(int categoryId);
 }

+ 18 - 0
src/main/java/net/mingsoft/cms/biz/impl/CategoryBizImpl.java

@@ -128,4 +128,22 @@ public class CategoryBizImpl extends BaseBizImpl implements ICategoryBiz {
 		super.updateEntity(entity);
 		setChildParentId(entity);
 	}
+
+	@Override
+	public void delete(int categoryId) {
+		// TODO Auto-generated method stub
+		CategoryEntity category = (CategoryEntity) categoryDao.getEntity(categoryId);
+		//删除父类
+		if(category != null){
+			category.setCategoryParentId(null);
+			List<CategoryEntity> childrenList = categoryDao.queryChildren(category);
+			int[] ids = new int[childrenList.size()];
+			for(int i = 0; i < childrenList.size(); i++){
+				//删除子类
+				ids[i] = Integer.parseInt(childrenList.get(i).getId());
+			}
+			categoryDao.delete(ids);
+			deleteEntity(categoryId);
+		}
+	}
 }

+ 32 - 6
src/main/webapp/WEB-INF/manager/cms/category/form.ftl

@@ -38,7 +38,13 @@
                                 gutter="0"
                                 justify="start" align="top">
                                 <el-col span="12">
-            <el-form-item  label="栏目管理属性" prop="categoryType">
+            <el-form-item prop="categoryType">
+                <template slot='label'>栏目类型
+                    <el-popover slot="label" placement="top-start" title="提示" trigger="hover" >
+                        列表:常用于带列表、详情的业务,例如:新闻列表、图片列表<br>封面:常用单篇文章显示,例如:关于我们、公司介绍
+                        <i class="el-icon-question" slot="reference"></i>
+                    </el-popover>
+                </template>
                     <el-radio-group v-model="form.categoryType"
                                     :style="{width: ''}"
                                     :disabled="false">
@@ -63,7 +69,7 @@
                                 gutter="0"
                                 justify="start" align="top">
                                 <el-col span="12">
-                                    <el-form-item  :label="form.categoryType =='1'? '内容模板' : '封面模板'" prop="categoryUrl">
+                                    <el-form-item prop="categoryUrl" :label="form.categoryType =='1'? '内容模板' : '封面模板'">
                                         <el-select v-model="form.categoryUrl"
                                                    :style="{width: '100%'}"
                                                    :filterable="false"
@@ -76,7 +82,12 @@
                                     </el-form-item>
                                 </el-col>
                                 <el-col span="12">
-                                    <el-form-item  label="列表模板" prop="categoryListUrl" v-if="form.categoryType == '1'">
+                                    <el-form-item prop="categoryListUrl" v-if="form.categoryType == '1'">
+                                        <template slot='label'>列表模板
+                                            <el-popover slot="label" placement="top-start" title="提示" trigger="hover" content="当栏目类型为列表时有效">
+                                                <i class="el-icon-question" slot="reference"></i>
+                                            </el-popover>
+                                        </template>
                                         <el-select v-model="form.categoryListUrl"
                                                    :style="{width: '100%'}"
                                                    :filterable="false"
@@ -93,7 +104,12 @@
                             gutter="0"
                             justify="start" align="top">
                         <el-col span="12">
-                            <el-form-item  label="自定义模型" prop="mdiyModelId">
+                            <el-form-item prop="mdiyModelId">
+                                <template slot='label'>自定义模型
+                                    <el-popover slot="label" placement="top-start" title="提示" width="400" trigger="hover" content="如果发布时候文章字段信息不够,可以采用铭飞代码生成器生成自定义模型,再通过“自定义管理->自定义模型->导入”功能导入模型,注意类型是cms">
+                                        <i class="el-icon-question" slot="reference"></i>
+                                    </el-popover>
+                                </template>
                                 <el-select v-model="form.mdiyModelId"
                                            :style="{width: '100%'}"
                                            :filterable="false"
@@ -169,7 +185,11 @@
         el: '#form',
         data() {
             return {
-                treeList:[],
+                treeList:[{
+                    id:'0',
+                    categoryTitle:'顶级栏目',
+                    children:[],
+                }],
                 saveDisabled: false,
                 //表单数据
                 form: {
@@ -217,7 +237,7 @@
                 ms.http.get(ms.manager+"/cms/category/list.do",{pageSize:9999}).then(function(res){
                     if(res.result){
                         //res.data.rows.push({id:0,categoryId: null,categoryTitle:'顶级栏目管理'});
-                        that.treeList = 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){
                     console.log(err);
@@ -246,6 +266,9 @@
                             that.saveDisabled = false;
                             return
                         }
+                        if(data.categoryId == '0'){
+                            data.categoryId = '';
+                        }
                         data.categoryImg = JSON.stringify(data.categoryImg);
                         ms.http.post(url, data).then(function (data) {
                             if (data.result) {
@@ -292,6 +315,9 @@
                     }else{
                         res.data.categoryImg=[]
                     }
+                    if(!res.data.categoryId){
+                        res.data.categoryId = '0';
+                    }
                         that.form = res.data;
                     }
                 }).catch(function (err) {

+ 1 - 1
src/main/webapp/WEB-INF/manager/cms/category/index.ftl

@@ -17,7 +17,7 @@
 			</el-col>
 			</el-header>
 		<el-main class="ms-container">
-			<el-table ref="multipleTable" :indent="10"
+			<el-table ref="multipleTable" :indent="6"
 					  height="calc(100vh - 20px)"
 					  border :data="dataList"
 					  row-key="id"

+ 19 - 5
src/main/webapp/WEB-INF/manager/cms/content/form.ftl

@@ -9,8 +9,7 @@
     <el-header class="ms-header ms-tr" height="50px">
         <el-button type="primary" icon="iconfont icon-baocun" size="mini" @click="save()" :loading="saveDisabled">保存
         </el-button>
-        <el-button size="mini" icon="iconfont icon-fanhui" plain onclick="javascript:history.go(-1)"
-                   v-if="returnIsShow">返回
+        <el-button size="mini" icon="iconfont icon-fanhui" plain onclick="javascript:history.go(-1)">返回
         </el-button>
     </el-header>
     <el-main class="ms-container">
@@ -24,7 +23,7 @@
                 <el-row
                         gutter="0"
                         justify="start" align="top">
-                    <el-col span="12">
+                    <el-col :span="returnIsShow?'12':'24'">
                         <el-form-item label="文章标题" prop="contentTitle">
                             <el-input v-model="form.contentTitle"
                                       :disabled="false"
@@ -34,7 +33,7 @@
                             </el-input>
                         </el-form-item>
                     </el-col>
-                    <el-col span="12">
+                    <el-col span="12" v-if="returnIsShow">
                         <el-form-item label="所属栏目" prop="contentCategoryId">
                             <tree-select :props="{value: 'id',label: 'categoryTitle',children: 'children'}"
                                          :options="contentCategoryIdOptions" :style="{width:'100%'}"
@@ -275,6 +274,15 @@
                 this.$refs.form[0].validate((valid) => {
                     if (valid) {
                         that.saveDisabled = true;
+                        if(that.categoryIdOptions.filter(f => f['id'] == that.form.contentCategoryId)[0].categoryType == '2'){
+                            that.$notify({
+                                title: '提示',
+                                message: '所属栏目不能为封面',
+                                type: 'error'
+                            });
+                            that.saveDisabled = false;
+                            return
+                        }
                         var data = JSON.parse(JSON.stringify(that.form));
                         if(data.contentType !=null){
                             data.contentType = data.contentType.join(',');
@@ -389,6 +397,12 @@
                             res.data.contentImg = []
                         }
                         that.form = res.data;
+                        var category = that.categoryIdOptions.filter(f => f['id'] == that.form.contentCategoryId);
+                        if(category.length == 1){
+                            if(category[0].categoryType == '2'){
+                                that.returnIsShow = false;
+                            }
+                        }
                         that.changeModel();
                     }
                 }).catch(function (err) {
@@ -401,7 +415,7 @@
                 ms.http.get(ms.manager + "/cms/category/list.do", {pageSize: 9999}).then(function (res) {
                     if (res.result) {
                         that.contentCategoryIdOptions = ms.util.treeData(res.data.rows, 'id', 'categoryId', 'children');
-                        that.categoryIdOptions = res.data.rows
+                        that.categoryIdOptions = res.data.rows;
                         that.changeModel();
                     }
                 }).catch(function (err) {