fjl
fujunling
2023-07-18 515aea3f9ee31d26ec93bf471b2491caf8ac16ed
fjl
已修改9个文件
471 ■■■■ 文件已修改
Source/UBCS-WEB/src/api/modeling/cycle.js 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/BatchImport/ShowImportData.vue 84 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/FormTemplate/index.vue 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/flow-cycle/components/DetailForm.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/flow-cycle/components/DetailPanel.vue 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/components/flow-cycle/flowchartEditor.vue 39 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/main.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/views/modeling/cycle.vue 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/vue.config.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS-WEB/src/api/modeling/cycle.js
@@ -42,10 +42,19 @@
      data
  })
}
// 获取生命周期事件
export const getEventList = (params) => {
  return request({
      url: '/api/ubcs-omd/lifeCycle/page-event',
      method: 'get',
      params
  })
}
export default {
  getList,
  add,
  detail,
  del,
  edit
  edit,
  getEventList
}
Source/UBCS-WEB/src/components/BatchImport/ShowImportData.vue
@@ -281,7 +281,7 @@
        title: "查看详细信息",
        setForm: {},
      },
      batchApplyCodeTableData: {},
      batchSelectTableData: {},
      savedList: [],
      tab1Loading: false,
      tab2Loading: false,
@@ -308,7 +308,7 @@
        if (first === true) {
          this.codeRuleOid = data.codeRuleOid;
          // 第一次打开直接赋值不校验
          this.batchApplyCodeTableData[data.codeRuleOid] = {
          this.batchSelectTableData[data.codeRuleOid] = {
            name: data.name,
            templateOid: data.oid,
            cloNamesList: data.cloNamesList,
@@ -328,8 +328,8 @@
            }
          }
        }
        if (!this.batchApplyCodeTableData[data.codeRuleOid]) {
          this.batchApplyCodeTableData[data.codeRuleOid] = {
        if (!this.batchSelectTableData[data.codeRuleOid]) {
          this.batchSelectTableData[data.codeRuleOid] = {
            name: data.name,
            templateOid: data.oid,
            cloNamesList: data.cloNamesList,
@@ -337,6 +337,31 @@
            codeRuleOid: data.codeRuleOid,
          };
        }
      }
      if (this.type === 'historyImport') {
        if (first === true) {
          // 第一次打开直接赋值不校验
          this.batchSelectTableData[data.codeClassifyOid] = {
            name: data.name,
            templateOid: data.oid,
            cloNamesList: data.cloNamesList,
            codeClassifyOid: data.codeClassifyOid,
            codeRuleOid: data.codeRuleOid,
          };
          // 不是第一次打开需要优先校验
        }else if (this.localCodeClassifyOid === data.codeClassifyOid) {
          console.log("重复点击");
        }
        if (!this.batchSelectTableData[data.codeClassifyOid]) {
          this.batchSelectTableData[data.codeClassifyOid] = {
            name: data.name,
            templateOid: data.oid,
            cloNamesList: data.cloNamesList,
            codeClassifyOid: data.codeClassifyOid,
            tab1Selected: []
          };
        }
        this.selection = this.batchSelectTableData[this.localCodeClassifyOid]['tab1Selected']
      }
      this.localCodeClassifyOid = data.codeClassifyOid;
      this.cloNamesList = data.cloNamesList;
@@ -352,7 +377,11 @@
          (item) => !this.savedList.includes(item.oid)
        );
        if (this.type === "batchApplyCode") {
          this.batchApplyCodeTableData[data.codeRuleOid]["tab1"] =
          this.batchSelectTableData[data.codeRuleOid]["tab1"] =
            this.tab1Table;
        }
        if (this.type === "historyImport") {
          this.batchSelectTableData[data.codeClassifyOid]["tab1"] =
            this.tab1Table;
        }
      });
