From 5845950aa395da1a1f56a5fff4c80358cf4b5f7f Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期二, 16 五月 2023 21:03:56 +0800
Subject: [PATCH] 新增引用码段下的参照配置界面,代码整合

---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeButtonController.java                  |   78 ++
 Source/UBCS-WEB/src/components/Tree/classifyTrees.vue                                                                    |  463 ++++++++++-
 Source/UBCS-WEB/src/views/code/code.vue                                                                                  |   23 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyTemplateAttrService.java         |    6 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateAttrServiceImpl.java |   60 
 Source/UBCS-WEB/src/components/Tree/classifyTreeform.vue                                                                 |   47 +
 Source/UBCS-WEB/vue.config.js                                                                                            |    4 
 Source/UBCS-WEB/src/api/template/templateAttr.js                                                                         |   25 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyTemplateAttrController.java    |    2 
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java             |    2 
 Source/UBCS-WEB/src/views/modeling/classifyTree.vue                                                                      |  101 +-
 Source/UBCS-WEB/src/components/code-dialog-page/referConfigDialog.vue                                                    |  662 +++++++++++++---
 Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/DomainVO.java                                |   20 
 Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue                                                                       |   21 
 Source/UBCS/ubcs-common/src/main/java/com/vci/ubcs/common/constant/LauncherConstant.java                                 |    2 
 Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/Map2MPJLambdaUtil.java                |   21 
 Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/enumpack/NewAppConstantEnum.java           |    2 
 Source/UBCS-WEB/src/components/code-dialog-page/formulaEditor.vue                                                        |    5 
 Source/UBCS-WEB/src/template/templateAttr.js                                                                             |   98 ++
 Source/UBCS-WEB/src/views/modeling/Business.vue                                                                          |   80 +
 Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/MPJLambdaWrapperSqlKeyword.java       |   45 +
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeTempbuttonServiceImpl.java           |   13 
 Source/UBCS-WEB/src/components/Tree/TemplatePro.vue                                                                      |  497 ++++++++----
 Source/UBCS-WEB/src/components/Tree/attrCrud.vue                                                                         |    8 
 24 files changed, 1,727 insertions(+), 558 deletions(-)

diff --git a/Source/UBCS-WEB/src/api/template/templateAttr.js b/Source/UBCS-WEB/src/api/template/templateAttr.js
index 00fa47f..73270c3 100644
--- a/Source/UBCS-WEB/src/api/template/templateAttr.js
+++ b/Source/UBCS-WEB/src/api/template/templateAttr.js
@@ -67,13 +67,32 @@
 }
 
 //涓婚敭鑾峰彇鍒嗙被妯℃澘灞炴��
-export const  gridCodeClassifyTemplateAttr = (oid) =>{
+export const  gridCodeClassifyTemplate = (oid) =>{
   return request({
-    url:'/api/ubcs-code/codeClassifyTempAttrController/gridCodeClassifyTemplateAttr',
+    url:'/api/ubcs-code/codeClassifyTemplateController/gridCodeClassifyTemplate',
     method: 'get',
     params:{
       oid
     }
   })
 }
-
+//鍩烘湰淇℃伅琛ㄥ崟鏁版嵁
+export const  getObjectByOid = (oid) =>{
+  return request({
+    url:'/api/ubcs-code/codeClassify/getObjectByOid',
+    method: 'get',
+    params:{
+      oid
+    }
+  })
+}
+//妯℃澘灞炴�ц〃鏍兼暟鎹�
+export const  gridCodeClassifyTemplateAttr = (params) =>{
+  return request({
+    url:'/api/ubcs-code/codeClassifyTempAttrController/gridCodeClassifyTemplateAttr',
+    method: 'get',
+    params:{
+     ...params
+    }
+  })
+}
\ No newline at end of file
diff --git a/Source/UBCS-WEB/src/components/Tree/TemplatePro.vue b/Source/UBCS-WEB/src/components/Tree/TemplatePro.vue
index b82a392..9166d01 100644
--- a/Source/UBCS-WEB/src/components/Tree/TemplatePro.vue
+++ b/Source/UBCS-WEB/src/components/Tree/TemplatePro.vue
@@ -2,7 +2,7 @@
   <basic-container>
     <avue-tabs :option="Taboption" @change="handleChange"></avue-tabs>
     <span v-if="type.prop==='tab1'">
-    <avue-crud :data="data" :option="option"></avue-crud>
+      <attrCrud :ProData="ProData"></attrCrud>
     </span>
     <span v-else-if="type.prop==='tab2'">妯℃澘娴佺▼</span>
     <span v-else-if="type.prop==='tab3'">妯℃澘闃舵</span>
@@ -14,6 +14,7 @@
 <script>
 export default {
   name: "TemplatePro.vue",
+  props: ['ProData'],
   data: function () {
     return {
       type: {},
@@ -36,193 +37,339 @@
           prop: 'tab4',
         }]
       },
-      data:[
-        {
-          EnglishNum:"娴嬭瘯涓�",
-          ChinaName:"娴嬭瘯涓�",
-          PropGruop:"娴嬭瘯涓�",
-          Type:"娴嬭瘯涓�"
-        },
-        {
-          EnglishNum:"娴嬭瘯浜�",
-          ChinaName:"娴嬭瘯浜�",
-          PropGruop:"娴嬭瘯浜�",
-          Type:"娴嬭瘯浜�"
-        },
-        {
-          EnglishNum:"娴嬭瘯涓�",
-          ChinaName:"娴嬭瘯涓�",
-          PropGruop:"娴嬭瘯涓�",
-          Type:"娴嬭瘯涓�"
-        }
-      ],
-      option: {
-        index: true,
-        border: true,
-        editBtn:false,
-        labelWidth:110,
-        column: [
-          {
-            label: "灞炴�ц嫳鏂囩紪鍙�",
-            prop: "EnglishNum",
-            fixed:true,
-            labelWidth:110,
-            width:95
-          },
-          {
-            label: "灞炴�т腑鏂囧悕绉�",
-            prop: "ChinaName",
-            fixed:true,
-            width:95
-          },
-          {
-            label: "灞炴�у垎缁�",
-            prop: "PropGruop"
-          },
-          {
-            label: "绫诲瀷",
-            prop: "Type"
-          },
-          {
-            label: "鍒楄〃瀹藉害",
-            prop: "ListWidth"
-          },
-          {
-            label: "鍏抽敭灞炴��",
-            prop: "KeyAttr"
-          },
-          {
-            label: "鏌ヨ灞炴��",
-            prop: "QueryPro"
-          },
-          {
-            label: "楂樼骇鏌ヨ灞炴��",
-            prop: "SeniorQueryPro",
-            width:95
-          },
-          {
-            label: "鐩镐技鏌ヨ灞炴��",
-            prop: "SimilarPro",
-            width:95
-          },
-          {
-            label: "蹇呰緭",
-            prop: "MustLose"
-          },
-          {
-            label: "琛ㄥ崟鏄剧ず",
-            prop: "FormDIs"
-          },
-          {
-            label: "鍒楄〃鏄剧ず",
-            prop: "TableDis"
-          },
-          {
-            label: "鍙",
-            prop: "readOnly"
-          },
-          {
-            label: "鍒楄〃鎺掑簭",
-            prop: "ListSort"
-          },
 
-          {
-            label: "澶氳鏂囨湰",
-            prop:"LineText",
-          },
-          {
-            label: "榛樿鍊�",
-            prop:"DefaultValue",
-          },
-          {
-            label: "鍓嶇紑",
-            prop:"prefix",
-          },
-          {
-            label: "鍚庣紑",
-            prop:"suffix"
-          },
-          {
-            label: "缁勫悎瑙勫垯",
-            prop:"ComRules"
-          },
-          {
-            label: "楠岃瘉瑙勫垯",
-            prop:"rules"
-          },
-          {
-            label: "鏃堕棿鏍煎紡",
-            prop:"TimeForm"
-          },
-          {
-            label: "鍒嗙被娉ㄥ叆",
-            prop:"claInjection"
-          },
-          {
-            label: "鍒嗙被娉ㄥ叆",
-            prop:"EnuInjection"
-          },
-          {
-            label: "绾ц仈灞炴��",
-            prop:"CasProp"
-          },
-          {
-            label: "鍙傜収閰嶇疆",
-            prop:"RefConfig"
-          },
-          {
-            label: "绾ц仈鏌ヨ灞炴��",
-            prop:"CasQueryProp"
-          },
-          {
-            label: "閫夋嫨搴撴爣璇�",
-            prop:"SelectLib"
-          },
-          {
-            label: "濉啓鎻愮ず",
-            prop:"FillPrompt"
-          },
-          {
-            label: "琛ㄥ崟鏄剧ず鏍峰紡",
-            prop:"FormShow"
-          },
-          {
-            label: "琛ㄥ崟瓒呴摼鎺�",
-            prop:"FormHer"
-          },
-          {
-            label: "琛ㄦ牸鏄剧ずjs",
-            prop:"CrudJs"
-          },
-          {
-            label: "闀垮害",
-            prop:"length"
-          },
-          {
-            label: "灏忔暟绮惧害",
-            prop:"DecimalPrecis"
-          },
-          {
-            label: "鍙栧�艰寖鍥�",
-            prop:"ValueRange"
-          },
-        ]
-      }
     }
   },
   created() {
+    // 杩涘叆椤甸潰榛樿鏄ā鏉垮睘鎬�
     this.type = this.Taboption.column[0];
-    this.type.prop="tab1"
+    this.type.prop = "tab1"
   },
   methods: {
+    // Tab鏍忓垏鎹�
     handleChange(column) {
       this.type = column
       this.$message.success(JSON.stringify(column))
-    }
+    },
   }
 }
 </script>
 
-<style scoped>
+
+<!--<template>-->
+<!--  &lt;!&ndash; 浣跨敤 Element UI 鐨勮〃鏍肩粍浠跺睍绀烘暟鎹� &ndash;&gt;-->
+<!--  &lt;!&ndash; 瀵规瘡琛屾暟鎹覆鏌撲竴涓〃鏍艰缁勪欢 &ndash;&gt;-->
+<!--  <el-table :data="data">-->
+<!--    <el-table-column v-for="column in columns" :key="column.prop" :label="column.label">-->
+<!--      <template slot-scope="scope">-->
+<!--        <template v-if="isEditing(scope.$index, column.prop)">-->
+<!--          &lt;!&ndash; 浣跨敤鑷畾涔夎緭鍏ユ锛岀粦瀹氭暟鎹苟鐩戝惉 blur 浜嬩欢 &ndash;&gt;-->
+<!--          <el-input v-model="editorModel[scope.$index][column.prop]" ref="editor"-->
+<!--                    @blur="onEditorBlur(scope.$index, column.prop)">-->
+<!--          </el-input>-->
+<!--        </template>-->
+<!--        <template v-else>-->
+<!--          &lt;!&ndash; 灏嗘暟鎹覆鏌撲负琛ㄦ牸鍗曞厓鏍硷紝缁戝畾 click 浜嬩欢 &ndash;&gt;-->
+<!--          <div @click="onCellClick(scope.$index, column.prop)"-->
+<!--               :style="{cursor: 'pointer', backgroundColor: isEditing(scope.$index, column.prop) ? '#F0F0F0' : 'transparent'}">-->
+<!--            {{ scope.row[column.prop] === "" ? '' : scope.row[column.prop] }}-->
+<!--          </div>-->
+<!--        </template>-->
+<!--      </template>-->
+<!--    </el-table-column>-->
+<!--  </el-table>-->
+<!--</template>-->
+
+<!--<script>-->
+<!--export default {-->
+<!--  data() {-->
+<!--    // 缁勪欢鐨勬暟鎹紝鍖呮嫭琛ㄦ牸鐨勬暟鎹�佸垪瀹氫箟鍜屽綋鍓嶆鍦ㄧ紪杈戠殑琛屽拰鍒�-->
+<!--    return {-->
+<!--      data: [-->
+<!--        { id: 1, name: '寮犱笁', age: 18, attributegroup: '鐢�', attributeDataTypeText: '骞夸笢鐪佹繁鍦冲競' },-->
+<!--        { id: 2, name: '鏉庡洓', age: 20, attributegroup: '濂�', attributeDataTypeText: '鍖椾含甯傛捣娣�鍖�' },-->
+<!--        { id: 3, name: '鐜嬩簲', age: 22, attributegroup: '鐢�', attributeDataTypeText: '涓婃捣甯傛郸涓滄柊鍖�' },-->
+<!--        { id: 4, name: '璧靛叚', age: 24, attributegroup: '濂�', attributeDataTypeText: '骞夸笢鐪佸箍宸炲競' }-->
+<!--      ],-->
+<!--      columns: [  // 瀹氫箟琛ㄦ牸鐨勫垪-->
+<!--        {-->
+<!--          label: "灞炴�ц嫳鏂囩紪鍙�",-->
+<!--          prop: "id",-->
+<!--          fixed: true,-->
+<!--          cell: false,-->
+<!--          labelWidth: 110,-->
+<!--          width: 125,-->
+<!--          sortable: true,-->
+<!--        },-->
+<!--        {-->
+<!--          label: "灞炴�т腑鏂囧悕绉�",-->
+<!--          prop: "name",-->
+<!--          fixed: true,-->
+<!--          cell: false,-->
+<!--          width: 125,-->
+<!--          sortable: true-->
+<!--        },-->
+<!--        {-->
+<!--          label: "灞炴�у垎缁�",-->
+<!--          prop: "attributegroup",-->
+<!--          cell: false,-->
+<!--          sortable: true,-->
+<!--          width: 125,-->
+<!--        },-->
+<!--        {-->
+<!--          label: "绫诲瀷",-->
+<!--          prop: "attributeDataTypeText",-->
+<!--          cell: false,-->
+<!--          sortable: true,-->
+<!--        },-->
+<!--        {-->
+<!--          label: "鍒楄〃瀹藉害",-->
+<!--          prop: "attrTableWidth",-->
+<!--          cell: false,-->
+<!--          sortable: true,-->
+<!--          width: 105,-->
+<!--        },-->
+<!--        {-->
+<!--          label: "鍏抽敭灞炴��",-->
+<!--          prop: "keyattrflag",-->
+<!--          cell: false,-->
+<!--        },-->
+<!--        {-->
+<!--          label: "鏌ヨ灞炴��",-->
+<!--          prop: "queryattrflag",-->
+<!--          cell: false,-->
+<!--        },-->
+<!--        {-->
+<!--          label: "楂樼骇鏌ヨ灞炴��",-->
+<!--          prop: "seniorqueryattrflag",-->
+<!--          width: 95,-->
+<!--          cell: false,-->
+<!--        },-->
+<!--        {-->
+<!--          label: "鐩镐技鏌ヨ灞炴��",-->
+<!--          prop: "samerepeatattrflag",-->
+<!--          width: 95,-->
+<!--          cell: false,-->
+<!--        },-->
+<!--        {-->
+<!--          label: "蹇呰緭",-->
+<!--          prop: "requireflag",-->
+<!--          cell: false,-->
+<!--        },-->
+<!--        {-->
+<!--          label: "琛ㄥ崟鏄剧ず",-->
+<!--          prop: "formdisplayflag",-->
+<!--          cell: false,-->
+<!--        },-->
+<!--        {-->
+<!--          label: "鍒楄〃鏄剧ず",-->
+<!--          prop: "tabledisplayflag",-->
+<!--          cell: false,-->
+<!--        },-->
+<!--        {-->
+<!--          label: "鍙",-->
+<!--          prop: "readonlyflag",-->
+<!--          cell: false,-->
+<!--        },-->
+<!--        {-->
+<!--          label: "鍒楄〃鎺掑簭",-->
+<!--          prop: "sortattrflag",-->
+<!--          cell: false,-->
+<!--        },-->
+
+<!--        {-->
+<!--          label: "澶氳鏂囨湰",-->
+<!--          prop: "textareaflag",-->
+<!--          cell: false,-->
+<!--        },-->
+<!--        {-->
+<!--          label: "榛樿鍊�",-->
+<!--          prop: "defaultvalue",-->
+<!--          sortable: true,-->
+<!--          cell: false,-->
+<!--          width: 95,-->
+<!--        },-->
+<!--        {-->
+<!--          label: "鍓嶇紑",-->
+<!--          prop: "prefixvalue",-->
+<!--          sortable: true,-->
+<!--          cell: false,-->
+<!--        },-->
+<!--        {-->
+<!--          label: "鍚庣紑",-->
+<!--          prop: "suffixvalue",-->
+<!--          sortable: true,-->
+<!--          cell: false,-->
+<!--        },-->
+<!--        {-->
+<!--          label: "缁勫悎瑙勫垯",-->
+<!--          prop: "componentrule",-->
+<!--          sortable: true,-->
+<!--          cell: false,-->
+<!--          width: 105,-->
+<!--        },-->
+<!--        {-->
+<!--          label: "楠岃瘉瑙勫垯",-->
+<!--          prop: "verifyrule",-->
+<!--          sortable: true,-->
+<!--          cell: false,-->
+<!--          width: 105,-->
+<!--        },-->
+<!--        {-->
+<!--          label: "鏃堕棿鏍煎紡",-->
+<!--          prop: "codedateformat",-->
+<!--          sortable: true,-->
+<!--          width: 105,-->
+<!--          cell: false,-->
+<!--        },-->
+<!--        {-->
+<!--          label: "鍒嗙被娉ㄥ叆",-->
+<!--          prop: "classifyinvokelevel",-->
+<!--          cell: false,-->
+<!--        },-->
+<!--        {-->
+<!--          label: "鏋氫妇娉ㄥ叆",-->
+<!--          prop: "enumString",-->
+<!--          cell: false,-->
+<!--        },-->
+<!--        {-->
+<!--          label: "绾ц仈灞炴��",-->
+<!--          prop: "parentCode",-->
+<!--          cell: false,-->
+<!--        },-->
+<!--        {-->
+<!--          label: "鍙傜収閰嶇疆",-->
+<!--          prop: "referConfig",-->
+<!--          cell: false,-->
+<!--        },-->
+<!--        {-->
+<!--          label: "绾ц仈鏌ヨ灞炴��",-->
+<!--          prop: "parentQueryAttr",-->
+<!--          width: 105,-->
+<!--          cell: false,-->
+<!--        },-->
+<!--        {-->
+<!--          label: "閫夋嫨搴撴爣璇�",-->
+<!--          prop: "libraryIdentification",-->
+<!--          width: 105,-->
+<!--          cell: false,-->
+<!--        },-->
+<!--        {-->
+<!--          label: "濉啓鎻愮ず",-->
+<!--          prop: "explain",-->
+<!--          cell: false,-->
+<!--        },-->
+<!--        {-->
+<!--          label: "琛ㄥ崟鏄剧ず鏍峰紡",-->
+<!--          prop: "formdisplaystyle",-->
+<!--          width: 105,-->
+<!--          cell: false,-->
+<!--        },-->
+<!--        {-->
+<!--          label: "琛ㄦ牸鏄剧ず鏍峰紡",-->
+<!--          prop: "tabledisplaystyle",-->
+<!--          width: 105,-->
+<!--          cell: false,-->
+<!--        },-->
+<!--        {-->
+<!--          label: "琛ㄥ崟瓒呴摼鎺�",-->
+<!--          prop: "formhref",-->
+<!--          width: 95,-->
+<!--          cell: false,-->
+<!--        },-->
+<!--        {-->
+<!--          label: "琛ㄦ牸瓒呴摼鎺�",-->
+<!--          prop: "tablehref",-->
+<!--          width: 95,-->
+<!--          cell: false,-->
+<!--        },-->
+<!--        {-->
+<!--          label: "琛ㄦ牸鏄剧ずjs",-->
+<!--          prop: "tabledisplayjs",-->
+<!--          width: 95,-->
+<!--          cell: false,-->
+<!--        },-->
+<!--        {-->
+<!--          label: "闀垮害",-->
+<!--          prop: "controllength",-->
+<!--          cell: false,-->
+<!--        },-->
+<!--        {-->
+<!--          label: "灏忔暟绮惧害",-->
+<!--          prop: "precisionlength",-->
+<!--          cell: false,-->
+<!--        },-->
+<!--        {-->
+<!--          label: "鍙栧�艰寖鍥�",-->
+<!--          prop: "valuearea",-->
+<!--          sortable: true,-->
+<!--          cell: false,-->
+<!--          width: 105,-->
+<!--        },-->
+
+<!--      ],-->
+<!--      editingIndex: -1,  // 褰撳墠姝e湪缂栬緫鐨勮鐨勭储寮�-->
+<!--      editingColumn: '',  // 褰撳墠姝e湪缂栬緫鐨勫垪鐨勫睘鎬у悕-->
+<!--      editorModel: []  // 缂栬緫妗嗙殑鏁版嵁锛屼娇鐢ㄦ暟缁勪繚瀛樻瘡涓崟鍏冩牸鐨勬暟鎹�-->
+<!--    };-->
+<!--  },-->
+<!--  created() {-->
+<!--    // 鍦ㄧ粍浠跺垱寤烘椂锛屽垵濮嬪寲缂栬緫妗嗙殑鏁版嵁-->
+<!--    this.editorModel = this.data.map(row => {-->
+<!--      const editorRow = {};-->
+<!--      this.columns.forEach(column => {-->
+<!--        editorRow[column.prop] = row[column.prop];-->
+<!--      });-->
+<!--      return editorRow;-->
+<!--    });-->
+<!--  },-->
+<!--  methods: {-->
+<!--    // 鍗曞厓鏍肩偣鍑讳簨浠跺鐞嗗嚱鏁�-->
+<!--    onCellClick(rowIndex, columnProp) {-->
+<!--      if (this.editingIndex >= 0 && this.editingColumn) {-->
+<!--        this.onEditorBlur(this.editingIndex, this.editingColumn);-->
+<!--        return;-->
+<!--      }-->
+
+<!--      const cellValue = this.data[rowIndex][columnProp];-->
+<!--      if (cellValue === undefined || cellValue === null) {-->
+<!--        this.data[rowIndex][columnProp] = '';-->
+<!--      }-->
+
+<!--      this.editingIndex = rowIndex;-->
+<!--      this.editingColumn = columnProp;-->
+
+<!--      this.$nextTick(() => {-->
+<!--        this.$refs.editor.focus();-->
+<!--      });-->
+<!--    },-->
+
+<!--    // 缂栬緫妗嗗け鐒︿簨浠跺鐞嗗嚱鏁�-->
+<!--    onEditorBlur(rowIndex, columnProp) {-->
+<!--      // 灏嗗綋鍓嶇紪杈戞鐨勬暟鎹繚瀛樺埌琛ㄦ牸鏁版嵁涓�-->
+<!--      const editorValue = this.editorModel[rowIndex][columnProp];-->
+<!--      if (editorValue === '') {-->
+<!--        this.data[rowIndex][columnProp] = undefined;-->
+<!--      } else {-->
+<!--        this.data[rowIndex][columnProp] = editorValue;-->
+<!--      }-->
+
+<!--      this.editingIndex = -1;-->
+<!--      this.editingColumn = '';-->
+<!--    },-->
+<!--    // 鍒ゆ柇鎸囧畾鍗曞厓鏍兼槸鍚﹀湪缂栬緫鐘舵��-->
+<!--    isEditing(rowIndex, columnProp) {-->
+<!--      return rowIndex === this.editingIndex && columnProp === this.editingColumn;-->
+<!--    }-->
+<!--  }-->
+<!--};-->
+<!--</script>-->
+
+
+<style lang="scss" scoped>
+//淇敼鍒嗙被娉ㄥ叆瀵硅瘽妗嗗叕鍏辨牱寮�
+.mydialog .el-dialog__body {
+  padding: 10px 20px 30px;
+}
 
 </style>
