refactor(wls): 将级联选择组件替换为普通输入框
- 移除到货通知选择弹窗组件 an-select-dialog.vue
- 将 itemreceipt 中的 WmArrivalNoticeSelect、ErpSupplierSelect 替换为 Input
- 将 productissue 中的 ProWorkOrderSelect、ProTaskSelect、MdWorkstationSelect 替换为 Input
| | |
| | | favicon: '/logos/TEST.ico', |
| | | apiUrl: 'http://36.213.90.123:9501/admin-api', |
| | | }, |
| | | JHHG: { |
| | | name: 'å®å¤ä¹æ³åå·¥', |
| | | logo: '/logos/TEST.png', |
| | | favicon: '/logos/TEST.ico', |
| | | apiUrl: 'http://42.63.70.90:9001/admin-api', |
| | | }, |
| | | YZFX: { |
| | | name: 'å®å¤è±æ³½é²é', |
| | | BFKJ: { |
| | | name: 'æ°çåæ¹ç§æ', |
| | | logo: '/logos/YZFXLogo.png', |
| | | favicon: '/logos/YZFXLogo.ico', |
| | | apiUrl: 'http://42.63.70.231:9001/admin-api', |
| | | }, |
| | | WTXC: { |
| | | name: 'å®å¤ä¸éæ°æ', |
| | | logo: '/logos/YZFXLogo.png', |
| | | favicon: '/logos/YZFXLogo.ico', |
| | | apiUrl: 'http://42.63.71.140:9001/admin-api', |
| | | }, |
| | | YSJX: { |
| | | name: 'å®å¤çå±±æºæ¢°', |
| | | logo: '/logos/YZFXLogo.png', |
| | | favicon: '/logos/YZFXLogo.ico', |
| | | apiUrl: 'http://42.63.71.140:9004/admin-api', |
| | | }, |
| | | XLZB: { |
| | | name: 'å®å¤ååè£
å¤', |
| | | logo: '/logos/YZFXLogo.png', |
| | | favicon: '/logos/YZFXLogo.ico', |
| | | apiUrl: 'http://42.63.71.140:9004/admin-api', |
| | | }, |
| | | ZSJC: { |
| | | name: 'å®å¤ä¸ç建æç§ææéå
¬å¸', |
| | | logo: '/logos/YZFXLogo.png', |
| | | favicon: '/logos/YZFXLogo.ico', |
| | | apiUrl: 'http://116.172.73.239:9001/admin-api', |
| | | }, |
| | | KYZN: { |
| | | name: 'åº·ææºè½', |
| | | logo: '/logos/YZFXLogo.png', |
| | | favicon: '/logos/YZFXLogo.ico', |
| | | apiUrl: 'http://36.213.150.237:9004/admin-api', |
| | | }, |
| | | CHDL: { |
| | | name: 'é¿è¾çµå', |
| | | logo: '/logos/YZFXLogo.png', |
| | | favicon: '/logos/YZFXLogo.ico', |
| | | apiUrl: 'http://36.213.150.237:9006/admin-api', |
| | | }, |
| | | HM: { |
| | | name: 'æ ç§', |
| | | logo: '/logos/YZFXLogo.png', |
| | | favicon: '/logos/YZFXLogo.ico', |
| | | apiUrl: 'http://36.213.150.237:9013/admin-api', |
| | | }, |
| | | TRT: { |
| | | name: 'å京åä»å ', |
| | | logo: '/logos/YZFXLogo.png', |
| | | favicon: '/logos/YZFXLogo.ico', |
| | | apiUrl: 'http://36.213.150.237:9015/admin-api', |
| | | apiUrl: 'http://36.213.150.237:9026/admin-api', |
| | | }, |
| | | }; |
| | |
| | | import type { VbenFormApi, VbenFormSchema } from '#/adapter/form'; |
| | | import type { VxeTableGridOptions } from '#/adapter/vxe-table'; |
| | | import type { MesWmArrivalNoticeApi } from '#/api/mes/wm/arrivalnotice'; |
| | | import type { MesWmArrivalNoticeLineApi } from '#/api/mes/wm/arrivalnotice/line'; |
| | | import type { MesWmItemReceiptApi } from '#/api/mes/wm/itemreceipt'; |
| | | import type { MesWmItemReceiptDetailApi } from '#/api/mes/wm/itemreceipt/detail'; |
| | |
| | | |
| | | import { h, markRaw } from 'vue'; |
| | | |
| | | import { |
| | | DICT_TYPE, |
| | | MesAutoCodeRuleCode, |
| | | MesWmArrivalNoticeStatusEnum, |
| | | } from '@vben/constants'; |
| | | import { DICT_TYPE, MesAutoCodeRuleCode } from '@vben/constants'; |
| | | |
| | | import { Button } from 'ant-design-vue'; |
| | | |
| | | import { generateAutoCode } from '#/api/mes/md/autocode/record'; |
| | | import { getRangePickerDefaultProps } from '#/utils'; |
| | | import { MdItemSelect } from '#/views/mes/md/item/components'; |
| | | import { ErpSupplierSelect } from '#/views/erp/purchase/supplier/components'; |
| | | import { |
| | | WmArrivalNoticeLineSelect, |
| | | WmArrivalNoticeSelect, |
| | | } from '#/views/wls/arrivalnotice/components'; |
| | | import { WmArrivalNoticeLineSelect } from '#/views/wls/arrivalnotice/components'; |
| | | import { |
| | | WmWarehouseAreaSelect, |
| | | WmWarehouseLocationSelect, |
| | |
| | | rules: 'required', |
| | | }, |
| | | { |
| | | fieldName: 'noticeId', |
| | | fieldName: 'noticeCode', |
| | | label: 'å°è´§éç¥å', |
| | | component: markRaw(WmArrivalNoticeSelect), |
| | | component: 'Input', |
| | | componentProps: { |
| | | // éæ©å°è´§éç¥ååï¼èªå¨åå¡«ä¾åºååéè´è®¢åå· |
| | | onChange: async (notice?: MesWmArrivalNoticeApi.ArrivalNotice) => { |
| | | await formApi?.setValues({ |
| | | purchaseOrderCode: notice?.purchaseOrderCode, |
| | | vendorId: notice?.vendorId, |
| | | vendorName: notice?.vendorName, |
| | | }); |
| | | }, |
| | | status: MesWmArrivalNoticeStatusEnum.PENDING_RECEIPT, |
| | | placeholder: '请è¾å
¥å°è´§éç¥åå·', |
| | | }, |
| | | }, |
| | | { |
| | | fieldName: 'vendorName', |
| | | fieldName: 'noticeId', |
| | | component: 'Input', |
| | | dependencies: { |
| | | triggerFields: [''], |
| | |
| | | }, |
| | | }, |
| | | { |
| | | fieldName: 'vendorId', |
| | | fieldName: 'vendorName', |
| | | label: 'ä¾åºå', |
| | | component: markRaw(ErpSupplierSelect), |
| | | component: 'Input', |
| | | componentProps: { |
| | | placeholder: 'è¯·éæ©ä¾åºå', |
| | | onChange: async (supplier?: any) => { |
| | | await formApi?.setFieldValue('vendorName', supplier?.name); |
| | | }, |
| | | }, |
| | | rules: 'selectRequired', |
| | | dependencies: { |
| | | triggerFields: ['vendorName'], |
| | | componentProps: (values) => ({ |
| | | placeholder: 'è¯·éæ©ä¾åºå', |
| | | supplierName: values.vendorName as string, |
| | | }), |
| | | placeholder: '请è¾å
¥ä¾åºå', |
| | | }, |
| | | }, |
| | | { |
| | |
| | | }, |
| | | }, |
| | | { |
| | | fieldName: 'vendorId', |
| | | fieldName: 'vendorName', |
| | | label: 'ä¾åºå', |
| | | component: markRaw(ErpSupplierSelect), |
| | | component: 'Input', |
| | | componentProps: { |
| | | placeholder: 'è¯·éæ©ä¾åºå', |
| | | allowClear: true, |
| | | placeholder: '请è¾å
¥ä¾åºå', |
| | | }, |
| | | }, |
| | | { |
| | |
| | | cancelItemReceipt, |
| | | deleteItemReceipt, |
| | | exportItemReceipt, |
| | | generateItemReceiptFromArrivalNotice, |
| | | getItemReceiptPage, |
| | | } from '#/api/mes/wm/itemreceipt'; |
| | | import { $t } from '#/locales'; |
| | | |
| | | import { useGridColumns, useGridFormSchema } from './data'; |
| | | import Form from './modules/form.vue'; |
| | | import AnSelectDialog from './modules/an-select-dialog.vue'; |
| | | |
| | | const [FormModal, formModalApi] = useVbenModal({ |
| | | connectedComponent: Form, |
| | | destroyOnClose: true, |
| | | }); |
| | | |
| | | const [AnSelectModal, anSelectModalApi] = useVbenModal({ |
| | | connectedComponent: AnSelectDialog, |
| | | destroyOnClose: true, |
| | | }); |
| | | |
| | |
| | | handleRefresh(); |
| | | } |
| | | |
| | | /** ä»å°è´§éç¥çæéè´å
¥åºå */ |
| | | async function handleGenerateFromAN() { |
| | | anSelectModalApi.open(); |
| | | } |
| | | |
| | | /** å°è´§éç¥éæ©åè° */ |
| | | async function handleArrivalNoticeSelected(arrivalNoticeId: number) { |
| | | const hideLoading = message.loading({ |
| | | content: 'æ£å¨çæéè´å
¥åºå...', |
| | | duration: 0, |
| | | }); |
| | | try { |
| | | const id = await generateItemReceiptFromArrivalNotice(arrivalNoticeId); |
| | | message.success('éè´å
¥åºåçææå'); |
| | | // 跳转å°ç¼è¾é¡µ |
| | | formModalApi.setData({ formType: 'update', id }).open(); |
| | | handleRefresh(); |
| | | } finally { |
| | | hideLoading(); |
| | | } |
| | | } |
| | | |
| | | /** 导åºè¡¨æ ¼ */ |
| | | async function handleExport() { |
| | | const data = await exportItemReceipt(await gridApi.formApi.getValues()); |
| | |
| | | <template> |
| | | <Page auto-content-height> |
| | | <FormModal @success="handleRefresh" /> |
| | | <AnSelectModal @selected="handleArrivalNoticeSelected" /> |
| | | |
| | | <Grid table-title="éè´å
¥åºåå表"> |
| | | <template #toolbar-tools> |
| | |
| | | icon: ACTION_ICON.ADD, |
| | | auth: ['mes:wm-item-receipt:create'], |
| | | onClick: handleCreate, |
| | | }, |
| | | { |
| | | label: 'ä»å°è´§éç¥çæ', |
| | | type: 'primary', |
| | | icon: ACTION_ICON.ADD, |
| | | auth: ['mes:wm-item-receipt:create'], |
| | | onClick: handleGenerateFromAN, |
| | | }, |
| | | { |
| | | label: $t('ui.actionTitle.export'), |
| | |
| | | import type { VbenFormApi, VbenFormSchema } from '#/adapter/form'; |
| | | import type { VxeTableGridOptions } from '#/adapter/vxe-table'; |
| | | import type { MesProTaskApi } from '#/api/mes/pro/task'; |
| | | import type { MesWmMaterialStockApi } from '#/api/mes/wm/materialstock'; |
| | | import type { MesWmProductIssueApi } from '#/api/mes/wm/productissue'; |
| | | import type { MesWmProductIssueDetailApi } from '#/api/mes/wm/productissue/detail'; |
| | |
| | | |
| | | import { h, markRaw } from 'vue'; |
| | | |
| | | import { |
| | | DICT_TYPE, |
| | | MesAutoCodeRuleCode, |
| | | MesProWorkOrderStatusEnum, |
| | | } from '@vben/constants'; |
| | | import { DICT_TYPE, MesAutoCodeRuleCode } from '@vben/constants'; |
| | | import { getDictOptions } from '@vben/hooks'; |
| | | |
| | | import { Button } from 'ant-design-vue'; |
| | |
| | | import { generateAutoCode } from '#/api/mes/md/autocode/record'; |
| | | import { getRangePickerDefaultProps } from '#/utils'; |
| | | import { MdItemSelect } from '#/views/mes/md/item/components'; |
| | | import { MdWorkstationSelect } from '#/views/mes/md/workstation/components'; |
| | | import { ProTaskSelect } from '#/views/mes/pro/task/components'; |
| | | import { ProWorkOrderSelect } from '#/views/mes/pro/workorder/components'; |
| | | import { WmMaterialStockSelect } from '#/views/wls/materialstock/components'; |
| | | import { |
| | | WmWarehouseAreaSelect, |
| | |
| | | rules: 'required', |
| | | }, |
| | | { |
| | | fieldName: 'workOrderId', |
| | | fieldName: 'workOrderCode', |
| | | label: 'ç产订å', |
| | | component: markRaw(ProWorkOrderSelect), |
| | | component: 'Input', |
| | | componentProps: { |
| | | placeholder: 'è¯·éæ©ç产订å', |
| | | status: MesProWorkOrderStatusEnum.CONFIRMED, |
| | | // 订ååæ´ï¼æ¸
空已éç产任å¡ï¼é¿å
ä»»å¡ä¸è®¢åä¸ä¸è´ |
| | | onChange: async () => { |
| | | await formApi?.setFieldValue('taskId', undefined); |
| | | }, |
| | | placeholder: '请è¾å
¥ç产订åå·', |
| | | }, |
| | | rules: 'selectRequired', |
| | | }, |
| | | { |
| | | fieldName: 'taskId', |
| | | fieldName: 'taskCode', |
| | | label: 'ç产任å¡', |
| | | component: markRaw(ProTaskSelect), |
| | | component: 'Input', |
| | | componentProps: { |
| | | placeholder: 'è¯·éæ©ç产任å¡', |
| | | // éä¸ä»»å¡åèªå¨å¸¦åºå
¶å·¥ä½ç« |
| | | onChange: async (task?: MesProTaskApi.Task) => { |
| | | await formApi?.setFieldValue('workstationId', task?.workstationId); |
| | | }, |
| | | placeholder: '请è¾å
¥ç产任å¡å·', |
| | | }, |
| | | dependencies: { |
| | | triggerFields: ['workOrderId'], |
| | | componentProps: (values) => ({ |
| | | disabled: !values.workOrderId, |
| | | placeholder: values.workOrderId ? 'è¯·éæ©ç产任å¡' : '请å
éæ©ç产订å', |
| | | workOrderId: values.workOrderId, |
| | | }), |
| | | }, |
| | | rules: 'selectRequired', |
| | | }, |
| | | { |
| | | fieldName: 'workstationId', |
| | | fieldName: 'workstationName', |
| | | label: 'å·¥ä½ç«', |
| | | component: markRaw(MdWorkstationSelect), |
| | | component: 'Input', |
| | | componentProps: { |
| | | placeholder: 'è¯·éæ©å·¥ä½ç«', |
| | | placeholder: '请è¾å
¥å·¥ä½ç«åç§°', |
| | | }, |
| | | }, |
| | | { |