From fa58b2d4afe13cd5aba50490b809c389f080f724 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期日, 12 十一月 2023 20:40:57 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeBasicSecMapper.xml                                 |    2 
 Source/UBCS-WEB/src/views/code/code.vue                                                                             |  674 ++++++++++++++++--------------
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeSerialAlgorithmVO.java  |    4 
 Source/UBCS-WEB/src/views/system/PasswordManagement/passwords.vue                                                   |  219 +++++----
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeSerialAlgorithmService.java         |   19 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/annotation/MdmSerialAlgorithmMethod.java         |   23 +
 Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/util/VciBaseUtil.java             |   56 ++
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeBasicSecDTO.java                 |   13 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeApplySwingController.java         |   16 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/algorithm/CustomRomanSerialAlgorithmExample.java |   34 +
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/algorithm/CustomSerialAlgorithmExample.java      |   25 +
 Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/poi/util/ExcelUtil.java               |   17 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeSerialAlgorithmController.java    |   42 +
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeSerialAlgorithmServiceImpl.java |   65 ++
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/annotation/MdmSerialAlgorithm.java               |   37 +
 Source/UBCS-WEB/src/components/BatchImport/index.vue                                                                |    2 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/UIFormItemVO.java           |   13 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeBasicSecVO.java         |    5 
 Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeBasicSec.java                 |    6 
 19 files changed, 846 insertions(+), 426 deletions(-)

diff --git a/Source/UBCS-WEB/src/components/BatchImport/index.vue b/Source/UBCS-WEB/src/components/BatchImport/index.vue
index cc9654d..1f156fe 100644
--- a/Source/UBCS-WEB/src/components/BatchImport/index.vue
+++ b/Source/UBCS-WEB/src/components/BatchImport/index.vue
@@ -290,10 +290,12 @@
     },
     onError(err) {
       this.pageLoading.close();
+      console.log('onError')
     },
     uploadChange(file) {
       if (file.status === "success" || file.status === "error") {
         this.pageLoading.close();
+        console.log('uploadChange')
       }
     },
   },
diff --git a/Source/UBCS-WEB/src/views/code/code.vue b/Source/UBCS-WEB/src/views/code/code.vue
index 5210e2d..9848618 100644
--- a/Source/UBCS-WEB/src/views/code/code.vue
+++ b/Source/UBCS-WEB/src/views/code/code.vue
@@ -37,104 +37,104 @@
         <!-- 琛ㄦ牸鍐呮搷浣滄寜閽� -->
         <template slot="menu" slot-scope="scope">
           <el-button v-if="permissionList.editBtn && (scope.row.lcStatus == 'Editing' ? true : false)"
-            icon="el-icon-edit"
-            plain
-            size="small"
-            type="text"
-            @click="openEdit(scope.row)"
-            >缂� 杈�
+                     icon="el-icon-edit"
+                     plain
+                     size="small"
+                     type="text"
+                     @click="openEdit(scope.row)"
+          >缂� 杈�
           </el-button>
           <el-button v-if="permissionList.releaseBtn && (scope.row.lcStatus == 'Editing' ? true : false)"
-            :loading="releadDisabled"
-            icon="el-icon-position"
-            plain
-            size="small"
-            type="text"
-            @click="enableOrDeactivatse(scope.row.oid, 'release')"
-            >鍙� 甯�
+                     :loading="releadDisabled"
+                     icon="el-icon-position"
+                     plain
+                     size="small"
+                     type="text"
+                     @click="enableOrDeactivatse(scope.row.oid, 'release')"
+          >鍙� 甯�
           </el-button>
           <el-button v-if="permissionList.deactivateBtn && (scope.row.lcStatus == 'Released' ? true : false)"
-            icon="el-icon-video-pause"
-            plain
-            size="small"
-            type="text"
-            @click="enableOrDeactivatse(scope.row.oid, 'disable')"
-            >鍋� 鐢�
+                     icon="el-icon-video-pause"
+                     plain
+                     size="small"
+                     type="text"
+                     @click="enableOrDeactivatse(scope.row.oid, 'disable')"
+          >鍋� 鐢�
           </el-button>
           <el-button v-if="permissionList.enableBtn && (scope.row.lcStatus == 'Disabled' ? true : false)"
-            icon="el-icon-video-play"
-            plain
-            size="small"
-            type="text"
-            @click="enableOrDeactivatse(scope.row.oid, 'enable')"
-            >鍚� 鐢�
+                     icon="el-icon-video-play"
+                     plain
+                     size="small"
+                     type="text"
+                     @click="enableOrDeactivatse(scope.row.oid, 'enable')"
+          >鍚� 鐢�
           </el-button>
         </template>
         <!-- 琛ㄦ牸涓婃柟鎸夐挳鍖哄煙 -->
         <template slot="menuLeft" slot-scope="scope">
           <el-button v-if="permissionList.rulDelBtn"
-            icon="el-icon-delete"
-            plain
-            size="small"
-            type="danger"
-            @click="handleDelete"
+                     icon="el-icon-delete"
+                     plain
+                     size="small"
+                     type="danger"
+                     @click="handleDelete"
           >
             鍒� 闄�
           </el-button>
           <el-button v-if="permissionList.advancedQueryBtn"
-            icon="el-icon-search"
-            plain
-            size="small"
-            type="primary"
-            @click="openAdvancedQuery('codeRule')">
+                     icon="el-icon-search"
+                     plain
+                     size="small"
+                     type="primary"
+                     @click="openAdvancedQuery('codeRule')">
             楂樼骇鏌ヨ
           </el-button>
           <el-button v-if="permissionList.cloneBtn"
-            icon="icon-kelong"
-            plain
-            size="small"
-            @click="openCodeRuleDialog"
+                     icon="icon-kelong"
+                     plain
+                     size="small"
+                     @click="openCodeRuleDialog"
           >
             鍏� 闅�
           </el-button>
           <el-button v-if="permissionList.otherCloneBtn"
-            icon="icon-lianjiekelong"
-            plain
-            size="small"
-            style="font-size: 12px"
-            @click="openOtherCodeRuleDialog"
+                     icon="icon-lianjiekelong"
+                     plain
+                     size="small"
+                     style="font-size: 12px"
+                     @click="openOtherCodeRuleDialog"
           >
             浠庡叾浠栬鍒欎腑鍏嬮殕鐮佹
           </el-button>
           <el-button v-if="permissionList.usescopeBtn"
-            icon="el-icon-s-help"
-            plain
-            size="small"
-            @click="handleRange"
+                     icon="el-icon-s-help"
+                     plain
+                     size="small"
+                     @click="handleRange"
           >
             浣跨敤鑼冨洿
           </el-button>
           <el-button v-if="permissionList.clearBtn"
-            icon="icon-qingkong"
-            plain
-            size="small"
-            @click="clearAllCodeSec"
+                     icon="icon-qingkong"
+                     plain
+                     size="small"
+                     @click="clearAllCodeSec"
           >
             娓呯┖鐮佸��
           </el-button>
-          <el-button  v-if="permissionList.escapeOwnerBtn"
-            icon="el-icon-guide"
-            plain
-            size="small"
-            @click="escapeOwner"
+          <el-button v-if="permissionList.escapeOwnerBtn"
+                     icon="el-icon-guide"
+                     plain
+                     size="small"
+                     @click="escapeOwner"
           >
             杞Щ鎵�鏈夎��
           </el-button>
-          <el-button  v-if="permissionList.maxSerialnumBtn"
-            icon="el-icon-data-analysis"
-            plain
-            size="small"
-            @click="maxSerialNum"
+          <el-button v-if="permissionList.maxSerialnumBtn"
+                     icon="el-icon-data-analysis"
+                     plain
+                     size="small"
+                     @click="maxSerialNum"
           >
             鏈�澶ф祦姘村彿
           </el-button>
@@ -173,15 +173,15 @@
 
     <!-- 缂栫爜瑙勫垯,鍏嬮殕瀵硅瘽妗� -->
     <clone-rule-dialog
-      :visible.sync="cloneSettingBox"
       :ruleData="selectionList[0]"
+      :visible.sync="cloneSettingBox"
       @refreshRuleTable="onLoad">
     </clone-rule-dialog>
 
     <!-- 缂栫爜瑙勫垯,浠庡叾浠栬鍒欏厠闅嗗璇濇 -->
     <clone-other-basic-sec-dialog
-      :visible.sync="cloneOtherCodeRuleSettingBox"
       :quiltCloneCodeRule="selectionList[0]"
+      :visible.sync="cloneOtherCodeRuleSettingBox"
       @refreshRuleTable="onLoad">
     </clone-other-basic-sec-dialog>
 
@@ -189,9 +189,9 @@
     <el-dialog
       :visible.sync="escapeOwnerVisible"
       append-to-body
+      class="avue-dialog avue-dialog--top"
       title="杞Щ鎵�鏈夎��"
       width="30%"
-      class= "avue-dialog avue-dialog--top"
     >
       <el-select v-model="ruleOwner" class="selects" placeholder="璇烽�夋嫨">
         <el-option
@@ -241,75 +241,76 @@
         <!-- 鍩虹鐮佹琛ㄦ牸鍐呮搷浣滄寜閽� -->
         <template slot="menu" slot-scope="scope">
           <el-button v-if="basicPermissionList.viewBtn && currentRuleLcStatus != 'Editing'"
-            icon="el-icon-view"
-            plain
-            size="small"
-            type="text"
-            @click="openBasicDialog('view', scope.row)"
-            >鏌ョ湅
+                     icon="el-icon-view"
+                     plain
+                     size="small"
+                     type="text"
+                     @click="openBasicDialog('view', scope.row)"
+          >鏌ョ湅
           </el-button>
           <el-button v-if="basicPermissionList.editBtn && currentRuleLcStatus === 'Editing'"