@@ -366,13 +395,17 @@
        this.tab2Loading = false
        this.tab2Table = res.data.data;
        if (this.tab2Table.length > 0 && this.type === "batchApplyCode") {
          this.batchApplyCodeTableData[data.codeRuleOid]["codeApply"] = {};
          this.batchApplyCodeTableData[data.codeRuleOid]["tab2"] =
            res.data.data;
          this.batchSelectTableData[data.codeRuleOid]["codeApply"] = {};
          this.batchSelectTableData[data.codeRuleOid]["tab2"] =
            this.tab2Table
          if (this.$refs.CodeApply) {
            this.$refs.CodeApply.loading = true;
          }
          this.getCodeRule();
        }
        if (this.type === "historyImport") {
          this.batchSelectTableData[data.codeClassifyOid]["tab2"] =
            this.tab2Table
        }
      });
      getFormTemplate({
@@ -384,6 +417,9 @@
    },
    tab1TableSelectChange(selection) {
      this.selectedTab1Table = selection;
      if (this.batchSelectTableData[this.localCodeClassifyOid]) {
        this.batchSelectTableData[this.localCodeClassifyOid]['tab1Selected'] = selection
      }
    },
    resembleRowChange(row) {
      if (!row || !row.oid) {
@@ -425,7 +461,7 @@
            return false;
          }
        }
        let lookedCodeRuleOidList = Object.keys(this.batchApplyCodeTableData);
        let lookedCodeRuleOidList = Object.keys(this.batchSelectTableData);
        let noLookCodeRuleOidList = this.leftTree.filter(
          (item) => !lookedCodeRuleOidList.includes(item.codeRuleOid)
        );
@@ -436,9 +472,9 @@
        }
        let errorData = [];
        let successData = [];
        for (const key in this.batchApplyCodeTableData) {
          if (Object.hasOwnProperty.call(this.batchApplyCodeTableData, key)) {
            const element = this.batchApplyCodeTableData[key];
        for (const key in this.batchSelectTableData) {
          if (Object.hasOwnProperty.call(this.batchSelectTableData, key)) {
            const element = this.batchSelectTableData[key];
            if (element.tab1.length > 0) {
              errorData.push(element);
            }
@@ -479,6 +515,27 @@
            },
          };
        });
      } else if (this.type === 'historyImport') {
        let lookedCodeRuleOidList = Object.keys(this.batchSelectTableData);
        let noLookCodeRuleOidList = this.leftTree.filter(
          (item) => !lookedCodeRuleOidList.includes(item.codeClassifyOid)
        );
        let noLookName = noLookCodeRuleOidList.map((item) => item.name);
        if (noLookName.length > 0) {
          this.$message.warning(`数据${noLookName}还未曾查看,请先查看!`);
          return false;
        }
        params.codeImprotSaveDatVOList = this.batchSelectTableData.map(item => {
          return {
            Clos: item.cloNamesList,
            dataList: item.tab2.concat(item.tab1Selected),
            orderDTO: {
              codeClassifyOid: item.codeClassifyOid,
              templateOid: item.templateOid,
              secDTOList: this.secDTOList,
            },
          }
        })
      } else {
        params.codeImprotSaveDatVOList = [
          {
@@ -495,7 +552,6 @@
        this.submitLoading = true
      submitHistoryimport(params).then((res) => {
        this.submitLoading = false
                console.log(res);
        if (res.data.code === 200) {
          this.$message.success(res.data.msg);
        }
@@ -503,7 +559,6 @@
    },
    // 重新编辑
    reEdit(row) {
      console.log(row, "row");
      this.currentSelectedResembleRow = {
        templateOid: row.codetemplateoid,
        codeClassifyOid: row.codeclassifyid,
@@ -517,7 +572,6 @@
    // 直接编辑后保存
    FormTemplateSubmit(form) {
      addSaveCode(form).then((res) => {
        console.log(res);
        if (res.data.code === 200) {
          this.savedList.push(form.oid);
          this.$message.success("新增成功!");
Source/UBCS-WEB/src/components/FormTemplate/index.vue
@@ -327,42 +327,8 @@
          this.form
        );
      }
      if (resembleQueryList.length === 0) {
        let resForm = {};
        const { defaultValue, formValue } = this.getDefaultValueAndFormValues(
          this.form
        );
        const noData = [
          "jiliangdwname",
          "materialtypeText",
          "morengongysname",
          "$caigouwl",
          "$xiaoshouwl",
          "$shifoupihaoguanli",
          "lcstatus_text",
          "hesuanfenleiname",
          "$kucunwl",
        ];
        noData.forEach((item) => {
          this.$delete(formValue, item);
        });
        resForm.data = formValue;
        resForm = Object.assign({}, resForm, defaultValue);
        resForm.secDTOList = [];
        for (const key in this.codeApplyForm) {
          if (Object.hasOwnProperty.call(this.codeApplyForm, key)) {
            const value = this.codeApplyForm[key];
            if (value) {
              resForm.secDTOList.push({ secOid: key, secValue: value });
            }
          }
        }
        resForm.codeClassifyOid = this.codeClassifyOid;
        resForm.codeRuleOid = this.codeRuleOid;
        resForm.templateOid = this.templateOid;
        this.$emit("submit", resForm);
      } else {
        this.$confirm(
      if (resembleQueryList.length > 0) {
        await this.$confirm(
          `该物料已有${resembleQueryList.length}条相似数据,是否继续保存?`,
          "需要您确认",
          {
@@ -370,41 +336,49 @@
            cancelButtonText: "取消",
            type: "warning",
          }
        )
          .then(() => {
            // 排除一些字段
            const noData = [
              "jiliangdwname",
              "materialtypeText",
              "morengongysname",
              "$caigouwl",
              "$xiaoshouwl",
              "$shifoupihaoguanli",
              "lcstatus_text",
              "hesuanfenleiname",
              "$kucunwl",
            ];
            let resForm = {};
            const { defaultValue, formValue } =
              this.getDefaultValueAndFormValues(this.form);
            noData.forEach((item) => {
              this.$delete(formValue, item);
            });
            resForm.data = formValue;
            resForm = Object.assign({}, resForm, defaultValue);
            resForm.secDTOList = this.secVOList.map((item) => {
              return {
                secOid: item.oid,
                secValue: this.codeApplyForm[item.oid],
              };
            });
            resForm.codeClassifyOid = this.codeClassifyOid;
            resForm.codeRuleOid = this.codeRuleOid;
            resForm.templateOid = this.templateOid;
            this.$emit("submit", resForm);
          })
          .catch(() => {});
        );
      }
      // 排除一些字段
      const noData = [
        "jiliangdwname",
        "materialtypeText",
        "morengongysname",
        "$caigouwl",
        "$xiaoshouwl",
        "$shifoupihaoguanli",
        "lcstatus_text",
        "hesuanfenleiname",
        "$kucunwl",
      ];
      let resForm = {};
      const { defaultValue, formValue } = this.getDefaultValueAndFormValues(
        this.form
      );
      noData.forEach((item) => {
        this.$delete(formValue, item);
      });
      const keys = Object.keys(formValue);
      debugger
      keys.forEach((item, index) => {
        keys.forEach((itm, idx) => {
          if ((item === ('$' + itm)) && idx !== index) {
            this.$delete(formValue, keys[index]);
          }
        })
      });
      resForm.data = formValue;
      resForm = Object.assign({}, resForm, defaultValue);
      resForm.secDTOList = this.secVOList.map((item) => {
        return {
          secOid: item.oid,
          secValue: this.codeApplyForm[item.oid],
        };
      });
      resForm.codeClassifyOid = this.codeClassifyOid;
      resForm.codeRuleOid = this.codeRuleOid;
      resForm.templateOid = this.templateOid;
      this.$emit("submit", resForm);
    },
    getDefaultValueAndFormValues(form) {
      let defaultValue = {};
Source/UBCS-WEB/src/components/flow-cycle/components/DetailForm.vue
@@ -124,7 +124,6 @@
  created() {
    const formModel = this.root.propsAPI.getSelected()[0].getModel()
    console.log(formModel, 'formModel');
    this.formModel = Object.assign(
      { width: 80, height: 48 },
      { shape: 'flow-smooth' },
Source/UBCS-WEB/src/components/flow-cycle/components/DetailPanel.vue
@@ -46,33 +46,34 @@
        <group-panel :status="status">
          <detail-form type="group" />
        </group-panel>
        <node-panel :status="status">
        <!-- <edge-panel :status="status">
          <div class="event">
            <hr />
            <div class="btn_box">
              <el-button type="primary" size="mini">新增</el-button>
              <el-button type="danger" size="mini">删除</el-button>
              <el-button type="primary" size="mini">保存</el-button>
            </div>
              <div  class="flex" v-for="(item, index) in eventList" :key="index" :class="{active: index === currentActive}">
                <el-select size="mini" style="width: 70%" v-if="item.isEdit">
                  <el-option></el-option>
                </el-select>
                <span v-else style="width: 70%">{{item.evenName}}</span>
                <el-button size="mini" type="text" class="red">删除</el-button>
                <el-button size="mini" type="text" @click="editChange(item)">{{item.isEdit ? '暂存' : '编辑'}}</el-button>
              </div>
            <h4>跃迁事件</h4>
            <el-select
              size="mini"
              style="width: 100%"
              value-key="oid"
              v-model="saveEventList"
              multiple
            >
              <el-option
                v-for="itm in eventList"
                :key="itm.oid"
                :value="itm"
                :label="itm.eventShowName"
              ></el-option>
            </el-select>
          </div>
        </node-panel>
        <!-- <multi-panel :status="status" /> -->
        <!-- <canvas-panel :status="status" /> -->
        </edge-panel> -->
      </template>
    </detail-panel>
  </div>
</template>
<script>
import API from "@/api/modeling/cycle";
import {
  NodePanel,
  EdgePanel,
@@ -94,7 +95,7 @@
    DetailPanel,
    DetailForm,
  },
  props: ["rowData", "existNodes", "type"],
  props: ["rowData", "existNodes", "existEdges", "type", "currentSelectedLine"],
  data() {
    return {
      newRowData: {
@@ -117,9 +118,14 @@
          { required: true, message: "起始状态不能为空", trigger: "change" },
        ],
      },
      eventList: [{evenName: '123123'}],
      currentActive: 0
      eventList: [],
      saveEventList: [],
      edgeEventList: {},
      currentActive: 0,
    };
  },
  created() {
    this.getEventList();
  },
  methods: {
    getNewRowDate() {
@@ -133,9 +139,13 @@
        });
      });
    },
    editChange(row) {
      this.$set(row, 'isEdit', !row.isEdit)
    }
    getEventList() {
      API.getEventList().then((res) => {
        if (res.data.code === 200) {
          this.eventList = res.data.data;
        }
      });
    },
  },
  watch: {
    rowData: {
@@ -157,6 +167,25 @@
        this.newRowData.startStatus = undefined;
      }
    },
    currentSelectedLine: {
      deep: true,
      handler(newV) {
        if (newV.id) {
          if (this.edgeEventList[newV.id]) {
            this.saveEventList = this.edgeEventList[newV.id]
          } else {
            this.edgeEventList[newV.id] = []
            this.saveEventList = []
          }
        }
      }
    },
    saveEventList: {
      deep: true,
      handler(newV) {
        this.edgeEventList[this.currentSelectedLine.id] = newV
      }
    }
  },
};
</script>
@@ -174,6 +203,6 @@
  color: red;
}
.active {
  box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.4)
  // box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.4)
}
</style>
Source/UBCS-WEB/src/components/flow-cycle/flowchartEditor.vue
@@ -14,7 +14,11 @@
        </div>
        <!-- Main Chart -->
        <div class="vfe-chart-main">
          <flow :data="flowChartData" :onAfterChange="onAfterChange" />
          <flow
            :data="flowChartData"
            :onAfterChange="onAfterChange"
            :onAfterItemSelected="onAfterItemSelected"
          />
          <div class="tooltip">
            <template v-for="item in tooltipData">
              <p>{{ item.name }}: {{ item.value }}</p>
@@ -23,7 +27,14 @@
        </div>
        <div class="vfe-chart-panel" v-if="type !== 'detail'">
          <div class="vfe-chart-panel-detail">
            <editor-detail-panel :rowData="rowData" ref="EditorDetailPanel" :existNodes="existNodes" :type="type"/>
            <editor-detail-panel
              :rowData="rowData"
              ref="EditorDetailPanel"
              :existNodes="existNodes"
              :existEdges="existEdges"
              :currentSelectedLine="currentSelectedLine"
              :type="type"
            />
          </div>
        </div>
      </div>
@@ -83,7 +94,9 @@
      },
      tooltipShow: true,
      tooltipData: [],
      existNodes: this.chartData.nodes || []
      existNodes: this.chartData.nodes || [],
      existEdges: this.chartData.edges || [],
      currentSelectedLine: {}
    };
  },
