Browse Source

Merge remote-tracking branch 'origin/master'

1018653686@qq.com 1 năm trước cách đây
mục cha
commit
e387790d90
3 tập tin đã thay đổi với 192 bổ sung9 xóa
  1. 53 0
      src/api/XMHJC/column.js
  2. 113 4
      src/views/XMHJC/column/article.vue
  3. 26 5
      src/views/XMHJC/column/index.vue

+ 53 - 0
src/api/XMHJC/column.js

@@ -65,6 +65,20 @@ export function deleteColumnMenu(data) {
         data: data
     })
 }
+/**
+ * 栏目菜单删除
+ * @param data
+ * @returns {*}
+ */
+export function checkDeleteColumnMenuSub(data) {
+    return request({
+        url: '/columnMenuSub/checkDelete',
+        method: 'post',
+        data: data
+    })
+}
+
+
 
 
 
@@ -131,4 +145,43 @@ export function deleteColumnArticle(data) {
         method: 'post',
         data: data
     })
+}
+
+
+/**
+ * 栏目菜单表分页
+ * @param data
+ * @returns {*}
+ */
+export function findMenuListByOpen(data) {
+    return request({
+        url: '/columnMenu/getListByOpen',
+        method: 'post',
+        data: data
+    })
+}
+/**
+ * 栏目菜单表分页
+ * @param data
+ * @returns {*}
+ */
+export function findSubMenuListByOpen(data) {
+    return request({
+        url: '/columnMenuSub/getSubListByOpen',
+        method: 'post',
+        data: data
+    })
+}
+
+/**
+ * 栏目文章表列表
+ * @param data
+ * @returns {*}
+ */
+export function findColumnArticleListByOpen(data) {
+    return request({
+        url: '/columnArticle/getArticleListByOpen',
+        method: 'post',
+        data: data
+    })
 }

+ 113 - 4
src/views/XMHJC/column/article.vue

@@ -8,8 +8,8 @@
         highlight-current-row
         :selectConfig="selectConfig"
         :table-events="{
