From 60c97371be338da5a707b4c6516e7a2dbe8ea2c9 Mon Sep 17 00:00:00 2001
From: wanghong <309858992@qq.com>
Date: 星期五, 05 一月 2024 18:02:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/controller/DockingPreApplyCodeController.java |    2 
 Source/UBCS-WEB/src/views/system/PasswordManagement/passwords.vue                                                                                 |  551 ++++++++++----------
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/EnumController.java                                                   |    5 
 Source/UBCS/ubcs-service-api/ubcs-applyjtcodeservice-api/src/main/java/com/vci/ubcs/code/applyjtcodeservice/feign/MdmApplyGroupCodeProvider.java  |    1 
 Source/UBCS-WEB/src/views/wel/index.vue                                                                                                           |  453 ++++++++--------
 Source/UBCS-WEB/src/components/code-dialog-page/cloneRuleDialog.vue                                                                               |    2 
 Source/UBCS-WEB/src/views/integration/integrationIndex.vue                                                                                        |   32 
 Source/UBCS-WEB/src/views/system/user.vue                                                                                                         |    8 
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IEnumService.java                                                        |   15 
 Source/UBCS-WEB/src/views/docking/loge.vue                                                                                                        |    6 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java                                       |    4 
 Source/UBCS-WEB/src/components/Theme/ClassifyAuthDialog.vue                                                                                       |   17 
 Source/UBCS-WEB/src/views/monitor/log/localLog.vue                                                                                                |    4 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/DockingManagementController.java                                    |    2 
 Source/UBCS-WEB/src/api/omd/enum.js                                                                                                               |    2 
 Source/UBCS-WEB/src/api/docking/info.js                                                                                                           |    4 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeSrchCondConfigServiceImpl.java                                |    2 
 Source/UBCS-WEB/src/components/Theme/ThemeAttrCrud.vue                                                                                            |   31 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingSystemConfigServiceImpl.java                               |    4 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java                                             |  106 ++-
 Source/UBCS-WEB/src/components/dockingSearch/VciDockingSearch.vue                                                                                 |    4 
 Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/DefaultAttrAssimtUtil.java                                     |    1 
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/EnumServiceImpl.java                                                |   19 
 Source/UBCS-WEB/src/views/modeling/original.vue                                                                                                   |  105 ++-
 Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/service/impl/LogLocalServiceImpl.java                                                |    9 
 Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/ClassifyAuthServiceImpl.java                                  |    2 
 Source/UBCS-WEB/src/views/docking/info.vue                                                                                                        |    3 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeShowFieldConfigServiceImpl.java                               |    7 
 Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/ClassifyAuthController.java                                     |    8 
 Source/UBCS-WEB/src/components/Theme/ThemeClassifyTrees.vue                                                                                       |  113 ++--
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleServiceImpl.java                                          |    6 
 Source/UBCS-WEB/src/components/Theme/ThemeTemplatePro.vue                                                                                         |    4 
 32 files changed, 812 insertions(+), 720 deletions(-)

diff --git a/Source/UBCS-WEB/src/api/docking/info.js b/Source/UBCS-WEB/src/api/docking/info.js
index 2af4194..7d8be15 100644
--- a/Source/UBCS-WEB/src/api/docking/info.js
+++ b/Source/UBCS-WEB/src/api/docking/info.js
@@ -1,13 +1,13 @@
 import request from '@/router/axios';
 
-export const getList = (page, size, params) => {
+export const getList = (page, limit, params) => {
   return request({
     url: '/api/ubcs-code/dockingManagement/gridSystemConfig',
     method: 'get',
     params: {
       ...params,
       page,
-      size
+      limit
     }
   })
 }
diff --git a/Source/UBCS-WEB/src/api/omd/enum.js b/Source/UBCS-WEB/src/api/omd/enum.js
index b471140..994f0f4 100644
--- a/Source/UBCS-WEB/src/api/omd/enum.js
+++ b/Source/UBCS-WEB/src/api/omd/enum.js
@@ -75,7 +75,7 @@
 
 export const update = (row) => {
   return request({
-    url: '/api/ubcs-omd/enum/submit',
+    url: '/api/ubcs-omd/enum/update',
     method: 'post',
     data: row
   })
diff --git a/Source/UBCS-WEB/src/components/Theme/ClassifyAuthDialog.vue b/Source/UBCS-WEB/src/components/Theme/ClassifyAuthDialog.vue
index 429d8f1..afb086d 100644
--- a/Source/UBCS-WEB/src/components/Theme/ClassifyAuthDialog.vue
+++ b/Source/UBCS-WEB/src/components/Theme/ClassifyAuthDialog.vue
@@ -64,6 +64,7 @@
       </el-table-column>
     </el-table>
     <div slot="footer" class="dialog-footer">
+      <el-button type="info" plain @click="selectAllButton">鎸夐挳鍏ㄩ��</el-button>
       <el-button class="el-icon-plus" type="success" plain @click="addClassifyAuth"></el-button>
       <el-button class="el-icon-minus" type="warning" plain @click="subClassifyAuth"></el-button>
       <el-button type="primary" plain @click="submit">鎻� 浜�</el-button>
@@ -189,6 +190,10 @@
     },
     // 澧炲姞琛�
     addClassifyAuth() {
+      if(this.roleList.length<=0){
+        this.$message.warning("褰撳墠绉熸埛涓嶅瓨鍦ㄨ鑹蹭俊鎭紒");
+        return;
+      }
       let item = {
         roleData: this.roleList[0].id,
         classifyItem: this.classifyData.label,
@@ -288,6 +293,18 @@
         window.console.log(error);
       })
     },
+    // 鍏ㄩ�夋寜閽�
+    selectAllButton(){
+      if(this.selectList.length!==1){
+        this.$message.warning("璇峰彧閫夋嫨涓�琛岄渶瑕佸叏閫夌殑鎸夐挳鐨勬暟鎹锛�");
+        return;
+      }
+      this.classifyAuthButton.forEach(item => {
+        //console.log("item",item);
+        Vue.set(this.classifyAuthData[0], item.id, true);
+      });
+      //console.log("this.classifyAuthData",this.classifyAuthData);
+    },
   },
 };
 </script>
diff --git a/Source/UBCS-WEB/src/components/Theme/ThemeAttrCrud.vue b/Source/UBCS-WEB/src/components/Theme/ThemeAttrCrud.vue
index eb130ce..9462ea6 100644
--- a/Source/UBCS-WEB/src/components/Theme/ThemeAttrCrud.vue
+++ b/Source/UBCS-WEB/src/components/Theme/ThemeAttrCrud.vue
@@ -451,6 +451,9 @@
       type: Boolean,
       default: false
     },
