lzhe
2024-06-06 a2441175073f8b09a7eff29effd7e3e617de2f7d
src/views/configuration/custom/planSettings.vue
@@ -2,81 +2,141 @@
 * @Author: lzhe lzhe@example.com
 * @Date: 2024-03-26 10:28:33
 * @LastEditors: lzhe lzhe@example.com
 * @LastEditTime: 2024-05-29 17:32:55
 * @LastEditTime: 2024-05-30 18:17:23
 * @FilePath: /smart-web/src/views/master/person/main/index.vue
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
-->
<template>
   <div class="aposcope-main">
      <div class="header">
      <div class="header" v-if="$route.query.type == 1">
         <div class="title">计划显示设置</div>
         <div class="type">
            <div class="item last" @click="openPlan">新建计划类型模版</div>
            <div :class="{item:true, activeTab:index == 0?true:false}" v-for="(item,index) in planData">{{item.templateName}}<span>...</span></div>
            <div :class="{item:true, activeTab: item.active}" v-for="(item,index) in planData" @click="changePlanData(item,index)">
               <span style="margin-right: 12px;cursor: pointer;">{{item.templateName}}</span>
               <el-popover placement="right-start" :width="30" trigger="click" :hide-after="0" :show-after="0">
                  <template #reference>...</template>
                  <template #default>
                     <span class="popvoer-title" @click="table_edit(item,index)">编辑</span>
                     <span  class="popvoer-title" style="margin-left: 12px" v-if="index != 0" @click="del_tab(item)">删除</span>
                  </template>
               </el-popover>
            </div>
         </div>
      </div>
       <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
       <el-tabs v-model="activeName" class="demo-tabs" @tab-change="handleClick">
         <el-tab-pane label="新建页设置" name="first">
            <div>
               <div class="add-field">+ 添加字段</div>
               <div class="add-field" @click="openSelect">+ 添加字段</div>
               <div class="field-title">基础字段</div>
               <el-table ref="multipleTableRef" :data="tableData0" border style="width: 100%" class="multipleTableRef">
                  <el-table-column prop="fieldName" label="字段名"></el-table-column>
                  <el-table-column prop="fieldDescription" label="提示文字"></el-table-column>
                  <el-table-column prop="defaultValue" label="默认值"></el-table-column>
                  <el-table-column prop="mustField" label="是否必填"></el-table-column>
                  <el-table-column prop="mustField" label="是否必填">
                     <template #default="scope">
                        <span>{{scope.row.mustField == '1'?"是": "否"}}</span>
                     </template>
                  </el-table-column>
                  <el-table-column fixed="right" label="操作">
                     <template #default="scope">
                        <el-button text type="primary" :disabled="scope.row.systemFieldLabel == '是'?true: false" size="small" @click="table_del(scope.row, scope.$index)">删除</el-button>
                        <el-button text type="primary" :disabled="scope.row.mustField == '1'?true: false" size="small" @click="table_del(scope.row, scope.$index)">删除</el-button>
                     </template>
                  </el-table-column>
               </el-table>
               <div class="field-title">扩展字段</div>
               <el-table ref="multipleTableRef" :data="tableData0extend" border style="width: 100%" class="multipleTableRef">
                  <el-table-column prop="fieldName" label="字段名"></el-table-column>
                  <el-table-column prop="fieldDescription" label="提示文字"></el-table-column>
                  <el-table-column prop="defaultValue" label="默认值"></el-table-column>
                  <el-table-column prop="mustField" label="是否必填">
                     <template #default="scope">
                        <span>{{scope.row.mustField == '1'?"是": "否"}}</span>
                     </template>
                  </el-table-column>
                  <el-table-column fixed="right" label="操作">
                     <template #default="scope">
                        <el-button text type="primary" :disabled="scope.row.mustField == '1'?true: false" size="small" @click="table_del(scope.row, scope.$index)">删除</el-button>
                     </template>
                  </el-table-column>
               </el-table>
            </div>
         </el-tab-pane>
         <el-tab-pane label="编辑页设置" name="second">
            <div class="add-field">+ 添加字段</div>
            <div class="add-field" @click="openSelect">+ 添加字段</div>
            <div class="field-title">基础字段</div>
            <el-table ref="multipleTableRef" :data="tableData1" border style="width: 100%" class="multipleTableRef">
               <el-table-column prop="fieldName" label="字段名"></el-table-column>
               <el-table-column prop="fieldDescription" label="支持编辑"></el-table-column>
               <el-table-column label="支持编辑" prop="supportUpdateLabel"></el-table-column>
               <el-table-column fixed="right" label="操作">
                  <template #default="scope">
                     <el-button text type="primary" :disabled="scope.row.systemFieldLabel == '是'?true: false" size="small" @click="table_del(scope.row, scope.$index)">删除</el-button>
                     <el-button text type="primary" :disabled="scope.row.mustField == '1'?true: false" size="small" @click="table_del(scope.row, scope.$index)">删除</el-button>
                  </template>
               </el-table-column>
            </el-table>
            <div class="field-title">扩展字段</div>
            <el-table ref="multipleTableRef" :data="tableData1extend" border style="width: 100%" class="multipleTableRef">
               <el-table-column prop="fieldName" label="字段名"></el-table-column>
               <el-table-column prop="supportUpdateLabel" label="支持编辑"></el-table-column>
               <el-table-column fixed="right" label="操作">
                  <template #default="scope">
                     <el-button text type="primary" :disabled="scope.row.mustField == '1'?true: false" size="small" @click="table_del(scope.row, scope.$index)">删除</el-button>
                  </template>
               </el-table-column>
            </el-table>
         </el-tab-pane>
         <el-tab-pane label="查看页设置" name="third">
            <div class="add-field" @click="openSelect">+ 添加字段</div>
            <div class="field-title">基础字段</div>
            <el-table ref="multipleTableRef" :data="tableData2" border style="width: 100%" class="multipleTableRef">
               <el-table-column prop="fieldName" label="字段名"></el-table-column>
               <el-table-column fixed="right" label="操作">
                  <template #default="scope">
                     <el-button text type="primary" :disabled="scope.row.systemFieldLabel == '是'?true: false" size="small" @click="table_del(scope.row, scope.$index)">删除</el-button>
                     <el-button text type="primary" :disabled="scope.row.sysFieldMust == '1'?true: false" size="small" @click="table_del(scope.row, scope.$index)">删除</el-button>
                  </template>
               </el-table-column>
            </el-table>
            <div class="field-title">扩展字段</div>
            <el-table ref="multipleTableRef" :data="tableData2extend" border style="width: 100%" class="multipleTableRef">
               <el-table-column prop="fieldName" label="字段名"></el-table-column>
               <el-table-column fixed="right" label="操作">
                  <template #default="scope">
                     <el-button text type="primary" :disabled="scope.row.sysFieldMust == '1'?true: false" size="small" @click="table_del(scope.row, scope.$index)">删除</el-button>
                  </template>
               </el-table-column>
            </el-table>
         </el-tab-pane>
      </el-tabs>
   </div>
   <!-- 新建计划 -->
   <save-dialog v-if="dialog.save" ref="saveDialog" @success="addPlanSuccess" @closed="dialog.save=false"></save-dialog>
   <!-- 添加字段 -->
   <save-select-dialog v-if="dialog.saveSelect" ref="saveSelectDialog" @success="addSelectSuccess" @closed="dialog.saveSelect=false" @addExtend="addExtend"></save-select-dialog>
   <!-- 添加扩展字段 -->
   <save-extend-dialog v-if="dialog.extendSave" ref="saveExtendDialog" @success="addExtendSuccess" @closed="dialog.save=false"></save-extend-dialog>