-            icon="el-icon-edit"
-            plain
-            size="small"
-            type="text"
-            @click="openBasicDialog('edit', scope.row)"
-            >缂栬緫
+                     icon="el-icon-edit"
+                     plain
+                     size="small"
+                     type="text"
+                     @click="openBasicDialog('edit', scope.row)"
+          >缂栬緫
           </el-button>
-          <el-button v-if="basicPermissionList.basicMgrBtn && (scope.row.secType === 'codeclassifysec' || scope.row.secType == 'codefixedsec')"
+          <el-button
+            v-if="basicPermissionList.basicMgrBtn && (scope.row.secType === 'codeclassifysec' || scope.row.secType == 'codefixedsec')"
             icon="el-icon-setting"
             plain
             size="small"
             type="text"
             @click="openBasicSecCodeValueMgr(scope.row)"
-            >鐮佸�肩鐞�
+          >鐮佸�肩鐞�
           </el-button>
           <el-button v-if="basicPermissionList.basicMoveupBtn && scope.row.orderNum > 1"
-            icon="el-icon-arrow-up"
-            plain
-            size="small"
-            type="text"
-            @click="upOrderNum(scope.row)"
-            >涓婄Щ
+                     icon="el-icon-arrow-up"
+                     plain
+                     size="small"
+                     type="text"
+                     @click="upOrderNum(scope.row)"
+          >涓婄Щ
           </el-button>
           <el-button v-if="basicPermissionList.basicDownBtn"
-            icon="el-icon-arrow-down"
-            plain
-            size="small"
-            type="text"
-            @click="downOrderNum(scope.row)"
-            >涓嬬Щ
+                     icon="el-icon-arrow-down"
+                     plain
+                     size="small"
+                     type="text"
+                     @click="downOrderNum(scope.row)"
+          >涓嬬Щ
           </el-button>
         </template>
 
         <!-- 鍩虹鐮佹琛ㄦ牸宸︿笂鏂规寜閽尯鍩� -->
         <template slot="menuLeft" slot-scope="scope">
           <el-button v-if="basicPermissionList.addBtn"
-            :disabled="selectionList.length <= 0"
-            icon="el-icon-plus"
-            size="small"
-            type="primary"
-            @click="openAddBasicCodeSec"
+                     :disabled="selectionList.length <= 0"
+                     icon="el-icon-plus"
+                     size="small"
+                     type="primary"
+                     @click="openAddBasicCodeSec"
           >
             鏂� 澧�
           </el-button>
           <el-button v-if="basicPermissionList.basicDelBtn"
-            :disabled="selectionList.length <= 0"
-            icon="el-icon-delete"
-            plain
-            size="small"
-            type="danger"
-            @click="deleteBasicCode(scope.row)"
+                     :disabled="selectionList.length <= 0"
+                     icon="el-icon-delete"
+                     plain
+                     size="small"
+                     type="danger"
+                     @click="deleteBasicCode(scope.row)"
           >
             鍒� 闄�
           </el-button>
-          <el-button  v-if="basicPermissionList.basicAdvancedQueryBtn"
-            :disabled="selectionList.length <= 0"
-            icon="el-icon-search"
-            plain
-            size="small"
-            type="primary"
-            @click="openAdvancedQuery('codeBasicSec')"
+          <el-button v-if="basicPermissionList.basicAdvancedQueryBtn"
+                     :disabled="selectionList.length <= 0"
+                     icon="el-icon-search"
+                     plain
+                     size="small"
+                     type="primary"
+                     @click="openAdvancedQuery('codeBasicSec')"
           >
             楂樼骇鏌ヨ
           </el-button>
@@ -362,7 +363,7 @@
                 size="mini"
                 type="primary"
                 @click="codeClassifyValueOpetion('up')"
-                >涓婄Щ
+              >涓婄Щ
               </el-button>
               <el-button
                 class="button"
@@ -370,7 +371,7 @@
                 size="mini"
                 type="primary"
                 @click="codeClassifyValueOpetion('down')"
-                >涓嬬Щ
+              >涓嬬Щ
               </el-button>
             </div>
           </basic-container>
@@ -407,7 +408,7 @@
                 size="mini"
                 type="primary"
                 @click="addCodeSecValue('codeclassifyvaluesec')"
-                >娣诲姞
+              >娣诲姞
               </el-button>
               <el-button
                 :disabled="selectedFixedOrCodeclassifyValue == ''"
@@ -417,7 +418,7 @@
                 size="mini"
                 type="success"
                 @click="editCodeSecValue('codeclassifyvaluesec')"
-                >淇敼
+              >淇敼
               </el-button>
               <el-button
                 :disabled="selectedFixedOrCodeclassifyValue == ''"
@@ -426,7 +427,7 @@
                 size="mini"
                 type="danger"
                 @click="delCodeSecValue('codeclassifyvaluesec')"
-                >鍒犻櫎
+              >鍒犻櫎
               </el-button>
               <el-button
                 class="button"
@@ -435,7 +436,7 @@
                 size="mini"
                 type="warning"
                 @click="clearFixedOrClassifyForm('codeclassifyvaluesec')"
-                >鍙栨秷
+              >鍙栨秷
               </el-button>
             </div>
           </basic-container>
@@ -464,21 +465,21 @@
                     size="mini"
                     type="text"
                     @click="codeFixedValueOpetion('up', scope.row)"
-                    >涓婄Щ
+                  >涓婄Щ
                   </el-button>
                   <el-button
                     icon="el-icon-arrow-down"
                     size="mini"
                     type="text"
                     @click="codeFixedValueOpetion('down', scope.row)"
-                    >涓嬬Щ
+                  >涓嬬Щ
                   </el-button>
                   <el-button
                     icon="el-icon-minus"
                     size="mini"
                     type="text"
                     @click="codeFixedValueOpetion('remove', scope.row)"
-                    >绉婚櫎
+                  >绉婚櫎
                   </el-button>
                 </template>
               </avue-crud>
@@ -490,7 +491,7 @@
                 size="mini"
                 type="primary"
                 @click="saveCodeFixedOrClassifyValueOption('fixedValue')"
-                >淇濆瓨
+              >淇濆瓨
               </el-button>
             </div>
           </basic-container>
@@ -534,7 +535,7 @@
                 size="mini"
                 type="primary"
                 @click="addCodeSecValue('codefixedsec')"
-                >娣诲姞
+              >娣诲姞
               </el-button>
               <el-button
                 :disabled="selectedFixedOrCodeclassifyValue == ''"
@@ -544,7 +545,7 @@
                 size="mini"
                 type="success"
                 @click="editCodeSecValue('codefixedsec')"
-                >淇敼
+              >淇敼
               </el-button>
               <el-button
                 :disabled="selectedFixedOrCodeclassifyValue == ''"
@@ -553,7 +554,7 @@
                 size="mini"
                 type="danger"
                 @click="delCodeSecValue('codefixedsec')"
-                >鍒犻櫎
+              >鍒犻櫎
               </el-button>
               <el-button
                 class="button"
@@ -562,7 +563,7 @@
                 size="mini"
                 type="warning"
                 @click="clearFixedOrClassifyForm('codefixedsec')"
-                >鍙栨秷
+              >鍙栨秷
               </el-button>
             </div>
           </basic-container>
@@ -879,10 +880,23 @@
                 :label-width="rightFormLabelWidth"
                 label="鑷畾涔夌殑娴佹按绠楁硶:"
               >
-                <el-input
-                  v-model="form.customCodeSerialClass"
-                  :readonly="basicSecOnlyRead"
-                ></el-input>
+                  <template>
+                      <vciWebRefer
+                        ref="refer"
+                        :referConfig="this.referConfig || {}"
+                        :display="true"
+                        :value="form.customCodeSerialClass"
+                        :text="form.customCodeSerialClass"
+                        @setReferValue="setReferValue"
+                      ></vciWebRefer>
+<!--                                    <el-input-->
+<!--                                      v-model="form.customCodeSerialClass"-->
+<!--                                      :readonly="basicSecOnlyRead"-->
+<!--                                      @focus="streamFocusHandler"-->
+<!--                                    ></el-input>-->
+                  </template>
+
+
               </el-form-item>
             </div>
             <!-- 灞傜骇鐮佹 -->
@@ -1147,9 +1161,10 @@
       <div slot="footer" class="dialog-footer">
         <el-button
           :disabled="!showbtn"
-          type="primary"
           :loading="isLoadingSecCodeAddBtn"
-          @click="saveOrEditBasicCode">淇� 瀛�</el-button>
+          type="primary"
+          @click="saveOrEditBasicCode">淇� 瀛�
+        </el-button>
         <el-button @click="addBasicCodeSettingBox = false">鍙� 娑�</el-button>
       </div>
 
@@ -1246,11 +1261,13 @@
         </avue-crud>
         <div slot="footer" class="dialog-footer">
           <el-button type="primary" @click="saveSelectedParentClassify"
-            >淇� 瀛�</el-button
+          >淇� 瀛�
+          </el-button
           >
           <el-button
             @click="parentClsfyParams.isShowParentClassifySettingBox = false"
-            >鍙� 娑�</el-button
+          >鍙� 娑�
+          </el-button
           >
         </div>
       </el-dialog>
@@ -1271,6 +1288,10 @@
       >
       </refer-config-dialog>
     </el-dialog>
+
+    <!--    鑷畾涔夋祦姘村弬鐓х粍浠�-->
+
+
   </basic-container>
 </template>
 
@@ -1295,7 +1316,7 @@
   addSave,
   refDataGridClassifySec,
 } from "@/api/code/codebasic";
