From e9a590e862148092027510b15d33cdd32691a6f5 Mon Sep 17 00:00:00 2001
From: xiejun <xj@2023>
Date: 星期三, 06 十二月 2023 09:43:11 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 Source/UBCS-WEB/src/components/MasterCrud/VciMasterCrud.vue |  264 +++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 207 insertions(+), 57 deletions(-)

diff --git a/Source/UBCS-WEB/src/components/MasterCrud/VciMasterCrud.vue b/Source/UBCS-WEB/src/components/MasterCrud/VciMasterCrud.vue
index 2a5807d..a2b1391 100644
--- a/Source/UBCS-WEB/src/components/MasterCrud/VciMasterCrud.vue
+++ b/Source/UBCS-WEB/src/components/MasterCrud/VciMasterCrud.vue
@@ -36,33 +36,38 @@
               </el-select></span>
             </div>
             <div class="custom-table">
-              <el-table class="cus-table" ref="dataTable" v-loading="isLoading" :data="tableData"
-                        :height="tableHeight"  border
-                        @select="handleSelection" @cell-click="handleCellClick" @row-click="handleRowClick"
-                        @select-all="handleSelectionAll" @selection-change="handleSelectionChange"
-                        @sort-change="sortChange">
+              <el-table ref="dataTable" v-loading="isLoading" :data="tableData"
+                        :header-cell-style="{background:'#FAFAFA',color:'#505050'}"
+                        :height="tableHeight" border
+                        class="cus-table" @select="handleSelection" @cell-click="handleCellClick"
+                        @row-click="handleRowClick" @select-all="handleSelectionAll"
+                        @selection-change="handleSelectionChange" @sort-change="sortChange">
                 <el-table-column v-if="tableData.length != 0" fixed type="selection" width="55"></el-table-column>
                 <el-table-column v-if="tableData.length != 0" fixed label="搴忓彿" type="index" width="55">
                 </el-table-column>
                 <!--              鐢熷懡鍛ㄦ湡-->
-                <el-table-column v-for="(item,index) in lcstatusArray" key="index" v-if=" lcstatusArray.length !== 0 && !item.hidden" label="鐢熷懡鍛ㄦ湡鍊�" prop="lcstatus"
-                                 :show-overflow-tooltip="true" :sortable="item.sortable" :width="item.width"
-                                 align="center">
+                <el-table-column v-for="(item,index) in lcstatusArray"
+                                 v-if=" lcstatusArray.length !== 0 && !item.hidden"
+                                 key="index" :show-overflow-tooltip="true" :sortable="item.sortable"
+                                 :width="item.width" align="center" label="鐢熷懡鍛ㄦ湡鍊�"
+                                 prop="lcstatus">
                   <template slot-scope="scope">
                     <span>{{ scope.row.lcstatus_text }}</span>
                   </template>
                 </el-table-column>
                 <!--              缂栧彿-->
-                <el-table-column  v-for="(item, index) in CodeArray" key="index" v-if="CodeArray.length !== 0 && !item.hidden" :label="item.label" :prop="item.prop"
-                                  :show-overflow-tooltip="true" :sortable="item.sortable" :width="item.width"
-                                  align="center">
+                <el-table-column v-for="(item, index) in CodeArray" v-if="CodeArray.length !== 0 && !item.hidden"
+                                 key="index" :label="item.label" :prop="item.prop"
+                                 :show-overflow-tooltip="true" :sortable="item.sortable" :width="item.width"
+                                 align="center">
                   <template slot-scope="scope">
                     <el-link type="primary" @click="CodeLinkHandler(scope.row)">
                       {{ scope.row[item.prop] }}
                     </el-link>
                   </template>
                 </el-table-column>
-                <el-table-column v-for="item in this.tableHeadFindData" v-if="!item.hidden && item.prop !== 'id' && item.prop !== 'lcstatus'"
+                <el-table-column v-for="item in this.tableHeadFindData"
+                                 v-if="!item.hidden && item.prop !== 'id' && item.prop !== 'lcstatus' && Object.keys(item.referConfig).length <= 0"
                                  :key="item.id"
                                  :formatter="item.formatter"
                                  :label="item.label" :prop="item.prop"
@@ -71,10 +76,32 @@
                                  :width="item.width"
                                  align="center">
                 </el-table-column>
