ludc
2023-07-11 9d8be8e7580ef577def96c852288a5a95eab4ea3
Source/UBCS-WEB/src/views/modeling/cycle.vue
@@ -1,6 +1,14 @@
<template>
  <basic-container class="">
    <avue-crud :data="data" :option="option" @refresh-change="search" :table-loading="loading">
    <avue-crud
      :data="data"
      :option="option"
      :page="page"
      :table-loading="loading"
      @refresh-change="search"
      @search-change="search('search', ...arguments)"
      @search-reset="search('reset', ...arguments)"
    >
      <template slot-scope="scope" slot="menuLeft">
        <el-button
          type="primary"
@@ -32,14 +40,18 @@
      :width="dialogWidth"
      :title="title"
      append-to-body
      :before-close="() => {visible = false}"
      :before-close="
        () => {
          visible = false;
        }
      "
      top="10vh"
    >
      <CycleFlow
        v-if="visible"
        class="cycle_flow"
        :type="type"
        :chart-data="rowData.data || {}"
        :chart-data="nodesEdgesData"
        :chart-data-node-items="flowChartNodeItems"
        :rowData="rowData"
        ref="vueFlowchartEditor"
@@ -54,18 +66,23 @@
</template>
<script>
import API from '@/api/modeling/cycle'
import API from "@/api/modeling/cycle";
import CycleFlow from "@/components/flow-cycle/flowchartEditor.vue";
export default {
  name: "cycle.vue",
  components: { CycleFlow },
  data() {
    return {
      form: {
        page: 1,
        limit: 10
      form: {},
      page: {
        pageSize: 10,
        total: 0,
        currentPage: 1,
        layout: "total, sizes, prev, pager, next, jumper",
      },
      option: {
        searchMenuSpan: 12,
        searchMenuPosition: "right",
        border: true,
        align: "center",
        menuAlign: "center",
@@ -81,10 +98,12 @@
          {
            label: "名称",
            prop: "name",
            search: true,
          },
          {
            label: "起始状态",
            prop: "startStatusName",
            search: true,
          },
          {
            label: "描述",
@@ -92,107 +111,103 @@
          },
        ],
      },
      // 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,
      //         },
      //       ],
      //     },
      //   },
      // ],
      data: [],
      title: "预览生命周期流程图",
      visible: false,
      flowChartNodeItems: [],
      rowData: {},
      nodesEdgesData: {},
      dialogWidth: "50%",
      type: "detail",
      loading: false
      loading: false,
    };
  },
  created() {
    this.search()
    this.search("search", {});
  },
  methods: {
    search() {
      this.loading = true
      API.getList(this.form).then(res => {
        this.loading = false
        this.data = res.data.data
      })
    search(type, params, done) {
      if (type === "search") {
        this.page.currentPage = 1;
      } else if (type === "reset") {
        this.page = {
          pageSize: 10,
          total: 0,
          currentPage: 1,
        };
      }
      this.loading = true;
      const { limit, page } = this.page;
      API.getList(Object.assign({}, params, { limit, page })).then((res) => {
        this.loading = false;
        this.data = res.data.data.records;
        this.page.total = res.data.data.total;
        this.loading = false;
        done && done();
      });
    },
    openDialog(type, row) {
      if (type === "detail") {
        this.title = "预览生命周期流程图";
        this.dialogWidth = "50%";
      } else if (type === "edit") {
      this.type = type;
      if (type === "edit") {
        this.$set(row, "editLoading", true);
        this.title = "编辑生命周期流程图";
        this.dialogWidth = "95%";
      } else if (type === "add") {
      } else if (type === "detail") {
        this.$set(row, "detailLoading", true);
        this.title = "预览生命周期流程图";
        this.dialogWidth = "50%";
      }
      if (type !== "add") {
        API.detail({ id: row.id }).then((res) => {
          this.$set(row, "detailLoading", false);
          this.$set(row, "editLoading", false);
          this.rowData = row;
          this.nodesEdgesData = {nodes: res.nodes, edges: res.edges}
        });
      } else {
        this.title = "新增生命周期流程图";
        this.dialogWidth = "95%";
      }
      this.type = type;
      this.rowData = row;
      this.visible = true;
      }
    },
    async submit() {
      const newRowData = await this.$refs.vueFlowchartEditor.getNewRowData();
      console.log(newRowData, "newRowDatanewRowData");
      if (!newRowData) {
        return;
      }
      const flowData = this.$refs.vueFlowchartEditor.getFlowData();
      console.log(JSON.stringify(flowData));
      if (Array.isArray(flowData.nodes)) {
        flowData.nodes = flowData.nodes.map((item) => {
          item.name = item.id;
          return item;
        });
      }
      if (Array.isArray(flowData.edges)) {
        flowData.edges = flowData.edges.map((item) => {
          item.name = item.label;
          return item;
        });
      }
      let params = {
        ...flowData,
        ...newRowData,
      };
      console.log(flowData, newRowData);
      API.add(params).then((res) => {
        console.log(res, "res");
      });
    },
  },
  watch: {
    page: {
      deep: true,
      immediate: true,
      handler(newV) {
        this.page.page = newV.currentPage;
        this.page.limit = newV.pageSize;
      },
    },
  },
};