From f6e7d70e650536e7cafa0da24922b2dda1902f06 Mon Sep 17 00:00:00 2001
From: lihang <lihang@vci-tech.com>
Date: 星期五, 26 五月 2023 18:18:47 +0800
Subject: [PATCH] 元数据页面调整完善

---
 Source/UBCS-WEB/src/views/modeling/original.vue                                                         |  553 ++++++++----------------------
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/AttributeController.java    |    2 
 Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/constant/LauncherConstant.java                |    2 
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/AttributeWrapper.java          |   38 +
 Source/UBCS-WEB/src/views/modeling/originalAdd.vue                                                      |  452 +++++++++++++++++++++++++
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/Attribute.java          |    2 
 Source/UBCS-WEB/src/api/omd/btmType.js                                                                  |   12 
 Source/UBCS-WEB/src/main.js                                                                             |    2 
 Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/AttributeServiceImpl.java |   11 
 9 files changed, 654 insertions(+), 420 deletions(-)

diff --git a/Source/UBCS-WEB/src/api/omd/btmType.js b/Source/UBCS-WEB/src/api/omd/btmType.js
index 86d043c..11938d0 100644
--- a/Source/UBCS-WEB/src/api/omd/btmType.js
+++ b/Source/UBCS-WEB/src/api/omd/btmType.js
@@ -56,4 +56,16 @@
         method: 'post',
         data: btmType
     })
+}
+
+export const btmPage = (current,size,params) => {
+    return request ({
+        url: '/api/ubcs-omd/btm-type/page',
+        method: 'get',
+        params: {
+            current,
+            size,
+            ...params
+        }
+    })
 }
\ No newline at end of file
diff --git a/Source/UBCS-WEB/src/main.js b/Source/UBCS-WEB/src/main.js
index 1eec9df..3cf0e47 100644
--- a/Source/UBCS-WEB/src/main.js
+++ b/Source/UBCS-WEB/src/main.js
@@ -41,6 +41,7 @@
 import referConfigFormDialog from "@/components/code-dialog-page/referConfigFormDialog"
 import businessAdd from "@/views/modeling/BusinessAdd"
 import TableCrud from "@/components/Crud/Crud"
+import originalAdd from "@/views/modeling/originalAdd"
 
 // 灏嗗伐鍏峰嚱鏁版坊鍔犲埌鍏ㄥ眬
 import utilFunc from './util/func'
@@ -83,6 +84,7 @@
 Vue.component('businessAdd',businessAdd)
 Vue.component('attrCrud',attrCrud)
 Vue.component('TableCrud',TableCrud)
+Vue.component('originalAdd',originalAdd)
 
 
 // 鍔犺浇鐩稿叧url鍦板潃
diff --git a/Source/UBCS-WEB/src/views/modeling/original.vue b/Source/UBCS-WEB/src/views/modeling/original.vue
index fe46d55..9757875 100644
--- a/Source/UBCS-WEB/src/views/modeling/original.vue
+++ b/Source/UBCS-WEB/src/views/modeling/original.vue
@@ -2,22 +2,30 @@
   <el-container>
     <el-main>
       <basic-container>
-        <avue-crud v-model="form" :option="option" :data="data" ref="crud" @on-load="onLoad" @row-save="rowSave"
-          @row-update="rowUpdate" :before-open="beforeOpen" @row-del="rowDel" :page.sync="page"
-          @refresh-change="refreshChange" @row-click="rowClick"
-          @selection-change="selectChange">
-          <template slot-scope="{row,index,type}" slot="selInputForm">
-          <div style="margin-left: 75px">
-            <el-input v-model="form.text" :size="size" style="width: 210px" :readonly="true" @focus="selectBtmType" :disabled="referType.disable"></el-input>
-          </div>
-        </template>
-        <template slot="radio"
-                slot-scope="{row}">
-                    <el-radio v-model="selectRow"
-                        :label="row.$index">&nbsp;
-                    </el-radio>
+        <avue-crud v-model="form" 
+          ref="crud" 
+          :option="option" 
+          :data="data" 
+          @on-load="onLoad" 
+          :page.sync="page"
+          @refresh-change="refreshChange" 
+          @row-click="rowClick">
+               <template slot="radio"
+                  slot-scope="{row}">
+                      <el-radio v-model="selectRow"
+                          :label="row.$index">&nbsp;
+                      </el-radio>
                 </template>
+          <template slot="menu">
+             <el-button icon="el-icon-edit" size="small" type="text" @click="updateSave">缂栬緫</el-button>
+             <el-button icon="el-icon-delete" size="small" type="text" @click="deleteSave">鍒犻櫎</el-button>
+          </template>
          <template slot="menuLeft">
+            <el-button size="small"
+              type="primary"
+              icon="el-icon-plus"
+              @click="addSave">鏂�&nbsp;&nbsp;澧�
+            </el-button>
             <el-button size="small"
                        plain
                        type="primary"
@@ -31,76 +39,105 @@
             <avue-crud v-model="applyRange.model" :option="applyRange.option" :data="applyRange.data" class="applyRangeTable"
             ></avue-crud>
         </el-dialog>
-        <el-dialog :visible.sync="referType.display" append-to-body :title="referType.title" width="1000px">
-          <original-range @rowchange="rowchange"></original-range>
-          <span slot="footer" class="dialog-footer">
-            <el-button @click="dialoghandelfalse">鍙� 娑�</el-button>
-            <el-button type="primary" @click="dialoghandeltrue">纭� 瀹�</el-button>
-          </span>
-        </el-dialog>
-        <!-- <el-dialog :visible.sync="packageLinkBox" append-to-body title="鏌ョ湅閾炬帴绫诲瀷" width="1000px">
-          <original-link @rowLinkchange="rowLinkchange"></original-link>
-          <span slot="footer" class="dialog-footer">
-            <el-button @click="Linkdialoghandelfalse">鍙� 娑�</el-button>
-            <el-button type="primary" @click="Linkdialoghandeltrue">纭� 瀹�</el-button>
-          </span>
-        </el-dialog> -->
       </basic-container>
     </el-main>
     <el-aside>
       <basic-container class="itemForm">
