diff --git a/apps/web-antd/src/views/erp/purchase/return/data.ts b/apps/web-antd/src/views/erp/purchase/return/data.ts index 6153754bc..48d030114 100644 --- a/apps/web-antd/src/views/erp/purchase/return/data.ts +++ b/apps/web-antd/src/views/erp/purchase/return/data.ts @@ -11,31 +11,55 @@ import { getProductSimpleList } from '#/api/erp/product/product'; import { getSupplierSimpleList } from '#/api/erp/purchase/supplier'; import { getWarehouseSimpleList } from '#/api/erp/stock/warehouse'; import { getSimpleUserList } from '#/api/system/user'; +import { getRangePickerDefaultProps } from '#/utils'; /** 表单的配置项 */ export function useFormSchema(formType: string): VbenFormSchema[] { return [ { - component: 'Input', - componentProps: { - style: { display: 'none' }, - }, fieldName: 'id', - label: 'ID', - hideLabel: true, - formItemClass: 'hidden', + component: 'Input', + dependencies: { + triggerFields: [''], + show: () => false, + }, }, { + fieldName: 'no', + label: '退货单号', component: 'Input', componentProps: { placeholder: '系统自动生成', disabled: true, }, - fieldName: 'no', - label: '退货单号', }, - { + fieldName: 'returnTime', + label: '退货时间', + component: 'DatePicker', + componentProps: { + disabled: formType === 'detail', + placeholder: '选择退货时间', + showTime: true, + format: 'YYYY-MM-DD HH:mm:ss', + valueFormat: 'x', + }, + rules: 'required', + }, + { + fieldName: 'orderNo', + label: '关联订单', + component: 'Input', + formItemClass: 'col-span-1', + rules: 'required', + componentProps: { + placeholder: '请选择关联订单', + disabled: formType === 'detail', + }, + }, + { + fieldName: 'supplierId', + label: '供应商', component: 'ApiSelect', componentProps: { disabled: true, @@ -48,53 +72,39 @@ export function useFormSchema(formType: string): VbenFormSchema[] { value: 'id', }, }, - fieldName: 'supplierId', - label: '供应商', rules: 'required', }, { - fieldName: 'orderNo', - label: '关联订单', - component: 'Input', - formItemClass: 'col-span-1', - rules: 'required', + fieldName: 'purchaseUserId', + label: '采购人员', + component: 'ApiSelect', componentProps: { - disabled: formType === 'detail', - placeholder: '请选择关联订单', + placeholder: '请选择采购人员', + allowClear: true, + showSearch: true, + api: getSimpleUserList, + fieldNames: { + label: 'nickname', + value: 'id', + }, }, }, { - component: 'DatePicker', - componentProps: { - disabled: formType === 'detail', - placeholder: '选择退货时间', - showTime: true, - format: 'YYYY-MM-DD HH:mm:ss', - valueFormat: 'x', - style: { width: '100%' }, - }, - fieldName: 'returnTime', - label: '退货时间', - rules: 'required', - }, - - { + fieldName: 'remark', + label: '备注', component: 'Textarea', componentProps: { placeholder: '请输入备注', - disabled: formType === 'detail', autoSize: { minRows: 1, maxRows: 1 }, - class: 'w-full', + disabled: formType === 'detail', }, - fieldName: 'remark', - label: '备注', formItemClass: 'col-span-2', }, - { + fieldName: 'fileUrl', + label: '附件', component: 'FileUpload', componentProps: { - disabled: formType === 'detail', maxNumber: 1, maxSize: 10, accept: [ @@ -108,69 +118,73 @@ export function useFormSchema(formType: string): VbenFormSchema[] { 'jpeg', 'png', ], - showDescription: true, + showDescription: formType !== 'detail', + disabled: formType === 'detail', }, - fieldName: 'fileUrl', - label: '附件', formItemClass: 'col-span-3', }, { - fieldName: 'product', - label: '产品清单', + fieldName: 'items', + label: '退货产品清单', component: 'Input', formItemClass: 'col-span-3', }, { - component: 'InputNumber', fieldName: 'discountPercent', + label: '优惠率(%)', + component: 'InputNumber', componentProps: { - placeholder: '优惠率', + placeholder: '请输入优惠率', min: 0, max: 100, - disabled: true, precision: 2, - style: { width: '100%' }, }, - - label: '优惠率(%)', + rules: z.number().min(0).optional(), }, { + fieldName: 'discountPrice', + label: '退款优惠', component: 'InputNumber', componentProps: { - placeholder: '付款优惠', precision: 2, formatter: erpPriceInputFormatter, disabled: true, - style: { width: '100%' }, }, - fieldName: 'discountPrice', - label: '付款优惠', }, { + fieldName: 'discountedPrice', + label: '优惠后金额', component: 'InputNumber', componentProps: { placeholder: '优惠后金额', precision: 2, formatter: erpPriceInputFormatter, disabled: true, - style: { width: '100%' }, }, - fieldName: 'discountedPrice', - label: '优惠后金额', + dependencies: { + triggerFields: ['totalPrice', 'otherPrice'], + componentProps: (values) => { + const totalPrice = values.totalPrice || 0; + const otherPrice = values.otherPrice || 0; + values.discountedPrice = totalPrice - otherPrice; + return {}; + }, + }, }, { + fieldName: 'otherPrice', + label: '其他费用', component: 'InputNumber', componentProps: { disabled: formType === 'detail', placeholder: '请输入其他费用', precision: 2, formatter: erpPriceInputFormatter, - style: { width: '100%' }, }, - fieldName: 'otherPrice', - label: '其他费用', }, { + fieldName: 'accountId', + label: '结算账户', component: 'ApiSelect', componentProps: { placeholder: '请选择结算账户', @@ -183,26 +197,25 @@ export function useFormSchema(formType: string): VbenFormSchema[] { value: 'id', }, }, - fieldName: 'accountId', - label: '结算账户', }, { + fieldName: 'totalPrice', + label: '应退金额', component: 'InputNumber', componentProps: { precision: 2, - style: { width: '100%' }, - disabled: true, min: 0, + disabled: true, }, - fieldName: 'totalPrice', - label: '应退金额', rules: z.number().min(0).optional(), }, ]; } -/** 采购订单项表格列定义 */ -export function usePurchaseOrderItemTableColumns(): VxeTableGridOptions['columns'] { +/** 表单的明细表格列 */ +export function useFormItemColumns( + formData?: any[], +): VxeTableGridOptions['columns'] { return [ { type: 'seq', title: '序号', minWidth: 50, fixed: 'left' }, { @@ -219,7 +232,7 @@ export function usePurchaseOrderItemTableColumns(): VxeTableGridOptions['columns }, { field: 'stockCount', - title: '仓库库存', + title: '库存', minWidth: 80, }, { @@ -232,15 +245,27 @@ export function usePurchaseOrderItemTableColumns(): VxeTableGridOptions['columns title: '单位', minWidth: 80, }, + { + field: 'remark', + title: '备注', + minWidth: 150, + slots: { default: 'remark' }, + }, { field: 'inCount', - title: '已入库数量', + title: '已入库', + formatter: 'formatAmount3', minWidth: 120, + fixed: 'right', + visible: formData && formData[0]?.inCount !== undefined, }, { field: 'returnCount', title: '已退货', + formatter: 'formatAmount3', minWidth: 120, + fixed: 'right', + visible: formData && formData[0]?.returnCount !== undefined, }, { field: 'count', @@ -267,7 +292,8 @@ export function usePurchaseOrderItemTableColumns(): VxeTableGridOptions['columns fixed: 'right', field: 'taxPercent', title: '税率(%)', - minWidth: 100, + minWidth: 105, + slots: { default: 'taxPercent' }, }, { fixed: 'right', @@ -283,10 +309,16 @@ export function usePurchaseOrderItemTableColumns(): VxeTableGridOptions['columns minWidth: 120, formatter: 'formatAmount2', }, + { + title: '操作', + width: 50, + fixed: 'right', + slots: { default: 'actions' }, + }, ]; } -/** 采购退货列表的搜索表单 */ +/** 列表的搜索表单 */ export function useGridFormSchema(): VbenFormSchema[] { return [ { @@ -294,7 +326,7 @@ export function useGridFormSchema(): VbenFormSchema[] { label: '退货单号', component: 'Input', componentProps: { - placeholder: '请输入入库单号', + placeholder: '请输入退货单号', allowClear: true, }, }, @@ -318,10 +350,8 @@ export function useGridFormSchema(): VbenFormSchema[] { label: '退货时间', component: 'RangePicker', componentProps: { - placeholder: ['开始时间', '结束时间'], - showTime: true, - format: 'YYYY-MM-DD HH:mm:ss', - valueFormat: 'YYYY-MM-DD HH:mm:ss', + ...getRangePickerDefaultProps(), + allowClear: true, }, }, { @@ -386,18 +416,18 @@ export function useGridFormSchema(): VbenFormSchema[] { { label: '部分退款', value: 1 }, { label: '全部退款', value: 2 }, ], - placeholder: '请选择退货状态', + placeholder: '请选择退款状态', allowClear: true, }, }, { fieldName: 'status', - label: '状态', + label: '审批状态', component: 'Select', componentProps: { - placeholder: '请选择状态', - allowClear: true, options: getDictOptions(DICT_TYPE.ERP_AUDIT_STATUS, 'number'), + placeholder: '请选择审批状态', + allowClear: true, }, }, { @@ -412,7 +442,7 @@ export function useGridFormSchema(): VbenFormSchema[] { ]; } -/** 采购退货列表的字段 */ +/** 列表的字段 */ export function useGridColumns(): VxeTableGridOptions['columns'] { return [ { @@ -428,7 +458,7 @@ export function useGridColumns(): VxeTableGridOptions['columns'] { }, { field: 'productNames', - title: '产品信息', + title: '退货产品信息', showOverflow: 'tooltip', minWidth: 120, }, @@ -441,7 +471,7 @@ export function useGridColumns(): VxeTableGridOptions['columns'] { field: 'returnTime', title: '退货时间', width: 160, - formatter: 'formatDateTime', + formatter: 'formatDate', }, { field: 'creatorName', @@ -467,16 +497,16 @@ export function useGridColumns(): VxeTableGridOptions['columns'] { minWidth: 120, }, { - field: 'noRefundPrice', + field: 'unRefundPrice', title: '未退金额', - minWidth: 120, formatter: ({ row }) => { return `${erpNumberFormatter(row.totalPrice - row.refundPrice, 2)}元`; }, + minWidth: 120, }, { field: 'status', - title: '状态', + title: '审批状态', minWidth: 120, cellRender: { name: 'CellDict', @@ -485,13 +515,13 @@ export function useGridColumns(): VxeTableGridOptions['columns'] { }, { title: '操作', - minWidth: 250, + width: 220, fixed: 'right', slots: { default: 'actions' }, }, ]; } -/** 采购订单列表的搜索表单 */ +/** 列表的搜索表单 */ export function useOrderGridFormSchema(): VbenFormSchema[] { return [ { @@ -501,7 +531,6 @@ export function useOrderGridFormSchema(): VbenFormSchema[] { componentProps: { placeholder: '请输入订单单号', allowClear: true, - disabled: true, }, }, { @@ -524,16 +553,14 @@ export function useOrderGridFormSchema(): VbenFormSchema[] { label: '订单时间', component: 'RangePicker', componentProps: { - placeholder: ['开始时间', '结束时间'], - showTime: true, - format: 'YYYY-MM-DD HH:mm:ss', - valueFormat: 'YYYY-MM-DD HH:mm:ss', + ...getRangePickerDefaultProps(), + allowClear: true, }, }, ]; } -/** 采购订单列表的字段 */ +/** 列表的字段 */ export function useOrderGridColumns(): VxeTableGridOptions['columns'] { return [ { @@ -577,13 +604,13 @@ export function useOrderGridColumns(): VxeTableGridOptions['columns'] { }, { field: 'inCount', - title: '入库数量', + title: '已入库数量', formatter: 'formatAmount3', minWidth: 120, }, { field: 'returnCount', - title: '退货数量', + title: '已退货数量', formatter: 'formatAmount3', minWidth: 120, }, diff --git a/apps/web-antd/src/views/erp/purchase/return/modules/form.vue b/apps/web-antd/src/views/erp/purchase/return/modules/form.vue new file mode 100644 index 000000000..0c22f38de --- /dev/null +++ b/apps/web-antd/src/views/erp/purchase/return/modules/form.vue @@ -0,0 +1,233 @@ + + + diff --git a/apps/web-antd/src/views/erp/purchase/return/modules/item-form.vue b/apps/web-antd/src/views/erp/purchase/return/modules/item-form.vue new file mode 100644 index 000000000..167765eda --- /dev/null +++ b/apps/web-antd/src/views/erp/purchase/return/modules/item-form.vue @@ -0,0 +1,293 @@ + + + diff --git a/apps/web-antd/src/views/erp/purchase/return/modules/select-purchase-order-grid.vue b/apps/web-antd/src/views/erp/purchase/return/modules/purchase-order-grid.vue similarity index 100% rename from apps/web-antd/src/views/erp/purchase/return/modules/select-purchase-order-grid.vue rename to apps/web-antd/src/views/erp/purchase/return/modules/purchase-order-grid.vue diff --git a/apps/web-antd/src/views/erp/purchase/return/modules/select-purchase-order-form.vue b/apps/web-antd/src/views/erp/purchase/return/modules/purchase-order-select.vue similarity index 91% rename from apps/web-antd/src/views/erp/purchase/return/modules/select-purchase-order-form.vue rename to apps/web-antd/src/views/erp/purchase/return/modules/purchase-order-select.vue index 971c1ab17..1add67317 100644 --- a/apps/web-antd/src/views/erp/purchase/return/modules/select-purchase-order-form.vue +++ b/apps/web-antd/src/views/erp/purchase/return/modules/purchase-order-select.vue @@ -7,7 +7,7 @@ import { IconifyIcon } from '@vben/icons'; import { Input, message, Modal } from 'ant-design-vue'; -import SelectPurchaseOrderGrid from './select-purchase-order-grid.vue'; +import PurchaseOrderGrid from './purchase-order-grid.vue'; const props = defineProps({ orderNo: { @@ -65,6 +65,6 @@ const handleOk = () => { :show-confirm-button="true" @ok="handleOk" > - + diff --git a/apps/web-antd/src/views/erp/purchase/return/modules/purchase-return-form.vue b/apps/web-antd/src/views/erp/purchase/return/modules/purchase-return-form.vue deleted file mode 100644 index 1be6b67bf..000000000 --- a/apps/web-antd/src/views/erp/purchase/return/modules/purchase-return-form.vue +++ /dev/null @@ -1,313 +0,0 @@ - - - diff --git a/apps/web-antd/src/views/erp/purchase/return/modules/purchase-return-item-form.vue b/apps/web-antd/src/views/erp/purchase/return/modules/purchase-return-item-form.vue deleted file mode 100644 index c3ec378cc..000000000 --- a/apps/web-antd/src/views/erp/purchase/return/modules/purchase-return-item-form.vue +++ /dev/null @@ -1,261 +0,0 @@ - - -