From c892580371ef4679c858e2da98f71a9345aa3d80 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期五, 08 十二月 2023 10:37:20 +0800
Subject: [PATCH] 代码提交

---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java   |    4 
 Source/UBCS-WEB/src/components/Theme/ThemeAttrCrud.vue                                                         |    5 
 Source/UBCS-WEB/src/views/code/code.vue                                                                        |  226 +++++-----
 Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue                                                             |    5 
 Source/UBCS-WEB/src/views/modeling/LinkTypeAdd.vue                                                             |  745 +++++++++++++++++----------------
 Source/UBCS-WEB/src/components/FormTemplate/index.vue                                                          |    6 
 Source/UBCS-WEB/src/views/integration/systemInfo.vue                                                           |    3 
 Source/UBCS-WEB/src/views/ruleBasic/usableCharacter.vue                                                        |   94 ---
 Source/UBCS-WEB/src/views/modeling/originalAdd.vue                                                             |    5 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java         |   16 
 Source/UBCS-WEB/src/components/FormTemplate/FormTemplate.vue                                                   |  138 +++++
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java |   14 
 12 files changed, 671 insertions(+), 590 deletions(-)

diff --git a/Source/UBCS-WEB/src/components/FormTemplate/FormTemplate.vue b/Source/UBCS-WEB/src/components/FormTemplate/FormTemplate.vue
index 525f4f4..48a5f08 100644
--- a/Source/UBCS-WEB/src/components/FormTemplate/FormTemplate.vue
+++ b/Source/UBCS-WEB/src/components/FormTemplate/FormTemplate.vue
@@ -214,7 +214,7 @@
     },
     selectRow: {
       handler(newval) {
-        console.log(newval);
+        // console.log(newval);
         let ids = newval.map(item => item.id);
         this.selectValue = ids.join(",");
       },
@@ -240,7 +240,7 @@
       let slotColumnList = [];
       formItemList.forEach((formItem) => {
         formItem = this.resetFormConfig(formItem);
-        console.log(formItem)
+        // console.log(formItem)
         //灞炴�х爜娈佃鍒�
         if (formItem.secType === "codeattrsec") {
           this.attrList.push(formItem);
@@ -248,7 +248,6 @@
         //绯诲垪鍙疯鍒�
         if (formItem.field === "codeStandardEditType") {
           if (this.status === "amend") {
-            console.log("formItem-amend", formItem)
             formItem.readOnly = true;
           }
         }
@@ -402,7 +401,127 @@
     },
     //淇敼绾ц仈椤�
     changeChildItem(items, TreeValue, type) {
-      type = type || "add"
+      type = type || "add";
+      let column = this.option.column;
+      let group = this.option.group;
+      // let column = [];
+      // let group = [];
+      let that = this;
+      items.forEach((item) => {
+        let formItem = this.resetFormConfig(item);
+        if (formItem.field == "lcstatus") {
+          formItem.field = formItem.field + "_text";
+          formItem.readOnly = true;
+        }
+        // 璁剧疆琛ㄥ崟鏍¢獙鐨勮鍒欙紝鏂囨湰
+        let message = "璇烽�夋嫨";
+        let trigger = "change";
+        if (formItem.type === "text") {
+          message = "璇疯緭鍏�";
+          trigger = "blur";
+        }
+        let fieldMapKey = ''
+        if (formItem.type == "refer" && !formItem.fieldMap) {
+          fieldMapKey = formItem.field + 'Id'
+          formItem.fieldMap = {}
+          formItem.fieldMap[fieldMapKey] = 'id'
+          formItem.fieldMap[formItem.field + 'id'] = 'id'
+        }
+        let columnItem = {
+          label: formItem.text,
+          labelslot: true,
+          prop: this.$utilFunc.isValuableObj(formItem.referConfig)
+            ? formItem.showField || formItem.field
+            : formItem.field,
+          field: formItem.field,
+          type: this.columnType[formItem.type],
+          dicData: this.getDataList(formItem.type, formItem.data),
+          disabled: this.type === "detail" ? true : formItem.readOnly || (formItem.codeValueApplyStatus && formItem.codeValueApplyStatus == 2 ? true : false) ||
+            (this.status  ? (formItem.field === "reviseSeries" ? (formItem.value == 'false' ? true : false) : false) : false),
+          prepend: this.preOrSufFixShow("text", formItem.prefix),
+          append: this.preOrSufFixShow("text", formItem.suffix),
+          prefixIcon: this.preOrSufFixShow("icon", formItem.prefix),
+          suffixIcon: this.preOrSufFixShow("icon", formItem.suffix),
+          valueFormat: formItem.dateFormate || "yyyy-MM-dd HH:mm:ss",
+          format: formItem.dateFormate,
+          keyAttr: formItem.keyAttr,
+          value: formItem.defaultValue || (formItem.dicData && formItem.dicData.length > 0 && formItem.secType == "codefixedsec" ? formItem.dicData[0].id : null) ||
+            (formItem.secType == "codedatesec" ? formItem.codeDateValue : null) || (TreeValue && formItem.secType == "codelevelsec" ? TreeValue : null) ||
+            (formItem.secType == "codeattrsec" ? this.add : null) || (this.status === "apply" && formItem.field === "codeStandardEditType" ? "1" : null) ||
+            (this.status === "amend" && formItem.field === "codeStandardEditType" ? "2" : null) ||
+            //鐖剁粍浠跺鏋滄槸鍙傜収鏁版嵁浼氬皢selectRow缃┖,selectRow涓嶄负绌哄氨璇存槑涓嶆槸鍙傜収瑕佸洖濉簮鏍囧噯鍙锋暟鎹�
+            (this.status === "amend" ? (this.selectRow && (formItem.field === "oldcode" ? this.selectValue : null)) : null),
+          placeholder: formItem.inputTip,
+          comboxKey: formItem.comboxKey,
+          tip: formItem.tooltips,
+          display: !formItem.hidden,
+          maxlength: formItem.maxlength,
+          filterable: true,
+          referConfig:
+            formItem.type == "refer"
+              ? {
+                title: formItem.text,
+                showField: formItem.showField || formItem.field,
+                field: formItem.field,
+                fieldMap: formItem.fieldMap || {},
+                placeholder: formItem.inputTip,
+                options: formItem.referConfig
+              }
+              : {},
+          span: formItem.span
+            ? formItem.span
+            : formItem.type === "textarea"
+              ? 24
+              : this.localTrendsSpan,
+          rules: [
+            {
+              required: formItem.required,
+              message: `${message}${formItem.text}`,
+              trigger,
+            },
+            {
+              // 濡傛灉娌℃湁姝e垯鍒欏尮閰嶄换浣曞瓧绗�
+              pattern: formItem.verify ? formItem.verify : /[\s\S.]*/g,
+              message: formItem.tooltips,
+              trigger,
+            },
+          ],
+          props: {
+            label: "value",
+            value: "key",
+          },
+        };
+        if (group.length === 0) {
+          that.slotColumnList.forEach((colItem, index) => {
+            if (colItem.field == columnItem.field) {
+              that.slotColumnList[index] = columnItem;
+              column[index] = columnItem;
+              return;
+            }
+          })
+        } else {
+          that.slotColumnList.forEach((colItem, index) => {
+            if (colItem.field == columnItem.field) {
+              that.slotColumnList[index] = columnItem;
+              return;
+            }
+          })
+          group.forEach((groupItem, index) => {
+            groupItem.column.forEach((colItem, colIndex) => {
+              if (colItem.field == columnItem.field) {
+                group[index].column[colIndex] = columnItem;
+                return;
+              }
+            })
+          });
+        }
+      });
+      that.$set(that.option, "column", column);
+      that.$set(that.option, "group", group);
+    },
+    //鏍囧噯-淇
+    changeStatusItem(items, TreeValue, type) {
+      type = type || "add";
       // let column = this.option.column;
       // let group = this.option.group;
       let column = [];
@@ -437,7 +556,8 @@
           field: formItem.field,
           type: this.columnType[formItem.type],
           dicData: this.getDataList(formItem.type, formItem.data),
-          disabled: type === "detail" ? true : formItem.readOnly || (formItem.codeValueApplyStatus && formItem.codeValueApplyStatus == 2 ? true : false),
+          disabled: this.type === "detail" ? true : formItem.readOnly || (formItem.codeValueApplyStatus && formItem.codeValueApplyStatus == 2 ? true : false) ||
+            (this.status === 'amend' ? (formItem.field === "reviseSeries" ? (formItem.value == 'false' ? true : false) : false) : false),
           prepend: this.preOrSufFixShow("text", formItem.prefix),
           append: this.preOrSufFixShow("text", formItem.suffix),
           prefixIcon: this.preOrSufFixShow("icon", formItem.prefix),
@@ -445,15 +565,15 @@
           valueFormat: formItem.dateFormate || "yyyy-MM-dd HH:mm:ss",
           format: formItem.dateFormate,
           keyAttr: formItem.keyAttr,
-          value: (formItem.dicData && formItem.dicData.length > 0 && formItem.secType == "codefixedsec" ? formItem.dicData[0].id : null) ||
+          value: formItem.defaultValue || (formItem.dicData && formItem.dicData.length > 0 && formItem.secType == "codefixedsec" ? formItem.dicData[0].id : null) ||
             (formItem.secType == "codedatesec" ? formItem.codeDateValue : null) || (TreeValue && formItem.secType == "codelevelsec" ? TreeValue : null) ||
             (formItem.secType == "codeattrsec" ? this.add : null) || (this.status === "apply" && formItem.field === "codeStandardEditType" ? "1" : null) ||
-            (this.status === "amend" && formItem.field === "codeStandardEditType" ? "2" : null),
+            (this.status === "amend" && formItem.field === "codeStandardEditType" ? "2" : null) ||
+            //鐖剁粍浠跺鏋滄槸鍙傜収鏁版嵁浼氬皢selectRow缃┖,selectRow涓嶄负绌哄氨璇存槑涓嶆槸鍙傜収瑕佸洖濉簮鏍囧噯鍙锋暟鎹�
+            (this.status === "amend" ? (this.selectRow && (formItem.field === "oldcode" ? this.selectValue : null)) : null),
           placeholder: formItem.inputTip,
           comboxKey: formItem.comboxKey,
           tip: formItem.tooltips,
-          // hidden:formItem.secType && formItem.codeValueApplyStatus == 3 ? true : false,
-          // readonly:formItem.codeValueApplyStatus && formItem.codeValueApplyStatus == 2 ?true : false ,
           display: !formItem.hidden,
           maxlength: formItem.maxlength,
           filterable: true,
diff --git a/Source/UBCS-WEB/src/components/FormTemplate/index.vue b/Source/UBCS-WEB/src/components/FormTemplate/index.vue
index 6270458..a21e706 100644
--- a/Source/UBCS-WEB/src/components/FormTemplate/index.vue
+++ b/Source/UBCS-WEB/src/components/FormTemplate/index.vue
@@ -253,7 +253,7 @@
     openDialog() {
       //鏂板鍜屼慨鏀瑰叡鍚岃皟鐢�(鏈夋敼鍔� 涓嶉渶瑕佸湪浣跨敤edit锛屾柟娉曟病浠�涔堝奖鍝�)
       this.getFormTemplate();
-      if (this.type === "add" || (this.type !== "add" && this.status === "amend")) {
+      if (this.type === "add") {
         this.getCodeRule();
         return;
       }
@@ -359,7 +359,7 @@
         }
       })
       if (this.$refs.CodeApply) { // 娣诲姞涓�涓垽鏂鍙ワ紝妫�鏌ュ璞℃槸鍚︿负undefined
-        this.$refs.CodeApply.changeChildItem(this.secVOList, this.TreeValue, this.type);
+        this.$refs.CodeApply.changeStatusItem(this.secVOList, this.TreeValue, this.type);
       }
     },
     //骞翠唬鍙�
@@ -375,7 +375,7 @@
       });
 
       if (this.$refs.CodeApply) {
-        this.$refs.CodeApply.changeChildItem(this.secVOList, this.TreeValue, this.type);
+        this.$refs.CodeApply.changeStatusItem(this.secVOList, this.TreeValue, this.type);
       }
     },
     //灞炴�х爜娈佃祴鍊�
diff --git a/Source/UBCS-WEB/src/components/Theme/ThemeAttrCrud.vue b/Source/UBCS-WEB/src/components/Theme/ThemeAttrCrud.vue
index 0f83ebf..e874bdf 100644
--- a/Source/UBCS-WEB/src/components/Theme/ThemeAttrCrud.vue
+++ b/Source/UBCS-WEB/src/components/Theme/ThemeAttrCrud.vue
@@ -1718,7 +1718,10 @@
             attrTableWidth: 120,
             ts: ""
           })
-          this.ProData.push(JSON.parse(JSON.stringify(this.busineAddList)))
+          // 灏嗚嫳鏂囩紪鍙疯浆鎹负灏忓啓
+          let { id, ...res } = this.busineAddList;
+          this.busineAddList = { id: id.toLowerCase(), ...res };
+          this.ProData.push(JSON.parse(JSON.stringify(this.busineAddList)));
         }
       })
       this.addVisible = false;
diff --git a/Source/UBCS-WEB/src/views/code/code.vue b/Source/UBCS-WEB/src/views/code/code.vue
index e5f4d23..03b6b62 100644
--- a/Source/UBCS-WEB/src/views/code/code.vue
+++ b/Source/UBCS-WEB/src/views/code/code.vue
@@ -220,107 +220,107 @@
 
     <!-- 鍩虹鐮佹灞曠ず鍖哄煙 -->
     <basic-container class="code-basicsec-container">
-    <div style="height: 38.5vh;overflow: auto">
-      <p
-        style="margin-top: -5px;
+      <div style="height: 38.5vh;overflow: auto">
+        <p
+          style="margin-top: -5px;
           margin-bottom: 4px;
           font-weight: 570;
           font-size: 19px;
           color: #0e2d5f;">
-        鐮佹绠$悊
-      </p>
-      <avue-crud
-        ref="crudBasic"
-        :data="basicData"
-        :option="optionBasic"
-        :permission="basicPermissionList"
-        :table-loading="loadingBasic"
-        class="code-basic-crud"
-        @row-click="codeBasicSecRowClick"
-        @search-change="basicSearchChange"
-        @search-reset="basicSearchReset"
-        @selection-change="selectionBasicChange"
-        @refresh-change="refreshChangeBasicSec"
-      >
-        <!-- 鍩虹鐮佹琛ㄦ牸鍐呮搷浣滄寜閽� -->
-        <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)"
-          >鏌ョ湅
-          </el-button>
-          <el-button v-if="basicPermissionList.editBtn && currentRuleLcStatus === 'Editing'"
-                     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')"
-            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)"
-          >涓婄Щ
-          </el-button>
-          <el-button v-if="basicPermissionList.basicDownBtn"
-                     icon="el-icon-arrow-down"
-                     plain
-                     size="small"
-                     type="text"
-                     @click="downOrderNum(scope.row)"
-          >涓嬬Щ
-          </el-button>
-        </template>
+          鐮佹绠$悊
+        </p>
+        <avue-crud
+          ref="crudBasic"
+          :data="basicData"
+          :option="optionBasic"
+          :permission="basicPermissionList"
+          :table-loading="loadingBasic"
+          class="code-basic-crud"
+          @row-click="codeBasicSecRowClick"
+          @search-change="basicSearchChange"
+          @search-reset="basicSearchReset"
+          @selection-change="selectionBasicChange"
+          @refresh-change="refreshChangeBasicSec"
+        >
+          <!-- 鍩虹鐮佹琛ㄦ牸鍐呮搷浣滄寜閽� -->
+          <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)"
+            >鏌ョ湅
+            </el-button>
+            <el-button v-if="basicPermissionList.editBtn && currentRuleLcStatus === 'Editing'"
+                       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')"
+              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)"
+            >涓婄Щ
+            </el-button>
+            <el-button v-if="basicPermissionList.basicDownBtn"
+                       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"
-          >
-            鏂� 澧�
-          </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)"
-          >
-            鍒� 闄�
-          </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>
-        </template>
-      </avue-crud>
-    </div>
+          <!-- 鍩虹鐮佹琛ㄦ牸宸︿笂鏂规寜閽尯鍩� -->
+          <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"
+            >
+              鏂� 澧�
+            </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)"
+            >
+              鍒� 闄�
+            </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>
+          </template>
+        </avue-crud>
+      </div>
     </basic-container>
 
     <!-- 鐮佹鐮佸�肩鐞嗗璇濇 -->