-        <el-tabs v-model="activeName" @tab-click="handleClick">
-          <el-tab-pane label="灞炴�ч」" name="attrTab">
-            <el-form ref="form" :model="itemData" label-width="80px" style="height: 656px;">
-              <el-form-item label="灞炴�х紪鐮�">
-                <el-input v-model="itemData.id" :disabled="true"></el-input>
-              </el-form-item>
-              <el-form-item label="灞炴�у悕绉�">
-                <el-input v-model="itemData.name" :disabled="true"></el-input>
-              </el-form-item>
-              <el-form-item label="灞炴�х被鍨�">
-                <el-input v-model="itemData.typeValue" :disabled="true"></el-input>
-              </el-form-item>
-              <el-form-item label="鏍囩">
-                <el-input v-model="itemData.hashtag" :disabled="true"></el-input>
-              </el-form-item>
-              <el-form-item label="榛樿鍊�">
-                <el-input v-model="itemData.defaultValue" :disabled="true"></el-input>
-              </el-form-item>
-              <el-form-item label="鍏佽涓虹┖">
-                <el-switch v-model="itemData.nullable" :disabled="true"></el-switch>
-              </el-form-item>
-              <el-form-item label="闀垮害">
-                <el-input v-model="itemData.maxLength" :disabled="true"></el-input>
-              </el-form-item>
-              <el-form-item label="鎻忚堪">
-                <el-input v-model="itemData.description" :disabled="true"></el-input>
-              </el-form-item>
-            </el-form>
-          </el-tab-pane>
-          <el-tab-pane label="鍙傜収" name="valueTab">
-            <el-form ref="form" :model="itemData" label-width="80px" style="height: 656px;">
-              <el-form-item label="鍙傜収绫诲瀷">
-                <el-input v-model="itemData.referTypeValue" :disabled="true"></el-input>
-              </el-form-item>
-              <el-form-item label="鍙傜収鍚嶇О">
-                <el-input v-model="itemData.referToName" :disabled="true"></el-input>
-              </el-form-item>
-            </el-form>
+            <el-descriptions class="margin-top" :column="1" size="medium" border title="灞炴�ч」">
+              <el-descriptions-item>
+                <template slot="label">
+                  灞炴�х紪鍙�
+                </template>
+                {{ itemForm.itemData.id }}
+              </el-descriptions-item>
+              <el-descriptions-item>
+                <template slot="label">
+                  灞炴�у悕绉�
+                </template>
+                {{ itemForm.itemData.name }}
+              </el-descriptions-item>
+              <el-descriptions-item>
+                <template slot="label">
+                  灞炴�х被鍨�
+                </template>
+                {{ itemForm.itemData.typeValue }}
+              </el-descriptions-item>
+              <el-descriptions-item>
+                <template slot="label">
+                  鏍囩
+                </template>
+                {{ itemForm.itemData.hashtag }}
+              </el-descriptions-item>
+              <el-descriptions-item>
+                <template slot="label">
+                  榛樿鍊�
+                </template>
+                {{ itemForm.itemData.defaultValue }}
+              </el-descriptions-item>
+              <el-descriptions-item>
+                <template slot="label">
+                  鍏佽涓虹┖
+                </template>
+                {{ itemForm.itemData.nullable }}
+              </el-descriptions-item>
+              <el-descriptions-item>
+                <template slot="label">
+                  闀垮害
+                </template>
+                {{ itemForm.itemData.maxLength }}
+              </el-descriptions-item>
+              <el-descriptions-item>
+                <template slot="label">
+                  鎻忚堪
+                </template>
+                {{ itemForm.itemData.description }}
+              </el-descriptions-item>
+            </el-descriptions>
+            <div style="height:15px"></div>
+        <el-descriptions class="margin-top" :column="1" size="medium" border title="灞炴�ч厤缃�"></el-descriptions>
+        <el-tabs v-model="itemForm.activeName" @tab-click="handleClick" stretch="true" style="height:235px">
+        <el-tab-pane label="鍙傜収" name="referTab">
+            <el-descriptions class="margin-top" :column="1" size="medium" border>
+              <el-descriptions-item>
+                <template slot="label">
+                  浣跨敤鍙傜収
+                </template>
+                {{ itemForm.itemData.referTypeValue ? '鏄�' : '鍚�' }}
+              </el-descriptions-item>
+              <el-descriptions-item>
+                <template slot="label">
+                  鍙傜収绫诲瀷
+                </template>
+                {{ itemForm.itemData.referTypeValue }}
+              </el-descriptions-item>
+              <el-descriptions-item>
+                <template slot="label">
+                  鍙傜収鍚嶇О
+                </template>
+                {{ itemForm.itemData.referToName }}
+              </el-descriptions-item>
+            </el-descriptions>
           </el-tab-pane>
           <el-tab-pane label="鏋氫妇" name="enumTab">
-            <el-form ref="form" :model="itemData" label-width="80px" style="height: 656px;">
-              <el-form-item label="浣跨敤鏋氫妇">
-                <el-switch v-model="itemData.usingDict" :disabled="true"></el-switch>
-              </el-form-item>
-              <el-form-item label="鏋氫妇绫诲瀷">
-                <el-input v-model="form.dictCode" :disabled="true"></el-input>
-              </el-form-item>
-            </el-form>
+            <el-descriptions class="margin-top" :column="1" :size="small" border>
+              <el-descriptions-item>
+                <template slot="label">
+                  浣跨敤鏋氫妇
+                </template>
+                {{ itemForm.itemData.usingDict ? '鏄�' : '鍚�' }}
+              </el-descriptions-item>
+              <el-descriptions-item>
+                <template slot="label">
+                  鏋氫妇绫诲瀷
+                </template>
+                {{ itemForm.itemData.dictCode }}
+              </el-descriptions-item>
+            </el-descriptions>
           </el-tab-pane>
         </el-tabs>
       </basic-container>
     </el-aside>
+    <originalAdd ref="originalAdd" :attribute="attribute" @refreshTable="refreshChange"></originalAdd>
   </el-container>
 </template>
 