diff --git a/Source/UBCS-WEB/src/components/Tree/attrCrud.vue b/Source/UBCS-WEB/src/components/Tree/attrCrud.vue
index 452fabc..e5871d2 100644
--- a/Source/UBCS-WEB/src/components/Tree/attrCrud.vue
+++ b/Source/UBCS-WEB/src/components/Tree/attrCrud.vue
@@ -1,8 +1,8 @@
 <template>
-  <avue-crud :data="data" :option="option" @sort-change="sortChange" @row-update="addUpdate"
+  <avue-crud :data="ProData" :option="option" @sort-change="sortChange" @row-update="addUpdate"
              @cell-click="handleRowClick">
     <template slot="menuLeft">
-      <el-button v-if="attrEditVisible == false" size="small" type="primary" @click="addVisible=true">锛� 娣诲姞</el-button>
+      <el-button v-if="attrEditVisible == false" size="small" type="primary" @click="addVisible=true">锛� 娣诲姞 {{msg}}</el-button>
       <el-dialog :visible.sync="addVisible" append-to-body title="浠庝笟鍔$被鍨嬩腑閫夋嫨灞炴��">
         <avue-crud :data="businessData" :option="businessOption"></avue-crud>
       </el-dialog>
@@ -176,9 +176,9 @@
 <script>
 export default {
   name: "attrCrud .vue",
+  props: ['ProData'],
   data() {
     return {
-
       CascadeVisible: false,
       attrEditVisible: false,
       // 绾ц仈鍗曢��
@@ -753,6 +753,7 @@
   },
   mounted() {
     console.log(this.attrEditVisible)
+    console.log(this.ProData)
   },
   methods: {
     addsHandler(){
@@ -760,6 +761,7 @@
     },
     // screenEdit(){
     //   debugger
+
     //   this.attrEditVisible=true;
     // },
     // outEdit(){
diff --git a/Source/UBCS-WEB/src/components/Tree/classifyTreeform.vue b/Source/UBCS-WEB/src/components/Tree/classifyTreeform.vue
index 1fef09a..90996f3 100644
--- a/Source/UBCS-WEB/src/components/Tree/classifyTreeform.vue
+++ b/Source/UBCS-WEB/src/components/Tree/classifyTreeform.vue
@@ -1,6 +1,5 @@
 <template>
   <avue-form v-model="TreeNewForm" :option="option" @submit="submit">
-
   </avue-form>
 
 </template>
@@ -18,24 +17,56 @@
       option: {
         column: [
           {
-            label: '濮撳悕',
+            label: '涓婚搴�/鍒嗙被缂栧彿',
+            prop: 'btmtypeid',
+            labelWidth:128,
+            readonly: true,
+            rules: [{
+              required: true,
+              message: "涓婚搴�/鍒嗙被缂栧彿",
+              trigger: "blur"
+            }]
+          },
+          {
+            label: '涓婚搴�/鍒嗙被鍚嶇О',
             prop: 'name',
             readonly: true,
+            labelWidth:128,
             rules: [{
               required: true,
-              message: "璇疯緭鍏ュ鍚�",
+              message: "涓婚搴�/鍒嗙被鍚嶇О",
               trigger: "blur"
             }]
-          }, {
-            label: '鎬у埆',
-            prop: 'sex',
+          },
+          {
+            label:"鎻忚堪",
+            prop:"description"
+          },
+          {
+            label: '瀛樺偍鐨勪笟鍔$被鍨�',
+            prop: 'btmtypename',
+            labelWidth:128,
             readonly: true,
             rules: [{
               required: true,
-              message: "璇疯緭鍏ユ�у埆",
+              message: "瀛樺偍鐨勪笟鍔$被鍨�",
               trigger: "blur"
             }]
-          }
+          },
+          {
+            label:"缂栫爜瑙勫垯",
+            prop:"coderuleoidName"
+          },
+          {
+            label:"蹇界暐澶у皬鍐欐煡閲�",
+            prop:"codekeyattrrepeatoidName",
+            labelWidth:128,
+          },
+          {
+            label:"鐩镐技鏌ヨ瑙勫垯",
+            prop:"codeResembleRuleOidName",
+            labelWidth:100,
+          },
         ]
       },
       FormList: {}
diff --git a/Source/UBCS-WEB/src/components/Tree/classifyTrees.vue b/Source/UBCS-WEB/src/components/Tree/classifyTrees.vue
index 7bda38b..d522692 100644
--- a/Source/UBCS-WEB/src/components/Tree/classifyTrees.vue
+++ b/Source/UBCS-WEB/src/components/Tree/classifyTrees.vue
@@ -1,45 +1,165 @@
 <template>
   <el-container>
-<!--    宸︿晶鑿滃崟-->
-    <el-aside >
-      <basic-container>
-        <avue-tree ref="tree" v-model="form" :data="Treedata" :option="Treeoption" @node-click=" nodeClick"
-                   @del="rowDel" @save="rowSave" @check-change="checkChange"  style="height: 754px"  >
+    <!--    宸︿晶鑿滃崟-->
+    <el-aside>
+      <basic-container style="height: 85vh; max-height: 155vh; overflow-y: scroll;">
+        <div>
+          <div style="display: flex;justify-content: space-around">
+            <el-button plain size="small" type="primary" @click="TreeAdd">娣诲姞</el-button>
+            <el-button plain size="small" type="primary" @click="TreeEdit">淇敼</el-button>
+            <el-button plain size="small" type="primary" @click="TreeDel">鍒犻櫎</el-button>
+            <el-button plain size="small" type="primary" @click="Enable">鍚敤</el-button>
+          </div>
+          <div style="display: flex;justify-content: space-around;margin-top: 5px;margin-bottom: 5px">
+            <el-button plain size="small" type="primary" @click="Deactivate">鍋滅敤</el-button>
+            <el-button plain size="small" type="primary" @click="ExportExcel">瀵煎嚭</el-button>
+            <el-button plain size="small" type="primary" @click="ImportExcel">瀵煎叆</el-button>
+            <el-button plain size="small" type="primary" @click="flushed">鍒锋柊</el-button>
+          </div>
+        </div>
+        <!--        鏍戣妭鐐规坊鍔犲璇濇-->
+        <el-dialog :title="this.TreeFlag ? '娣诲姞鍒嗙被' :'娣诲姞涓婚搴�'" :visible.sync="TreeAddFormVisible" append-to-body
+                   style="width: 1700px;margin: auto">
+          <el-form :model="TreeAddform">
+            <el-form-item :label="this.TreeFlag ? '鍒嗙被缂栧彿锛�' :'涓婚搴撶紪鍙凤細'" label-width="150px" style="display: inline-block">
+              <el-input v-model="TreeAddform.id" autocomplete="off" style="width: 170px"></el-input>
+            </el-form-item>
+            <el-form-item :label="this.TreeFlag ? '鍒嗙被鍚嶇О锛�' :'涓婚搴撳悕绉帮細'" label-width="100px" style="display: inline-block">
+              <el-input v-model="TreeAddform.name" autocomplete="off" style="width: 170px"></el-input>
+            </el-form-item>
+            <el-form-item label="鎻忚堪锛�" label-width="150px">
+              <el-input v-model="TreeAddform.description" autocomplete="off" style="width: 585px"></el-input>
+            </el-form-item>
+            <el-form-item v-show="this.TreeFlag==false" label="瀛樺偍鐨勪笟鍔$被鍨嬶細" label-width="150px">
+              <el-input v-model="TreeAddform.btmtypename" autocomplete="off" style="width: 585px"></el-input>
+            </el-form-item>
+            <el-form-item label="缂栫爜瑙勫垯锛�" label-width="150px">
+              <el-input v-model="TreeAddform.coderuleoidName" autocomplete="off" style="width: 585px"></el-input>
+            </el-form-item>
+            <el-form-item label="鍏抽敭灞炴�ф煡璇㈣鍒欙細" label-width="150px">
+              <el-input v-model="TreeAddform.codekeyattrrepeatoidName" autocomplete="off"
+                        style="width: 585px"></el-input>
+            </el-form-item>
+            <el-form-item label="鐩镐技鏌ヨ瑙勫垯锛�" label-width="150px">
+              <el-input v-model="TreeAddform.codeResembleRuleOidName" autocomplete="off"
+                        style="width: 585px"></el-input>
+            </el-form-item>
+          </el-form>
+          <div slot="footer" class="dialog-footer">
+            <el-button @click="TreeAddFormVisible = false">鍙� 娑�</el-button>
+            <el-button type="primary" @click="TreeAddHandler">纭� 瀹�</el-button>
+          </div>
+        </el-dialog>
+        <!--        淇敼瀵硅瘽妗�-->
+        <el-dialog :visible.sync="TreeEditFormVisible" append-to-body title="淇敼鍒嗙被">
+          <classifyTreeform ref="childForm" :TreeNewForm="TreeList" :nodeList="nodeList"></classifyTreeform>
+        </el-dialog>
+        <avue-tree ref="tree" v-model="TreeAvueform" v-loading="loading" :data="Treedata" :defaultExpandAll="false"
+                   :option="Treeoption"
+                   style="height: 80.5vh;padding-top: 5px;padding-bottom: 30px"
+                   @node-click=" nodeClick"
+                   @check-change="checkChange"
+        >
         </avue-tree>
+
       </basic-container>
     </el-aside>
     <el-main>
-      <basic-container>
-<!--        鍙充晶琛ㄦ牸-->
+      <basic-container style="height: 85vh; max-height: 155vh; ">
+        <!--        鍙充晶琛ㄦ牸-->
         <avue-tabs :option="tabOption" @change="handleChange"></avue-tabs>
         <span v-if="type.prop==='tab1'">
-            <avue-crud v-model="crudForm" :data="this.Formlist" :option="this.crudTreeOption" style="height: 700px"></avue-crud>
+          <basic-container>
+               <avue-crud v-model="crudForm" :data="this.Formlist" :option="this.crudTreeOption" v-loading="FormLoing"
+               >
+            <template slot="menuLeft">
+              <el-button plain size="small" type="primary">鏌ヨ</el-button>
+              <el-button plain size="small" type="primary" @click="TemRefresh">鍒锋柊</el-button>
+              <el-button plain size="small" type="primary">浠庡叾瀹冩ā鏉垮厠闅�</el-button>
+              <div style="display: inline-block"> <el-input v-model="FindText" placeholder="璇疯緭鍏ュ叧閿瓧鎸夊洖杞︽煡璇�"
+                                                            size="small"
+                                                            @keyup.enter.native="EnterFind"></el-input></div>
+
+            </template>
+          </avue-crud>
+          </basic-container>
+    <templatePro :ProData="this.ProData"></templatePro>
         </span>
         <span v-else-if="type.prop==='tab2'">
-<!--          濡傛灉鏄〃鏍煎姞琛ㄥ崟灏卞啀娆″紩鍏ヨ繖涓猚lassifyTreeform缁勪欢锛岄噷闈㈡槸琛ㄥ崟鐨勫唴瀹癸紝娌$敤灏卞垹闄ゆ帀銆傛妸涓婇潰tab鏍忎篃鍒犻櫎浜�-->
-          <classifyTreeform  ref="childForm" :nodeList="nodeList" :TreeNewForm="TreeList"></classifyTreeform>
-          <template-pro></template-pro>
+           <classifyTreeform ref="childForm" :TreeNewForm="TreeList" :nodeList="nodeList"></classifyTreeform>
         </span>
       </basic-container>
     </el-main>
   </el-container>
 </template>
-
 <script>
 //杩欓噷澹版槑涓�浜涜彍鍗曠粍浠剁敤娉曪細棣栧厛甯冨眬鍒嗕负宸︿晶鑿滃崟鍙充晶琛ㄦ牸锛屽彲鑳戒細鏈夊彸渚ab鏍忓姞琛ㄥ崟鐨勬儏鍐点�傛墍浠ュ彟澶栧紩鍏ヤ簡涓�涓彸渚ц〃鍗曠殑缁勪欢"classifyTreeform"銆�
 //棣栧厛鐖剁粍浠惰皟鐢ㄥ瓙缁勪欢鑿滃崟锛岄�氳繃provide浼犻�掑弬鏁般�傛湁Treeoption宸︿晶鏍戞柊澧炶〃鍗曢」 Treedata宸︿晶鏍戣妭鐐归厤缃」 crudTreeOption鍙充晶琛ㄦ牸閰嶇疆椤� crudTreeData鍙充晶琛ㄦ牸鏄剧ず鍐呭
 //鍏朵腑琛ㄦ牸鐨勯厤缃」鐩存帴鐖朵紶瀛愪紶閫掕繃鏉ュ氨琛岋紝鐩存帴:option=浼犻�掔殑鍙傛暟鍚嶏紝閲岄潰鏁版嵁鏄剧ず鐨勫唴瀹瑰洜涓烘槸鍜屽乏渚ц仈鍔ㄧ殑锛屾墍浠ラ噸鏂颁竴涓狥ormlist锛岄�氳繃鐐瑰嚮鏍戣妭鐐逛笅鏍囨潵鍔ㄦ�佹覆鏌撳彸渚ц〃鏍硷紝涓嬮潰鏂规硶閮芥湁鍏蜂綋娉ㄩ噴
 //鐒跺悗鍐嶈鍙充晶鐨勮〃鍗曪紝涓撻棬瀹氫箟浜嗕竴涓粍浠讹紝閫氳繃鐖朵紶瀛愬啀鎶婅〃鍗曟暟鎹甌reeList浼犻�掕繃鍘伙紝浼犻�掑墠鍦�10deCLi1ck鏂规硶閲岄潰渚夸簡澶勭悊涔熸槸涓�涓仈鍔ㄧ殑鏁堟灉锛岃〃鍗曠殑閰嶇疆椤瑰湪鍝釜瀛愮粍浠舵垨鑰呯埗缁勪欢鍐欓兘鍙互銆�
+import {
+  getAtrrList,
+  TreeSave,
+  TreeDel,
+  TreeCheckDel,
+  TreeObjcet,
+  TreeEnable,
+  TreeDeactivate,
+  importClassify,
+  gridCodeClassifyTemplate,
+  getObjectByOid,
+  gridCodeClassifyTemplateAttr
+} from "@/api/template/templateAttr";
+
 export default {
   name: "classifyTrees.vue",
   //浣跨敤inject鎺ユ敹鍙傛暟
-  //Treeoption宸︿晶鏍戞柊澧炶〃鍗曢」 Treedata宸︿晶鏍戣妭鐐归厤缃」 crudTreeOption鍙充晶琛ㄦ牸閰嶇疆椤� crudTreeData鍙充晶琛ㄦ牸鏄剧ず鍐呭
+  //Treeoption宸︿晶鏍戞柊澧炶〃鍗曢」 Treedata宸︿晶鏍戣妭鐐� 閰嶇疆椤� crudTreeOption鍙充晶琛ㄦ牸閰嶇疆椤� crudTreeData鍙充晶琛ㄦ牸鏄剧ず鍐呭
   //Treeform鍙充晶琛ㄥ崟閰嶇疆椤�
-  inject: ['crudTreeOption',"crudTreeData", "Treedata", "Treeoption"],
+  inject: ['crudTreeOption', "crudTreeData"],
   data() {
     return {
+      ProData: [],
+      FindText: "",
+      fileList: [],
+      FlagObj: {},
+      //淇敼瀵硅瘽妗�
+      TreeEditFormVisible: false,
+      //娣诲姞瀵硅瘽妗�
+      TreeAddFormVisible: false,
+      //褰撳墠鐐瑰嚮椤�
+      nodeClickList: "",
+      //鍒嗙被鍜屼富棰樺簱鐘舵��
+      TreeFlag: false,
+      //鏍戝姞杞�
+      loading: false,
+      FormLoing:false,
+      TreeAddform: {
+        id: "",
+        name: "",
+        description: "",
+        //鐩镐技鏌ヨ瑙勫垯
+        codeResembleRuleOidName: "",
+        //鍏抽敭灞炴�ф煡璇㈣鍒�
+        codekeyattrrepeatoidName: "",
+        //缂栫爜瑙勫垯
+        coderuleoidName: "",
+        //瀛樺偍鐨勪笟鍔$被鍨�
+        btmtypename: ""
+      },
+      //avue-tree鏁版嵁锛屾殏鏃舵病鏈変綔鐢紝閲岄潰鍔熻兘鐢╡lement鍐欎簡锛屽彧鐢╝vue鐨勪竴涓爲缁勪欢涓嶇敤鍐呯疆琛ㄥ崟浜嗐��
+      TreeAvueform: {},
+      Treedata: [],
+      Treeoption: {
+        addBtn: false,
+        editBtn: false,
+        delBtn: false,
+        defaultExpandAll: false,
+        menu: false,
+        // //杩欎釜鏄閫�
+        // multiple: true,
+      },
       crudForm: "",
-      form: {},
       //鍔ㄦ�佸垏鎹㈠鐞嗚繃鐨勮〃鏍兼暟鎹�
       Formlist: [],
       //tab鐘舵��
@@ -61,50 +181,128 @@
         {
           name: "娴嬭瘯1",
           sex: "鐢�",
-          value:0
+          value: 0
         },
         {
           name: "娴嬭瘯2",
           sex: "濂�",
-          value:1
+          value: 1
         }
       ],
       //浼犻�掔粰瀛愮粍浠跺姩鎬佹覆鏌撶殑鏁版嵁
-      TreeList:{}
+      TreeList: {},
+      //瀹氫箟涓�涓ā鏉垮睘鎬d锛屾暟鎹槸妯℃澘绠$悊琛ㄦ牸閲岄潰鐨刼id
     }
   },
   //tab鏍忛粯璁ゆ槸琛ㄦ牸
   mounted() {
     this.type = this.tabOption.column[0];
+    this.getAttr();
   },
   methods: {
-    nodeClick(data) {
-      //鐐瑰嚮宸︿晶鏍戝彸渚у姩鎬佺殑鏂规硶
-      this.Formlist = this.crudTreeData[data.value].column
-      this.nodeList=data.value
-      this.TreeList = this.Treeform.find(item => {
-        return item.value == data.value
-      });
-      console.log(data)
+    //鍒嗙被鏍戞暟鎹鐞�
+    getAttr() {
+      getAtrrList().then(res => {
+        this.Treedata = res.data;
+        this.Treedata.forEach(() => {
+          for (let i = 0; i < this.Treedata.length; i++) {
+            this.Treedata[i].value = i;
+          }
+        })
+        //璋冪敤淇敼灞炴�у悕鏂规硶
+        this.ModifyProperties(this.Treedata, 'text', 'label');
+      }).catch(res => {
+        this.$message.error(res)
+      })
     },
-    //tab鏍忓垏鎹�
-    handleChange(column) {
-      this.type = column
+    //瀹氫箟涓�涓慨鏀瑰璞″睘鎬у悕鐨勬柟娉�
+    ModifyProperties(obj, oldName, newName) {
+      for (let key in obj) {
+        if (key === oldName) {
+          obj[newName] = obj[key];
+          delete obj[key];
+        }
+        if (typeof obj[key] === 'object') {
+          this.ModifyProperties(obj[key], oldName, newName);
+        }
+      }
     },
-    // 宸︽爲澶氶��
-    checkChange(val) {
-      console.log(val)
+    //鏍戣妭鐐规坊鍔犳寜閽�
+    TreeAdd() {
+      this.TreeAddFormVisible = true;
+      // 鍒ゆ柇褰撳墠鏄惁鏈夌偣鍑诲瓙椤�
+      if (this.nodeClickList !== "") {
+        this.TreeFlag = true
+      }
     },
-    //鍒犻櫎
-    rowDel(row, index, done) {
-      console.log(row)
-      this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎, 鏄惁缁х画?', '鎻愮ず', {
+    //鏍戣妭鐐规坊鍔犱簨浠�
+    TreeAddHandler() {
+      const data = this.TreeAddform
+      this.$set(data, "parentCodeClassifyOid", this.nodeClickList.oid)
+      TreeSave(data).then(() => {
+        this.$message({
+          type: 'success',
+          message: '娣诲姞鎴愬姛!'
+        });
+        this.getAttr();
+        this.TreeAddFormVisible = false
+        this.TreeAddform = ""
+      }).catch(res => {
+        this.$message({
+          type: 'warning',
+          message: res
+        });
+      })
+    },
+    //鏍戣妭鐐瑰垹闄ゆ寜閽�
+    TreeDel() {
+      this.$confirm('鏄惁鍒犻櫎褰撳墠閫夋嫨鐨勫垎绫伙紝灏嗕細鎶婂瓙鍒嗙被涓�骞跺垹闄わ紝濡傛灉瀛樺湪缂栫爜鏁版嵁灏嗕笉鑳借鍒犻櫎锛屾槸鍚︾户缁紵', '鎻愮ず', {
         confirmButtonText: '纭畾',
         cancelButtonText: '鍙栨秷',
-        type: 'warning'
+        type: 'warning',
+        customClass: 'my-messagebox',
       }).then(() => {
-        this.$message.success('鍒犻櫎鎴愬姛')
-        done();
+        TreeCheckDel(this.nodeClickList).then(res => {
+          if (res.data.data) {
+            TreeDel(this.nodeClickList).then(() => {
+              this.$message({
+                type: 'success',
+                message: '鍒犻櫎鎴愬姛!'
+              });
+              this.getAttr();
+            }).catch(res => {
+              this.$message({
+                type: 'warning',
+                message: res
+              });
+            })
+          } else {
+            this.$confirm('褰撳墠鏁版嵁鍖呭惈鏈変笅绾ф暟鎹紝瑕佸垹闄ょ殑璇濅細鍜屼笅绾ф暟鎹竴璧峰垹闄わ紝浣犵‘璁ょ户缁�?', '鎻愮ず', {
+              confirmButtonText: '纭畾',
+              cancelButtonText: '鍙栨秷',
+              type: 'warning',
+              customClass: 'my-messageboxs',
+            }).then(() => {
+              TreeDel(this.nodeClickList).then(() => {
+                this.$message({
+                  type: 'success',
+                  message: '鍒犻櫎鎴愬姛!'
+                });
+                this.getAttr();
+              }).catch(res => {
+                this.$message({
+                  type: 'warning',
+                  message: res
+                });
+              })
+            }).catch(() => {
+              this.$message({
+                type: 'info',
+                message: '宸插彇娑堝垹闄�'
+              });
+            });
+          }
+        })
       }).catch(() => {
         this.$message({
           type: 'info',
@@ -112,25 +310,182 @@
         });
       });
     },
-    //娣诲姞
-    rowSave(node,data,done,loading) {
-      this.$message.success('鏂板鍥炶皟')
-      // this.form.id = new Date().getTime();
-      // this.form.value=new Date().getTime();
-      // this.form.children=[];
-      console.log(this.form)
-      // console.log("Type",node,data,done,loading)
-      // console.log(node,"node")
-      // console.log("data",data)
-      // console.log("done",done)
-      // console.log("loading",loading)
-      done();
+    //淇敼鍥炲~
+    TreeEdit() {
+      if (this.nodeClickList == "") {
+        this.$message({
+          type: 'warning',
+          message: '璇峰厛浠庢爲涓婇�夋嫨涓�鏉℃暟鎹�!'
+        });
+      } else {
+        this.TreeEditFormVisible = true
+      }
     },
-
+    //鏍戝埛鏂�
+    flushed() {
+      this.loading = true
+      this.getAttr()
+      setTimeout(() => {
+        this.loading = false;
+        this.nodeClickList = ""
+      }, 600);
+    },
+    //鍚敤鍜屽仠鐢ㄩ兘鍏堝垽鏂姸鎬�
+    //鍚敤
+    Enable() {
+      if (this.FlagObj.lcStatus == "Enabled") {
+        this.$message({
+          type: 'warning',
+          message: '褰撳墠鍒嗙被涓嶆槸鍋滅敤鐘舵��'
+        });
+      } else {
+        this.$confirm('鏄惁灏嗗瓙鍒嗙被涓�骞跺惎鐢紵', '鎻愮ず', {
+          confirmButtonText: '鏄�',
+          cancelButtonText: '鍙栨秷',
+          type: 'warning'
+        }).then(() => {
+          TreeEnable(this.nodeClickList).then((res) => {
+            this.$message({
+              type: 'success',
+              message: '鍚敤鎴愬姛!'
+            });
+            this.getAttr()
+          })
+        }).catch(() => {
+          this.$message({
+            type: 'info',
+            message: '宸插彇娑堝惎鐢�'
+          });
+        });
+      }
+    },
+    //鍋滅敤
+    Deactivate() {
+      if (this.FlagObj.lcStatus === "Disabled") {
+        this.$message({
+          type: 'warning',
+          message: '褰撳墠鍒嗙被涓嶆槸鍚敤鐘舵��!'
+        });
+      } else {
+        this.$confirm('鏄惁鍋滅敤褰撳墠鍒嗙被锛屽仠鐢ㄥ悗锛屽瓙鍒嗙被涔熷皢涓嶈兘琚娇鐢紝鏄惁缁х画锛�', '鎻愮ず', {
+          confirmButtonText: '纭畾',
+          cancelButtonText: '鍙栨秷',
+          type: 'warning'
+        }).then(() => {
+          TreeDeactivate(this.nodeClickList).then((res) => {
+            this.$message({
+              type: 'success',
+              message: '鍋滅敤鎴愬姛!'
+            });
+            this.nodeClickList['flag'] = true;
+            this.getAttr()
+          })
+        }).catch(() => {
+          this.$message({
+            type: 'info',
+            message: '宸插彇娑堝仠鐢�'
+          });
+        });
+      }
+    },
+    async nodeClick(data) {
+      //瀹氫箟涓�涓ā鏉垮睘鎬d锛屾暟鎹槸妯℃澘绠$悊琛ㄦ牸閲岄潰鐨刼id
+      this.nodeClickList = data
+      console.log(data.oid)
+      try {
+        await TreeObjcet(data.oid).then(res => {
+          this.FlagObj = res.data.data
+        }).catch(res => {
+          this.$message.error(res)
+        })
+        //妯℃澘绠$悊琛ㄦ牸鏁版嵁
+        await gridCodeClassifyTemplate(data.oid).then(res => {
+          this.Formlist = res.data.data.filter(item => {
+          if(item.codeclassifyoid != ""){
+            return  item.codeclassifyoid == this.nodeClickList.oid
+          }
+          })
+          console.log("formlist", this.Formlist)
+          gridCodeClassifyTemplateAttr({'conditionMap[classifyTemplateOid]': this.Formlist[0].oid}).then(res => {
+            this.ProData = res.data.data
+            console.log(this.ProData)
+          }).catch(res => {
+            this.$message.error(res)
+          })
+        }).catch(res => {
+              console.log(res)
+        })
+        //  鍩烘湰淇℃伅琛ㄥ崟鏁版嵁
+        await getObjectByOid(this.nodeClickList.oid).then(res => {
+          this.TreeList = res.data.data
+          // eslint-disable-next-line no-const-assig
+        }).catch(res => {
+          this.$message.error(res)
+        })
+      } catch (error) {
+        console.log(error)
+      }
+    },
+    //tab鏍忓垏鎹�
+    handleChange(column) {
+      this.type = column
+    },
+    //妯℃澘绠$悊琛ㄦ牸鏌ヨ
+    EnterFind() {
+      console.log(this.Formlist)
+      if (this.FindText == "") {
+        gridCodeClassifyTemplate().then(res => {
+          this.Formlist = res.data.data
+        })
+      } else {
+        gridCodeClassifyTemplate().then(res => {
+            this.Formlist = res.data.data.filter(item => {
+                  return item.name.includes(this.FindText)
+              }
+            )
+          }
+        )
+      }
+    },
+    TemRefresh(){
+      this.FormLoing=true
+      if(this.nodeClickList.oid != ""){
+        gridCodeClassifyTemplate(this.nodeClickList.oid).then(res=>{
+          this.Formlist = res.data.data.filter(item => {
+            return  item.codeclassifyoid == this.nodeClickList.oid
+          })
+        })
+      }else {
+        this.FormLoing=true
+      }
+      setTimeout(() => {
+        this.FormLoing=false
+      }, 600);
+    },
+    // 宸︽爲澶氶��
+    checkChange(val) {
+      console.log(val)
+    },
   }
 }
 </script>
 
-<style lang="scss">
+<style lang="scss" scoped>
+.el-form {
+  display: flex;
+  flex-wrap: wrap; /* 璁剧疆鍙崲琛岋紝浠ヤ究鍦ㄥ皬灞忓箷璁惧涓婁娇鐢ㄥ琛屽竷灞� */
+}
 
+.el-form-item {
+  flex: 1; /* 璁剧疆鍏冪礌鍗犳嵁1浠界┖闂� */
+  margin-right: 1rem; /* 璁剧疆鍏冪礌涔嬮棿鐨勯棿璺� */
+}
+
+.my-messagebox {
+  width: 700px;
+}
+
+.my-messageboxs {
+  width: 500px;
+}
 </style>
diff --git a/Source/UBCS-WEB/src/components/code-dialog-page/formulaEditor.vue b/Source/UBCS-WEB/src/components/code-dialog-page/formulaEditor.vue
index d78462b..6488379 100644
--- a/Source/UBCS-WEB/src/components/code-dialog-page/formulaEditor.vue
+++ b/Source/UBCS-WEB/src/components/code-dialog-page/formulaEditor.vue
@@ -46,6 +46,7 @@
         <el-col :span="10">
           <el-card
             class="box-card formula-box-card"
+            data-v-49729759
             style="height: 35vh;">
             <div slot="header" class="clearfix">
               <span style="font-size: medium">杩愮畻绗�</span>
@@ -669,9 +670,9 @@
 };
 </script>
   
-<style>
+<style scoped>
 
-  .formula-box-card > .el-card__body {
+  .formula-box-card >>> .el-card__body {
     padding: 0px;
     height: 85%;
     width: 100%;
diff --git a/Source/UBCS-WEB/src/components/code-dialog-page/referConfigDialog.vue b/Source/UBCS-WEB/src/components/code-dialog-page/referConfigDialog.vue
index 38708a5..120dca7 100644
--- a/Source/UBCS-WEB/src/components/code-dialog-page/referConfigDialog.vue
+++ b/Source/UBCS-WEB/src/components/code-dialog-page/referConfigDialog.vue
@@ -6,68 +6,104 @@
       :visible.sync="isShowReferConfig"
       width="90%"
       @close="recoveryDataAndForm('initData')"
-      style="height: 110vh; margin-top: -13vh; overflow-y: hidden">
-        <div style="width: 100%; overflow-y: auto; height: 70vh">
-            <el-row>
-                <avue-form :option="formOption" v-model="form"></avue-form>
-            </el-row>
-            <el-row v-show="form.referWindowType==0 || form.referWindowType==3">
-                <avue-crud
-                    ref="crudAttr"
-                    :option="attrOption" 
-                    :data="attrData">
-                    <!-- 琛ㄦ牸鍐呮搷浣滄寜閽� -->
-                    <template slot="menu" slot-scope="scope">
-                        <el-button type="text"
-                            size="small"
-                            icon="el-icon-search"
-                            plain
-                            @click="scope.row.isquery=!scope.row.isquery">
-                            {{scope.row.isquery ? "蹇�熸煡璇�":"鍙栨秷蹇�熸煡璇�"}}
-                        </el-button>
-                        <el-button type="text"
-                            size="small"
-                            icon="el-icon-minus"
-                            plain
-                            @click="removeCurrentRow(scope.row,'removeAttr')">绉婚櫎
-                        </el-button>
-                    </template>
-                    <!-- 琛ㄦ牸宸︿笂鏂规寜閽尯鍩� -->
-                    <template slot="menuLeft" slot-scope="scope">
-                        <el-button type="primary"
-                            size="small"
-                            icon="el-icon-plus"
-                            @click="openAddSearchOrAttrDialog('selectAttr')">閫夋嫨灞炴��
-                        </el-button>
-                    </template>
-                </avue-crud>
-            </el-row>
-            <el-row>
-                <avue-crud
-                    ref="crudAddCondition"
-                    :option="addSearchCondtionOption" 
-                    :data="addSearchCondtionData">
-                    <!-- 琛ㄦ牸鍐呮搷浣滄寜閽� -->
-                    <template slot="menu" slot-scope="scope">
-                        <el-button type="text"
-                            size="small"
-                            icon="el-icon-minus"
-                            plain
-                            @click="removeCurrentRow(scope.row,'removeaddSearchCondtion')">绉婚櫎
-                        </el-button>
-                    </template>
-                    <!-- 琛ㄦ牸宸︿笂鏂规寜閽尯鍩� -->
-                    <template slot="menuLeft" slot-scope="scope">
-                        <el-button type="primary"
-                            size="small"
-                            icon="el-icon-plus"
-                            @click="openAddSearchOrAttrDialog('addSearchCondition')">
-                            娣诲姞鏌ヨ鏉′欢
-                        </el-button>
-                    </template>
-                </avue-crud>
-            </el-row>
-        </div>
+      style="height: 115vh; margin-top: -14vh; overflow-y: hidden">
+        <el-tabs v-model="activeName" @tab-click="handleClick">
+            <el-tab-pane label="鑷畾涔夊弬鐓ч厤缃�" name="first">
+                <div style="width: 100%; overflow-y: auto; height: 65vh">
+                    <el-row>
+                        <avue-form ref="form" :option="formOption" v-model="form" class="referTypeForm">
+                            <template>
+                                <el-input
+                                    ref="referType" 
+                                    placeholder="璇烽�夋嫨 鍙傜収鐨勪笟鍔$被鍨�"
+                                    prefix-icon="el-icon-search"
+                                    readonly="true"
+                                    v-model="form.referType"
+                                    @focus="openAttrSelectOrGetValue('referType')">
+                                    <i slot="suffix" class="el-icon-circle-close" @click="clearAttrDataByIcon('referType')" style="margin-right: 5px;cursor: pointer;"></i>
+                                </el-input>
+                            </template>
+                        </avue-form>
+                    </el-row>
+                    <el-row v-show="form.type=='default' || form.type=='grid'">
+                        <avue-crud
+                            ref="crudAttr"
+                            :option="attrOption"
+                            @cell-click="clicktest"
+                            :data="attrData">
+                            <!-- 琛ㄦ牸鍐呮搷浣滄寜閽� -->
+                            <template slot="menu" slot-scope="scope">
+                                <el-button type="text"
+                                    size="small"
+                                    icon="el-icon-search"
+                                    plain
+                                    @click="scope.row.isquery=!scope.row.isquery">
+                                    {{scope.row.isquery ? "鍙栨秷蹇�熸煡璇�":"蹇�熸煡璇�"}}
+                                </el-button>
+                                <el-button type="text"
+                                    size="small"
+                                    icon="el-icon-minus"
+                                    plain
+                                    @click="removeCurrentRow(scope.row,'removeAttr')">绉婚櫎
+                                </el-button>
+                            </template>
+                            <!-- 琛ㄦ牸宸︿笂鏂规寜閽尯鍩� -->
+                            <template slot="menuLeft" slot-scope="scope">
+                                <el-button type="primary"
+                                    size="small"
+                                    icon="el-icon-plus"
+                                    @click="openAddSearchOrAttrDialog('selectAttr')">閫夋嫨灞炴��
+                                </el-button>
+                            </template>
+                        </avue-crud>
+                    </el-row>
+                    <el-row>
+                        <avue-crud
+                            ref="crudAddCondition"
+                            :option="addSearchCondtionOption" 
+                            :data="addSearchCondtionData">
+                            <!-- 琛ㄦ牸鍐呮搷浣滄寜閽� -->
+                            <template slot="menu" slot-scope="scope">
+                                <el-button type="text"
+                                    size="small"
+                                    icon="el-icon-minus"
+                                    plain
+                                    @click="removeCurrentRow(scope.row,'removeaddSearchCondtion')">绉婚櫎
+                                </el-button>
+                            </template>
+                            <!-- 琛ㄦ牸宸︿笂鏂规寜閽尯鍩� -->
+                            <template slot="menuLeft" slot-scope="scope">
+                                <el-button type="primary"
+                                    size="small"
+                                    icon="el-icon-plus"
+                                    @click="openAddSearchOrAttrDialog('addSearchCondition')">
+                                    娣诲姞鏌ヨ鏉′欢
+                                </el-button>
+                            </template>
+                        </avue-crud>
+                    </el-row>
+                </div>
+            </el-tab-pane>
+            <el-tab-pane label="鐩存帴閫夊彇鍙傜収閰嶇疆" name="second">
+                <div style="width: 100%; overflow-y: auto; height: 65vh">
+                    <avue-crud
+                        :option="optionSelectReferConfig"
+                        :table-loading="selectReferConfigLoading"
+                        :data="selectReferConfigData"
+                        :page.sync="selectReferConfigPage"
+                        ref="selectReferConfigCrud"
+                        @row-click="codeRuleRowClick"
+                        @search-change="searchChange"
+                        @search-reset="searchReset"
+                        @selection-change="selectionChange"
+                        @current-change="currentChange"
+                        @size-change="sizeChange"
+                        @refresh-change="refreshChange"
+                        @on-load="onLoad">
+                    </avue-crud>
+                </div>
+            </el-tab-pane>
+        </el-tabs>
         <div slot="footer" class="dialog-footer">
             <el-button type="primary" @click="selectedListReferConfig">纭� 瀹�</el-button>
             <el-button @click="recoveryDataAndForm('initForm')">娓呯┖鍐呭</el-button>
@@ -83,19 +119,38 @@
         props: {
             //鏈満鏅彉閲�
             thisSceneTableData: {
-            type: Array,
+                type: Array,
             },
         },
         data() {
             return {
+                activeName: 'first', //褰撳墠娲诲姩鐨則abs
                 labelWidth: '150',   // 鏍囬瀹藉害
                 isShowReferConfig: false,  // 瀵硅瘽妗嗘樉绀洪殣钘忔帶鍒�
                 // 琛ㄥ崟瀵硅薄
                 form: {
-                    text: '',
-                    text1: '',
-                    text2: '',
-                    referWindowType: 0, //鍙傜収绐楀彛绫诲瀷
+                    referType: '',
+                    textField: 'name',
+                    valueField: 'oid',
+                    type: 'default', //鍙傜収绐楀彛绫诲瀷
+                    url: '',
+                    backPath: '',
+                    method: 'GET',
+                    height: '',
+                    useFormKey: '',
+                    paramForFormKey: '',
+                    isMuti: false,
+                    mapFields: '', 
+                    // limit: '15',
+                    // sortField: '',
+                    // sortType: 'asc',
+                    // referContent: '',
+                    // displayTable: '',
+                    // parentFieldName: '',
+                    // parentUsedField: 'oid',
+                    // parentValue: '',
+                    // loadType: 'all',
+                    // onlyLeaf: false,
                 },
                 attrData: [
                     {
@@ -211,12 +266,96 @@
                             prop: "value",
                         }
                     ]
-                }
+                },
+
+                optionSelectReferConfig: {
+                    height:'auto',
+                    tip: false,
+                    addBtn: false,
+                    editBtn: false,
+                    //searchShow: false,
+                    searchMenuSpan: 6,
+                    border: false,
+                    index: true,
+                    viewBtn: false,
+                    delBtn: false,
+                    //selection: false,
+                    //disablePage: false,
+                    //refreshBtn: false,
+                    //columnBtn: false,
+                    dialogClickModal: false,
+                    highlightCurrentRow: true,
+                    column: [
+                        {
+                            label: "鍒楀瓧娈�(*)",
+                            prop: "field",
+                        },{
+                            label: "鍒楀悕(*)",
+                            prop: "title",
+                        },{
+                            label: "瀛楁绫诲瀷(*)",
+                            prop: "fieldTypeText",
+                        },{
+                            label: "鍒楄〃鍙帓搴�",
+                            prop: "sort",
+                        },{
+                            label: "鎺掑簭瀛楁",
+                            prop: "sortField",
+                        },{
+                            label: "瀛楁瀹藉害",
+                            prop: "width",
+                        },{
+                            label: "鍒楀浐瀹氫綅缃�",
+                            prop: "fixedText",
+                        },{
+                            label: "js鏄剧ず浠g爜",
+                            prop: "templet",
+                        },
+                    ]
+                },
+                selectReferConfigLoading: false,
+                selectReferConfigData: [
+                    {
+                        field: 'id',
+                        title: '缂栧彿',
+                        fieldType: 'text',
+                        fieldTypeText: '鏂囨湰妗�',
+                        sort: "true",
+                        sortField: 'id',
+                        width: '150',
+                        isquery: true,
+                    },{
+                        field: 'name',
+                        title: '鍚嶇О',
+                        fieldType: 'text',
+                        fieldTypeText: '鏂囨湰妗�',
+                        sort: "true",
+                        sortField: 'name',
+                        width: '180',
+                        isquery: true,
+                    }
+                ],
+                selectReferConfigPage: {
+                    pageSize: 10,
+                    currentPage: 1,
+                    total: 0
+                },
+                selectReferConfigQuery: {},
+
             };
         },
         // 琛ㄥ崟鐣岄潰鏄剧ず鍐呭閰嶇疆
         computed: {
             formOption() {
+                /** 妫�楠屾槸鍚︿负鏁板瓧 */
+                let validateNumber = "";
+                validateNumber = (rule, value,callback) => {
+                    if(/[^\d]/g.test(value)){
+                        callback(new Error('绐楀彛鏄剧ず鐨勯珮搴﹀繀椤讳负鏁板�肩被鍨�'));
+                    }else {
+                        callback();
+                    }
+                };
                 return {
                     submitBtn: false,
                     emptyBtn: false,
@@ -225,11 +364,27 @@
                     column: [
                         {
                             label: '鍙傜収鐨勪笟鍔$被鍨�',
-                            prop: 'text1',
+                            prop: 'referType',
                             span: 7,
-                            type: 'table',
+                            tip: '鍙傜収鏁版嵁鏌ヨ鐨勪笟鍔$被鍨嬨��',
+                            tipPlacement: 'right',
+                            type: 'input',
+                            rules: [{
+                                required: true,
+                                message: "(鍙傜収鐨勪笟鍔$被鍨�)蹇呭~椤逛笉鑳戒负绌�",
+                                trigger: "blur",
+                            }],
                             children: {
                                 border: true,
+                                height: '200px',
+                                tip: false,
+                                //searchShow: false,
+                                index: true,
+                                selection: true,
+                                //refreshBtn: false,
+                                //columnBtn: false,
+                                dialogClickModal: false,
+                                highlightCurrentRow: true,
                                 column: [{
                                     label: '涓氬姟绫诲瀷缂栧彿',
                                     width: 120,
@@ -249,17 +404,60 @@
                                     prop: 'description'
                                 }],
                             },
-                            rules: [{
-                                required: true,
-                                message: "(鍙傜収鐨勪笟鍔$被鍨�)蹇呭~椤逛笉鑳戒负绌�",
-                                trigger: "blur",
-                            }],
+                            // formatter: (row) => {
+                            //     console.log(row.name);
+                            //     if (!row.name) 
+                            //         return ''
+                            //     return row.name;
+                            // },
+                            // onLoad: ({ page, value, data }, callback) => {
+                            //     console.log(page);
+                            //     console.log(value);
+                            //     console.log(data);
+                            //     //棣栨鍔犺浇鍘绘煡璇㈠搴旂殑鍊�
+                            //     if (value) {
+                            //         console.log(111+"======="+ value);
+                            //         this.$message.success('棣栨鏌ヨ' + value)
+                            //         callback({
+                            //             id: 't1',
+                            //             name: 'test1',
+                            //             description: 'test1',
+                            //         })
+                            //         return;
+                            //     }
+                            //     if (data) {
+                            //         console.log(111+"======="+ data);
+                            //         this.$message.success('鎼滅储鏌ヨ鍙傛暟' + JSON.stringify(data))
+                            //     }
+                            //     if (page) {
+                            //         console.log(111+"======="+ page);
+                            //         this.$message.success('鍒嗛〉鍙傛暟' + JSON.stringify(page))
+                            //     }
+                            //     //鍒嗛〉鏌ヨ淇℃伅
+                            //     callback({
+                            //         total: 2,
+                            //         data: [{
+                            //             id: 't2',
+                            //             name: 'test2',
+                            //             description: 'test2',
+                            //         }, {
+                            //             id: 't3',
+                            //             name: 'test3',
+                            //             description: 'test3',
+                            //         }]
+                            //     })
+                            // },
+                            // props: {
+                            //     label: 'name',
+                            //     value: 'id',
+                            // }
                         },{
                             label: '鏄剧ず鐨勫睘鎬�',
-                            prop: 'text2',
-                            tip: '閫夋嫨鏁版嵁鍚庯紝鏄剧ず鍒板瓧娈典笂鐨勪俊鎭墍灞炵殑灞炴�э紝涓�鑸兘鏄痭ame,濡傛灉鏄涓睘鎬т娇鐢ㄩ�楀彿鍒嗗壊锛屽id,name',
+                            prop: 'textField',
+                            tip: '閫夋嫨鏁版嵁鍚庯紝鏄剧ず鍒板瓧娈典笂鐨勪俊鎭墍灞炵殑灞炴�э紝涓�鑸兘鏄痭ame,濡傛灉鏄涓睘鎬т娇鐢ㄩ�楀彿鍒嗗壊锛屽id,name銆�',
                             tipPlacement: 'right',
                             span: 7,
+                            value: 'name',
                             rules: [{
                                 required: true,
                                 message: "(鏄剧ず鐨勫睘鎬�)蹇呭~椤逛笉鑳戒负绌�",
@@ -267,8 +465,9 @@
                             }],
                         },{
                             label: '瀛樺偍鍊肩殑灞炴��',
-                            prop: 'text2',
+                            prop: 'valueField',
                             tip: '閫夋嫨鏁版嵁鍚庯紝淇濆瓨鍒版暟鎹簱閲岀殑灞炴�э紝涓�鑸兘鏄痮id鎴栬�卛d锛屽鏋滄槸澶氫釜灞炴�т娇鐢ㄩ�楀彿鍒嗗壊锛屽oid ,id',
+                            value: 'oid',
                             tipPlacement: 'right',
                             span: 7,
                             rules: [{
@@ -278,101 +477,158 @@
                             }],
                         },{
                             label: '鍙傜収绐楀彛绫诲瀷',
-                            prop: 'referWindowType',
-                            //tip: '鎴戞槸涓�涓乏杈规彁绀鸿',
-                            //tipPlacement: 'left',
+                            prop: 'type',
+                            tip: 'default:榛樿鐨勫弬鐓х獥鍙f牱寮�; stand:UI涓婁笅鏂囬厤缃殑鏂瑰紡; classify:鍒嗙被+妗f鐨勬樉绀�; 鑷畾涔夌殑鍙傜収鐩存帴鍐檍s鐨勭粍浠惰矾寰勶紱tree:鏍戝舰灞曠ず;grid:鍒楄〃灞曠ず',
+                            tipPlacement: 'right',
                             span: 7,
+                            value: 'default',
                             type: 'select',
                             dicData: [{
                                 label: '榛樿鏍峰紡',
-                                value: 0
+                                value: 'default'
                             }, {
                                 label: '骞冲彴閰嶇疆',
-                                value: 1
+                                value: 'stand'
                             }, {
                                 label: '鏍戝舰',
-                                value: 2
+                                value: 'tree'
                             }, {
                                 label: '鍒楄〃',
-                                value: 3
+                                value: 'grid'
                             }, {
                                 label: '閮ㄩ棬鏍�',
-                                value: 4
+                                value: 'refer/OrgDepartmentRefer'
                             }, {
                                 label: '閮ㄩ棬鍒楄〃',
-                                value: 5
+                                value: 'refer/OrgDepartmentGridRefers'
                             }, {
                                 label: '鐢ㄦ埛',
-                                value: 6
+                                value: 'refer/SmUserRefer'
                             }, {
                                 label: '鐢ㄦ埛鍒楄〃',
-                                value: 7
+                                value: 'refer/SmUserGridRefer'
                             }, {
                                 label: '瑙掕壊鍒楄〃',
-                                value: 8
+                                value: 'refer/SmRoleRefer'
                             }, {
                                 label: '鑱屽姟',
-                                value: 9
+                                value: 'refer/OrgDutyRefer'
                             }, {
                                 label: '宸ョ',
-                                value: 10
+                                value: 'refer/SmWorkTypeRefer'
                             }, {
                                 label: '娴佺▼妯℃澘',
-                                value: 11
+                                value: 'refer/WfProcessTemplateRefer'
                             }],
                             rules: [{
                                 required: true,
                                 message: "(鍙傜収绐楀彛绫诲瀷)蹇呭~椤逛笉鑳戒负绌�",
                                 trigger: "blur",
                             }],
+                            change: ({ value, column }) => {
+                                // 澶嶅師琛ㄥ崟,鍥犱负鍏朵粬鍒嗙粍涓鏋滃瓨鍦ㄥ�硷紝鍦ㄥ垏鎹㈡椂,浼氫繚鐣欒緭鍏ョ殑瀛楁鍊兼墍浠ラ渶瑕佽繕鍘�
+                                let oldForm = this.form;
+                                this.form = {};  // 琛ㄥ崟瀵硅薄璧嬬┖
+                                this.form.referType = oldForm.referType
+                                this.form.textField = oldForm.textField
+                                this.form.valueField = oldForm.valueField
+                                this.form.type = oldForm.type //鍙傜収绐楀彛绫诲瀷
+                                this.form.url =  oldForm.url
+                                this.form.backPath =  oldForm.backPath
+                                this.form.method =  oldForm.method
+                                this.form.height =  oldForm.height
+                                this.form.useFormKey =  oldForm.useFormKey
+                                this.form.paramForFormKey =  oldForm.paramForFormKey
+                                this.form.isMuti =  oldForm.isMuti
+                                this.form.mapFields =  oldForm.mapFields
+                                let addFrom = {};  //鏍规嵁绫诲瀷闇�瑕佹坊鍔犵殑涓嶅悓灞炴��
+                                if(value == 'stand'){
+                                    addFrom = {
+                                        referContent: '',
+                                        displayTable: '',
+                                    }
+                                } else if(value == 'default' || value == 'grid'){
+                                    addFrom = {
+                                        limit: '15',
+                                        sortField: '',
+                                        sortType: 'asc',
+                                    }
+                                } else if(value == 'tree'){
+                                    addFrom = {
+                                        parentFieldName: '',
+                                        parentUsedField: 'oid',
+                                        parentValue: '',
+                                        loadType: 'all',
+                                        onlyLeaf: false,
+                                        sortField: '',
+                                        sortType: 'asc',
+                                    }
+                                }
+                                // 鍚堝苟涓や釜琛ㄥ崟
+                                this.form = Object.assign(addFrom,this.form);
+                                //console.log(this.form);
+                            },
                         },{
                             label: '鑷畾涔夌殑鍚庡彴璺緞',
-                            prop: 'text2',
-                            tip: '閫氬父涓虹┖;濡傛灉鏄垪琛紝鍚庡彴蹇呴』杩斿洖DataGrid锛屽鏋滄槸鏍戯紝鍚庡彴蹇呴』杩斿洖List',
+                            prop: 'url',
+                            tip: '閫氬父涓虹┖;濡傛灉鏄垪琛紝鍚庡彴蹇呴』杩斿洖DataGrid锛屽鏋滄槸鏍戯紝鍚庡彴蹇呴』杩斿洖List<Tree>',
                             tipPlacement: 'right',
                             span: 7,
                         },{
                             label: '鏈嶅姟鐨勫湴鍧�',
-                            prop: 'text2',
+                            prop: 'backPath',
                             tip: '閫氬父涓虹┖锛屽湪鏀寔寰湇鍔℃垨鑰呭垎甯冨紡閮ㄧ讲鐨勬椂鍊欐墠閰嶇疆',
                             tipPlacement: 'right',
                             span: 7,
                         },{
                             label: '璇锋眰鍚庡彴鐨勫崗璁柟寮�',
-                            prop: 'text2',
-                            //tip: '',
-                            //tipPlacement: 'right',
+                            prop: 'method',
+                            tip: 'HTTP鐨勫崗璁柟寮忥紝鏀寔POST,PUT,GET锛屼竴鑸兘鏄疓ET',
+                            tipPlacement: 'right',
                             span: 7,
+                            value: 'GET',
                             type: 'select',
+                            dicData: [{
+                                label:'GET',value: "GET"
+                            },{
+                                label:'PUT',value: "PUT"
+                            },
+                            {
+                                label:'POST',value: "POST"
+                            }],
                         },{
                             label: '绐楀彛鏄剧ず鐨勯珮搴�',
-                            prop: 'text2',
+                            prop: 'height',
                             tip: '榛樿绌虹潃锛岃缃悗琛ㄧず寮哄埗鏄剧ず杩欐牱鐨勯珮搴�',
                             tipPlacement: 'right',
                             span: 7,
+                            rules:[{
+                                validator: validateNumber,
+                                message: "绐楀彛鏄剧ず鐨勯珮搴﹀繀椤讳负鏁板�肩被鍨�",
+                                trigger: "blur",
+                            }]
                         },{
                             label: '杩囨护(绾ц仈)灞炴��',
-                            prop: 'text2',
+                            prop: 'useFormKey',
                             tip: '鑾峰彇琛ㄥ崟涓婄殑鍏朵粬灞炴�х殑灞炴�х殑鍊兼潵杩囨护,鎴栬�呬娇鐢ㄦ煇涓睘鎬ф潵绾ц仈閫夋嫨',
                             tipPlacement: 'right',
                             span: 7,
                         },{
                             label: '杩囨护灞炴�ц姹傚弬鏁�',
-                            prop: 'text2',
+                            prop: 'paramForFormKey',
                             tip: '浣跨敤杩囨护灞炴�ф椂锛屽彂閫佺粰鍚庡彴鐨勮姹傚弬鏁�',
                             tipPlacement: 'right',
                             span: 7,
                         },{
                             label: '鏄惁澶氶��',
                             type: 'switch',
-                            prop: 'text2',
-                            //tip: '',
-                            //tipPlacement: 'right',
+                            prop: 'isMuti',
+                            value: false,
                             span: 7,
                             row: true,
                         },{
                             label: '鏄犲皠鍏朵粬灞炴��',
-                            prop: 'text2',
+                            prop: 'mapFields',
                             tip: '閫夋嫨鏁版嵁鍚庯紝灏嗛�夋嫨鐨勬暟鎹嫹璐濆埌琛ㄥ崟閲岀殑鍏朵粬灞炴�э紝涔﹀啓鏍煎紡涓簕褰撳墠琛ㄥ崟涓婄殑灞炴��:閫夋嫨鏁版嵁閲岀殑灞炴��,XXXXx:yyyy}',
                             tipPlacement: 'right',
                             span: 18,
@@ -381,23 +637,26 @@
                     // 鍙樺姩鐨勮〃鍗曞尯鍩�
                     group: [
                         {   
-                            display: this.form.referWindowType==0||this.form.referWindowType==3,
+                            display: this.form.type=='default'||this.form.type=='grid',
                             icon: 'el-icon-info',
-                            label: this.form.referWindowType==0 ? '榛樿鍙傜収鐨勯厤缃�(涓嬫柟鍒楄〃)':'鍒楄〃鍙傜収鐨勯厤缃紙涓嬫柟鍒楄〃)',
+                            label: this.form.type=='default' ? '榛樿鍙傜収鐨勯厤缃�(涓嬫柟鍒楄〃)':'鍒楄〃鍙傜収鐨勯厤缃紙涓嬫柟鍒楄〃)',
                             collapse: true,
-                            prop: 'group1',
+                            prop: 'groupDdefaultOrGrid',
                             column: [
                                 {
                                     label: '姣忛〉鏄剧ず鏉℃暟',
-                                    prop: 'text1',
+                                    prop: 'limit',
                                     span: 7,
                                     tip: '鍒嗛〉鏃舵瘡椤垫樉绀虹殑鏁伴噺锛屼笉鍒嗛〉濉�-1',
+                                    //value: 15,
                                     tipPlacement: 'right',
                                 },{
                                     label: '鎺掑簭瀛楁',
-                                    prop: 'text1',
+                                    prop: 'sortField',
                                     span: 7,
                                     type: 'table',
+                                    tip: '鏌ヨ鏁版嵁鏃剁殑鎺掑簭瀛楁',
+                                    tipPlacement: 'right',
                                     children: {
                                         border: true,
                                         column: [{
@@ -423,10 +682,18 @@
                                             prop: 'attrType'
                                         }],
                                     },
+                                    // 杩欏効闇�瑕佹坊鍔犱笟鍔$被鍨嬫帴鍙�
+                                    
                                 },{
                                     label: '鎺掑簭绫诲瀷',
-                                    prop: 'text1',
+                                    prop: 'sortType',
                                     span: 7,
+                                    dicData: [{
+                                        label: '鍗囧簭', value: 'asc'
+                                    }, {
+                                        label: '闄嶅簭', value: 'desc'
+                                    }],
+                                    //value: 'asc',
                                     type: 'select',
                                     tip: '鏌ヨ鏁版嵁鏃剁殑鎺掑簭绫诲瀷',
                                     tipPlacement: 'right',
@@ -434,93 +701,80 @@
                             ]
                         },
                         {   
-                            display: this.form.referWindowType==1,
+                            display: this.form.type=='stand',
                             icon: 'el-icon-info',
                             label: 'stand(骞冲彴閰嶇疆)鍙傜収',
                             collapse: true,
-                            prop: 'group2',
+                            prop: 'groupStand',
                             column: [
                                 {
                                     label: '鍙傝�冪殑UI涓婁笅鏂�',
-                                    prop: 'text1',
+                                    prop: 'referContent',
                                     span: 7,
                                     tip: '鍙湁鍙傜収绐楀彛绫诲瀷鏄痵tand鏃舵墠蹇呴』璁剧疆,涓斿湪stand绫诲瀷涓嬫墠鑳界敓鏁�',
                                     tipPlacement: 'right',
                                 },
                                 {
                                     label: '骞冲彴鐨勮〃鏍肩紪鍙�',
-                                    prop: 'text1',
+                                    prop: 'displayTable',
                                     span: 7,
                                     tip: '涓庡弬鐓х殑UI涓婁笅鏂囦簰鏂ワ紝鍙湁鍙傜収绐楀彛绫诲瀷鏄痵tand鏃舵墠蹇呴』璁剧疆锛屼笖鍦╯tand绫诲瀷涓嬫墠鑳界敓鏁�',
                                     tipPlacement: 'right',
-                                    type: 'table',
-                                    children: {
-                                        border: true,
-                                        column: [{
-                                            label: '灞炴�ц嫳鏂囩紪鍙�',
-                                            width: 120,
-                                            search: true,
-                                            searchSpan: 8,
-                                            searchLabelWidth: 100,
-                                            prop: 'id'
-                                        },{
-                                            label: '灞炴�т腑鏂囧悕绉�',
-                                            search: true,
-                                            searchSpan: 8,
-                                            searchLabelWidth: 100,
-                                            prop: 'name'
-                                        },{
-                                            label: '灞炴�ч暱搴�',
-                                            search: false,
-                                            prop: 'attrLength'
-                                        },{
-                                            label: '灞炴�х被鍨�',
-                                            search: false,
-                                            prop: 'attrType'
-                                        }],
-                                    },
                                 },
                             ]
                         },
                         {   
-                            display: this.form.referWindowType==2,
+                            display: this.form.type=='tree',
                             icon: 'el-icon-info',
                             label: '鏍戝舰鍙傜収淇℃伅',
                             collapse: true,
-                            prop: 'group3',
+                            prop: 'groupTree',
                             labelWidth: '158',
                             column: [
                                 {
-                                    label: '鏍戝舰鐨勪笂绾ф爲褰�',
-                                    prop: 'text1',
+                                    label: '鏍戝舰鐨勪笂绾у睘鎬�',
+                                    prop: 'parentFieldName',
                                     span: 7,
                                     tip: '鏍戝舰灞曠ず鐨勬椂鍊欙紝涓婁笅绾у叧绯绘煡鎵剧殑灞炴�с��',
                                     tipPlacement: 'right',
+                                    rules: [{
+                                        required: true,
+                                        message: "(鏍戝舰鐨勪笂绾у睘鎬�)蹇呭~椤逛笉鑳戒负绌�",
+                                        trigger: "blur",
+                                    }],
                                 },{
                                     label: '涓婄骇灞炴�у�煎搴斿睘鎬�',
-                                    prop: 'text1',
+                                    prop: 'parentUsedField',
                                     span: 7,
                                     tip: '涓婄骇灞炴�у瓨鍌ㄧ殑鍊�,鏄笂绾ф暟鎹殑浠�涔堝睘鎬с�備竴鑸兘鏄痮id銆�',
+                                    value: 'oid',
                                     tipPlacement: 'right',
                                 },{
                                     label: '鏍硅妭鐐圭殑鍊�',
-                                    prop: 'text1',
+                                    prop: 'parentValue',
                                     span: 7,
                                     tip: '鏍戝舰灞曠ず鐨勬椂鍊欙紝涓婄骇鐨勫�笺��',
                                     tipPlacement: 'right',
                                 },{
                                     label: '鏍戝姞杞芥柟寮�',
-                                    prop: 'text1',
+                                    prop: 'loadType',
                                     span: 7,
+                                    value: 'all',
+                                    dicData: [{
+                                        label: '鍏ㄩ儴', value: 'all'
+                                    }, {
+                                        label: '閫愮骇鍔犺浇', value: 'node'
+                                    }],
                                     type: 'select',
                                 },{
                                     label: '鏄惁鍙兘閫夋嫨鍙跺瓙鑺傜偣',
-                                    prop: 'text1',
+                                    prop: 'onlyLeaf',
                                     span: 7,
+                                    value: false,
                                     type: 'switch',
                                 },{
                                     label: '鎺掑簭瀛楁',
-                                    prop: 'text1',
+                                    prop: 'sortField',
                                     span: 7,
                                     type: 'table',
                                     children: {
@@ -548,11 +802,18 @@
                                             prop: 'attrType'
                                         }],
                                     },
+                                    // 杩欏効闇�瑕佹坊鍔犱笟鍔$被鍨嬫帴鍙h姹傚疄鐜板脊绐楃晫闈㈣〃鏍兼覆鏌�
                                 },{
                                     label: '鎺掑簭绫诲瀷',
-                                    prop: 'text1',
+                                    prop: 'sortType',
                                     span: 7,
                                     type: 'select',
+                                    value: 'asc',
+                                    dicData: [{
+                                        label: '鍗囧簭', value: 'asc'
+                                    }, {
+                                        label: '闄嶅簭', value: 'desc'
+                                    }],
                                 },
                             ]
                         },
@@ -561,10 +822,40 @@
             },
         },
         methods: {
+            clicktest(cell){
+                
+                //cell.$cellEdit = true;
+            },
+            // 鍒囨崲褰撳墠娲诲姩鐨則abs
+            handleClick(tab, event) {
+                if(tab.index=='0'){
+                    this.onloadAttrData(); 
+                }else{
+                    this.onloadselectReferConfigData();
+                }
+            },
             // 閫夋嫨瀹屽弬鐓ч厤缃箣鍚庣偣鍑讳繚瀛樻寜閽Е鍙�
             selectedListReferConfig(){
-                console.log(this.option);
-                console.log(this.form.referWindowType);
+                //琛ㄥ崟楠岃瘉
+                this.$refs.form.validate((valid, done, msg) => {
+                    if (valid) {
+                        let submitForm = this.filterForm();
+                        //console.log(submitForm);
+                        //杞崲鎴怞SON瀛楃涓茶繘琛岀埗缁勪欢鍥炴樉
+                        let submitFormJson = JSON.stringify(submitForm);
+                        //console.log(submitFormJson);
+                        this.$emit('echoReferConfig', submitFormJson) // 瑙﹀彂update:data灏嗗瓙缁勪欢鍊间紶閫掔粰鐖剁粍浠�
+                        //this.isShowReferConfig = false;
+                        done()
+                    } else {
+                        for(let attr in msg) {
+                            //console.log(msg[attr][0].message);
+                            this.$message.warning(msg[attr][0].message);
+                            break;
+                        }
+                        return false;
+                    }
+                })
             },
             /** 鍏跺疄閫夊彇灞炴�ц〃鏍肩殑榛樿鏁版嵁涓嶉渶瑕佸姞杞斤紝
              浣嗘槸寮圭獥鎵撳紑浼氭湁琛ㄦ牸閿欒闂鎵�浠ラ渶瑕佸湪杩欒皟鐢╠oLayout鏂规硶*/
@@ -584,7 +875,12 @@
             // 璇ョ晫闈㈢殑鏁版嵁杩涜鍒濆鍖栧鍘�
             recoveryDataAndForm(condition){
                 if(condition=='initForm'){
+                    let currentType = this.form.type;
                     this.form = this.$options.data().form;
+                    this.form.type = currentType;
+                    console.log(this.form);
+                    // this.form.referContent = '';
+                    // this.form.displayTable = '';
                     return;
                 }
                 Object.assign(this.$data,this.$options.data());         
@@ -594,9 +890,65 @@
                 if(condition=='addSearchCondition'){
                     console.log('this is open addSearchCondition');
                 }else {
+                    if(this.form.referType == '' || this.form.referType == null){
+                        this.$message.warning("璇疯緭鍏ュ弬鐓х殑涓氬姟绫诲瀷")
+                        return;
+                    }
+
                     console.log('this is open selectAttr');
                 }
-            }
+            },
+            // 鎻愪氦琛ㄥ崟涔嬪墠杩囨护鎺夌┖鎴栦笉闇�瑕佺殑琛ㄥ崟鏁版嵁
+            filterForm(){
+                const oldForm = this.form;
+                let submittDefaultForm = [
+                    'referType',
+                    'textField',
+                    'valueField',
+                    'type', //鍙傜収绐楀彛绫诲瀷
+                    'url',
+                    'backPath',
+                    'method',
+                    'height',
+                    'useFormKey',
+                    'paramForFormKey',
+                    'isMuti',
+                    'mapFields', 
+                ];
+                let addArray = [];
+                let newForm ={};
+                // 鏍规嵁涓嶅悓绫诲瀷杩囨护鍑轰笉鍚岀殑鐨勮〃鍗曞睘鎬�
+                if(oldForm.type == 'stand'){
+                    addArray = ['referContent', 'displayTable'];
+                } else if(oldForm.type == 'default' || oldForm.type == 'grid'){
+                    addArray = ['limit', 'sortField', 'sortType'];
+                } else if(oldForm.type == 'tree'){
+                    addArray = [
+                        "parentFieldName", 
+                        'parentUsedField',
+                        'parentValue', 
+                        'loadType',
+                        'onlyLeaf',
+                        'sortField',
+                        'sortType'
+                    ];
+                }
+                submittDefaultForm = submittDefaultForm.concat(addArray);
+                submittDefaultForm.forEach(item=>{
+                    //console.log(item);
+                    if(item == 'isMuti' || item == 'onlyLeaf' || oldForm[item] != '' || oldForm[item] != ''){
+                      newForm = Object.assign(newForm,{[item]:oldForm[item]});  
+                    }
+                });
+                // console.log(newForm);
+                return newForm;
+            },
+            onloadselectReferConfigData(){
+                this.$nextTick(() => {
+                    this.$refs.selectReferConfigCrud.doLayout()
+                })
+            },
+            
         }
     };
 </script>
diff --git a/Source/UBCS-WEB/src/template/templateAttr.js b/Source/UBCS-WEB/src/template/templateAttr.js
new file mode 100644
index 0000000..646e932
--- /dev/null
+++ b/Source/UBCS-WEB/src/template/templateAttr.js
@@ -0,0 +1,98 @@
+import request from "@/router/axios";
+
+//鑾峰彇鏍戝舰缁勪欢鏁版嵁
+export const getAtrrList = () => {
+  return request({
+    url: '/api/ubcs-code/codeClassify/treeCodeClassify',
+    method: 'get',
+  })
+}
+//鏍戣妭鐐规坊鍔�
+export const  TreeSave = (data) =>{
+  return request({
+    url:'/api/ubcs-code/codeClassify/save',
+    method: 'post',
+    data:data
+  })
+}
+//妫�鏌ユ槸鍚﹀彲浠ュ垹闄�
+export const  TreeCheckDel = (data) =>{
+  return request({
+    url:'/api/ubcs-code/codeClassify/checkIsCanDelete',
+    method: 'post',
+    data:data
+  })
+}
+//鍒犻櫎
+export const  TreeDel = (data) =>{
+  return request({
+    url:'/api/ubcs-code/codeClassify/deleteData',
+    method: 'Delete',
+    data:data
+  })
+}
+//鏆傛椂鏈夐棶棰�
+export const  TreeObjcet = (oid) =>{
+  return request({
+    url:'/api/ubcs-code/codeClassify/getObjectByOid',
+    method: 'get',
+    params:{
+      oid
+    }
+  })
+}
+//鍚敤
+export const  TreeEnable = (data) =>{
+  return request({
+    url:'/api/ubcs-code/codeClassify/enableData',
+    method: 'post',
+    data:data
+  })
+}
+//鍋滅敤
+export const  TreeDeactivate = (data) =>{
+  return request({
+    url:'/api/ubcs-code/codeClassify/disableData',
+    method: 'post',
+    data:data
+  })
+}
+
+export const  importClassify = (data) =>{
+  return request({
+    url:'/api/ubcs-code/codeClassify/importClassify',
+    method: 'post',
+    data:data
+  })
+}
+
+//涓婚敭鑾峰彇鍒嗙被妯℃澘灞炴��
+export const  gridCodeClassifyTemplate = (oid) =>{
+  return request({
+    url:'/api/ubcs-code/codeClassifyTemplateController/gridCodeClassifyTemplate',
+    method: 'get',
+    params:{
+      oid
+    }
+  })
+}
+//鍩烘湰淇℃伅琛ㄥ崟鏁版嵁
+export const  getObjectByOid = (oid) =>{
+  return request({
+    url:'/api/ubcs-code/codeClassify/getObjectByOid',
+    method: 'get',
+    params:{
+      oid
+    }
+  })
+}
+//妯℃澘灞炴�ц〃鏍兼暟鎹�
+export const  gridCodeClassifyTemplateAttr = (params) =>{
+  return request({
+    url:'/api/ubcs-code/codeClassifyTempAttrController/gridCodeClassifyTemplateAttr',
+    method: 'get',
+    params:{
+     ...params
+    }
+  })
+}
diff --git a/Source/UBCS-WEB/src/views/code/code.vue b/Source/UBCS-WEB/src/views/code/code.vue
index b30a4e4..3b01571 100644
--- a/Source/UBCS-WEB/src/views/code/code.vue
+++ b/Source/UBCS-WEB/src/views/code/code.vue
@@ -645,7 +645,7 @@
         </el-form>
       </div>
       <!-- 绗竴灞傚璇濇鐨勬寜閽拰锛岀嚎鏉� -->
-      <el-divider direction="horizontal"></el-divider>
+      <el-divider class="horizontal-line" direction="horizontal"></el-divider>
       <div slot="footer" class="dialog-footer">
         <el-button @click="addBasicCodeSettingBox = false" v-show="showbtn">鍙� 娑�</el-button>
         <el-button type="primary" @click="saveOrEditBasicCode" v-show="showbtn">淇� 瀛�</el-button>
@@ -664,7 +664,7 @@
               <div class="box">
                 <el-scrollbar style="height: auto; border-bottom-right-radius:8px ">
                   <basic-container>
-                    <div class="abox">
+                    <div class="treeBox">
                       <avue-tree :data="attrClassifyTreeData" :option="treeOption" @node-click="nodeClick"/>
                     </div>
                   </basic-container>
@@ -694,7 +694,6 @@
           <el-button @click="isShowSelectAttrOption = false">鍙� 娑�</el-button>
           <el-button type="primary" @click="selectedListClassifyLinkAttr">纭� 瀹�</el-button>
         </div>
-        
       </el-dialog>
 
       <!-- 绗簩灞傚璇濇,灞炴�х爜娈碉紝鍏紡缂栬緫妗嗗璇濇缁勪欢 -->
@@ -1116,7 +1115,7 @@
           this.form.getValueClass = content;
         },
 
-        /* 鍙傜収閰嶇疆,瀛愮粍浠跺~瀹屽弬鐓ч厤缃箣鍚庡唴瀹瑰洖鏄炬椂璋冪敤 */
+        /* 寮曠敤鐮佹鍙傜収閰嶇疆,瀛愮粍浠跺~瀹屽弬鐓ч厤缃箣鍚庡唴瀹瑰洖鏄炬椂璋冪敤 */
         echoReferConfig(content){
           this.form.referConfig = content;
         },
@@ -2399,7 +2398,7 @@
           }else if(condition === 'referBtmId'){
             this.form.referBtmId = '';
           }else if(condition === 'referConfig'){
-            this.form.referBtmId = '';
+            this.form.referConfig = '';
           }
         },
         // 琛ヤ綅鏃剁殑瀛楃锛屽疄鐜板彲杈撳彲閫�
@@ -2566,7 +2565,7 @@
 
 </script>
 
-<style scope>
+<style>
 
   .code-rule-crud > .avue-crud__search ,.code-basic-crud > .avue-crud__search {
     margin-bottom: -15px;
@@ -2612,14 +2611,14 @@
     padding: 1px 6px;
   }
 
-  .el-divider--horizontal {
+  .horizontal-line {
     /* margin-top: 19px !important; */
     margin-bottom: -20px !important;
     width: 100%;
     height: 2px;
   }
 
-  .el-card__body > .abox {
+  .el-card__body > .treeBox {
     height: 50vh;
   }
 
@@ -2631,11 +2630,11 @@
     width:60px;
   }
 
-  .el-input-number {
+  .left > .el-form-item > .el-form-item__content > .el-input-number {
     width: 120px;
   }
 
-  .el-input-number >.el-input > .el-input__inner {
+  .left > .el-form-item > .el-form-item__content > .el-input-number > .el-input > .el-input__inner {
     width:120px;
   } 
   
@@ -2662,7 +2661,7 @@
     justify-content: space-around;
   }
 
-  .el-divider--vertical {
+  .add-basicsec-form > .el-divider--vertical {
     width: 2px;
     height: 72%;
     margin: 0 auto;
@@ -2690,6 +2689,6 @@
     /* width: 100%; */
     border-top: 1px solid #E9E7E7;
     padding: 5px 10px 10px;
-  }
+ }
 
 </style>
\ No newline at end of file
diff --git a/Source/UBCS-WEB/src/views/modeling/Business.vue b/Source/UBCS-WEB/src/views/modeling/Business.vue
index 3b59829..eca59a8 100644
--- a/Source/UBCS-WEB/src/views/modeling/Business.vue
+++ b/Source/UBCS-WEB/src/views/modeling/Business.vue
@@ -26,28 +26,28 @@
             <el-descriptions class="margin-top" :column="3" :size="size" border>
               <el-descriptions-item>
                 <template slot="label">
-                  <i :class="icons.key"></i>
+                  <i class="el-icon-finished"></i>
                   鑻辨枃鍚嶇О
                 </template>
                 {{ obj.id }}
               </el-descriptions-item>
               <el-descriptions-item>
                 <template slot="label">
-                  <i :class="icons.name"></i>
+                  <i class="el-icon-info"></i>
                   涓枃鍚嶇О
                 </template>
                 {{ obj.name }}
               </el-descriptions-item>
               <el-descriptions-item>
                 <template slot="label">
-                  <i :class="icons.tableName"></i>
+                  <i class="el-icon-date"></i>
                   鏁版嵁搴撹〃鍚�
                 </template>
                 {{ obj.tableName }}
               </el-descriptions-item>
               <el-descriptions-item>
                 <template slot="label">
-                  <i :class="icons.domain"></i>
+                  <i class="el-icon-folder-opened"></i>
                   鎵�灞為鍩�
                 </template>
                   <el-tag size="small">
@@ -70,21 +70,21 @@
           </el-descriptions-item> -->
               <el-descriptions-item>
                 <template slot="label">
-                  <i :class="icons.revisionRule"></i>
+                  <i class="el-icon-s-check"></i>
                   鐗堟湰瑙勫垯
                 </template>
                 {{ obj.versionRule }}
               </el-descriptions-item>
               <el-descriptions-item>
                 <template slot="label">
-                  <i :class="icons.lifeCycle"></i>
+                  <i class="el-icon-refresh-right"></i>
                   鐢熷懡鍛ㄦ湡
                 </template>
                 {{ obj.lifeCycleId }}
               </el-descriptions-item>
               <el-descriptions-item>
                 <template slot="label">
-                  <i :class="icons.view"></i>
+                  <i class="el-icon-view"></i>
                   瑙嗗浘
                 </template>
                <el-tag size="small">
@@ -100,7 +100,7 @@
           </el-descriptions-item> -->
               <el-descriptions-item>
                 <template slot="label">
-                  <i :class="icons.desc"></i>
+                  <i class="el-icon-chat-line-square"></i>
                   鎻忚堪
                 </template>
                 {{ obj.description }}
@@ -125,14 +125,21 @@
           </el-select>
           <avue-crud class="businessCrud" v-model="ref.form" :option="ref.option" :data="ref.data" @selection-change="selectionChange">
           </avue-crud>
+<<<<<<< Updated upstream
           <div slot="footer" class="dialog-footer">
                 <el-button @click="dialoghandeltrue">纭畾</el-button>
                 <el-button @click="dialoghandelfalse">鍙栨秷</el-button>
             </div>
+=======
+          <span slot="footer" class="dialog-footer">
+            <el-button @click="dialoghandelfalse">鍙� 娑�</el-button>
+            <el-button type="primary" @click="dialoghandeltrue">纭� 瀹�</el-button>
+          </span>
+>>>>>>> Stashed changes
         </el-dialog>
       </el-container>
     </el-container>
-    <business-add ref="btmAdd" :btmType="addOption.btmType" :domainOption="domainOptions" :icons="icons" @refreshTable="initTreeOnLoad">
+    <business-add ref="btmAdd" :btmType="addOption.btmType" :domainOption="domainOptions">
   </business-add>
   </el-container>
 </template>
@@ -172,8 +179,6 @@
         border: true,
         height: 466,
         editBtn: false,
-        index: true,
-        rowKey:'oid',
         addBtn: false,
         menu: false,
         highlightCurrentRow: true,
@@ -209,16 +214,6 @@
       },
       domain: null,
       domainOptions: [],
-      icons:{
-        key: 'el-icon-finished',
-        name: 'el-icon-info',
-        tableName: 'el-icon-date',
-        domain: 'el-icon-folder-opened',
-        revisionRule: 'el-icon-s-check',
-        lifeCycle: 'el-icon-refresh-right',
-        view: 'el-icon-view',
-        desc: 'el-icon-chat-line-square'
-      },
       ref: {
         // 浠庤〃涓�夋嫨dialog鐘舵��
         visible: false,
@@ -229,7 +224,7 @@
           headerAlign: 'center',
           border: true,
           index: true,
-          rowKey: 'oid',
+          rowKey: 'id',
           tabs: true,
           addBtn: false,
           menu: false,
@@ -262,13 +257,36 @@
   },
   methods: {
     nodeClick(data) {
-      if(data.oid){
-        getDetail(data.oid).then(res => {
-          this.obj = res.data.data;
-        })
-      }
+      getDetail(data.oid).then(res => {
+        this.obj = res.data.data;
+      })
+    },
+    //  鍩烘湰淇℃伅娣诲姞
+    basicSave(row, done, loading) {
+      add(Object.assign({
+        createUser: this.userInfo.name
+      }, row)).then(() => {
+        this.$message.success('鏂板鎴愬姛')
+        done();
+        this.getList();
+      }).catch(() => {
+        loading()
+      })
+    },
+    //灞炴�ф坊鍔�
+    loadSave(row, done, loading) {
+      add(Object.assign({
+        createUser: this.userInfo.name
+      }, row)).then(() => {
+        this.$message.success('鏂板鎴愬姛')
+        done();
+        this.getList();
+      }).catch(() => {
+        loading()
+      })
     },
     selectFromTable() {
+      console.log('鑾峰彇');
       this.ref.visible = true;
     },
     refOnLoad(domain) {
@@ -323,10 +341,8 @@
   border-radius: 10px;
 }
 
-.businessCrud > .el-card:nth-of-type(2) > .el-card__body > .avue-crud__menu{
-        display: none !important;
+.businessCrud > .el-card > .el-card__body > .avue-crud_menu{
+  display: none!important;
 }
-.attributeCrud > .el-card:nth-of-type(2) > .el-card__body > .avue-crud__menu{
-        display: none !important;
-}
+
 </style>
diff --git a/Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue b/Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue
index 946768b..8e1b6a4 100644
--- a/Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue
+++ b/Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue
@@ -4,7 +4,7 @@
     :visible.sync="showSubmitDialog"
     append-to-body
     @close="closeSubmitDialog"
-    width="74%"
+    width="70%"
     >
         <el-form ref="form" :model="btmType" show-message="true" inline size="medium" label-suffix=":" class="btmTypeForm">
                 
@@ -107,28 +107,19 @@
         },
         domainOption:{
             type: Array
-        },
-        icons: {
-            type: Array
         }
     },
     data() {
         return {
             form: {},
             showSubmitDialog : false,
-            page: {
-                currentPage: 1,
-                pageSize:10
-            },
             option: {
                 height: "330px",
+                selection: true,
                 headerAlign: 'center',
                 border: true,
                 index: true,
-                rowKey: 'oid',
-                addBtn: false,
-                refreshBtn: false,
-                columnBtn:false,
+                rowKey: 'id',
                 tabs: true,
                 menu: false,
                 highlightCurrentRow: true,
@@ -136,7 +127,7 @@
                     {
                         label: '鑻辨枃鍚嶇О',
                         prop: 'id',
-                        align: 'left'
+                        align: 'center'
                     }, {
                         label: '涓枃鍚嶇О',
                         prop: 'name',
@@ -233,7 +224,7 @@
         }
     },
     created() {
-
+        console.log('123');
     },
     methods: {
         closeSubmitDialog(){
@@ -343,4 +334,4 @@
 .descClass > .el-input__inner {
     width: 57vw
 }
-</style>
\ No newline at end of file
+</style>
diff --git a/Source/UBCS-WEB/src/views/modeling/classifyTree.vue b/Source/UBCS-WEB/src/views/modeling/classifyTree.vue
index 5463246..761a794 100644
--- a/Source/UBCS-WEB/src/views/modeling/classifyTree.vue
+++ b/Source/UBCS-WEB/src/views/modeling/classifyTree.vue
@@ -5,58 +5,36 @@
 </template>
 
 <script>
+
 export default {
   name: "classifyTree.vue",
   //浣跨敤provide浼犻�掔粰瀛愮粍浠�
   //鐖朵紶瀛愭湁闂锛屾殏鏃舵病瑙e喅锛岀敤provide浠f浛鐖朵紶瀛愶紝瀛愪紶鐖惰繕鏄敤$emit浼犻�掞紝娉ㄦ剰锛侊紒锛佸叾浠栫粍浠朵笉鑳戒娇鐢ㄥ悓鏍风殑绫诲悕鍚﹀垯浼氭姤閿欍��
   provide() {
     return {
-      Treeoption: {
-        multiple: true,
-        formslot: true,
-        defaultExpandAll: true,
-        formOption: {
-          labelWidth: 100,
-          column: [{
-            label: '鑷畾涔夐」',
-            prop: 'label'
-          }],
-        }
-      },
-      Treedata: [
-        {
-          value: 0,
-          label: '涓�绾ч儴闂�',
-          children: [
-            {
-              value: 1,
-              label: '涓�绾ч儴闂�1',
-            }, {
-              value: 2,
-              label: '涓�绾ч儴闂�2',
-            }
-          ]
-        }, {
-          value: 3,
-          label: '浜岀骇閮ㄩ棬',
-          children: [
-            {
-              value: 4,
-              label: '浜岀骇閮ㄩ棬1',
-            }, {
-              value: 5,
-              label: '浜岀骇閮ㄩ棬2',
-            }
-          ]
-        }
-      ],
       crudTreeOption: {
         index: true,
         border: true,
         column: [
           {
-            label: "娴嬭瘯1",
-            prop: "cash"
+            label: "妯℃澘缂栧彿",
+            prop: "id"
+          },
+          {
+            label:"妯℃澘鍚嶇О",
+            prop:"name"
+          },
+          {
+            label: "妯℃澘鎻忚堪",
+            prop:"description"
+          },
+          {
+            label:"鐗堟湰鍙�",
+            prop:"revisionSeq"
+          },
+          {
+            label:"鐘舵��",
+            prop:"lcStatusText"
           }
         ]
       },
@@ -85,12 +63,49 @@
           ]
         }
       ],
-
+      arr : [
+        {
+          name: 'Alice',
+          age: 30,
+          children: [
+            {
+              name: 'Bob',
+              age: 5,
+              toys: [
+                {
+                  name: 'ball',
+                  color: 'red'
+                },
+                {
+                  name: 'doll',
+                  color: 'blue'
+                }
+              ]
+            },
+            {
+              name: 'Charlie',
+              age: 3,
+              toys: [
+                {
+                  name: 'car',
+                  color: 'green'
+                },
+                {
+                  name: 'train',
+                  color: 'yellow'
+                }
+              ]
+            }
+          ]
+        },]
     }
   },
   created() {
+
   },
-  methods: {}
+  methods: {
+
+  }
 }
 </script>
 
diff --git a/Source/UBCS-WEB/vue.config.js b/Source/UBCS-WEB/vue.config.js
index 2577e72..1e617f6 100644
--- a/Source/UBCS-WEB/vue.config.js
+++ b/Source/UBCS-WEB/vue.config.js
@@ -26,8 +26,8 @@
     proxy: {
       '/api': {
         //鏈湴鏈嶅姟鎺ュ彛鍦板潃
-        //target: 'http://localhost:37000',
-        target: 'http://192.168.3.7:37000',
+        target: 'http://localhost:37000',
+        //target: 'http://192.168.3.7:37000',
         //target: 'http://dev.vci-tech.com:37000',
         //杩滅▼婕旂ず鏈嶅姟鍦板潃,鍙敤浜庣洿鎺ュ惎鍔ㄩ」鐩�
         //target: 'https://saber.bladex.vip/api',
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 67fa4d1..d8d8eb3 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 = "192.168.93.196:38848";
+	String NACOS_DEV_ADDR = "192.168.93.201:38848";
 
 	/**
 	 * nacos prod 鍦板潃
diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/DomainVO.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/DomainVO.java
new file mode 100644
index 0000000..f36cc1d
--- /dev/null
+++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/vo/DomainVO.java
@@ -0,0 +1,20 @@
+package com.vci.ubcs.omd.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * Description: 棰嗗煙鐨勬樉绀哄璞�
+ *
+ * @author LiHang
+ * @date 2023/5/15
+ */
+@Data
+public class DomainVO implements Serializable {
+	private static final long serialVersionUID = -2954895662615860362L;
+
+	private String value;
+
+	private String label;
+}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/NewAppConstantEnum.java b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/enumpack/NewAppConstantEnum.java
similarity index 93%
rename from Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/NewAppConstantEnum.java
rename to Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/enumpack/NewAppConstantEnum.java
index 6baffd7..8aae482 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/enumpack/NewAppConstantEnum.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/enumpack/NewAppConstantEnum.java
@@ -1,4 +1,4 @@
-package com.vci.ubcs.code.enumpack;
+package com.vci.ubcs.starter.enumpack;
 
 import org.springblade.core.launch.constant.AppConstant;
 
diff --git a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/MPJLambdaWrapperSqlKeyword.java b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/MPJLambdaWrapperSqlKeyword.java
index 83a1332..cb34015 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/MPJLambdaWrapperSqlKeyword.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/MPJLambdaWrapperSqlKeyword.java
@@ -78,6 +78,51 @@
 		}
 	}
 
+	public static void buildConditionByMapString(Map<String, String> query, MPJLambdaWrapper<?> qw) {
+		if (!Func.isEmpty(query)) {
+			query.forEach((k, v) -> {
+				if (!Func.hasEmpty(new Object[]{k, v}) && !k.endsWith("_ignore")) {
+					if (k.endsWith("_equal")) {
+						qw.eq(getColumn(k, "_equal"), v);
+					} else if (k.endsWith("_notequal")) {
+						qw.ne(getColumn(k, "_notequal"), v);
+					} else if (k.endsWith("_likeleft")) {
+						qw.likeLeft(getColumn(k, "_likeleft"), v);
+					} else if (k.endsWith("_likeright")) {
+						qw.likeRight(getColumn(k, "_likeright"), v);
+					} else if (k.endsWith("_notlike")) {
+						qw.notLike(getColumn(k, "_notlike"), v);
+					} else if (k.endsWith("_ge")) {
+						qw.ge(getColumn(k, "_ge"), v);
+					} else if (k.endsWith("_le")) {
+						qw.le(getColumn(k, "_le"), v);
+					} else if (k.endsWith("_gt")) {
+						qw.gt(getColumn(k, "_gt"), v);
+					} else if (k.endsWith("_lt")) {
+						qw.lt(getColumn(k, "_lt"), v);
+					} else if (k.endsWith("_datege")) {
+						qw.ge(getColumn(k, "_datege"), DateUtil.parse(String.valueOf(v), "yyyy-MM-dd HH:mm:ss"));
+					} else if (k.endsWith("_dategt")) {
+						qw.gt(getColumn(k, "_dategt"), DateUtil.parse(String.valueOf(v), "yyyy-MM-dd HH:mm:ss"));
+					} else if (k.endsWith("_dateequal")) {
+						qw.eq(getColumn(k, "_dateequal"), DateUtil.parse(String.valueOf(v), "yyyy-MM-dd HH:mm:ss"));
+					} else if (k.endsWith("_datele")) {
+						qw.le(getColumn(k, "_datele"), DateUtil.parse(String.valueOf(v), "yyyy-MM-dd HH:mm:ss"));
+					} else if (k.endsWith("_datelt")) {
+						qw.lt(getColumn(k, "_datelt"), DateUtil.parse(String.valueOf(v), "yyyy-MM-dd HH:mm:ss"));
+					} else if (k.endsWith("_null")) {
+						qw.isNull(getColumn(k, "_null"));
+					} else if (k.endsWith("_notnull")) {
+						qw.isNotNull(getColumn(k, "_notnull"));
+					} else {
+						qw.like(getColumn(k, "_like"), v);
+					}
+
+				}
+			});
+		}
+	}
+
 	private static String getColumn(String column, String keyword) {
 		return StringUtil.humpToUnderline(StringUtil.removeSuffix(column, keyword));
 	}
diff --git a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/Map2MPLLambdaUtil.java b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/Map2MPJLambdaUtil.java
similarity index 73%
rename from Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/Map2MPLLambdaUtil.java
rename to Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/Map2MPJLambdaUtil.java
index f6f584d..99e6480 100644
--- a/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/Map2MPLLambdaUtil.java
+++ b/Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/util/Map2MPJLambdaUtil.java
@@ -1,12 +1,10 @@
 package com.vci.ubcs.starter.util;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.OrderItem;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import org.springblade.core.mp.support.Query;
-import org.springblade.core.mp.support.SqlKeyword;
 import org.springblade.core.tool.support.Kv;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.Func;
@@ -14,9 +12,9 @@
 
 import java.util.Map;
 
-public class Map2MPLLambdaUtil {
+public class Map2MPJLambdaUtil {
 
-	public Map2MPLLambdaUtil() {
+	public Map2MPJLambdaUtil() {
 	}
 
 	public static <T> IPage<T> getPage(Query query) {
@@ -52,6 +50,11 @@
 		return getMPJLambdaWrapper(query, exclude, clazz);
 	}
 
+	public static <T> MPJLambdaWrapper<T> getMPJLambdaWrapperByMapString(Map<String, String> query, Class<T> clazz) {
+		Kv exclude = Kv.create().set("Blade-Auth", "Blade-Auth").set("current", "current").set("size", "size").set("ascs", "ascs").set("descs", "descs");
+		return getMPJLambdaWrapperByMapString(query, exclude, clazz);
+	}
+
 	/**
 	 * map杞崲涓篗PJLambdaWrapper
 	 * @param query
@@ -70,5 +73,15 @@
 		return qw;
 	}
 
+	public static <T> MPJLambdaWrapper<T> getMPJLambdaWrapperByMapString(Map<String, String> query, Map<String, Object> exclude, Class<T> clazz) {
+		exclude.forEach((k, v) -> {
+			query.remove(k);
+		});
+		MPJLambdaWrapper<T> qw = new MPJLambdaWrapper();
+		qw.setEntity(BeanUtil.newInstance(clazz));
+		MPJLambdaWrapperSqlKeyword.buildConditionByMapString(query, qw);
+		return qw;
+	}
+
 
 }
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeButtonController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeButtonController.java
index ddf9b95..2e1d209 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeButtonController.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeButtonController.java
@@ -58,6 +58,84 @@
 
 	private final ICodeButtonService codeButtonService;
 
+	CodeButtonMapper codeButtonMapper;
+
+	/**
+	 * 妯℃澘鎵╁睍姹� 璇︽儏
+	 */
+	@GetMapping("/detail")
+	@ApiOperationSupport(order = 1)
+	@ApiOperation(value = "璇︽儏", notes = "浼犲叆codebutton")
+	public R<CodeButtonVO> detail(CodeButton codebutton) {
+		CodeButton detail = codeButtonMapper.selectOne(Condition.getQueryWrapper(codebutton));
+		return R.data(CodeButtonWrapper.build().entityVO(detail));
+	}
+	/**
+	 * 妯℃澘鎵╁睍姹� 鍒嗛〉
+	 */
+	@GetMapping("/list")
+	@ApiOperationSupport(order = 2)
+	@ApiOperation(value = "鍒嗛〉", notes = "浼犲叆codebutton")
+	public R<IPage<CodeButtonVO>> list(CodeButton codebutton, Query query) {
+		IPage<CodeButton> pages = codeButtonMapper.selectPage(Condition.getPage(query), Condition.getQueryWrapper(codebutton));
+		return R.data(CodeButtonWrapper.build().pageVO(pages));
+	}
+
+	/**
+	 * 妯℃澘鎵╁睍姹� 鑷畾涔夊垎椤�
+	 */
+	@GetMapping("/page")
+	@ApiOperationSupport(order = 3)
+	@ApiOperation(value = "鍒嗛〉", notes = "浼犲叆codebutton")
+	public R<IPage<CodeButtonVO>> page(CodeButtonVO codebutton, Query query) {
+		IPage<CodeButtonVO> pages = codeButtonService.selectcodebuttonPage(Condition.getPage(query), codebutton);
+		return R.data(pages);
+	}
+
+	/**
+	 * 妯℃澘鎵╁睍姹� 鏂板
+	 */
+	@PostMapping("/save")
+	@ApiOperationSupport(order = 4)
+	@ApiOperation(value = "鏂板", notes = "浼犲叆codebutton")
+	public R save(@Valid @RequestBody CodeButton codebutton) {
+		return R.status(SqlHelper.retBool(codeButtonMapper.insert(codebutton)));
+	}
+
+	/**
+	 * 妯℃澘鎵╁睍姹� 淇敼
+	 */
+	@PostMapping("/update")
+	@ApiOperationSupport(order = 5)
+	@ApiOperation(value = "淇敼", notes = "浼犲叆codebutton")
+	public R update(@Valid @RequestBody CodeButton codebutton) {
+		return R.status(SqlHelper.retBool(codeButtonMapper.updateById(codebutton)));
+	}
+
+	/**
+	 * 妯℃澘鎵╁睍姹� 鏂板鎴栦慨鏀�
+	 */
+	@PostMapping("/submit")
+	@ApiOperationSupport(order = 6)
+	@ApiOperation(value = "鏂板鎴栦慨鏀�", notes = "浼犲叆codebutton")
+	public R submit(@Valid @RequestBody CodeButton codebutton) {
+		if(codebutton.getOid() != null){
+			return R.status(SqlHelper.retBool(codeButtonMapper.updateById(codebutton)));
+		}
+		return R.status(SqlHelper.retBool(codeButtonMapper.insert(codebutton)));
+	}
+
+	/**
+	 * 妯℃澘鎵╁睍姹� 鍒犻櫎
+	 */
+	@PostMapping("/remove")
+	@ApiOperationSupport(order = 7)
+	@ApiOperation(value = "閫昏緫鍒犻櫎", notes = "浼犲叆ids")
+	public R remove(@ApiParam(value = "涓婚敭闆嗗悎", required = true) @RequestParam String ids) {
+//		return codebuttonService.deleteCodeButton(ids);
+		return R.status(SqlHelper.retBool(codeButtonMapper.deleteBatchIds(Func.toStrList(ids))));
+	}
+
 	/**
 	 * 涓绘暟鎹腑鐨勬寜閽墿灞曞垪琛�
 	 * @param baseQueryObject 鍩虹鏌ヨ瀵硅薄锛屽寘鍚煡璇㈡潯浠讹紝鍒嗛〉锛屾帓搴忕瓑
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyTemplateAttrController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyTemplateAttrController.java
index 07c50ad..1873d6a 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyTemplateAttrController.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyTemplateAttrController.java
@@ -219,7 +219,7 @@
 	 * @return 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
 	 */
 	@GetMapping("/refDataGrid")
-	public DataGrid<CodeClassifyTemplateAttrVO> refDataGridCodeClassifyTemplateAttr(BaseQueryObject baseQueryObject){
+	public IPage<CodeClassifyTemplateAttrVO> refDataGridCodeClassifyTemplateAttr(BaseQueryObject baseQueryObject){
 		if(baseQueryObject == null){
 			baseQueryObject = new BaseQueryObject();
 		}
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyTemplateAttrService.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyTemplateAttrService.java
index 4b6ccca..ba6dc97 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyTemplateAttrService.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/ICodeClassifyTemplateAttrService.java
@@ -34,7 +34,6 @@
 	 */
 	IPage<CodeClassifyTemplateAttrVO> gridCodeClassifyTemplateAttr(MPJLambdaWrapper<CodeClassifyTemplateAttr> mpjLambdaWrapper , PageHelper pageHelper) throws VciBaseException;
 
-
 	/**
 	 * 鏁版嵁瀵硅薄杞崲涓烘樉绀哄璞�
 	 * @param  codeClassifyTemplateAttrDO 鏁版嵁瀵硅薄
@@ -42,7 +41,6 @@
 	 * @throws VciBaseException 鎷疯礉灞炴�у嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
 	 */
 	CodeClassifyTemplateAttrVO codeClassifyTemplateAttrDO2VO(CodeClassifyTemplateAttr codeClassifyTemplateAttrDO) throws VciBaseException;
-
 
 	/**
 	 * 鑷畾涔夊垎椤�
@@ -81,7 +79,6 @@
 	 * @return 鎵ц缁撴灉
 	 */
 	DataGrid<CodeClassifyTemplateAttrVO> gridCodeClassifyTemplateAttr(Map<String, String> conditionMap, PageHelper pageHelper);
-
 
 	/**
 	 * 澧炲姞涓婚搴撳垎绫荤殑妯℃澘灞炴��
@@ -126,7 +123,7 @@
 	 * @param pageHelper 鍒嗛〉鍜屾帓搴�
 	 * @return 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
 	 */
-	DataGrid<CodeClassifyTemplateAttrVO> refDataGridCodeClassifyTemplateAttr(Map<String, String> conditionMap, PageHelper pageHelper);
+	IPage<CodeClassifyTemplateAttrVO> refDataGridCodeClassifyTemplateAttr(Map<String, String> conditionMap, PageHelper pageHelper);
 
 	/**
 	 * 鏌ヨ杩欎釜妯℃澘锛屼笟鍔$被鍨嬩笅鐨勬墍鏈夋湭閫夋嫨鐨勫睘鎬�
@@ -134,6 +131,7 @@
 	 * @return
 	 */
 	DataGrid<CodeOsbtmtypeattributeVO> codeClassifyTemplateAttrByBtm(BaseQueryObject baseQueryObject);
+
 	/**
 	 * 鏌ヨ杩欎釜妯℃澘锛屼笟鍔$被鍨嬩笅宸查�夋嫨鐨勫睘鎬�
 	 * @param baseQueryObject
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java
index 8470c1b..7533870 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java
@@ -44,7 +44,7 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springblade.core.cache.utils.CacheUtil;
-import com.vci.ubcs.core.log.exception.ServiceException;
+import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.api.R;
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateAttrServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateAttrServiceImpl.java
index 24eb35b..6410775 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateAttrServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyTemplateAttrServiceImpl.java
@@ -25,6 +25,8 @@
 import com.vci.ubcs.starter.util.PatternUtil;
 import com.vci.ubcs.starter.web.enumpck.VciFieldTypeEnum;
 import com.vci.ubcs.starter.web.pagemodel.*;
+import com.vci.ubcs.starter.util.Map2MPJLambdaUtil;
+import com.vci.ubcs.starter.web.pagemodel.PageHelper;
 import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
 import com.vci.ubcs.starter.web.util.VciBaseUtil;
 import com.vci.ubcs.starter.web.util.VciDateUtil;
@@ -61,10 +63,11 @@
 	@Resource
 	private CodeClassifyTemplateAttrMapper codeClassifyTemplateAttrMapper;
 
-//	@Resource
-//	CodeClstempattrMapper codeClstempattrMapper;
 	//	@Resource
-//	ICodeTempphaseService codeTempphaseService;
+	//	CodeClstempattrMapper codeClstempattrMapper;
+		//	@Resource
+	//	ICodeTempphaseService codeTempphaseService;
+
 	@Resource
 	IDictBizClient iDictBizClient;
 	@Resource
@@ -112,20 +115,20 @@
 		return voList;
 	}
 
-//	/**
-//	 * 鍙傜収涓婚搴撳垎绫荤殑妯℃澘灞炴�у垪琛�
-//	 * @param conditionMap 鏌ヨ鏉′欢
-//	 * @param pageHelper 鍒嗛〉鍜屾帓搴�
-//	 * @return 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
-//	 * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
-//	 */
-//	@Override
-//	public IPage<CodeClassifyTemplateAttrVO> refDataGridCodeClassifyTemplateAttr(Map<String, Object> conditionMap, PageHelper pageHelper) throws VciBaseException{
-//		if(conditionMap == null){
-//			conditionMap = new HashMap<String, Object>();
-//		}
-//		return gridCodeClassifyTemplateAttr(Map2MPLLambdaUtil.getMPJLambdaWrapper(conditionMap, CodeClassifyTemplateAttr.class),pageHelper);
-//	}
+	/**
+	 * 鍙傜収涓婚搴撳垎绫荤殑妯℃澘灞炴�у垪琛�
+	 * @param conditionMap 鏌ヨ鏉′欢
+	 * @param pageHelper 鍒嗛〉鍜屾帓搴�
+	 * @return 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
+	 * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
+	 */
+	@Override
+	public IPage<CodeClassifyTemplateAttrVO> refDataGridCodeClassifyTemplateAttr(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
+		if(conditionMap == null){
+			conditionMap = new HashMap<String, String>();
+		}
+		return gridCodeClassifyTemplateAttr(Map2MPJLambdaUtil.getMPJLambdaWrapperByMapString(conditionMap, CodeClassifyTemplateAttr.class),pageHelper);
+	}
 
 	@Override
 	public IPage<CodeClassifyTemplateAttrVO> selectCodeClstempattrPage(IPage<CodeClassifyTemplateAttrVO> page, CodeClassifyTemplateAttrVO CodeClstempattr) {
@@ -195,7 +198,7 @@
 		return vo;
 	}
 
-//	@Override
+	//	@Override
 //	public IPage<CodeClassifyTemplateAttrVO> selectCodeClstempattrPage(IPage<CodeClassifyTemplateAttrVO> page, CodeClassifyTemplateAttrVO CodeClstempattr) {
 //		return page.setRecords(baseMapper.selectCodeClstempattrPage(page, CodeClstempattr));
 //	}
@@ -270,7 +273,7 @@
 	 */
 	@Override
 	public DataGrid<CodeClassifyTemplateAttrVO> gridCodeClassifyTemplateAttr(Map<String, String> conditionMap, PageHelper pageHelper) {
-		DataGrid<CodeClassifyTemplateAttrVO> dataGrid=new DataGrid<CodeClassifyTemplateAttrVO>();
+		DataGrid<CodeClassifyTemplateAttrVO> dataGrid=new DataGrid<>();
 		//娌℃湁浼犻�掑弬鏁帮紝灏变笉鎵ц鏌ヨ閫昏緫
 		if(conditionMap.size()==0){
 			dataGrid.setData(new ArrayList<>());
@@ -328,7 +331,6 @@
 		baseMapper.insert(codeClassifyTemplateAttrDO);
 		return codeClassifyTemplateAttrDO2VO(codeClassifyTemplateAttrDO);
 	}
-
 
 	/**
 	 * 鎵归噺娣诲姞
@@ -527,7 +529,6 @@
 		}
 	}
 
-
 	/**
 	 * 淇敼涓婚搴撳垎绫荤殑妯℃澘灞炴��
 	 * @param codeClassifyTemplateAttrDTO 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф暟鎹紶杈撳璞�
@@ -688,13 +689,13 @@
 	 * @return 涓婚搴撳垎绫荤殑妯℃澘灞炴�ф樉绀哄璞″垪琛紝鐢熸晥鐨勫唴瀹�
 	 * @throws VciBaseException 鏌ヨ鏉′欢鍜屽垎椤靛嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父
 	 */
-	@Override
-	public DataGrid<CodeClassifyTemplateAttrVO> refDataGridCodeClassifyTemplateAttr(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
-		if(conditionMap == null){
-			conditionMap = new HashMap<String, String>();
-		}
-		return gridCodeClassifyTemplateAttr(conditionMap,pageHelper);
-	}
+//	@Override
+//	public DataGrid<CodeClassifyTemplateAttrVO> refDataGridCodeClassifyTemplateAttr(Map<String, String> conditionMap, PageHelper pageHelper) throws VciBaseException{
+//		if(conditionMap == null){
+//			conditionMap = new HashMap<String, String>();
+//		}
+//		return gridCodeClassifyTemplateAttr(conditionMap,pageHelper);
+//	}
 
 	/**
 	 * 鏌ヨ杩欎釜妯℃澘锛屼笟鍔$被鍨嬩笅鐨勬墍鏈夋湭閫夋嫨鐨勫睘鎬�
@@ -786,8 +787,6 @@
 		return dataGrid;
 	}
 
-
-
 	/**
 	 * 鏌ヨ杩欎釜妯℃澘锛屼笟鍔$被鍨嬩笅宸查�夋嫨鐨勫睘鎬�
 	 * @param baseQueryObject
@@ -845,7 +844,6 @@
 		dataGrid.setTotal(boAttrss.size());
 		return dataGrid;
 	}
-
 
 	/**
 	 * 鍚屾鍒板叾浠栨ā鏉�
diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeTempbuttonServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeTempbuttonServiceImpl.java
index afe45ba..84a46e4 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeTempbuttonServiceImpl.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeTempbuttonServiceImpl.java
@@ -17,8 +17,6 @@
 package com.vci.ubcs.code.service.impl;
 
 import com.alibaba.nacos.common.utils.StringUtils;
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -26,7 +24,6 @@
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.vci.ubcs.code.constant.MdmBtmTypeConstant;
 import com.vci.ubcs.code.dto.CodeClassifyTemplateButtonDTO;
-import com.vci.ubcs.code.dto.CodeClassifyValueDTO;
 import com.vci.ubcs.code.entity.*;
 import com.vci.ubcs.code.enumpack.CodeButtonUseEnum;
 import com.vci.ubcs.code.mapper.CodeClassifyTemplateButtonMapper;
@@ -35,29 +32,23 @@
 import com.vci.ubcs.code.vo.pagemodel.CodeButtonVO;
 import com.vci.ubcs.code.vo.pagemodel.CodeClassifyTemplateButtonVO;
 import com.vci.ubcs.code.wrapper.CodeTempbuttonWrapper;
-import com.vci.ubcs.common.utils.PageDO2PageVO;
 import com.vci.ubcs.starter.exception.VciBaseException;
 import com.vci.ubcs.starter.revision.service.RevisionModelUtil;
 import com.vci.ubcs.starter.util.DefaultAttrAssimtUtil;
-import com.vci.ubcs.starter.util.Map2MPLLambdaUtil;
-import com.vci.ubcs.starter.web.pagemodel.DataGrid;
+import com.vci.ubcs.starter.util.Map2MPJLambdaUtil;
 import com.vci.ubcs.starter.web.pagemodel.PageHelper;
 import com.vci.ubcs.starter.web.util.BeanUtil;
 import com.vci.ubcs.starter.web.util.BeanUtilForVCI;
 import com.vci.ubcs.starter.web.util.VciBaseUtil;
-import com.vci.ubcs.starter.web.util.WebUtil;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
 import org.springblade.core.tool.api.R;
-import org.springblade.core.tool.utils.Func;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cglib.beans.BeanMap;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
-import javax.annotation.Resource;
-import java.lang.reflect.Field;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -294,7 +285,7 @@
 		CodeClassifyTemplateButton codeClassifyTemplateButton = new CodeClassifyTemplateButton();
 		BeanMap beanMap = BeanMap.create(codeClassifyTemplateButton);
 		beanMap.putAll(conditionMap);
-		MPJLambdaWrapper<CodeClassifyTemplateButton> mpjLambdaWrapper = Map2MPLLambdaUtil.getMPJLambdaWrapper(codeClassifyTemplateButton)
+		MPJLambdaWrapper<CodeClassifyTemplateButton> mpjLambdaWrapper = Map2MPJLambdaUtil.getMPJLambdaWrapper(codeClassifyTemplateButton)
 			.selectAll(CodeClassifyTemplateButton.class)
 			.selectAs(CodeButton::getName, CodeClassifyTemplateButton::getClassifyButtonOidName)
 			.selectAs(CodeButton::getId, CodeClassifyTemplateButton::getClassifyButtonId)

--
Gitblit v1.9.3