@@ -592,7 +592,7 @@
     >
       <!--  绗竴灞傚璇濇,娣诲姞鐮佹淇℃伅瀵硅瘽妗嗕腑鐨勫唴瀹� -->
       <div class="add-basicsec-total">
-        <el-form :model="form" class="add-basicsec-form" :rules="rules" >
+        <el-form :model="form" :rules="rules" class="add-basicsec-form">
           <span class="left">
             <el-form-item
               :label-width="leftFormLabelWidth"
@@ -888,11 +888,11 @@
                   <template>
                       <vciWebRefer
                         ref="refer"
-                        :referConfig="this.referConfig || {}"
                         :display="true"
-                        :value="form.customCodeSerialClass"
-                        :text="form.customCodeSerialClassText"
+                        :referConfig="this.referConfig || {}"
                         :serialType="form.serialType"
+                        :text="form.customCodeSerialClassText"
+                        :value="form.customCodeSerialClass"
                         @setReferValue="setReferValue"
                       ></vciWebRefer>
                   </template>
@@ -1028,9 +1028,9 @@
             <!-- 鏃ユ湡鐮佹 -->
             <div v-show="form.secType === 'codedatesec' ? true : false">
               <el-form-item
-                prop="Dateformat"
                 :label-width="rightFormLabelWidth"
                 label="鏃ユ湡鏍煎紡:"
+                prop="Dateformat"
               >
                 <el-input
                   ref="codeDateFormatStr"
