From 5a8861736eb17fe27a4ac49cc8ebaa6f3ade2e71 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期五, 07 七月 2023 17:08:35 +0800
Subject: [PATCH] 前端代码提交
---
Source/UBCS-WEB/src/views/modeling/cycle.vue | 346 ++++++++++++++++++++++++++++++---------------------------
1 files changed, 184 insertions(+), 162 deletions(-)
diff --git a/Source/UBCS-WEB/src/views/modeling/cycle.vue b/Source/UBCS-WEB/src/views/modeling/cycle.vue
index 5e3686d..3db8c4b 100644
--- a/Source/UBCS-WEB/src/views/modeling/cycle.vue
+++ b/Source/UBCS-WEB/src/views/modeling/cycle.vue
@@ -1,190 +1,212 @@
<template>
- <el-container>
- <el-aside width="240px">
- <el-button @click="addHandlers"></el-button>
- <basic-container style="margin-top: 10px">
- <avue-tree id="basic" :data="treeData" :option="treeOption" >
- </avue-tree>
- </basic-container>
- </el-aside>
- <basic-container >
- <el-button type="primary" @click="dialogTableVisible=true" size="small">鍒涘缓妯℃澘</el-button>
- <el-button type="primary" size="small" @click="addHandlers">缂栬緫妯℃澘</el-button>
- <el-button type="primary" size="small" @click="$refs.flow.addNode('ffff')">娣诲姞鑺傜偣</el-button>
- <br/><br/>
- <avue-flow ref="flow" v-model="form" :height="703" :option="option" :width="1500">
- <template slot="header" slot-scope="scope">
- <i class="el-icon-delete" @click="$refs.flow.deleteNode(scope.node.id)" style="margin-top: 8px"></i>
+ <basic-container class="">
+ <avue-crud :data="data" :option="option" @refresh-change="search" :table-loading="loading">
+ <template slot-scope="scope" slot="menuLeft">
+ <el-button
+ type="primary"
+ icon="el-icon-plus"
+ size="small"
+ @click="openDialog('add', {})"
+ >鏂板</el-button
+ >
</template>
- <div slot-scope="{node}">
- <span>{{ (node || {}).name }}</span>
- </div>
- </avue-flow>
- <!-- 鍒涘缓瀵硅瘽妗�-->
- <el-dialog title="鍒涘缓妯℃澘" :visible.sync="dialogTableVisible" append-to-body>
- <avue-form :data="addData" :option="addoption" v-model="forms">
-
- <template slot="filetype">
- <el-select v-model="forms.select" slot="prepend" placeholder="璇烽�夋嫨" style="max-width: 300px">
- <el-option label="娴嬭瘯1" value="1"></el-option>
- <el-option label="娴嬭瘯2" value="2"></el-option>
- <el-option label="娴嬭瘯3" value="3"></el-option>
- </el-select>
- <el-button type="primary" @click="handelLife" style="display: inline-block;margin-left: 5px">
- 娣诲姞璧峰鐘舵��
- </el-button>
- </template>
- </avue-form>
+ <template slot-scope="{ row, index }" slot="menu">
+ <el-button
+ type="text"
+ icon="el-icon-edit"
+ size="mini"
+ @click="openDialog('edit', row)"
+ >缂栬緫</el-button
+ >
+ <el-button
+ type="text"
+ icon="el-icon-view"
+ size="mini"
+ @click="openDialog('detail', row)"
+ >棰勮</el-button
+ >
+ </template></avue-crud
+ >
+ <el-dialog
+ :visible="visible"
+ :width="dialogWidth"
+ :title="title"
+ append-to-body
+ :before-close="() => {visible = false}"
+ top="10vh"
+ >
+ <CycleFlow
+ v-if="visible"
+ class="cycle_flow"
+ :type="type"
+ :chart-data="rowData.data || {}"
+ :chart-data-node-items="flowChartNodeItems"
+ :rowData="rowData"
+ ref="vueFlowchartEditor"
+ @save-data="save"
+ />
+ <template #footer v-if="type !== 'detail'">
+ <el-button type="primary" size="mini" @click="submit">淇濆瓨</el-button>
+ <el-button type="" size="mini" @click="visible = false">鍙栨秷</el-button>
+ </template>
</el-dialog>
</basic-container>
-
-
- </el-container>
-
</template>
<script>
+import API from '@/api/modeling/cycle'
+import CycleFlow from "@/components/flow-cycle/flowchartEditor.vue";
export default {
name: "cycle.vue",
+ components: { CycleFlow },
data() {
return {
- //妯℃澘瀵硅瘽妗�,
- dialogTableVisible:false,
- forms:{
- select:""
+ form: {
+ page: 1,
+ limit: 10
},
- addData:[],
- addoption:{
- formslot:true,
- column:[
+ option: {
+ border: true,
+ align: "center",
+ menuAlign: "center",
+ menu: true,
+ delBtn: false,
+ editBtn: false,
+ addBtn: false,
+ column: [
{
- label:"鍚嶇О",
- prop:"name"
+ label: "缂栧彿",
+ prop: "id",
},
{
- label:"鏍囩",
- prop:"tag"
+ label: "鍚嶇О",
+ prop: "name",
},
{
- label:"璧峰鐘舵��",
- prop:"filetype",
- formslot: true,
- span:24
+ label: "璧峰鐘舵��",
+ prop: "startStatusName",
},
{
label: "鎻忚堪",
- prop:"desc",
- type:"textarea",
- span:13
- }
- ]
- },
- count: 0,
- form: {},
- treeData: [{
- value: 0,
- label: '鐢熷懡鍛ㄦ湡妯℃澘鍒楄〃',
- children: [
- {
- value: 1,
- label: 'A',
+ prop: "description",
},
- {
- value: 2,
- label: 'B',
- },
- {
- value: 3,
- label: 'C',
- },
- {
- value: 4,
- label: 'D',
- },
- {
- value: 5,
- label: 'E',
- }
- ]
- }],
- treeOption: {
- defaultExpandAll: true,
- },
- option: {
- nodeList: [
- {
- "id": "nodeA",
- "name": "娴佺▼A-鑺傜偣A",
- "left": 39,
- "top": 110,
- },
- {
- "id": "nodeB",
- "name": "娴佺▼A-鑺傜偣B",
- "left": 340,
- "top": 161,
- },
- {
- "id": "nodeC",
- "name": "娴佺▼A-鑺傜偣C",
- "left": 739,
- "top": 161,
- },
- {
- "id": "nodeD",
- "name": "鑺傜偣D",
- "left": 739,
- "top": 20,
- }
],
- lineList: [
- {
- "from": "nodeA",
- "to": "nodeB"
- },
- {
- "from": "nodeB",
- "to": "nodeC"
- },
- {
- "from": "nodeC",
- "to": "nodeD"
- }
- ]
},
- computed: {
- nodeList() {
- return this.option.nodeList
- }
- },
- mounted() {
- this.form = this.nodeList[this.count].id;
- },
- methods: {
- handleClick(node) {
- this.$message.success(JSON.stringify(node))
- console.log(node)
- },
- addHandler(){
- this.dialogTableVisible=true
- console.log(1)
- },
-
- handelLife(){
- console.log("鐐瑰嚮鎴愬姛")
- },
- addHandlers(){
- console.log(111)
- }
+ // data: [
+ // {
+ // name: "鎴戞槸name",
+ // label: "鎴戞槸label",
+ // startState: "鎴戞槸startState",
+ // remark: "鎴戞槸remark",
+ // data: {
+ // nodes: [
+ // {
+ // type: "node",
+ // size: "80*48",
+ // shape: "flow-rect",
+ // color: "#1890FF",
+ // label: "Auditing",
+ // x: 110.50303650877106,
+ // y: 59.22389408123915,
+ // id: "Auditing",
+ // index: 0,
+ // },
+ // {
+ // type: "node",
+ // size: "80*48",
+ // shape: "flow-rect",
+ // color: "#1890FF",
+ // label: "Editing",
+ // x: 120.87992069414531,
+ // y: 156.76660542375714,
+ // id: "Editing",
+ // index: 1,
+ // },
+ // {
+ // type: "node",
+ // size: "80*48",
+ // shape: "flow-rect",
+ // color: "#1890FF",
+ // label: "Released",
+ // x: 100.12615232339681,
+ // y: 252.2339399292003,
+ // id: "Released",
+ // index: 2,
+ // },
+ // ],
+ // edges: [
+ // {
+ // source: "Auditing",
+ // sourceAnchor: 1,
+ // target: "Released",
+ // targetAnchor: 1,
+ // },
+ // {
+ // source: "Editing",
+ // sourceAnchor: 3,
+ // target: "Auditing",
+ // targetAnchor: 3,
+ // },
+ // ],
+ // },
+ // },
+ // ],
+ title: "棰勮鐢熷懡鍛ㄦ湡娴佺▼鍥�",
+ visible: false,
+ flowChartNodeItems: [],
+ rowData: {},
+ dialogWidth: "50%",
+ type: "detail",
+ loading: false
+ };
+ },
+ created() {
+ this.search()
+ },
+ methods: {
+ search() {
+ this.loading = true
+ API.getList(this.form).then(res => {
+ this.loading = false
+ this.data = res.data.data
+ })
+ },
+ openDialog(type, row) {
+ if (type === "detail") {
+ this.title = "棰勮鐢熷懡鍛ㄦ湡娴佺▼鍥�";
+ this.dialogWidth = "50%";
+ } else if (type === "edit") {
+ this.title = "缂栬緫鐢熷懡鍛ㄦ湡娴佺▼鍥�";
+ this.dialogWidth = "95%";
+ } else if (type === "add") {
+ this.title = "鏂板鐢熷懡鍛ㄦ湡娴佺▼鍥�";
+ this.dialogWidth = "95%";
}
- }
- }
-}
+ this.type = type;
+ this.rowData = row;
+ this.visible = true;
+ },
+ async submit() {
+ const newRowData = await this.$refs.vueFlowchartEditor.getNewRowData();
+ if (!newRowData) {
+ return;
+ }
+ const flowData = this.$refs.vueFlowchartEditor.getFlowData();
+ console.log(JSON.stringify(flowData));
+ },
+ },
+};
</script>
-<style lang="scss">
-#basic {
- height: 761px;
- border-radius: 10px;
+<style lang="scss" scoped>
+/deep/ .el-dialog__body {
+ padding: 0 20px;
+}
+.cycle_flow {
+ height: 600px !important;
+ display: flex;
+ flex-direction: column;
+ margin: 0;
+ padding: 0;
}
</style>
--
Gitblit v1.9.3