</template>
<script>
   import saveDialog from './addPlan'
   import saveSelectDialog from './saveSelectDialog'
   import saveExtendDialog from './addField'
   export default {
      name: "custom",
      data(){
         return {
            id: "",
            dialog: {
               save: false
               save: false,  //新增模版
               saveSelect: false,  //添加字段
               extendSave: false  //添加扩展字段
            },
            planData: [],
            activeName: "first",
            configType: 1,
            tableData0: [],
            tableData1: [],
            tableData2: []
            tableData2: [],
            tableData0extend: [],
            tableData1extend: []
         }
      },
      created(){
@@ -87,7 +147,7 @@
         this.gitProduct();
      },
      components: {
         saveDialog
         saveDialog,saveSelectDialog,saveExtendDialog
       },
      methods: {
         gitProduct() {
@@ -101,14 +161,48 @@
            this.$HTTP.get(`/api/blade-system/custom-template/list?businessType=${this.$route.query.type}`).then(res=> {
               if(res.code == 200) {
                  this.planData = res.data.reverse();
                  this.id = this.planData[0].id;
                  this.planData[0].active = true;
                  this.getTableList();
               }
            })
         },
         changePlanData(row,index) {
            this.id = row.id;
            this.planData.forEach(item=> {
               item.active = false;
            })
            this.planData[index].active = true;
            this.getTableList();
         },
         getTableList() {
            this.$HTTP.get(`/api/blade-system/custom-template-field/listField?configType=1&templateId=${this.planData[0].id}`).then(res=> {
            this.$HTTP.get(`/api/blade-system/custom-template-field/listField?configType=${this.configType}&templateId=${this.id}`).then(res=> {
               if(res.code == 200) {
                  this.tableData0 = res.data.systemFieldList;
                  if(this.activeName == "first") {
                     this.tableData0 = res.data.systemFieldList;
                     this.tableData0extend = res.data.customFieldList || [];
                  }else if(this.activeName == "second") {
                     this.tableData1 = res.data.systemFieldList;
                     this.tableData1extend = res.data.customFieldList || [];
                  }else if(this.activeName == "third") {
                     this.tableData2 = res.data.systemFieldList;
                     this.tableData2extend = res.data.customFieldList || [];
                  }
               }
            })
         },
         table_edit(row) {
            this.dialog.save = true
            this.$nextTick(() => {
               this.$refs.saveDialog.open(this.productList,this.planData,'edit').setData(row);
            })
         },
         del_tab(row) {
            this.$HTTP.delete(`/api/blade-system/custom-template/remove`,[row.id]).then(res=> {
               if(res.code == 200) {
                  this.$message.success("操作成功");
                  this.getBaseData();
               }
            })
         },
@@ -118,14 +212,46 @@
               this.$refs.saveDialog.open(this.productList,this.planData)
            })
         },
         openSelect() {
            this.dialog.saveSelect = true
            this.$HTTP.get(`/api/blade-system/custom-template-field/getSelectBox?configType=${this.configType}&templateId=${this.id}`).then(res=> {
               if(res.code == 200) {
                  this.$refs.saveSelectDialog.open(res.data,this.id,this.configType);
               }
            })
         },
         addPlanSuccess() {
            this.getBaseData();
         },
         table_del(row,index) {
         addSelectSuccess() {
            this.getTableList();
         },
         handleClick(text) {
         addExtendSuccess() {
            this.getTableList();
         },
         addExtend() {
            this.dialog.extendSave = true
            this.$nextTick(() => {
               this.$refs.saveExtendDialog.open();
            })
         },
         table_del(row,index) {
            this.$HTTP.delete(`/api/blade-system/custom-template-field-relation/remove`,[row.id]).then(res=> {
               if(res.code == 200) {
                  this.$message.success("操作成功");
                  this.getTableList();
               }
            })
         },
         handleClick(TabPaneName) {
            if(TabPaneName == "first") {
               this.configType = 1;
            }else if(TabPaneName == "second") {
               this.configType = 2;
            }else if(TabPaneName == "third") {
               this.configType = 3;
            }
            this.getTableList();
         }
      }
   }
@@ -183,4 +309,7 @@
    color: #000;
    margin: 14px 0;
}
.popvoer-title {
   cursor: pointer;
}
</style>