+    btnAuthList: {
+      type:Array
+    }
   },
   watch: {
     crudOid: {
@@ -1560,20 +1563,20 @@
     ...mapGetters(["permission"]),
     permissionList() {
       return {
-        busineStatus: this.vaildData(this.permission.classifyTree.attr_add, false),
-        fullscreenStatus: this.vaildData(this.permission.classifyTree.attr_view_edit, false),
-        ruleStatus: this.vaildData(this.permission.classifyTree.attr_rule, false),
-        attrStatus: this.vaildData(this.permission.classifyTree.attr_group, false),
-        saveStatus: this.vaildData(this.permission.classifyTree.attr_save, false),
-        resetStatus: this.vaildData(this.permission.classifyTree.attr_reset, false),
-        injectStatus: this.vaildData(this.permission.classifyTree.attr_inject, false),
-        isShowStatus: this.vaildData(this.permission.classifyTree.attr_formrule, false),
-        enumStatus: this.vaildData(this.permission.classifyTree.attr_enum, false),
-        cascadStatus: this.vaildData(this.permission.classifyTree.attr_parentcode, false),
-        syncStatus: this.vaildData(this.permission.classifyTree.attr_sync, false),
-        applicationStatus: this.vaildData(this.permission.classifyTree.attr_application, false),
-        orderStatus: this.vaildData(this.permission.classifyTree.attr_sort, false),
-        removeStatus: this.vaildData(this.permission.classifyTree.attr_delete, false),
+        busineStatus: this.vaildData(this.btnAuthList.attr_add, false),
+        fullscreenStatus: this.vaildData(this.btnAuthList.attr_view_edit, false),
+        ruleStatus: this.vaildData(this.btnAuthList.attr_rule, false),
+        attrStatus: this.vaildData(this.btnAuthList.attr_group, false),
+        saveStatus: this.vaildData(this.btnAuthList.attr_save, false),
+        resetStatus: this.vaildData(this.btnAuthList.attr_reset, false),
+        injectStatus: this.vaildData(this.btnAuthList.attr_inject, false),
+        isShowStatus: this.vaildData(this.btnAuthList.attr_formrule, false),
+        enumStatus: this.vaildData(this.btnAuthList.attr_enum, false),
+        cascadStatus: this.vaildData(this.btnAuthList.attr_parentcode, false),
+        syncStatus: this.vaildData(this.btnAuthList.attr_sync, false),
+        applicationStatus: this.vaildData(this.btnAuthList.attr_application, false),
+        orderStatus: this.vaildData(this.btnAuthList.attr_sort, false),
+        removeStatus: this.vaildData(this.btnAuthList.attr_delete, false),
       }
     },
     attrOids() {
diff --git a/Source/UBCS-WEB/src/components/Theme/ThemeClassifyTrees.vue b/Source/UBCS-WEB/src/components/Theme/ThemeClassifyTrees.vue
index 9e194c9..c8f38c1 100644
--- a/Source/UBCS-WEB/src/components/Theme/ThemeClassifyTrees.vue
+++ b/Source/UBCS-WEB/src/components/Theme/ThemeClassifyTrees.vue
@@ -4,50 +4,26 @@
     <!--    宸︿晶鑿滃崟-->
     <el-aside>
       <basic-container>
-        <div>
-          <div>
-            <div style="display: flex; flex-direction: column;">
-              <div style="display: flex;">
-                <el-button v-if="permissionList.TreeAddStatus" plain size="small" type="primary" @click="TreeAdd">娣诲姞
-                </el-button>
-                <el-button v-if="permissionList.TreeEditStatus" plain size="small" type="primary" @click="TreeEdit">淇敼
-                </el-button>
-                <el-button v-if="permissionList.TreeDelStatus" plain size="small" type="primary" @click="TreeDel">鍒犻櫎
-                </el-button>
-                <el-button v-if="permissionList.flushedStatus" plain size="small" type="primary" @click="flushed">鍒锋柊
-                </el-button>
-              </div>
-              <div style="display: flex; margin-top: 10px">
-                <el-button v-if="permissionList.EnableStatus" plain size="small" type="primary" @click="Enable">鍚敤
-                </el-button>
-                <el-button v-if="permissionList.DeactivateStatus" plain size="small" type="primary" @click="Deactivate">
-                  鍋滅敤
-                </el-button>
-                <el-button v-if="permissionList.ImportExcelStatus" plain size="small" type="primary"
-                           @click.native="ImportExcel">瀵煎叆
-                </el-button>
-                <el-button v-if="permissionList.ExportExcelStatus" plain size="small" type="primary"
-                           @click="ExportExcel">瀵煎嚭
-                </el-button>
-              </div>
-            </div>
-            <div style="display: flex;margin-top: 5px;margin-bottom: 5px">
-              <el-button v-if="permissionList.flowingBtnStuatus" plain size="mini" type="primary"
-                         @click="flowingDependHandler">娴佹按澶勭悊
-              </el-button>
-              <el-button v-if="permissionList.classifyAuth" plain size="mini" type="primary"
-                         @click="classifyAuthHandler">鍒嗙被鎺堟潈
-              </el-button>
-            </div>
+        <div  style="height: calc(100vh - 142px);!important;">
+          <div class="headerCon" style="display: flex; flex-wrap: wrap;margin-bottom: 5px">
+            <el-button v-if="permissionList.TreeAddStatus" plain size="small" type="primary" @click="TreeAdd">娣诲姞</el-button>
+            <el-button v-if="permissionList.TreeEditStatus" plain size="small" type="primary" @click="TreeEdit">淇敼</el-button>
+            <el-button v-if="permissionList.TreeDelStatus" plain size="small" type="primary" @click="TreeDel">鍒犻櫎</el-button>
+            <el-button v-if="permissionList.flushedStatus" plain size="small" type="primary" @click="flushed">鍒锋柊</el-button>
+            <el-button v-if="permissionList.EnableStatus" plain size="small" type="primary" @click="Enable">鍚敤</el-button>
+            <el-button v-if="permissionList.DeactivateStatus" plain size="small" type="primary" @click="Deactivate">鍋滅敤</el-button>
+            <el-button v-if="permissionList.ImportExcelStatus" plain size="small" type="primary" @click.native="ImportExcel">瀵煎叆</el-button>
+            <el-button v-if="permissionList.ExportExcelStatus" plain size="small" type="primary" @click="ExportExcel">瀵煎嚭</el-button>
+            <el-button style="width: 56px;text-align: center;padding-left: 3px" v-if="permissionList.flowingBtnStuatus" plain size="small" type="primary" @click="flowingDependHandler">娴佹按澶勭悊</el-button>
+            <el-button style="width: 56px;text-align: center;padding-left: 3px"  v-if="permissionList.classifyAuth" plain size="small" type="primary" @click="classifyAuthHandler">鍒嗙被鎺堟潈</el-button>
           </div>
-        </div>
-        <!-- 宸︿晶鏍�-->
-        <div style="height: calc(100vh - 230px);overflow: auto">
+          <!-- 宸︿晶鏍�-->
+
           <avue-tree ref="tree" v-model="CloneTreeAvueform" v-loading="loading" :data="CloneTreedata"
                      :defaultExpandAll="false"
                      :option="Treeoption"
                      class="classifyTree"
-                     style="height: calc(100vh - 290px)"
+                     style="height: 690px"
                      @node-click="nodeClick"
           >
             <template slot-scope="{ node, data }" class="el-tree-node__label">
@@ -61,8 +37,8 @@
               </el-tooltip>
             </template>
           </avue-tree>
-        </div>
 
+        </div>
         <!-- 鏍戣妭鐐规坊鍔犲璇濇-->
         <el-dialog v-loading="AddLoading" :before-close="TreeEscHandler"
                    :title="this.TreeFlag ? '娣诲姞鍒嗙被' :'娣诲姞涓婚搴�'" :visible.sync="TreeAddFormVisible" append-to-body
@@ -279,7 +255,7 @@
           </basic-container>
           <templatePro :Formlist="this.Formlist" :ProData="this.ProData" :codeClassifyOid="this.codeClassifyOid"
                        :crudArray="this.crudArray" :crudLCStatus="this.crudLCStatus" :crudOid="this.crudOid"
-                       :rowIndex="this.selectRow"></templatePro>
+                       :rowIndex="this.selectRow" :btnAuthList="btnAuthList"></templatePro>
         </span>
         <!--     缂栫爜瑙勫垯-->
         <el-dialog :before-close="masterEscHandler" :visible.sync="MasterdialogVisible" append-to-body
@@ -451,12 +427,14 @@
 import func from "@/util/func";
 import {mapGetters} from "vuex";
 import ClassifyAuth from './ClassifyAuthDialog.vue';
+import {getAuthButtonList} from '@/api/system/classifyAuth'
 
 export default {
   components: {ClassifyAuth},
   name: "classifyTrees.vue",
   data() {
     return {
+      btnAuthList: [],
       activeName: 'first',
       masterRow: null,
       AddLoading: false,
@@ -830,6 +808,9 @@
         this.$refs.tree.setCurrentKey(null);
         this.nodeClickList = {};
         this.TreeFlagCode = true;
+        // this.$nextTick(()=>{
+        //   this.btnAuthList = [];
+        // })
       }
     }, true)
   },
@@ -837,20 +818,25 @@
     ...mapGetters(["permission"]),
     permissionList() {
       return {
-        TreeAddStatus: this.vaildData(this.permission.classifyTree.tree_add, false),
-        TreeEditStatus: this.vaildData(this.permission.classifyTree.tree_edit, false),
-        TreeDelStatus: this.vaildData(this.permission.classifyTree.tree_delete, false),
-        flushedStatus: this.vaildData(this.permission.classifyTree.tree_break, false),
-        EnableStatus: this.vaildData(this.permission.classifyTree.tree_enable, false),
-        DeactivateStatus: this.vaildData(this.permission.classifyTree.tree_stop, false),
-        ImportExcelStatus: this.vaildData(this.permission.classifyTree.tree_import, false),
-        ExportExcelStatus: this.vaildData(this.permission.classifyTree.tree_export, false),
-        FindStatus: this.vaildData(this.permission.classifyTree.manage_search, false),
-        TemRefreshStatus: this.vaildData(this.permission.classifyTree.manage_break, false),
-        CloneBtnStuatus: this.vaildData(this.permission.classifyTree.manage_clone, false),
-        flowingBtnStuatus: this.vaildData(this.permission.classifyTree.tree_flowing, false),
-        classifyAuth: this.vaildData(this.permission.classifyTree.classify_auth, false),
+        TreeAddStatus: this.vaildData(this.btnAuthList.tree_add, false),
+        TreeEditStatus: this.vaildData(this.btnAuthList.tree_edit, false),
+        TreeDelStatus: this.vaildData(this.btnAuthList.tree_delete, false),
+        flushedStatus: this.vaildData(this.btnAuthList.tree_break, false),
+        EnableStatus: this.vaildData(this.btnAuthList.tree_enable, false),
+        DeactivateStatus: this.vaildData(this.btnAuthList.tree_stop, false),
+        ImportExcelStatus: this.vaildData(this.btnAuthList.tree_import, false),
+        ExportExcelStatus: this.vaildData(this.btnAuthList.tree_export, false),
+        FindStatus: this.vaildData(this.btnAuthList.manage_search, false),
+        TemRefreshStatus: this.vaildData(this.btnAuthList.manage_break, false),
+        CloneBtnStuatus: this.vaildData(this.btnAuthList.manage_clone, false),
+        flowingBtnStuatus: this.vaildData(this.btnAuthList.tree_flowing, false),
+        classifyAuth: this.vaildData(this.btnAuthList.classify_auth, false),
       }
+    },
+    treeStyle() {
+      return {
+        height: this.btnAuthList.length > 0 ? '620px' : '785px',
+      };
     },
     crudTreeOption() {
       return {
@@ -1428,6 +1414,11 @@
     },
     //鏍戠偣鍑讳簨浠�
     async nodeClick(data) {
+      getAuthButtonList({classifyId: data.oid}).then(res => {
+        this.btnAuthList = res.data.data;
+      }).catch(error => {
+        console.log(error)
+      })
       //鎿嶄綔鏂板鍜屼慨鏀圭殑涓氬姟绫诲瀷闅愯棌
       this.TreeFlagCode = !data;
       this.editTreeFLagCode = !data.parentId;
@@ -1772,4 +1763,18 @@
   width: 500px;
 }
 
+.headerCon{
+  .el-button+.el-button {
+    margin-left: 5px;
+  }
+  .el-button {
+    margin-top: 5px;
+  }
+}
+.headerCon > .el-button:nth-child(5) {
+  margin-left: 0;
+}
+.headerCon > .el-button:nth-child(9) {
+  margin-left: 0;
+}
 </style>
diff --git a/Source/UBCS-WEB/src/components/Theme/ThemeTemplatePro.vue b/Source/UBCS-WEB/src/components/Theme/ThemeTemplatePro.vue
index 3caff98..1a0018d 100644
--- a/Source/UBCS-WEB/src/components/Theme/ThemeTemplatePro.vue
+++ b/Source/UBCS-WEB/src/components/Theme/ThemeTemplatePro.vue
@@ -2,7 +2,7 @@
   <basic-container>
     <avue-tabs :option="Taboption" @change="handleChange"></avue-tabs>
     <span v-if="type.prop==='tab1'">
-      <attrCrud :ProData="ProData"  :crudOid="crudOid" :checkStatus="checkStatus"  :crudLCStatus="crudLCStatus" :crudArray="crudArray" :Formlist="Formlist" :codeClassifyOid="codeClassifyOid"></attrCrud>
+      <attrCrud :ProData="ProData" :btnAuthList="btnAuthList" :crudOid="crudOid" :checkStatus="checkStatus"  :crudLCStatus="crudLCStatus" :crudArray="crudArray" :Formlist="Formlist" :codeClassifyOid="codeClassifyOid"></attrCrud>
     </span>
     <span v-else-if="type.prop==='tab2'">
        <FlowPath ref="FlowPath" :code="this.crudOid"  :checkStatus="checkStatus" :crudLCStatus="crudLCStatus" :Formlist="Formlist"></FlowPath>
@@ -18,7 +18,7 @@
 <script>
 export default {
   name: "TemplatePro.vue",
-  props: ['ProData','crudOid','crudLCStatus','crudArray','Formlist','codeClassifyOid','rowIndex','crudArrayFlag'],
+  props: ['ProData','crudOid','crudLCStatus','crudArray','Formlist','codeClassifyOid','rowIndex','crudArrayFlag','btnAuthList'],
   data: function () {
     return {
       type: {},
diff --git a/Source/UBCS-WEB/src/components/code-dialog-page/cloneRuleDialog.vue b/Source/UBCS-WEB/src/components/code-dialog-page/cloneRuleDialog.vue
index c58274e..521fc88 100644
--- a/Source/UBCS-WEB/src/components/code-dialog-page/cloneRuleDialog.vue
+++ b/Source/UBCS-WEB/src/components/code-dialog-page/cloneRuleDialog.vue
@@ -125,6 +125,7 @@
         closeCloneDialog(){
             this.$emit('update:visible',false);
             this.cloneData = [];
+            this.cloneCodeRuleLoading = false;
         },    
         /** 涓婄Щ涓嬬Щ鍩虹鐮佹*/
         async upOrderNum(row) {
@@ -211,6 +212,7 @@
             },
             (error) => {
                 window.console.log(error);
+                this.cloneCodeRuleLoading = false;
             });
         },
 
diff --git a/Source/UBCS-WEB/src/components/dockingSearch/VciDockingSearch.vue b/Source/UBCS-WEB/src/components/dockingSearch/VciDockingSearch.vue
index c56b682..bfb2231 100644
--- a/Source/UBCS-WEB/src/components/dockingSearch/VciDockingSearch.vue
+++ b/Source/UBCS-WEB/src/components/dockingSearch/VciDockingSearch.vue
@@ -121,7 +121,7 @@
     SaveHandler(){
       let name = this.SearchObject.searchData[this.formInline.type].prop;
       const requestApi = (api) => {
-        api(this.page.currentPage, this.page.pageSize, { [`conditionMap[${name}_like]`]: this.formInline.text}).then(res => {
+        api(this.page.currentPage, this.page.pageSize,'createTime','desc',{[`conditionMap[${name}_like]`]: this.formInline.text}).then(res => {
           if(!res.data.data.records){
             this.$message.error('鏆傛湭鏌ュ埌鏁版嵁锛�')
           }else {
@@ -149,7 +149,7 @@
       const { cut, state, stateTask, Date, lastDate, taskCut } = this.formInline;
       const requestParams = {};
       const requestApi = (api) => {
-        api(currentPage, pageSize, requestParams).then(res => {
+        api(currentPage, pageSize,'createTime','desc',requestParams).then(res => {
           if(!res.data.data.records){
             this.$message.error('鏆傛湭鏌ュ埌鏁版嵁锛�');
           } else {
diff --git a/Source/UBCS-WEB/src/views/docking/info.vue b/Source/UBCS-WEB/src/views/docking/info.vue
index e78862f..1c28481 100644
--- a/Source/UBCS-WEB/src/views/docking/info.vue
+++ b/Source/UBCS-WEB/src/views/docking/info.vue
@@ -40,8 +40,7 @@
             <el-button v-if="permissionList.sync" icon="el-icon-share" size="small" @click="PUSH">鍚� 姝�
             </el-button>
             <el-button v-if="permissionList.query" icon="el-icon-search" size="small"
-                       @click="openAdvancedQuery">鏌�
-              璇�
+                       @click="openAdvancedQuery">鏌� 璇�
             </el-button>
           </template>
         </avue-crud>
diff --git a/Source/UBCS-WEB/src/views/docking/loge.vue b/Source/UBCS-WEB/src/views/docking/loge.vue
index 2ae4333..bb5f6d3 100644
--- a/Source/UBCS-WEB/src/views/docking/loge.vue
+++ b/Source/UBCS-WEB/src/views/docking/loge.vue
@@ -315,13 +315,13 @@
     },
     onLoad(page, params={}) {
       this.loading = true;
-      var query={}
+      var queryCondition={}
       if (this.query) {
         for (var key in this.query) {
-          query['conditionMap["' + key + '"]'] = this.query[key];
+          queryCondition['conditionMap["' + key + '"]'] = this.query[key];
         }
       }
-      getLogoList(page.currentPage, page.pageSize,'createTime','desc',Object.assign(params,this.params, query,this.query),).then(res => {
+      getLogoList(page.currentPage, page.pageSize,'createTime','desc',Object.assign(params,this.params, queryCondition,this.query),).then(res => {
         const data = res.data.data;
         this.page.total = data.total;
         this.data = data.records;
diff --git a/Source/UBCS-WEB/src/views/integration/integrationIndex.vue b/Source/UBCS-WEB/src/views/integration/integrationIndex.vue
index 77badef..ed218ad 100644
--- a/Source/UBCS-WEB/src/views/integration/integrationIndex.vue
+++ b/Source/UBCS-WEB/src/views/integration/integrationIndex.vue
@@ -1,21 +1,31 @@
 <template>
   <div>
     <el-container style="height: 100%; border: 1px solid #fff">
-      <el-card :style="{ marginRight: '10px' }">
-        <el-aside style="background-color: #fff" width="220px">
+      <el-card style="margin-right: 10px;height:  calc(100vh - 125px);overflow: auto">
+        <el-aside style="background-color: #fff;" width="210px">
           <el-input v-model="filterText" placeholder="杈撳叆鍏抽敭瀛楄繘琛岃繃婊�">
           </el-input>
           <el-menu :default-openeds="['1', '3']" >
             <el-tree  ref="tree" :data="treeData" :filter-node-method="filterNode" :props="defaultProps"
                      accordion class="filter-tree" empty-text="鏆傛棤鏁版嵁" @node-click="handelTreeCell">
+              <template slot-scope="{ node, data }" class="el-tree-node__label">
+                <el-tooltip :content="$createElement('div', { domProps: { innerHTML: node.label } })" class="item"
+                            effect="dark"
+                            open-delay="500"
+                            placement="right-start">
+                <span style="font-size: 14px;">
+                {{ (node || {}).label }}
+              </span>
+                </el-tooltip>
+              </template>
             </el-tree>
           </el-menu>
         </el-aside>
       </el-card>
-      <el-main>
-        <el-card>
+      <el-main >
+        <el-card style="height: calc(100vh - 128px)">
           <el-form :model="form">
-            <el-form-item label="闆嗗洟鍒嗙被" label-width="70px" size="small">
+            <el-form-item label="闆嗗洟鍒嗙被" label-width="80px" size="small">
               <el-select ref="selectTree" v-model="groupVal" clearable placeholder="璇烽�夋嫨"
                          popper-class="popperTreeSelect">
                 <el-option :label="groupVal" :value="groupVal">
@@ -27,7 +37,7 @@
 
             </el-form-item>
           </el-form>
-          <el-card>
+          <el-card  style="height:38vh">
             <avue-crud ref="crudMapping" :data="mappingData" :option="optionMapping" :table-loading="loading"
                        @select="setCurrentRow" @row-update="handleMapingUpdate"
                        @row-click="handleMapingClick" @row-dblclick="handleMapingRowClick" @selection-change="selectionChange"
@@ -47,7 +57,7 @@
               </template>
             </avue-crud>
           </el-card>
-          <el-card :style="{ marginTop: '20px'}">
+          <el-card style="margin-top: 10px;height: 38vh">
             <avue-crud ref="crudRange" :data="rangeData" :option="optinoRange" :style="{ marginTop: '-20px'}"
                        @row-update="handleUpdate"
                        @row-dblclick="handleRowClick">
@@ -117,21 +127,21 @@
       // 灞炴�ф槧灏勫彇鍊艰〃閰嶇疆
       optinoRange: {
         title: '灞炴�ф槧灏勫彇鍊艰寖鍥�',
-        maxHeight: '300px',
+        maxHeight: '280px',
         header: false,
         rowKey: 'oid',
         column: [
           {label: '灞炴�ч泦鍥㈡灇涓惧��', prop: 'numTextValue', minWidth: 80},
           {label: '闆嗗洟灞炴�ф灇涓炬樉绀哄悕绉�', prop: 'numText', minWidth: 80},
           {
-            label: 'MDM鏋氫妇鍊�',
+            label: 'CODE鏋氫妇鍊�',
             prop: 'targetNumTextValue',
             minWidth: 80,
             cell: true,
             blur: (value) => window.handleBlur(value, 'range')
           },
           {
-            label: 'MDM鏋氫妇鏄剧ず鍚嶇О',
+            label: 'CODE鏋氫妇鏄剧ず鍚嶇О',
             prop: 'targetNumText',
             minWidth: 80,
             cell: true,
@@ -142,7 +152,7 @@
       },
       // 灞炴�ф槧灏勮〃閰嶇疆
       optionMapping: {
-        maxHeight: '500px',
+        maxHeight: '280px',
         header: true,
         rowKey: 'oid',
         selection: false,
diff --git a/Source/UBCS-WEB/src/views/modeling/original.vue b/Source/UBCS-WEB/src/views/modeling/original.vue
index f95fbbf..5b1b1f8 100644
--- a/Source/UBCS-WEB/src/views/modeling/original.vue
+++ b/Source/UBCS-WEB/src/views/modeling/original.vue
@@ -3,7 +3,7 @@
     <el-main>
       <basic-container>
         <avue-crud v-model="form" ref="crud" :option="option" :data="data" @on-load="onLoad" :page.sync="page" :permission="permissionList"
-          @refresh-change="refreshChange" @row-click="rowClick">
+          @refresh-change="refreshChange" @row-click="rowClick" style="height: calc(100vh - 148px)">
           <template slot="radio" slot-scope="{row}">
             <el-radio v-model="selectRow" :label="row.$index">&nbsp;
             </el-radio>
@@ -35,7 +35,8 @@
     </el-main>
     <el-aside>
       <basic-container class="itemForm">
-        <el-descriptions class="margin-top" :column="1" size="medium" border title="灞炴�ч」">
+      <div style="height: 44vh">
+        <el-descriptions class="margin-top" :column="1" size="medium" border title="灞炴�ч」" >
           <el-descriptions-item>
             <template slot="label">
               灞炴�х紪鍙�
@@ -54,12 +55,12 @@
             </template>
             {{ itemForm.itemData.typeValue }}
           </el-descriptions-item>
-<!--          <el-descriptions-item>
-            <template slot="label">
-              鏍囩
-            </template>
-            {{ itemForm.itemData.hashtag }}
-          </el-descriptions-item>-->
+          <!--          <el-descriptions-item>
+                      <template slot="label">
+                        鏍囩
+                      </template>
+                      {{ itemForm.itemData.hashtag }}
+                    </el-descriptions-item>-->
           <el-descriptions-item>
             <template slot="label">
               榛樿鍊�
@@ -85,48 +86,50 @@
             {{ itemForm.itemData.description }}
           </el-descriptions-item>
         </el-descriptions>
-        <div style="height:15px"></div>
-        <el-descriptions class="margin-top" :column="1" size="medium" border title="灞炴�ч厤缃�"></el-descriptions>
-        <el-tabs v-model="itemForm.activeName" @tab-click="handleClick" stretch="true" style="height:235px">
-          <el-tab-pane label="鍙傜収" name="referTab">
-            <el-descriptions class="margin-top" :column="1" size="medium" border>
-              <el-descriptions-item>
-                <template slot="label">
-                  浣跨敤鍙傜収
-                </template>
-                {{ itemForm.itemData.referTypeValue ? '鏄�' : '鍚�' }}
-              </el-descriptions-item>
-              <el-descriptions-item>
-                <template slot="label">
-                  鍙傜収绫诲瀷
-                </template>
-                {{ itemForm.itemData.referTypeValue }}
-              </el-descriptions-item>
-              <el-descriptions-item>
-                <template slot="label">
-                  鍙傜収鍚嶇О
-                </template>
-                {{ itemForm.itemData.referToName }}
-              </el-descriptions-item>
-            </el-descriptions>
-          </el-tab-pane>
-          <el-tab-pane label="鏋氫妇" name="enumTab">
-            <el-descriptions class="margin-top" :column="1" :size="small" border>
-              <el-descriptions-item>
-                <template slot="label">
-                  浣跨敤鏋氫妇
-                </template>
-                {{ itemForm.itemData.usingDict ? '鏄�' : '鍚�' }}
-              </el-descriptions-item>
-              <el-descriptions-item>
-                <template slot="label">
-                  鏋氫妇绫诲瀷
-                </template>
-                {{ itemForm.itemData.dictValue }}
-              </el-descriptions-item>
-            </el-descriptions>
-          </el-tab-pane>
-        </el-tabs>
+      </div>
+        <div style="height: 40vh">
+          <el-descriptions class="margin-top" :column="1" size="medium" border title="灞炴�ч厤缃�"></el-descriptions>
+          <el-tabs v-model="itemForm.activeName" @tab-click="handleClick" stretch="true" style="height:235px">
+            <el-tab-pane label="鍙傜収" name="referTab">
+              <el-descriptions class="margin-top" :column="1" size="medium" border>
+                <el-descriptions-item>
+                  <template slot="label">
+                    浣跨敤鍙傜収
+                  </template>
+                  {{ itemForm.itemData.referTypeValue ? '鏄�' : '鍚�' }}
+                </el-descriptions-item>
+                <el-descriptions-item>
+                  <template slot="label">
+                    鍙傜収绫诲瀷
+                  </template>
+                  {{ itemForm.itemData.referTypeValue }}
+                </el-descriptions-item>
+                <el-descriptions-item>
+                  <template slot="label">
+                    鍙傜収鍚嶇О
+                  </template>
+                  {{ itemForm.itemData.referToName }}
+                </el-descriptions-item>
+              </el-descriptions>
+            </el-tab-pane>
+            <el-tab-pane label="鏋氫妇" name="enumTab">
+              <el-descriptions class="margin-top" :column="1" :size="small" border>
+                <el-descriptions-item>
+                  <template slot="label">
+                    浣跨敤鏋氫妇
+                  </template>
+                  {{ itemForm.itemData.usingDict ? '鏄�' : '鍚�' }}
+                </el-descriptions-item>
+                <el-descriptions-item>
+                  <template slot="label">
+                    鏋氫妇绫诲瀷
+                  </template>
+                  {{ itemForm.itemData.dictValue }}
+                </el-descriptions-item>
+              </el-descriptions>
+            </el-tab-pane>
+          </el-tabs>
+        </div>
       </basic-container>
     </el-aside>
     <originalAdd ref="originalAdd" @refreshTable="refreshChange" :attribute="editAttribute"></originalAdd>
@@ -162,7 +165,7 @@
       editAttribute: {},
       applyRangeData: [],
       option: {
-        height: "auto",
+        height:'auto',
         calcHeight:20,
         headerAlign: "center",
         border: true,
diff --git a/Source/UBCS-WEB/src/views/monitor/log/localLog.vue b/Source/UBCS-WEB/src/views/monitor/log/localLog.vue
index f294431..54b02e2 100644
--- a/Source/UBCS-WEB/src/views/monitor/log/localLog.vue
+++ b/Source/UBCS-WEB/src/views/monitor/log/localLog.vue
@@ -97,11 +97,11 @@
               prop: "logType",
               width:'160'
             },
-            {
+            /*{
               label: "鍒涘缓鏃堕棿",
               prop: "createTime",
               width:'160'
-            },
+            },*/
             {
               label: "鏈�鍚庝慨鏀规椂闂�",
               prop: "lastModifier",
diff --git a/Source/UBCS-WEB/src/views/system/PasswordManagement/passwords.vue b/Source/UBCS-WEB/src/views/system/PasswordManagement/passwords.vue
index 60c4488..18325bc 100644
--- a/Source/UBCS-WEB/src/views/system/PasswordManagement/passwords.vue
+++ b/Source/UBCS-WEB/src/views/system/PasswordManagement/passwords.vue
@@ -1,21 +1,22 @@
 <template>
-  <basic-container >
-    <avue-crud v-model="form" :option="option" :data="data" ref="crud"  @on-load="onLoad" @row-save="rowSave" @row-update="rowUpdate" @row-del="rowDel" :page.sync="page">
+  <basic-container>
+    <avue-crud ref="crud" v-model="form" :data="data" :option="option" :page.sync="page" @on-load="onLoad"
+               @row-save="rowSave" @row-update="rowUpdate" @row-del="rowDel">
       <template slot="menu" slot-scope="{ row, index }">
         <el-button
-          type="text"
-          size="small"
-          icon="el-icon-edit"
           v-if="permissionList.editBtn"
+          icon="el-icon-edit"
+          size="small"
+          type="text"
           @click="handleEdit(row, index)"
         >
           缂栬緫
         </el-button>
         <el-button
-          type="text"
-          size="small"
-          icon="el-icon-delete"
           v-if="permissionList.delBtn"
+          icon="el-icon-delete"
+          size="small"
+          type="text"
           @click="handleDel(row, index)"
         >
           鍒犻櫎
@@ -39,15 +40,16 @@
   combination
 } from "@/api/system/passwords";
 import {mapGetters} from "vuex";
+
 export default {
   name: "passwords.vue",
   data() {
     return {
       //鏈�灏忛暱搴︾粦瀹歷alue
-      values:"",
+      values: "",
       //鏈�澶ч暱搴︾粦瀹歷alue
-      values1:"",
-      form:{},
+      values1: "",
+      form: {},
       page: {
         pageSize: 10,
         currentPage: 1,
@@ -56,22 +58,22 @@
       data: [],
 
       //娣诲姞瀛樻斁澶氶�夌殑鍙橀噺,鐢ㄤ簬涓嬫媺鑿滃崟鐨勭鐢ㄦ晥鏋滃拰蹇呭~绉嶇被鏄惁澶т簬缁勫悎鏂瑰紡鐒跺悗鎻愮ず鐢ㄦ埛閲嶆柊閫夋嫨
-      checkboxlength:"",
+      checkboxlength: "",
       //杩欎釜鏄笅鎷夎彍鍗曠殑鏁版嵁鍙橀噺
-      selectlength:"",
+      selectlength: "",
       //杩欎釜鏄敤浜庨槻姝hange鏃堕棿鍐掓场,鍑虹幇涓ゆ寮圭獥瀹氫箟鐨勫彉閲�
-      checkboxlist:"",
+      checkboxlist: "",
       //鐢ㄤ簬棣栨鐐瑰嚮缂栬緫锛屽垽鏂粍鍚堟柟寮忔槸鍚﹀皬浜庡繀濉绫荤殑鍙橀噺
-      checkboxNumber:"",
-      selectNumber:"",
+      checkboxNumber: "",
+      selectNumber: "",
       //杩欎釜涔熸槸瀛樻斁澶氶�夌殑鍙橀噺,鏁堟灉涓�鏍�,鍙槸鐢ㄤ綔鍦ㄧ紪杈戞ā鍧�
-      checkboxedit:"",
+      checkboxedit: "",
       // 鐢ㄤ簬鍒ゆ柇鏄惁鏄紪杈�
-      editFlag:false
+      editFlag: false
     }
 
   },
-  computed:{
+  computed: {
     ...mapGetters(["permission"]),
     permissionList() {
       return {
@@ -89,245 +91,246 @@
         editBtn: this.vaildData(this.permission.password.password_edit, false),
       };
     },
-    option(){
-      return{
-          headerAlign: 'center',
-          align: 'center',
-          columnBtn:false,
-          border: true,
-          index: true,
-          rowKey:'id',
-          addBtn:this.permissionList.addBtn,
-          editBtn:false,
-          height:700,
-          delBtn:false,
-          column: [
-            {
-              label: '绛栫暐鍚嶇О',
-              prop: 'strategyName',
-              align: 'left',
-              span:24,
-              labelWidth: "11%",
-              rules: [{
-                required: true,
-                message: "璇疯緭鍏ョ瓥鐣ュ悕绉�",
-                trigger: "blur"
-              }]
-            },
-            {
-              label: '瀵嗙爜鏈�灏忛暱搴�',
-              prop: 'minPwdLen',
-              span:12,
-              labelWidth:"22%",
-              rules: [{
-                required: true,
-                validator:(rule, value,callback)=>{
-                  this.values=value*1
-                  if(value == ""){
-                    callback(new Error('璇疯緭鍏ュ瘑鐮佹渶灏忛暱搴�'));
-                  }else if(/[^\d]/g.test(value)){
-                    callback(new Error('瀵嗙爜鏈�灏忛暱搴︾殑杈撳叆绫诲瀷鍙兘涓烘暟瀛楃被鍨�'));
-                  }else if(this.values >= this.values1 && this.values1 != 0){
-                    callback(new Error('瀵嗙爜鏈�灏忛暱搴︿笉鑳藉ぇ浜庡瘑鐮佹渶澶ч暱搴�'))
-                  }else {
-                    callback();
-                  }
-                },
-                trigger: 'blur'
-              }]
-            },
-            {
-              label: '瀵嗙爜鏈�澶ч暱搴�',
-              prop: 'maxPwdLen',
-              span:12,
-              labelWidth:"25%",
-              rules: [{
-                required: true,
-                validator:(rule, value,callback) =>{
-                  this.values1=value*1
-                  if(value == ""){
-                    callback(new Error('璇疯緭鍏ュ瘑鐮佹渶澶ч暱搴�'));
-                  }else if(this.values1 <= this.values){
-                    callback(new Error('瀵嗙爜鏈�澶ч暱搴︿笉鑳藉皬浜庡瘑鐮佹渶澶ч暱搴�'));
-                  }else if(/[^\d]/g.test(value)){
-                    callback(new Error('瀵嗙爜鏈�澶ч暱搴︾殑杈撳叆绫诲瀷鍙兘涓烘暟瀛楃被鍨�'));
-                  }else {
-                    callback();
-                  }
-                },
-                trigger: 'change'
-              }]
-            },
-            {
-              label: '缁勫悎鏂规硶',
-              prop: 'combinationNames',
-              labelWidth: 91,
-              display:false,
-
-            },
-            {
-              label: '缁勫悎鏂规硶',
-              prop: 'combinationIds',
-              type: "checkbox",
-              span:12,
-              labelWidth:"22%",
-              id:5,
-              hide:true,
-              change: this.handleCheckboxChange,
-              rules: [{
-                required: true,
-                message: "璇烽�夋嫨缁勫悎鏂规硶",
-                trigger: "blur"
-              }],
-              dicUrl: '/api/ubcs-system/combination/select',
-              dicMethod: 'get',
-              props: {
-                value: "ID",
-                label: "NAME",
-              },
-            },
-            {
-              label: '蹇呭~绉嶇被',
-              prop: 'requiredType',
-              type: 'select',
-              span:12,
-              labelWidth:"25%",
-              change:this.handleSelectChange,
-              rules: [{
-                required: true,
-                message: "璇烽�夋嫨蹇呭~绉嶇被",
-                trigger: "blur"
-              }],
-              dicData:[{
-                label:'1绉�',
-                value:1,
-                disabled:false
-              },
-                {
-                  label:'2绉�',
-                  value:2,
-                  disabled:false
-                },
-                {
-                  label:'3绉�',
-                  value:3,
-                  disabled:false
-                },
-                {
-                  label:'4绉�',
-                  value:4,
-                  disabled:false
+    option() {
+      return {
+        headerAlign: 'center',
+        align: 'center',
+        columnBtn: false,
+        border: true,
+        index: true,
+        rowKey: 'id',
+        addBtn: this.permissionList.addBtn,
+        editBtn: false,
+        height: 700,
+        delBtn: false,
+        refreshBtn: false,
+        column: [
+          {
+            label: '绛栫暐鍚嶇О',
+            prop: 'strategyName',
+            align: 'left',
+            span: 24,
+            labelWidth: "11%",
+            rules: [{
+              required: true,
+              message: "璇疯緭鍏ョ瓥鐣ュ悕绉�",
+              trigger: "blur"
+            }]
+          },
+          {
+            label: '瀵嗙爜鏈�灏忛暱搴�',
+            prop: 'minPwdLen',
+            span: 12,
+            labelWidth: "22%",
+            rules: [{
+              required: true,
+              validator: (rule, value, callback) => {
+                this.values = value * 1
+                if (value == "") {
+                  callback(new Error('璇疯緭鍏ュ瘑鐮佹渶灏忛暱搴�'));
+                } else if (/[^\d]/g.test(value)) {
+                  callback(new Error('瀵嗙爜鏈�灏忛暱搴︾殑杈撳叆绫诲瀷鍙兘涓烘暟瀛楃被鍨�'));
+                } else if (this.values >= this.values1 && this.values1 != 0) {
+                  callback(new Error('瀵嗙爜鏈�灏忛暱搴︿笉鑳藉ぇ浜庡瘑鐮佹渶澶ч暱搴�'))
+                } else {
+                  callback();
                 }
-              ]
+              },
+              trigger: 'blur'
+            }]
+          },
+          {
+            label: '瀵嗙爜鏈�澶ч暱搴�',
+            prop: 'maxPwdLen',
+            span: 12,
+            labelWidth: "25%",
+            rules: [{
+              required: true,
+              validator: (rule, value, callback) => {
+                this.values1 = value * 1
+                if (value == "") {
+                  callback(new Error('璇疯緭鍏ュ瘑鐮佹渶澶ч暱搴�'));
+                } else if (this.values1 <= this.values) {
+                  callback(new Error('瀵嗙爜鏈�澶ч暱搴︿笉鑳藉皬浜庡瘑鐮佹渶澶ч暱搴�'));
+                } else if (/[^\d]/g.test(value)) {
+                  callback(new Error('瀵嗙爜鏈�澶ч暱搴︾殑杈撳叆绫诲瀷鍙兘涓烘暟瀛楃被鍨�'));
+                } else {
+                  callback();
+                }
+              },
+              trigger: 'change'
+            }]
+          },
+          {
+            label: '缁勫悎鏂规硶',
+            prop: 'combinationNames',
+            labelWidth: 91,
+            display: false,
 
+          },
+          {
+            label: '缁勫悎鏂规硶',
+            prop: 'combinationIds',
+            type: "checkbox",
+            span: 12,
+            labelWidth: "22%",
+            id: 5,
+            hide: true,
+            change: this.handleCheckboxChange,
+            rules: [{
+              required: true,
+              message: "璇烽�夋嫨缁勫悎鏂规硶",
+              trigger: "blur"
+            }],
+            dicUrl: '/api/ubcs-system/combination/select',
+            dicMethod: 'get',
+            props: {
+              value: "ID",
+              label: "NAME",
             },
-            {
-              label: '杩囨湡鏃堕棿(澶�)',
-              prop:'expirationTime',
-              span:12,
-              labelWidth:"22%",
-              rules: [{
-                required: true,
-                validator: (rule, value,callback) => {
-                  if(value == ""){
-                    callback(new Error('璇疯緭鍏ヨ繃鏈熸椂闂�'));
-                  }else if(/[^\d]/g.test(value)){
-                    callback(new Error('杩囨湡鏃堕棿鐨勮緭鍏ョ被鍨嬪彧鑳戒负鏁板瓧绫诲瀷'));
-                  }else {
-                    callback();
-                  }
-                },
-                trigger: 'blur'
-              }]
+          },
+          {
+            label: '蹇呭~绉嶇被',
+            prop: 'requiredType',
+            type: 'select',
+            span: 12,
+            labelWidth: "25%",
+            change: this.handleSelectChange,
+            rules: [{
+              required: true,
+              message: "璇烽�夋嫨蹇呭~绉嶇被",
+              trigger: "blur"
+            }],
+            dicData: [{
+              label: '1绉�',
+              value: 1,
+              disabled: false
             },
-            {
-              label: '鎻愰啋鏃堕棿(澶�)',
-              prop:'reminderTime',
-              span:12,
-              labelWidth:"25%",
-              rules: [{
-                required: true,
-                validator:(rule, value,callback) => {
-                  if(value == ""){
-                    callback(new Error('璇疯緭鍏ヨ繃鏈熸椂闂�'));
-                  }else if(/[^\d]/g.test(value)){
-                    callback(new Error('杩囨湡鏃堕棿鐨勮緭鍏ョ被鍨嬪彧鑳戒负鏁板瓧绫诲瀷'));
-                  }else {
-                    callback();
-                  }
-                },
-                trigger: 'blur'
-              }]
-            },
-            {
-              label: '閿佸畾娆℃暟(娆�)',
-              prop:'lockingNum',
-              span:12,
-              labelWidth:"22%",
-              rules: [{
-                required: true,
-                validator:(rule, value,callback) => {
-                  if(value == ""){
-                    callback(new Error('璇疯緭鍏ラ攣瀹氭鏁�'));
-                  }else if(/[^\d]/g.test(value)){
-                    callback(new Error('閿佸畾娆℃暟鐨勮緭鍏ョ被鍨嬪彧鑳戒负鏁板瓧绫诲瀷'));
-                  }else {
-                    callback();
-                  }
-                },
-                trigger: 'blur'
-              }]
-            },
-            {
-              label: '閿佸畾鏃堕棿(鍒嗛挓)',
-              prop:'lockingTime',
-              span:12,
-              labelWidth:"25%",
-              rules: [{
-                required: true,
-                validator:(rule, value,callback) => {
-                  if(value == ""){
-                    callback(new Error('璇疯緭鍏ラ攣瀹氭椂闂�'));
-                  }else if(/[^\d]/g.test(value)){
-                    callback(new Error('閿佸畾鏃堕棿鐨勮緭鍏ョ被鍨嬪彧鑳戒负鏁板瓧绫诲瀷'));
-                  }else {
-                    callback();
-                  }
-                },
-                trigger: 'blur'
-              }]
-            },
-            {
-              label: '鎻忚堪',
-              prop:'desc',
-              type: 'textarea',
-              span:12,
-              labelWidth:"22%",
-              rows: 5,
-            },
-            {
-              label: '鏄惁涓洪粯璁ょ瓥鐣�',
-              prop: 'isDefault',
-              type: 'switch',
-              labelWidth: 132,
-              dicData:[{
-                label:'鍚�',
-                value:0
-              },{
-                label:'鏄�',
-                value:1
-              }]
-            }
-          ],
+              {
+                label: '2绉�',
+                value: 2,
+                disabled: false
+              },
+              {
+                label: '3绉�',
+                value: 3,
+                disabled: false
+              },
+              {
+                label: '4绉�',
+                value: 4,
+                disabled: false
+              }
+            ]
+
+          },
+          {
+            label: '杩囨湡鏃堕棿(澶�)',
+            prop: 'expirationTime',
+            span: 12,
+            labelWidth: "22%",
+            rules: [{
+              required: true,
+              validator: (rule, value, callback) => {
+                if (value == "") {
+                  callback(new Error('璇疯緭鍏ヨ繃鏈熸椂闂�'));
+                } else if (/[^\d]/g.test(value)) {
+                  callback(new Error('杩囨湡鏃堕棿鐨勮緭鍏ョ被鍨嬪彧鑳戒负鏁板瓧绫诲瀷'));
+                } else {
+                  callback();
+                }
+              },
+              trigger: 'blur'
+            }]
+          },
+          {
+            label: '鎻愰啋鏃堕棿(澶�)',
+            prop: 'reminderTime',
+            span: 12,
+            labelWidth: "25%",
+            rules: [{
+              required: true,
+              validator: (rule, value, callback) => {
+                if (value == "") {
+                  callback(new Error('璇疯緭鍏ヨ繃鏈熸椂闂�'));
+                } else if (/[^\d]/g.test(value)) {
+                  callback(new Error('杩囨湡鏃堕棿鐨勮緭鍏ョ被鍨嬪彧鑳戒负鏁板瓧绫诲瀷'));
+                } else {
+                  callback();
+                }
+              },
+              trigger: 'blur'
+            }]
+          },
+          {
+            label: '閿佸畾娆℃暟(娆�)',
+            prop: 'lockingNum',
+            span: 12,
+            labelWidth: "22%",
+            rules: [{
+              required: true,
+              validator: (rule, value, callback) => {
+                if (value == "") {
+                  callback(new Error('璇疯緭鍏ラ攣瀹氭鏁�'));
+                } else if (/[^\d]/g.test(value)) {
+                  callback(new Error('閿佸畾娆℃暟鐨勮緭鍏ョ被鍨嬪彧鑳戒负鏁板瓧绫诲瀷'));
+                } else {
+                  callback();
+                }
+              },
+              trigger: 'blur'
+            }]
+          },
+          {
+            label: '閿佸畾鏃堕棿(鍒嗛挓)',
+            prop: 'lockingTime',
+            span: 12,
+            labelWidth: "25%",
+            rules: [{
+              required: true,
+              validator: (rule, value, callback) => {
+                if (value == "") {
+                  callback(new Error('璇疯緭鍏ラ攣瀹氭椂闂�'));
+                } else if (/[^\d]/g.test(value)) {
+                  callback(new Error('閿佸畾鏃堕棿鐨勮緭鍏ョ被鍨嬪彧鑳戒负鏁板瓧绫诲瀷'));
+                } else {
+                  callback();
+                }
+              },
+              trigger: 'blur'
+            }]
+          },
+          {
+            label: '鎻忚堪',
+            prop: 'desc',
+            type: 'textarea',
+            span: 12,
+            labelWidth: "22%",
+            rows: 5,
+          },
+          {
+            label: '鏄惁涓洪粯璁ょ瓥鐣�',
+            prop: 'isDefault',
+            type: 'switch',
+            labelWidth: 132,
+            dicData: [{
+              label: '鍚�',
+              value: 0
+            }, {
+              label: '鏄�',
+              value: 1
+            }]
+          }
+        ],
       }
     }
   },
   created() {
     this.onLoad()
   },
-  methods:{
-    handleSelectChange(val){
-      this.selectlength=val
+  methods: {
+    handleSelectChange(val) {
+      this.selectlength = val
     },
     handleCheckboxChange(val) {
       const arr = this.option.column[5];
@@ -397,7 +400,7 @@
         showClose: true,
       });
     },
-    rowDel(row){
+    rowDel(row) {
       this.$confirm("纭畾灏嗛�夋嫨鏁版嵁鍒犻櫎?", {
         confirmButtonText: "纭畾",
         cancelButtonText: "鍙栨秷",
@@ -412,15 +415,15 @@
             message: "鎿嶄綔鎴愬姛!"
           });
           this.onLoad();
-        }).catch(res=>{
+        }).catch(res => {
         // console.log(res)
       })
     },
-    rowSave(row,done){
+    rowSave(row, done) {
       //灏嗗瘑鐮佺粍鍚堟柟寮忕殑鏁版嵁杞崲涓哄瓧绗︿覆
-      const spliceId= row.combinationIds.toString()
-      row.combinationIds=spliceId
-      getadd(row).then((res)=>{
+      const spliceId = row.combinationIds.toString()
+      row.combinationIds = spliceId
+      getadd(row).then((res) => {
         // this.onLoad(this.page);
         this.$message({
           type: "success",
@@ -428,37 +431,37 @@
         });
         done(row)
         this.onLoad()
-      }).catch((res)=>{
+      }).catch((res) => {
         this.$message.warning(res)
       })
     },
-    rowEdit(row){
+    rowEdit(row) {
       // console.log("鎵撳紑缂栬緫edit",row)
     },
-    handleDel(row){
-      this.$refs.crud.rowDel(row,row.$index);
+    handleDel(row) {
+      this.$refs.crud.rowDel(row, row.$index);
     },
-    handleEdit(row){
-      this.$refs.crud.rowEdit(row,row.$index);
-      this.editFlag=true;
-      this.checkboxNumber=row.combinationIds.split(",")
-      this.selectNumber=row.requiredType
-        if(this.checkboxNumber.length < this.selectNumber){
-          this.$message({
-            type:"warning",
-            message:"蹇呭~绉嶇被涓嶈兘澶т簬缁勫悎鏂规硶锛岃閲嶆柊閫夋嫨锛�"
-          })
-        }
+    handleEdit(row) {
+      this.$refs.crud.rowEdit(row, row.$index);
+      this.editFlag = true;
+      this.checkboxNumber = row.combinationIds.split(",")
+      this.selectNumber = row.requiredType
+      if (this.checkboxNumber.length < this.selectNumber) {
+        this.$message({
+          type: "warning",
+          message: "蹇呭~绉嶇被涓嶈兘澶т簬缁勫悎鏂规硶锛岃閲嶆柊閫夋嫨锛�"
+        })
+      }
     },
-    rowUpdate(row,index,done){
-      getupdata(row).then(()=>{
+    rowUpdate(row, index, done) {
+      getupdata(row).then(() => {
         this.onLoad()
         this.$message({
           type: "success",
           message: "淇敼鎴愬姛!"
         });
         done()
-      }).catch(res=>{
+      }).catch(res => {
         // console.log(res)
       })
     },
@@ -471,8 +474,8 @@
         // this.loading = false;
         // this.selectionClear();
         // console.log(res)
-        this.page.total=res.data.data.total
-        this.data=res.data.data.records
+        this.page.total = res.data.data.total
+        this.data = res.data.data.records
       });
     }
   }
diff --git a/Source/UBCS-WEB/src/views/system/user.vue b/Source/UBCS-WEB/src/views/system/user.vue
index 02d3363..9fc25cd 100644
--- a/Source/UBCS-WEB/src/views/system/user.vue
+++ b/Source/UBCS-WEB/src/views/system/user.vue
@@ -94,19 +94,19 @@
           </template>
           <template slot="tenantName"
                     slot-scope="{row}">
-            <el-tag>{{ row.tenantName }}</el-tag>
+            <el-tag v-if="row.tenantName">{{ row.tenantName }}</el-tag>
           </template>
           <template slot="roleName"
                     slot-scope="{row}">
-            <el-tag>{{ row.roleName }}</el-tag>
+            <el-tag v-if="row.roleName">{{ row.roleName }}</el-tag>
           </template>
           <template slot="deptName"
                     slot-scope="{row}">
-            <el-tag>{{ row.deptName }}</el-tag>
+            <el-tag v-if="row.deptName">{{ row.deptName }}</el-tag>
           </template>
           <template slot="userTypeName"
                     slot-scope="{row}">
-            <el-tag>{{ row.userTypeName }}</el-tag>
+            <el-tag v-if="row.userTypeName">{{ row.userTypeName }}</el-tag>
           </template>
         </avue-crud>
         </div>
diff --git a/Source/UBCS-WEB/src/views/wel/index.vue b/Source/UBCS-WEB/src/views/wel/index.vue
index bf872e5..cd5bbbe 100644
--- a/Source/UBCS-WEB/src/views/wel/index.vue
+++ b/Source/UBCS-WEB/src/views/wel/index.vue
@@ -15,41 +15,44 @@
     <el-row>
       <el-col :span="24">
         <basic-container title="寰呭姙娴佺▼浠诲姟">
-          <avue-crud ref="crud" :table-loading="loading" :data="todoData" :option="todoOption"
+          <avue-crud ref="crud" :data="todoData" :option="todoOption" :page.sync="page"
+                     :table-loading="loading"
                      @on-load="onLoad"
-                     @cell-click="cellHandle"
-                     :page.sync="page">
+                     @cell-click="cellHandle">
             <template #menu="{size,row,index}">
-              <el-button @click="gotodo(row,index)"
+              <el-button :size="size"
                          icon="el-icon-check"
                          type="text"
-                         :size="size">鎵ц</el-button>
+                         @click="gotodo(row,index)">鎵ц
+              </el-button>
             </template>
           </avue-crud>
         </basic-container>
       </el-col>
-<!--      <el-col :span="8">-->
-<!--        <el-row>-->
-<!--          <basic-container title="娑堟伅鍒楄〃">-->
-<!--            <el-collapse v-model="logActiveNames" @change="handleChange">-->
-<!--              <el-collapse-item v-for="item in noticeData" :title="item.title" :name="item.id">-->
-<!--                <div>{{item.subtitle}}</div>-->
-<!--              </el-collapse-item>-->
-<!--            </el-collapse>-->
-<!--          </basic-container>-->
-<!--        </el-row>-->
+      <!--      <el-col :span="8">-->
+      <!--        <el-row>-->
+      <!--          <basic-container title="娑堟伅鍒楄〃">-->
+      <!--            <el-collapse v-model="logActiveNames" @change="handleChange">-->
+      <!--              <el-collapse-item v-for="item in noticeData" :title="item.title" :name="item.id">-->
+      <!--                <div>{{item.subtitle}}</div>-->
+      <!--              </el-collapse-item>-->
+      <!--            </el-collapse>-->
+      <!--          </basic-container>-->
+      <!--        </el-row>-->
 
-<!--      </el-col>-->
+      <!--      </el-col>-->
     </el-row>
-    <el-dialog title="淇敼瀵嗙爜" :visible.sync="dialogFormVisible" append-to-body  :close-on-press-escape="false" :before-close="Xdelhandle">
-      <el-form :model="form"  :rules="rules" ref="form">
-        <el-form-item label="鍘熷瘑鐮�" :label-width="formLabelWidth" prop="oldPassword">
+    <el-dialog :before-close="Xdelhandle" :close-on-press-escape="false" :visible.sync="dialogFormVisible"
+               append-to-body
+               title="淇敼瀵嗙爜">
+      <el-form ref="form" :model="form" :rules="rules">
+        <el-form-item :label-width="formLabelWidth" label="鍘熷瘑鐮�" prop="oldPassword">
           <el-input v-model="form.oldPassword" autocomplete="off"></el-input>
         </el-form-item>
-        <el-form-item label="鏂板瘑鐮�" :label-width="formLabelWidth" prop="newPassword">
+        <el-form-item :label-width="formLabelWidth" label="鏂板瘑鐮�" prop="newPassword">
           <el-input v-model="form.newPassword" autocomplete="off"></el-input>
         </el-form-item>
-        <el-form-item label="纭瀵嗙爜" :label-width="formLabelWidth" prop="newPassword1">
+        <el-form-item :label-width="formLabelWidth" label="纭瀵嗙爜" prop="newPassword1">
           <el-input v-model="form.newPassword1" autocomplete="off"></el-input>
         </el-form-item>
       </el-form>
@@ -62,229 +65,229 @@
 </template>
 
 <script>
-  import {mapGetters} from "vuex";
-  import  {check,updatePassword} from "@/api/system/user"
-  import md5 from "js-md5";
-  import {removeToken} from "@/util/auth";
-  import Statistic from './Statistic.vue';
-  import {validatenull} from "@/util/validate";
-  import {flowCategory,flowRoute} from "@/util/flow";
-  import {todoList} from "@/api/work/work";
+import {mapGetters} from "vuex";
+import {check, updatePassword} from "@/api/system/user"
+import md5 from "js-md5";
+import {removeToken} from "@/util/auth";
+import Statistic from './Statistic.vue';
+import {validatenull} from "@/util/validate";
+import {flowCategory, flowRoute} from "@/util/flow";
+import {todoList} from "@/api/work/work";
 
-  export default {
-    name: "wel",
-    components: {Statistic},
-    data() {
-      return {
-        loading: false,
-        page: {
-          pageSize: 10,
-          currentPage: 1,
-          total: 0
+export default {
+  name: "wel",
+  components: {Statistic},
+  data() {
+    return {
+      loading: false,
+      page: {
+        pageSize: 10,
+        currentPage: 1,
+        total: 0
+      },
+      // 浠e姙娴佺▼浠诲姟data
+      todoData: [],
+      // 浠e姙娴佺▼浠诲姟option
+      todoOption: {
+        height: 500,
+        addBtn: false,
+        header: false,
+        align: 'center',
+        index: true,
+        menuWidth: 80,
+        editBtn: false,
+        delBtn: false,
+        border: true,
+        column: [{
+          label: '浠诲姟鍚嶇О',
+          prop: 'taskName',
+          sortable: true,
+          headerAlign: 'center',
+          align: 'left',
+          html: true,
+          width: 300,
+          overHidden: true,
+          formatter: (val) => {
+            return '<a name="processname" href="javascript:;" style="color: #66b1ff;">' + val.variables.processName + '-' + val.taskName + '</a>'
+          }
         },
-        // 浠e姙娴佺▼浠诲姟data
-        todoData: [],
-        // 浠e姙娴佺▼浠诲姟option
-        todoOption: {
-          height:500,
-          addBtn: false,
-          header: false,
-          align: 'center',
-          index: true,
-          menuWidth: 80,
-          editBtn: false,
-          delBtn: false,
-          border:true,
-          column: [{
-            label: '浠诲姟鍚嶇О',
-            prop: 'taskName',
-            sortable:true,
-            headerAlign:'center',
-            align:'left',
-            html: true,
-            width:300,
-            overHidden:true,
+          {
+            label: '涓婁竴姝ュ鐞嗘椂闂�',
+            sortable: true,
+            width: 150,
+            prop: 'createTime'
+          },
+          {
+            label: '涓婁竴姝ユ搷浣滀汉',
+            sortable: true,
+            width: 120,
+            prop: 'historyActivityAssigneName'
+          },
+          {
+            label: '娴佺▼鎻忚堪',
+            prop: 'processDesc',
+            overHidden: true,
             formatter: (val) => {
-              return '<a name="processname" href="javascript:;" style="color: #66b1ff;">' + val.variables.processName+'-'+val.taskName + '</a>'
+              return val.variables.processDesc
             }
           },
-            {
-              label: '涓婁竴姝ュ鐞嗘椂闂�',
-              sortable:true,
-              width:150,
-              prop: 'createTime'
-            },
-            {
-              label: '涓婁竴姝ユ搷浣滀汉',
-              sortable:true,
-              width:120,
-              prop: 'historyActivityAssigneName'
-            },
-            {
-              label: '娴佺▼鎻忚堪',
-              prop: 'processDesc',
-              overHidden:true,
-              formatter: (val) => {
-                return  val.variables.processDesc
-              }
-            },
-            {
-              label: '鎵�灞炴祦绋嬫ā鏉�',
-              sortable:true,
-              overHidden:true,
-              prop: 'categoryName'
-            }
-          ]
-        },
-        noticeData: [{
-          img: '/img/bg/vip1.png',
-          title: '鍙茶拏澶蜂箶甯冩柉 鍏虫敞浜嗕綘',
-          subtitle: '05-08 15:08',
-          tag: '宸茬粡寮�濮�',
-          status: 0
-        }, {
-          img: '/img/bg/vip2.png',
-          title: '鏂拏澶锋矁鍏瑰凹浜氬厠 鍏虫敞浜嗕綘',
-          subtitle: '05-08 15:08',
-          tag: '鏈紑濮�',
-          status: 1
-        }, {
-          img: '/img/bg/vip3.png',
-          title: '钂傚路搴撳厠 鍏虫敞浜嗕綘',
-          subtitle: '05-08 15:08',
-          status: 3,
-          tag: '鏈夐敊璇�'
-        }, {
-          img: '/img/bg/vip4.png',
-          title: '姣斿皵路璐瑰皵鍗楀痉鏂� 鍏虫敞浜嗕綘',
-          subtitle: '05-08 15:08',
-          status: 4,
-          tag: '宸插畬鎴�'
-        }],
-        logActiveNames: ['28'],
-        userarr: [],
-        userid: '',
-        updataArr: [],
-        dialogFormVisible: false,
-        form: {
-          oldPassword: '',
-          newPassword: '',
-          newPassword1: '',
-        },
-        rules: {
-          oldPassword: [
-            {required: true, message: '璇疯緭鍏ュ師瀵嗙爜', trigger: 'blur'}
-          ],
-          newPassword: [
-            {required: true, message: '璇疯緭鍏ユ柊瀵嗙爜', trigger: 'blur'}
-          ],
-          newPassword1: [
-            {required: true, message: '璇疯緭纭瀵嗙爜', trigger: 'blur'}
-          ]
-        },
-      };
+          {
+            label: '鎵�灞炴祦绋嬫ā鏉�',
+            sortable: true,
+            overHidden: true,
+            prop: 'categoryName'
+          }
+        ]
+      },
+      noticeData: [{
+        img: '/img/bg/vip1.png',
+        title: '鍙茶拏澶蜂箶甯冩柉 鍏虫敞浜嗕綘',
+        subtitle: '05-08 15:08',
+        tag: '宸茬粡寮�濮�',
+        status: 0
+      }, {
+        img: '/img/bg/vip2.png',
+        title: '鏂拏澶锋矁鍏瑰凹浜氬厠 鍏虫敞浜嗕綘',
+        subtitle: '05-08 15:08',
+        tag: '鏈紑濮�',
+        status: 1
+      }, {
+        img: '/img/bg/vip3.png',
+        title: '钂傚路搴撳厠 鍏虫敞浜嗕綘',
+        subtitle: '05-08 15:08',
+        status: 3,
+        tag: '鏈夐敊璇�'
+      }, {
+        img: '/img/bg/vip4.png',
+        title: '姣斿皵路璐瑰皵鍗楀痉鏂� 鍏虫敞浜嗕綘',
+        subtitle: '05-08 15:08',
+        status: 4,
+        tag: '宸插畬鎴�'
+      }],
+      logActiveNames: ['28'],
+      userarr: [],
+      userid: '',
+      updataArr: [],
+      dialogFormVisible: false,
+      form: {
+        oldPassword: '',
+        newPassword: '',
+        newPassword1: '',
+      },
+      rules: {
+        oldPassword: [
+          {required: true, message: '璇疯緭鍏ュ師瀵嗙爜', trigger: 'blur'}
+        ],
+        newPassword: [
+          {required: true, message: '璇疯緭鍏ユ柊瀵嗙爜', trigger: 'blur'}
+        ],
+        newPassword1: [
+          {required: true, message: '璇疯緭纭瀵嗙爜', trigger: 'blur'}
+        ]
+      },
+    };
+  },
+  // 鎷垮埌userid璇锋眰鎺ュ彛
+  created() {
+    this.updataArr = JSON.parse(localStorage.getItem("updataid"))
+    this.userid = this.$store.state.user.upadatastatus.user_id
+    const pageFlag = localStorage.getItem("pageFlag")
+    if (pageFlag === null) {
+      this.checkhandle()
+      localStorage.setItem("pageFlag", true)
+    }
+  },
+  computed: {
+    ...mapGetters(["userInfo", "flowRoutes"]),
+  },
+  methods: {
+    handleChange(val) {
+      window.console.log(val);
     },
-    // 鎷垮埌userid璇锋眰鎺ュ彛
-    created() {
-      this.updataArr = JSON.parse(localStorage.getItem("updataid"))
-      this.userid = this.$store.state.user.upadatastatus.user_id
-      const pageFlag = localStorage.getItem("pageFlag")
-      if (pageFlag === null) {
+    Xdelhandle() {
+      removeToken()
+      this.dialogFormVisible = false
+    },
+    // 鍏抽棴寮圭獥鍚庢竻闄oken杩斿洖鍒扮櫥褰曢〉闈�
+    delhandle() {
+      removeToken()
+      this.dialogFormVisible = false
+    },
+    // 淇敼瀵嗙爜鏂规硶
+    addok() {
+      this.dialogFormVisible = false
+      updatePassword(md5(this.form.oldPassword), this.form.newPassword, this.form.newPassword1).then(res => {
+        if (res.data.code == 200) {
+          this.$message({
+            type: "success",
+            message: "淇敼鎴愬姛锛�"
+          })
+        }
+      }).catch(res => {
+        console.log(res)
         this.checkhandle()
-        localStorage.setItem("pageFlag", true)
-      }
+      })
     },
-    computed: {
-      ...mapGetters(["userInfo", "flowRoutes"]),
-    },
-    methods: {
-      handleChange(val) {
-        window.console.log(val);
-      },
-      Xdelhandle() {
-        removeToken()
-        this.dialogFormVisible = false
-      },
-      // 鍏抽棴寮圭獥鍚庢竻闄oken杩斿洖鍒扮櫥褰曢〉闈�
-      delhandle() {
-        removeToken()
-        this.dialogFormVisible = false
-      },
-      // 淇敼瀵嗙爜鏂规硶
-      addok() {
-        this.dialogFormVisible = false
-        updatePassword(md5(this.form.oldPassword), this.form.newPassword, this.form.newPassword1).then(res => {
-          if (res.data.code == 200) {
+    // 鎻愰啋鏃堕棿璇锋眰锛屼篃闇�瑕佸垽鏂槸鍚︿负瓒呯韬唤锛岃秴绠¤韩浠戒笉鍒ゆ柇
+    checkhandle() {
+      if (this.updataArr.user_id != '0' && this.updataArr.tenant_id !== '000000') {
+        check(this.userid).then(res => {
+          if (res.data.data > 0) {
             this.$message({
-              type: "success",
-              message: "淇敼鎴愬姛锛�"
+              type: 'warning',
+              message: `浣犺繕鏈�${res.data.data}澶╁氨瑕佷慨鏀瑰瘑鐮佷簡`
             })
+          } else if (res.data.data == -1) {
+            this.$message({
+              type: "warning",
+              message: "瀵嗙爜绛栫暐宸茶淇敼锛岃閲嶆柊淇敼瀵嗙爜锛�"
+            })
+            setTimeout(() => {
+              this.dialogFormVisible = true
+            }, 1500)
+          } else if (res.data.data == 0) {
+            // this.$message({
+            //   type: 'success',
+            //   message: "鎿嶄綔鎴愬姛"
+            // })
           }
         }).catch(res => {
           console.log(res)
-          this.checkhandle()
         })
-      },
-      // 鎻愰啋鏃堕棿璇锋眰锛屼篃闇�瑕佸垽鏂槸鍚︿负瓒呯韬唤锛岃秴绠¤韩浠戒笉鍒ゆ柇
-      checkhandle() {
-        if (this.updataArr.user_id != '0' && this.updataArr.tenant_id !== '000000') {
-          check(this.userid).then(res => {
-            if (res.data.data > 0) {
-              this.$message({
-                type: 'warning',
-                message: `浣犺繕鏈�${res.data.data}澶╁氨瑕佷慨鏀瑰瘑鐮佷簡`
-              })
-            } else if (res.data.data == -1) {
-              this.$message({
-                type: "warning",
-                message: "瀵嗙爜绛栫暐宸茶淇敼锛岃閲嶆柊淇敼瀵嗙爜锛�"
-              })
-              setTimeout(() => {
-                this.dialogFormVisible = true
-              }, 1500)
-            } else if (res.data.data == 0) {
-              // this.$message({
-              //   type: 'success',
-              //   message: "鎿嶄綔鎴愬姛"
-              // })
-            }
-          }).catch(res => {
-            console.log(res)
-          })
-        }
-      },
-      onLoad(page, params = {}) {
-        this.loading = true;
-        const query = {
-          ...this.query,
-          category: (params.category) ? flowCategory(params.category) : null
-        };
-        todoList(page.currentPage, page.pageSize, Object.assign(params, query)).then(res => {
-          const data = res.data.data;
-          this.page.total = data.total;
-          this.todoData = data.records;
-          this.loading = false;
-        }).catch(error => {
-          this.$message.error(error);
-          this.loading = false;
-        })
-      },
-      cellHandle(row, column, cell, event) {
-        if (column.property == 'taskName') {
-          this.gotodo(row)
-        }
-      },
-      gotodo(row, index) {
-        this.$router.push({ path: `/work/process/${flowRoute(this.flowRoutes, row.category)}/handle/${row.taskId}/${row.processInstanceId}/${row.businessId}` });
       }
+    },
+    onLoad(page, params = {}) {
+      this.loading = true;
+      const query = {
+        ...this.query,
+        category: (params.category) ? flowCategory(params.category) : null
+      };
+      todoList(page.currentPage, page.pageSize, Object.assign(params, query)).then(res => {
+        const data = res.data.data;
+        this.page.total = data.total;
+        this.todoData = data.records;
+        this.loading = false;
+      }).catch(error => {
+        this.$message.error(error);
+        this.loading = false;
+      })
+    },
+    cellHandle(row, column, cell, event) {
+      if (column.property == 'taskName') {
+        this.gotodo(row)
+      }
+    },
+    gotodo(row, index) {
+      this.$router.push({path: `/work/process/${flowRoute(this.flowRoutes, row.category)}/handle/${row.taskId}/${row.processInstanceId}/${row.businessId}`});
     }
-  };
+  }
+};
 </script>
 
 <style>
-  .el-font-size {
-    font-size: 14px;
-  }
+.el-font-size {
+  font-size: 14px;
+}
 
 </style>
 
diff --git a/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/service/impl/LogLocalServiceImpl.java b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/service/impl/LogLocalServiceImpl.java
index 8efad2f..becbc97 100644
--- a/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/service/impl/LogLocalServiceImpl.java
+++ b/Source/UBCS/ubcs-ops/ubcs-log/src/main/java/com/vci/ubcs/log/service/impl/LogLocalServiceImpl.java
@@ -26,6 +26,7 @@
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.attribute.BasicFileAttributes;
+import java.nio.file.attribute.FileTime;
 import java.rmi.ServerException;
 import java.text.SimpleDateFormat;
 import java.util.*;
@@ -96,8 +97,8 @@
 						LocalLogVO localLog = new LocalLogVO();
 						localLog.setLogName(item.getName());
 						localLog.setLogType(getLogType(item.getName()));
-						localLog.setCreateTime(getLastModifiedOrCreatTime(false,logParentPath));
-						localLog.setLastModifier(getLastModifiedOrCreatTime(true,logParentPath));
+						localLog.setCreateTime(getLastModifiedOrCreatTime(false,item.getPath()));
+						localLog.setLastModifier(getLastModifiedOrCreatTime(true,item.getPath()));
 						localLog.setLogPath(logParentPath);
 						String serviceId = getServiceId(logParentPath);
 						localLog.setServiceId(serviceId);
@@ -117,8 +118,8 @@
 						File file = new File(fullPath);
 						if(file.exists()){
 							LocalLogVO localLogVO = new LocalLogVO();
-							localLogVO.setLastModifier(getLastModifiedOrCreatTime(true,fullPath));
-							localLogVO.setCreateTime(getLastModifiedOrCreatTime(false,fullPath));
+							localLogVO.setLastModifier(getLastModifiedOrCreatTime(true,file.getPath()));
+							localLogVO.setCreateTime(getLastModifiedOrCreatTime(false,file.getPath()));
 							localLogVO.setLogPath(fullPath);
 							String serviceId = getServiceId(file.getPath());
 							localLogVO.setServiceId(serviceId);
diff --git a/Source/UBCS/ubcs-service-api/ubcs-applyjtcodeservice-api/src/main/java/com/vci/ubcs/code/applyjtcodeservice/feign/MdmApplyGroupCodeProvider.java b/Source/UBCS/ubcs-service-api/ubcs-applyjtcodeservice-api/src/main/java/com/vci/ubcs/code/applyjtcodeservice/feign/MdmApplyGroupCodeProvider.java
index 95e6e73..2570c9a 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-applyjtcodeservice-api/src/main/java/com/vci/ubcs/code/applyjtcodeservice/feign/MdmApplyGroupCodeProvider.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-applyjtcodeservice-api/src/main/java/com/vci/ubcs/code/applyjtcodeservice/feign/MdmApplyGroupCodeProvider.java
@@ -35,7 +35,6 @@
 	 * @param dockingGroupDataVO AO/TO鐨勪俊鎭�
 	 * @return 鎵ц缁撴灉
 	 */
-
 	@PostMapping("/externalMainData/receiveAddApply")
 	DockingResultVO receiveEditApply(@NotNull @RequestBody DockingGroupDataVO dockingGroupDataVO)throws VciBaseException;
 
diff --git a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/DefaultAttrAssimtUtil.java b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/DefaultAttrAssimtUtil.java
index 59caa32..c7adc5e 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/DefaultAttrAssimtUtil.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/DefaultAttrAssimtUtil.java
@@ -48,7 +48,6 @@
 				// 璁剧疆鎵�鏈夎��
 				baseModel.setOwner(AuthUtil.getUserId().toString());
 			}
-
 			baseModel.setVersionSeq(1);
 			baseModel.setVersionRule("0");
 			baseModel.setVersionValue("1");
diff --git a/Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/controller/DockingPreApplyCodeController.java b/Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/controller/DockingPreApplyCodeController.java
index 6970d64..5da8b84 100644
--- a/Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/controller/DockingPreApplyCodeController.java
+++ b/Source/UBCS/ubcs-service/ubcs-applyjtcodeservice/src/main/java/com/vci/ubcs/code/applyjtcodeservice/controller/DockingPreApplyCodeController.java
@@ -183,7 +183,7 @@
 	@ApiOperationSupport(order = 2)
 	@ApiOperation(value = "闆嗗洟鐮佺敵璇�", notes = "dockingPreAttrMappingVOList")
 	public R applyGroupCode(String oids,String btmName){
-		List<BaseModelVO> BaseModelVOs=new ArrayList<>();
+		List<BaseModelVO> BaseModelVOS=new ArrayList<>();
 		try {
 			return groupMdmInterService.applyGroupCode(oids,btmName);
 		}catch (Throwable e){
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/DockingManagementController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/DockingManagementController.java
index 16dfcc0..49df39d 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/DockingManagementController.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/DockingManagementController.java
@@ -130,7 +130,7 @@
 		}
 		query.setCurrent(queryObject.getPage());
 		query.setSize(queryObject.getLimit());
-		IPage<DockingSystemConfigVO>  pages=dockingSystemConfigService.page(condtionMap,query);
+		IPage<DockingSystemConfigVO> pages= dockingSystemConfigService.page(condtionMap,query);
 		return R.data(pages);
 	}
 
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleServiceImpl.java
index 6b963c6..6381134 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeRuleServiceImpl.java
@@ -23,6 +23,7 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
 import com.vci.ubcs.code.constant.FrameWorkDefaultValueConstant;
 
 import com.vci.ubcs.code.dto.CodeBasicSecDTO;
@@ -518,9 +519,10 @@
 		}
 		VciBaseUtil.alertNotNull(codeRuleDTO, "闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄");
 		CodeRule codeRuleDO = new CodeRule();
-		DefaultAttrAssimtUtil.addDefaultAttrAssimt(codeRuleDO,MdmBtmTypeConstant.CODE_RULE);
 		BeanUtilForVCI.copyPropertiesIgnoreCase(codeRuleDTO, codeRuleDO);
-		boolean exFlag = codeRuleMapper.insert(codeRuleDO)>0;
+		DefaultAttrAssimtUtil.addDefaultAttrAssimt(codeRuleDO,MdmBtmTypeConstant.CODE_RULE);
+		boolean exFlag = SqlHelper.retBool(codeRuleMapper.insert(codeRuleDO));
+
 		List<CodeBasicSecDTO> secList = codeRuleDTO.getElements();
 		List<CodeBasicSec> codeBasicSecs = new ArrayList<>();
 		List<CodeBasicSec> codeClassifySec = new ArrayList<>();
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeShowFieldConfigServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeShowFieldConfigServiceImpl.java
index 577f289..6328a12 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeShowFieldConfigServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeShowFieldConfigServiceImpl.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
 import com.vci.ubcs.code.entity.CodeShowFieldConfig;
 import com.vci.ubcs.code.mapper.CodeShowFieldConfigMapper;
 import com.vci.ubcs.code.service.ICodeShowFieldConfigService;
@@ -34,7 +35,7 @@
      */
     @Override
     public boolean insert(CodeShowFieldConfig codeShowFieldConfig) {
-        return this.codeShowFieldConfigMapper.insert(codeShowFieldConfig)>0;
+        return SqlHelper.retBool(this.codeShowFieldConfigMapper.insert(codeShowFieldConfig));
     }
 
 	@Override
@@ -59,7 +60,7 @@
      */
     @Override
     public boolean deleteById(String oid) {
-        return this.codeShowFieldConfigMapper.deleteById(oid) > 0;
+        return SqlHelper.retBool(this.codeShowFieldConfigMapper.deleteById(oid));
     }
 
 	@Override
@@ -67,7 +68,7 @@
 		LambdaQueryWrapper<CodeShowFieldConfig> lambdaQueryWrapper = Wrappers.<CodeShowFieldConfig>query()
 			.lambda()
 			.eq(CodeShowFieldConfig::getReferConfigOid, oid);
-		return this.codeShowFieldConfigMapper.delete(lambdaQueryWrapper) > 0;
+		return SqlHelper.retBool(this.codeShowFieldConfigMapper.delete(lambdaQueryWrapper));
 	}
 
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeSrchCondConfigServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeSrchCondConfigServiceImpl.java
index 31082d8..96a4691 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeSrchCondConfigServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeSrchCondConfigServiceImpl.java
@@ -34,7 +34,7 @@
      */
     @Override
     public boolean insert(CodeSrchCondConfig codeSrchcondconfig) {
-        return this.codeSrchcondconfigMapper.insert(codeSrchcondconfig)>0;
+        return  this.codeSrchcondconfigMapper.insert(codeSrchcondconfig)>0;
     }
 
 	@Override
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingSystemConfigServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingSystemConfigServiceImpl.java
index e0ac426..9b0d5a3 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingSystemConfigServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/DockingSystemConfigServiceImpl.java
@@ -137,7 +137,6 @@
 
 	@Override
 	public IPage<DockingSystemConfigVO> page(Map<String,String>codtionMap, Query query) {
-
 		IPage<DockingSystemConfig> pages = page(Condition.getPage(query), UBCSSqlKeyword.buildConditionByMapString(codtionMap));
 		List<DockingSystemConfig>  dockingSystemConfigList= pages.getRecords();
 		dockingSystemConfigList.stream().forEach(dockingSystemConfig -> {
@@ -152,7 +151,7 @@
 		//	dockingSystemConfig.setSourceSysName("");
 			//dockingSystemConfig.setTargetSysName("");
 		});
-		return  DockingSystemConfigWrapper.build().pageVO(pages);
+		return DockingSystemConfigWrapper.build().pageVO(pages);
 	}
 
 	/**
@@ -671,6 +670,7 @@
 				dockingLog.setClassifyName(dockingSystemConfigDTO.getClassifyName());
 				dockingLog.setId(dockingSystemConfigDTO.getId());
 				dockingLog.setUniqueCode("");
+				dockingLog.setCreateTime(new Date());
 				dockingLog.setInterfaceStatus(isSend?"true":"false");
 				dockingLog.setParamString(paramString);
 				dockingLog.setType(DATA_LOGE_OUT);
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
index e910019..67fe60b 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmIOServiceImpl.java
@@ -87,6 +87,7 @@
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.CopyOnWriteArraySet;
+import java.util.concurrent.ForkJoinPool;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.stream.Collectors;
 
@@ -201,6 +202,11 @@
 	 * 瀹㈡埛鐜板満excel涓鸿�佺増鏈紝瀵煎嚭鐨勬�绘暟闄愬埗涓�65535
 	 */
 	public static final int EXPORT_LIMIT = 65535;
+
+	/**
+	 * 鑷畾涔夊苟鍙慒orkJoinPool
+	 */
+	private static final ForkJoinPool customForkJoinPool = new ForkJoinPool(Runtime.getRuntime().availableProcessors()-1);
 
 	/**
 	 * 鎵归噺鐢宠锛氶�夊彇閫変腑鍒嗙被涓嬬殑鎵�鏈夋ā鏉垮叧閿睘鎬э紝鐩镐技灞炴�э紝蹇呭~灞炴�э紝鍐欏叆execl涓�
@@ -4393,56 +4399,60 @@
 		// 鏌ヨ涓嶉渶瑕佸弬涓庡叧閿睘鎬ф牎楠岀殑闄よ嚜宸变互澶栫殑鎵�鏈夊垎绫籵id
 		final String isParticipateCheckOids = classifyService.selectLeafByParentClassifyOid(classifyFullInfo.getTopClassifyVO().getOid(), classifyFullInfo.getCurrentClassifyVO().getOid());
 		final BladeUser user = AuthUtil.getUser();
-		//cboList = new CopyOnWriteArrayList<>(cboList);
-		// TODO:Thread limit exceeded replacing blocked 寮傚父鏄繖閮ㄥ垎浠g爜鎶涘嚭鐨�,鎵�浠ユ殏鏃跺皢parallelStream鏀规垚浜唖tream
-		List<ClientBusinessObject> repeatDataMap = cboList.stream().filter(cbo -> {
-			//姣忚閮藉緱鏌ヨ.濡傛灉鍏朵腑鍑虹幇浜嗛敊璇紝鎴戜滑灏辩洿鎺ユ姏鍑哄紓甯革紝鍏朵綑鐨勬樉绀�
-			//VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
-			Map<String, String> conditionMap = new HashMap<>();
-			ketAttrMap.forEach((attrId, attrVO) -> {
-				String value =cbo.getAttributeValue(attrId.toLowerCase(Locale.ROOT));
-				if (value == null) {
-					value = "";
-				}
-				value= value.replace(REQUIRED_CHAR,SPECIAL_CHAR);
-				engineService.wrapperKeyAttrConditionMap(value, keyRuleVO, attrId, trim, ignoreCase, ignoreWidth, trimAll, conditionMap);
-			});
-			if (!CollectionUtils.isEmpty(ketAttrMap)) {
-				// 娣诲姞涓嶅弬涓庡叧閿睘鎬ф牎楠岀殑鍒嗙被oid鍒ゆ柇
-				if(Func.isNotBlank(isParticipateCheckOids)){
-					conditionMap.put("t.codeclsfid",QueryOptionConstant.NOTIN+isParticipateCheckOids);
-				}
-				if(isEdit){//濡傛灉鏄洿鏀瑰垯闇�鎺掗櫎绯荤粺鏈韩
-					conditionMap.put("t.id",QueryOptionConstant.NOTEQUAL+cbo.getId());
-				}
-				conditionMap.put("t.lastr", "1");
-				conditionMap.put("t.lastv", "1");
-
-				CodeTemplateAttrSqlBO sqlBO = engineService.getSqlByTemplateVO(classifyFullInfo.getTopClassifyVO().getBtmTypeId(), templateVO, conditionMap, null);
-				List<String> repeatData = commonsMapper.selectList(sqlBO.getSqlId());
-				if(!repeatData.isEmpty()){
-					final List<Map<String,String>> newDataList = commonsMapper.queryByOnlySqlForMap(sqlBO.getSqlUnPage());
-					DefaultAttrAssimtUtil.mapToLowerCase(newDataList,true);
-					//List<ClientBusinessObject> newCboList=ChangeMapTOClientBusinessObjects(newDataList);
-					List<BaseModel> newCboList = new ArrayList<>();
-					newDataList.stream().forEach(stringStringMap -> {
-						BaseModel baseModel=new BaseModel();
-						DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(stringStringMap,baseModel,false,user);
-						baseModel.setData(stringStringMap);
-						newCboList.add(baseModel);
-					});
-					// 娣诲姞閿欒鍊�
-					String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
-					errorMap.put(rowIndex, "閲嶅鐨勮褰曠紪鍙蜂负:"+repeatData.stream().collect(Collectors.joining(",")));
-					if(!CollectionUtils.isEmpty(newCboList)) {
-						indexTODataMap.put(cbo.getAttributeValue(IMPORT_ROW_INDEX), newCboList);
+		// TODO:Thread limit exceeded replacing blocked 寮傚父鏄繖閮ㄥ垎浠g爜鎶涘嚭鐨�
+		//  ,鎵�浠ユ殏鏃跺皢parallelStream鏀规垚浜唖tream锛屾敼鎴愪簡stream涔嬪悗鍙戠幇宸ㄦ參
+		// customForkJoinPool鎺у埗骞跺彂搴�
+		List<ClientBusinessObject> finalCboList = cboList;
+		List<ClientBusinessObject> repeatDataMap = (List<ClientBusinessObject>) customForkJoinPool.submit(()->{
+			finalCboList.parallelStream().filter(cbo -> {
+				//姣忚閮藉緱鏌ヨ.濡傛灉鍏朵腑鍑虹幇浜嗛敊璇紝鎴戜滑灏辩洿鎺ユ姏鍑哄紓甯革紝鍏朵綑鐨勬樉绀�
+				//VciBaseUtil.setCurrentUserSessionInfo(sessionInfo);
+				Map<String, String> conditionMap = new HashMap<>();
+				ketAttrMap.forEach((attrId, attrVO) -> {
+					String value =cbo.getAttributeValue(attrId.toLowerCase(Locale.ROOT));
+					if (value == null) {
+						value = "";
 					}
+					value= value.replace(REQUIRED_CHAR,SPECIAL_CHAR);
+					engineService.wrapperKeyAttrConditionMap(value, keyRuleVO, attrId, trim, ignoreCase, ignoreWidth, trimAll, conditionMap);
+				});
+				if (!CollectionUtils.isEmpty(ketAttrMap)) {
+					// 娣诲姞涓嶅弬涓庡叧閿睘鎬ф牎楠岀殑鍒嗙被oid鍒ゆ柇
+					if(Func.isNotBlank(isParticipateCheckOids)){
+						conditionMap.put("t.codeclsfid",QueryOptionConstant.NOTIN+isParticipateCheckOids);
+					}
+					if(isEdit){//濡傛灉鏄洿鏀瑰垯闇�鎺掗櫎绯荤粺鏈韩
+						conditionMap.put("t.id",QueryOptionConstant.NOTEQUAL+cbo.getId());
+					}
+					conditionMap.put("t.lastr", "1");
+					conditionMap.put("t.lastv", "1");
+
+					CodeTemplateAttrSqlBO sqlBO = engineService.getSqlByTemplateVO(classifyFullInfo.getTopClassifyVO().getBtmTypeId(), templateVO, conditionMap, null);
+					List<String> repeatData = commonsMapper.selectList(sqlBO.getSqlId());
+					if(!repeatData.isEmpty()){
+						final List<Map<String,String>> newDataList = commonsMapper.queryByOnlySqlForMap(sqlBO.getSqlUnPage());
+						DefaultAttrAssimtUtil.mapToLowerCase(newDataList,true);
+						//List<ClientBusinessObject> newCboList=ChangeMapTOClientBusinessObjects(newDataList);
+						List<BaseModel> newCboList = new ArrayList<>();
+						newDataList.stream().forEach(stringStringMap -> {
+							BaseModel baseModel=new BaseModel();
+							DefaultAttrAssimtUtil.copplyDefaultAttrAssimt(stringStringMap,baseModel,false,user);
+							baseModel.setData(stringStringMap);
+							newCboList.add(baseModel);
+						});
+						// 娣诲姞閿欒鍊�
+						String rowIndex = cbo.getAttributeValue(IMPORT_ROW_INDEX);
+						errorMap.put(rowIndex, "閲嶅鐨勮褰曠紪鍙蜂负:"+repeatData.stream().collect(Collectors.joining(",")));
+						if(!CollectionUtils.isEmpty(newCboList)) {
+							indexTODataMap.put(cbo.getAttributeValue(IMPORT_ROW_INDEX), newCboList);
+						}
+					}
+					return !repeatData.isEmpty();
+				}else{
+					return false;
 				}
-				return !repeatData.isEmpty();
-			}else{
-				return false;
-			}
-		}).collect(Collectors.toList());
+			}).collect(Collectors.toList());
+		}).join();
 		if(!CollectionUtils.isEmpty(repeatDataMap)){
 			resultVO.setKeyAttrRepeatRowIndexList(repeatDataMap.stream().map(s->s.getAttributeValue(IMPORT_ROW_INDEX)).collect(Collectors.toSet()));
 		}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java
index c0545a5..59d595a 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/UniversalInterfaceImpl.java
@@ -372,7 +372,6 @@
 							resultDataObjectDetailDOs.add(xmlResultDataObjectDetailDO);
 						});
 					}else{
-
 						XMLResultDataObjectDetailDO xmlResultDataObjectDetailDO = new XMLResultDataObjectDetailDO();
 						xmlResultDataObjectDetailDO.setCode("");
 						xmlResultDataObjectDetailDO.setId("");
@@ -381,6 +380,7 @@
 						resultDataObjectDetailDOs.add(xmlResultDataObjectDetailDO);
 					}
 					e.printStackTrace();
+					log.error(e.getMessage());
 				}finally {
 					XMLResultClassfyVO resultClassfyVO = new XMLResultClassfyVO();
 					resultClassfyVO.setClassCode(classVO.getClassCode());
@@ -399,6 +399,7 @@
 		}catch (Throwable e){
 			e.printStackTrace();
 			msg="鐢宠缂栫爜澶辫触:"+e.getMessage();
+			log.error(msg);
           /*  XMLResultSystemVO XMLResultSystemVO=new XMLResultSystemVO();
             XMLResultSystemVO.setErrorid(errorid);
             XMLResultSystemVO.setMsg("鐢宠缂栫爜澶辫触锛�->"+e.getMessage());
@@ -434,6 +435,7 @@
 				this.saveLogs(systemId, systemId, data, resultStr, issucess[0], msg, "applyCode");
 			}catch (Throwable e){
 				e.printStackTrace();
+				log.error(e.getMessage());
 			}
 		}
 		log.info("杩斿洖鍙傛暟:"+resultStr);
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/EnumController.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/EnumController.java
index cba83cd..2db7e08 100644
--- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/EnumController.java
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/EnumController.java
@@ -102,7 +102,7 @@
 	@ApiOperationSupport(order = 5)
 	@ApiOperation(value = "淇敼", notes = "浼犲叆omdEnum")
 	public R update(@Valid @RequestBody Enum omdEnum) {
-		return R.status(omdEnumService.updateById(omdEnum));
+		return R.status(omdEnumService.updateOmdEnum(omdEnum));
 	}
 
 	/**
@@ -112,7 +112,7 @@
 	@ApiOperationSupport(order = 6)
 	@ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆omdEnum")
 	public R submit(@Valid @RequestBody Enum omdEnum) {
-		return R.status(omdEnumService.saveOrUpdate(omdEnum));
+		return R.status(omdEnumService.submit(omdEnum));
 	}
 
 	/**
@@ -158,6 +158,5 @@
 		List<EnumVO> tree = omdEnumService.getList(code);
 		return R.data(tree);
 	}
-
 
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IEnumService.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IEnumService.java
index d9232d4..2a44a80 100644
--- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IEnumService.java
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/IEnumService.java
@@ -17,9 +17,11 @@
 package com.vci.ubcs.omd.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
 import com.vci.ubcs.omd.entity.Enum;
 import com.vci.ubcs.omd.vo.EnumVO;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.poi.ss.formula.functions.T;
 import org.springblade.core.mp.support.Query;
 
 import java.util.List;
@@ -42,9 +44,22 @@
 	 */
 	IPage<EnumVO> selectOmdEnumPage(IPage<EnumVO> page, EnumVO omdEnum);
 
+	/**
+	 * TableId 娉ㄨВ瀛樺湪鏇存柊璁板綍锛屽惁鎻掑叆涓�鏉¤褰�
+	 *
+	 * @param omdEnum 瀹炰綋瀵硅薄
+	 */
+	boolean submit(Enum omdEnum);
 
 	boolean deleteLogic(List<String> toStringList);
 
+	/**
+	 * 鏍规嵁 ID 閫夋嫨淇敼
+	 *
+	 * @param omdEnum 瀹炰綋瀵硅薄
+	 */
+	boolean updateOmdEnum(Enum omdEnum);
+
 	IPage<EnumVO> parentList(Map<String, Object> dict, Query query);
 	/**
 	 * 鏍戝舰缁撴瀯
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/EnumServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/EnumServiceImpl.java
index 56c6a1a..60902f9 100644
--- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/EnumServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/EnumServiceImpl.java
@@ -28,6 +28,7 @@
 import com.vci.ubcs.omd.wrapper.EnumWrapper;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.utils.Func;
 import org.springblade.core.tool.utils.StringPool;
 import org.springframework.beans.BeanUtils;
@@ -54,11 +55,29 @@
 	}
 
 	@Override
+	public boolean submit(Enum omdEnum) {
+		Date date = new Date();
+		omdEnum.setCreator(AuthUtil.getUserAccount());
+		omdEnum.setCreatetime(date);
+		omdEnum.setModifier(AuthUtil.getUserAccount());
+		omdEnum.setModifytime(date);
+		omdEnum.setTs(date);
+		return this.saveOrUpdate(omdEnum);
+	}
+
+	@Override
 	public boolean deleteLogic(List<String> toStringList) {
 		return SqlHelper.retBool(baseMapper.deleteBatchIds(toStringList));
 	}
 
 	@Override
+	public boolean updateOmdEnum(Enum omdEnum) {
+		omdEnum.setModifier(AuthUtil.getUserAccount());
+		omdEnum.setModifytime(new Date());
+		return this.updateById(omdEnum);
+	}
+
+	@Override
 	public IPage<EnumVO> parentList(Map<String, Object> dict, Query query) {
 		IPage<Enum> page = this.page(Condition.getPage(query),
 			Condition.getQueryWrapper(dict, Enum.class).lambda()
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/ClassifyAuthController.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/ClassifyAuthController.java
index 5efa76f..9c232f7 100644
--- a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/ClassifyAuthController.java
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/controller/ClassifyAuthController.java
@@ -34,7 +34,7 @@
 	 * @param classifyAuthList
 	 * @return
 	 */
-	@PostMapping("saveOrUpdate")
+	@PostMapping("/saveOrUpdate")
 	public R saveOrUpdate(@RequestBody List<ClassifyAuth> classifyAuthList) {
 		return classifyAuthService.submit(classifyAuthList);
 	}
@@ -44,7 +44,7 @@
 	 * @param classifyAuthVO
 	 * @return
 	 */
-	@GetMapping("list")
+	@GetMapping("/list")
 	public R<List<ClassifyAuthVO>> getClassifyAuthList(ClassifyAuthVO classifyAuthVO) {
 		return R.data(classifyAuthService.getClassifyAuthList(classifyAuthVO));
 	}
@@ -54,8 +54,8 @@
 	 * @param classifyId
 	 * @return
 	 */
-	@GetMapping("getAuthButtonList")
-	public R<Map<String,Boolean>> getAuthButtonList(String classifyId){
+	@GetMapping("/getAuthButtonList")
+	public R<Map<String,Boolean>> getAuthButtonList(@RequestParam("classifyId") String classifyId){
 		return R.data(classifyAuthService.getAuthButtonList(classifyId));
 	}
 
diff --git a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/ClassifyAuthServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/ClassifyAuthServiceImpl.java
index b9350dc..72cf41b 100644
--- a/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/ClassifyAuthServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/ClassifyAuthServiceImpl.java
@@ -102,7 +102,7 @@
 	 */
 	public Map<String,Boolean> getAuthButtonList(String classifyId){
 		if(Func.isBlank(classifyId)){
-			return new HashMap<>();
+			throw new ServiceException("蹇呬紶鍙傛暟鍒嗙被oid涓嶈兘涓虹┖锛�");
 		}
 		//鏌ヨ鍒嗙被鑺傜偣鐨勬墍鏈夌埗绾ц妭鐐�
 		R<List<String>> listR = codeClassifyClient.selectAllParentOid(classifyId);

--
Gitblit v1.9.3