@@ -1348,7 +1348,7 @@
 import vciWebRefer from "../../components/refer/vciWebRefer";
 
 export default {
-  components: { vciWebRefer },
+  components: {vciWebRefer},
   data() {
     return {
       rules: {
@@ -1357,7 +1357,7 @@
             required: true,
             trigger: 'blur',
             validator: (rule, value, callback) => {
-              const Formats = ['yy', 'yyyy', 'yyyy-MM', 'yy-MM', 'yyyy-MM-dd','yy-MM-dd', 'yyyy-MM-dd HH:mm:ss', 'yy-MM-dd HH:mm:ss', 'HH:mm:ss'];
+              const Formats = ['yy', 'yyyy', 'yyyy-MM', 'yy-MM', 'yyyy-MM-dd', 'yy-MM-dd', 'yyyy-MM-dd HH:mm:ss', 'yy-MM-dd HH:mm:ss', 'HH:mm:ss'];
               if (!Formats.includes(this.form.codeDateFormatStr)) {
                 return callback(new Error('璇疯緭鍏ユ纭棩鏈熸牸寮忥紝渚嬪yyyy-MM-dd锛堝苟鍖哄垎澶у皬鍐欙級锛�'));
               }
@@ -1366,19 +1366,19 @@
           }
         ]
       },
-      referConfig:{
+      referConfig: {
         title: '鑷畾涔夋祦姘村弬鐓�',
         showField: 'customCodeSerialClassText',
         field: 'customCodeSerialClass',
-        fieldMap:  {
-          serialType:"serialType"
+        fieldMap: {
+          serialType: "serialType"
         },
-        placeholder:'璇烽�夋嫨鑷畾涔夋祦姘�',
-        options:   {
+        placeholder: '璇烽�夋嫨鑷畾涔夋祦姘�',
+        options: {
           // 璁剧疆榛樿鐨勫睘鎬�
           url: 'api/ubcs-code/codeSerialAlgorithmController/gridCodeSerialAlgorithm',
-          textField:'name',
-          valueField:'classFullName',
+          textField: 'name',
+          valueField: 'classFullName',
           isMuti: false,
           type: "grid",
           method: 'get',
@@ -1720,8 +1720,8 @@
   },
   methods: {
     //鑷畾涔夋祦姘村け鐒�
-    setReferValue(data){
-      if(data.field){
+    setReferValue(data) {
+      if (data.field) {
         this.form[data.field] = data.value || "";
         this.form[data.showField] = data.text || "";
         this.form.serialType = data.rawData[0].serialType || "";
@@ -2784,7 +2784,7 @@
       }
       //console.log(this.form);
       //涓篺orm缁戝畾鍊�
-      this.changeSectypeFormItems(condition == "add" ? null:row);
+      this.changeSectypeFormItems(condition == "add" ? null : row);
       this.addBasicCodeSettingBox = true;
     },
     /** 鏂板鍩虹鐮佹*/
diff --git a/Source/UBCS-WEB/src/views/integration/systemInfo.vue b/Source/UBCS-WEB/src/views/integration/systemInfo.vue
index 56d9cd9..d7707ef 100644
--- a/Source/UBCS-WEB/src/views/integration/systemInfo.vue
+++ b/Source/UBCS-WEB/src/views/integration/systemInfo.vue
@@ -1,6 +1,7 @@
 <template>
   <basic-container>
-    <avue-crud ref="crud" :data="data" :option="option" :page.sync="page" :permission="permissionList" :search.sync="search"
+    <avue-crud ref="crud" :data="data" :option="option" :page.sync="page" :permission="permissionList"
+               :search.sync="search"
                :table-loading="loading"
                @on-load="getDataList" @row-save="handleSave" @row-del="handleDelete" @row-update="handleEdit"
                @refresh-change="handleRefresh" @size-change="handleSizePage" @current-change="handleCurrentPage"
diff --git a/Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue b/Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue
index 5cb22bb..c2b4b6f 100644
--- a/Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue
+++ b/Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue
@@ -11,7 +11,7 @@
     <el-form ref="form" :model="btmType" show-message="true" inline size="medium" label-suffix=":" class="btmTypeForm"
              :rules="rules" @resetFields="resetForm" status-icon="true">
       <el-form-item label="鑻辨枃鍚嶇О" label-width="100px" required="true" prop="id">
-        <el-input v-model="btmType.id" :prefix-icon="icons.key" :disabled="true"></el-input>
+        <el-input v-model="btmType.id" :prefix-icon="icons.key" :disabled="Object.keys(this.btmType).length !== 0 "></el-input>
       </el-form-item>
       <el-form-item label="涓枃鍚嶇О" label-width="100px">
         <el-input v-model="btmType.name" :prefix-icon="icons.name"></el-input>
@@ -191,7 +191,8 @@
   name: 'BusinessAdd',
   props: {
     btmType: {
-      type: Object
+      type: Object,
+      default:{}
     },
     domainOption: {
       type: Array
diff --git a/Source/UBCS-WEB/src/views/modeling/LinkTypeAdd.vue b/Source/UBCS-WEB/src/views/modeling/LinkTypeAdd.vue
index 41d5d56..8f1dce1 100644
--- a/Source/UBCS-WEB/src/views/modeling/LinkTypeAdd.vue
+++ b/Source/UBCS-WEB/src/views/modeling/LinkTypeAdd.vue
@@ -1,394 +1,409 @@
 <template>
-    <el-dialog title="閾炬帴绫诲瀷" :visible.sync="showSubmitDialog" append-to-body @close="closeSubmitDialog" width="70%"  top="6vh"
-        style="height: 115vh;">
-        <el-form ref="form" :model="linkType" show-message="true" inline size="medium" label-suffix=":"
-            class="linkTypeForm" :rules="rules" @resetFields="resetForm" status-icon="true">
-            <el-form-item label="鑻辨枃鍚嶇О" label-width="100px" required="true" prop="id">
-                <el-input v-model="linkType.id" :prefix-icon="icons.id" maxlength="15" show-word-limit type="text"></el-input>
-            </el-form-item>
-            <el-form-item label="涓枃鍚嶇О" label-width="100px">
-                <el-input v-model="linkType.name" :prefix-icon="icons.name"></el-input>
-            </el-form-item>
-            <el-form-item label="鏁版嵁搴撹〃鍚�" label-width="100px">
-                <el-input v-model="linkType.tableName" :prefix-icon="icons.tableName"></el-input>
-            </el-form-item>
-            <el-form-item label="鎵�灞為鍩�" label-width="100px" prop="domain">
-                <el-select v-model="linkType.domain" :prefix-icon="icons.domain">
-                    <el-option v-for="item in domainOption" :label="item.label" :value="item.value"
-                        :key="item.value"></el-option>
-                </el-select>
-            </el-form-item>
-            <el-form-item label="From绔被鍨�" label-width="100px">
-                <!-- from绔笟鍔$被鍨嬮�夋嫨 -->
-                <el-select v-model="linkType.fromBtmValues" :value="linkType.fromBtmTypes" value-key="oid" placeholder="璇烽�夋嫨From绔被鍨�" filterable multiple collapse-tags @change="fromSelectChange">
-                    <el-option-group v-for="domain in domainList" :key="domain.id" :label="domain.name">
-                        <el-option v-for="item in domain.childList" :key="item.oid" :label="item.id + item.name"
-                            :value="item">
-                        </el-option>
-                    </el-option-group>
-                </el-select>
-            </el-form-item>
-            <el-form-item label="To绔被鍨�" label-width="100px">
-                <!-- to绔笟鍔$被鍨嬮�夋嫨 -->
-                <el-select v-model="linkType.toBtmValues" :value="linkType.toBtmTypes" value-key="oid" placeholder="璇烽�夋嫨To绔被鍨�" filterable multiple collapse-tags @change="toSelectChange">
-                    <el-option-group v-for="domain in domainList" :key="domain.id" :label="domain.name">
-                        <el-option v-for="item in domain.childList" :key="item.oid" :label="item.id + item.name"
-                            :value="item">
-                        </el-option>
-                    </el-option-group>
-                </el-select>
-            </el-form-item>
-            <el-form-item label="鎻忚堪" label-width="100px" class="description">
-                <el-input v-model="linkType.description" :prefix-icon="icons.desc" class="descClass" id="descId"></el-input>
-            </el-form-item>
-        </el-form>
-        <avue-crud :option="option" :data="linkType.attributes" :page.sync="page" ref="attrTable"
-            @cell-mouse-enter="cellEditClick" @cell-mouse-leave="cellEditSave">
-            <template slot-scope="scope" slot="menuLeft">
-                <el-button type="danger" icon="el-icon-plus" size="small" @click="rowAdd()">灞炴�ч�夋嫨</el-button>
-            </template>
+  <el-dialog :visible.sync="showSubmitDialog" append-to-body style="height: 115vh;" title="閾炬帴绫诲瀷" top="6vh"
+             width="70%"
+             @close="closeSubmitDialog">
+    <el-form ref="form" :model="linkType" :rules="rules" class="linkTypeForm" inline label-suffix=":"
+             show-message="true" size="medium" status-icon="true" @resetFields="resetForm">
+      <el-form-item label="鑻辨枃鍚嶇О" label-width="100px" prop="id" required="true">
+        <el-input v-model="linkType.id" :disabled="this.linkType.hasOwnProperty('id')" :prefix-icon="icons.id" maxlength="15" show-word-limit
+                  type="text"></el-input>
+      </el-form-item>
+      <el-form-item label="涓枃鍚嶇О" label-width="100px">
+        <el-input v-model="linkType.name" :prefix-icon="icons.name"></el-input>
+      </el-form-item>
+      <el-form-item label="鏁版嵁搴撹〃鍚�" label-width="100px">
+        <el-input v-model="linkType.tableName" :prefix-icon="icons.tableName"></el-input>
+      </el-form-item>
+      <el-form-item label="鎵�灞為鍩�" label-width="100px" prop="domain">
+        <el-select v-model="linkType.domain" :prefix-icon="icons.domain">
+          <el-option v-for="item in domainOption" :key="item.value" :label="item.label"
+                     :value="item.value"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="From绔被鍨�" label-width="100px">
+        <!-- from绔笟鍔$被鍨嬮�夋嫨 -->
+        <el-select v-model="linkType.fromBtmValues" :value="linkType.fromBtmTypes" collapse-tags
+                   filterable multiple placeholder="璇烽�夋嫨From绔被鍨�" value-key="oid" @change="fromSelectChange">
+          <el-option-group v-for="domain in domainList" :key="domain.id" :label="domain.name">
+            <el-option v-for="item in domain.childList" :key="item.oid" :label="item.id + item.name"
+                       :value="item">
+            </el-option>
+          </el-option-group>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="To绔被鍨�" label-width="100px">
+        <!-- to绔笟鍔$被鍨嬮�夋嫨 -->
+        <el-select v-model="linkType.toBtmValues" :value="linkType.toBtmTypes" collapse-tags filterable
+                   multiple placeholder="璇烽�夋嫨To绔被鍨�" value-key="oid" @change="toSelectChange">
+          <el-option-group v-for="domain in domainList" :key="domain.id" :label="domain.name">
+            <el-option v-for="item in domain.childList" :key="item.oid" :label="item.id + item.name"
+                       :value="item">
+            </el-option>
+          </el-option-group>
+        </el-select>
+      </el-form-item>
+      <el-form-item class="description" label="鎻忚堪" label-width="100px">
+        <el-input id="descId" v-model="linkType.description" :prefix-icon="icons.desc" class="descClass"></el-input>
+      </el-form-item>
+    </el-form>
+    <avue-crud ref="attrTable" :data="linkType.attributes" :option="option" :page.sync="page"
+               @cell-mouse-enter="cellEditClick" @cell-mouse-leave="cellEditSave">
+      <template slot="menuLeft" slot-scope="scope">
+        <el-button icon="el-icon-plus" size="small" type="danger" @click="rowAdd()">灞炴�ч�夋嫨</el-button>
+      </template>
 
-        </avue-crud>
-        <div slot="footer" class="dialog-footer">
-            <el-button type="primary" @click="submitlinkType">纭畾</el-button>
-            <el-button @click="cancleSubmitlinkType">鍙栨秷</el-button>
-        </div>
+    </avue-crud>
+    <div slot="footer" class="dialog-footer">
+      <el-button type="primary" @click="submitlinkType">纭畾</el-button>
+      <el-button @click="cancleSubmitlinkType">鍙栨秷</el-button>
+    </div>
 
-        <!-- 灞炴�ф睜鐨勯�夋嫨 -->
-        <el-dialog title="灞炴�ф睜" :visible="attrRef.visible" append-to-body @close="closeAttrDialog" width="80%">
-            <avue-crud class="attrRef" :option="attrRef.option" :data="attrRef.data" :page.sync="attrRef.page" ref="attrRef"
-                @on-load="attrRefOnLoad" @search-change="attrRefSearch" @selection-change="selectionChange">
-                <template slot="typeValue" slot-scope="scope">
-                    <el-tag>{{ scope.row.typeValue }}</el-tag>
-                </template>
-            </avue-crud>
-            <div slot="footer" class="dialog-footer">
-                <el-button @click="confirmSelectAttr">纭畾</el-button>
-                <el-button @click="cancleSelectAttr">鍙栨秷</el-button>
-            </div>
-        </el-dialog>
-
+    <!-- 灞炴�ф睜鐨勯�夋嫨 -->
+    <el-dialog :visible="attrRef.visible" append-to-body title="灞炴�ф睜" width="80%" @close="closeAttrDialog">
+      <avue-crud ref="attrRef" :data="attrRef.data" :option="attrRef.option" :page.sync="attrRef.page" class="attrRef"
+                 @on-load="attrRefOnLoad" @search-change="attrRefSearch" @selection-change="selectionChange">
+        <template slot="typeValue" slot-scope="scope">
+          <el-tag>{{ scope.row.typeValue }}</el-tag>
+        </template>
+      </avue-crud>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="confirmSelectAttr">纭畾</el-button>
+        <el-button @click="cancleSelectAttr">鍙栨秷</el-button>
+      </div>
     </el-dialog>
+
+  </el-dialog>
 </template>
 
 
 <script>
 
-import { add, update } from '@/api/omd/linkType';
-import { queryPage } from '@/api/omd/OmdAttribute';
-import { getPage } from '@/api/omd/revisionRule';
-import { initTree } from "@/api/omd/btmType"
-export default {
-    name: 'LinkTypeAdd',
-    props: {
-        linkType: {
-            type: Object
-        },
-        domainOption: {
-            type: Array
-        },
-        icons: {
-            type: Array
-        }
-    },
-    data() {
-        return {
-            form: {},
-            showSubmitDialog: false,
-            option: {
-                height: "330px",
-                tip:false,
-                selection: true,
-                headerAlign: 'center',
-                border: true,
-                index: true,
-                rowKey: 'id',
-                tabs: true,
-                menu: false,
-                addBtn: false,
-                highlightCurrentRow: true,
-                column: [
-                    {
-                        label: '鑻辨枃鍚嶇О',
-                        prop: 'id',
-                        align: 'center'
-                    }, {
-                        label: '涓枃鍚嶇О',
-                        prop: 'name',
-                        align: 'center',
-                        cell: true
-                    },
-                    {
-                        label: '绫诲瀷',
-                        prop: 'attrDataType',
-                        align: 'center',
-                        slot: true
-                    },
-                    {
-                        label: '榛樿鍊�',
-                        prop: 'defaultValue',
-                        align: 'center',
-                        cell: true
-                    },
-                    {
-                        label: '璇存槑',
-                        prop: 'description',
-                        align: 'center',
-                        cell: true
-                    }
-                ]
-            },
-            attrRef: {
-                visible: false,
-                page: {
-                    currentPage: 1,
-                    pageSize: 10,
-                },
-                key: null,
-                option: {
-                    height: 360,
-                    addBtn: false,
-                    refreshBtn: false,
-                    columnBtn: false,
-                    selection: true,
-                    menu: false,
-                    border: true,
-                    reserveSelection: true,
-                    searchMenuSpan: 8,
-                    highlightCurrentRow: true,
-                    column: [
-                        {
-                            label: '鑻辨枃鍚嶇О',
-                            prop: 'id',
-                            align: 'left',
-                            search: true,
-                            width: 230
-                        }, {
-                            label: '涓枃鍚嶇О',
-                            prop: 'name',
-                            align: 'center',
-                        },
-                        {
-                            label: '绫诲瀷',
-                            prop: 'typeValue',
-                            align: 'center'
-                        },
-                        {
-                            label: '榛樿鍊�',
-                            prop: 'defaultValue',
-                            align: 'center'
-                        },
-                        {
-                            label: '鍏佽涓虹┖',
-                            prop: 'nullable',
-                            type: 'switch',
-                            display: false,
-                            hide: true,
-                            labelWidth: 132,
-                            dicData: [{
-                                label: '鍚�',
-                                value: 1
-                            }, {
-                                label: '鏄�',
-                                value: 0
-                            }]
-                        },
-                        {
-                            label: '璇存槑',
-                            prop: 'description',
-                            cell: true,
-                            align: 'center'
-                        }
-                    ]
-                },
-                data: [],
-                queryNotIn: null
-            },
-            fromBtmValues: [],
-            toBtmValues: [],
-            domainList: [],
-            rules: {
-                id: [
-                    { required: true, message: '璇疯緭鍏ラ摼鎺ョ被鍨嬬紪鍙�', trigger: 'blur' },
-                    { pattern: /^[A-Za-z]+$/, message: '閾炬帴绫诲瀷缂栧彿鍙兘涓鸿嫳鏂�', trigger: 'blur' },
-                    { min: 2, max: 15, message: '闀垮害鍦�2鍒�15涓瓧绗�', trigger: 'blur' }
-                ],
-                domain: [
-                    { required: true, message: '璇烽�夋嫨鎵�灞為鍩�', trigger: 'blur' }
-                ]
-            },
-        }
-    },
-    created() {
-        this.initTreeOnLoad();
-    },
-    methods: {
-        // 鍏抽棴缁勪欢寮圭獥
-        closeSubmitDialog() {
-            this.showSubmitDialog = false;
-            this.linkType.attributes = [];
-            this.linkType = {};
-            this.attrRef.selectData = [];
-            this.attrRef.queryNotIn = null;
-            this.resetForm();
-        },
-        // 鍏抽棴灞炴�ф睜鏌ヨ寮圭獥
-        closeAttrDialog() {
-            this.attrRef.visible = false;
-        },
-        initTreeOnLoad() {
-            initTree().then(res => {
-                this.domainList = res.data.data;
-            });
-        },
-        // 娣诲姞
-        rowAdd() {
-            this.attrRef.visible = true;
-            this.attrRefOnLoad();
-        },
-        // 灞炴�ф睜鍔犺浇
-        attrRefOnLoad() {
-            queryPage(this.attrRef.key, this.attrRef.queryNotIn, this.attrRef.page.currentPage, this.attrRef.page.pageSize).then(res => {
-                const data = res.data.data;
-                this.attrRef.page.total = data.total;
-                this.attrRef.data = data.records;
-            });
-            this.$nextTick(() => {
-                this.$refs.attrRef.refreshTable();
-            });
-        },
-        // 灞炴�ф睜妫�绱�
-        attrRefSearch(form, done) {
-            this.attrRef.key = form.key
-            this.attrRefOnLoad();
-            done();
-            this.attrRef.key = null;
-        },
-        // 灞炴�ф睜鍕鹃�変簨浠�
-        selectionChange(list) {
-            this.attrRef.selectData = list;
-        },
-        // 纭灞炴�ф睜鍕鹃��
-        confirmSelectAttr() {
-            if(!this.linkType.attributes){
-                this.linkType.attributes = [];
-            }
-            this.attrRef.queryNotIn = "";
-            console.log(this.attrRef.selectData);
-            this.attrRef.selectData.forEach(item => {
-                this.linkType.attributes.push({
-                    id: item.id,
-                    name: item.name,
-                    typeValue: item.typeValue,
-                    typeKey: item.typeValue,
-                    attrDataType: item.typeKey,
-                    defaultValue: item.defaultValue,
-                    description: item.description,
-                    attributeLength: item.maxLength
-                });
-                this.attrRef.queryNotIn += (item.id + ",")
-            });
-            this.closeAttrDialog();
-        },
-        // 鍙栨秷灞炴�ф睜鍕鹃��
-        cancleSelectAttr() {
-            this.attrRef.selectData = [];
-            this.closeAttrDialog();
-        },
-        // 娣诲姞涓氬姟绫诲瀷
-        submitlinkType() {
-            add(this.linkType, true).then(res => {
-                // 娣诲姞瀹屾垚锛屽洖璋冪埗缁勪欢鐨勫埛鏂�
-                this.$message.success('淇濆瓨鎴愬姛');
-                this.cancleSubmitlinkType();
-                this.$emit('refreshTable');
-            })
-        },
-        // 鍙栨秷娣诲姞涓氬姟绫诲瀷
-        cancleSubmitlinkType() {
-            this.linkType = {};
-            this.linkType.attributes = [];
-            this.showSubmitDialog = false;
-        },
-        // 鍒锋柊灞炴�у垪琛�
-        refreshAttrTable() {
-            this.$nextTick(() => {
-                this.$refs.attrTable.refreshTable();
-            })
-        },
-        //
-        viewChange() {
+import {add, update} from '@/api/omd/linkType';
+import {queryPage} from '@/api/omd/OmdAttribute';
+import {getPage} from '@/api/omd/revisionRule';
+import {initTree} from "@/api/omd/btmType"
 
-        },
-        // 鍒楄〃缂栬緫
-        cellEditClick(cell) {
-            cell.$cellEdit = true;
-        },
-        // 鍒楄〃缂栬緫淇濆瓨
-        cellEditSave(row) {
-            this.linkType.attributes[row.$index].name = row.name
-            this.linkType.attributes[row.$index].defaultValue = row.defaultValue;
-            this.linkType.attributes[row.$index].description = row.description;
-            row.$cellEdit = false;
-        },
-        fromSelectChange(dataList){
-            console.log(dataList);
-            this.linkType.fromBtmTypes = [];
-            var fromBtmName = "";
-            var fromBtmType = "";
-            dataList.forEach(data => {
-                //this.linkType.fromBtmTypes.push(data);
-                fromBtmName += (data.name + ',');
-                fromBtmType += (data.id + ',');
-            })
-            this.linkType.fromBtmTypeName = fromBtmName;
-            this.linkType.fromBtmType = fromBtmType;
-            console.log(this.linkType);
-        },
-        toSelectChange(dataList){
-            console.log(dataList);
-            this.linkType.toBtmTypes = [];
-            var toBtmName = "";
-            var toBtmType = "";
-            dataList.forEach(data => {
-                //this.linkType.toBtmTypes.push(data);
-                toBtmName += (data.name + ',');
-                toBtmType += (data.id + ',');
-            })
-            this.linkType.toBtmTypeName = toBtmName;
-            this.linkType.toBtmType = toBtmType;
-            console.log(this.linkType);
-        },
-        resetForm(){
-            this.linkType = {};
-            this.$refs.form.resetFields();
-        }
+export default {
+  name: 'LinkTypeAdd',
+  props: {
+    linkType: {
+      type: Object,
+      default: {}
+    },
+    domainOption: {
+      type: Array
+    },
+    icons: {
+      type: Array
     }
+  },
+  watch: {
+    linkType:{
+      handler(newval){
+        // console.log(newval);
+        // console.log( newval.hasOwnProperty('id'))
+      }
+    }
+  },
+  data() {
+    return {
+      form: {},
+      showSubmitDialog: false,
+      option: {
+        height: "330px",
+        tip: false,
+        selection: true,
+        headerAlign: 'center',
+        border: true,
+        index: true,
+        rowKey: 'id',
+        tabs: true,
+        menu: false,
+        addBtn: false,
+        highlightCurrentRow: true,
+        column: [
+          {
+            label: '鑻辨枃鍚嶇О',
+            prop: 'id',
+            align: 'center'
+          }, {
+            label: '涓枃鍚嶇О',
+            prop: 'name',
+            align: 'center',
+            cell: true
+          },
+          {
+            label: '绫诲瀷',
+            prop: 'attrDataType',
+            align: 'center',
+            slot: true
+          },
+          {
+            label: '榛樿鍊�',
+            prop: 'defaultValue',
+            align: 'center',
+            cell: true
+          },
+          {
+            label: '璇存槑',
+            prop: 'description',
+            align: 'center',
+            cell: true
+          }
+        ]
+      },
+      attrRef: {
+        visible: false,
+        page: {
+          currentPage: 1,
+          pageSize: 10,
+        },
+        key: null,
+        option: {
+          height: 360,
+          addBtn: false,
+          refreshBtn: false,
+          columnBtn: false,
+          selection: true,
+          menu: false,
+          border: true,
+          reserveSelection: true,
+          searchMenuSpan: 8,
+          highlightCurrentRow: true,
+          column: [
+            {
+              label: '鑻辨枃鍚嶇О',
+              prop: 'id',
+              align: 'left',
+              search: true,
+              width: 230
+            }, {
+              label: '涓枃鍚嶇О',
+              prop: 'name',
+              align: 'center',
+            },
+            {
+              label: '绫诲瀷',
+              prop: 'typeValue',
+              align: 'center'
+            },
+            {
+              label: '榛樿鍊�',
+              prop: 'defaultValue',
+              align: 'center'
+            },
+            {
+              label: '鍏佽涓虹┖',
+              prop: 'nullable',
+              type: 'switch',
+              display: false,
+              hide: true,
+              labelWidth: 132,
+              dicData: [{
+                label: '鍚�',
+                value: 1
+              }, {
+                label: '鏄�',
+                value: 0
+              }]
+            },
+            {
+              label: '璇存槑',
+              prop: 'description',
+              cell: true,
+              align: 'center'
+            }
+          ]
+        },
+        data: [],
+        queryNotIn: null
+      },
+      fromBtmValues: [],
+      toBtmValues: [],
+      domainList: [],
+      rules: {
+        id: [
+          {required: true, message: '璇疯緭鍏ラ摼鎺ョ被鍨嬬紪鍙�', trigger: 'blur'},
+          {pattern: /^[A-Za-z]+$/, message: '閾炬帴绫诲瀷缂栧彿鍙兘涓鸿嫳鏂�', trigger: 'blur'},
+          {min: 2, max: 15, message: '闀垮害鍦�2鍒�15涓瓧绗�', trigger: 'blur'}
+        ],
+        domain: [
+          {required: true, message: '璇烽�夋嫨鎵�灞為鍩�', trigger: 'blur'}
+        ]
+      },
+    }
+  },
+  created() {
+    this.initTreeOnLoad();
+  },
+  methods: {
+    // 鍏抽棴缁勪欢寮圭獥
+    closeSubmitDialog() {
+      this.showSubmitDialog = false;
+      this.linkType.attributes = [];
+      this.linkType = {};
+      this.attrRef.selectData = [];
+      this.attrRef.queryNotIn = null;
+      this.resetForm();
+    },
+    // 鍏抽棴灞炴�ф睜鏌ヨ寮圭獥
+    closeAttrDialog() {
+      this.attrRef.visible = false;
+    },
+    initTreeOnLoad() {
+      initTree().then(res => {
+        this.domainList = res.data.data;
+      });
+    },
+    // 娣诲姞
+    rowAdd() {
+      this.attrRef.visible = true;
+      this.attrRefOnLoad();
+    },
+    // 灞炴�ф睜鍔犺浇
+    attrRefOnLoad() {
+      queryPage(this.attrRef.key, this.attrRef.queryNotIn, this.attrRef.page.currentPage, this.attrRef.page.pageSize).then(res => {
+        const data = res.data.data;
+        this.attrRef.page.total = data.total;
+        this.attrRef.data = data.records;
+      });
+      this.$nextTick(() => {
+        this.$refs.attrRef.refreshTable();
+      });
+    },
+    // 灞炴�ф睜妫�绱�
+    attrRefSearch(form, done) {
+      this.attrRef.key = form.key
+      this.attrRefOnLoad();
+      done();
+      this.attrRef.key = null;
+    },
+    // 灞炴�ф睜鍕鹃�変簨浠�
+    selectionChange(list) {
+      this.attrRef.selectData = list;
+    },
+    // 纭灞炴�ф睜鍕鹃��
+    confirmSelectAttr() {
+      if (!this.linkType.attributes) {
+        this.linkType.attributes = [];
+      }
+      this.attrRef.queryNotIn = "";
+      console.log(this.attrRef.selectData);
+      this.attrRef.selectData.forEach(item => {
+        this.linkType.attributes.push({
+          id: item.id,
+          name: item.name,
+          typeValue: item.typeValue,
+          typeKey: item.typeValue,
+          attrDataType: item.typeKey,
+          defaultValue: item.defaultValue,
+          description: item.description,
+          attributeLength: item.maxLength
+        });
+        this.attrRef.queryNotIn += (item.id + ",")
+      });
+      this.closeAttrDialog();
+    },
+    // 鍙栨秷灞炴�ф睜鍕鹃��
+    cancleSelectAttr() {
+      this.attrRef.selectData = [];
+      this.closeAttrDialog();
+    },
+    // 娣诲姞涓氬姟绫诲瀷
+    submitlinkType() {
+      add(this.linkType, true).then(res => {
+        // 娣诲姞瀹屾垚锛屽洖璋冪埗缁勪欢鐨勫埛鏂�
+        this.$message.success('淇濆瓨鎴愬姛');
+        this.cancleSubmitlinkType();
+        this.$emit('refreshTable');
+      })
+    },
+    // 鍙栨秷娣诲姞涓氬姟绫诲瀷
+    cancleSubmitlinkType() {
+      this.linkType = {};
+      this.linkType.attributes = [];
+      this.showSubmitDialog = false;
+    },
+    // 鍒锋柊灞炴�у垪琛�
+    refreshAttrTable() {
+      this.$nextTick(() => {
+        this.$refs.attrTable.refreshTable();
+      })
+    },
+    //
+    viewChange() {
+
+    },
+    // 鍒楄〃缂栬緫
+    cellEditClick(cell) {
+      cell.$cellEdit = true;
+    },
+    // 鍒楄〃缂栬緫淇濆瓨
+    cellEditSave(row) {
+      this.linkType.attributes[row.$index].name = row.name
+      this.linkType.attributes[row.$index].defaultValue = row.defaultValue;
+      this.linkType.attributes[row.$index].description = row.description;
+      row.$cellEdit = false;
+    },
+    fromSelectChange(dataList) {
+      console.log(dataList);
+      this.linkType.fromBtmTypes = [];
+      var fromBtmName = "";
+      var fromBtmType = "";
+      dataList.forEach(data => {
+        //this.linkType.fromBtmTypes.push(data);
+        fromBtmName += (data.name + ',');
+        fromBtmType += (data.id + ',');
+      })
+      this.linkType.fromBtmTypeName = fromBtmName;
+      this.linkType.fromBtmType = fromBtmType;
+      console.log(this.linkType);
+    },
+    toSelectChange(dataList) {
+      console.log(dataList);
+      this.linkType.toBtmTypes = [];
+      var toBtmName = "";
+      var toBtmType = "";
+      dataList.forEach(data => {
+        //this.linkType.toBtmTypes.push(data);
+        toBtmName += (data.name + ',');
+        toBtmType += (data.id + ',');
+      })
+      this.linkType.toBtmTypeName = toBtmName;
+      this.linkType.toBtmType = toBtmType;
+      console.log(this.linkType);
+    },
+    resetForm() {
+      this.linkType = {};
+      this.$refs.form.resetFields();
+    }
+  }
 }
 </script>
 
 <style>
 /* 灞炴�ф睜鍙傜収鍒楄〃 */
-.attrRef>.el-card:nth-of-type(2)>.el-card__body>.avue-crud__menu {
-    display: none !important;
+.attrRef > .el-card:nth-of-type(2) > .el-card__body > .avue-crud__menu {
+  display: none !important;
 }
 
-.revisionRef>.el-card:nth-of-type(2)>.el-card__body>.avue-crud__menu {
-    display: none !important;
+.revisionRef > .el-card:nth-of-type(2) > .el-card__body > .avue-crud__menu {
+  display: none !important;
 }
 
-.linkTypeForm>.el-form-item>.el-form-item__content>.el-input>.el-input__inner,.linkTypeForm>.el-form-item>.el-form-item__content>.el-select{
-    width: 290px;
+.linkTypeForm > .el-form-item > .el-form-item__content > .el-input > .el-input__inner, .linkTypeForm > .el-form-item > .el-form-item__content > .el-select {
+  width: 290px;
 }
 
-.descClass>.el-input__inner {
-    width: 57vw
+.descClass > .el-input__inner {
+  width: 57vw
 }
 
 #descId {
-    width: 57vw;
+  width: 57vw;
 }
-.el-tag + .el-tag{
+
+.el-tag + .el-tag {
   margin-top: 2px;
 }
 </style>
diff --git a/Source/UBCS-WEB/src/views/modeling/originalAdd.vue b/Source/UBCS-WEB/src/views/modeling/originalAdd.vue
index e400868..ec51cc5 100644
--- a/Source/UBCS-WEB/src/views/modeling/originalAdd.vue
+++ b/Source/UBCS-WEB/src/views/modeling/originalAdd.vue
@@ -6,7 +6,7 @@
             <el-form ref="form" :model="attribute" show-message="true" inline size="medium" label-suffix=":"
                 class="attributeForm" :rules="rules" @resetFields="resetAttributeForm" status-icon="true">
                 <el-form-item label="灞炴�х紪鍙�" label-width="100px" prop="id">
-                    <el-input v-model="attribute.id" maxlength="30" show-word-limit type="text"></el-input>
+                  <el-input v-model="attribute.id" maxlength="30" show-word-limit @input="handleIdInput"></el-input>
                 </el-form-item>
                 <el-form-item label="灞炴�у悕绉�" label-width="100px" prop="name">
                     <el-input v-model="attribute.name"></el-input>
@@ -299,6 +299,9 @@
         this.initAttributeReferTypeList();
     },
     methods: {
+      handleIdInput(value){
+        this.attribute.id = value.toLowerCase();
+      },
       onSubmit() {
         if (this.form.name || this.form.label) {
           const params = {};
diff --git a/Source/UBCS-WEB/src/views/ruleBasic/usableCharacter.vue b/Source/UBCS-WEB/src/views/ruleBasic/usableCharacter.vue
index a92827c..32997d5 100644
--- a/Source/UBCS-WEB/src/views/ruleBasic/usableCharacter.vue
+++ b/Source/UBCS-WEB/src/views/ruleBasic/usableCharacter.vue
@@ -21,83 +21,21 @@
         border
         style="width: 100%;height:  calc(100vh - 320px)"
         @cell-click="cellClickHandler">
-        <el-table-column
-          align="center"
-          label="1"
-          prop="1"
-        >
-        </el-table-column>
-        <el-table-column
-          align="center"
-          label="2"
-          prop="2"
-        >
-        </el-table-column>
-        <el-table-column
-          align="center"
-          label="3"
-          prop="3">
-        </el-table-column>
-        <el-table-column
-          align="center"
-          label="4"
-          prop="4">
-        </el-table-column>
-        <el-table-column
-          align="center"
-          label="5"
-          prop="5">
-        </el-table-column>
-        <el-table-column
-          align="center"
-          label="6"
-          prop="6">
-        </el-table-column>
-        <el-table-column
-          align="center"
-          label="7"
-          prop="7">
-        </el-table-column>
-        <el-table-column
-          align="center"
-          label="8"
-          prop="8">
-        </el-table-column>
-        <el-table-column
-          align="center"
-          label="9"
-          prop="9">
-        </el-table-column>
-        <el-table-column
-          align="center"
-          label="10"
-          prop="10">
-        </el-table-column>
-        <el-table-column
-          align="center"
-          label="11"
-          prop="11">
-        </el-table-column>
-        <el-table-column
-          align="center"
-          label="12"
-          prop="12">
-        </el-table-column>
-        <el-table-column
-          align="center"
-          label="13"
-          prop="13">
-        </el-table-column>
-        <el-table-column
-          align="center"
-          label="14"
-          prop="14">
-        </el-table-column>
-        <el-table-column
-          align="center"
-          label="15"
-          prop="15">
-        </el-table-column>
+        <el-table-column align="center" label="1" prop="1"></el-table-column>
+        <el-table-column align="center" label="2" prop="2"></el-table-column>
+        <el-table-column align="center" label="3" prop="3"></el-table-column>
+        <el-table-column align="center" label="4" prop="4"></el-table-column>
+        <el-table-column align="center" label="5" prop="5"></el-table-column>
+        <el-table-column align="center" label="6" prop="6"></el-table-column>
+        <el-table-column align="center" label="7" prop="7"></el-table-column>
+        <el-table-column align="center" label="8" prop="8"></el-table-column>
+        <el-table-column align="center" label="9" prop="9"></el-table-column>
+        <el-table-column align="center" label="10" prop="10"></el-table-column>
+        <el-table-column align="center" label="11" prop="11"></el-table-column>
+        <el-table-column align="center" label="12" prop="12"></el-table-column>
+        <el-table-column align="center" label="13" prop="13"></el-table-column>
+        <el-table-column align="center" label="14" prop="14"></el-table-column>
+        <el-table-column align="center" label="15" prop="15"></el-table-column>
       </el-table>
     </el-main>
     <el-footer>
@@ -230,7 +168,7 @@
       // const targetObject = this.characterReleasedList.find(obj => obj.oid === this.selectValue);
       // const chartValue = targetObject.name;
       getList({codeRuleId: this.select, chartType: "charset", chartValue: this.characterValue}).then(res => {
-        console.log(res.data.data);
+        // console.log(res.data.data);
         this.tableData = res.data.data;
         this.loading = false;
       });
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java
index 4d5c848..540cb51 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java
@@ -843,7 +843,7 @@
 	 */
 	@GetMapping("/exportGroupCodeExcel")
 	@VciBusinessLog(operateName = "瀵煎嚭闆嗗洟鐮�")
-	public R exportGroupCodeExcel(String codeClassifyOid, HttpServletResponse response){
+	public void exportGroupCodeExcel(String codeClassifyOid, HttpServletResponse response) throws IOException {
 		try {
 			String excelName = mdmIOService.exportGroupCodeExcel(codeClassifyOid);
 			ControllerUtil.writeFileToResponse(response,excelName);
@@ -854,17 +854,11 @@
 				msg = "鏈煡閿欒";
 			}
 			String errorFile = LocalFileUtil.getDefaultTempFolder() + File.separator + "閿欒.txt";
-			LocalFileUtil.writeContentToFile(LangBaseUtil.getErrorMsg(e),errorFile);
-			try {
-				ControllerUtil.writeFileToResponse(response,errorFile);
-			} catch (IOException ex) {
-				ex.printStackTrace();
-			}
-			String uuid=ControllerUtil.putErrorFile(errorFile);
-			return R.fail(msg);
-		//	ControllerUtil.writeDataToResponse(response,msg.getBytes(StandardCharsets.UTF_8),null);
+			LocalFileUtil.writeContentToFile(msg,errorFile);
+			ControllerUtil.writeFileToResponse(response,errorFile);
+		//	return R.fail(msg);
 		}
-		return R.status(true);
+	//	return R.status(true);
 	}
 
 	/***
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java
index 6592961..f4ed16f 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeBasicSecServiceImpl.java
@@ -230,7 +230,7 @@
 	 * @return 鎵ц缁撴灉
 	 * @throws VciBaseException 鍙傛暟涓虹┖锛屽敮涓�椤癸紝蹇呰緭椤逛笉閫氳繃鏃朵細鎶涘嚭寮傚父
 	 */
-	@Override
+	 @Override
 	@Transactional(rollbackFor = Exception.class)
 	public boolean addSave(CodeBasicSecDTO codeBasicSecDTO) throws VciBaseException {
 		VciBaseUtil.alertNotNull(codeBasicSecDTO, "闇�瑕佹坊鍔犵殑鏁版嵁瀵硅薄",codeBasicSecDTO.getPkCodeRule(),"缂栫爜瑙勫垯鐨勪富閿�");
@@ -272,7 +272,7 @@
 		//寮曠敤鐮佹鐨勬椂鍊欙紝闇�瑕佸垽鏂弬鐓х殑淇℃伅鏄惁姝g‘
 		if(CodeSecTypeEnum.CODE_REFER_SEC.getValue().equalsIgnoreCase(codeBasicSecDO.getSecType())){
 			if(StringUtils.isBlank(codeBasicSecDO.getReferConfig())){
-				throw new VciBaseException("寮曠敤鐮佹鐨勬椂鍊欙紝闇�瑕佸~鍐� 鍙傜収閰嶇疆鐨勫唴瀹�");
+				throw new VciBaseException("寮曠敤鐮佹鐨勬椂鍊欙紝闇�瑕佸~鍐欏弬鐓ч厤缃殑鍐呭");
 			}
 			try{
 				//JSONObject.parseObject(codeBasicSecDO.getReferConfig(), UIFormReferVO.class);
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java
index 6e4f4f1..929d37b 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/MdmProductCodeServiceImpl.java
@@ -422,7 +422,6 @@
 				allCode -> {DefaultAttrAssimtUtil.addDefaultAttrAssimt(allCode,"codeallcode",user);allCode.setLctid("codeAllCodeLC");}
 			);
 
-
 			Map<String, String> statusMap = allCodeDOList.stream().collect(Collectors.toMap(s -> s.getOid(), s -> s.getLcStatus()));
 			allCodeDOList.stream().filter(s -> StringUtils.equalsIgnoreCase("codeallcode",s.getBtmname())).forEach(s -> {
 				s.setLcStatus(statusMap.get(s.getOid()));
@@ -1191,10 +1190,12 @@
 			switchSecValueBZ(secVO, secValueMap, classifyFullInfoBO, serialSecVOList, attrSecVOList, serialUnitList, secValueList);
 			//鍒嗘瀛樺偍娴佹按渚濊禆
 			if(secVO.getSecType().equals(CodeSecTypeEnum.CODE_SERIAL_SEC.getValue())){
+				int finalI = i;
+				final int[] index = {0};
 				List<String> newSerialUnitList= serialUnitList.stream().filter(secValueStr -> {
-					return  !secValueStr.equals("${"+secVO.getOid()+"}");
+					return index[0]++< finalI;//闄ゅ幓娴佹按鐨�
 				}).collect(Collectors.toList());
-				String serialUnitString = serialUnitList.size() == 0 ? EMPTY_SERIAL_UNIT : newSerialUnitList.stream().collect(Collectors.joining(SERIAL_UNIT_SPACE));
+				String serialUnitString = newSerialUnitList.size() == 0 ? EMPTY_SERIAL_UNIT : newSerialUnitList.stream().collect(Collectors.joining(SERIAL_UNIT_SPACE));
 				secOdserialUnitMap.put(secVO.getOid(),serialUnitString);
 			}
 		}
@@ -1231,7 +1232,7 @@
 			AtomicReference<String> serialUnitString= new AtomicReference<>("");
 			for (int j = 0; j < serialSecVOList.size(); j++) {
 				CodeBasicSecVO secVO = serialSecVOList.get(j);
-				if(lastMaxSerialValueMap.containsKey(secVO.getOid())){
+				if(lastMaxSerialValueMap.containsKey(secVO.getOid())){//姝や负鏈�鍚庨渶瑕佸瓨鍏ユ祦姘翠緷璧栫殑鏈�澶ф祦姘�
 					Map<String/**娴佹按渚濇嵁**/, String> serialValueMap=	lastMaxSerialValueMap.get(secVO.getOid());
 					serialValueMap.forEach((maxSerialUnitString,serialValue)->{
 						if(StringUtils.isNotBlank(serialValue)){
@@ -1239,6 +1240,11 @@
 							sb.append(serialValue).append(SERIAL_VALUE_SPACE);
 						}
 					});
+				}else{
+					if(secValueMap.containsKey(secVO.getOid())) {//浼佷笟鏍囧噯澶勭悊淇椤哄簭鍙峰凡缁忓瓨鍦ㄧ殑鏁版嵁鍒欎笉闇�瑕佸姩娴佹按渚濊禆琛ㄧ殑鏁版嵁
+						serialUnitString.set(secOdserialUnitMap.get(secVO.getOid()));
+						sb.append(secValueMap.get(secVO.getOid())).append(SERIAL_VALUE_SPACE);
+					}
 				}
 			}
 			String codeDelimiter=thisSecValueList.stream().collect(Collectors.joining(SERIAL_VALUE_SPACE));

--
Gitblit v1.9.3