-import { listClassifyLinkAttr } from "@/api/code/codeclassify";
+import {listClassifyLinkAttr} from "@/api/code/codeclassify";
 import {
   gridCodeFixedValue,
   addSaveCodeFixedValue,
@@ -1310,8 +1331,8 @@
   deleteCodeClassifyValue,
   saveCodeClassifyValueOrder,
 } from "@/api/code/codeClassifyValue";
-import { getDictionary } from "@/api/omd/enum";
-import { getDictionaryBiz } from "@/api/system/dictbiz";
+import {getDictionary} from "@/api/omd/enum";
+import {getDictionaryBiz} from "@/api/system/dictbiz";
 import optionBasic from "@/const/code/codebasic";
 import optionRule from "@/const/code/mdmrule";
 import attrOption from "@/const/code/selectAttrOptionDialog";
@@ -1319,15 +1340,49 @@
 import classisyValueTreeOption from "@/const/code/classisyValueTreeDialog";
 import parentClassifyParentOption from "@/const/code/parentClassifyParentOptionDialog";
 import fixedValueOption from "@/const/code/fixedValueMgrDialog";
-import { mapGetters } from "vuex";
-import { getByRoleUserList } from "@/api/system/user";
+import {mapGetters} from "vuex";
+import {getByRoleUserList} from "@/api/system/user";
 import func from "@/util/func";
 import secTypeEnum from '@/enumpack/CodeSecTypeEnum';