-
+                <!--               鍙傜収鏁版嵁-->
+                <el-table-column v-for="(item,index) in referArray"
+                                 v-if="item.referConfig && Object.keys(item.referConfig).length > 0 && !item.hidden"
+                                 :key="index"
+                                 :label="item.title" :show-overflow-tooltip="true"
+                                 :sortable="item.sortable" :width="item.width" align="center"
+                                 prop="jiliangdw">
+                  <template slot-scope="scope">
+                    <span>{{ scope.row.jiliangdwname }}</span>
+                  </template>
+                </el-table-column>
               </el-table>
             </div>
           </el-row>
+          <!--          鐢宠-->
+          <FormTemplateDialog :TreeValue="TreeValue" :codeClassifyOid="this.codeClassifyOid"
+                              :codeRuleOid="this.codeRuleOid" :disabledProp="disabledProp" :templateOid="templateOid"
+                              :visible.sync="applyvisible" status="apply"
+                              type="add"
+                              @submit="applySumbit">
+          </FormTemplateDialog>
+          <!--          淇-->
+          <FormTemplateDialog :codeClassifyOid="this.codeClassifyOid" :codeRuleOid="this.codeRuleOid"
+                              :disabledProp="disabledProp" :templateOid="templateOid" :title="'鏁版嵁淇'"
+                              :visible.sync="amendvisible" status="amend" :selectRow="selectRow"
+                              type="add" @submit="amendSumbit"></FormTemplateDialog>
           <!--          鏂板-->
           <FormTemplateDialog :TreeValue="TreeValue" :codeClassifyOid="this.codeClassifyOid"
                               :codeRuleOid="this.codeRuleOid" :disabledProp="disabledProp" :templateOid="templateOid"
@@ -84,12 +111,15 @@
           </FormTemplateDialog>
           <!--          淇敼-->
           <FormTemplateDialog :codeClassifyOid="this.codeClassifyOid" :codeRuleOid="this.codeRuleOid"
-                              :disabledProp="disabledProp" :rowOid="rowOid" :templateOid="templateOid" :title="'淇敼缂栫爜淇℃伅'"
+                              :disabledProp="disabledProp" :templateOid="templateOid" :title="'淇敼缂栫爜淇℃伅'"
                               :visible.sync="editvisible"
+                              :rowOid="rowOid"
                               type="edit" @submit="EditSumbit"></FormTemplateDialog>
+          <!--          鎵归噺缂栬緫-->
+          <!--          <MasterEditBulk :visible.sync="bulkeditvisible" ></MasterEditBulk>-->
           <!--          鏁版嵁璇︽儏-->
           <FormTemplateDialog :codeClassifyOid="this.codeClassifyOid" :codeRuleOid="this.codeRuleOid"
-                               :rowOid="this.LinkObject.oid" :templateOid="templateOid"
+                              :rowOid="this.LinkObject.oid" :templateOid="templateOid"
                               :title="'鏁版嵁璇︽儏'"
                               :visible.sync="LinkVisible"
                               type="detail"></FormTemplateDialog>
@@ -119,6 +149,11 @@
                           :tableData="tableData"
                           :tableHeadData="tableHeadFindData" :templateOid="templateOid"
                           :visible.sync="dialogPush"></MasterTransfer>
+          <!--        瀵煎叆-->
+          <BatchImport v-if="batchImportData.visible" v-bind="batchImportData" :resetTable="CrudRend"
+                       :selectRow="selectRow" :tableHeadData="tableHeadFindData"
+                       :visible.sync="batchImportData.visible">
+          </BatchImport>
           <!--          鐩镐技椤�-->
           <ResembleQueryDialog :codeClassifyOid="codeClassifyOid" :codeRuleOid="this.codeRuleOid" :rowOid="rowOid"
                                :templateOid="templateOid" :visible.sync="similarVisible"></ResembleQueryDialog>
@@ -130,11 +165,6 @@
             </el-pagination>
           </div>
         </div>
-      </div>
-      <div>
-        <BatchImport v-if="batchImportData.visible" v-bind="batchImportData" :resetTable="CrudRend"
-                     :visible.sync="batchImportData.visible">
-        </BatchImport>
       </div>
       <div class="bottom">
         <el-collapse v-model="visibleNames" @change="handleCollapse">
@@ -156,7 +186,9 @@
   deleteCode,
   upSaveCode,
   applyGroupCode,
