From 101e8e9738e4bfe0ef7a5170d117b47bf901b8f6 Mon Sep 17 00:00:00 2001
From: ludc <pUXmgxCf6A>
Date: 星期一, 29 五月 2023 11:29:48 +0800
Subject: [PATCH] 集团主模型发布接口方法移植开发

---
 Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue |  446 ++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 416 insertions(+), 30 deletions(-)

diff --git a/Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue b/Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue
index 5a75644..bb1501a 100644
--- a/Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue
+++ b/Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue
@@ -5,46 +5,128 @@
     append-to-body
     @close="closeSubmitDialog"
     width="70%"
+    style="height: 115vh;"
     >
-        <el-form ref="form" :model="btmType" show-message="true" inline>
-            <el-form-item label="鑻辨枃鍚嶇О:" label-width="100px">
-                <el-input v-model="btmType.id" prefix-icon="el-icon-finished"></el-input>
+        <el-form ref="form" :model="btmType" show-message="true" inline size="medium" label-suffix=":" class="btmTypeForm">
+                
+            <el-form-item label="鑻辨枃鍚嶇О" label-width="100px" required="true">
+                <el-input v-model="btmType.id" :prefix-icon="icons.key"></el-input>
             </el-form-item>
-            <el-form-item label="涓枃鍚嶇О:" label-width="100px">
-                <el-input v-model="btmType.name" prefix-icon="el-icon-info"></el-input>
+            <el-form-item label="涓枃鍚嶇О" label-width="100px">
+                <el-input v-model="btmType.name" :prefix-icon="icons.name"></el-input>
             </el-form-item>
-            <el-form-item label="鏁版嵁搴撹〃鍚�:" label-width="100px">
-                <el-input v-model="btmType.tableName" prefix-icon="el-icon-date"></el-input>
+            <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">
-                <el-select v-model="btmType.domain" prefix-icon="el-icon-folder-opened">
+            <el-form-item label="鎵�灞為鍩�" label-width="100px">
+                <el-select v-model="btmType.domain" :prefix-icon="icons.domain">
                     <el-option v-for="item in domainOption"
-                    :label="item"></el-option>
+                    :label="item.label" :value="item.value" :key="item.value"></el-option>
                 </el-select>
             </el-form-item>
-            <el-form-item label="鐗堟湰瑙勫垯:" label-width="100px">
-                <el-input v-model="btmType.revisionRuleId" prefix-icon="el-icon-s-check"></el-input>
+            <el-form-item label="鐗堟湰瑙勫垯" label-width="100px">
+                <el-input v-model="btmType.revisionRuleName" :prefix-icon="icons.revisionRule" class="revisionRule"
+                @focus="openRevision" clearable @clear="clearRevision">
+                    <i slot="suffix" class="el-input__icon el-icon-search"></i>
+                </el-input>
             </el-form-item>
-            <el-form-item label="鐢熷懡鍛ㄦ湡:" label-width="100px">
-                <el-input v-model="btmType.lifeCycleId" prefix-icon="el-icon-refresh-right"></el-input>
+            <el-form-item label="鐢熷懡鍛ㄦ湡" label-width="100px">
+                <el-input v-model="btmType.lifeCycleId" :prefix-icon="icons.lifeCycle">
+                    <i slot="suffix" class="el-input__icon el-icon-search"></i>
+                </el-input>
             </el-form-item>
-            <el-form-item label="瑙嗗浘:" label-width="100px">
-                <el-input v-model="btmType.view" prefix-icon="el-icon-view"></el-input>
+            <div>
+            <el-form-item label="寮�鍚鍥�" label-width="100px" class="viewFlag">
+                <el-switch v-model="btmType.viewFlag" active-color="#13ce66" @change="viewChange"></el-switch>
             </el-form-item>
-            <el-form-item label="鎻忚堪:" label-width="100px">
+            <el-form-item label="瑙嗗浘璇彞" label-width="100px">
+                <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" 
-                prefix-icon="el-icon-chat-line-square" 
-                style="width:254%;"></el-input>
+                :prefix-icon="icons.desc" 
+                class="descClass"
+                id="descId"
+                ></el-input>
             </el-form-item>
         </el-form>
