From 41021633bfee5b5c9c57cb888423f3392c530f98 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期一, 25 三月 2024 18:31:08 +0800
Subject: [PATCH] 业务类型bug修改,集成接口,远程部署等功能修改。

---
 Source/UBCS-WEB/src/views/modeling/BusinessEdit.vue |  331 +++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 213 insertions(+), 118 deletions(-)

diff --git a/Source/UBCS-WEB/src/views/modeling/BusinessEdit.vue b/Source/UBCS-WEB/src/views/modeling/BusinessEdit.vue
index d60c8cb..4508f71 100644
--- a/Source/UBCS-WEB/src/views/modeling/BusinessEdit.vue
+++ b/Source/UBCS-WEB/src/views/modeling/BusinessEdit.vue
@@ -1,18 +1,19 @@
 <template>
   <el-dialog
-    title="涓氬姟绫诲瀷"
-    :visible.sync="showSubmitDialog"
     v-loading="loading"
+    :visible.sync="showSubmitDialog"
     append-to-body
-    @close="closeSubmitDialog"
-    width="70%"
-    top="6vh"
     style="height: 115vh;"
+    title="涓氬姟绫诲瀷"
+    top="6vh"
+    width="70%"
+    @close="closeSubmitDialog"
   >
-    <el-form ref="form" :model="btmEditType" show-message="true" inline size="medium" label-suffix=":" class="btmTypeForm"
-             :rules="rules" @resetFields="resetForm" status-icon="true">
-      <el-form-item label="鑻辨枃鍚嶇О" label-width="100px"  prop="id">
-        <el-input v-model="btmType.id" :prefix-icon="icons.key" :disabled="true"></el-input>
+    <el-form ref="form" :model="btmType" :rules="rules" class="btmTypeForm" inline label-suffix=":"
+             show-message="true"
+             size="medium" status-icon="true" @resetFields="resetForm">
+      <el-form-item label="鑻辨枃鍚嶇О" label-width="100px" prop="id">
+        <el-input v-model="btmType.id" :disabled="true" :prefix-icon="icons.key"></el-input>
       </el-form-item>
       <el-form-item label="涓枃鍚嶇О" label-width="100px">
         <el-input v-model="btmType.name" :prefix-icon="icons.name"></el-input>
@@ -20,33 +21,33 @@
       <!-- <el-form-item label="鏁版嵁搴撹〃鍚�" label-width="100px">
         <el-input v-model="btmType.tableName" :prefix-icon="icons.tableName"></el-input>
       </el-form-item> -->
-      <el-form-item label="鎵�灞為鍩�" label-width="100px" prop="domain" class="domainSelect">
-        <el-select  placeholder="璇烽�夋嫨棰嗗煙" v-model="btmType.bizDomain" :prefix-icon="icons.domain">
+      <el-form-item class="domainSelect" label="鎵�灞為鍩�" label-width="100px" prop="domain">
+        <el-select v-model="btmType.bizDomain" :prefix-icon="icons.domain" placeholder="璇烽�夋嫨棰嗗煙" @change="domainChange">
           <el-option v-for="item in domainOption"
-                     :label="item.label" :value="item.value" :key="item.value">
+                     :key="item.value" :label="item.label" :value="item.value">
           </el-option>
         </el-select>
       </el-form-item>
       <el-form-item label="鐗堟湰瑙勫垯" label-width="100px">
         <el-input v-model="btmType.revisionRuleName"
                   :prefix-icon="icons.revisionRule"
-                  class="revisionRule"
-                  @focus="openRevision"
-                  clearable
-                  @clear="clearRevision"
                   :suffix-icon="icons.referType"
-                  placeholder="璇烽�夋嫨锛岀暀绌哄垯涓嶈繘琛岀鐞�">
+                  class="revisionRule"
+                  clearable
+                  placeholder="璇烽�夋嫨锛岀暀绌哄垯涓嶈繘琛岀鐞�"
+                  @clear="clearRevision"
+                  @focus="openRevision">
         </el-input>
       </el-form-item>
       <el-form-item label="鐢熷懡鍛ㄦ湡" label-width="100px">
         <el-input v-model="btmType.lifeCycleName"
                   :prefix-icon="icons.lifeCycle"