@@ -112,52 +149,21 @@
   update, getPage, getApplyRange
 } from "@/api/omd/OmdAttribute";
 
-import { getDictionary } from "@/api/omd/enum";
-
 export default {
   name: "original",
   data() {
-    return {
-      datas: [],
-      itemData: {},
-      activeName: 'attrTab',
-      formAtrr: {},
-      rouname: "",
-      referType: {
-        code: 'referType',
-        key: '',
-        value: '',
-        display: false,
-        title: '',
-        disable: true
-      },
-      //鍊煎煙涓嬫媺妗嗘暟鎹�
-      Typelist: [],
-      //鐗堟湰鏁版嵁
-      banList: [],
-      // 灞炴�х被鍨嬩笅鎷夋鏁版嵁
-      typeSelectList: [
-        {
-          label: "鍝堝搱鍝�",
-          value: 0
-        },],
-      // 鏄惁涓虹┖
-      nullable: [],
-      form: {
-        text: ""
-      },
-      detailForm: {
-        text: ""
-      },
+    return {  
       page: {
         pageSize: 10,
         currentPage: 1,
         total: 100
       },
       selectRow: '',
-      data: [
-
-      ],
+      data: [],
+      form:{},
+      attribute: {
+        nullable: true
+      },
       option: {
         height: "550px",
         headerAlign: 'center',
@@ -165,7 +171,13 @@
         index: true,
         rowKey: 'id',
         tabs: true,
+        stripe:true,
+        indexFixed: false,
+        menuWidth: 150,
         highlightCurrentRow: true,
+        addBtn:false,
+        editBtn:false,
+        delBtn:false,
         column: [{
             label: '閫夋嫨',
             prop: 'radio',
@@ -178,7 +190,8 @@
             prop: 'id',
             align: 'left',
             display: false,
-            width: 200
+            width: 200,
+            required: true
           }, {
             label: '灞炴�у悕绉�',
             prop: 'name',
@@ -200,10 +213,10 @@
             display: false,
             dicData: [{
               label: '鏄�',
-              value: 0
+              value: 'true'
             }, {
               label: '鍚�',
-              value: 1
+              value: 'false'
             }]
           },
           {
@@ -226,10 +239,10 @@
             labelWidth: 132,
             dicData: [{
               label: '鍚�',
-              value: 1
+              value: 'false'
             }, {
               label: '鏄�',
-              value: 0
+              value: 'true'
             }]
           },
           {
@@ -244,195 +257,6 @@
             type: "textarea",
             display: false
           },
-        ],
-        group: [
-          {
-            label: '灞炴�ч」',
-            prop: "index",
-            column: [
-              {
-                label: '灞炴�х紪鍙�',
-                prop: 'id',
-                align: 'left',
-              },
-              {
-                label: '灞炴�у悕绉�',
-                prop: 'name',
-                align: 'left',
-              },
-              {
-                label: '鏍囩',
-                prop: 'hashtag',
-                hide: true
-              }, {
-                label: '灞炴�х被鍨嬪瓧鍏哥爜',
-                prop: 'typeCode',
-                display: false,
-                value: 'attributeType'
-              },
-              {
-                label: '灞炴�х被鍨�',
-                prop: 'typeKey',
-                type: "select",
-                dicUrl: '/api/ubcs-omd/dict-biz/dictionary?code=attributeType',
-                dicType: 'String',
-                props: {
-                  label: 'dictValue',
-                  value: 'dictKey'
-                },
-                rules: [
-                  {
-                    required: true,
-                    message: "璇烽�夋嫨灞炴�х被鍨�",
-                    trigger: "click"
-                  }
-                ]
-              },
-              {
-                label: '榛樿鍊�',
-                prop: 'defaultValue',
-              },
-              {
-                label: '鍏佽涓虹┖',
-                prop: 'nullable',
-                type: 'switch',
-                hide: true,
-                labelWidth: 132,
-                dicData: [{
-                  label: '鍚�',
-                  value: 1
-                }, {
-                  label: '鏄�',
-                  value: 0
-                }]
-              },
-              {
-                label: "闀垮害",
-                prop: "maxLength",
-                hide: true
-              },
-              {
-                label: '鎻忚堪',
-                prop: 'description',
-                type: "textarea"
-              },
-            ]
-          },
-          {
-            label: '鍙傜収',
-            column: [
-              {
-                label: '鍙傜収绫诲埆',
-                prop: 'referTypeCode',
-                display: false,
-                hide: true
-              },{
-                span: 12,
-                label: '鍙傜収绫诲埆',
-                prop: 'referTypeKey',
-                type: "select",
-                change: this.selectChange,
-                dicUrl: '/api/ubcs-omd/dict-biz/dictionary?code=referType',
-                dicType: 'String',
-                props: {
-                  label: 'dictValue',
-                  value: 'dictKey'
-                },
-                rules: [
-                  {
-                    required: true,
-                    message: "璇烽�夋嫨鍙傜収绫诲埆",
-                    trigger: "click"
-                  }
-                ]
-              },
-              {
-                prop: "selInput",
-                placeholder: false,
-                readonly: true,
-                display: true,
-                formslot: true,
-              },
-              // {
-              //   label: "閫夋嫨鐗堟湰",
-              //   prop: "banben",
-              //   type: 'select',
-              //   value: 0,
-              //   change: this.selchange,
-              //   display: true,
-              //   dicData: [
-              //     {
-              //       label: '褰撳墠鐗堟湰娆�',
-              //       value: 0
-              //     },
-              //     {
-              //       label: '鏈�鏂扮増鏈',
-              //       value: 1
-              //     }
-              //   ]
-              // },
-              {
-                //榛樿琛ㄦ牸鎻掓Ы
-                prop: "default",
-                span: 24,
-                display: false
-              }
-            ]
-          },
-          {
-            label: '鏋氫妇',
-            column: [
-              {
-                label: '鏄惁浣跨敤鏋氫妇',
-                prop: 'isnot',
-                type: 'switch',
-                hide: true,
-                labelWidth: 132,
-                span: 8,
-                dicData: [{
-                  label: '鍚�',
-                  value: 1
-                }, {
-                  label: '鏄�',
-                  value: 0
-                }]
-              },
-              {
-                prop: 'text',
-                type: 'input',
-                placeholder: '璇疯緭鍏ュ唴瀹�',
-                hide: true,
-                display: false
-              },
-              {
-                prop: 'enumerationSelect',
-                type: 'select',
-                placeholder: '璇烽�夋嫨',
-                hide: true,
-                span: 12,
-                dicData: [
-                  {
-                    label: 'a',
-                    value: 0
-                  },
-                  {
-                    label: 'b',
-                    value: 1
-                  },
-                  {
-                    label: 'c',
-                    value: 2
-                  }
-                ]
-              },
-              {
-                label: '鎻忚堪',
-                prop: 'endesc',
-                type: "textarea",
-                labelWidth: 132,
-              },
-            ]
-          }
         ]
       },
       applyRange: {
@@ -464,115 +288,32 @@
         },
         data: [],
         display: false,
+      },
+      itemForm:{
+        itemData: {},
+        activeName: 'referTab',
+        form:{}
       }
     }
   },
-
-
   created() {
-    const column =this.findObject(this.option.group,"referTypeKey")
-    console.log(column);
+    
   },
   methods: {
-    rowLinkchange(row) {
-      this.form.text = row.name
-    },
-    rowchange(row) {
-      this.form.text = row.name
-    },
-    //鍊煎煙绫诲瀷閫夋嫨
-    addHandle() {
-      this.packageBox = true
-      if (this.Typelist.value == 0) {
-        this.packageBox = true
-        this.packageLinkBox = false
-      } else if (this.Typelist.value == 1) {
-        this.packageBox = false
-        this.packageLinkBox = true
-      }
-    },
-    // 鍊煎煙涓氬姟绫诲瀷瀵硅瘽妗嗗彇娑�
-    dialoghandelfalse() {
-      this.packageBox = false;
-      this.form.text = ""
-    },
-    //鍊煎煙涓氬姟绫诲瀷瀵硅瘽妗嗙‘瀹�
-    dialoghandeltrue() {
-      this.packageBox = false
-    },
-    // 鍊煎煙閾炬帴绫诲瀷瀵硅瘽妗嗗彇娑�
-    Linkdialoghandelfalse() {
-      this.packageLinkBox = false;
-      this.form.text = ""
-    },
-    //鍊煎煙閾炬帴绫诲瀷瀵硅瘽妗嗙‘瀹�
-    Linkdialoghandeltrue() {
-      this.packageLinkBox = false
-    },
-    selectChange(val) {
-       this.referType.key = val.value
-      if (val.value == 'businessType'){
-        this.referType.value = '涓氬姟绫诲瀷'
-      }
-      if (val.value == 'linkType'){
-        this.referType.value = '閾炬帴绫诲瀷'
-      }
-      if(val.value){
-        this.referType.disable = false
-      }
-    },
-    selchange(val) {
-      this.banList = val
-      console.log(val);
-    },
     refreshChange() {
       this.onLoad(this.pageParent, this.query);
     },
-    beforeOpen(done, type) {
-      
-      done();
-
+    addSave(){
+      this.$refs.originalAdd.showSubmitDialog = true;
+      this.$refs.originalAdd.attribute = {};
     },
-    rowDel(row) {
-      this.$confirm("纭畾灏嗛�夋嫨鏁版嵁鍒犻櫎?", {
-        confirmButtonText: "纭畾",
-        cancelButtonText: "鍙栨秷",
-        type: "warning"
-      })
-        .then(() => {
-          return remove(row.id);
-        })
-        .then(() => {
-          this.$message({
-            type: "success",
-            message: "鎿嶄綔鎴愬姛!"
-          });
-          this.onLoad();
-        });
+    updateSave(){
+      this.$refs.originalAdd.showSubmitDialog = true;
+      this.$refs.originalAdd.attribute = this.attribute;
     },
-    rowSave(row, done) {
-      add(row).then(() => {
-        this.$message({
-          type: "success",
-          message: "鎿嶄綔鎴愬姛!"
-        });
-        done(row)
-        this.onLoad()
-      }).catch((res) => {
-        this.$message({
-          type: "success",
-          message: res
-        });
-      })
-    },
-    rowUpdate(row, index, done) {
-      update(row).then(() => {
-        this.onLoad()
-        this.$message({
-          type: "success",
-          message: "淇敼鎴愬姛!"
-        });
-        done(row)
+    deleteSave(){
+      remove(this.itemForm.itemData).then(res => {
+        this.$message.success("鍒犻櫎鎴愬姛");
       })
     },
     onLoad(page, params = {}) {
@@ -587,9 +328,9 @@
       })
     },
     rowClick(row) {
-      this.itemData = row;
+      this.itemForm.itemData = row;
       this.selectRow = row.$index;
-
+      this.attribute = row;
     }
     ,selectBtmType(){
         this.referType.display = true;
@@ -603,11 +344,9 @@
           })
         }
         var oid = this.data[this.selectRow].oid;
-        console.log(oid);
         getApplyRange(oid).then(res => {
             this.applyRange.data = res.data.data;
         })
-        console.log("success");
         this.applyRange.display = true;
     },
     applyRangeClose(){
diff --git a/Source/UBCS-WEB/src/views/modeling/originalAdd.vue b/Source/UBCS-WEB/src/views/modeling/originalAdd.vue
new file mode 100644
index 0000000..274381b
--- /dev/null
+++ b/Source/UBCS-WEB/src/views/modeling/originalAdd.vue
@@ -0,0 +1,452 @@
+<template>
+    <el-container>
+        <el-dialog title="鍏冩暟鎹�" :visible.sync="showSubmitDialog" append-to-body @close="closeSubmitDialog" width="50%"
+            style="height: 115vh;">
+            <!-- 鍏冩暟鎹殑澧炴敼寮圭獥 -->
+            <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="15" show-word-limit type="text"></el-input>
+                </el-form-item>
+                <el-form-item label="灞炴�у悕绉�" label-width="100px" prop="name">
+                    <el-input v-model="attribute.name"></el-input>
+                </el-form-item>
+                <el-form-item label="灞炴�х被鍨�" label-width="100px" prop="typeValue">
+                    <el-select v-model="attribute.typeValue" placeholder="璇烽�夋嫨灞炴�х被鍨�" @change="typeSelectChange">
+                        <el-option v-for="item in typeList" :key="item.value" :label="item.label" :value="item.value">
+                        </el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="鏍囩" label-width="100px">
+                    <el-input v-model="attribute.hashtag"></el-input>
+                </el-form-item>
+                <el-form-item label="榛樿鍊�" label-width="100px">
+                    <el-input v-model="attribute.defaultValue"></el-input>
+                </el-form-item>
+                <el-form-item label="鍏佽涓虹┖" label-width="100px">
+                    <el-switch v-model="attribute.nullable" active-text="鍏佽" inactive-text="涓嶅厑璁�"></el-switch>
+                </el-form-item>
+                <el-form-item label="闀垮害" label-width="100px" prop="maxLength">
+                    <el-input-number v-model="attribute.maxLength" :min="1" :max="4000" :step="1" controls-position="right"></el-input-number>
+                </el-form-item>
+                <el-form-item label="绮惧害" label-width="100px" v-if="attribute.typeValue == 'VTDouble'">
+                    <el-input-number v-model="attribute.precision" :min="1" :max="20" :step="1" controls-position="right" @change="changeNumber"></el-input-number>
+                </el-form-item>
+                <el-form-item label="鎻忚堪" label-width="100px">
+                    <el-input v-model="attribute.description" type="text"></el-input>
+                </el-form-item>
+
+                <el-tabs v-model="activeName" @tab-click="handleClick" stretch="true">
+                    <el-tab-pane label="鍙傜収" name="referTab">
+                        <el-form-item label="鍙傜収绫诲瀷" label-width="100px">
+                            <el-select v-model="attribute.referTypeKey" @change="referTypeSelectChange">
+                                <el-option v-for="item in btmRefer.referTypeList" :key="item.value" :label="item.label"
+                                    :value="item.value">
+                                </el-option>
+                            </el-select>
+                        </el-form-item>
+                        <el-form-item label="鍙傜収鍚嶇О" label-width="100px">
+                            <el-input v-model="attribute.referToName" @focus="openReferConfig" clearable="true"
+                                :disabled="referToFlag" @clear="clearReferTo">
+                                <i slot="suffix" class="el-input__icon el-icon-search"></i>
+                            </el-input>
+                        </el-form-item>
+                    </el-tab-pane>
+                    <el-tab-pane label="鏋氫妇" name="enumTab">
+                        <el-form-item label="鏋氫妇" label-width="100px">
+                            <el-input v-model="attribute.dictValue" @focus="openEnumConfig" clearable="true">
+                                <i slot="suffix" class="el-input__icon el-icon-search"></i>
+                            </el-input>
+                        </el-form-item>
+                        <el-form-item label="鏋氫妇椤�" label-width="100px">
+                            
+                        </el-form-item>
+                    </el-tab-pane>
+                </el-tabs>
+            </el-form>
+            <div slot="footer" class="dialog-footer">
+                <el-button type="primary" @click="submitAttribute">纭畾</el-button>
+                <el-button @click="cancleSubmit">鍙栨秷</el-button>
+            </div>
+            <!-- 閫夋嫨鍙傜収鏃剁殑寮圭獥 -->
+            <el-dialog title="鍙傜収鍒楄〃" :visible.sync="btmRefer.show" append-to-body @close="closeReferDialog" width="80%"
+                style="height: 115vh;">
+                <el-container>
+                    <el-aside>
+                        <basic-container>
+                           <span class="el-dialog__title"> {{ domain.treeOption.title }} </span>
+                            <div style="height:20px;"></div>
+                            <avue-tree id="domain" :data="domain.data" :option="domain.treeOption" @node-click="nodeClick"
+                                class="businessTree" style="height: 418px">
+                                <span class="el-tree-node__label" slot-scope="{ node, data }">
+                                    <span>
+                                        <i class="el-icon-star-on"></i>
+                                        {{ (node || {}).label }}
+                                    </span>
+                                </span>
+                            </avue-tree>
+                        </basic-container>
+                    </el-aside>
+                    <el-main>
+                        <basic-container>
+                            <avue-crud ref="btmTable" :option="btmRefer.option" :data="btmRefer.data" class="btmTable" @row-click="btmReferClick">
+                                <template slot="radio" slot-scope="{row}">
+                                    <el-radio v-model="btmRefer.selectRow" :label="row.$index">&nbsp;
+                                    </el-radio>
+                                </template>
+                            </avue-crud>
+                        </basic-container>
+                    </el-main>
+
+                </el-container>
+                <div slot="footer" class="dialog-footer">
+                    <el-button type="primary" @click="confirmBtm" size="small">纭畾</el-button>
+                    <el-button @click="cancleBtm" size="small">鍙栨秷</el-button>
+                </div>
+            </el-dialog>
+            <!-- 閫夋嫨鏋氫妇鏃剁殑寮圭獥 -->
+            <el-dialog title="鏋氫妇鍒楄〃" :visible.sync="enumRefer.show" append-to-body @close="closeEnumDialog" width="70%" 
+                style="height: 115vh;">
+                <avue-crud ref="eunmTable" :option="enumRefer.option" :data="enumRefer.data" class="enumTable" @row-click="enumReferClick" :page.sync="enumRefer.enumPage">
+                    <template slot="radio" slot-scope="{row}">
+                        <el-radio v-model="enumRefer.selectRow" :label="row.$index">&nbsp;
+                        </el-radio>
+                    </template>
+                </avue-crud>
+                <div slot="footer" class="dialog-footer">
+                    <el-button type="primary" @click="confirmEnum" size="small">纭畾</el-button>
+                    <el-button @click="cancleEnum" size="small">鍙栨秷</el-button>
+                </div>
+            </el-dialog>
+        </el-dialog>
+
+    </el-container>
+</template>
+
+<script>
+import { getDictionary,getParentList } from '@/api/omd/enum'
+import { initTree,btmPage } from '@/api/omd/btmType'
+import { add} from '@/api/omd/OmdAttribute'
+export default {
+    name: 'originalAdd',
+    props: {
+        attribute: {
+            type: Object
+        },
+    },
+    data() {
+        return {
+            showSubmitDialog: false,
+            // 榛樿鐨勯〉绛�
+            activeName: 'referTab',
+            // 灞炴�х被鍨嬩笅鎷夋鏁版嵁
+            typeList: [],
+            // 鍙傜収涓嬫媺妗嗘槸鍚﹀彲鐢�
+            referToFlag: true,
+            // 琛ㄥ崟鏍¢獙瑙勫垯
+            rules: {
+                id: [
+                    { required: true, message: '璇疯緭鍏ュ睘鎬х紪鍙�', trigger: 'blur' },
+                    { pattern: /^[A-Za-z]+$/, message: '灞炴�х紪鍙峰彧鑳戒负鑻辨枃', trigger: 'blur' },
+                    { min: 2, max: 15, message: '闀垮害鍦�2鍒�15涓瓧绗�', trigger: 'blur' }
+                ],
+                name: [
+                    { required: true, message: '璇疯緭鍏ュ睘鎬у悕绉�', trigger: 'blur' }
+                ],
+                typeValue: [
+                    { required: true, message: '璇烽�夋嫨灞炴�х被鍨�', trigger: 'change' }
+                ],
+                maxLength: [
+                    { required: true, message: '闇�瑕佹寚瀹氶暱搴�', trigger: 'blur' }
+                ]
+            },
+            // 鍙傜収椤甸潰琛ㄦ牸閰嶇疆
+            btmRefer: {
+                show: false,
+                btmPage: {
+                    pageSize: 10,
+                    currentPage: 1,
+                    total: 100
+                },
+                option: {
+                    height: 405,
+                    addBtn: false,
+                    refreshBtn: false,
+                    columnBtn: false,
+                    menu: false,
+                    border: true,
+                    reserveSelection: true,
+                    searchMenuSpan: 32,
+                    searchShowBtn: false,
+                    highlightCurrentRow: true,
+                    column: [
+                        {
+                        label: '',
+                        prop: 'radio',
+                        width: 60,
+                        hide: false
+                    },
+                    {
+                        label: '鑻辨枃鍚嶇О',
+                        prop: 'id',
+                        align: 'center',
+                        searchSpan:8,
+                        search: true,
+                    }, {
+                        label: '涓枃鍚嶇О',
+                        prop: 'name',
+                        align: 'center',
+                        searchSpan:8,
+                        search: true,
+                    }]
+                },
+                // 鍙傜収椤甸潰琛ㄦ牸鏁版嵁
+                data: [],
+                selectRow: '',
+                selectItem: {},
+                referTypeList: []
+            },
+            // 鏋氫妇鍙傜収琛ㄦ牸閰嶇疆
+            enumRefer: {
+                show: false,
+                enumPage: {
+                    pageSize: 10,
+                    currentPage: 1,
+                    total: 100
+                },
+                option: {
+                    height: 360,
+                    addBtn: false,
+                    refreshBtn: false,
+                    columnBtn: false,
+                    selection: true,
+                    menu: false,
+                    border: true,
+                    reserveSelection: true,
+                    searchMenuSpan: 32,
+                    searchShowBtn: false,
+                    highlightCurrentRow: true,
+                    column: [{
+                        label: '',
+                        prop: 'radio',
+                        width: 60,
+                        hide: false
+                    },{
+                        label: '鏋氫妇浠e彿',
+                        prop: 'name',
+                        align: 'center',
+                        searchSpan:8,
+                        search: true,
+                    }, {
+                        label: '鏋氫妇鍚嶇О',
+                        prop: 'label',
+                        align: 'center',
+                        searchSpan:8,
+                        search: true,
+                    }]
+                },
+                // 鏋氫妇鍙傜収琛ㄦ牸鏁版嵁
+                data: [],
+                enumDictionary: [],
+                // 閫夊畾琛�
+                selectRow: '',
+                selectItem: {}
+            },
+            domain: {
+                data: [],
+                treeOption: {
+                    defaultExpandAll: true,
+                    title: '棰嗗煙鏈嶅姟鏍�',
+                    props: {
+                        labelText: '',
+                        label: 'name',
+                        value: 'oid',
+                    }
+                }
+            }
+        }
+    },
+    created() {
+        this.initAttributeTypeList();
+        this.initAttributeReferTypeList();
+    },
+    methods: {
+        closeSubmitDialog() {
+            this.resetAttributeForm();
+            this.showSubmitDialog = false;
+        },
+        resetAttributeForm() {
+            this.attribute = {
+                nullable: true,
+                referTypeKey: '',
+            };
+            this.referToFlag = true;
+            this.$refs.form.resetFields();
+        },
+        submitAttribute() { 
+            add(this.attribute).then(res => {
+                this.$message.success("淇濆瓨鎴愬姛");
+                this.showSubmitDialog = false;
+                this.attribute = {};
+                this.$emit('refreshTable');
+            });
+            
+        },
+        cancleSubmit() {
+            this.closeSubmitDialog();
+        },
+        closeEnumDialog() {
+            this.cancleEnum();
+         },
+        closeReferDialog() { 
+            this.cancleBtm();
+        },
+        confirmBtm() { 
+            this.attribute.referToId = this.btmRefer.selectItem.oid;
+            this.attribute.referToName = this.btmRefer.selectItem.name;
+            this.btmRefer.show = false;
+        },
+        cancleBtm() { 
+            this.btmRefer.selectItem = {};
+            this.btmRefer.show = false;
+            this.btmRefer.selectRow = '';
+        },
+        confirmEnum() {
+            this.attribute.usingDict = true;
+            this.attribute.dictCode = this.enumRefer.selectItem.name;
+            this.attribute.dictValue = this.enumRefer.selectItem.label;
+            this.enumRefer.show = false;
+         },
+        cancleEnum() { 
+            this.enumRefer.selectItem = {};
+            this.enumRefer.show = false;
+            this.enumRefer.selectRow = '';
+        },
+        // 鍙傜収鍚嶇О杈撳叆妗嗚幏鍙栫劍鐐规椂鐨勪簨浠�
+        openReferConfig() {
+            if (!this.attribute.referTypeKey) {
+                this.$message.warning('璇峰厛閫夋嫨鍙傜収鐨勭被鍨�');
+                this.referToFlag = true;
+                return;
+            }
+            this.domain.data = [];
+            this.btmRefer.data = [];
+            initTree().then(res => {
+                this.domain.data = res.data.data;
+            })
+            this.btmRefer.show = true;
+
+        },
+        // 鍙傜収绫诲瀷鏍戠殑鐐瑰嚮浜嬩欢
+        nodeClick(data) {
+            // 鍖哄垎涓氬姟绫诲瀷鐨勬煡璇㈠拰閾炬帴绫诲瀷鐨勬煡璇�
+            if(this.attribute.referTypeKey == 'btmType'){
+                btmPage(this.btmRefer.btmPage.currentPage,this.btmRefer.btmPage.pageSize,{domain:data.id}).then(res => {
+                    this.btmRefer.data = res.data.data.records;
+                    this.btmRefer.btmPage.total = res.data.data.total;
+                })
+            }
+            if(this.attribute.referTypeKey == 'linkType'){
+
+            }
+        },
+        // 鏋氫妇绫诲瀷杈撳叆妗嗚幏寰楃劍鐐规椂鐨勪簨浠�
+        openEnumConfig() {
+            getParentList(this.enumRefer.enumPage.currentPage,this.enumRefer.enumPage.pageSize).then(res => {
+                this.enumRefer.enumPage.total = res.data.data.total;
+                this.enumRefer.data = res.data.data.records;
+            })
+            this.enumRefer.show = true;
+        },
+        // 灞炴�х被鍨嬩笅鎷夋閫夋嫨浜嬩欢
+        typeSelectChange(value) {
+            if (value == 'VTString') {
+                this.$set(this.attribute,"maxLength",150)
+            } else if (value == 'VTInteger') {
+                this.$set(this.attribute,"maxLength",50)
+            } else if (value == 'VTBoolean') {
+                this.$set(this.attribute,"maxLength",5)
+            } else if (value == 'VTDouble') {
+                this.$set(this.attribute,"maxLength",26)
+                this.$set(this.attribute,"precision",8)
+            } else if (value == 'VTLong') {
+                this.$set(this.attribute,"maxLength",150)
+            } else if (value == 'VTDate' || value == 'VTTime' || value == 'VTDateTime') {
+                this.$set(this.attribute,"maxLength",6)
+            } else {
+                this.$set(this.attribute,"maxLength",50)
+            }
+            this.attribute.typeCode = 'attributeType';
+            this.attribute.typeKey = value;
+        },
+        referTypeSelectChange(value) {
+            this.attribute.referTypeCode = 'attributeReferType';
+            this.attribute.referTypeKey = value;
+            this.referToFlag = false;
+        },
+        initAttributeTypeList() {
+            getDictionary({ code: 'attributeType' }).then(res => {
+                res.data.data.forEach(element => {
+                    this.typeList.push(
+                        { value: element.itemValue, label: element.itemName }
+                    )
+                });
+            }).catch(() => {
+                this.$message.error('灞炴�х被鍨嬫病鎵惧埌鎴栬�呮湭瀹氫箟')
+            })
+        },
+        initAttributeReferTypeList(){
+            getDictionary({ code: 'attributeReferType' }).then(res => {
+                res.data.data.forEach(element => {
+                    this.btmRefer.referTypeList.push(
+                        { value: element.itemValue, label: element.itemName }
+                    )
+                });
+            }).catch(() => {
+                this.$message.error('鍙傜収绫诲瀷娌℃壘鍒版垨鑰呮湭瀹氫箟')
+            })
+        },
+        btmReferClick(row){
+            this.btmRefer.selectItem = row;
+            this.btmRefer.selectRow = row.$index;
+        },
+        enumReferClick(row){
+            this.enumRefer.selectItem = row;
+            this.enumRefer.selectRow = row.$index;
+        },
+        // 鍙傜収鍚嶇О鐐瑰嚮娓呴櫎鏁版嵁
+        clearReferTo(){
+            this.$delete(this.attribute,'referToId');
+            this.$delete(this.attribute,'referToName');
+            this.btmRefer.selectItem = {};
+            this.btmRefer.selectRow = '';
+        },
+        handleClick(tab){
+            // 鍥犱负鍙兘鍙傜収鍜屾灇涓句簩閫変竴銆傛墍浠ュ湪鍒囨崲鐨勬椂鍊欐妸灞炴�х粰娓呯┖銆�
+            this.$delete(this.attribute,'referTypeCode');
+            this.$delete(this.attribute,'referTypeKey');
+            this.$delete(this.attribute,'referTypeValue');
+            this.$delete(this.attribute,'referToId');
+            this.$delete(this.attribute,'referToName');
+            this.$delete(this.attribute,'dictCode');
+            this.$delete(this.attribute,'dictKey');
+            this.$delete(this.attribute,'dictValue');
+            this.$delete(this.attribute,'usingDict');
+        }
+    }
+}
+</script>
+
+<style>
+.btmTable>.el-card:nth-of-type(2)>.el-card__body>.avue-crud__menu {
+    display: none !important;
+}
+
+.enumTable>.el-card:nth-of-type(2)>.el-card__body>.avue-crud__menu {
+    display: none !important;
+}
+
+.attributeForm>.el-form-item>.el-form-item__content>.el-input>.el-input__inner {
+    width: 200px;
+}
+</style>
\ No newline at end of file
diff --git a/Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/constant/LauncherConstant.java b/Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/constant/LauncherConstant.java
index 8c8a346..ff73742 100644
--- a/Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/constant/LauncherConstant.java
+++ b/Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/constant/LauncherConstant.java
@@ -41,7 +41,7 @@
 	 * nacos dev 鍦板潃
 	 */
 	//String NACOS_DEV_ADDR = "dev.vci-tech.com:38848";
-	String NACOS_DEV_ADDR = "localhost:8848";
+	String NACOS_DEV_ADDR = "127.0.0.1:8848";
 
 	/**
 	 * nacos prod 鍦板潃
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/Attribute.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/Attribute.java
index aa2c7cb..d808be2 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/Attribute.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/entity/Attribute.java
@@ -1,6 +1,7 @@
 package com.vci.ubcs.omd.entity;
 
 import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
@@ -36,6 +37,7 @@
 	 */
 	@ApiModelProperty(value = "涓婚敭")
 	@NotNull
+	@TableId
 	private String oid;
 
 	/**
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/AttributeController.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/AttributeController.java
index c03805d..d9eae5f 100644
--- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/AttributeController.java
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/controller/AttributeController.java
@@ -127,7 +127,7 @@
 	@PostMapping("/submit")
 	@ApiOperationSupport(order = 3)
 	@ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆鍏冩暟鎹璞�")
-	public R submit(@Valid @RequestBody AttributeDTO dto) {
+	public R submit(@RequestBody AttributeDTO dto) {
 		CacheUtil.clear(OmdCacheConstant.ATTR_CACHE);
 		return R.status(attributeService.submit(dto));
 	}
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/AttributeServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/AttributeServiceImpl.java
index 03f8eaf..4b7a621 100644
--- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/AttributeServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/AttributeServiceImpl.java
@@ -53,9 +53,6 @@
 
 	private final String REGEXP = "^[A-Za-z]+$";
 
-	@Resource
-	private BtmTypeMapper btmTypeMapper;
-
 	@Override
 	public boolean deleteLogic(@NotEmpty List<Long> ids) {
 		return false;
@@ -86,17 +83,17 @@
 	 */
 	@Override
 	public boolean submit(AttributeDTO dto) {
-		if (Pattern.compile(REGEXP).matcher(dto.getId()).matches()){
+		if (!Pattern.compile(REGEXP).matcher(dto.getId()).matches()){
 			throw new VciBaseException("灞炴�у悕绉皗0}鍙兘鏄嫳鏂�",new Object[]{dto.getId()});
 		}
 		LambdaQueryWrapper<Attribute> wrapper = Wrappers.<Attribute>query().lambda().eq(Attribute::getId, dto.getId());
-		Long count = baseMapper.selectCount((Func.isEmpty(dto.getId())) ? wrapper : wrapper.notIn(Attribute::getId, dto.getId()));
+		Long count = baseMapper.selectCount((Func.isEmpty(dto.getOid())) ? wrapper : wrapper.notIn(Attribute::getOid, dto.getOid()));
 		if (count > 0L) {
 			throw new ServiceException("灞炴�у悕宸插瓨鍦�!");
 		}
-		Attribute omdAttribute = BeanUtil.copy(dto, Attribute.class);
+		Attribute attribute = AttributeWrapper.build().copyBeforeSave(dto);
 		CacheUtil.clear(OmdCacheConstant.ATTR_CACHE);
-		return saveOrUpdate(omdAttribute);
+		return saveOrUpdate(attribute);
 	}
 
 	/**
diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/AttributeWrapper.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/AttributeWrapper.java
index d279695..837353b 100644
--- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/AttributeWrapper.java
+++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/wrapper/AttributeWrapper.java
@@ -1,12 +1,18 @@
 package com.vci.ubcs.omd.wrapper;
 
+import com.vci.ubcs.omd.cache.EnumCache;
+import com.vci.ubcs.omd.constant.BtmTypeConstant;
+import com.vci.ubcs.omd.dto.AttributeDTO;
 import com.vci.ubcs.omd.entity.Attribute;
 import com.vci.ubcs.omd.vo.*;
+import com.vci.ubcs.starter.web.util.VciBaseUtil;
 import com.vci.ubcs.system.cache.DictBizCache;
 import org.springblade.core.mp.support.BaseEntityWrapper;
+import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.StringUtil;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Objects;
 import java.util.stream.Collectors;
@@ -32,12 +38,13 @@
 	@Override
 	public AttributeVO entityVO(Attribute entity) {
 		AttributeVO vo = Objects.requireNonNull(BeanUtil.copy(entity, AttributeVO.class));
-		vo.setTypeValue(DictBizCache.getValue(vo.getTypeCode(),vo.getTypeKey()));
+		vo.setTypeValue(EnumCache.getValue(vo.getTypeCode(),vo.getTypeKey()));
 		if (StringUtil.isNotBlank(vo.getReferTypeCode())){
-			vo.setReferTypeValue(DictBizCache.getValue(vo.getReferTypeCode(),vo.getReferTypeKey()));
+			vo.setReferTypeValue(EnumCache.getValue(vo.getReferTypeCode(),vo.getReferTypeKey()));
 		}
-		vo.setDictValue(vo.getDictKey());
-		vo.setTypeValue(vo.getTypeKey());
+		if (StringUtil.isNotBlank(vo.getDictCode())) {
+			vo.setDictValue(EnumCache.getValue(vo.getDictCode(),vo.getDictKey()));
+		}
 		return vo;
 	}
 
@@ -49,4 +56,27 @@
 	public List<AttributeVO> listEntityVO(List<Attribute> list) {
 		return list.stream().map(this::entityVO).collect(Collectors.toList());
 	}
+
+	/**
+	 * 鍦ㄤ繚瀛樹箣鍓嶈璁剧疆榛樿灞炴��
+	 * @param dto
+	 * @return
+	 */
+    public Attribute copyBeforeSave(AttributeDTO dto) {
+		Attribute attribute = BeanUtil.copy(dto, Attribute.class);
+		Objects.requireNonNull(attribute);
+		String currentUser = AuthUtil.getUserAccount();
+		Date now = new Date();
+		if (StringUtil.isBlank(dto.getOid())) {
+			attribute.setBtmName(BtmTypeConstant.ATTRIBUTE);
+			attribute.setCreator(currentUser);
+			attribute.setCreateTime(now);
+			attribute.setOwner(currentUser);
+			attribute.setOid(VciBaseUtil.getPk());
+		}
+		attribute.setLastModifier(currentUser);
+		attribute.setLastModifyTime(now);
+		attribute.setTs(now);
+		return attribute;
+	}
 }

--
Gitblit v1.9.3