@@ -114,10 +127,21 @@
          this.$message.error("不能添加已存在的节点!");
        }
      }
      const { nodes } = this.$refs.flowChart.propsAPI.save()
      this.existNodes = nodes || []
      console.log(this.$refs.flowChart.propsAPI.save());
      const { nodes, edges } = this.$refs.flowChart.propsAPI.save();
      this.existNodes = nodes || [];
      this.existEdges = edges || [];
    },
    onAfterItemSelected({item}) {
      if (item.target) {
        const currentEdge = this.existEdges.filter(itm => itm.id === item.id)[0] || {}
        console.log(currentEdge, 'currentEdgecurrentEdge');
        if (!Array.isArray(currentEdge.events)) {
          currentEdge.events = []
        }
        this.currentSelectedLine = currentEdge
      }
    },
    _downloadImage(data, filename = "flowchart.png") {
      const a = document.createElement("a");
      a.href = data;
@@ -136,6 +160,9 @@
    getFlowData() {
      return this.$refs.flowChart.propsAPI.save();
    },
    getEdgesEvents() {
      return this.$refs.EditorDetailPanel.edgeEventList;
    }
  },
};
</script>
Source/UBCS-WEB/src/main.js
@@ -55,7 +55,6 @@
// 将工具函数添加到全局
import utilFunc from './util/func'
import flowPath from "@/views/flow/flowPath";
Vue.prototype.$utilFunc = utilFunc
// 注册全局crud驱动
window.$crudCommon = crudCommon;
Source/UBCS-WEB/src/views/modeling/cycle.vue
@@ -103,12 +103,7 @@
  components: { CycleFlow },
  data() {
    return {
      form: {
        // 'contionMap[id]': 'qwe'
        // contionMap: [
        //   {id: 'qwe'}
        // ]
      },
      form: {},
      page: {
        pageSize: 10,
        total: 0,
@@ -286,10 +281,138 @@
      });
    },
    async submit() {
      // const data = {
      //   startStatus: "Auditing",
      //   name: "22",
      //   id: "asas",
      //   nodes: [
      //     {
      //       type: "node",
      //       size: "80*48",
      //       shape: "flow-rect",
      //       color: "#1890FF",
      //       label: "Auditing",
      //       x: 278.60856031183397,
      //       y: 84.12841612613737,
      //       id: "Auditing",
      //       change: true,
      //       index: 0,
      //       name: "Auditing",
      //       indexNum: 0,
      //     },
      //     {
      //       type: "node",
      //       size: "80*48",
      //       shape: "flow-rect",
      //       color: "#1890FF",
      //       label: "Editing",
      //       x: 294.17388658989535,
      //       y: 299.9676071819219,
      //       id: "Editing",
      //       change: true,
      //       index: 1,
      //       name: "Editing",
      //       indexNum: 1,
      //     },
      //     {
      //       type: "node",
      //       size: "80*48",
      //       shape: "flow-rect",
      //       color: "#1890FF",
      //       label: "drg",
      //       x: 278.60856031183397,
      //       y: 463.92237731083515,
      //       id: "drg",
      //       change: true,
      //       index: 3,
      //       name: "drg",
      //       indexNum: 3,
      //     },
      //   ],
      //   edges: [
      //     {
      //       source: "Auditing",
      //       sourceAnchor: 2,
      //       target: "Editing",
      //       targetAnchor: 0,
      //       id: "3083896f",
      //       index: 2,
      //       indexNum: 2,
      //       events: [
      //         {
      //           eventFullName:
      //             "plm.bs.omd.lifecycle.server.pubimpl.TransationEvente",
      //           eventShowName: "TransationEventE",
      //           description: "",
      //           bizDomain: "mdm",
      //           oid: "5",
      //           creator: "",
      //           createTime: "",
      //           lastModifier: "",
      //           lastModifyTime: "",
      //           ts: "",
      //         },
      //       ],
      //     },
      //     {
      //       source: "Editing",
      //       sourceAnchor: 2,
      //       target: "drg",
      //       targetAnchor: 0,
      //       id: "b941a21d",
      //       index: 4,
      //       indexNum: 4,
      //       events: [
      //         {
      //           eventFullName:
      //             "plm.bs.omd.lifecycle.server.pubimpl.TransationEventf",
      //           eventShowName: "TransationEventF",
      //           description: "",
      //           bizDomain: "mdm",
      //           oid: "6",
      //           creator: "",
      //           createTime: "",
      //           lastModifier: "",
      //           lastModifyTime: "",
      //           ts: "",
      //         },
      //         {
      //           eventFullName:
      //             "plm.bs.omd.lifecycle.server.pubimpl.TransationEvente",
      //           eventShowName: "TransationEventE",
      //           description: "",
      //           bizDomain: "mdm",
      //           oid: "5",
      //           creator: "",
      //           createTime: "",
      //           lastModifier: "",
      //           lastModifyTime: "",
      //           ts: "",
      //         },
      //       ],
      //     },
      //   ],
      // };
      // API.add(data)
      //   .then((res) => {
      //     this.submitLoading = false;
      //     if (res.data.code === 200) {
      //       this.$message.success(
      //         this.type === "edit" ? "修改成功!" : "新增成功!"
      //       );
      //       this.visible = false;
      //       this.search();
      //     }
      //   })
      //   .catch(() => {
      //     this.submitLoading = false;
      //   });
      // return;
      const newRowData = await this.$refs.vueFlowchartEditor.getNewRowData();
      if (!newRowData) {
        return;
      }
      // const edgeEvents = this.$refs.vueFlowchartEditor.getEdgesEvents();
      const flowData = await this.$refs.vueFlowchartEditor.getFlowData();
      if (Array.isArray(flowData.nodes)) {
        flowData.nodes = flowData.nodes.map((item) => {
@@ -302,6 +425,7 @@
        flowData.edges = flowData.edges.map((item) => {
          item.name = item.label;
          item.indexNum = item.index;
          // item.events = edgeEvents[item.id] || [];
          return item;
        });
      }
@@ -309,7 +433,7 @@
        ...newRowData,
        ...flowData,
      };
      debugger;
      this.submitLoading = true;
      let APIFun = API.add;
      if (this.type === "edit") {
Source/UBCS-WEB/vue.config.js
@@ -26,10 +26,10 @@
    proxy: {
      '/api': {
        //本地服务接口地址
        target: 'http://localhost:37000',
        // target: 'http://localhost:37000',
        // target: 'http://192.168.1.51:37000',
        // target: 'http://192.168.1.46:37000',
        // target: 'http://dev.vci-tech.com:37000',
        target: 'http://dev.vci-tech.com:37000',
        // target: 'http://192.168.1.51:37000/',
        // target: 'http://192.168.1.104:37000',
        // target: 'http://192.168.1.63:37000',