Ben Lin
2024-06-21 0990f596791ebc4518e293a2d60407ff1165b53c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
<template>
  <div>
    <BasicTable @register="registerTable">
      <template #toolbar>
        <!-- <a-button type="primary" @click="handleRenew"> 批量更新 </a-button> -->
        <a-button type="primary" @click="handleCreate" v-if="HasRole"> 新增物料 </a-button>
      </template>
      <template #action="{ record }">
        <!-- b87079a98deb456a9cfa506bfd1a7bc6 -->
        <TableAction
          :actions="[
            {
              icon: 'clarity:note-edit-line',
              onClick: handleEdit.bind(null, record),
            },
            {
              icon: 'ant-design:delete-outlined',
              color: 'error',
              popConfirm: {
                title: '是否确认删除?',
                placement: 'left',
                confirm: handleDelete.bind(null, record),
              },
            },
            // {
            //   icon: 'binding|svg',
            //   tooltip: '绑定工艺',
            //   onClick: handleBinding.bind(null, record),
            // },
          ]"
        />
      </template>
    </BasicTable>
    <MaterialDrawer @register="registerDrawer" @success="handleSuccess" />
    <MaterialModal @register="registerModal" />
  </div>
</template>
<script lang="ts" setup>
  import { BasicTable, useTable, TableAction } from '/@/components/Table';
  import { useDrawer } from '/@/components/Drawer';
  import MaterialDrawer from './MaterialDrawer.vue';
  import MaterialModal from './MaterialModal.vue';
  import { columns, searchFormSchema } from './Material.data';
  import { DeleteMaterial, getMaterialListByPage } from '../../../../api/tigerapi/bas/MaterialInfo';
  import { useModal } from '/@/components/Modal';
  import { getListByPage } from '/@/api/tigerapi/system';
  import { useGo } from '/@/hooks/web/usePage';
  import { useRouter } from 'vue-router';
  import { onMounted, ref } from 'vue';
  import { getMenuButtons } from '/@/api/sys/menu';
import { useUserStore } from '/@/store/modules/user';
 
  const go = useGo();
  const { currentRoute } = useRouter();
  const [registerDrawer, { openDrawer }] = useDrawer();
  const [registerModal, { openModal: openMaterialModal }] = useModal();
  const buttons = ref([]);
  const HasRole = ref(false);
  const [registerTable, { reload }] = useTable({
    title: '物料列表',
    api: getListByPage,
    searchInfo: { TABLE_NAME: 'BAS_ITEM' },
    columns,
    formConfig: {
      labelWidth: 120,
      schemas: searchFormSchema,
    },
    useSearchForm: true,
    showTableSetting: true,
    bordered: true,
    showIndexColumn: false,
    actionColumn: {
      width: 100,
      title: '操作',
      dataIndex: 'action',
      slots: { customRender: 'action' },
    },
  });
  function handleCreate() {
    openDrawer(true, {
      isUpdate: false,
    });
  }
  function handleRenew() {
    openMaterialModal(true, {
      data: 'content',
      info: 'Info',
    });
  }
  function handleSuccess() {
    reload();
  }
 
  function handleEdit(record: Recordable) {
    openDrawer(true, {
      record,
      isUpdate: true,
    });
  }
  function handleDelete(record: Recordable) {
    console.log(record);
    //删除物料
    const apiAction = DeleteMaterial(record);
    apiAction.then((action) => {
      if (action.IsSuccessed) {
        reload();
      }
    });
  }
 
  onMounted(async () => {
    buttons.value = (await getMenuButtons(currentRoute.value.meta.menuCode as string)).Data.Items;
    const roles = useUserStore().getUserInfo.roles;
    HasRole.value = roles.some((item) => item.MENU_CODE === buttons.value[0]['FUNC_CODE']);
  });
 
  /**
   * @description: 跳转产品工艺绑定页面
   * @param {*} record
   * @return {*}
   */
  function handleBinding(record: Recordable) {
    const id = {
      ID: record.ID,
      Name: 'ProdRouteBinding',
      CODE: record.ITEM_CODE,
      Title: `产品[${record.ITEM_CODE}]工艺绑定`,
      colSlots: [],
      crudColSlots: [],
      dense: true,
      pageTitle: `产品工艺绑定`,
      pageContent: `这里是管理产品的工艺绑定,一个产品可以绑定多个工艺路线`,
    };
    go(`/ProdRouteBinding/CP/${encodeURI(JSON.stringify(id))}`);
    // let obj = JSON.stringify(id);
    // push({
    //   path: '/ProdRouteBinding',
    //   state: {obj}, //HTML5 History API 的传参,参数隐藏不在地址栏显示(history)
    // })
  }
</script>