diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/cache/.gitkeep b/biz/src/main/java/cn/icanci/loopstack/bic/biz/cache/.gitkeep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/DTS.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/DTS.java new file mode 100644 index 0000000000000000000000000000000000000000..0e0780dd7dbca28a71dc089f6d98d5f67c4d2137 --- /dev/null +++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/DTS.java @@ -0,0 +1,16 @@ +package cn.icanci.loopstack.bic.biz.dts; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @author icanci + * @since 1.0 Created in 2023/09/19 20:16 + */ +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface DTS { + Class value(); +} diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/GraphDtsServiceProxy.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/GraphDtsServiceProxy.java index 28cbc066a22075a9a5701ffeef15d29be918fc6b..1b9c439e1c9a9274893b25bb8a28719b298a7afc 100644 --- a/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/GraphDtsServiceProxy.java +++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/GraphDtsServiceProxy.java @@ -1,7 +1,9 @@ package cn.icanci.loopstack.bic.biz.dts; +import java.util.Collection; import java.util.Map; +import org.springframework.aop.support.AopUtils; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; @@ -22,7 +24,13 @@ public class GraphDtsServiceProxy implements GraphDtsService, Applicatio @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { Map beansOfType = applicationContext.getBeansOfType(GraphDtsService.class); - beansOfType.forEach((k, v) -> graphDtsServiceMap.put(v.getClass().getInterfaces()[0], v)); + Collection services = beansOfType.values(); + for (GraphDtsService service : services) { + DTS dts = AopUtils.getTargetClass(service).getAnnotation(DTS.class); + if (dts != null) { + graphDtsServiceMap.put(dts.value(), service); + } + } } @Override diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/impl/UnitViewTreeGraphDtsServiceImpl.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/impl/UnitViewTreeGraphDtsServiceImpl.java index 35ce494fd0b037fee4cc3e996e70902d29e9c90e..ba0bb60d587165042511b14761665889204964a2 100644 --- a/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/impl/UnitViewTreeGraphDtsServiceImpl.java +++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/dts/impl/UnitViewTreeGraphDtsServiceImpl.java @@ -1,14 +1,21 @@ package cn.icanci.loopstack.bic.biz.dts.impl; import java.util.List; +import java.util.Set; import javax.annotation.Resource; +import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Service; +import com.google.common.collect.Lists; +import com.google.common.collect.Sets; + import cn.hutool.core.lang.Pair; +import cn.icanci.loopstack.bic.biz.dts.DTS; import cn.icanci.loopstack.bic.biz.dts.GraphDtsService; import cn.icanci.loopstack.bic.biz.service.UnitViewService; +import cn.icanci.loopstack.bic.common.enums.NodeTypeEnum; import cn.icanci.loopstack.bic.common.model.graph.*; /** @@ -16,6 +23,7 @@ import cn.icanci.loopstack.bic.common.model.graph.*; * @since 1.0 Created in 2023/09/17 16:33 */ @Service +@DTS(UnitViewTreeVO.class) public class UnitViewTreeGraphDtsServiceImpl implements GraphDtsService { @Resource private UnitViewService unitViewService; @@ -53,10 +61,74 @@ public class UnitViewTreeGraphDtsServiceImpl implements GraphDtsService, List> adapter2Pair(List relationModel) { - // TODO 处理结对数据 前端也需要处理,这里不太优雅 - // 结对 目标找到所有的node和所有的edge - // 同一个node的样式必须完全一样 - return null; + List edges = Lists.newArrayList(); + Set nodes = Sets.newHashSet(); + loopAdapter(edges, nodes, relationModel); + return new Pair<>(edges, Lists.newArrayList(nodes)); + } + + private void loopAdapter(List edges, Set nodes, List relationModel) { + for (UnitViewTreeRelationVO rm : relationModel) { + nodes.add(buildSourceNode(rm)); + nodes.add(buildTargetNode(rm)); + edges.add(buildEdge(rm)); + if (CollectionUtils.isNotEmpty(rm.getChildren())) { + loopAdapter(edges, nodes, rm.getChildren()); + } + } + } + + /** + * 构建Source + * + * @param rm rm + * @return UnitNodeVO + */ + private UnitNodeVO buildSourceNode(UnitViewTreeRelationVO rm) { + UnitNodeVO node = new UnitNodeVO(); + node.setNodeUuid(rm.getSourceNodeUuid()); + node.setStyleUuid(rm.getSourceStyleUuid()); + node.setNodeDataMode(rm.getSourceNodeDataMode()); + node.setNodeDataKey(rm.getSourceNodeDataKey()); + node.setNodeType(NodeTypeEnum.CHILD); + return node; + } + + /** + * 构建Target + * + * @param rm rm + * @return UnitNodeVO + */ + private UnitNodeVO buildTargetNode(UnitViewTreeRelationVO rm) { + UnitNodeVO node = new UnitNodeVO(); + node.setNodeUuid(rm.getTargetNodeUuid()); + node.setStyleUuid(rm.getTargetStyleUuid()); + node.setNodeDataMode(rm.getTargetNodeDataMode()); + node.setNodeDataKey(rm.getTargetNodeDataKey()); + node.setNodeType(NodeTypeEnum.CHILD); + return node; + } + + /** + * 构建Edge + * + * @param rm rm + * @return UnitEdgeVO + */ + private UnitEdgeVO buildEdge(UnitViewTreeRelationVO rm) { + UnitEdgeVO edge = new UnitEdgeVO(); + edge.setHoverName(rm.getHoverName()); + edge.setSourceUuid(rm.getSourceNodeUuid()); + edge.setTargetUuid(rm.getTargetNodeUuid()); + edge.setStyleUuid(rm.getEdgeStyleUuid()); + return edge; } } diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/EdgeStyleServiceImpl.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/EdgeStyleServiceImpl.java index 2aa3190395856e0ee4b40cb9d4c25241b47db558..5f75591d293b0dd47c9c4db8dff8d0b640bca4bb 100644 --- a/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/EdgeStyleServiceImpl.java +++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/EdgeStyleServiceImpl.java @@ -45,6 +45,7 @@ public class EdgeStyleServiceImpl implements EdgeStyleService { } else { edgeStyleDAO.update(edgeStyleMapper.vo2do(edgeStyleVO)); } + // TODO 最后补充更新视图的逻辑,因为这个地方会构建缓存 } @Override diff --git a/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/NodeStyleServiceImpl.java b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/NodeStyleServiceImpl.java index 61375881f0efc01f86287373ca067d3f703d1597..16e255af2c2fd1792acd9234104fc0c417acf1ef 100644 --- a/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/NodeStyleServiceImpl.java +++ b/biz/src/main/java/cn/icanci/loopstack/bic/biz/service/impl/NodeStyleServiceImpl.java @@ -38,13 +38,14 @@ public class NodeStyleServiceImpl implements NodeStyleService { @Override public void save(NodeStyleVO nodeStyleVO) { // TODO 日志记录 - // TODO 更新视图 if (doInsert(nodeStyleVO)) { NodeStyleDO insert = nodeStyleMapper.vo2do(nodeStyleVO); nodeStyleDAO.insert(insert); } else { nodeStyleDAO.update(nodeStyleMapper.vo2do(nodeStyleVO)); } + // 更新视图样式 + // TODO 最后补充更新视图的逻辑,因为这个地方会构建缓存 } @Override diff --git a/common/src/main/java/cn/icanci/loopstack/bic/common/model/graph/UnitNodeVO.java b/common/src/main/java/cn/icanci/loopstack/bic/common/model/graph/UnitNodeVO.java index bfa574d0521f5ea175b6570283a6730043151c44..266a27e76961fdfa7aa83c63bf8e263e03021a62 100644 --- a/common/src/main/java/cn/icanci/loopstack/bic/common/model/graph/UnitNodeVO.java +++ b/common/src/main/java/cn/icanci/loopstack/bic/common/model/graph/UnitNodeVO.java @@ -4,6 +4,8 @@ import cn.icanci.loopstack.bic.common.enums.NodeDataModeEnum; import cn.icanci.loopstack.bic.common.enums.NodeTypeEnum; import lombok.Data; +import java.util.Objects; + /** * 图结构的节点 * @@ -22,4 +24,19 @@ public class UnitNodeVO { private String nodeDataKey; /** 节点类型 */ private NodeTypeEnum nodeType; + + @Override + public boolean equals(Object object) { + if (this == object) + return true; + if (object == null || getClass() != object.getClass()) + return false; + UnitNodeVO that = (UnitNodeVO) object; + return Objects.equals(nodeUuid, that.nodeUuid); + } + + @Override + public int hashCode() { + return Objects.hash(nodeUuid); + } } diff --git a/views/src/main/resources/vueboot/src/main.js b/views/src/main/resources/vueboot/src/main.js index 21e7008d18ab820deddbe886d85decaa3e4116f1..72949ef495a6a7c60ee135f68fa98578e226fb44 100644 --- a/views/src/main/resources/vueboot/src/main.js +++ b/views/src/main/resources/vueboot/src/main.js @@ -33,7 +33,6 @@ Vue.use(CodeView); import Vuep from 'vuep' - Vue.use(Vuep) /** * If you don't want to use mock-server @@ -67,7 +66,14 @@ Vue.prototype.$cloneObj = function (data) { Vue.prototype.baseDateFormat = function (date) { return moment(date).format('YYYY-MM-DD HH:mm:ss'); } - +Vue.prototype.loading = function () { + return this.$loading({ + lock: true, + text: 'Loading', + spinner: 'el-icon-loading', + background: 'rgba(0, 0, 0, 0.7)' + }); +} new Vue({ el: '#app', diff --git a/views/src/main/resources/vueboot/src/views/bic-burying/burying.vue b/views/src/main/resources/vueboot/src/views/bic-burying/burying.vue index 84137638bec045d2174f3438ed7ff3a364992664..b3e063f49500c812d0dd0ac69ea8daa1b8f48f7b 100644 --- a/views/src/main/resources/vueboot/src/views/bic-burying/burying.vue +++ b/views/src/main/resources/vueboot/src/views/bic-burying/burying.vue @@ -190,8 +190,9 @@ export default { methods: { async query() { let vm = this + let loading = vm.loading(); let ret = await buryingPageQuery(vm.queryForm, vm.pageResult.paginator) - vm.$message({type: 'success', message: '查询成功'}); + loading.close() if (ret.ok) { vm.pageResult = ret.data.queryPage } else { diff --git a/views/src/main/resources/vueboot/src/views/bic-config/components/ruleTreeList.vue b/views/src/main/resources/vueboot/src/views/bic-config/components/ruleTreeList.vue index 7e0536f8dd52b9e3c81951ba02725d547a1ac6ed..4c3fc88523226411b85de7a4ea1e7d0dc8718e84 100644 --- a/views/src/main/resources/vueboot/src/views/bic-config/components/ruleTreeList.vue +++ b/views/src/main/resources/vueboot/src/views/bic-config/components/ruleTreeList.vue @@ -104,13 +104,32 @@ export default { methods: { async load(data) { let vm = this + let relationModel = data.relationModel; + let usedNodeSet = new Set() + vm.getAllNodeUuids(relationModel, usedNodeSet) + for (let i = 0; i < data.selectors.nodeOptions.length; i++) { + let nodeOption = data.selectors.nodeOptions[i]; + nodeOption.disabled = usedNodeSet.has(nodeOption.value); + } + vm.selectors = data.selectors - vm.relationModel = data.relationModel + vm.relationModel = relationModel vm.showSelf = true }, getRelationModel() { return this.relationModel - } + }, + getAllNodeUuids(relationModel, usedNodeSet) { + let vm = this + if (!relationModel || relationModel.length === 0) { + return + } + for (let i = 0; i < relationModel.length; i++) { + usedNodeSet.add(relationModel[i].sourceNodeUuid) + usedNodeSet.add(relationModel[i].targetNodeUuid) + vm.getAllNodeUuids(relationModel[i].children, usedNodeSet) + } + }, } } diff --git a/views/src/main/resources/vueboot/src/views/bic-config/components/ruleTreeNode.vue b/views/src/main/resources/vueboot/src/views/bic-config/components/ruleTreeNode.vue index cca98783cf547bdc3dca185da5a5117664bf246f..30a2379e03acb9ca849bc6b475f8729c36f8ca7e 100644 --- a/views/src/main/resources/vueboot/src/views/bic-config/components/ruleTreeNode.vue +++ b/views/src/main/resources/vueboot/src/views/bic-config/components/ruleTreeNode.vue @@ -85,14 +85,17 @@ style="line-height: 40px;height: 40px;display: flex;" :inline="true" class="demo-form-inline"> @@ -114,12 +117,14 @@ @@ -189,9 +194,10 @@ label-position="right" ref="relationModelDetailForm" :model="relationModelDetail" label-width="180px"> - + - + - + @@ -277,6 +288,7 @@ export default { }, modelDetailFlag: false, relationModelDetail: {}, + nodeUuid: '', } }, created() { @@ -297,7 +309,7 @@ export default { } let obj = vm.$cloneObj(vm.tempRelationModel); - obj.sourceNodeUuid = currentModel.targetNodeUuid + obj.sourceNodeUuid = currentModel.sourceNodeUuid obj.sourceStyleUuid = currentModel.sourceStyleUuid obj.sourceNodeDataKey = currentModel.sourceNodeDataKey obj.sourceNodeDataMode = currentModel.sourceNodeDataMode @@ -316,9 +328,9 @@ export default { let obj = vm.$cloneObj(vm.tempRelationModel); obj.sourceNodeUuid = currentModel.targetNodeUuid - obj.sourceStyleUuid = currentModel.sourceStyleUuid - obj.sourceNodeDataKey = currentModel.sourceNodeDataKey - obj.sourceNodeDataMode = currentModel.sourceNodeDataMode + obj.sourceStyleUuid = currentModel.targetStyleUuid + obj.sourceNodeDataKey = currentModel.targetNodeDataKey + obj.sourceNodeDataMode = currentModel.targetNodeDataMode currentModel.children.push(obj) vm.$forceUpdate() }, @@ -369,7 +381,73 @@ export default { refreshSelf() { let vm = this vm.$forceUpdate() - } - } + }, + refreshNodeUuid(nodeUuid) { + this.nodeUuid = nodeUuid + }, + // 无需实现 + sourceNodeChange(value) { + let vm = this + // 将node禁用掉、或者其他的node释放掉 + vm.releaseNode(value) + vm.$forceUpdate() + }, + targetNodeChange(value, index) { + let vm = this + // 将node禁用掉、或者其他的node释放掉 + vm.releaseNode(value) + // 如果有孩子节点,需要将孩子节点的数据更新 + let children = vm.relationModel[index].children; + if (children && children.length > 0) { + for (let i = 0; i < children.length; i++) { + children[i].sourceNodeUuid = value + } + } + vm.$forceUpdate() + }, + releaseNode(value) { + let vm = this + for (let i = 0; i < vm.selectors.nodeOptions.length; i++) { + let nodeOption = vm.selectors.nodeOptions[i]; + if (nodeOption.value === value) { + nodeOption.disabled = true + } + if (nodeOption.value === vm.nodeUuid) { + nodeOption.disabled = false + } + } + }, + // 对于节点的样式、匹配类型、节点匹配值,只能从父节点进行修改和继承 + targetStyleChange() { + let vm = this + let children = vm.relationModelDetail.children; + if (children && children.length > 0) { + for (let i = 0; i < children.length; i++) { + children[i].sourceStyleUuid = vm.relationModelDetail.targetStyleUuid + } + } + vm.$forceUpdate() + }, + targetNodeDataModeChange() { + let vm = this + let children = vm.relationModelDetail.children; + if (children && children.length > 0) { + for (let i = 0; i < children.length; i++) { + children[i].sourceNodeDataMode = vm.relationModelDetail.targetNodeDataMode + } + } + vm.$forceUpdate() + }, + targetNodeDataKeyChange() { + let vm = this + let children = vm.relationModelDetail.children; + if (children && children.length > 0) { + for (let i = 0; i < children.length; i++) { + children[i].sourceNodeDataKey = vm.relationModelDetail.targetNodeDataKey + } + } + vm.$forceUpdate() + }, + }, } diff --git a/views/src/main/resources/vueboot/src/views/bic-config/dialog/unit-view-tree-form.vue b/views/src/main/resources/vueboot/src/views/bic-config/dialog/unit-view-tree-form.vue index 5a085f2bfcf0bb08a7ae719f12b5e3077af34efe..79242e8c88b07175653bbbbee447b9c4d70565f1 100644 --- a/views/src/main/resources/vueboot/src/views/bic-config/dialog/unit-view-tree-form.vue +++ b/views/src/main/resources/vueboot/src/views/bic-config/dialog/unit-view-tree-form.vue @@ -414,7 +414,7 @@ export default { targetName = nodeOption.label } } - return sourceName + return sourceName + " => " + targetName } } } diff --git a/views/src/main/resources/vueboot/src/views/bic-config/edge-config.vue b/views/src/main/resources/vueboot/src/views/bic-config/edge-config.vue index c31952849b2b4c6e2c6993f48fc3419d2e56eafa..2af8e7f8b342f1aa9ba85e327a0cbf3c3b1b8728 100644 --- a/views/src/main/resources/vueboot/src/views/bic-config/edge-config.vue +++ b/views/src/main/resources/vueboot/src/views/bic-config/edge-config.vue @@ -136,8 +136,9 @@ export default { methods: { async query() { let vm = this + let loading = vm.loading(); let ret = await edgePageQuery(vm.queryForm, vm.pageResult.paginator) - vm.$message({type: 'success', message: '查询成功'}); + loading.close(); if (ret.ok) { vm.pageResult = ret.data.queryPage } else { diff --git a/views/src/main/resources/vueboot/src/views/bic-config/edge-style-config.vue b/views/src/main/resources/vueboot/src/views/bic-config/edge-style-config.vue index 1379f41a92919ba51ac2a6f07a92330510d8be05..e3cc4c7fad926f2bddb772eeaf626e1d8e79f455 100644 --- a/views/src/main/resources/vueboot/src/views/bic-config/edge-style-config.vue +++ b/views/src/main/resources/vueboot/src/views/bic-config/edge-style-config.vue @@ -135,8 +135,9 @@ export default { methods: { async query() { let vm = this + let loading = vm.loading(); let ret = await edgeStylePageQuery(vm.queryForm, vm.pageResult.paginator) - vm.$message({type: 'success', message: '查询成功'}); + loading.close() if (ret.ok) { vm.pageResult = ret.data.queryPage } else { diff --git a/views/src/main/resources/vueboot/src/views/bic-config/node-config.vue b/views/src/main/resources/vueboot/src/views/bic-config/node-config.vue index b304dcaed335d5400f55fcb17a36fc701d05b118..e96e3ed4f86b191245067ba56989dfe67b69a82c 100644 --- a/views/src/main/resources/vueboot/src/views/bic-config/node-config.vue +++ b/views/src/main/resources/vueboot/src/views/bic-config/node-config.vue @@ -136,8 +136,9 @@ export default { methods: { async query() { let vm = this + let loading = vm.loading(); let ret = await nodePageQuery(vm.queryForm, vm.pageResult.paginator) - vm.$message({type: 'success', message: '查询成功'}); + loading.close() if (ret.ok) { vm.pageResult = ret.data.queryPage } else { diff --git a/views/src/main/resources/vueboot/src/views/bic-config/node-style-config.vue b/views/src/main/resources/vueboot/src/views/bic-config/node-style-config.vue index 4e4df4f5c7e7ec7bfa3d2e7070e2f15abecbbd53..5eff451505ea3fd85335052cfed7103143a15e5b 100644 --- a/views/src/main/resources/vueboot/src/views/bic-config/node-style-config.vue +++ b/views/src/main/resources/vueboot/src/views/bic-config/node-style-config.vue @@ -136,8 +136,9 @@ export default { methods: { async query() { let vm = this + let loading = vm.loading(); let ret = await nodeStylePageQuery(vm.queryForm, vm.pageResult.paginator) - vm.$message({type: 'success', message: '查询成功'}); + loading.close() if (ret.ok) { vm.pageResult = ret.data.queryPage } else { diff --git a/views/src/main/resources/vueboot/src/views/bic-config/node-vue-config.vue b/views/src/main/resources/vueboot/src/views/bic-config/node-vue-config.vue index dd2d888b99e39c947e9d8139f8a99c3c9177ffd1..f837ac9e7a716ea8417f480ec493a80e2298aca5 100644 --- a/views/src/main/resources/vueboot/src/views/bic-config/node-vue-config.vue +++ b/views/src/main/resources/vueboot/src/views/bic-config/node-vue-config.vue @@ -181,8 +181,9 @@ export default { async query() { let vm = this + let loading = vm.loading(); let ret = await nodeVuePageQuery(vm.queryForm, vm.pageResult.paginator) - vm.$message({type: 'success', message: '查询成功'}); + loading.close() if (ret.ok) { vm.pageResult = ret.data.queryPage } else { diff --git a/views/src/main/resources/vueboot/src/views/bic-config/system-config.vue b/views/src/main/resources/vueboot/src/views/bic-config/system-config.vue index a6b599b53baf4e6eaf7940fb598282d47692a09b..401c950550cc75c62fea06e629699575e597f486 100644 --- a/views/src/main/resources/vueboot/src/views/bic-config/system-config.vue +++ b/views/src/main/resources/vueboot/src/views/bic-config/system-config.vue @@ -113,8 +113,10 @@ export default { methods: { async query() { let vm = this + + let loading = vm.loading(); let ret = await systemPageQuery(vm.queryForm, vm.pageResult.paginator) - vm.$message({type: 'success', message: '查询成功'}); + loading.close(); if (ret.ok) { vm.pageResult = ret.data.queryPage } else { diff --git a/views/src/main/resources/vueboot/src/views/bic-config/unit-view-tree.vue b/views/src/main/resources/vueboot/src/views/bic-config/unit-view-tree.vue index 30b084291497144b8327f28466775b362c9d885c..14f0b39dbe0a121c4ae8b6143dcdd26f61e89909 100644 --- a/views/src/main/resources/vueboot/src/views/bic-config/unit-view-tree.vue +++ b/views/src/main/resources/vueboot/src/views/bic-config/unit-view-tree.vue @@ -146,8 +146,9 @@ export default { async query() { let vm = this + let loading = vm.loading(); let ret = await unitViewTreePageQuery(vm.queryForm, vm.pageResult.paginator) - vm.$message({type: 'success', message: '查询成功'}); + loading.close() if (ret.ok) { vm.pageResult = ret.data.queryPage } else { diff --git a/views/src/main/resources/vueboot/src/views/bic-config/use-case-config.vue b/views/src/main/resources/vueboot/src/views/bic-config/use-case-config.vue index 0244eca9def1973b101d20fced023e0996f03e06..84a163b2ab1d242e849ceeaf3b2e2d7dec76e46b 100644 --- a/views/src/main/resources/vueboot/src/views/bic-config/use-case-config.vue +++ b/views/src/main/resources/vueboot/src/views/bic-config/use-case-config.vue @@ -135,8 +135,9 @@ export default { methods: { async query() { let vm = this + let loading = vm.loading(); let ret = await useCasePageQuery(vm.queryForm, vm.pageResult.paginator) - vm.$message({type: 'success', message: '查询成功'}); + loading.close() if (ret.ok) { vm.pageResult = ret.data.queryPage } else {