-                  class="lifeCycle"
-                  @focus="openLifeCycle"
-                  clearable
-                  @clear="clearLifeCycle"
                   :suffix-icon="icons.referType"
-                  placeholder="璇烽�夋嫨锛岀暀绌哄垯涓嶈繘琛岀鐞�">
+                  class="lifeCycle"
+                  clearable
+                  placeholder="璇烽�夋嫨锛岀暀绌哄垯涓嶈繘琛岀鐞�"
+                  @clear="clearLifeCycle"
+                  @focus="openLifeCycle">
         </el-input>
       </el-form-item>
       <!--      <div>-->
@@ -57,35 +58,40 @@
       <!--          <el-input v-model="btmType.view" :prefix-icon="icons.view" :disabled="!btmType.viewFlag"></el-input>-->
       <!--        </el-form-item>-->
       <!--      </div>-->
-      <el-form-item label="鎻忚堪" label-width="100px" class="description">
-        <el-input v-model="btmType.description"
+      <el-form-item class="description" label="鎻忚堪" label-width="100px">
+        <el-input id="descId"
+                  v-model="btmType.description"
                   :prefix-icon="icons.desc"
                   class="descClass"
-                  id="descId"
         ></el-input>
       </el-form-item>
     </el-form>
-    <avue-crud :option="option"
+    <avue-crud ref="attrTable"
                :data="btmType.attributes"
-               :page.sync="page"
-               ref="attrTable">
-      <template slot-scope="scope" slot="menuLeft">
-        <el-button type="danger"
-                   icon="el-icon-plus"
+               :option="option"
+               :page.sync="page">
+      <template slot="menuLeft" slot-scope="scope">
+        <el-button icon="el-icon-plus"
                    size="small"
+                   type="danger"
                    @click="rowAdd()">灞炴�ч�夋嫨
         </el-button>
       </template>
       <template slot="attrDataTypeText" slot-scope="{row}">
-        <el-tag>{{ row.attrDataTypeText }}</el-tag>
+        <el-tag v-if="row.attrDataTypeText">{{ row.attrDataTypeText }}</el-tag>
+      </template>
+      <template slot="isDefaultAttr" slot-scope="{row}">
+        <el-tag v-if="row.isDefaultAttr" type="success">鏄�</el-tag>
+        <el-tag v-else type="danger">鍚�</el-tag>
       </template>
       <template slot="menu" slot-scope="{row,index}">
-        <el-button icon="el-icon-edit" size="small" type="text" v-if="!row.$cellEdit" @click="cellEditClick(row,index)">缂栬緫
+        <el-button v-if="!row.$cellEdit" icon="el-icon-edit" size="small" type="text" @click="cellEditClick(row,index)">
+          缂栬緫
         </el-button>
-        <el-button icon="el-icon-delete" size="small" type="text" v-if="!row.$cellEdit"
+        <el-button v-if="!row.$cellEdit" icon="el-icon-delete" size="small" type="text"
                    @click="removeFormAttrTable(row,index)">绉婚櫎
         </el-button>
-        <el-button icon="el-icon-check" size="small" type="text" v-if="row.$cellEdit" @click="cellEditSave(row,index)">
+        <el-button v-if="row.$cellEdit" icon="el-icon-check" size="small" type="text" @click="cellEditSave(row,index)">
           淇濆瓨
         </el-button>
       </template>
@@ -96,23 +102,23 @@
     </div>
 
     <!-- 灞炴�ф睜鐨勯�夋嫨 -->
-    <el-dialog title="灞炴�ф睜"
-               :visible="attrRef.visible"
+    <el-dialog :visible="attrRef.visible"
                append-to-body
-               @close="closeAttrDialog"
+               title="灞炴�ф睜"
                width="80%"
+               @close="closeAttrDialog"
     >
-      <avue-crud class="attrRef"
-                 :option="attrRef.option"
+      <avue-crud ref="attrRef"
+                 v-loading="attrRef.loading"
                  :data="attrRef.data"
+                 :option="attrRef.option"
                  :page.sync="attrRef.page"
