Ben Lin
2024-04-25 e404c076586d9682c3d782a4ecb0dc254f0bfd48
src/views/tigerprojects/mes/eng/router/index.vue
@@ -1,138 +1,272 @@
<template>
  <PageWrapper title="工艺流程图" content="根据生产工艺设计工艺流程" contentFullHeight fixedHeight>
    <FlowChart :data="demoData" />
    <a-layout style="min-height: 100vh">
      <a-layout-content>
        <FlowChart :data="demoData" />
      </a-layout-content>
      <a-layout-sider
        width="450"
        style="background: #fafafa; border-left: 1px solid #d9d9d9; padding: 20px"
        ><BasicForm
          autoFocusFirstItem
          :labelWidth="80"
          :schemas="schemas"
          :actionColOptions="{ span: 24 }"
          :submitButtonOptions="{ text: '确定' }"
          @submit="handleSubmit"
          @reset="handleReset"
      /></a-layout-sider>
    </a-layout>
  </PageWrapper>
</template>
<script lang="ts">
<script lang="ts" setup>
  import { FlowChart } from '/@/components/FlowChart';
  import { PageWrapper } from '/@/components/Page';
  import { BasicForm, FormSchema } from '/@/components/Form/index';
  import { getOperAllList } from '/@/api/tigerapi/mes/oper';
  import { ref } from 'vue';
  export default {
    components: { FlowChart, PageWrapper },
    setup() {
      let demoData = {
        nodes: [
          {
            id: '5d82e943-477f-4313-aaff-a736d8caba74',
            type: 'rect',
            x: 340,
            y: 120,
            properties: {},
            text: {
              x: 340,
              y: 120,
              value: '测试工序',
            },
          },
          {
            id: '6e0c6714-69a7-4160-8bda-61f4e6d285dd',
            type: 'rect',
            x: 560,
            y: 120,
            properties: {},
            text: {
              x: 560,
              y: 120,
              value: '上料工序',
            },
          },
          {
            id: '80b2ee17-5a0e-4586-ba28-6ba59fcc0f59',
            type: 'rect',
            x: 340,
            y: 280,
            properties: {
              isReturn: true,
            },
            text: {
              x: 340,
              y: 280,
              value: '维修工序',
            },
          },
  const isRuter = (type: string) => type === '0';
  const isOper = (type: string) => type === '1';
  const schemas: FormSchema[] = [
    // {
    //   field: 'divider-basic',
    //   component: 'Divider',
    //   label: '属性页',
    // },
    {
      field: 'func_type',
      label: '属性页',
      component: 'RadioButtonGroup',
      defaultValue: '0',
      componentProps: {
        options: [
          { label: '工艺流程', value: '0' },
          { label: '工序', value: '1' },
        ],
        edges: [
          {
            id: 'Flow_0p4u47c',
            type: 'bpmn:sequenceFlow',
            sourceNodeId: '5d82e943-477f-4313-aaff-a736d8caba74',
            targetNodeId: '6e0c6714-69a7-4160-8bda-61f4e6d285dd',
            startPoint: {
              x: 390,
              y: 120,
            },
            endPoint: {
              x: 510,
              y: 120,
            },
            properties: {},
            pointsList: [
              {
                x: 390,
                y: 120,
              },
              {
                x: 510,
                y: 120,
              },
            ],
          },
          {
            id: 'Flow_09tu4cm',
            type: 'bpmn:sequenceFlow',
            sourceNodeId: '5d82e943-477f-4313-aaff-a736d8caba74',
            targetNodeId: '80b2ee17-5a0e-4586-ba28-6ba59fcc0f59',
            startPoint: {
              x: 340,
              y: 160,
            },
            endPoint: {
              x: 340,
              y: 240,
            },
            properties: {},
            pointsList: [
              {
                x: 340,
                y: 160,
              },
              {
                x: 340,
                y: 240,
              },
            ],
          },
          {
            id: '22226ec4-9960-497d-93cb-6226a3f29b3d',
            type: 'custom-edge',
            sourceNodeId: '80b2ee17-5a0e-4586-ba28-6ba59fcc0f59',
            targetNodeId: '5d82e943-477f-4313-aaff-a736d8caba74',
            startPoint: {
              x: 351,
              y: 240,
            },
            endPoint: {
              x: 351,
              y: 160,
            },
            properties: {},
            pointsList: [
              {
                x: 351,
                y: 240,
              },
              {
                x: 351,
                y: 160,
              },
            ],
          },
        ],
      };
      return {
        demoData,
      };
      },
      colProps: { lg: 24, md: 24 },
    },
  };
    {
      field: 'OPER_CODE',
      component: 'ApiSelect',
      label: '选择工序',
      componentProps: {
        api: getOperAllList,
        // params: {
        //   id: 1,
        // },
        resultField: 'items',
        labelField: 'OPER_NAME',
        valueField: 'OPER_CODE',
        // not request untill to select
        immediate: false,
        onChange: (e) => {
          console.log('selected:', e);
        },
        // atfer request callback
        onOptionsChange: (options) => {
          console.log('get options', options.length, options);
        },
      },
      ifShow: ({ values }) => isOper(values.func_type),
    },
    {
      field: 'field2',
      component: 'Input',
      label: '工序类型',
      // componentProps:{},
      // can func
      componentProps: ({ schema, formModel }) => {
        console.log('form:', schema);
        console.log('formModel:', formModel);
        return {
          placeholder: '测试',
          onChange: (e: any) => {
            console.log(e);
          },
        };
      },
      renderComponentContent: () => {
        return {
          prefix: () => '工序',
          suffix: () => '类型',
        };
      },
    },
    {
      field: 'field3',
      component: 'Select',
      label: '工序行为',
      componentProps: {
        options: [
          {
            label: '存储过程',
            value: '1',
            key: '1',
          },
          {
            label: '条码规则',
            value: '2',
            key: '2',
          },
          {
            label: '行为一',
            value: '3',
            key: '3',
          },
          {
            label: '行为二',
            value: '4',
            key: '4',
          },
          {
            label: '行为三',
            value: '5',
            key: '5',
          },
        ],
      },
    },
    {
      field: 'field4',
      component: 'Switch',
      label: '是否计算直通率',
      colProps: {
        span: 16,
      },
      labelWidth: 200,
    },
    {
      field: 'field5',
      component: 'Switch',
      label: '是否可跳站',
      colProps: {
        span: 16,
      },
      labelWidth: 200,
    },
  ];
  const demoData = ref({
    nodes: [
      {
        id: '5d82e943-477f-4313-aaff-a736d8caba74',
        type: 'rect',
        x: 340,
        y: 120,
        properties: {},
        text: {
          x: 340,
          y: 120,
          value: '测试工序',
        },
      },
      {
        id: '6e0c6714-69a7-4160-8bda-61f4e6d285dd',
        type: 'rect',
        x: 560,
        y: 120,
        properties: {},
        text: {
          x: 560,
          y: 120,
          value: '上料工序',
        },
      },
      {
        id: '80b2ee17-5a0e-4586-ba28-6ba59fcc0f59',
        type: 'rect',
        x: 340,
        y: 280,
        properties: {
          isReturn: true,
        },
        text: {
          x: 340,
          y: 280,
          value: '维修工序',
        },
      },
    ],
    edges: [
      {
        id: 'Flow_0p4u47c',
        type: 'bpmn:sequenceFlow',
        sourceNodeId: '5d82e943-477f-4313-aaff-a736d8caba74',
        targetNodeId: '6e0c6714-69a7-4160-8bda-61f4e6d285dd',
        startPoint: {
          x: 390,
          y: 120,
        },
        endPoint: {
          x: 510,
          y: 120,
        },
        properties: {},
        pointsList: [
          {
            x: 390,
            y: 120,
          },
          {
            x: 510,
            y: 120,
          },
        ],
      },
      {
        id: 'Flow_09tu4cm',
        type: 'bpmn:sequenceFlow',
        sourceNodeId: '5d82e943-477f-4313-aaff-a736d8caba74',
        targetNodeId: '80b2ee17-5a0e-4586-ba28-6ba59fcc0f59',
        startPoint: {
          x: 340,
          y: 160,
        },
        endPoint: {
          x: 340,
          y: 240,
        },
        properties: {},
        pointsList: [
          {
            x: 340,
            y: 160,
          },
          {
            x: 340,
            y: 240,
          },
        ],
      },
      {
        id: '22226ec4-9960-497d-93cb-6226a3f29b3d',
        type: 'custom-edge',
        sourceNodeId: '80b2ee17-5a0e-4586-ba28-6ba59fcc0f59',
        targetNodeId: '5d82e943-477f-4313-aaff-a736d8caba74',
        startPoint: {
          x: 351,
          y: 240,
        },
        endPoint: {
          x: 351,
          y: 160,
        },
        properties: {},
        pointsList: [
          {
            x: 351,
            y: 240,
          },
          {
            x: 351,
            y: 160,
          },
        ],
      },
    ],
  });
  function handleReset() {}
  function handleSubmit(_values: any) {}
</script>