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