gaoluyang
13 小时以前 6f35f9dc767e99ad701f7f6e2f5d4c52b6cc1d0f
refactor(wls): 将级联选择组件替换为普通输入框

- 移除到货通知选择弹窗组件 an-select-dialog.vue
- 将 itemreceipt 中的 WmArrivalNoticeSelect、ErpSupplierSelect 替换为 Input
- 将 productissue 中的 ProWorkOrderSelect、ProTaskSelect、MdWorkstationSelect 替换为 Input
已修改4个文件
已删除1个文件
324 ■■■■■ 文件已修改
company.config.ts 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/wls/itemreceipt/data.ts 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/wls/itemreceipt/index.vue 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/wls/itemreceipt/modules/an-select-dialog.vue 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/wls/productissue/data.ts 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
company.config.ts
@@ -23,64 +23,10 @@
    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',
  },
};
src/views/wls/itemreceipt/data.ts
@@ -1,6 +1,5 @@
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';
@@ -8,22 +7,14 @@
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,
@@ -106,23 +97,15 @@
      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: [''],
@@ -130,22 +113,11 @@
      },
    },
    {
      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: '请输入供应商',
      },
    },
    {
@@ -191,11 +163,12 @@
      },
    },
    {
      fieldName: 'vendorId',
      fieldName: 'vendorName',
      label: '供应商',
      component: markRaw(ErpSupplierSelect),
      component: 'Input',
      componentProps: {
        placeholder: '请选择供应商',
        allowClear: true,
        placeholder: '请输入供应商',
      },
    },
    {
src/views/wls/itemreceipt/index.vue
@@ -13,22 +13,15 @@
  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,
});
@@ -84,28 +77,6 @@
  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());
@@ -146,7 +117,6 @@
<template>
  <Page auto-content-height>
    <FormModal @success="handleRefresh" />
    <AnSelectModal @selected="handleArrivalNoticeSelected" />
    <Grid table-title="采购入库单列表">
      <template #toolbar-tools>
@@ -158,13 +128,6 @@
              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'),
src/views/wls/itemreceipt/modules/an-select-dialog.vue
ÎļþÒÑɾ³ý
src/views/wls/productissue/data.ts
@@ -1,6 +1,5 @@
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';
@@ -8,11 +7,7 @@
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';
@@ -20,9 +15,6 @@
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,
@@ -108,46 +100,27 @@
      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: '请输入工作站名称',
      },
    },
    {