-  receiveEditApply
+  receiveEditApply,
+  applySaveCode,
+  exportGroupCodeExcel
 } from "@/api/GetItem";
 import {processTS, changeStatus} from "@/api/template/setPersonnel"
 import {listCodeAttributeByClassId} from "@/api/integration/integration.js";
@@ -164,6 +196,7 @@
 import SetPersonnel from "@/components/template/SetPersonnel";
 import ResembleQueryDialog from "@/components/FormTemplate/ResembleQueryDialog.vue";
 import BatchImport from '@/components/BatchImport'
+import MasterEditBulk from '@/components/Master/MasterEditBulk'
 import {validatenull} from "@/util/validate";
 import fileInHtml from "@/components/file/inHtml.vue";
 import {getUserInfo} from "@/api/system/user";
@@ -175,7 +208,8 @@
     SetPersonnel,
     ResembleQueryDialog,
     BatchImport,
-    fileInHtml
+    fileInHtml,
+    MasterEditBulk
   },
   name: "Crud.vue",
   props: {
@@ -224,17 +258,26 @@
     Treedata: {
       type: Array
     },
-
+    nodeClickList: {
+      type: Array,
+      default: []
+    }
   },
   data() {
     return {
+      //鎵归噺缂栬緫瀵硅瘽妗�
+      bulkeditvisible: false,
       LinkVisible: false,
       LinkObject: {}, // 缂栫爜鏁版嵁
       LinkList: [],
       isCodeArrayPushed: false, // 缂栫爜鏁扮粍娣诲姞鏍囪瘑鍙橀噺
       CodeArray: [],
-      lcstatusArray:[],
-      islcstatusPushed:false,
+      //鐢熷懡鍛ㄦ湡鏁扮粍
+      lcstatusArray: [],
+      //鍙傜収鏁版嵁鏁扮粍
+      referArray: [],
+      islcstatusPushed: false,
+      isReferPushed: false,
       // 鐘舵�佹悳绱�
       statusSelect: "all",
       // 鍏抽敭瀛楁煡璇�
@@ -273,6 +316,8 @@
         label: "name",
       },
       tableHeadFindDatas: [],
+      applyvisible: false,
+      amendvisible: false,
       addvisible: false,
       editvisible: false,
       findvisible: false,
@@ -320,7 +365,7 @@
         height: 110
       },
       result: '',
-      elapsedTime:'',
+      elapsedTime: '',
     };
   },
   computed: {
@@ -388,14 +433,13 @@
           }
         })
         this.tableHeadFindDatas = newval;
-        // console.log('new',newval)
         if (!this.isCodeArrayPushed) {
           if (newval.find(item => item.prop === 'id')) {
             this.CodeArray.push(newval.find(item => item.prop === 'id'));
           } else {
-            this.CodeArray.push([]);
+            // this.CodeArray.push([]);
+            this.CodeArray = [];
           }
-          // console.log('CodeArray', this.CodeArray);
           this.isCodeArrayPushed = true;
         }
         if (!this.islcstatusPushed) {
@@ -407,7 +451,14 @@
           // console.log('lcstatusArray', this.lcstatusArray);
           this.islcstatusPushed = true;
         }
-        // console.log('new',newval)
+        if (!this.isReferPushed) {
+          if (newval.find(item => Object.keys(item.referConfig).length > 0)) {
+            this.referArray.push(newval.find(item => Object.keys(item.referConfig).length > 0));
+          } else {
+            this.referArray.push([])
+          }
+        }
+        this.isReferPushed = true;
         this.WupinFindValue = ''
       },
     },
@@ -424,9 +475,7 @@
     },
     tableHeadBtnData: {
       handler(newval) {
-        if (newval.length !== 0) {
-          this.masterVrBtnList = newval
-        }
+        this.masterVrBtnList = newval
       },
       deep: true
     },
@@ -436,8 +485,7 @@
       this.LinkObject = row;
       this.LinkVisible = true;
       this.LinkList = Object.keys(row).map(property => property)