-                 ref="attrRef"
+                 class="attrRef"
                  @on-load="attrRefOnLoad"
                  @search-change="attrRefSearch"
-                 @selection-change="selectionChange"
-                 v-loading="attrRef.loading">
+                 @selection-change="selectionChange">
         <template slot="typeValue" slot-scope="scope">
-          <el-tag>{{ scope.row.typeValue }}</el-tag>
+          <el-tag v-if="scope.row.typeValue">{{ scope.row.typeValue }}</el-tag>
         </template>
       </avue-crud>
       <div slot="footer" class="dialog-footer">
@@ -121,18 +127,18 @@
       </div>
     </el-dialog>
     <!-- 鐗堟湰瑙勫垯鐨勫弬鐓� -->
-    <el-dialog title="璇烽�夋嫨鐗堟湰瑙勫垯"
-               :visible.sync="revisionRef.visible"
+    <el-dialog :visible.sync="revisionRef.visible"
                append-to-body
+               title="璇烽�夋嫨鐗堟湰瑙勫垯"
                width="80%">
 
-      <avue-crud class="revisionRef"
-                 :option="revisionRef.option"
-                 :data="revisionRef.data"
-                 :page.sync="revisionRef.page"
-                 ref="revisionRef"
-                 @row-click="revisionClick"
+      <avue-crud ref="revisionRef"
                  v-loading="revisionRef.loading"
+                 :data="revisionRef.data"
+                 :option="revisionRef.option"
+                 :page.sync="revisionRef.page"
+                 class="revisionRef"
+                 @row-click="revisionClick"
                  @search-change="searchRevisionRule"
                  @search-reset="clearSearchRevisionRule">
         <template slot="radio"
@@ -149,18 +155,18 @@
     </el-dialog>
 
     <!-- 鐢熷懡鍛ㄦ湡鐨勫弬鐓� -->
-    <el-dialog title="璇烽�夋嫨鐢熷懡鍛ㄦ湡"
-               :visible.sync="lifeCycleRef.visible"
+    <el-dialog :visible.sync="lifeCycleRef.visible"
                append-to-body
+               title="璇烽�夋嫨鐢熷懡鍛ㄦ湡"
                width="80%">
 
-      <avue-crud class="lifeCycleRef"
-                 :option="lifeCycleRef.option"
-                 :data="lifeCycleRef.data"
-                 :page.sync="lifeCycleRef.page"
-                 ref="lifeCycleRef"
-                 @row-click="lifeCycleClick"
+      <avue-crud ref="lifeCycleRef"
                  v-loading="lifeCycleRef.loading"
+                 :data="lifeCycleRef.data"
+                 :option="lifeCycleRef.option"
+                 :page.sync="lifeCycleRef.page"
+                 class="lifeCycleRef"
+                 @row-click="lifeCycleClick"
                  @search-change="searchLifeCycle"
                  @search-reset="clearSearchLifeCycle">
         <template slot="radio"
@@ -183,7 +189,7 @@
 
 <script>
 
-import {add, update} from '@/api/omd/btmType';
+import {add, defaultRequestHandler, update} from '@/api/omd/btmType';
 import {queryPage} from '@/api/omd/OmdAttribute';
 import {getPage} from '@/api/omd/revisionRule';
 import {getList} from '@/api/modeling/cycle';