-        select: select,
-      }"
+          select: select,
+        }"
         :action-list="[
         {
           text: '添加栏目文章',
@@ -21,6 +21,48 @@
     </byTable>
     <el-dialog z-index="100" :title="modalType == 'add' ? '添加栏目文章' : '编辑栏目文章'" v-if="dialogVisible" v-model="dialogVisible" width="600" v-loading="loading">
       <byForm :formConfig="formConfig" :formOption="formOption" v-model="formData.data" :rules="rules" ref="byform">
+        <template #columnSlot>
+          <el-row >
+            <el-col :span="9">
+              <el-form-item prop="columnId">
+                <el-select
+                    v-model="formData.data.columnId"
+                    :rule="rules.columnId"
+                    placeholder="请选择菜单"
+                    no-data-text="无数据,请到栏目菜单添加"
+                    @change="(val) => getSubMenuList(val)"
+                >
+                  <el-option
+                      v-for="item in columnListData"
+                      :label="item.name"
+                      :value="item.id"
+                  >
+                  </el-option>
+                </el-select>
+
+              </el-form-item>
+            </el-col>
+            <el-col :span="1"></el-col>
+            <el-col :span="9">
+              <el-form-item prop="subId">
+                <el-select
+                    v-model="formData.data.subId"
+                    :rule="rules.subId"
+                    placeholder="请选择栏目"
+                    no-data-text="无数据,请到栏目菜单子栏目添加"
+                >
+                  <el-option
+                      v-for="item in subColumnListData"
+                      :label="item.name"
+                      :value="item.id"
+                  >
+                  </el-option>
+                </el-select>
+              </el-form-item>
+            </el-col>
+          </el-row>
+        </template>
+
         <template #coverList>
           <el-row style="width: 100%">
             <el-col :span="6">
@@ -112,8 +154,15 @@ import byForm from "@/components/byForm/index";
 import {computed, nextTick, reactive, ref} from "vue";
 import TinymceEditor from "@/components/Editor/TinymceEditor.vue";
 import {getDictOneByXmhjc, getFileList,getFileStr} from "@/api/XMHJC/common";
-import {addColumnArticle, editColumnArticle, findColumnArticleList, getColumnArticle} from "@/api/XMHJC/column";
+import {
+  addColumnArticle,
+  editColumnArticle,
+  findColumnArticleList,
+  findMenuListByOpen, findSubMenuListByOpen,
+  getColumnArticle
+} from "@/api/XMHJC/column";
 import {deleteAboutUsCulture} from "@/api/XMHJC/aboutUs";
+import useUserStore from "@/store/modules/user";
 
 const loading = ref(false);
 const submitLoading = ref(false);
@@ -136,15 +185,55 @@ let rules = ref({
   videoUrl: [{ required: true, message: "请输入第三方链接", trigger: "blur" }],
   sort: [{ required: true, message: "请输入排序", trigger: "blur" }],
   status: [{ required: true, message: "请选择启用状态", trigger: "change" }],
+  columnId: [{ required: true, message: "请选择菜单", trigger: "change" }],
+  subId: [{ required: true, message: "请选择子栏目", trigger: "change" }],
 });
 const { proxy } = getCurrentInstance();
 const bodyListType = ref([]);
 const enableStatus = ref([]);
-const selectConfig = [];
+const columnListData = ref([]);
+const subColumnListData = ref([]);
+
+
+const selectConfig = computed(() => {
+  return [
+  {
+    label: "状态",
+    prop: "status",
+    data: enableStatus.value
+  },
+  {
+    label: "菜单",
+    prop: "columnId",
+    data: columnListData.value.map((x) => ({
+        label: x.name,
+        value: x.id,
+      }))
+  },
+  // {
+  //     label: "栏目",
+  //     prop: "subId",
+  //
+  // },
+]});
 const config = computed(() => {
   return [
     {
       attrs: {
+        label: "菜单",
+        prop: "columnIdName",
+        width: '120'
+      },
+    },
+    {
+      attrs: {
+        label: "栏目",
+        prop: "subIdName",
+        width: '120'
+      },
+    },
+    {
+      attrs: {
         label: "标题",
         prop: "title",
       },
@@ -258,6 +347,13 @@ const byform = ref(null);
 const formConfig = computed(() => {
   return [
     {
+      type: "slot",
+      slotName: "columnSlot",
+      prop: "columnId",
+      label: "菜单",
+      required: true,
+    },
+    {
       type: "input",
       prop: "title",
       label: "标题",
@@ -339,6 +435,7 @@ const getDictlist = async () => {
     label: x.dictValue,
     value: x.dictKey,
   }));
+
   bodyListType.value = res["column_body_type"].map((x) => ({
     label: x.dictValue,
     value: x.dictKey,
@@ -435,6 +532,8 @@ const getDtl = async (row) => {
   const resFile1 = await getFileList({businessIdList: [response.data.id], fileType: 2})
   formData.data.videoList = resFile1.data[response.data.id];
 
+  getSubMenuList(formData.data.columnId);
+
   dialogVisible.value = true;
 };
 
@@ -482,8 +581,18 @@ const videoListSuccess = (response, uploadFile) => {
   ];
 };
 
+const getMenuList = async () => {
+  const res = await findMenuListByOpen({})
+  columnListData.value = res.data;
+};
+
+const getSubMenuList = async (id) => {
+  const res = await findSubMenuListByOpen({columnId: id})
+  subColumnListData.value = res.data;
+};
 
 
+getMenuList()
 getDictlist()
 getList()
 

+ 26 - 5
src/views/XMHJC/column/index.vue

@@ -90,8 +90,14 @@ import byForm from "@/components/byForm/index";
 import {computed, nextTick, reactive, ref} from "vue";
 import TinymceEditor from "@/components/Editor/TinymceEditor.vue";
 import {getDictOneByXmhjc, getFileList,getFileStr} from "@/api/XMHJC/common";
-import {addColumnMenu, editColumnMenu, findColumnMenuList, getColumnMenu} from "@/api/XMHJC/column";
+import {
+  addColumnMenu, checkDeleteColumnMenuSub,
+  editColumnMenu,
+  findColumnMenuList,
+  getColumnMenu
+} from "@/api/XMHJC/column";
 import {deleteAboutUsCulture} from "@/api/XMHJC/aboutUs";
+import {isNullOrUndefined} from "@tinymce/tinymce-vue/lib/es2015/main/ts/Utils";
 
 const loading = ref(false);
 const submitLoading = ref(false);
@@ -339,9 +345,10 @@ const select = (_selection, row) => {
 const submitForm = () => {
   byform.value.handleSubmit(() => {
     if (!(formData.data.columnMenuSubList && formData.data.columnMenuSubList.length > 0)) {
+      // formData.data.columnMenuSubList = [];
 
-      formData.data.columnMenuSubList = [];
-
+      ElMessage({message: "请填写子栏目",type: "error",});
+      return
     }
 
     if (formData.data.type == '2' &&
@@ -429,8 +436,22 @@ const getCellColumn = (row) =>{
   }
 }
 
-const clickDelete = (index) => {
-  formData.data.columnMenuSubList.splice(index, 1);
+const clickDelete = async (index) => {
+  console.log(isNullOrUndefined(formData.data.columnMenuSubList[index].id))
+  if (isNullOrUndefined(formData.data.columnMenuSubList[index].id)){
+    formData.data.columnMenuSubList.splice(index, 1);
+  }else {
+      //验证是否能删除该子栏目
+     const res = await  checkDeleteColumnMenuSub({id : formData.data.columnMenuSubList[index].id });
+     if (res.data){
+       formData.data.columnMenuSubList.splice(index, 1);
+       return
+     }else {
+       ElMessage({message: "该栏目存在文章,删除失败!如不想显示请禁用",type: "error",});
+       return
+     }
+  }
+
 };
 
 getDictlist()