-      // console.log(result);
-      // console.log(this.LinkObject)
+
     },
     //鐘舵�佹悳绱�
     cellSelectHandler(row) {
@@ -499,10 +547,119 @@
         if (uniqueFlag === 'receiveEditApply') return this.receiveEditApply()
         //  鐩镐技椤规煡璇�
         //  if(uniqueFlag === 'CODEEDIT') return this.similarHandler()
+        //  鏍囧噯鐢宠
+        if (uniqueFlag === 'CODEAPPLY') return this.codeApplyHandler()
+        //  鏍囧噯淇
+        if (uniqueFlag === 'CODEAMEND') return this.codeAMENDHandler()
+        //鎵归噺缂栬緫
+        if (uniqueFlag === 'bulkEdit') return this.bulkEditHandler("bulkEdit")
+        //闆嗗洟鐮佸鍑�
+        if (uniqueFlag === 'excelGroupCode') return this.excelGroupCode()
+        //闆嗗洟鐮佸鍏�
+        if (uniqueFlag === 'importGroupCode') return this.importGroupCode("groupCode")
       });
     },
-    addSaveHandler(){
+    importGroupCode(type){
+      this.batchImportData.visible = true
+      this.batchImportData.type = type
+      this.batchImportData.codeClassifyOid = this.codeClassifyOid
+    },
+    //闆嗗洟鐮佸鍑�
+    excelGroupCode(){
+      debugger
+      this.isLoading = true;
+      exportGroupCodeExcel({
+        codeClassifyOid: this.codeClassifyOid,
+      }).then(res => {
+        console.log(res.data)
+        if (res) {
+          func.downloadFileByBlobHandler(res);
+          this.$message.success('涓嬭浇鎴愬姛锛岃鏌ョ湅锛�');
+          this.isLoading = false;
+        }
+      }).catch(error=>{
+        this.$message.error(error);
+        this.isLoading = false;
+      })
+    },
+    //鏍囧噯鐢宠
+    codeApplyHandler() {
+      this.$nextTick(() => {
+        this.applyvisible = true;
+      });
+    },
+    applySumbit(val) {
+      // console.log('val',val)
+      if (func.notEmpty(val.ts)) {
+        val.ts = func.formattedDateTime(val.ts);
+        //console.log(val.ts);
+      }
+      applySaveCode(val).then(res => {
+        this.$nextTick(() => {
+          this.applyvisible = false;
+          this.$message.success("淇濆瓨鎴愬姛");
+          this.onLoad()
+        })
+      })
+    },
+    amendSumbit(val) {
+      applySaveCode(val).then(res => {
+        this.$nextTick(() => {
+          this.amendvisible = false;
+          this.$message.success("淇濆瓨鎴愬姛");
+          this.onLoad()
+        })
+      })
 
+    },
+    //鏍囧噯淇
+    codeAMENDHandler() {
+      let foundItem = false;
+      this.tableHeadFindData.forEach(item => {
+        if (item.field === "oldcode" && Object.keys(item.referConfig).length >= 1) {
+          foundItem = true;
+        }
+      });
+      if (foundItem) {
+        if(this.selectRow.length >= 1){
+          this.$confirm('宸叉湁鍙傜収鏄惁鍙栨秷鍕鹃�夌户缁墽琛岋紵', '鎻愮ず', {
+            confirmButtonText: '纭畾',
+            cancelButtonText: '鍙栨秷',
+            type: 'warning'
+          }).then(() => {
+            this.selectRow = [];
+            //鍙栨秷鍕鹃�夌姸鎬�
+            this.$refs.dataTable.clearSelection();
+            this.amendvisible = true;
+          }).catch(() => {
+            this.$message({
+              type: 'info',
+              message: '宸插彇娑堝綋鍓嶆搷浣�'
+            });
+          });
+        }else {
+          this.amendvisible = true;
+        }
+      } else {
+        if (this.selectRow.length <= 0) {
+          this.$message.warning("璇疯嚦灏戦�夋嫨涓�鏉℃暟鎹�");
+        } else {
+          this.amendvisible = true;
+
+        }
+      }
+    },
+    //鎵归噺缂栬緫
+    bulkEditHandler(type) {
+      if (this.nodeClickList.children.length >= 1) {
+        this.$message.warning('褰撳墠閫夋嫨鐨勫垎绫讳笉鏄彾瀛愯妭鐐癸紝涓嶅厑璁告壒閲忕紪杈戯紒')
+        return;
+      }
+        this.batchImportData.visible = true
+        this.batchImportData.type = type
+        this.batchImportData.codeClassifyOid = this.codeClassifyOid
+    },
+    addSaveHandler() {
       this.$nextTick(() => {
         this.addvisible = true;
       });
@@ -512,9 +669,6 @@
       if (this.selectRow.length <= 0) {
         this.$message.warning('璇烽�夋嫨涓�鏉℃暟鎹ā鏉匡紒')
       } else {
-        // const requestData = this.selectRow.forEach(item => {
-        //   return { oids: item.oid, btmName: item.btmname };
-        // });
         const oids = this.selectRow.map(item => item.oid).join(',');
         applyGroupCode({oids, btmName: this.selectRow[0].btmname}).then(res => {
           if (res.data.code == 200) {
@@ -529,9 +683,6 @@
       if (this.selectRow.length <= 0) {
         this.$message.warning('璇烽�夋嫨涓�鏉℃暟鎹ā鏉匡紒')
       } else {
-        // const requestData = this.selectRow.forEach(item => {
-        //   return { oids: item.oid, btmName: item.btmname };
-        // });
         const oids = this.selectRow.map(item => item.oid).join(',');
         receiveEditApply({oids, btmName: this.selectRow[0].btmname}).then(res => {
           if (res.data.code == 200) {
@@ -693,25 +844,24 @@
       });
       const endTime = performance.now();
       this.elapsedTime = Math.floor(endTime - startTime) * 1;
-      console.log(this.elapsedTime)
       this.page.total = res.data.total;
       this.data = res.data.data;
       this.tableData = res.data.data;
     },
 
     async handleSizeChange(val) {
-      this.isLoading = true;
-      await this.CrudRend();
       this.page.pageSize = val;
       this.$emit("pageSize", val);
+      this.isLoading = true;
+      await this.CrudRend();
       this.isLoading = false;
     },
 
     async handleCurrentChange(val) {
-      this.isLoading = true;
-      await this.CrudRend();
       this.page.currentPage = val;
       this.$emit("currentPage", val);
+      this.isLoading = true;
+      await this.CrudRend();
       this.isLoading = false;
     },
     // 鐩戝惉鍗曞厓鏍肩偣鍑讳簨浠跺苟瀛樺偍姝e湪缂栬緫鐨勮
@@ -817,15 +967,13 @@
     },
     //缂栬緫
     editHandler() {
-      if (this.selectRow.length <= 0) {
+      if (this.selectRow.length !== 1) {
         this.$message.warning("璇烽�夋嫨涓�鏉℃暟鎹�");
-      } else if (this.selectRow.length > 1) {
-        this.$message.warning("鍙兘閫夋嫨涓�鏉℃暟鎹�");
-      } else if (this.selectRow[0].lcstatus != "Editing") {
-        this.$message.warning("缂栫爜鐘舵�佷笉鏄�滅紪杈戜腑鈥�,涓嶅彲缂栬緫");
+      } else if (this.selectRow[0].lcstatus !== "Editing") {
+        this.$message.warning("缂栫爜鐘舵�佷笉鏄�滅紪杈戜腑鈥濓紝涓嶅彲缂栬緫");
       } else {
         this.editvisible = true;
-        this.rowOid = this.selectRow[0]['oid']
+        this.rowOid = this.selectRow[0].oid;
       }
     },
     //楂樼骇鏌ヨ鎸夐挳
@@ -868,8 +1016,8 @@
     },
     //澧炲姞淇濆瓨
     AddSumbit(val) {
-      //console.log(val)
-      if(func.notEmpty(val.ts)) {
+      // console.log('val',val)
+      if (func.notEmpty(val.ts)) {
         val.ts = func.formattedDateTime(val.ts);
         //console.log(val.ts);
       }
@@ -933,8 +1081,9 @@
 <style lang="scss" scoped>
 //鍥哄畾鍒楅珮搴�
 /deep/ .el-table__fixed {
-  height: calc(100vh - 370px)!important;
+  height: calc(100vh - 370px) !important;
 }
+
 // 婊氬姩鏉℃牱寮忎慨鏀�
 // 婊氬姩鏉$殑瀹藉害
 /deep/ .el-table__body-wrapper::-webkit-scrollbar {
@@ -944,6 +1093,7 @@
   width: 10px;
 
 }
+
 // 婊氬姩鏉$殑婊戝潡
 /deep/ .el-table__body-wrapper::-webkit-scrollbar-thumb {
   background-color: #ececec;
@@ -976,7 +1126,7 @@
   margin-top: 10px;
 }
 
- .el-table__body-wrapper{
+.el-table__body-wrapper {
   height: calc(100% - 44px) !important;
 }
 </style>

--
Gitblit v1.9.3