| | |
| | | <!-- |
| | | * @Description: file content |
| | | * @Author: your name |
| | | * @Author: Ben Lin |
| | | * @version: |
| | | * @Date: 2024-06-11 21:07:04 |
| | | * @LastEditors: your name |
| | | * @LastEditTime: 2024-06-12 10:11:05 |
| | | * @LastEditors: Ben Lin |
| | | * @LastEditTime: 2024-08-04 18:34:26 |
| | | --> |
| | | <!-- |
| | | * @Description: 右侧属性面板控件 表单属性面板 |
| | | --> |
| | | <template> |
| | | <div class="mt-3"> |
| | | <Button type="primary" @click="handleCreate" preIcon="add_02|svg" :size="size"> 新增 </Button> |
| | | <a-table :columns="columns" :data-source="data" bordered> |
| | | <template #name="{ text }"> |
| | | <a>{{ text }}</a> |
| | | </template> |
| | | </a-table> |
| | | <div class="m-1"> |
| | | <BasicTable @register="registerTable"> |
| | | <template #toolbar> |
| | | <a-button type="primary" @click="handleCreate" preIcon="add_02|svg" :size="size"> |
| | | 新增 |
| | | </a-button> |
| | | </template> |
| | | <template #action="{ record }"> |
| | | <TableAction |
| | | :actions="[ |
| | | { |
| | | icon: 'ant-design:delete-outlined', |
| | | color: 'error', |
| | | popConfirm: { |
| | | title: '是否确认删除?', |
| | | placement: 'left', |
| | | confirm: handleDelete.bind(null, record), |
| | | }, |
| | | name: '', |
| | | }, |
| | | ]" |
| | | /> |
| | | </template> |
| | | </BasicTable> |
| | | </div> |
| | | |
| | | <GeneralModal @register="register" @success="handleSuccess"></GeneralModal> |
| | | </template> |
| | | <script lang="ts" setup> |
| | | import { Table, notification } from 'ant-design-vue'; |
| | | import { Button } from '/@/components/Button'; |
| | | import { SizeType } from 'ant-design-vue/es/config-provider'; |
| | | import { ref } from 'vue'; |
| | | import { notification } from 'ant-design-vue'; |
| | | import { BasicTable, TableAction, useTable } from '/@/components/Table'; |
| | | import { SizeType } from 'ant-design-vue/es/config-provider'; |
| | | import { nextTick, onMounted, ref, unref, watch } from 'vue'; |
| | | import { useModal } from '/@/components/Modal'; |
| | | import GeneralModal from '/@/views/components/GeneralModal.vue'; |
| | | import { useI18n } from '/@/hooks/web/useI18n'; |
| | | import { DeleteWhere, getListByPage } from '/@/api/tigerapi/system'; |
| | | import { useRouteDesignState } from '../hooks/useRouteDesignState'; |
| | | import { SaveRouteNodePost, SaveWoRouteNodePost } from '/@/api/tigerapi/mes/router'; |
| | | |
| | | const ATable = Table; |
| | | const size = ref<SizeType>('small'); |
| | | const columns = [ |
| | | { |
| | | title: 'Name', |
| | | dataIndex: 'name', |
| | | key: 'name', |
| | | slots: { customRender: 'name' }, |
| | | }, |
| | | { |
| | | title: 'Age', |
| | | dataIndex: 'age', |
| | | key: 'age', |
| | | }, |
| | | ]; |
| | | const { t } = useI18n(); |
| | | const { routeConfig, mesRoute } = useRouteDesignState(); |
| | | const size = ref<SizeType>('small'); |
| | | const columns = [ |
| | | { |
| | | title: '岗位名称', |
| | | dataIndex: 'POST_NAME', |
| | | key: 'POST_NAME', |
| | | slots: { customRender: 'POST_NAME' }, |
| | | }, |
| | | { |
| | | title: '岗位编码', |
| | | dataIndex: 'POST_CODE', |
| | | key: 'POST_CODE', |
| | | }, |
| | | { |
| | | title: t('产线编码'), |
| | | dataIndex: 'LINE_CODE', |
| | | key: 'LINE_CODE', |
| | | }, |
| | | ]; |
| | | |
| | | const data: DataItem[] = []; |
| | | for (let i = 0; i < 100; i++) { |
| | | data.push({ |
| | | key: i, |
| | | name: `Edrward ${i}`, |
| | | age: 32, |
| | | address: `London Park no. ${i}`, |
| | | const [register, { openModal }] = useModal(); |
| | | const [registerTable, { reload }] = useTable({ |
| | | title: '列表', |
| | | api: getListByPage, |
| | | searchInfo: routeConfig['isWorkOrder'] |
| | | ? { TABLE_NAME: 'V_MES_WO_NODE_POST', NODE_ID: routeConfig['currentItem'].ID } |
| | | : { TABLE_NAME: 'V_MES_ROUTE_NODE_POST', NODE_ID: routeConfig['currentItem'].ID }, |
| | | columns, |
| | | useSearchForm: false, |
| | | showTableSetting: false, |
| | | bordered: true, |
| | | showIndexColumn: false, |
| | | pagination: { pageSize: 10 }, |
| | | actionColumn: { |
| | | width: 80, |
| | | title: '操作', |
| | | dataIndex: 'action', |
| | | slots: { customRender: 'action' }, |
| | | }, |
| | | }); |
| | | } |
| | | defineExpose({ |
| | | reload, |
| | | }); |
| | | // watch( |
| | | // () => routeConfig.currentItem.ID, |
| | | // (newVal, oldVal) => { |
| | | // if (newVal != oldVal) { |
| | | // nextTick(() => { |
| | | // reload(); |
| | | // }); |
| | | // } |
| | | // }, |
| | | // { deep: true, immediate: true }, |
| | | // ); |
| | | |
| | | interface DataItem { |
| | | key: number; |
| | | name: string; |
| | | age: number; |
| | | address: string; |
| | | } |
| | | onMounted(() => {}); |
| | | |
| | | function handleCreate() {} |
| | | /** |
| | | * @description: 新增方法 |
| | | * @return {*} |
| | | */ |
| | | function handleCreate() { |
| | | openModal(true, { |
| | | title: '岗位资源列表', |
| | | schemas: [ |
| | | { |
| | | field: 'POST_CODE', |
| | | component: 'Input', |
| | | label: '岗位资源编码', |
| | | colProps: { |
| | | span: 12, |
| | | }, |
| | | }, |
| | | ], |
| | | ItemColumns: [ |
| | | { |
| | | title: t('岗位资源编码'), |
| | | dataIndex: 'POST_CODE', |
| | | resizable: true, |
| | | sorter: true, |
| | | width: 200, |
| | | }, |
| | | { |
| | | title: t('岗位资源名称'), |
| | | dataIndex: 'POST_NAME', |
| | | resizable: true, |
| | | sorter: true, |
| | | width: 180, |
| | | }, |
| | | { |
| | | title: t('产线编码'), |
| | | dataIndex: 'LINE_CODE', |
| | | resizable: true, |
| | | sorter: true, |
| | | width: 180, |
| | | }, |
| | | ], |
| | | tableName: 'MES_POSITION', |
| | | rowKey: 'POST_CODE', |
| | | searchInfo: { TABLE_NAME: 'MES_POSITION' }, |
| | | }); |
| | | } |
| | | |
| | | /** |
| | | * @description: 删除 |
| | | * @param {*} record |
| | | * @return {*} |
| | | */ |
| | | function handleDelete(record: Recordable) { |
| | | let entityName = routeConfig['isWorkOrder'] ? 'MES_WO_NODE_POST' : 'MES_ROUTE_NODE_POST'; |
| | | DeleteWhere( |
| | | `POST_CODE = '${record.POST_CODE}' And NODE_ID = '${record.NODE_ID}'`, |
| | | entityName, |
| | | ).then((res) => { |
| | | reload(); |
| | | }); |
| | | } |
| | | |
| | | /** |
| | | * @description: 选择岗位资源成功返回方法 |
| | | * @param {*} d |
| | | * @param {*} u |
| | | * @return {*} |
| | | */ |
| | | function handleSuccess(d, u) { |
| | | let codes = d.values.val.split(','); |
| | | let eintity: any[] = []; |
| | | var i; |
| | | for (i = 0; i < codes.length; i++) { |
| | | eintity.push({ |
| | | NODE_ID: routeConfig['currentItem'].ID, |
| | | POST_CODE: codes[i], |
| | | REMARK: '', |
| | | WORK_ORDER: routeConfig['currentItem'].WORK_ORDER, |
| | | }); |
| | | } |
| | | if (routeConfig['isWorkOrder']) { |
| | | SaveWoRouteNodePost(eintity).then((res) => { |
| | | reload(); |
| | | }); |
| | | } else { |
| | | SaveRouteNodePost(eintity).then((res) => { |
| | | reload(); |
| | | }); |
| | | } |
| | | } |
| | | </script> |