From bd8c4d0191879275492ab70798b9be267dc9f5b8 Mon Sep 17 00:00:00 2001 From: lihang <lihang@vci-tech.com> Date: 星期五, 12 五月 2023 17:00:53 +0800 Subject: [PATCH] 业务类型新增按钮 --- Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IBtmAttributeClient.java | 29 ++++ Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue | 212 +++++++++++++++++++++++++++--- Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/BtmAttributeClient.java | 38 +++++ Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IBtmAttributeFallback.java | 22 +++ Source/UBCS-WEB/src/views/modeling/Business.vue | 80 ++++------ Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java | 2 6 files changed, 315 insertions(+), 68 deletions(-) diff --git a/Source/UBCS-WEB/src/views/modeling/Business.vue b/Source/UBCS-WEB/src/views/modeling/Business.vue index 40ccabe..87d1d21 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="el-icon-finished"></i> + <i :class="icons.key"></i> 鑻辨枃鍚嶇О </template> {{ obj.id }} </el-descriptions-item> <el-descriptions-item> <template slot="label"> - <i class="el-icon-info"></i> + <i :class="icons.name"></i> 涓枃鍚嶇О </template> {{ obj.name }} </el-descriptions-item> <el-descriptions-item> <template slot="label"> - <i class="el-icon-date"></i> + <i :class="icons.tableName"></i> 鏁版嵁搴撹〃鍚� </template> {{ obj.tableName }} </el-descriptions-item> <el-descriptions-item> <template slot="label"> - <i class="el-icon-folder-opened"></i> + <i :class="icons.domain"></i> 鎵�灞為鍩� </template> {{ obj.domain }} @@ -68,21 +68,21 @@ </el-descriptions-item> --> <el-descriptions-item> <template slot="label"> - <i class="el-icon-s-check"></i> + <i :class="icons.revisionRule"></i> 鐗堟湰瑙勫垯 </template> {{ obj.versionRule }} </el-descriptions-item> <el-descriptions-item> <template slot="label"> - <i class="el-icon-refresh-right"></i> + <i :class="icons.lifeCycle"></i> 鐢熷懡鍛ㄦ湡 </template> {{ obj.lifeCycleId }} </el-descriptions-item> <el-descriptions-item> <template slot="label"> - <i class="el-icon-view"></i> + <i :class="icons.view"></i> 瑙嗗浘 </template> {{ obj.viewFlag }} @@ -96,7 +96,7 @@ </el-descriptions-item> --> <el-descriptions-item> <template slot="label"> - <i class="el-icon-chat-line-square"></i> + <i :class="icons.desc"></i> 鎻忚堪 </template> {{ obj.description }} @@ -106,7 +106,7 @@ <!-- 灞炴�у垪琛�--> <basic-container> <p style="margin-top: 10px;font-weight: 570;font-size: 19px">灞炴�у垪琛�</p> - <avue-crud v-model="obj" :data="obj.attributes" :option="loadOption" @row-save="loadSave"></avue-crud> + <avue-crud class="attributeCrud" v-model="obj" :data="obj.attributes" :option="loadOption"></avue-crud> </basic-container> </el-main> <el-dialog :visible="ref.visible" title="浠庢暟鎹簱涓坊鍔�" width="700px" append-to-body @close="dialoghandelfalse"> @@ -117,14 +117,10 @@ </el-select> <avue-crud class="businessCrud" v-model="ref.form" :option="ref.option" :data="ref.data" @selection-change="selectionChange"> </avue-crud> - <span slot="footer" class="dialog-footer"> - <el-button @click="dialoghandelfalse">鍙� 娑�</el-button> - <el-button type="primary" @click="dialoghandeltrue">纭� 瀹�</el-button> - </span> </el-dialog> </el-container> </el-container> - <business-add ref="btmAdd" :btmType="addOption.btmType" :domainOption="domainOptions"> + <business-add ref="btmAdd" :btmType="addOption.btmType" :domainOption="domainOptions" :icons="icons" @refreshTable="initTreeOnLoad"> </business-add> </el-container> </template> @@ -164,6 +160,8 @@ border: true, height: 466, editBtn: false, + index: true, + rowKey:'oid', addBtn: false, menu: false, highlightCurrentRow: true, @@ -198,6 +196,16 @@ }, 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, @@ -208,7 +216,7 @@ headerAlign: 'center', border: true, index: true, - rowKey: 'id', + rowKey: 'oid', tabs: true, addBtn: false, menu: false, @@ -273,36 +281,13 @@ } }, nodeClick(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() - }) + if(data.oid){ + getDetail(data.oid).then(res => { + this.obj = res.data.data; + }) + } }, selectFromTable() { - console.log('鑾峰彇'); this.ref.visible = true; }, refOnLoad(domain) { @@ -339,6 +324,7 @@ }, businessAdd(){ this.$refs.btmAdd.showSubmitDialog = true; + this.$refs.btmAdd.refreshAttrTable(); console.log('娣诲姞'); }, businessEdit(){ @@ -356,8 +342,10 @@ border-radius: 10px; } -.businessCrud > .el-card > .el-card__body > .avue-crud_menu{ - display: none!important; +.businessCrud > .el-card:nth-of-type(2) > .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 5a75644..c56390b 100644 --- a/Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue +++ b/Source/UBCS-WEB/src/views/modeling/BusinessAdd.vue @@ -4,47 +4,84 @@ :visible.sync="showSubmitDialog" append-to-body @close="closeSubmitDialog" - width="70%" + width="74%" > <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-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-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-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-select v-model="btmType.domain" :prefix-icon="icons.domain"> <el-option v-for="item in domainOption" :label="item"></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-input v-model="btmType.revisionRuleId" :prefix-icon="icons.revisionRule"> + <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-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> + <el-input v-model="btmType.view" :prefix-icon="icons.view"></el-input> </el-form-item> <el-form-item label="鎻忚堪:" label-width="100px"> <el-input v-model="btmType.description" - prefix-icon="el-icon-chat-line-square" - style="width:254%;"></el-input> + :prefix-icon="icons.desc" + ></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"> + <template slot-scope="scope" slot="menuLeft"> + <el-button type="danger" + icon="el-icon-plus" + size="small" + @click="rowAdd()">灞炴�ч�夋嫨</el-button> + </template> + + </avue-crud> + <el-button @click="submitBtmType">纭畾</el-button> + <el-button @click="cancleSubmitBtmType">鍙栨秷</el-button> + + + <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" + @selection-change="selectionChange"> + <template slot="name" slot-scope="scope" > + <el-tag>{{scope}}</el-tag> + </template> + </avue-crud> + <el-button @click="confirmSelectAttr">纭畾</el-button> + <el-button @click="cancleSelectAttr">鍙栨秷</el-button> + </el-dialog> </el-dialog> </template> <script> -import { } from '@/api/omd/btmType'; -import { } from '@/api/omd/OmdAttribute'; + +import { } from '@/api/omd/btmType'; +import { getPage } from '@/api/omd/OmdAttribute'; export default { name: 'BusinessAdd', props: { @@ -53,19 +90,28 @@ }, 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: 'id', + rowKey: 'oid', + addBtn: false, + refreshBtn: false, + columnBtn:false, tabs: true, menu: false, highlightCurrentRow: true, @@ -73,7 +119,7 @@ { label: '灞炴�ц嫳鏂囧悕绉�', prop: 'id', - align: 'center' + align: 'left' }, { label: '灞炴�т腑鏂囧悕绉�', prop: 'name', @@ -81,7 +127,53 @@ }, { label: "灞炴�х被鍨�", - prop: "attrDataType", + prop: "typeValue", + align: 'center', + slot: true + }, + { + label: "榛樿鍊�", + prop: "defaultValue", + cell: 'true', + align: 'center' + }, + { + label: "璇存槑", + prop: "description", + cell: 'true', + align: 'center' + } + ] + }, + attrRef:{ + visible:false, + page: { + currentPage:1, + pageSize:10, + key:'' + }, + option:{ + height: 360, + addBtn: false, + refreshBtn: false, + columnBtn: false, + selection: true, + menu: false, + border: true, + column: [ + { + label: '灞炴�ц嫳鏂囧悕绉�', + prop: 'key', + align: 'left', + width: 230 + }, { + label: '灞炴�т腑鏂囧悕绉�', + prop: 'label', + align: 'center' + }, + { + label: "灞炴�х被鍨�", + prop: "typeValue", align: 'center' }, { @@ -90,23 +182,101 @@ align: 'center' }, { + label: '鍏佽涓虹┖', + prop: 'nullable', + type: 'switch', + display: false, + hide: true, + labelWidth: 132, + dicData: [{ + label: '鍚�', + value: 1 + }, { + label: '鏄�', + value: 0 + }] + }, + { label: "璇存槑", prop: "description", align: 'center' } - ] - }, + ] + }, + data: [], + queryNotIn: [] + } } }, created() { - console.log('123'); + }, methods: { closeSubmitDialog(){ this.showSubmitDialog = false; + this.btmType = {}; + }, + closeAttrDialog(){ + this.attrRef.visible = false; + }, + rowAdd(){ + this.attrRef.visible = true; + this.$refs.attrRef.refreshTable(); + this.attrRefOnLoad(); + + }, + attrRefOnLoad(){ + var str = ''; + this.attrRef.queryNotIn.forEach(item => { + str = str + item + ',' + }); + getPage(this.attrRef.page.currentPage, this.attrRef.page.pageSize,{'condition["key_like"]':this.attrRef.page.key}).then(res => { + const data = res.data.data; + this.attrRef.page.total = data.total; + this.attrRef.data = data.records; + }) + }, + selectionChange(list){ + this.attrRef.selectData = list; + }, + confirmSelectAttr(){ + this.btmType.attributes = []; + this.attrRef.selectData.forEach(item => { + this.btmType.attributes.push({ + id: item.key, + name: item.label, + typeValue: item.typeValue, + defaultValue: item.defaultValue, + description: item.description + }); + this.attrRef.queryNotIn.push(item.key); + }); + this.closeAttrDialog(); + }, + cancleSelectAttr(){ + this.attrRef.selectData = []; + this.closeAttrDialog(); + }, + submitBtmType(){ + // 娣诲姞瀹屾垚锛屽洖璋冪埗缁勪欢鐨勫埛鏂� + console.log(this.btmType); + this.$emit('refreshTable'); + }, + cancleSubmitBtmType(){ + this.btmType = {}; + this.btmType.attributes = []; + console.log(this.btmType); + }, + refreshAttrTable(){ + this.$refs.attrTable.refreshTable(); } } } </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; +} +</style> \ No newline at end of file diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IBtmAttributeClient.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IBtmAttributeClient.java new file mode 100644 index 0000000..1aebee1 --- /dev/null +++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IBtmAttributeClient.java @@ -0,0 +1,29 @@ +package com.vci.ubcs.omd.feign; + +import com.vci.ubcs.omd.vo.BtmTypeAttributeVO; +import org.springblade.core.launch.constant.AppConstant; +import org.springblade.core.tool.api.R; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.List; + +/** + * Description:涓氬姟绫诲瀷鍏宠仈灞炴�� Feign鎺ュ彛绫� + * + * @author LiHang + * @date 2023/5/10 + */ +@FeignClient( + value = AppConstant.APPLICATION_NAME_OMD, + fallback = IBtmAttributeFallback.class +) +public interface IBtmAttributeClient { + + String API_PREFIX = "/client"; + String LIST_BY_BTM_OID = API_PREFIX + "/btm-attribute/list-by-btm-oid"; + + @GetMapping(LIST_BY_BTM_OID) + R<List<BtmTypeAttributeVO>> listByBtmOid(@RequestParam("oid") String oid); +} diff --git a/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IBtmAttributeFallback.java b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IBtmAttributeFallback.java new file mode 100644 index 0000000..462ec2c --- /dev/null +++ b/Source/UBCS/ubcs-service-api/ubcs-omd-api/src/main/java/com/vci/ubcs/omd/feign/IBtmAttributeFallback.java @@ -0,0 +1,22 @@ +package com.vci.ubcs.omd.feign; + +import com.vci.ubcs.omd.vo.BtmTypeAttributeVO; +import org.springblade.core.tool.api.R; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * Description:涓氬姟绫诲瀷鍏宠仈灞炴�eign澶辫触 + * + * @author LiHang + * @date 2023/5/10 + */ +@Component +public class IBtmAttributeFallback implements IBtmAttributeClient{ + + @Override + public R<List<BtmTypeAttributeVO>> listByBtmOid(String oid) { + return R.fail("鑾峰彇鏁版嵁澶辫触"); + } +} diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/BtmAttributeClient.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/BtmAttributeClient.java new file mode 100644 index 0000000..a322f89 --- /dev/null +++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/feign/BtmAttributeClient.java @@ -0,0 +1,38 @@ +package com.vci.ubcs.omd.feign; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.vci.ubcs.omd.entity.BtmTypeAttribute; +import com.vci.ubcs.omd.service.IBtmTypeAttributeService; +import com.vci.ubcs.omd.vo.BtmTypeAttributeVO; +import com.vci.ubcs.omd.wrapper.BtmTypeAttributeWrapper; +import lombok.AllArgsConstructor; +import org.springblade.core.tenant.annotation.NonDS; +import org.springblade.core.tool.api.R; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; +import springfox.documentation.annotations.ApiIgnore; + +import java.util.List; + +/** + * Description: 涓氬姟绫诲瀷鍏宠仈灞炴�ф湇鍔eign瀹炵幇绫� + * + * @author LiHang + * @date 2023/5/10 + */ +@NonDS +@ApiIgnore +@RestController +@AllArgsConstructor +public class BtmAttributeClient implements IBtmAttributeClient{ + + private final IBtmTypeAttributeService btmTypeAttributeService; + + @GetMapping(LIST_BY_BTM_OID) + @Override + public R<List<BtmTypeAttributeVO>> listByBtmOid(String oid) { + return R.data(BtmTypeAttributeWrapper.build().listEntityVO( + btmTypeAttributeService.list(Wrappers.<BtmTypeAttribute>query().lambda().eq(BtmTypeAttribute::getPkBtmType,oid)) + )); + } +} diff --git a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java index 8c7215d..70559e2 100644 --- a/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java +++ b/Source/UBCS/ubcs-service/ubcs-omd/src/main/java/com/vci/ubcs/omd/service/impl/BtmTypeServiceImpl.java @@ -649,7 +649,6 @@ domainMap.forEach((k,v)-> { if (domain.contains(k)){ BtmTypeTreeVO parent = new BtmTypeTreeVO(); - parent.setOid(k); parent.setName(k); parent.setChildList(v.stream().map(s -> { BtmTypeTreeVO child = new BtmTypeTreeVO(); @@ -749,6 +748,7 @@ attribute.setReferToName(attr.getReferBtmTypeName()); attribute.setTs(now); attribute.setCreateTime(now); + attribute.setIsDeleted(0); attribute.setCreateUser(AuthUtil.getUserId()); idAttrMap.put(attribute.getKey(),attribute); // 鍦ㄨ繖閲岀粰涓氬姟绫诲瀷璁剧疆鐗堟湰鎺у埗銆佺敓鍛藉懆鏈熸帶鍒躲�佸瘑绾ф帶鍒剁浉鍏崇殑淇℃伅 -- Gitblit v1.9.3