-        <avue-crud :option="option" :data="btmType.attributes"></avue-crud>
+        <avue-crud :option="option" 
+        :data="btmType.attributes" 
+        :page.sync="page" 
+        ref="attrTable"
+        @cell-mouse-enter="cellEditClick"
+        @cell-mouse-leave="cellEditSave">
+            <template slot-scope="scope" slot="menuLeft">
+                <el-button type="danger"
+                icon="el-icon-plus"
+                size="small"
+                @click="rowAdd()">灞炴�ч�夋嫨</el-button>
+            </template>
+            
+        </avue-crud>
+        <div slot="footer" class="dialog-footer">
+            <el-button type="primary" @click="submitBtmType">纭畾</el-button>
+            <el-button @click="cancleSubmitBtmType">鍙栨秷</el-button>
+        </div>
+
+<!-- 灞炴�ф睜鐨勯�夋嫨 -->
+        <el-dialog title="灞炴�ф睜"
+            :visible="attrRef.visible"
+            append-to-body
+            @close="closeAttrDialog"
+            width="80%"
+        >
+            <avue-crud class="attrRef" 
+            :option="attrRef.option" 
+            :data="attrRef.data" 
+            :page.sync="attrRef.page"
+            ref="attrRef"
+            @on-load="attrRefOnLoad"
+            @search-change="attrRefSearch"
+            @selection-change="selectionChange">
+                <template slot="name" slot-scope="scope" >
+                    <el-tag>{{scope}}</el-tag>
+                </template>
+            </avue-crud>
+            <div slot="footer" class="dialog-footer">
+                <el-button @click="confirmSelectAttr">纭畾</el-button>
+                <el-button @click="cancleSelectAttr">鍙栨秷</el-button>
+            </div>
+        </el-dialog>
+<!-- 鐗堟湰瑙勫垯鐨勫弬鐓� -->
+        <el-dialog title="璇烽�夋嫨鐗堟湰瑙勫垯"
+            :visible.sync="revisionRef.visible"
+            append-to-body
+            width="80%">
+            
+            <avue-crud class="revisionRef"
+             :option="revisionRef.option"
+             :data="revisionRef.data"
+             :page.sync="revisionRef.page"
+             ref="revisionRef"
+             @row-click="revisionClick">
+                <template slot="radio"
+                slot-scope="{row}">
+                    <el-radio v-model="revisionRef.selectRow"
+                        :label="row.$index">&nbsp;
+                    </el-radio>
+                </template>
+            </avue-crud>
+            <div slot="footer" class="dialog-footer">
+                <el-button type="primary" @click="confirmRevision">纭畾</el-button>
+                <el-button @click="cancelRevision">鍙栨秷</el-button>
+            </div>
+        </el-dialog>
     </el-dialog>
 </template>
 
 
 <script>
-import { } from '@/api/omd/btmType';
-import { } from '@/api/omd/OmdAttribute';
+
+import { add,update } from '@/api/omd/btmType';
+import { queryPage } from '@/api/omd/OmdAttribute';
+import { getPage } from '@/api/omd/revisionRule';
 export default {
     name: 'BusinessAdd',
     props: {
@@ -52,6 +134,9 @@
             type: Object
         },
         domainOption:{
+            type: Array
+        },
+        icons: {
             type: Array
         }
     },
@@ -68,20 +153,72 @@
                 rowKey: 'id',
                 tabs: true,
                 menu: false,