+import vciWebRefer from "../../components/refer/vciWebRefer";
 
 export default {
+  components: { vciWebRefer },
   data() {
     return {
-      crudOption:{...optionRule},
+      referConfig:{
+        title: '鑷畾涔夋祦姘村弬鐓�',
+        showField: 'customCodeSerialClass',
+        field: 'customCodeSerialClass',
+        fieldMap:  {},
+        placeholder:'璇烽�夋嫨鑷畾涔夋祦姘�',
+        options:   {
+          // 璁剧疆榛樿鐨勫睘鎬�
+          url: 'api/ubcs-code/codeSerialAlgorithmController/gridCodeSerialAlgorithm',
+          valueField:'classFullName',
+          textField:'classFullName',
+          isMuti: false,
+          type: "grid",
+          method: 'get',
+          tableConfig: {
+            page: {
+              limit: 15,
+              page: 1
+            },
+            cols: [
+              {title: '绠楁硶缂栧彿', field: 'id', width: 200},
+              {title: '绠楁硶鍚嶇О', field: 'name', width: 150},
+              {title: '绫诲叏璺緞', field: 'classFullName', width: 300},
+              {title: '鎻忚堪', field: 'description'}
+            ],
+            queryColumns: [
+              // {field: 'id', title: '绠楁硶缂栧彿'},
+              // {field: 'name', title: '绠楁硶鍚嶇О'}
+            ]
+          }
+        }
+      },
+      crudOption: {...optionRule},
       ruleForm: {},
       query: {},
       loading: true,
@@ -1599,7 +1654,7 @@
         editBtn: this.vaildData(this.permission.code_rule.code_rule_edit, false),
         deactivateBtn: this.vaildData(this.permission.code_rule.code_rule_deactivate, false),
         enableBtn: this.vaildData(this.permission.code_rule.code_rule_enable, false),
-        releaseBtn: this.vaildData(this.permission.code_rule.	code_rule_release, false),
+        releaseBtn: this.vaildData(this.permission.code_rule.code_rule_release, false),
         advancedQueryBtn: this.vaildData(this.permission.code_rule.code_rule_advanced_query, false),
         cloneBtn: this.vaildData(this.permission.code_rule.code_rule_clone, false),
         otherCloneBtn: this.vaildData(this.permission.code_rule.code_rule_other_clone, false),
@@ -1610,11 +1665,11 @@
       };
     },
     basicPermissionList() {
-      return{
+      return {
         // 鍩虹鐮佹鐩稿叧鎸夐挳
         addBtn: this.vaildData(this.permission.code_rule.code_basic_add, false),
         editBtn: this.vaildData(this.permission.code_rule.code_basic_edit, false),
-        viewBtn: this.vaildData(this.permission.code_rule.	code_basic_view, false),
+        viewBtn: this.vaildData(this.permission.code_rule.code_basic_view, false),
         basicDelBtn: this.vaildData(this.permission.code_rule.code_basic_delete, false),
         basicAdvancedQueryBtn: this.vaildData(this.permission.code_rule.code_basic_advanced_query, false),
         basicMgrBtn: this.vaildData(this.permission.code_rule.code_basic_mgr, false),
@@ -1645,7 +1700,10 @@
     localStorage.removeItem('codeGetValueType');
   },
   methods: {
-
+    //鑷畾涔夋祦姘村け鐒�
+    setReferValue(data){
+      console.log(data)
+    },
     /** 杞Щ瑙勫垯鎵�鏈夎�呭璇濇 */
     escapeOwner() {
       if (this.selectionList.length === 0) {
@@ -1884,7 +1942,7 @@
     /** 鍔犺浇鍥哄畾鐮佹鐮佸�艰〃鏁版嵁*/
     loadFixedValueTableData(row) {
       this.fixedValueOptionLoading = true;
-      gridCodeFixedValue(1, -1, { codeFixedSecOid: row.oid }).then((res) => {
+      gridCodeFixedValue(1, -1, {codeFixedSecOid: row.oid}).then((res) => {
         this.fixedValueData = res.data.data.records;
         this.fixedValueOptionLoading = false;
       });
@@ -1988,7 +2046,7 @@
           description: this.codeFixdForm.description,
           id: this.codeFixdForm.id,
           codeFixedSecOid:
-            this.selectedFixedOrCodeclassifyValue.codefixedsecoid,
+          this.selectedFixedOrCodeclassifyValue.codefixedsecoid,
         };
         editCodeFixedValue(editData).then(
           () => {
@@ -2409,7 +2467,7 @@
     },
     /** 淇敼瑙勫垯鐘舵��:鍚敤銆佸仠鐢ㄣ�佸彂甯� */
     updateStatus(oid, update) {
-      updateStatus({ oid: oid, ts: new Date().getTime, update: update }).then(
+      updateStatus({oid: oid, ts: new Date().getTime, update: update}).then(
         () => {
           this.releadDisabled = false;
           this.onLoad(this.page);
@@ -2433,7 +2491,7 @@
             //console.log(res)
             if (res.data.data.success) {
               this.updateStatus(oid, update);
-            }else {
+            } else {
               this.$confirm(res.data.data.msg, "鎻愮ず", {
                 distinguishCancelAndClose: true,
                 confirmButtonText: "缁х画鍙戝竷",
@@ -2495,7 +2553,7 @@
       })
         .then(() => {
           let ts = new Date(currentData.ts).getTime();
-          return clearAllCode({ oid: currentData.oid, ts: ts });
+          return clearAllCode({oid: currentData.oid, ts: ts});
         })
         .then(() => {
           this.this.onLoad(this.page);
@@ -2557,7 +2615,7 @@
           // 鍙敮鎸佹瘡娆″崟鏉¤褰曞垹闄�
           let oid = this.selectionList[0].oid;
           let ts = new Date(this.selectionList[0].ts).getTime();
-          return remove({ oid: oid, ts: ts });
+          return remove({oid: oid, ts: ts});
         })
         .then(() => {
           this.onLoad(this.page);
@@ -2640,7 +2698,7 @@
       gridCodeRule(
         page.currentPage,
         page.pageSize,
-        Object.assign({},params,this.query),
+        Object.assign({}, params, this.query),
       ).then((res) => {
         //console.log(res.data);
         const data = res.data.data;
@@ -2751,8 +2809,8 @@
         let oldBasicSec = this.selectionBasicList.at(-1);
         let secType = this.form.secType;
         Vue.set(this.form, 'isClearValue', false);
-        if((oldBasicSec.secType == "codefixedsec" || oldBasicSec.secType === "codeclassifysec") && oldBasicSec.secType != secType){
-          await this.$confirm("鐮佹绫诲瀷鐢便��"+oldBasicSec.secTypeText+"銆戯紝淇敼涓�"+"銆�"+secTypeEnum.getTextByValue(secType)+"銆戯紝璇烽棶鏄惁闇�瑕佹竻绌哄叧鑱旂殑鐮佸�硷紵", "鎻愮ず", {
+        if ((oldBasicSec.secType == "codefixedsec" || oldBasicSec.secType === "codeclassifysec") && oldBasicSec.secType != secType) {
+          await this.$confirm("鐮佹绫诲瀷鐢便��" + oldBasicSec.secTypeText + "銆戯紝淇敼涓�" + "銆�" + secTypeEnum.getTextByValue(secType) + "銆戯紝璇烽棶鏄惁闇�瑕佹竻绌哄叧鑱旂殑鐮佸�硷紵", "鎻愮ず", {
             distinguishCancelAndClose: true,
             closeOnClickModal: false,
             confirmButtonText: "娓呯┖鐮佸��",
@@ -3001,7 +3059,7 @@
       })
         .then(() => {
           let ts = new Date(this.selectionBasicList[0].ts).getTime();
-          return deleteData({ oid: oid, ts: ts });
+          return deleteData({oid: oid, ts: ts});
         })
         .then(() => {
           this.loadBasic({
@@ -3025,7 +3083,7 @@
         //瀛樺偍褰撳墠鍏宠仈鐨勭紪鐮佽鍒欑浉鍏充俊鎭�
         this.currentCodeRuleOid = row.oid;
         this.currentRuleLcStatus = row.lcStatus;
-        this.sendGridCodeBasicSec({ pkCodeRule: row.oid }, false);
+        this.sendGridCodeBasicSec({pkCodeRule: row.oid}, false);
       }
     },
     /** 鍙戦�佸姞杞藉熀纭�鐮佹鐨勮姹�*/
@@ -3082,7 +3140,7 @@
     },
     basicSearchReset() {
       this.sendGridCodeBasicSec(
-        { pkCodeRule: this.selectionList[this.selectionList.length - 1].oid },
+        {pkCodeRule: this.selectionList[this.selectionList.length - 1].oid},
         false
       );
     },
@@ -3126,7 +3184,7 @@
         return;
       }
       downOrderNum(row.oid).then(() => {
-        this.loadBasic({ oid: codeRuleOid });
+        this.loadBasic({oid: codeRuleOid});
         this.$message({
           type: "success",
           message: "鎿嶄綔鎴愬姛!",
@@ -3218,19 +3276,19 @@
         this.loadCodeSecType();
       }
       this.form = {
-        oid: row !=null ? row.oid:this.form.oid,
-        id: row != null ? row.id:this.form.id, //缂栧彿,
-        name: row != null ? row.name:this.form.name, //鍚嶇О
-        secType: row != null ?  row.secType:this.form.secType, //鐮佹绫诲瀷
-        description:  row != null ? row.description:this.form.description, //鎻忚堪
-        serialDependFlag: this.isNullJsonBoolean(row,this.form, 'serialDependFlag'), //鏄惁娴佹按渚濊禆
-        serialDependOrder:  row !=null ? row.serialDependOrder:this.form.serialDependOrder, //娴佹按渚濊禆椤哄簭
+        oid: row != null ? row.oid : this.form.oid,
+        id: row != null ? row.id : this.form.id, //缂栧彿,
+        name: row != null ? row.name : this.form.name, //鍚嶇О
+        secType: row != null ? row.secType : this.form.secType, //鐮佹绫诲瀷
+        description: row != null ? row.description : this.form.description, //鎻忚堪
+        serialDependFlag: this.isNullJsonBoolean(row, this.form, 'serialDependFlag'), //鏄惁娴佹按渚濊禆
+        serialDependOrder: row != null ? row.serialDependOrder : this.form.serialDependOrder, //娴佹按渚濊禆椤哄簭
         nullableFlag: this.isNullJsonBoolean(row, this.form, 'nullableFlag'), //鏄惁涓虹┖
         displayFlag: this.isNullJsonBoolean(row, this.form, 'displayFlag'),
         componentCodeFlag: this.isNullJsonBoolean(row, this.form, 'componentCodeFlag'), //鏄惁鍙備笌缂栫爜
-        pkCodeRule:  row != null ? row.pkCodeRule:this.form.pkCodeRule, //鎵�灞炵紪鐮佽鍒�
-        prefixCode: row != null ? row.prefixCode:this.form.prefixCode, //鍓嶇紑
-        suffixCode: row!= null ? row.suffixCode:this.form.suffixCode, //鍚庣紑
+        pkCodeRule: row != null ? row.pkCodeRule : this.form.pkCodeRule, //鎵�灞炵紪鐮佽鍒�
+        prefixCode: row != null ? row.prefixCode : this.form.prefixCode, //鍓嶇紑
+        suffixCode: row != null ? row.suffixCode : this.form.suffixCode, //鍚庣紑
       };
       if (this.form.secType === "codefixedsec") {
         //鍥哄畾鐮佹
@@ -3274,8 +3332,8 @@
             row != null && row.serialStart != "" ? row.serialStart : 1, //娴佹按鍙疯捣濮嬪��
           serialStep: row != null && row.serialStep != "" ? row.serialStep : 1, //娴佹按鐨勬闀�
           codeFillType: row != null && row.codeFillType != ""
-              ? row.codeFillType
-              : "code_fill_left", //缂栫爜琛ヤ綅鏂瑰紡
+            ? row.codeFillType
+            : "code_fill_left", //缂栫爜琛ヤ綅鏂瑰紡
           // codeFillSeparatorSelect: row!=null&&row.codeFillSeparatorSelect != '' ? row.codeFillSeparatorSelect:0,    //琛ヤ綅鏃剁殑瀛楃锛岄�変腑鐨勪笅鎷夋鐨勪笅鏍�
           codeFillSeparator:
             row != null && row.codeFillSeparator != ""
@@ -3288,8 +3346,8 @@
           codeFillFlag:
             row != null && row.codeFillFlag != ""
               ? row.codeFillFlag == "true"
-                ? true
-                : false
+              ? true
+              : false
               : false, //娴佹按鏄惁琛ョ爜
           customCodeSerialClass:
             row != null && row.customCodeSerialClass != ""
@@ -3352,8 +3410,8 @@
           matchClassifyValueFlag:
             row != null && row.matchClassifyValueFlag != ""
               ? row.matchClassifyValueFlag == "true"
-                ? true
-                : false
+              ? true
+              : false
               : false, //鏄惁鑷姩鍖归厤鍊�
           parentClassifySecOid:
             row != null && row.parentClassifySecOid != ""
@@ -3385,19 +3443,19 @@
       }
     },
     // 鍒ゆ柇Boolean鍊兼槸鍚︿负绌猴紝骞朵笖瀵箂tr绫诲瀷甯冨皵鍊艰繘琛岃浆鎹�
-    isNullJsonBoolean(row,form,attr) {
-        //console.log(row[attr],form[attr]);
-        if(row != null){
-          return JSON.parse(row[attr]);
-        }else {
-          return form[attr];
-        }
+    isNullJsonBoolean(row, form, attr) {
+      //console.log(row[attr],form[attr]);
+      if (row != null) {
+        return JSON.parse(row[attr]);
+      } else {
+        return form[attr];
+      }
     },
     /** 绗竴娆¤姹傜殑鏋氫妇鏁版嵁鏀剧紦瀛�*/
     getLocalStorageEnum(enumKey) {
       let enumCach = JSON.parse(localStorage.getItem(enumKey));
       if (enumCach == null) {
-        getDictionary({ code: enumKey }).then((res) => {
+        getDictionary({code: enumKey}).then((res) => {
           enumCach = res.data.data;
           localStorage.setItem(enumKey, JSON.stringify(res.data.data));
         });
@@ -3428,7 +3486,7 @@
     loadCodeFillSeparator() {
       //let enumCach = JSON.parse(localStorage.getItem("codeFillSeparator"));
       //if (enumCach == null) {
-      getDictionaryBiz({code:"codeFillSeparator"}).then((res) => {
+      getDictionaryBiz({code: "codeFillSeparator"}).then((res) => {
         this.enumParam.codeFillSeparator = res.data.data;
         //console.log(this.enumParam.codeFillSeparator);
         localStorage.setItem(
@@ -3453,7 +3511,7 @@
         this.$message.warning("璇烽�夋嫨涓�鏉$紪鐮佽鍒欙紒");
         return;
       }
-      if(this.selectionList.length> 1){
+      if (this.selectionList.length > 1) {
         this.$message.warning("鍙兘閫夋嫨涓�鏉$紪鐮佽鍒欙紒");
         return;
       }
@@ -3465,155 +3523,155 @@
 </script>
 
 <style>
-  [class^="icon-"] {
-    font-size: 12px !important;
-  }
+[class^="icon-"] {
+  font-size: 12px !important;
+}
 
-  .code-rule-crud > .avue-crud__search,
-  .code-basic-crud > .avue-crud__search {
-    margin-bottom: -15px;
-  }
+.code-rule-crud > .avue-crud__search,
+.code-basic-crud > .avue-crud__search {
+  margin-bottom: -15px;
+}
 
-  .clone-input-textarea > .el-form-item__content {
-    width: 495px;
-  }
+.clone-input-textarea > .el-form-item__content {
+  width: 495px;
+}
 
-  .clone-avue-crud > .el-card > .el-card__body > .avue-crud__menu {
-    display: none !important;
-  }
+.clone-avue-crud > .el-card > .el-card__body > .avue-crud__menu {
+  display: none !important;
+}
 
-  .fixed-avue-crud > .el-card > .el-card__body > .avue-crud__menu {
-    display: none !important;
-  }
+.fixed-avue-crud > .el-card > .el-card__body > .avue-crud__menu {
+  display: none !important;
+}
 
-  .other-clone-codebasic-crud > .el-card > .el-card__body > .avue-crud__menu {
-    display: none !important;
-  }
+.other-clone-codebasic-crud > .el-card > .el-card__body > .avue-crud__menu {
+  display: none !important;
+}
 
-  .other-clone-coderule-crud > .el-card > .el-card__body > .avue-crud__menu {
-    display: none !important;
-  }
+.other-clone-coderule-crud > .el-card > .el-card__body > .avue-crud__menu {
+  display: none !important;
+}
 
-  .el-table--small .el-table__cell {
-    padding: 3px 0;
-  }
+.el-table--small .el-table__cell {
+  padding: 3px 0;
+}
 
-  .classify_value_box > .el-scrollbar {
-    height: 95%;
-  }
+.classify_value_box > .el-scrollbar {
+  height: 95%;
+}
 
-  .basic-container > .el-card > .el-card__body {
-    margin: -10px 0;
-  }
+.basic-container > .el-card > .el-card__body {
+  margin: -10px 0;
+}
 
-  .code-basicsec-container {
-    padding: 1px 6px;
-  }
+.code-basicsec-container {
+  padding: 1px 6px;
+}
 
-  .horizontal-line {
-    /* margin-top: 19px !important; */
-    margin-bottom: -20px !important;
-    width: 100%;
-    height: 2px;
-  }
+.horizontal-line {
+  /* margin-top: 19px !important; */
+  margin-bottom: -20px !important;
+  width: 100%;
+  height: 2px;
+}
 
-  .el-card__body > .treeBox {
-    height: 56vh;
-  }
+.el-card__body > .treeBox {
+  height: 56vh;
+}
 
-  .el-col-5 > .box {
-    height: 56vh;
-  }
+.el-col-5 > .box {
+  height: 56vh;
+}
 
-  .operator_,
-  filter,
-  .layui-btn {
-    width: 60px;
-  }
+.operator_,
+filter,
+.layui-btn {
+  width: 60px;
+}
 
-  .left > .el-form-item > .el-form-item__content > .el-input-number {
-    width: 120px;
-  }
+.left > .el-form-item > .el-form-item__content > .el-input-number {
+  width: 120px;
+}
 
-  .left
-    > .el-form-item
-    > .el-form-item__content
-    > .el-input-number
-    > .el-input
-    > .el-input__inner {
-    width: 120px;
-  }
+.left
+> .el-form-item
+> .el-form-item__content
+> .el-input-number
+> .el-input
+> .el-input__inner {
+  width: 120px;
+}
 
-  .el-col > .el-card > .el-card__header {
-    background: rgb(213 231 239);
-    border-radius: inherit;
-  }
+.el-col > .el-card > .el-card__header {
+  background: rgb(213 231 239);
+  border-radius: inherit;
+}
 
-  /** 鏂板鐮佹 */
-  .add-basicsec-dialog > .el-dialog > .el-dialog__body {
-    padding: 20px 20px 4px;
-    margin-bottom: 30px;
-  }
+/** 鏂板鐮佹 */
+.add-basicsec-dialog > .el-dialog > .el-dialog__body {
+  padding: 20px 20px 4px;
+  margin-bottom: 30px;
+}
 
-  .add-basicsec-total {
-    width: 100%;
-    height: 500px;
-  }
+.add-basicsec-total {
+  width: 100%;
+  height: 500px;
+}
 
-  .add-basicsec-total .el-input__inner,
-  .add-basicsec-total .el-textarea__inner {
-    width: 220px;
-  }
+.add-basicsec-total .el-input__inner,
+.add-basicsec-total .el-textarea__inner {
+  width: 220px;
+}
 
-  .add-basicsec-total > .add-basicsec-form {
-    display: flex;
-    flex-direction: row;
-    width: 100%;
+.add-basicsec-total > .add-basicsec-form {
+  display: flex;
+  flex-direction: row;
+  width: 100%;
+  height: 100%;
+  align-items: center;
+  justify-content: space-around;
+}
+
+.add-basicsec-form > .el-divider--vertical {
+  width: 2px;
+  height: 78%;
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  transform: translate(-50%, -50%);
+}
+
+.left {
+  /* float: left; */
+  width: 45%;
+  height: 100%;
+}
+
+.right {
+  /* float: right; */
+  margin-right: 2vw;
+  height: 100%;
+  width: auto;
+}
+
+.add-basicsec-form > .left > .el-form-item,
+.add-basicsec-form > .right > div > .el-form-item {
+  margin-bottom: 12px;
+}
+
+/* 瀵硅瘽妗嗗簳閮ㄦ寜閽竟妗嗘牱寮� */
+.el-dialog__footer {
+  /* width: 100%; */
+  border-top: 1px solid #e9e7e7;
+  padding: 5px 10px 10px;
+}
+
+.seloption {
+  margin-left: 10px;
+}
+
+/* .code-total > .basic-container__card {
     height: 100%;
-    align-items: center;
-    justify-content: space-around;
-  }
-
-  .add-basicsec-form > .el-divider--vertical {
-    width: 2px;
-    height: 78%;
-    position: absolute;
-    top: 50%;
-    left: 50%;
-    transform: translate(-50%, -50%);
-  }
-
-  .left {
-    /* float: left; */
-    width: 45%;
-    height: 100%;
-  }
-
-  .right {
-    /* float: right; */
-    margin-right: 2vw;
-    height: 100%;
-    width: auto;
-  }
-
-  .add-basicsec-form > .left > .el-form-item,
-  .add-basicsec-form > .right > div > .el-form-item{
-    margin-bottom: 12px;
-  }
-
-  /* 瀵硅瘽妗嗗簳閮ㄦ寜閽竟妗嗘牱寮� */
-  .el-dialog__footer {
-    /* width: 100%; */
-    border-top: 1px solid #e9e7e7;
-    padding: 5px 10px 10px;
-  }
-
-  .seloption {
-    margin-left: 10px;
-  }
-
-  /* .code-total > .basic-container__card {
-      height: 100%;
-    } */
+  } */
 
 </style>
diff --git a/Source/UBCS-WEB/src/views/system/PasswordManagement/passwords.vue b/Source/UBCS-WEB/src/views/system/PasswordManagement/passwords.vue
index 9b24dc2..60c4488 100644
--- a/Source/UBCS-WEB/src/views/system/PasswordManagement/passwords.vue
+++ b/Source/UBCS-WEB/src/views/system/PasswordManagement/passwords.vue
@@ -42,85 +42,11 @@
 export default {
   name: "passwords.vue",
   data() {
-    // 鏈�灏忛暱搴︽鍒欑粦瀹氬��
-    let validatePass=""
-    //鏈�澶ч暱搴︽鍒欑粦瀹氬��
-    let validatePass1=""
-    //杩囨湡鏃堕棿姝e垯缁戝畾鍊�
-    let validatePass2=""
-    //鎻愰啋鏃堕棿姝e垯缁戝畾鍊�
-    let validatePass3=""
-    //閿佸畾娆℃暟姝e垯缁戝畾鍊�
-    let validatePass4=""
-    //閿佸畾鏃堕棿姝e垯缁戝畾鍊�
-    let validatePass5=""
-    //鏈�灏忛暱搴︾粦瀹歷alue
-    let values=""
-    //鏈�澶ч暱搴︾粦瀹歷alue
-    let values1=""
-    //鏈�灏忛暱搴︽鍒欐柟娉�
-    validatePass = (rule, value,callback) => {
-     values=value*1
-      if(value == ""){
-        callback(new Error('璇疯緭鍏ュ瘑鐮佹渶灏忛暱搴�'));
-      // }else if(values >= values1*1){
-      //   callback(new Error('瀵嗙爜鏈�灏忛暱搴︿笉鑳藉ぇ浜庡瘑鐮佹渶澶ч暱搴�'));
-      }else if(/[^\d]/g.test(value)){
-        callback(new Error('瀵嗙爜鏈�灏忛暱搴︾殑杈撳叆绫诲瀷鍙兘涓烘暟瀛楃被鍨�'));
-      }else {
-        callback();
-      }
-    };
-    //鏈�澶ч暱搴︽鍒欐柟娉�
-    validatePass1= (rule, value,callback) =>{
-      values1=value*1
-     if(value == ""){
-        callback(new Error('璇疯緭鍏ュ瘑鐮佹渶澶ч暱搴�'));
-      }else if(values1 <= values){
-       callback(new Error('瀵嗙爜鏈�澶ч暱搴︿笉鑳藉皬浜庡瘑鐮佹渶澶ч暱搴�'));
-     }else if(/[^\d]/g.test(value)){
-       callback(new Error('瀵嗙爜鏈�澶ч暱搴︾殑杈撳叆绫诲瀷鍙兘涓烘暟瀛楃被鍨�'));
-     }else {
-       callback();
-     }
-    };
-    validatePass2 = (rule, value,callback) => {
-      if(value == ""){
-        callback(new Error('璇疯緭鍏ヨ繃鏈熸椂闂�'));
-      }else if(/[^\d]/g.test(value)){
-        callback(new Error('杩囨湡鏃堕棿鐨勮緭鍏ョ被鍨嬪彧鑳戒负鏁板瓧绫诲瀷'));
-      }else {
-        callback();
-      }
-    };
-    validatePass3 = (rule, value,callback) => {
-      if(value == ""){
-        callback(new Error('璇疯緭鍏ヨ繃鏈熸椂闂�'));
-      }else if(/[^\d]/g.test(value)){
-        callback(new Error('杩囨湡鏃堕棿鐨勮緭鍏ョ被鍨嬪彧鑳戒负鏁板瓧绫诲瀷'));
-      }else {
-        callback();
-      }
-    };
-    validatePass4 = (rule, value,callback) => {
-      if(value == ""){
-        callback(new Error('璇疯緭鍏ラ攣瀹氭鏁�'));
-      }else if(/[^\d]/g.test(value)){
-        callback(new Error('閿佸畾娆℃暟鐨勮緭鍏ョ被鍨嬪彧鑳戒负鏁板瓧绫诲瀷'));
-      }else {
-        callback();
-      }
-    };
-    validatePass5 = (rule, value,callback) => {
-      if(value == ""){
-        callback(new Error('璇疯緭鍏ラ攣瀹氭椂闂�'));
-      }else if(/[^\d]/g.test(value)){
-        callback(new Error('閿佸畾鏃堕棿鐨勮緭鍏ョ被鍨嬪彧鑳戒负鏁板瓧绫诲瀷'));
-      }else {
-        callback();
-      }
-    };
     return {
+      //鏈�灏忛暱搴︾粦瀹歷alue
+      values:"",
+      //鏈�澶ч暱搴︾粦瀹歷alue
+      values1:"",
       form:{},
       page: {
         pageSize: 10,
@@ -195,7 +121,18 @@
               labelWidth:"22%",
               rules: [{
                 required: true,
-                validator:this.validatePass,
+                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'
               }]
             },
@@ -206,7 +143,18 @@
               labelWidth:"25%",
               rules: [{
                 required: true,
-                validator:this.validatePass1,
+                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'
               }]
             },
@@ -280,7 +228,15 @@
               labelWidth:"22%",
               rules: [{
                 required: true,
-                validator:this.validatePass2,
+                validator: (rule, value,callback) => {
+                  if(value == ""){
+                    callback(new Error('璇疯緭鍏ヨ繃鏈熸椂闂�'));
+                  }else if(/[^\d]/g.test(value)){
+                    callback(new Error('杩囨湡鏃堕棿鐨勮緭鍏ョ被鍨嬪彧鑳戒负鏁板瓧绫诲瀷'));
+                  }else {
+                    callback();
+                  }
+                },
                 trigger: 'blur'
               }]
             },
@@ -291,7 +247,15 @@
               labelWidth:"25%",
               rules: [{
                 required: true,
-                validator:this.validatePass3,
+                validator:(rule, value,callback) => {
+                  if(value == ""){
+                    callback(new Error('璇疯緭鍏ヨ繃鏈熸椂闂�'));
+                  }else if(/[^\d]/g.test(value)){
+                    callback(new Error('杩囨湡鏃堕棿鐨勮緭鍏ョ被鍨嬪彧鑳戒负鏁板瓧绫诲瀷'));
+                  }else {
+                    callback();
+                  }
+                },
                 trigger: 'blur'
               }]
             },
@@ -302,7 +266,15 @@
               labelWidth:"22%",
               rules: [{
                 required: true,
-                validator:this.validatePass4,
+                validator:(rule, value,callback) => {
+                  if(value == ""){
+                    callback(new Error('璇疯緭鍏ラ攣瀹氭鏁�'));
+                  }else if(/[^\d]/g.test(value)){
+                    callback(new Error('閿佸畾娆℃暟鐨勮緭鍏ョ被鍨嬪彧鑳戒负鏁板瓧绫诲瀷'));
+                  }else {
+                    callback();
+                  }
+                },
                 trigger: 'blur'
               }]
             },
@@ -313,7 +285,15 @@
               labelWidth:"25%",
               rules: [{
                 required: true,
-                validator:this.validatePass5,
+                validator:(rule, value,callback) => {
+                  if(value == ""){
+                    callback(new Error('璇疯緭鍏ラ攣瀹氭椂闂�'));
+                  }else if(/[^\d]/g.test(value)){
+                    callback(new Error('閿佸畾鏃堕棿鐨勮緭鍏ョ被鍨嬪彧鑳戒负鏁板瓧绫诲瀷'));
+                  }else {
+                    callback();
+                  }
+                },
                 trigger: 'blur'
               }]
             },
@@ -350,41 +330,72 @@
       this.selectlength=val
     },
     handleCheckboxChange(val) {
-      // console.log("val",val);
       const arr = this.option.column[5];
-      if(val){
-        this.checkboxlength = val.value;
-        return
-      }
-      // console.log("this.checkboxlength",this.checkboxlength);
+      this.checkboxlength = val.value;
       this.checkboxedit = this.checkboxlength.toString().split(",");
-      if (val.value != undefined && val.value != null) {
-        if (this.checkboxlist == val.value) {
+
+      if (val.value !== undefined && val.value !== null) {
+        if (this.checkboxlist === val.value) {
+          return;
         } else {
           this.checkboxlist = val.value;
           if (
-            this.selectlength.value >= val.value.length &&
+            this.selectlength.value > val.value.length &&
             val.value.length > 0
           ) {
-            this.showMessage("蹇呭~绉嶇被涓嶈兘澶т簬缁勫悎鏂规硶锛岃閲嶆柊閫夋嫨锛�");
+            this.showWarningMessage();
           } else if (
-            this.selectlength.value >= this.checkboxedit.length &&
+            this.selectlength.value > this.checkboxedit.length &&
             this.checkboxedit.length > 0
           ) {
-            this.showMessage("蹇呭~绉嶇被涓嶈兘澶т簬缁勫悎鏂规硶锛岃閲嶆柊閫夋嫨锛�");
+            this.showWarningMessage();
           }
         }
       }
-      const disabledCount = Math.min(this.checkboxedit.length, 4);
-      for (let i = 0; i < arr.dicData.length; i++) {
-        arr.dicData[i].disabled = i >= disabledCount;
+
+      if (val.value !== undefined && val.value !== null) {
+        if (val.value.length === 1) {
+          this.setDisabled(arr, [0]);
+        } else if (val.value.length === 2) {
+          this.setDisabled(arr, [0, 1]);
+        } else if (val.value.length === 3) {
+          this.setDisabled(arr, [0, 1, 2]);
+        } else if (val.value.length === 4) {
+          this.setDisabled(arr, [0, 1, 2, 3]);
+        } else if (val.value.length === 0) {
+          this.setDisabled(arr, [-1]);
+        }
+      } else if (this.checkboxNumber.length !== 0) {
+        this.setDisabled(arr, [0, 1, 2, 3]);
       }
-      if (this.editFlag == true) {
-        const disabledCount = Math.min(this.checkboxedit.length, 4);
-        for (let i = 0; i < arr.dicData.length; i++) {
-          arr.dicData[i].disabled = i >= disabledCount;
+
+      if (this.editFlag) {
+        if (this.checkboxedit.length === 1) {
+          this.setDisabled(arr, [0]);
+        } else if (this.checkboxedit.length === 2) {
+          this.setDisabled(arr, [0, 1]);
+        } else if (this.checkboxedit.length === 3) {
+          this.setDisabled(arr, [0, 1, 2]);
+        } else if (this.checkboxedit.length === 4) {
+          this.setDisabled(arr, [0, 1, 2, 3]);
+        } else if (this.checkboxedit.length === 0) {
+          this.setDisabled(arr, [-1]);
         }
       }
+    },
+
+    setDisabled(arr, indices) {
+      arr.dicData.forEach((item, index) => {
+        item.disabled = !indices.includes(index);
+      });
+    },
+
+    showWarningMessage() {
+      this.$message({
+        message: '蹇呭~绉嶇被涓嶈兘澶т簬缁勫悎鏂规硶锛岃閲嶆柊閫夋嫨锛�',
+        type: 'warning',
+        showClose: true,
+      });
     },
     rowDel(row){
       this.$confirm("纭畾灏嗛�夋嫨鏁版嵁鍒犻櫎?", {
@@ -432,7 +443,7 @@
       this.editFlag=true;
       this.checkboxNumber=row.combinationIds.split(",")
       this.selectNumber=row.requiredType
-        if(this.checkboxNumber.length<=this.selectNumber){
+        if(this.checkboxNumber.length < this.selectNumber){
           this.$message({
             type:"warning",
             message:"蹇呭~绉嶇被涓嶈兘澶т簬缁勫悎鏂规硶锛岃閲嶆柊閫夋嫨锛�"
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeBasicSecDTO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeBasicSecDTO.java
index 2c58126..16447a2 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeBasicSecDTO.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/dto/CodeBasicSecDTO.java
@@ -193,6 +193,11 @@
 	private String customCodeSerialClass;
 
 	/**
+	 * 鑷畾涔夌殑娴佹按绠楁硶绫�
+	 */
+	private String customCodeSerialClassText;
+
+	/**
 	 * 鏄惁鑷姩鍖归厤鍒嗙被鍊�
 	 */
 	private String matchClassifyValueFlag;
@@ -661,6 +666,14 @@
 		this.referCodeClassifyOidName = referCodeClassifyOidName;
 	}
 
+	public String getCustomCodeSerialClassText() {
+		return customCodeSerialClassText;
+	}
+
+	public void setCustomCodeSerialClassText(String customCodeSerialClassText) {
+		this.customCodeSerialClassText = customCodeSerialClassText;
+	}
+
 	@Override
 	public String toString() {
 		return "CodeBasicSecDTO{" +
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeBasicSec.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeBasicSec.java
index bd70e71..3ef8c4f 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeBasicSec.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/entity/CodeBasicSec.java
@@ -237,6 +237,12 @@
 	 */
 	private String customCodeSerialClass;
 
+
+	/**
+	 * 鑷畾涔夌殑娴佹按绠楁硶绫�
+	 */
+	private String customCodeSerialClassText;
+
 	/**
 	 * 鏄惁鑷姩鍖归厤鍒嗙被鍊�
 	 */
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeBasicSecVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeBasicSecVO.java
index 1532f51..c506566 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeBasicSecVO.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeBasicSecVO.java
@@ -200,6 +200,11 @@
 	private String customCodeSerialClass;
 
 	/**
+	 * 鑷畾涔夌殑娴佹按绠楁硶绫�
+	 */
+	private String customCodeSerialClassText;
+
+	/**
 	 * 鏄惁鑷姩鍖归厤鍒嗙被鍊�
 	 */
 	private String matchClassifyValueFlag;
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeSerialAlgorithmVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeSerialAlgorithmVO.java
index 9375366..959255d 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeSerialAlgorithmVO.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/CodeSerialAlgorithmVO.java
@@ -1,11 +1,13 @@
 package com.vci.ubcs.code.vo.pagemodel;
 
+import com.vci.ubcs.starter.revision.model.BaseModel;
+
 /**
  * 娴佹按绠楁硶绫荤殑鏄剧ず淇℃伅
  * @author weidy
  * @date 2022-2-17
  */
-public class CodeSerialAlgorithmVO implements java.io.Serializable{
+public class CodeSerialAlgorithmVO extends BaseModel {
 
     /**
      * 绠楁硶缂栧彿
diff --git a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/UIFormItemVO.java b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/UIFormItemVO.java
index 46608b1..a703fbe 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/UIFormItemVO.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-code-api/src/main/java/com/vci/ubcs/code/vo/pagemodel/UIFormItemVO.java
@@ -3,6 +3,7 @@
 
 import com.vci.ubcs.starter.web.pagemodel.KeyValue;
 
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -136,6 +137,10 @@
 	 * 杈撳叆鎻愮ず
 	 */
 	private String inputTip;
+	/**
+	 * 鍏跺畠灞炴�ч兘鍙互寰�閲岄潰鏀�
+	 */
+	private Map<String, String> addField = new HashMap<>();
 
 	public boolean isKeyAttr() {
 		return keyAttr;
@@ -329,6 +334,14 @@
 		this.selectLibFlag = selectLibFlag;
 	}
 
+	public Map<String, String> getAddField() {
+		return addField;
+	}
+
+	public void setAddField(Map<String, String> addField) {
+		this.addField = addField;
+	}
+
 	@Override
 	public String toString() {
 		return "UIFormItemVO{" +
diff --git a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/poi/util/ExcelUtil.java b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/poi/util/ExcelUtil.java
index 48bb7c8..2540662 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/poi/util/ExcelUtil.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/poi/util/ExcelUtil.java
@@ -943,7 +943,7 @@
 
 									Map<Integer, String> rowDataMap = new HashMap();
 
-									for(int columnIndex = 0; columnIndex < rowDataSet.getLastCellNum(); ++columnIndex) {
+									for(int columnIndex = 0; columnIndex < sheetDataSet.getColName().size(); ++columnIndex) {
 										Cell cell = rowDataSet.getCell(columnIndex);
 										Object value = getCellValue(cell, evaluator);
 										String title = colsNameIndexMap.containsKey(columnIndex) ? (String)colsNameIndexMap.get(columnIndex) : "";
@@ -1025,14 +1025,17 @@
 											} else {
 												rowDataMap.put(columnIndex, VciBaseUtil.getStringValueFromObject(value));
 											}
-										} else if (!isDataSet && thisField != null && excelColumn != null) {
-											if (!excelColumn.nullable()) {
-												throw new VciBaseException("cellValueCanNotNull", new String[]{title, rowIndex + 1 + ""});
-											}
+										} else {
+											if (!isDataSet && thisField != null && excelColumn != null) {
+												if (!excelColumn.nullable()) {
+													throw new VciBaseException("cellValueCanNotNull", new String[]{title, rowIndex + 1 + ""});
+												}
 
-											if (StringUtil.isNotBlank(excelColumn.regExg())) {
-												throw new VciBaseException("cellValueCanNotNullForReg", new String[]{title, rowIndex + 1 + ""});
+												if (StringUtil.isNotBlank(excelColumn.regExg())) {
+													throw new VciBaseException("cellValueCanNotNullForReg", new String[]{title, rowIndex + 1 + ""});
+												}
 											}
+											rowDataMap.put(columnIndex, VciBaseUtil.getStringValueFromObject(value));
 										}
 									}
 
diff --git a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/util/VciBaseUtil.java b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/util/VciBaseUtil.java
index e10a57c..cef20db 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/util/VciBaseUtil.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/util/VciBaseUtil.java
@@ -1438,7 +1438,61 @@
 
 		return sb.toString();
 	}
-	public static String intToRomans(int num) {
+	public static String convertArabicToRoman(int num) {
+		int[] values={1000,900,500,400,100,90,50,40,10,9,5,4,1};
+		String[] romans={"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};
+		StringBuilder sb=new StringBuilder();
+		for(int i=0;i<values.length;i++){
+			while(num>=values[i]){
+				num=num-values[i];
+				sb.append(romans[i]);
+			}
+		}
+		return sb.toString();
+	}
+	/**
+	 * 鎶婄綏椹暟瀛楄浆鎹负闃挎媺浼暟瀛�
+	 * @param m
+	 * @return
+	 */
+	public static int convertRomanToArabic(String m) {
+		int graph[] = new int[400];
+		graph['I'] = 1;
+		graph['V'] = 5;
+		graph['X'] = 10;
+		graph['L'] = 50;
+		graph['C'] = 100;
+		graph['D'] = 500;
+		graph['M'] = 1000;
+		char[] num = m.toCharArray();
+		int sum = graph[num[0]];
+		for (int i = 0; i < num.length - 1; i++) {
+			if (graph[num[i]] >= graph[num[i + 1]]) {
+				sum += graph[num[i + 1]];
+			} else {
+				sum = sum + graph[num[i + 1]] - 2 * graph[num[i]];
+			}
+		}
+		return sum;
+	}
+	/***
+	 * 鏍¢獙鏄惁鏄綏椹暟瀛�
+	 * @param s
+	 * @return
+	 */
+	public static boolean isRoman(String s) {
+		// 妫�鏌ヨ緭鍏ョ殑瀛楃涓叉槸鍚︿负绌�
+		if (s == null || s.length() == 0) {
+			return false;
+		}
+		// 灏嗚緭鍏ョ殑瀛楃涓茶浆鎹负澶у啓瀛楁瘝
+		s = s.toUpperCase();
+		// 杩斿洖缁撴灉
+		Pattern pattern = Pattern.compile("^M{0,3}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$");
+		return pattern.matcher(s ).matches();
+	}
+
+	public static String intToRomanTwo(int num) {
 		String M[] = {"", "M", "MM", "MMM"};
 		String C[] = {"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"};
 		String X[] = {"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"};
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/algorithm/CustomRomanSerialAlgorithmExample.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/algorithm/CustomRomanSerialAlgorithmExample.java
new file mode 100644
index 0000000..abe1dfa
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/algorithm/CustomRomanSerialAlgorithmExample.java
@@ -0,0 +1,34 @@
+package com.vci.ubcs.code.algorithm;
+
+import com.vci.ubcs.code.annotation.MdmSerialAlgorithm;
+import com.vci.ubcs.code.annotation.MdmSerialAlgorithmMethod;
+import com.vci.ubcs.code.dto.CodeOrderSecDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
+import com.vci.ubcs.starter.revision.model.BaseModel;
+import com.vci.ubcs.starter.web.util.VciBaseUtil;
+
+import java.util.List;
+
+/****
+ * 鑷畾涔夌綏椹祦姘寸畻娉曡嚜瀹氫箟绫�
+ */
+@MdmSerialAlgorithm(text = "鑷畾涔夌綏椹祦姘�",description = "鑷畾涔夌綏椹祦姘寸畻娉�")
+public class CustomRomanSerialAlgorithmExample {
+	/**
+	 * 鐢熸垚缃楅┈娴佹按鍙风殑鏂规硶
+	 * @return 娴佹按鍙风殑淇℃伅
+	 */
+	@MdmSerialAlgorithmMethod
+	public String serialGenerate(BaseModel data, CodeRuleVO codeRuleVO, List<CodeOrderSecDTO> secDTOList){
+
+		
+
+
+		//灏嗘暟瀛楁祦姘磋浆涓虹綏椹祦姘�
+		String romanValue=VciBaseUtil.convertArabicToRoman(5);
+		//灏嗙綏椹祦姘磋浆涓烘暟瀛楁祦姘�
+		int arabicValue=VciBaseUtil.convertRomanToArabic(romanValue);
+		return "";
+	}
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/algorithm/CustomSerialAlgorithmExample.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/algorithm/CustomSerialAlgorithmExample.java
new file mode 100644
index 0000000..41b71b8
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/algorithm/CustomSerialAlgorithmExample.java
@@ -0,0 +1,25 @@
+package com.vci.ubcs.code.algorithm;
+
+import com.vci.ubcs.code.annotation.MdmSerialAlgorithm;
+import com.vci.ubcs.code.annotation.MdmSerialAlgorithmMethod;
+import com.vci.ubcs.code.dto.CodeOrderSecDTO;
+import com.vci.ubcs.code.vo.pagemodel.CodeRuleVO;
+import com.vci.ubcs.starter.revision.model.BaseModel;
+
+import java.util.List;
+
+/**
+ * 娴佹按绠楁硶鐨勭ず渚�
+ */
+@MdmSerialAlgorithm(text = "娴佹按绠楁硶鐨勭ず渚�",description = "璇蜂笉瑕佷娇鐢ㄨ繖涓被锛岃繖涓被鍙槸绀轰緥锛岀敤浜庢煡鐪嬪浣曠紪鍐欐祦姘寸畻娉�")
+public class CustomSerialAlgorithmExample {
+
+    /**
+     * 鐢熸垚娴佹按鍙风殑鏂规硶
+     * @return 娴佹按鍙风殑淇℃伅
+     */
+    @MdmSerialAlgorithmMethod
+    public String serialGenerate(BaseModel data, CodeRuleVO codeRuleVO, List<CodeOrderSecDTO> secDTOList){
+        return "";
+    }
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/annotation/MdmSerialAlgorithm.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/annotation/MdmSerialAlgorithm.java
new file mode 100644
index 0000000..dbab4dc
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/annotation/MdmSerialAlgorithm.java
@@ -0,0 +1,37 @@
+package com.vci.ubcs.code.annotation;
+
+import org.springframework.stereotype.Component;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * 鑷畾涔夋祦姘寸畻娉曠殑娉ㄨВ
+ *	@author xiejun
+  * @date 2023-11-09
+ */
+@Target({ElementType.TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+@Component
+public @interface MdmSerialAlgorithm {
+
+    /**
+     * 鍊硷紝瀹為檯灏辨槸杩欎釜娉ㄨВ鎵�鍦ㄧ殑绫荤殑鍏ㄨ矾寰�
+     * @return 鍊�
+     */
+    String value() default "";
+
+    /**
+     * 浜嬩欢鐨勫悕绉�
+     * @return 浜嬩欢鍚嶇О
+     */
+    String text();
+
+    /**
+     * 鎻忚堪
+     * @return 鎻忚堪
+     */
+    String description() default "";
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/annotation/MdmSerialAlgorithmMethod.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/annotation/MdmSerialAlgorithmMethod.java
new file mode 100644
index 0000000..a241b99
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/annotation/MdmSerialAlgorithmMethod.java
@@ -0,0 +1,23 @@
+package com.vci.ubcs.code.annotation;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * 鑷畾涔夋祦姘寸畻娉曞鐞嗘柟娉曠殑娉ㄨВ
+ * @author xiejun
+ * @date 2023-11-09
+ */
+@Target({ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface MdmSerialAlgorithmMethod {
+
+    /**
+     * 鍊�
+     * @return 鍊�
+     */
+    String value() default "";
+
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeApplySwingController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeApplySwingController.java
index 88db082..1cfa4d7 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeApplySwingController.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeApplySwingController.java
@@ -83,13 +83,19 @@
 
 	/**
 	 * 浣跨敤妯℃澘鐨勪富閿幏鍙栬〃鍗曠殑瀹氫箟
-	 * @param codeClassifyOid 浣跨敤妯℃澘鐨勫垎绫讳富閿�
+	 * @param map 浼犵殑鏁版嵁
 	 * @return UI鐩稿叧鐨勪俊鎭紙浠呭寘鍚〃鍗曪級
 	 */
-	@GetMapping("/getFormDefineByTemplateOid")
-	public MdmUIInfoVO getFormDefineByTemplateOid(String codeClassifyOid){
-		CodeClassifyTemplateVO usedTemplateByClassifyOid = mdmEngineService.getUsedTemplateByClassifyOid(codeClassifyOid);
-		return mdmEngineService.getFormDefineByTemplateOid(usedTemplateByClassifyOid.getOid(),codeClassifyOid);
+	@RequestMapping("/getFormDefineByTemplateOid")
+	public MdmUIInfoVO getFormDefineByTemplateOid(@RequestParam Map<String,String> map){
+//		CodeClassifyTemplateVO usedTemplateByClassifyOid = mdmEngineService.getUsedTemplateByClassifyOid(codeClassifyOid);
+		CodeClassifyTemplateVO usedTemplateByClassifyOid = mdmEngineService.getUsedTemplateByClassifyOid(map.get("codeClassifyOid"));
+		MdmUIInfoVO formDefineByTemplate = mdmEngineService.getFormDefineByTemplateOid(usedTemplateByClassifyOid.getOid(), map.get("codeClassifyOid"));
+		for (UIFormItemVO item : formDefineByTemplate.getFormDefineVO().getItems()) {
+			if(map.get(item.getField()) != null){
+				item.getAddField().put("defaultValue",map.get(item.getField()));
+			}
+		}return formDefineByTemplate;
 	}
 
 	/**
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeSerialAlgorithmController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeSerialAlgorithmController.java
new file mode 100644
index 0000000..c61ad4e
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeSerialAlgorithmController.java
@@ -0,0 +1,42 @@
+package com.vci.ubcs.code.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.vci.ubcs.code.vo.pagemodel.CodeAllCodeVO;
+import com.vci.ubcs.code.vo.pagemodel.CodeSerialAlgorithmVO;
+import io.swagger.annotations.Api;
+import lombok.AllArgsConstructor;
+import org.springblade.core.boot.ctrl.BladeController;
+import org.springblade.core.tool.api.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.vci.ubcs.code.service.ICodeSerialAlgorithmService;
+
+/**
+ * 鍏ㄩ儴鐮佸�� 鎺у埗鍣�
+ *
+ * @author ludc
+ * @since 2023-04-03
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/codeSerialAlgorithmController")
+@Api(value = "鑷畾涔夋祦姘�", tags = "鑷畾涔夋祦姘寸畻娉�")
+public class CodeSerialAlgorithmController extends BladeController {
+	/**
+	 * 绠楁硶鏈嶅姟
+	 */
+	@Autowired
+	private ICodeSerialAlgorithmService algorithmService;
+
+	/**
+	 * 绠楁硶鐨勫垪琛�
+	 * @return 绠楁硶鐨勪俊鎭�
+	 */
+	@GetMapping("/gridCodeSerialAlgorithm")
+	public R<IPage<CodeSerialAlgorithmVO>> gridCodeSerialAlgorithm(){
+		IPage<CodeSerialAlgorithmVO> pages= algorithmService.gridSerialAlgorithm();
+		return R.data(pages);
+	}
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeSerialAlgorithmService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeSerialAlgorithmService.java
new file mode 100644
index 0000000..f0bff32
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeSerialAlgorithmService.java
@@ -0,0 +1,19 @@
+package com.vci.ubcs.code.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.vci.ubcs.code.vo.pagemodel.CodeSerialAlgorithmVO;
+import org.springblade.core.tool.api.R;
+
+/**
+ * 娴佹按绠楁硶绫�
+ * @author weidy
+ * @date 2022-2-17
+ */
+public interface ICodeSerialAlgorithmService {
+
+    /**
+     * 鑾峰彇娴佹按绠楁硶鐨勫垪琛�
+     * @return 娴佹按绠楁硶鐨勪俊鎭�
+     */
+	IPage<CodeSerialAlgorithmVO>  gridSerialAlgorithm();
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeSerialAlgorithmServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeSerialAlgorithmServiceImpl.java
new file mode 100644
index 0000000..8b6e805
--- /dev/null
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeSerialAlgorithmServiceImpl.java
@@ -0,0 +1,65 @@
+package com.vci.ubcs.code.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.vci.ubcs.code.annotation.MdmSerialAlgorithm;
+import com.vci.ubcs.code.service.ICodeSerialAlgorithmService;
+import com.vci.ubcs.code.vo.pagemodel.CodeSerialAlgorithmVO;
+import com.vci.ubcs.starter.web.util.ApplicationContextProvider;
+import net.logstash.logback.encoder.org.apache.commons.lang3.StringUtils;
+import org.springblade.core.mp.support.Condition;
+import org.springblade.core.mp.support.Query;
+import org.springframework.aop.framework.Advised;
+import org.springframework.aop.support.AopUtils;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 娴佹按绠楁硶鐨勬湇鍔�
+ * @author weidy
+ * @date 2022-2-17
+ */
+@Service
+public class CodeSerialAlgorithmServiceImpl implements ICodeSerialAlgorithmService {
+    /**
+     * 鑾峰彇娴佹按绠楁硶鐨勫垪琛�
+     *
+     * @return 娴佹按绠楁硶鐨勪俊鎭�
+     */
+    @Override
+    public IPage<CodeSerialAlgorithmVO> gridSerialAlgorithm() {
+        //浣跨敤涓婚敭鍘绘壂鎻�
+        String[] beanNames = ApplicationContextProvider.getApplicationContext().getBeanNamesForAnnotation(MdmSerialAlgorithm.class);
+        List<CodeSerialAlgorithmVO> voList = new ArrayList<>();
+        if(beanNames!=null && beanNames.length>0){
+            for(String beanName : beanNames){
+                Object bean = ApplicationContextProvider.getApplicationContext().getBean(beanName);
+                if(bean!=null){
+                    CodeSerialAlgorithmVO algorithmVO = new CodeSerialAlgorithmVO();
+                    //Advised advised = (Advised)bean;
+					Class<?> targetClass = AopUtils.getTargetClass(bean);
+					//Class<?> targetClass = advised.getTargetSource().getTargetClass();
+                    algorithmVO.setClassFullName(targetClass.getName());
+                    MdmSerialAlgorithm serialAlgorithm = targetClass.getDeclaredAnnotation(MdmSerialAlgorithm.class);
+                    if(serialAlgorithm==null){
+                        serialAlgorithm = targetClass.getAnnotation(MdmSerialAlgorithm.class);
+                    }
+                    if(serialAlgorithm !=null) {
+                        algorithmVO.setName(serialAlgorithm.text());
+                        algorithmVO.setDescription(serialAlgorithm.description());
+                        algorithmVO.setId(serialAlgorithm.value());
+                        if(StringUtils.isBlank(algorithmVO.getId())){
+                            algorithmVO.setId(beanName);
+                        }
+                        voList.add(algorithmVO);
+                    }
+                }
+            }
+        }
+		Query query=new Query();
+		IPage<CodeSerialAlgorithmVO> queryIPage =Condition.getPage(query);
+		queryIPage.setRecords(voList);
+		return queryIPage;
+    }
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeBasicSecMapper.xml b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeBasicSecMapper.xml
index 38705c9..76c9657 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeBasicSecMapper.xml
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/resources/mapper/CodeBasicSecMapper.xml
@@ -55,6 +55,7 @@
         <result property="codeFillLimit" column="CODEFILLLIMIT" jdbcType="INTEGER"/>
         <result property="codeFillFlag" column="CODEFILLFLAG" jdbcType="VARCHAR"/>
         <result property="customCodeSerialClass" column="CUSTOMCODESERIALCLASS" jdbcType="VARCHAR"/>
+        <result property="customCodeSerialClassText" column="CUSTOMCODESERIALCLASSTEXT" jdbcType="VARCHAR"/>
         <result property="matchClassifyValueFlag" column="MATCHCLASSIFYVALUEFLAG" jdbcType="VARCHAR"/>
         <result property="parentClassifySecOid" column="PARENTCLASSIFYSECOID" jdbcType="VARCHAR"/>
         <result property="parentClassifySecText" column="b__name" jdbcType="VARCHAR"/>
@@ -123,6 +124,7 @@
             PL_CODE_BASICSEC.codelevelvalue,
             PL_CODE_BASICSEC.codefilllength,
             PL_CODE_BASICSEC.customcodeserialclass,
+            PL_CODE_BASICSEC.customCodeSerialClassText,
             PL_CODE_BASICSEC.matchclassifyvalueflag,
             PL_CODE_BASICSEC.sectype,
             PL_CODE_BASICSEC.pkcoderule,

--
Gitblit v1.9.3