diff --git a/README.md b/README.md index 4f12652d0..6795cf0cf 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ form: { searchListPlaceholder: '请选择物料代码', // 输入框占位文本 searchField: 'itemCode', // 查询弹窗赋值字段 searchTitle: '生产线物料关系信息', // 查询弹窗标题 + hiddenFilterButton:true,//是否隐藏筛选按钮 searchAllSchemas: Productionlineitem.allSchemas, // 查询弹窗所需类 searchPage: ProductionlineitemApi.getProductionlineitemPage, // 查询弹窗所需分页方法 searchCondition: [{ diff --git a/src/api/mes/itemRequestDetail/index.ts b/src/api/mes/itemRequestDetail/index.ts new file mode 100644 index 000000000..dd253bc78 --- /dev/null +++ b/src/api/mes/itemRequestDetail/index.ts @@ -0,0 +1,56 @@ +import request from '@/config/axios' + +export interface ItemRequestDetailVO { + deleteTime: Date + id: number + status: string + concurrencyStamp: number + remark: string + deleter: string + requestBillNo: string + itemBasicCode: string + itemCounts: number + itemUom: string + siteId: number +} + +// 查询叫料申请明细列表 +export const getItemRequestDetailPage = async (params) => { + if (params.isSearch) { + delete params.isSearch + const data = {...params} + return await request.post({ url: '/mes/item-request-detail/senior', data }) + } else { + return await request.get({ url: `/mes/item-request-detail/page`, params }) + } +} + +// 查询叫料申请明细详情 +export const getItemRequestDetail = async (id: number) => { + return await request.get({ url: `/mes/item-request-detail/get?id=` + id }) +} + +// 新增叫料申请明细 +export const createItemRequestDetail = async (data: ItemRequestDetailVO) => { + return await request.post({ url: `/mes/item-request-detail/create`, data }) +} + +// 修改叫料申请明细 +export const updateItemRequestDetail = async (data: ItemRequestDetailVO) => { + return await request.put({ url: `/mes/item-request-detail/update`, data }) +} + +// 删除叫料申请明细 +export const deleteItemRequestDetail = async (id: number) => { + return await request.delete({ url: `/mes/item-request-detail/delete?id=` + id }) +} + +// 导出叫料申请明细 Excel +export const exportItemRequestDetail = async (params) => { + return await request.download({ url: `/mes/item-request-detail/export-excel`, params }) +} + +// 下载用户导入模板 +export const importTemplate = () => { + return request.download({ url: '/mes/item-request-detail/get-import-template' }) +} \ No newline at end of file diff --git a/src/api/mes/workScheduling/index.ts b/src/api/mes/workScheduling/index.ts index d17a72c52..7df13e502 100644 --- a/src/api/mes/workScheduling/index.ts +++ b/src/api/mes/workScheduling/index.ts @@ -47,4 +47,26 @@ export const exportWorkScheduling = async (params) => { // 下载用户导入模板 export const importTemplate = () => { return request.download({ url: '/mes/workScheduling/get-import-template' }) -} \ No newline at end of file +} +// 完工 +export const completeHandle = async (data) => { + return await request.post({ url: `/mes/workScheduling/completeHandle`, data }) +} +//报工 +export const reportWorkByProcess = async (data) => { + return await request.post({ url: `/mes/work-scheduling-detail/reportWorkByProcess`, data }) +} +//检查当前节点是否可以完工 +export const getNodePosition = async (params) => { + return await request.get({ url: `/mes/workScheduling/getNodePosition`, params }) +} +//获取当前工序的员工列表 +export const getCurrentWorkerList = async (params) => { + return await request.get({ url: `/mes/workScheduling/getCurrentWorkerList`, params }) +} +//获取当前工单的工序列表 +export const getProcessList = async (params) => { + return await request.get({ url: `/mes/workScheduling/getProcessList`, params }) +} + + diff --git a/src/api/qms/inspectionJob/inspectionJobMain/index.ts b/src/api/qms/inspectionJob/inspectionJobMain/index.ts index 2b59a7401..aca7fd268 100644 --- a/src/api/qms/inspectionJob/inspectionJobMain/index.ts +++ b/src/api/qms/inspectionJob/inspectionJobMain/index.ts @@ -22,6 +22,11 @@ export const createInspectionJobMain = async (data) => { return await request.post({ url: `/qms/inspection-job-main/create`, data }) } +// 暂存检验任务 +export const stagingInspectionJobMain = async (data) => { + return await request.post({ url: `/qms/inspection-job-main/staging`, data }) +} + // 修改检验任务 export const updateInspectionJobMain = async (data) => { return await request.put({ url: `/qms/inspection-job-main/update`, data }) @@ -46,6 +51,7 @@ export const abandonInspectionJobMain = async (id) => { export const closeInspectionJobMain = async (id) => { return await request.put({ url: `/qms/inspection-job-main/close?id=` + id }) } + // 导出检验申请 Excel export const exportInspectionJobMain = async (params) => { return await request.download({ url: `/qms/inspection-job-main/export-excel`, params }) diff --git a/src/api/wms/invoicingcalendar/index.ts b/src/api/wms/invoicingcalendar/index.ts new file mode 100644 index 000000000..fe8ee7e8f --- /dev/null +++ b/src/api/wms/invoicingcalendar/index.ts @@ -0,0 +1,54 @@ +import request from '@/config/axios' + +export interface InvoicingcalendarVO { + id: number + beginDay: string + endDay: string + descriiption: string + available: string + remark: string + extraProperties: string + concurrencyStamp: number + siteId: string +} + +// 查询开票日历列表 +export const getInvoicingcalendarPage = async (params) => { + if (params.isSearch) { + delete params.isSearch + const data = {...params} + return await request.post({ url: '/wms/invoicingcalendar/senior', data }) + } else { + return await request.get({ url: `/wms/invoicingcalendar/page`, params }) + } +} + +// 查询开票日历详情 +export const getInvoicingcalendar = async (id: number) => { + return await request.get({ url: `/wms/invoicingcalendar/get?id=` + id }) +} + +// 新增开票日历 +export const createInvoicingcalendar = async (data: InvoicingcalendarVO) => { + return await request.post({ url: `/wms/invoicingcalendar/create`, data }) +} + +// 修改开票日历 +export const updateInvoicingcalendar = async (data: InvoicingcalendarVO) => { + return await request.put({ url: `/wms/invoicingcalendar/update`, data }) +} + +// 删除开票日历 +export const deleteInvoicingcalendar = async (id: number) => { + return await request.delete({ url: `/wms/invoicingcalendar/delete?id=` + id }) +} + +// 导出开票日历 Excel +export const exportInvoicingcalendar = async (params) => { + return await request.download({ url: `/wms/invoicingcalendar/export-excel`, params }) +} + +// 下载用户导入模板 +export const importTemplate = () => { + return request.download({ url: '/wms/invoicingcalendar/get-import-template' }) +} \ No newline at end of file diff --git a/src/api/wms/productreceiptJobDetail/index.ts b/src/api/wms/productreceiptJobDetail/index.ts index e53490096..33606d2de 100644 --- a/src/api/wms/productreceiptJobDetail/index.ts +++ b/src/api/wms/productreceiptJobDetail/index.ts @@ -53,6 +53,19 @@ export const getProductreceiptJobDetailPageAssemble = async (params) => { } } + +// 查询制品收货任务子列表 +export const getProductreceiptJobDetailPageScarp = async (params) => { + params.type = 'scrap' + if (params.isSearch) { + delete params.isSearch + const data = {...params} + return await request.post({ url: '/wms/productreceipt-job-detail/senior', data }) + } else { + return await request.get({ url: `/wms/productreceipt-job-detail/page`, params }) + } +} + // 查询制品收货任务子详情 export const getProductreceiptJobDetail = async (id: number) => { return await request.get({ url: `/wms/productreceipt-job-detail/get?id=` + id }) diff --git a/src/api/wms/productreceiptRecordDetail/index.ts b/src/api/wms/productreceiptRecordDetail/index.ts index db76ba703..35ba579ed 100644 --- a/src/api/wms/productreceiptRecordDetail/index.ts +++ b/src/api/wms/productreceiptRecordDetail/index.ts @@ -58,6 +58,18 @@ export const getProductreceiptRecordDetailPageAssemble = async (params) => { } } +// 查询制品收货记录子列表 +export const getProductreceiptRecordDetailPageScrap = async (params) => { + params.type = 'scrap' + if (params.isSearch) { + delete params.isSearch + const data = {...params} + return await request.post({ url: '/wms/productreceipt-record-detail/senior', data }) + } else { + return await request.get({ url: `/wms/productreceipt-record-detail/page`, params }) + } +} + // 查询制品收货记录子详情 export const getProductreceiptRecordDetail = async (id: number) => { return await request.get({ url: `/wms/productreceipt-record-detail/get?id=` + id }) diff --git a/src/api/wms/productreceiptRequestDetail/index.ts b/src/api/wms/productreceiptRequestDetail/index.ts index 292cf3600..0b1b75cf3 100644 --- a/src/api/wms/productreceiptRequestDetail/index.ts +++ b/src/api/wms/productreceiptRequestDetail/index.ts @@ -54,6 +54,18 @@ export const getProductreceiptRequestDetailPageAssemble = async (params) => { } } +// 查询报废收货申请子列表 +export const getProductreceiptRequestDetailPageScrap = async (params) => { + params.type = 'scrap' + if (params.isSearch) { + delete params.isSearch + const data = {...params} + return await request.post({ url: '/wms/productreceipt-request-detail/senior', data }) + } else { + return await request.get({ url: `/wms/productreceipt-request-detail/page`, params }) + } +} + // 查询制品收货申请子详情 export const getProductreceiptRequestDetail = async (id: number) => { return await request.get({ url: `/wms/productreceipt-request-detail/get?id=` + id }) diff --git a/src/api/wms/relegateRequest/index.ts b/src/api/wms/relegateRequest/index.ts new file mode 100644 index 000000000..a26e8c360 --- /dev/null +++ b/src/api/wms/relegateRequest/index.ts @@ -0,0 +1,73 @@ +import request from '@/config/axios' + +export interface RelegateRequestVO { + id: number + itemCode: string + downItemCode: string + businessType: string + uom: string + qty: number + fromBatch: string + fromPackingNumber: string + fromLocationCode: string + fromAreaTypes: string + fromAreaCodes: string + fromWarehouseCode: string + toPackingNumber: string + toBatch: string + toLocationCode: string + toWarehouseCode: string + toAreaTypes: string + toAreaCodes: string + number: string + available: string + remark: string + departmentCode: string + siteId: number + extraProperties: string + status: string + concurrencyStamp: number + serialNumber: string + ruleUserId: number +} + +// 查询物料降级信息列表 +export const getRelegateRequestPage = async (params) => { + if (params.isSearch) { + delete params.isSearch + const data = {...params} + return await request.post({ url: '/wms/relegate-request/senior', data }) + } else { + return await request.get({ url: `/wms/relegate-request/page`, params }) + } +} + +// 查询物料降级信息详情 +export const getRelegateRequest = async (id: number) => { + return await request.get({ url: `/wms/relegate-request/get?id=` + id }) +} + +// 新增物料降级信息 +export const createRelegateRequest = async (data: RelegateRequestVO) => { + return await request.post({ url: `/wms/relegate-request/create`, data }) +} + +// 修改物料降级信息 +export const updateRelegateRequest = async (data: RelegateRequestVO) => { + return await request.put({ url: `/wms/relegate-request/update`, data }) +} + +// 删除物料降级信息 +export const deleteRelegateRequest = async (id: number) => { + return await request.delete({ url: `/wms/relegate-request/delete?id=` + id }) +} + +// 导出物料降级信息 Excel +export const exportRelegateRequest = async (params) => { + return await request.download({ url: `/wms/relegate-request/export-excel`, params }) +} + +// 下载用户导入模板 +export const importTemplate = () => { + return request.download({ url: '/wms/relegate-request/get-import-template' }) +} \ No newline at end of file diff --git a/src/api/wms/saleShipmentDetailRecord/index.ts b/src/api/wms/saleShipmentDetailRecord/index.ts new file mode 100644 index 000000000..4f22239d0 --- /dev/null +++ b/src/api/wms/saleShipmentDetailRecord/index.ts @@ -0,0 +1,65 @@ +import request from '@/config/axios' + +export interface SaleShipmentDetailRecordVO { + id: number + soNumber: string + soLine: string + fromOwnerCode: string + packingNumber: string + batch: string + inventoryStatus: string + fromLocationCode: string + masterId: number + number: string + itemCode: string + itemName: string + itemDesc1: string + itemDesc2: string + projectCode: string + qty: number + uom: string + remark: string + concurrencyStamp: string + siteId: number +} + +// 查询销售发运记录子列表 +export const getSaleShipmentDetailRecordPage = async (params) => { + if (params.isSearch) { + delete params.isSearch + const data = {...params} + return await request.post({ url: '/wms/sale-shipment-detail-record/senior', data }) + } else { + return await request.get({ url: `/wms/sale-shipment-detail-record/page`, params }) + } +} + +// 查询销售发运记录子详情 +export const getSaleShipmentDetailRecord = async (id: number) => { + return await request.get({ url: `/wms/sale-shipment-detail-record/get?id=` + id }) +} + +// 新增销售发运记录子 +export const createSaleShipmentDetailRecord = async (data: SaleShipmentDetailRecordVO) => { + return await request.post({ url: `/wms/sale-shipment-detail-record/create`, data }) +} + +// 修改销售发运记录子 +export const updateSaleShipmentDetailRecord = async (data: SaleShipmentDetailRecordVO) => { + return await request.put({ url: `/wms/sale-shipment-detail-record/update`, data }) +} + +// 删除销售发运记录子 +export const deleteSaleShipmentDetailRecord = async (id: number) => { + return await request.delete({ url: `/wms/sale-shipment-detail-record/delete?id=` + id }) +} + +// 导出销售发运记录子 Excel +export const exportSaleShipmentDetailRecord = async (params) => { + return await request.download({ url: `/wms/sale-shipment-detail-record/export-excel`, params }) +} + +// 下载用户导入模板 +export const importTemplate = () => { + return request.download({ url: '/wms/sale-shipment-detail-record/get-import-template' }) +} \ No newline at end of file diff --git a/src/api/wms/saleShipmentMain/index.ts b/src/api/wms/saleShipmentMain/index.ts index e03719231..c8768bea2 100644 --- a/src/api/wms/saleShipmentMain/index.ts +++ b/src/api/wms/saleShipmentMain/index.ts @@ -61,4 +61,34 @@ export const exportSaleShipmentMain = async (params) => { // 下载用户导入模板 export const importTemplate = () => { return request.download({ url: '/wms/sale-shipment-main-request/get-import-template' }) +} + +// 关闭-销售发运申请 +export const closeSaleShipmentMain = async (id) => { + return await request.put({ url: `/wms/sale-shipment-main-request/close?id=` + id }) +} + +// 重新添加-销售发运申请 +export const reAddSaleShipmentMain = async (id) => { + return await request.put({ url: `/wms/sale-shipment-main-request/reAdd?id=` + id }) +} + +// 提交审批-销售发运申请 +export const submitSaleShipmentMain = async (id) => { + return await request.put({ url: `/wms/sale-shipment-main-request/submit?id=` + id }) +} + +// 审批驳回-销售发运申请 +export const refusedSaleShipmentMain = async (id) => { + return await request.put({ url: `/wms/sale-shipment-main-request/refused?id=` + id }) +} + +// 审批通过-销售发运申请 +export const agreeSaleShipmentMain = async (id) => { + return await request.put({ url: `/wms/sale-shipment-main-request/agree?id=` + id }) +} + +// 处理-销售发运申请 +export const handleSaleShipmentMain = async (id) => { + return await request.put({ url: `/wms/sale-shipment-main-request/handle?id=` + id }) } \ No newline at end of file diff --git a/src/api/wms/saleShipmentMainRecord/index.ts b/src/api/wms/saleShipmentMainRecord/index.ts new file mode 100644 index 000000000..60a87d971 --- /dev/null +++ b/src/api/wms/saleShipmentMainRecord/index.ts @@ -0,0 +1,56 @@ +import request from '@/config/axios' + +export interface SaleShipmentMainRecordVO { + id: number + requestNumber: string + customerCode: string + invoiceTime: Date + executeTime: Date + available: string + departmentCode: string + number: string + businessType: string + extraProperties: string + siteId: string +} + +// 查询销售发运记录主列表 +export const getSaleShipmentMainRecordPage = async (params) => { + if (params.isSearch) { + delete params.isSearch + const data = {...params} + return await request.post({ url: '/wms/sale-shipment-main-record/senior', data }) + } else { + return await request.get({ url: `/wms/sale-shipment-main-record/page`, params }) + } +} + +// 查询销售发运记录主详情 +export const getSaleShipmentMainRecord = async (id: number) => { + return await request.get({ url: `/wms/sale-shipment-main-record/get?id=` + id }) +} + +// 新增销售发运记录主 +export const createSaleShipmentMainRecord = async (data: SaleShipmentMainRecordVO) => { + return await request.post({ url: `/wms/sale-shipment-main-record/create`, data }) +} + +// 修改销售发运记录主 +export const updateSaleShipmentMainRecord = async (data: SaleShipmentMainRecordVO) => { + return await request.put({ url: `/wms/sale-shipment-main-record/update`, data }) +} + +// 删除销售发运记录主 +export const deleteSaleShipmentMainRecord = async (id: number) => { + return await request.delete({ url: `/wms/sale-shipment-main-record/delete?id=` + id }) +} + +// 导出销售发运记录主 Excel +export const exportSaleShipmentMainRecord = async (params) => { + return await request.download({ url: `/wms/sale-shipment-main-record/export-excel`, params }) +} + +// 下载用户导入模板 +export const importTemplate = () => { + return request.download({ url: '/wms/sale-shipment-main-record/get-import-template' }) +} \ No newline at end of file diff --git a/src/api/wms/supplierinvoiceRequestMain/index.ts b/src/api/wms/supplierinvoiceRequestMain/index.ts index ced9da32c..89ef00539 100644 --- a/src/api/wms/supplierinvoiceRequestMain/index.ts +++ b/src/api/wms/supplierinvoiceRequestMain/index.ts @@ -56,6 +56,12 @@ export const deleteSupplierinvoiceRequestMain = async (id: number) => { return await request.delete({ url: `/wms/supplierinvoice-request-main/delete?id=` + id }) } +// 校验控制是否可以开票逻辑 +export const checkInvoicingCalendar = async (params) => { + return await request.get({ url: `/wms/supplierinvoice-request-main/checkInvoicingCalendar`, params }) +} + + // 打开供应商发货申请主 export const opeSupplierinvoiceRequestMain = async (id: number) => { return await request.post({ url: `/wms/supplierinvoice-request-main/open?id=` + id }) @@ -123,4 +129,10 @@ export const exportSupplierinvoiceRequestDetail = async (params) => { // 下载用户导入模板 export const importTemplate = () => { return request.download({ url: '/wms/supplierinvoice-request-main/get-import-template' }) -} \ No newline at end of file +} + +// 根据角色编码获取用户列表 +export const queryUserInfoByRoleCode = async (params) => { + return await request.get({ url: `/wms/supplierinvoice-request-main/queryUserInfoByRoleCodePage`, params }) + +} diff --git a/src/components/Annex/src/Annex.vue b/src/components/Annex/src/Annex.vue index ef289c6a8..7d5f0e142 100644 --- a/src/components/Annex/src/Annex.vue +++ b/src/components/Annex/src/Annex.vue @@ -3,7 +3,7 @@
-
@@ -16,17 +16,20 @@
{{ item.size }}KB
来自 {{ item.nickname }}
- - + + +
{{ formatDate(item.createTime) }}
+ diff --git a/src/components/BasicForm/src/BasicForm.vue b/src/components/BasicForm/src/BasicForm.vue index 3c2a924e4..cc20819b4 100644 --- a/src/components/BasicForm/src/BasicForm.vue +++ b/src/components/BasicForm/src/BasicForm.vue @@ -15,6 +15,7 @@ :schema="formSchema" :is-col="true" @opensearchTable="opensearchTable" + @hiddenFilterButton="hiddenSearchTableFilterButton" @clearSearchInput="clearSearchInput" @onChange="onChange" @onBlur="onBlur" @@ -433,7 +434,9 @@ const opensearchTable = ( searchDetailSchemas ) } - +const hiddenSearchTableFilterButton = ()=>{ + searchTableRef.value.hiddenFilterButton() +} const clearSearchInput = (field)=>{ emit('clearSearchInput',field) } diff --git a/src/components/Detail/src/Detail.vue b/src/components/Detail/src/Detail.vue index d3308ecf0..9ce1534df 100644 --- a/src/components/Detail/src/Detail.vue +++ b/src/components/Detail/src/Detail.vue @@ -103,6 +103,8 @@ ({ label: '附件', showDownload:false, + showPreview:false, hiddenDelete:false }) }, @@ -460,10 +463,14 @@ const getFileList = async () => { } } // 获取其他附件列表篇 -const getAnnexFileList = async (row:id) => { - console.log('getAnnexFileList') +const getAnnexFileList = async (row) => { props.annexTable?.forEach(async (item) => { let requstData = {...remarksData.data,tableName: item?.tableName} + if(item?.queryParams){ + item?.queryParams?.forEach(queryItem => { + requstData[queryItem.queryField] = row[queryItem.rowField] + }); + } const annexList = await FileApi.getFileList(requstData) const annexData = annexTableData.value.find(annex=>annex.label === item.label) if(annexData){ @@ -476,6 +483,8 @@ const getAnnexFileList = async (row:id) => { annexList, hasSubDetail:item.hasSubDetail||false, subDetailTableData:item.subDetailTableData, + fileType:item.fileType||['apk','doc', 'xls', 'ppt', 'txt', 'pdf','png', 'jpg', 'jpeg'], + showPreview:item.showPreview||false, // 是否展示预览按钮 showDownload:item.showDownload||false, // 是否展示下载按钮 hiddenDelete:item.hiddenDelete || false, // 是否展示删除按钮 }) diff --git a/src/components/Form/src/Form.vue b/src/components/Form/src/Form.vue index fdfc8441c..ab9d65aa2 100644 --- a/src/components/Form/src/Form.vue +++ b/src/components/Form/src/Form.vue @@ -55,7 +55,7 @@ export default defineComponent({ vLoading: propTypes.bool.def(false), labelPosition: propTypes.string.def('left'), }, - emits: ['register','opensearchTable','clearSearchInput', 'onChange', 'onBlur','onEnter'], + emits: ['register','opensearchTable','clearSearchInput', 'onChange', 'onBlur','onEnter','hiddenFilterButton'], setup(props, { slots, expose, emit }) { // element form 实例 const elFormRef = ref>() @@ -173,8 +173,15 @@ export default defineComponent({ // 如果是 Divider 组件,需要自己占用一行 const isDivider = item.component === 'Divider' const Com = componentMap['Divider'] as ReturnType + let labelName = item?.label || '' + if(item?.label){ + labelName = t(`ts.${item?.label}`) + if(labelName === 'ts.' + item?.label){ + labelName = item?.label + } + } return isDivider ? ( - {item?.label} + {labelName} ) : isCol ? ( // 如果需要栅格,需要包裹 ElCol {renderFormItem(item)} @@ -218,13 +225,28 @@ export default defineComponent({ const formItemSlots: Recordable = setFormItemSlots(slots, item.field) // 如果有 labelMessage,自动使用插槽渲染 if (item?.labelMessage) { + let labelName = item.label || '' + if(item.label){ + labelName = t(`ts.${item.label}`) + if(labelName === 'ts.' + item.label){ + labelName = item.label + } + } + + let labelMessage = item.labelMessage || '' + if(item.labelMessage){ + labelMessage = t(`ts.${item.labelMessage}`) + if(labelMessage === 'ts.' + item.labelMessage){ + labelMessage = item.labelMessage + } + } formItemSlots.label = () => { return ( <> - {item.label} + {labelName} {{ - content: () => , + content: () => , default: () => ( { return ( <> - { + { if(event.keyCode === 13){ //回车 emit('onEnter',item.field,formModel.value[item.field],event) @@ -278,7 +299,14 @@ export default defineComponent({ item?.componentProps?.multiple, item?.componentProps?.isConcatDetailSchemas, item?.componentProps?.searchDetailSchemas, - )}}/> + ) + + //隐藏筛选按钮 + if(item?.componentProps?.hiddenFilterButton){ + emit('hiddenFilterButton') + } + + }}/> ) } @@ -286,7 +314,7 @@ export default defineComponent({ formItemSlotsSearchList[item.field] = () => { return ( <> - { + { if(event.keyCode === 13){ //回车 emit('onEnter',item.field,formModel.value[item.field],event) @@ -316,7 +344,12 @@ export default defineComponent({ item?.componentProps?.multiple, item?.componentProps?.isConcatDetailSchemas, item?.componentProps?.searchDetailSchemas, - )}}/> + ) + //隐藏筛选按钮 + if(item?.componentProps?.hiddenFilterButton){ + emit('hiddenFilterButton') + } + }}/> ) } diff --git a/src/components/Form/src/components/useRenderSelect.tsx b/src/components/Form/src/components/useRenderSelect.tsx index 59b72e687..4a8a18a79 100644 --- a/src/components/Form/src/components/useRenderSelect.tsx +++ b/src/components/Form/src/components/useRenderSelect.tsx @@ -3,6 +3,7 @@ import { ComponentOptions } from '@/types/components' import { ElOption, ElOptionGroup } from 'element-plus' import { getSlot } from '@/utils/tsxHelper' import { Slots } from 'vue' +const { t } = useI18n() export const useRenderSelect = (slots: Slots) => { // 渲染 select options @@ -33,11 +34,16 @@ export const useRenderSelect = (slots: Slots) => { const valueAlias = item?.componentProps?.optionsAlias?.valueField const { label, value, ...other } = option + const zhName = labelAlias ? option[labelAlias] : label;//中文名称 + let labelName = t(`ts.${zhName}`) + if(labelName === 'ts.' + zhName){ + labelName = zhName + } return ( {{ diff --git a/src/components/ImportForm/src/ImportForm.vue b/src/components/ImportForm/src/ImportForm.vue index 29ed5d067..03c91faa9 100644 --- a/src/components/ImportForm/src/ImportForm.vue +++ b/src/components/ImportForm/src/ImportForm.vue @@ -1,6 +1,6 @@ @@ -81,7 +82,8 @@ import * as defaultButtons from '@/utils/disposition/defaultButtons' import TableHead from '@/components/TableHead/src/TableHead.vue' import ImportForm from '@/components/ImportForm/src/ImportForm.vue' import Detail from './components/Detail.vue' -import { async } from '@antv/x6/lib/registry/marker/async' +import Report from './components/report.vue' +import Finish from './components/finish.vue' defineOptions({ name: 'MesWorkScheduling' }) @@ -167,14 +169,18 @@ const buttonBaseClick = (val, item) => { // FINISHED("9", "已完成"); // 列表-操作按钮 const butttondata=(row) =>{ return [ - defaultButtons.mainListEditBtn({label:"调序",hasPermi:'mes:workScheduling:update'}), // 编辑 + defaultButtons.mainListEditBtn({label:"调序",hide: isShowMainButton(row,['-1','0','3']),hasPermi:'mes:workScheduling:update'}), // 编辑 //defaultButtons.mainListDeleteBtn({hasPermi:'mes:workScheduling:delete'}), // 删除 defaultButtons.mainListHandleBtn({label:"终止",name:'terminate',hide: isShowMainButton(row,['-1','0']),hasPermi:'mes:workScheduling:update'}), // defaultButtons.mainListHandleBtn({label:"暂停",name:'pause',hide: isShowMainButton(row,['1']),hasPermi:'mes:workScheduling:update'}), defaultButtons.mainListHandleBtn({label:"恢复",name:'resume',hide: isShowMainButton(row,['3']),hasPermi:'mes:workScheduling:update'}), - //defaultButtons.mainListHandleBtn({label:"变更",name:'change', hasPermi:'mes:workScheduling:update'}), // + defaultButtons.mainListHandleBtn({label:"开工",name:'start',hide: isShowMainButton(row,['0']),hasPermi:'mes:workScheduling:update'}), + defaultButtons.mainListHandleBtn({label:"报工",name:'report',hide: isShowMainButton(row,['1'] ),hasPermi:'mes:workScheduling:update'}), + defaultButtons.mainListHandleBtn({label:"完工",name:'finish',hide: isShowMainButton(row,['1']),hasPermi:'mes:workScheduling:update'}), + defaultButtons.mainListHandleBtn({label:"叫料",name:'callMaterial',hide: isShowMainButton(row,['1']),hasPermi:'mes:workScheduling:update'}), ]} - +const reportRef=ref() +const reportFinishRef=ref() // 列表-操作按钮事件 const buttonTableClick = async (val, row) => { if (val == 'edit') { // 编辑 @@ -185,7 +191,16 @@ const buttonTableClick = async (val, row) => { changeBillStatus(row,"3") }else if (val == 'resume') { // 恢复 changeBillStatus(row,"1") + }else if(val=='start'){ + changeBillStatus(row,"1") + }else if(val=='report'){ + reportRef.value.openDetail(row,"报工") + }else if(val=='finish'){ + finishReport(row) + } else if(val=='callMaterial'){ + } + getList() } /** 添加/修改操作 */ @@ -193,7 +208,20 @@ const basicFormRef = ref() const openForm = (type: string, row?: any) => { basicFormRef.value.open(type, row) } - +//完工报工 +const finishReport=async(row)=>{ + let params={ + planDayCode:row.planMasterCode, + processCode:row.workingNode + } + //console.log("workscheduling-finishReport-213",row) + let res=await WorkSchedulingApi.getNodePosition(params) + if(res==='end'){ + reportFinishRef.value.openDetail(row,"完工") + }else{ + message.alert("当前工序不是完工工序,不能进行完工操作!") + } +} // form表单提交 const formsSuccess = async (formType,data) => { var isHave =WorkScheduling.allSchemas.formSchema.some(function (item) { @@ -264,7 +292,9 @@ const importTemplateData = reactive({ const importSuccess = () => { getList() } - +const handleClose=()=>{ + getList() +} // 筛选提交 const searchFormClick = (searchData) => { tableObject.params = { diff --git a/src/views/mes/workScheduling/workScheduling.data.ts b/src/views/mes/workScheduling/workScheduling.data.ts index 29dde4d40..890ceff4b 100644 --- a/src/views/mes/workScheduling/workScheduling.data.ts +++ b/src/views/mes/workScheduling/workScheduling.data.ts @@ -118,7 +118,8 @@ export const WorkScheduling = useCrudSchemas(reactive([ }, { label: '执行状态', - field: 'flagDo', + // field: 'flagDo', + field: 'status', sort: 'custom', isSearch: true, isForm:false, @@ -163,8 +164,9 @@ export const WorkScheduling = useCrudSchemas(reactive([ label: '操作', field: 'action', isForm: false, + width: '220px', table: { - width: 150, + width: 'wrapContent', fixed: 'right' } } @@ -194,7 +196,7 @@ export const WorkSchedulingDetail = useCrudSchemas(reactive([ isForm:false, isDetail:false, }, - + { label: '创建时间', field: 'createTime', @@ -295,7 +297,7 @@ export const WorkSchedulingDetail = useCrudSchemas(reactive([ }, sort: 'custom', }, - + { label: '计划数量', field: 'planCount', @@ -359,7 +361,7 @@ export const WorkSchedulingDetail = useCrudSchemas(reactive([ sort: 'custom', isSearch: true, }, - + { label: '生产人', field: 'receivePerson', diff --git a/src/views/qms/basicDataManage/counter/counter.data.ts b/src/views/qms/counter/counter.data.ts similarity index 100% rename from src/views/qms/basicDataManage/counter/counter.data.ts rename to src/views/qms/counter/counter.data.ts diff --git a/src/views/qms/basicDataManage/counter/index.vue b/src/views/qms/counter/index.vue similarity index 100% rename from src/views/qms/basicDataManage/counter/index.vue rename to src/views/qms/counter/index.vue diff --git a/src/views/qms/basicDataManage/dynamicRule/dynamicRule.data.ts b/src/views/qms/dynamicRule/dynamicRule.data.ts similarity index 100% rename from src/views/qms/basicDataManage/dynamicRule/dynamicRule.data.ts rename to src/views/qms/dynamicRule/dynamicRule.data.ts diff --git a/src/views/qms/basicDataManage/dynamicRule/index.vue b/src/views/qms/dynamicRule/index.vue similarity index 100% rename from src/views/qms/basicDataManage/dynamicRule/index.vue rename to src/views/qms/dynamicRule/index.vue diff --git a/src/views/qms/inspection/inspectionJob/addForm.vue b/src/views/qms/inspectionJob/addForm.vue similarity index 100% rename from src/views/qms/inspection/inspectionJob/addForm.vue rename to src/views/qms/inspectionJob/addForm.vue diff --git a/src/views/qms/inspection/inspectionJob/detail.vue b/src/views/qms/inspectionJob/detail.vue similarity index 100% rename from src/views/qms/inspection/inspectionJob/detail.vue rename to src/views/qms/inspectionJob/detail.vue diff --git a/src/views/qms/inspection/inspectionJob/index.vue b/src/views/qms/inspectionJob/index.vue similarity index 98% rename from src/views/qms/inspection/inspectionJob/index.vue rename to src/views/qms/inspectionJob/index.vue index 1c3b1f33b..dcc7d81b3 100644 --- a/src/views/qms/inspection/inspectionJob/index.vue +++ b/src/views/qms/inspectionJob/index.vue @@ -59,7 +59,7 @@ diff --git a/src/views/wms/basicDataManage/itemManage/relegateRequest/relegateRequest.data.ts b/src/views/wms/basicDataManage/itemManage/relegateRequest/relegateRequest.data.ts new file mode 100644 index 000000000..d5dee49f8 --- /dev/null +++ b/src/views/wms/basicDataManage/itemManage/relegateRequest/relegateRequest.data.ts @@ -0,0 +1,243 @@ +import type { CrudSchema } from '@/hooks/web/useCrudSchemas' +import { dateFormatter } from '@/utils/formatTime' + +import * as ItembasicApi from '@/api/wms/itembasic' +import { Itembasic } from '@/views/wms/basicDataManage/itemManage/itembasic/itembasic.data' + +// 表单校验 +export const RelegateRequestRules = reactive({ + itemCode: [required], + downItemCode: [required], + businessType: [required], + available: [required], + departmentCode: [required], + concurrencyStamp: [required], +}) + +export const RelegateRequest = useCrudSchemas(reactive([ + { + label: '单据号', + field: 'number', + sort: 'custom', + isSearch: true, + }, + { + label: '物料代码', + field: 'itemCode', + sort: 'custom', + isSearch: true, + form: { + componentProps: { + isSearchList: true, + searchListPlaceholder: '请选择物料代码', + searchField: 'itemCode', + searchTitle: '客户物料基础信息', + searchAllSchemas: Itembasic.allSchemas, + searchPage: ItembasicApi.getItembasicPage, + searchCondition: [{ + key: 'available', + value: 'TRUE', + isMainValue: false + }] + } + } + }, + { + label: '降级后物料代码', + field: 'downItemCode', + sort: 'custom', + isSearch: true, + }, + { + label: '计量单位', + field: 'uom', + sort: 'custom', + form: { + componentProps: { + disabled: true, + } + }, + }, + { + label: '数量', + field: 'qty', + sort: 'custom', + }, + { + label: '从批次', + field: 'fromBatch', + sort: 'custom', + form: { + componentProps: { + disabled: true, + } + }, + }, + { + label: '从包装号', + field: 'fromPackingNumber', + sort: 'custom', + form: { + componentProps: { + disabled: true, + } + }, + }, + { + label: '从库位代码', + field: 'fromLocationCode', + sort: 'custom', + form: { + componentProps: { + disabled: true, + } + }, + }, + { + label: '从库区类型', + field: 'fromAreaTypes', + sort: 'custom', + isForm:false, + }, + { + label: '从库区代码', + field: 'fromAreaCodes', + sort: 'custom', + isForm:false, + }, + { + label: '从仓库代码', + field: 'fromWarehouseCode', + sort: 'custom', + isForm:false, + }, + { + label: '到包装号', + field: 'toPackingNumber', + sort: 'custom', + }, + { + label: '到批次', + field: 'toBatch', + sort: 'custom', + }, + { + label: '到库位代码', + field: 'toLocationCode', + sort: 'custom', + }, + { + label: '到仓库代码', + field: 'toWarehouseCode', + sort: 'custom', + isForm:false, + }, + { + label: '到库区类型', + field: 'toAreaTypes', + sort: 'custom', + isForm:false, + }, + { + label: '到库区代码', + field: 'toAreaCodes', + sort: 'custom', + isForm:false, + }, + { + label: '是否可用', + field: 'available', + sort: 'custom', + isForm:false, + }, + { + label: '备注', + field: 'remark', + sort: 'custom', + }, + { + label: '部门', + field: 'departmentCode', + sort: 'custom', + isForm:false, + }, + { + label: '地点ID', + field: 'siteId', + sort: 'custom', + form: { + component: 'InputNumber', + value: 0 + }, + isForm:false, + }, + { + label: '扩展属性', + field: 'extraProperties', + sort: 'custom', + isForm:false, + }, + { + label: '创建时间', + field: 'createTime', + sort: 'custom', + formatter: dateFormatter, + search: { + component: 'DatePicker', + componentProps: { + valueFormat: 'YYYY-MM-DD HH:mm:ss', + type: 'daterange', + defaultTime: [new Date('1 00:00:00'), new Date('1 23:59:59')] + } + }, + isForm: false, + }, + { + label: '状态', + field: 'status', + dictType: DICT_TYPE.REQUEST_STATUS, + dictClass: 'string', + isSearch: true, + isForm: false, + isTable: true, + sort: 'custom', + table: { + width: 150 + }, + }, + { + label: '并发乐观锁', + field: 'concurrencyStamp', + sort: 'custom', + isForm:false, + form: { + component: 'InputNumber', + value: 0 + }, + }, + { + label: '工作流流水号', + field: 'serialNumber', + isForm:false, + sort: 'custom', + }, + { + label: '权限所属人员id', + field: 'ruleUserId', + sort: 'custom', + isForm:false, + form: { + component: 'InputNumber', + value: 0 + }, + }, + { + label: '操作', + field: 'action', + isForm: false, + table: { + width: 150, + fixed: 'right' + } + } +])) diff --git a/src/views/wms/basicDataManage/supplierManage/purchaseprice/index.vue b/src/views/wms/basicDataManage/supplierManage/purchaseprice/index.vue index 0aac7864e..02bca4f0b 100644 --- a/src/views/wms/basicDataManage/supplierManage/purchaseprice/index.vue +++ b/src/views/wms/basicDataManage/supplierManage/purchaseprice/index.vue @@ -28,7 +28,7 @@ v-model:sort="tableObject.sort" > @@ -183,7 +183,7 @@ const formsSuccess = async (formType,data) => { }); if(isHave){ if(data.activeTime && data.expireTime && data.activeTime >=data.expireTime){ - message.error('失效时间要大于生效时间') + message.error(t('ts.失效时间要大于生效时间')) return; } } @@ -239,7 +239,7 @@ const handleExport = async () => { // 发起导出 exportLoading.value = true const data = await PurchasepriceApi.exportPurchaseprice(tableObject.params) - download.excel(data, '采购价格单.xlsx') + download.excel(data, `${t('ts.采购价格单')}.xlsx`) } catch { } finally { exportLoading.value = false @@ -254,7 +254,7 @@ const handleImport = () => { // 导入附件弹窗所需的参数 const importTemplateData = reactive({ templateUrl: '', - templateTitle: '采购价格单导入模版.xlsx' + templateTitle: `${t('ts.采购价格单导入模版')}.xlsx` }) // 导入成功之后 const importSuccess = () => { diff --git a/src/views/wms/basicDataManage/supplierManage/supplier/index.vue b/src/views/wms/basicDataManage/supplierManage/supplier/index.vue index 9ed10c768..896737aac 100644 --- a/src/views/wms/basicDataManage/supplierManage/supplier/index.vue +++ b/src/views/wms/basicDataManage/supplierManage/supplier/index.vue @@ -174,7 +174,7 @@ const formsSuccess = async (formType, data) => { }) if (isHave) { if (data.activeTime && data.expireTime && data.activeTime >= data.expireTime) { - message.error('失效时间要大于生效时间') + message.error(t('ts.失效时间要大于生效时间')) return } } @@ -221,7 +221,7 @@ const handleExport = async () => { // 发起导出 exportLoading.value = true const data = await SupplierApi.exportSupplier(tableObject.params) - download.excel(data, '供应商.xlsx') + download.excel(data, `${t('ts.供应商')}.xlsx`) } catch { } finally { exportLoading.value = false @@ -236,7 +236,7 @@ const handleImport = () => { // 导入附件弹窗所需的参数 const importTemplateData = reactive({ templateUrl: '', - templateTitle: '供应商导入模版.xlsx' + templateTitle: `${t('ts.供应商导入模版')}.xlsx` }) // 导入成功之后 const importSuccess = () => { diff --git a/src/views/wms/basicDataManage/supplierManage/supplieritem/index.vue b/src/views/wms/basicDataManage/supplierManage/supplieritem/index.vue index e6c8c9642..b3c637e76 100644 --- a/src/views/wms/basicDataManage/supplierManage/supplieritem/index.vue +++ b/src/views/wms/basicDataManage/supplierManage/supplieritem/index.vue @@ -28,7 +28,7 @@ v-model:sort="tableObject.sort" > @@ -182,7 +182,7 @@ const formsSuccess = async (formType,data) => { }); if(isHave){ if(data.activeTime && data.expireTime && data.activeTime >=data.expireTime){ - message.error('失效时间要大于生效时间') + message.error(t('ts.失效时间要大于生效时间')) return; } } @@ -238,7 +238,7 @@ const handleExport = async () => { // 发起导出 exportLoading.value = true const data = await SupplieritemApi.exportSupplieritem(tableObject.params) - download.excel(data, '供应商物料.xlsx') + download.excel(data, `${t('ts.供应商物料')}.xlsx`) } catch { } finally { exportLoading.value = false @@ -253,7 +253,7 @@ const handleImport = () => { // 导入附件弹窗所需的参数 const importTemplateData = reactive({ templateUrl: '', - templateTitle: '供应商物料导入模版.xlsx' + templateTitle: `${t('ts.供应商物料导入模版')}.xlsx` }) // 导入成功之后 const importSuccess = () => { diff --git a/src/views/wms/deliversettlementManage/deliverplan/saleMain/saleMain.data.ts b/src/views/wms/deliversettlementManage/deliverplan/saleMain/saleMain.data.ts index 4a5107150..28c996130 100644 --- a/src/views/wms/deliversettlementManage/deliverplan/saleMain/saleMain.data.ts +++ b/src/views/wms/deliversettlementManage/deliverplan/saleMain/saleMain.data.ts @@ -4,6 +4,9 @@ import { dateFormatter,dateFormatter2 } from '@/utils/formatTime' import * as CustomerApi from '@/api/wms/customer' import { Customer } from '@/views/wms/basicDataManage/customerManage/customer/customer.data' +import * as PackageunitApi from '@/api/wms/packageunit' +import { Packageunit } from '@/views/wms/basicDataManage/itemManage/packageunit/packageunit.data' + import * as ItembasicApi from '@/api/wms/itembasic' import { Itembasic } from '@/views/wms/basicDataManage/itemManage/itembasic/itembasic.data' @@ -357,15 +360,28 @@ export const SaleDetail = useCrudSchemas(reactive([ { label: '包装规格', field: 'packUnit', - // dictType: DICT_TYPE.PACK_UNIT, - // dictClass: 'string', - isTable: true, sort: 'custom', table: { width: 150 }, - tableForm: { - type: 'Select' + tableForm:{ + isInpuFocusShow: true, // 开启查询弹窗 + searchListPlaceholder: '请选择包装规格代码', + searchField: 'code', + searchTitle: '包装规格信息', + searchAllSchemas: Packageunit.allSchemas, // 查询弹窗所需类 + searchPage: PackageunitApi.getPackageunitPage, // 查询弹窗所需分页方法 + }, + form: { + // labelMessage: '信息提示说明!!!', + componentProps: { + isSearchList: true, // 开启查询弹窗 + searchListPlaceholder: '请选择包装规格代码', // 输入框占位文本 + searchField: 'code', // 查询弹窗赋值字段 + searchTitle: '包装规格信息', // 查询弹窗标题 + searchAllSchemas: Packageunit.allSchemas, // 查询弹窗所需类 + searchPage: PackageunitApi.getPackageunitPage, // 查询弹窗所需分页方法 + } } }, { diff --git a/src/views/wms/deliversettlementManage/saleShipmentMainRecord/index.vue b/src/views/wms/deliversettlementManage/saleShipmentMainRecord/index.vue new file mode 100644 index 000000000..97a295c57 --- /dev/null +++ b/src/views/wms/deliversettlementManage/saleShipmentMainRecord/index.vue @@ -0,0 +1,224 @@ + + + diff --git a/src/views/wms/deliversettlementManage/saleShipmentMainRecord/saleShipmentMainRecord.data.ts b/src/views/wms/deliversettlementManage/saleShipmentMainRecord/saleShipmentMainRecord.data.ts new file mode 100644 index 000000000..ba4ba4a2b --- /dev/null +++ b/src/views/wms/deliversettlementManage/saleShipmentMainRecord/saleShipmentMainRecord.data.ts @@ -0,0 +1,278 @@ +import type { CrudSchema } from '@/hooks/web/useCrudSchemas' +import { dateFormatter } from '@/utils/formatTime' + +// 表单校验 +export const SaleShipmentMainRecordRules = reactive({ +}) + +export const SaleShipmentMainRecord = useCrudSchemas(reactive([ + { + label: '单据号', + field: 'number', + sort: 'custom', + isSearch: true, + }, + { + label: '申请单号', + field: 'requestNumber', + sort: 'custom', + isSearch: true, + }, + { + label: '客户代码', + field: 'customerCode', + sort: 'custom', + isSearch: true, + }, + { + label: '发票时间', + field: 'invoiceTime', + sort: 'custom', + formatter: dateFormatter, + isSearch: true, + search: { + component: 'DatePicker', + componentProps: { + valueFormat: 'YYYY-MM-DD HH:mm:ss', + type: 'daterange', + defaultTime: [new Date('1 00:00:00'), new Date('1 23:59:59')] + } + }, + form: { + component: 'DatePicker', + componentProps: { + type: 'datetime', + valueFormat: 'x' + } + }, + }, + { + label: '执行时间', + field: 'executeTime', + sort: 'custom', + formatter: dateFormatter, + isSearch: true, + search: { + component: 'DatePicker', + componentProps: { + valueFormat: 'YYYY-MM-DD HH:mm:ss', + type: 'daterange', + defaultTime: [new Date('1 00:00:00'), new Date('1 23:59:59')] + } + }, + form: { + component: 'DatePicker', + componentProps: { + type: 'datetime', + valueFormat: 'x' + } + }, + }, + { + label: '是否可用', + field: 'available', + sort: 'custom', + isSearch: true, + }, + { + label: '部门', + field: 'departmentCode', + sort: 'custom', + isSearch: true, + }, + + { + label: '业务类型', + field: 'businessType', + sort: 'custom', + isSearch: true, + }, + { + label: '创建时间', + field: 'createTime', + sort: 'custom', + formatter: dateFormatter, + isSearch: true, + search: { + component: 'DatePicker', + componentProps: { + valueFormat: 'YYYY-MM-DD HH:mm:ss', + type: 'daterange', + defaultTime: [new Date('1 00:00:00'), new Date('1 23:59:59')] + } + }, + isForm: false, + }, + { + label: '地点ID', + field: 'siteId', + sort: 'custom', + isSearch: true, + }, + { + label: '操作', + field: 'action', + isForm: false, + table: { + width: 150, + fixed: 'right' + } + } +])) + +// 表单校验 +export const SaleShipmentDetailRecordRules = reactive({ +}) + +export const SaleShipmentDetailRecord = useCrudSchemas(reactive([ + { + label: '单据号', + field: 'number', + sort: 'custom', + isSearch: true, + }, + { + label: '销售订单号', + field: 'soNumber', + sort: 'custom', + isSearch: true, + }, + { + label: '销售订单行', + field: 'soLine', + sort: 'custom', + isSearch: true, + }, + { + label: '从货主代码', + field: 'fromOwnerCode', + sort: 'custom', + isSearch: true, + }, + { + label: '包装号', + field: 'packingNumber', + sort: 'custom', + isSearch: true, + }, + { + label: '批次', + field: 'batch', + sort: 'custom', + isSearch: true, + }, + { + label: '库存状态', + field: 'inventoryStatus', + sort: 'custom', + isSearch: true, + form: { + component: 'Radio' + }, + }, + { + label: '从库位代码', + field: 'fromLocationCode', + sort: 'custom', + isSearch: true, + }, + { + label: '主表ID', + field: 'masterId', + sort: 'custom', + isSearch: true, + form: { + component: 'InputNumber', + value: 0 + }, + }, + { + label: '物品代码', + field: 'itemCode', + sort: 'custom', + isSearch: true, + }, + { + label: '物品名称', + field: 'itemName', + sort: 'custom', + isSearch: true, + }, + { + label: '物品描述1', + field: 'itemDesc1', + sort: 'custom', + isSearch: true, + }, + { + label: '物品描述2', + field: 'itemDesc2', + sort: 'custom', + isSearch: true, + }, + { + label: '项目代码', + field: 'projectCode', + sort: 'custom', + isSearch: true, + }, + { + label: '数量', + field: 'qty', + sort: 'custom', + isSearch: true, + }, + { + label: '计量单位', + field: 'uom', + sort: 'custom', + isSearch: true, + }, + { + label: '备注', + field: 'remark', + sort: 'custom', + isSearch: true, + }, + { + label: '创建时间', + field: 'createTime', + sort: 'custom', + formatter: dateFormatter, + isSearch: true, + search: { + component: 'DatePicker', + componentProps: { + valueFormat: 'YYYY-MM-DD HH:mm:ss', + type: 'daterange', + defaultTime: [new Date('1 00:00:00'), new Date('1 23:59:59')] + } + }, + isForm: false, + }, + { + label: '并发乐观锁', + field: 'concurrencyStamp', + sort: 'custom', + isSearch: true, + }, + { + label: '地点ID', + field: 'siteId', + sort: 'custom', + isSearch: true, + form: { + component: 'InputNumber', + value: 0 + }, + }, + { + label: '操作', + field: 'action', + isForm: false, + table: { + width: 150, + fixed: 'right' + } + } +])) diff --git a/src/views/wms/deliversettlementManage/saleShipmentMainRequest/index.vue b/src/views/wms/deliversettlementManage/saleShipmentMainRequest/index.vue index d22258d89..735180412 100644 --- a/src/views/wms/deliversettlementManage/saleShipmentMainRequest/index.vue +++ b/src/views/wms/deliversettlementManage/saleShipmentMainRequest/index.vue @@ -1,7 +1,7 @@ - diff --git a/src/views/wms/supplierManage/invoicingcalendar/invoicingcalendar.data.ts b/src/views/wms/supplierManage/invoicingcalendar/invoicingcalendar.data.ts new file mode 100644 index 000000000..64274deec --- /dev/null +++ b/src/views/wms/supplierManage/invoicingcalendar/invoicingcalendar.data.ts @@ -0,0 +1,110 @@ +import type { CrudSchema } from '@/hooks/web/useCrudSchemas' +import { dateFormatter } from '@/utils/formatTime' +import { fa } from 'element-plus/es/locale' + +// 表单校验 +export const InvoicingcalendarRules = reactive({ + beginDay: [required], + endDay: [required], + concurrencyStamp: [required], +}) + +export const Invoicingcalendar = useCrudSchemas(reactive([ + { + label: 'id', + field: 'id', + sort: 'custom', + isForm: false, + isTable: false + }, + { + label: '开始日期', + field: 'beginDay', + sort: 'custom', + dictType: DICT_TYPE.SYSTEM_DAY, + dictClass: 'string', + }, + { + label: '结束日期', + field: 'endDay', + sort: 'custom', + dictType: DICT_TYPE.SYSTEM_DAY, + dictClass: 'string', + }, + { + label: '描述', + field: 'descriiption', + sort: 'custom', + }, + { + label: '是否可用', + field: 'available', + sort: 'custom', + isSearch: true, + dictType: DICT_TYPE.TRUE_FALSE, + dictClass: 'string', + form: { + component: 'Switch', + value: 'TRUE', + componentProps: { + inactiveValue: 'FALSE', + activeValue: 'TRUE' + } + }, + }, + { + label: '备注', + field: 'remark', + sort: 'custom', + }, + { + label: '创建时间', + field: 'createTime', + sort: 'custom', + formatter: dateFormatter, + search: { + component: 'DatePicker', + componentProps: { + valueFormat: 'YYYY-MM-DD HH:mm:ss', + type: 'daterange', + defaultTime: [new Date('1 00:00:00'), new Date('1 23:59:59')] + } + }, + isForm: false, + isTable: false, + }, + { + label: '扩展属性', + field: 'extraProperties', + sort: 'custom', + isTable: false, + isForm:false, + }, + { + label: '并发乐观锁', + field: 'concurrencyStamp', + sort: 'custom', + isTable: false, + isForm:false, + form: { + component: 'InputNumber', + value: 0 + }, + }, + { + label: '地点ID', + field: 'siteId', + sort: 'custom', + isTable: false, + isForm:false, + }, + { + label: '操作', + field: 'action', + isForm: false, + table: { + width: 150, + fixed: 'right' + } + } +])) diff --git a/src/views/wms/supplierManage/purchaseclaim/purchaseclaimRequestMain/index.vue b/src/views/wms/supplierManage/purchaseclaim/purchaseclaimRequestMain/index.vue index a62d4b721..59795e6a7 100644 --- a/src/views/wms/supplierManage/purchaseclaim/purchaseclaimRequestMain/index.vue +++ b/src/views/wms/supplierManage/purchaseclaim/purchaseclaimRequestMain/index.vue @@ -305,11 +305,11 @@ const handleClo = async (id : number) => { try { // 关闭的二次确认 - await message.confirm('是否关闭所选中数据?') + await message.confirm(t('ts.是否关闭所选中数据?')) tableObject.loading = true // 发起关闭 await PurchaseclaimRequestMainApi.cloPurchaseclaimRequestMain(id) - message.success(t('关闭成功!')) + message.success(t('ts.关闭成功!')) tableObject.loading = false // 刷新列表 await getList() @@ -322,11 +322,11 @@ const handleOpe = async (id : number) => { try { // 打开的二次确认 - await message.confirm('是否打开所选中数据?') + await message.confirm(t('ts.是否打开所选中数据?')) tableObject.loading = true // 发起打开 await PurchaseclaimRequestMainApi.opePurchaseclaimRequestMain(id) - message.success(t('打开成功!')) + message.success(t('ts.打开成功!')) tableObject.loading = false // 刷新列表 await getList() @@ -339,11 +339,11 @@ const handleSub = async (id : number) => { try { // 提交审批的二次确认 - await message.confirm('是否提交审批所选中数据?') + await message.confirm(t('ts.是否提交审批所选中数据?')) tableObject.loading = true // 发起提交审批 await PurchaseclaimRequestMainApi.subPurchaseclaimRequestMain(id) - message.success(t('提交审批成功!')) + message.success(t('ts.提交审批成功!')) tableObject.loading = false // 刷新列表 await getList() @@ -356,11 +356,11 @@ const handleApp = async (id : number) => { try { // 审批通过的二次确认 - await message.confirm('是否审批通过所选中数据?') + await message.confirm(t('ts.是否审批通过所选中数据?')) tableObject.loading = true // 发起审批通过 await PurchaseclaimRequestMainApi.appPurchaseclaimRequestMain(id) - message.success(t('审批通过成功!')) + message.success(t('ts.审批通过成功!')) tableObject.loading = false // 刷新列表 await getList() @@ -373,11 +373,11 @@ const handleTur = async (id : number) => { try { // 驳回的二次确认 - await message.confirm('是否驳回所选中数据?') + await message.confirm(t('ts.是否驳回所选中数据?')) tableObject.loading = true // 发起驳回 await PurchaseclaimRequestMainApi.rejPurchaseclaimRequestMain(id) - message.success(t('驳回成功!')) + message.success(t('ts.驳回成功!')) tableObject.loading = false // 刷新列表 await getList() @@ -390,11 +390,11 @@ const genRecords = async (id : number) => { try { // 处理的二次确认 - await message.confirm('是否处理所选中数据?') + await message.confirm(t('ts.是否处理所选中数据?')) tableObject.loading = true // 发起处理 await PurchaseclaimRequestMainApi.genRecordsPurchaseclaimRequestMain(id) - message.success(t('处理成功!')) + message.success(t('ts.处理成功!')) tableObject.loading = false // 刷新列表 await getList() diff --git a/src/views/wms/supplierManage/supplierinvoice/supplierinvoiceRecordMain/index.vue b/src/views/wms/supplierManage/supplierinvoice/supplierinvoiceRecordMain/index.vue index 1333f4297..698788841 100644 --- a/src/views/wms/supplierManage/supplierinvoice/supplierinvoiceRecordMain/index.vue +++ b/src/views/wms/supplierManage/supplierinvoice/supplierinvoiceRecordMain/index.vue @@ -29,7 +29,7 @@ v-model:sort="tableObject.sort" > @@ -54,26 +54,26 @@ { // 发起导出 exportLoading.value = true const data = await SupplierinvoiceRecordMainApi.exportSupplierinvoiceRecordMain(tableObject.params) - download.excel(data, '供应商发票记录主.xlsx') + download.excel(data, `${t('ts.供应商发票记录主')}.xlsx`) } catch { } finally { exportLoading.value = false diff --git a/src/views/wms/supplierManage/supplierinvoice/supplierinvoiceRequestMain/index.vue b/src/views/wms/supplierManage/supplierinvoice/supplierinvoiceRequestMain/index.vue index 49653cb14..37ac30524 100644 --- a/src/views/wms/supplierManage/supplierinvoice/supplierinvoiceRequestMain/index.vue +++ b/src/views/wms/supplierManage/supplierinvoice/supplierinvoiceRequestMain/index.vue @@ -38,7 +38,7 @@ ref="formRef" @success="getList" :isOpenSearchTable="true" - :indexTableColumn="1" + fieldTableColumn="poLine" :rules="SupplierinvoiceRequestMainRules" :formAllSchemas="SupplierinvoiceRequestMain.allSchemas" :searchTableParams="searchTableParams" @@ -75,23 +75,23 @@ 999){ - message.warning("明细数据条数已超过最大数量限制【999条】") + message.warning(t('ts.明细数据条数已超过最大数量限制【999条】')) return; } await SupplierinvoiceRequestMainApi.createSupplierinvoiceRequestMain(data) @@ -640,7 +658,7 @@ const handleImport = () => { // 导入附件弹窗所需的参数 const importTemplateData = reactive({ templateUrl: '', - templateTitle: '供应商发货申请主导入模版.xlsx' + templateTitle: `${t('ts.供应商发货申请主导入模版')}.xlsx` }) // 导入成功之后 @@ -696,7 +714,7 @@ const importSuccess = () => { masterId: masterId } const data = await SupplierinvoiceRequestMainApi.exportSupplierinvoiceRequestDetail(params) - download.excel(data, '供应商发票申请明细.xlsx') + download.excel(data, `${t('ts.供应商发票申请明细')}.xlsx`) } catch { } finally { exportLoadingDetail.value = false diff --git a/src/views/wms/supplierManage/supplierinvoice/supplierinvoiceRequestMain/supplierinvoiceRequestMain.data.ts b/src/views/wms/supplierManage/supplierinvoice/supplierinvoiceRequestMain/supplierinvoiceRequestMain.data.ts index b66207815..09dfa85af 100644 --- a/src/views/wms/supplierManage/supplierinvoice/supplierinvoiceRequestMain/supplierinvoiceRequestMain.data.ts +++ b/src/views/wms/supplierManage/supplierinvoice/supplierinvoiceRequestMain/supplierinvoiceRequestMain.data.ts @@ -3,6 +3,7 @@ import { dateFormatter } from '@/utils/formatTime' import { accountantFormart } from '@/utils/formatter' import * as SupplierApi from '@/api/wms/supplier' +import * as SupplierinvoiceRequestMainApi from '@/api/wms/supplierinvoiceRequestMain' import { Supplier } from '@/views/wms/basicDataManage/supplierManage/supplier/supplier.data' const { t } = useI18n() // 国际化 @@ -27,6 +28,32 @@ const requestsettingData = data?.list[0] || {} userDept.id = userDept.id.toString() const userDeptArray:any = [userDept] +/** + * @returns {Array} 采购员列表 + */ +export const PurchaseMemberInfo = useCrudSchemas(reactive([ + { + label: '用户编号', + field: 'id', + table: { + width: 180, + }, + }, + { + label: '用户名称', + field: 'username', + table: { + width: 180, + }, + }, + { + label: '用户昵称', + field: 'nickname', + table: { + width: 180, + }, + } +])) /** * @returns {Array} 采购订单或者采购退货单 @@ -426,7 +453,6 @@ export const SupplierinvoiceRequestMain = useCrudSchemas(reactive( { label: '创建者', field: 'creator', - sort: 'custom', table: { width: 150 }, @@ -481,14 +507,30 @@ export const SupplierinvoiceRequestMain = useCrudSchemas(reactive( }, }, { - label: '采购审批人', + label: '采购价格审批人', field: 'procurementCreator', - sort: 'custom', sortTableDefault:1003, table: { width: 150 }, - isForm: false, + isForm: true, + form: { + // labelMessage: '信息提示说明!!!', + componentProps: { + isSearchList: true, // 开启查询弹窗 + hiddenFilterButton:true,//是否隐藏筛选按钮 + searchListPlaceholder: '请选择采购员', // 输入框占位文本 + searchField: 'id', // 查询弹窗赋值字段 + searchTitle: '采购员信息', // 查询弹窗标题 + searchAllSchemas: PurchaseMemberInfo.allSchemas, // 查询弹窗所需类 + searchPage: SupplierinvoiceRequestMainApi.queryUserInfoByRoleCode, // 查询弹窗所需分页方法 + searchCondition: [{ + key: 'roleCode', // 查询列表中字段 + value: 'purchase', // 指查询具体值 + isMainValue: false // 表示查询条件不是主表的字段的值 + }] + } + } }, { label: '采购审批时间', @@ -682,9 +724,6 @@ export const SupplierinvoiceRequestMainRules = reactive({ required, { validator:validateTaxRate, message: '税率必须大于0', trigger: 'blur'} ], - invoiceTime: [ - { required: true, message: '请选择发票日期', trigger: 'change' } - ], supplierCode: [ { required: true, message: '请选择供应商代码', trigger: 'change' } ], @@ -709,6 +748,9 @@ export const SupplierinvoiceRequestMainRules = reactive({ remark: [ { max: 50, message: '不得超过50个字符', trigger: 'blur' } ], + procurementCreator: [ + { required: true, message: '请选择采购员', trigger: 'change' } + ], }) diff --git a/src/views/wms/supplierManage/supplierinvoiceInvoiced/index.vue b/src/views/wms/supplierManage/supplierinvoiceInvoiced/index.vue index d96f5c0be..f25e4cbdb 100644 --- a/src/views/wms/supplierManage/supplierinvoiceInvoiced/index.vue +++ b/src/views/wms/supplierManage/supplierinvoiceInvoiced/index.vue @@ -28,7 +28,7 @@ v-model:sort="tableObject.sort" > @@ -146,7 +146,7 @@ const butttondata = (row) =>{ // defaultButtons.mainListDeleteBtn({hasPermi:'wms:supplierinvoice-invoiced:delete'}), // 删除 // defaultButtons.mainListEditBtn({hasPermi:'wms:supplierinvoice-invoiced:update'}), { - label: '审核通过', + label: t('ts.审核通过'), name: 'agree', hide: isShowMainButton(row, ['1']), type: 'primary', @@ -155,7 +155,7 @@ const butttondata = (row) =>{ hasPermi: 'wms:supplierinvoice-invoiced:agree' }, { - label: '作废', + label: t('ts.作废'), name: 'refuse', hide: isShowMainButton(row, ['1']), type: 'danger', @@ -192,7 +192,7 @@ const formsSuccess = async (formType,data) => { }); if(isHave){ if(data.activeTime && data.expireTime && data.activeTime >=data.expireTime){ - message.error('失效时间要大于生效时间') + message.error(t('ts.失效时间要大于生效时间')) return; } } @@ -232,11 +232,11 @@ const handleDelete = async (id: number) => { const handleAgree = async (id : number) => { try { // 审批通过的二次确认 - await message.confirm('是否审批通过所选中数据?') + await message.confirm(t('ts.是否审批通过所选中数据?')) tableObject.loading = true // 发起审批通过 await SupplierinvoiceInvoicedApi.agreeSupplierinvoiceInvoiced(id) - message.success(t('审批通过成功!')) + message.success(t('ts.审批通过成功!')) tableObject.loading = false // 刷新列表 await getList() @@ -250,11 +250,11 @@ const handleAgree = async (id : number) => { const handleRefuse = async (id : number) => { try { // 审批通过的二次确认 - await message.confirm('是否审批拒绝所选中数据?') + await message.confirm(t('ts.是否审批拒绝所选中数据?')) tableObject.loading = true // 发起审批通过 await SupplierinvoiceInvoicedApi.refuseSupplierinvoiceInvoiced(id) - message.success(t('审批成功!')) + message.success(t('ts.审批成功!')) tableObject.loading = false // 刷新列表 await getList() @@ -272,7 +272,7 @@ const handleExport = async () => { // 发起导出 exportLoading.value = true const data = await SupplierinvoiceInvoicedApi.exportSupplierinvoiceInvoiced(tableObject.params) - download.excel(data, '待开票.xlsx') + download.excel(data, `${t('ts.待开票')}.xlsx`) } catch { } finally { exportLoading.value = false @@ -287,7 +287,7 @@ const handleImport = () => { // 导入附件弹窗所需的参数 const importTemplateData = reactive({ templateUrl: '', - templateTitle: '待开票导入模版.xlsx' + templateTitle: `${t('ts.待开票导入模版')}.xlsx` }) // 导入成功之后 const importSuccess = () => {