+                addBtn:false,
                 highlightCurrentRow: true,
                 column: [
                     {
-                        label: '灞炴�ц嫳鏂囧悕绉�',
+                        label: '鑻辨枃鍚嶇О',
                         prop: 'id',
                         align: 'center'
                     }, {
-                        label: '灞炴�т腑鏂囧悕绉�',
+                        label: '涓枃鍚嶇О',
                         prop: 'name',
-                        align: 'center'
+                        align: 'center',
+                        cell: true
                     },
                     {
-                        label: "灞炴�х被鍨�",
+                        label: "绫诲瀷",
                         prop: "attrDataType",
+                        align: 'center',
+                        slot: true
+                    },
+                    {
+                        label: "榛樿鍊�",
+                        prop: "defaultValue",
+                        align: 'center',
+                        cell: true
+                    },
+                    {
+                        label: "璇存槑",
+                        prop: "description",
+                        align: 'center',
+                        cell:true
+                    }
+                ]
+            },
+            attrRef:{
+                visible:false,
+                page: {
+                    currentPage:1,
+                    pageSize:10,
+                },
+                key: null,
+                option:{
+                    height: 360,
+                    addBtn: false,
+                    refreshBtn: false,
+                    columnBtn: false,
+                    selection: true,
+                    menu: false,
+                    border: true,
+                    reserveSelection: true,
+                    searchMenuSpan:8,
+                    highlightCurrentRow: true,
+                    column: [
+                        {
+                        label: '鑻辨枃鍚嶇О',
+                        prop: 'key',
+                        align: 'left',
+                        search: true,
+                        width: 230
+                    }, {
+                        label: '涓枃鍚嶇О',
+                        prop: 'label',
+                        align: 'center',
+                    },
+                    {
+                        label: "绫诲瀷",
+                        prop: "typeValue",
                         align: 'center'
                     },
                     {
@@ -90,23 +227,272 @@
                         align: 'center'
                     },
                     {
+                        label: '鍏佽涓虹┖',
+                        prop: 'nullable',
+                        type: 'switch',
+                        display: false,
+                        hide: true,
+                        labelWidth: 132,
+                        dicData: [{
+                        label: '鍚�',
+                        value: 1
+                        }, {
+                        label: '鏄�',
+                        value: 0
+                        }]
+                    },
+                    {
                         label: "璇存槑",
                         prop: "description",
+                        cell:true,
                         align: 'center'
                     }
-                ]
+                    ]
+                },
+                data: [],
+                queryNotIn: null
+            },
+            revisionRef: {
+                visible: false,
+                page: {
+                    currentPage:1,
+                    pageSize: 10
+                },
+                selectRow:'',
+                searchKey: null,
+                option:{
+                    height: 360,
+                    addBtn: false,
+                    refreshBtn: false,
+                    columnBtn: false,
+                    menu: false,
+                    border: true,
+                    reserveSelection: true,
+                    searchMenuSpan:8,
+                    searchShowBtn: false,
+                    highlightCurrentRow: true,
+                    column:[{
+                        label: '閫夋嫨',
+                        prop: 'radio',
+                        width: 60,
+                        hide: false
+                    },
+                        {
+                            label:'鑻辨枃鍚嶇О',
+                            prop: 'id',
+                            search:true
+                        },
+                        {
+                            label:"涓枃鍚嶇О",
+                            prop:"name",
+                            search:true,
+                        },
+                        {
+                            label:"璺宠穬瀛楃",
+                            prop: "skipCode"
+                        },
+                        {
+                            label: "鍒濆鍊�",
+                            prop:"startCode"
+                        },
+                        {
+                            label: "姝ラ暱",
+                            prop: "serialStep"
+                        },
+                        {
+                            label: "鍓嶇紑",
+                            prop:"prefixCode"
+                        },
+                        {
+                            label: "鍚庣紑",
+                            prop: "suffixCode"
+                        },
+                        {
+                            label: "鎻忚堪",
+                            prop:"description",
+                            type:"textarea"
+                        }
+                    ]
+                },
             },
         }
     },
     created() {
-        console.log('123');
+
     },
     methods: {
+        // 鍏抽棴缁勪欢寮圭獥
         closeSubmitDialog(){
             this.showSubmitDialog = false;
-        }
+            this.btmType.attributes = [];
+            this.btmType = {};
+            this.attrRef.selectData = [];
+            this.attrRef.queryNotIn = null;
+        },
+        // 鍏抽棴灞炴�ф睜鏌ヨ寮圭獥
+        closeAttrDialog(){
+            this.attrRef.visible = false;
+        },
+        // 娣诲姞
+        rowAdd(){
+            this.attrRef.visible = true;
+            this.attrRefOnLoad();
+        },
+        // 灞炴�ф睜鍔犺浇
+        attrRefOnLoad(){
+            queryPage(this.attrRef.key,this.attrRef.queryNotIn,this.attrRef.page.currentPage, this.attrRef.page.pageSize).then(res => {
+                const data = res.data.data;
+                this.attrRef.page.total = data.total;
+                this.attrRef.data = data.records;
+            });
+            this.$nextTick(() => {
+                this.$refs.attrRef.refreshTable();
+            });
+        },
+        // 灞炴�ф睜妫�绱�
+        attrRefSearch(form,done){
+            this.attrRef.key = form.key;
+            this.attrRefOnLoad();
+            done();
+            this.attrRef.key = null;
+        },
+        // 灞炴�ф睜鍕鹃�変簨浠�
+        selectionChange(list){
+            this.attrRef.selectData = list;
+        },
+        // 纭灞炴�ф睜鍕鹃��
+        confirmSelectAttr(){
+            this.btmType.attributes = [];
+            this.attrRef.queryNotIn = "";
+            this.attrRef.selectData.forEach(item => {
+                this.btmType.attributes.push({
+                    id: item.id,
+                    name: item.name,
+                    typeValue: item.typeValue,
+                    typeKey: item.typeValue,
+                    attrDataType : item.typeValue,
+                    defaultValue: item.defaultValue,
+                    description: item.description,
+                    attributeLength: item.maxLength
+                });
+                this.attrRef.queryNotIn += (item.id + ",")
+            });
+            this.closeAttrDialog();
+        },
+        // 鍙栨秷灞炴�ф睜鍕鹃��
+        cancleSelectAttr(){
+            this.attrRef.selectData = [];
+            this.closeAttrDialog();
+        },
+        // 娣诲姞涓氬姟绫诲瀷
+        submitBtmType(){
+            console.log(this.btmType);
+            add(this.btmType,true).then(res => {
+                // 娣诲姞瀹屾垚锛屽洖璋冪埗缁勪欢鐨勫埛鏂�
+                this.$message.success('淇濆瓨鎴愬姛');
+                this.cancleSubmitBtmType();
+                this.$emit('refreshTable');
+            })
+        },
+        // 鍙栨秷娣诲姞涓氬姟绫诲瀷
+        cancleSubmitBtmType(){
+            this.btmType = {};
+            this.btmType.attributes = [];
+            this.showSubmitDialog = false;
+        },
+        // 鍒锋柊灞炴�у垪琛�
+        refreshAttrTable(){
+            this.$nextTick( () => {
+                this.$refs.attrTable.refreshTable();
+            })
+        },
+        // 
+        viewChange(){
+
+        },
+        // 鍒楄〃缂栬緫
+        cellEditClick(cell){
+            cell.$cellEdit = true;
+        },
+        // 鍒楄〃缂栬緫淇濆瓨
+        cellEditSave(row){
+            this.btmType.attributes[row.$index].name = row.name
+            this.btmType.attributes[row.$index].defaultValue = row.defaultValue;
+            this.btmType.attributes[row.$index].description = row.description;
+            row.$cellEdit = false;
+        },
+        // 鎵撳紑鐗堟湰瑙勫垯鍙傜収
+        async openRevision(){
+            await getPage().then(res => {
+                this.revisionRef.data = res.data.data.records;
+            });
+            this.revisionRef.visible = true;
+        },
+       // 鍏抽棴鐗堟湰瑙勫垯鍙傜収寮圭獥
+       closeRevisionDialog(){
+            this.revisionRef.visible = false;
+       },
+       // 鐗堟湰瑙勫垯鍙傜収鍒楄〃妫�绱�
+       revisionRefSearch(){
+
+       },
+       // 鐗堟湰瑙勫垯閫変腑浜嬩欢
+       revisionChange(){},
+       // 纭閫変腑鐗堟湰瑙勫垯
+       confirmRevision(){
+            this.btmType.revisionFlag = true;
+            this.btmType.revisionRuleId = this.revisionRef.selectData.id;
+            this.btmType.revisionRuleName = this.revisionRef.selectData.name;
+            this.btmType.inputRevisionFlag = false;
+            this.cancelRevision();
+       },
+       // 鍙栨秷閫変腑鐗堟湰瑙勫垯
+       cancelRevision(){
+            this.revisionRef.selectRow  = '';
+            this.revisionRef.selectData = {};
+            this.closeRevisionDialog();
+       },
+       // 鐗堟湰瑙勫垯鍗曢��
+       revisionClick(row){
+            this.revisionRef.selectRow = row.$index;
+            this.revisionRef.selectData = {
+                id: row.id,
+                name: row.name,
+            };
+       },
+       clearRevision(){
+            this.$delete(this.btmType,'revisionFlag');
+            this.$delete(this.btmType,'revisionRuleId');
+            this.$delete(this.btmType,'revisionRuleName');
+            this.$delete(this.btmType,'inputRevisionFlag');
+       }
     }
 }
 </script>
 
-<style></style>
\ No newline at end of file
+<style>
+/* 灞炴�ф睜鍙傜収鍒楄〃 */
+.attrRef > .el-card:nth-of-type(2) > .el-card__body > .avue-crud__menu{
+    display: none !important;
+}
+
+.revisionRef > .el-card:nth-of-type(2) > .el-card__body > .avue-crud__menu{
+    display: none !important;
+}
+
+.btmTypeForm > .el-form-item > .el-form-item__content > .el-input > .el-input__inner {
+    width: 200px;
+}
+
+.viewFlag {
+    width: 305px;
+}
+
+.descClass > .el-input__inner {
+    width: 57vw
+}
+
+#descId {
+    width: 57vw;
+}
+</style>

--
Gitblit v1.9.3