@@ -193,7 +199,7 @@
   props: {
     btmType: {
       type: Object,
-      default:{}
+      default: {}
     },
     domainOption: {
       type: Array
@@ -202,19 +208,37 @@
       type: Array
     },
     type: {
-      type:String,
+      type: String,
     },
-    btmEditType:{
-      type:Object,
-      default: {}
-    }
   },
   watch: {
+    btmType(newval) {
+      if (newval) {
+        //鎵�灞為鍩�
+        if (newval.domainText) {
+          this.getDefaultData('defaultAttr', 'domainData', 'domainFirstSelection', 'get');
+        }else {
+          this.domainFirstValue = false;
+        }
+        //鐗堟湰瑙勫垯
+        if (newval.revisionRuleName && newval.revisionRuleId) {
+          this.getDefaultData('reVersionRule', 'ruleData', 'ruleFirstSelection', 'get');
+        }else {
+          this.ruleFirstValue = false;
+        }
+        //鐢熷懡鍛ㄦ湡
+        if (newval.lifeCycleId && newval.lifeCycleName) {
+          this.getDefaultData('lifeCycle', 'lifeData', 'lifeCycleSelection', 'get');
+        }else {
+          this.lifeCycleValue = false;
+        }
+      }
+    }
   },
   data() {
     return {
       form: {},
-      loading:false,
+      loading: false,
       showSubmitDialog: false,
       option: {
         height: "330px",
@@ -229,7 +253,7 @@
         delBtn: false,
         columnBtn: false,
         menuWidth: 150,
-        refreshBtn:false,
+        refreshBtn: false,
         addBtn: false,
         highlightCurrentRow: true,
         column: [
@@ -237,13 +261,13 @@
             label: '鑻辨枃鍚嶇О',
             prop: 'id',
             align: 'center',
-            disabled:true
+            disabled: true
           }, {
             label: '涓枃鍚嶇О',
             prop: 'name',
             align: 'center',
             cell: true
-          },{
+          }, {
             label: "绫诲瀷",
             prop: "attrDataTypeText",
             align: 'center',
@@ -260,6 +284,13 @@
             prop: "description",
             align: 'center',
             cell: true
+          },
+          {
+            label: '榛樿瀛楁',
+            prop: 'isDefaultAttr',
+            align: 'center',
+            cell: true,
+            slot: true
           }
         ]
       },
@@ -289,7 +320,7 @@
               prop: 'id',
               align: 'left',
               search: true,
-              disabled:true,
+              disabled: true,
               width: 230
             }, {
               label: '涓枃鍚嶇О',
@@ -362,7 +393,7 @@
             {
               label: '鑻辨枃鍚嶇О',
               prop: 'id',
-              disabled:true,
+              disabled: true,
               search: true
             },
             {
@@ -427,7 +458,7 @@
             {
               label: '鑻辨枃鍚嶇О',
               prop: 'id',
-              disabled:true,
+              disabled: true,
               search: true
             },
             {
@@ -476,12 +507,85 @@
           {required: true, message: '璇烽�夋嫨鎵�灞為鍩�', trigger: 'blur'}
         ]
       },
+      domainData: [],
+      ruleData: [],
+      lifeData: [],
+      domainFirstSelection: true,
+      domainFirstValue: true,
+      ruleFirstSelection: true,
+      ruleFirstValue: true,
+      lifeCycleSelection: true,
+      lifeCycleValue: true,
     }
   },
   created() {
-
   },
   methods: {
+    //鎵�灞為鍩焎hange
+    domainChange(){
+      if(!this.domainFirstValue){
+        this.getDefaultData('defaultAttr', 'domainData', 'domainFirstSelection', 'detail');
+        this.domainFirstValue = true;
+      }
+    },
+    getDefaultData(requestType, dataName, selectionName, type) {
+      if (type === 'get') {
+        defaultRequestHandler(requestType).then(res => {
+          this[dataName] = res.data.data;
+          res.data.data.forEach(item => {
+            let data = {
+              id: item.id,
+              name: item.name,
+              attrDataType: item.attrDataType,
+              attrDataTypeText: item.attrDataTypeText,
+              defaultValue: item.defaultValue,
+              description: item.description,
+              attributeLength: item.attributeLength,
+              referBtmTypeId: item.referTypeCode,
+              referBtmTypeName: item.referToName,
+              enumId: item.dictCode,
+              isDefaultAttr: item.isDefaultAttr
+            }
+            if (!this.btmType.attributes) {
+              this.btmType.attributes = [];
+            }
+            // 鑾峰彇閲嶅鐨刬d
+            let isIds = this.btmType.attributes.filter(attr => attr.id === data.id);
+            if (isIds.length === 0) {
+              this.btmType.attributes.push(data);
+            }
+          })
+          this.attrRefOnLoad()
+        });
+      } else {
+        if (this[selectionName]) {
+          defaultRequestHandler(requestType).then(res => {
+            this[dataName] = res.data.data;
+            res.data.data.forEach(item => {
+              let data = {
+                id: item.id,
+                name: item.name,
+                attrDataType: item.attrDataType,
+                attrDataTypeText: item.attrDataTypeText,
+                defaultValue: item.defaultValue,
+                description: item.description,
+                attributeLength: item.attributeLength,
+                referBtmTypeId: item.referTypeCode,
+                referBtmTypeName: item.referToName,
+                enumId: item.dictCode,
+                isDefaultAttr: item.isDefaultAttr
+              }
+              if (!this.btmType.attributes) {
+                this.btmType.attributes = [];
+              }
+              this.btmType.attributes.push(data);
+            })
+            this.attrRefOnLoad()
+            this[selectionName] = false;
+          });
+        }
+      }
+    },
     // 鍏抽棴缁勪欢寮圭獥
     closeSubmitDialog() {
       this.showSubmitDialog = false;
@@ -513,12 +617,7 @@
         const data = res.data.data;
         this.attrRef.page.total = data.total;
         this.attrRef.data = data.records;
-      });
-      setTimeout(() => {
         this.attrRef.loading = false;
-      }, 600)
-      this.$nextTick(() => {
-        this.$refs.attrRef.refreshTable();
       });
     },
     // 灞炴�ф睜妫�绱�
@@ -561,6 +660,8 @@
         });
         this.attrRef.queryNotIn += (item.id + ",")
       });
+      this.$refs.attrRef.selectClear();
+      this.attrRef.selectData = [];
       this.attrRef.data = [];
       this.closeAttrDialog();
     },
@@ -572,26 +673,20 @@
     // 娣诲姞涓氬姟绫诲瀷
     submitBtmType() {
       // console.log(this.btmType);
-      if (!this.btmType.attributes){
+      if (!this.btmType || !this.btmType.attributes) {
         this.$message.warning("杩樻病鏈変负涓氬姟绫诲瀷閫夋嫨灞炴��");
         return;
-      }else{
-        let nullFlag = false;
-        this.btmType.attributes.forEach(item => {
-          if (!item.name){
-            this.$message.warning("绗�" + (item.$index+1) + "琛岀殑涓枃鍚嶇О涓嶈兘涓虹┖");
-            nullFlag = true;
-            return;
-          }
-        })
-        if (nullFlag){
-          return;
-        }
-
       }
-      add(this.btmType, true).then(res => {
+      const hasEmptyName = this.btmType.attributes.some(item => !item.name);
+      if (hasEmptyName) {
+        this.$message.warning('璇锋鏌ヨ〃鏍间腑鏄惁瀛樺湪涓枃鍚嶇О涓虹┖锛�')
+        return;
+      }
+      this.btmType.attributes = this.btmType.attributes.filter(item => !item.isDefaultAttr);
+      add(this.btmType,true).then(res => {
+        // console.log(res)
         // 娣诲姞瀹屾垚锛屽洖璋冪埗缁勪欢鐨勫埛鏂�
-        this.$message.success('淇濆瓨鎴愬姛');
+        this.$message.success(res.data.msg);
         this.cancleSubmitBtmType();
         this.$emit('refreshTable');
       })
@@ -618,7 +713,7 @@
       cell.$cellEdit = true;
     },
     // 鍒楄〃缂栬緫淇濆瓨
-    cellEditSave(row,index) {
+    cellEditSave(row, index) {
       this.btmType.attributes[index].name = row.name
       this.btmType.attributes[index].defaultValue = row.defaultValue;
       this.btmType.attributes[index].description = row.description;
@@ -632,7 +727,7 @@
       this.revisionRuleOnLoad();
     },
     // 鐗堟湰鍙傜収鍒楄〃鐨勯粯璁ゆ煡璇㈡柟娉�
-    revisionRuleOnLoad(){
+    revisionRuleOnLoad() {
       this.revisionRef.loading = true;
       getPage().then(res => {
         this.revisionRef.data = res.data.data.records;
@@ -650,14 +745,12 @@
       this.lifeCycleOnLoad();
     },
     // 鐢熷懡鍛ㄦ湡鍒楄〃鐨勯粯璁ゆ煡璇㈡柟娉�
-    lifeCycleOnLoad(){
+    lifeCycleOnLoad() {
       this.lifeCycleRef.loading = true;
       getList().then(res => {
         this.lifeCycleRef.data = res.data.data.records;
-      });
-      setTimeout(() => {
         this.lifeCycleRef.loading = false;
-      }, 600)
+      });
       this.$nextTick(() => {
         this.$refs.lifeCycleRef.refreshTable();
       });
@@ -676,6 +769,10 @@
       this.btmType.revisionRuleId = this.revisionRef.selectData.id;
       this.btmType.revisionRuleName = this.revisionRef.selectData.name;
       this.btmType.inputRevisionFlag = false;
+      if(!this.ruleFirstValue){
+        this.getDefaultData('reVersionRule', 'ruleData', 'ruleFirstSelection', 'detail');
+        this.ruleFirstValue = true;
+      }
       this.cancelRevision();
     },
     // 纭閫変腑鐢熷懡鍛ㄦ湡
@@ -683,6 +780,10 @@
       this.btmType.lifeCycleFlag = true;
       this.btmType.lifeCycleId = this.lifeCycleRef.selectData.id;
       this.btmType.lifeCycleName = this.lifeCycleRef.selectData.name;
+      if(!this.lifeCycleValue){
+        this.getDefaultData('lifeCycle', 'lifeData', 'lifeCycleSelection', 'detail');
+        this.lifeCycleValue = true;
+      }
       this.cancelLifeCycle();
     },
     // 鍙栨秷閫変腑鐗堟湰瑙勫垯
@@ -736,16 +837,16 @@
      * @param params 鎼滅储妗嗚緭鍏ュ��  {id: '',name: ''} 鐩存帴鑾峰彇灏辫
      * @param done 鎵ц瀹屾垚鍚庣殑鍥炶皟
      */
-    searchRevisionRule(params,done){
+    searchRevisionRule(params, done) {
       let condition = {};
-      if (params.id){
+      if (params.id) {
         condition['id_like'] = params.id;
       }
-      if (params.name){
+      if (params.name) {
         condition['name_like'] = params.name;
       }
       this.revisionRef.loading = true;
-      getPage(this.revisionRef.page.currentPage,this.revisionRef.page.pageSize,condition).then(res => {
+      getPage(this.revisionRef.page.currentPage, this.revisionRef.page.pageSize, condition).then(res => {
         this.revisionRef.data = res.data.data.records;
       });
       setTimeout(() => {
@@ -761,32 +862,26 @@
      * @param params 鎼滅储妗嗚緭鍏ュ��
      * @param done 鎵ц瀹屾垚鍚庣殑鍥炶皟
      */
-    searchLifeCycle(params,done){
+    searchLifeCycle(params, done) {
       let condition = {};
-      if (params.id){
+      if (params.id) {
         condition['id_like'] = params.id;
       }
-      if (params.name){
+      if (params.name) {
         condition['name_like'] = params.name;
       }
       this.lifeCycleRef.loading = true;
-      getList(this.lifeCycleRef.page.currentPage,this.lifeCycleRef.page.pageSize,condition).then(res => {
+      getList(this.lifeCycleRef.page.currentPage, this.lifeCycleRef.page.pageSize, condition).then(res => {
         this.lifeCycleRef.data = res.data.data.records;
-      });
-      setTimeout(() => {
-        done();
         this.lifeCycleRef.loading = false;
-      }, 600);
-      this.$nextTick(() => {
-        this.$refs.lifeCycleRef.refreshTable();
       });
     },
     // 鍙栨秷鐗堟湰瑙勫垯鎼滅储
-    clearSearchRevisionRule(item){
+    clearSearchRevisionRule(item) {
       this.revisionRuleOnLoad();
     },
     // 鍙栨秷鐢熷懡鍛ㄦ湡鎼滅储
-    clearSearchLifeCycle(item){
+    clearSearchLifeCycle(item) {
       this.lifeCycleOnLoad();
       console.log(item);
     }

--
Gitblit v1.9.3