diff --git a/src/api/wms/processproductionRecordDetail/index.ts b/src/api/wms/processproductionRecordDetail/index.ts
new file mode 100644
index 000000000..0d8a4d0e8
--- /dev/null
+++ b/src/api/wms/processproductionRecordDetail/index.ts
@@ -0,0 +1,61 @@
+import request from '@/config/axios'
+
+export interface ProcessproductionRecordDetailVO {
+ masterId: number
+ number: string
+ processCode: string
+ productionLine: string
+ locationCode: string
+ componentItemCode: string
+ batch: string
+ componentItemcodeQty: number
+ effectiveDate: Date
+ available: string
+ remark: string
+ deletionTime: Date
+ deleterId: string
+ extraProperties: string
+ concurrencyStamp: number
+ siteId: string
+}
+
+// 查询工序报产记录子列表
+export const getProcessproductionRecordDetailPage = async (params) => {
+ if (params.isSearch) {
+ delete params.isSearch
+ const data = {...params}
+ return await request.post({ url: '/wms/processproduction-record-detail/senior', data })
+ } else {
+ return await request.get({ url: `/wms/processproduction-record-detail/page`, params })
+ }
+}
+
+// 查询工序报产记录子详情
+export const getProcessproductionRecordDetail = async (id: number) => {
+ return await request.get({ url: `/wms/processproduction-record-detail/get?id=` + id })
+}
+
+// 新增工序报产记录子
+export const createProcessproductionRecordDetail = async (data: ProcessproductionRecordDetailVO) => {
+ return await request.post({ url: `/wms/processproduction-record-detail/create`, data })
+}
+
+// 修改工序报产记录子
+export const updateProcessproductionRecordDetail = async (data: ProcessproductionRecordDetailVO) => {
+ return await request.put({ url: `/wms/processproduction-record-detail/update`, data })
+}
+
+// 删除工序报产记录子
+export const deleteProcessproductionRecordDetail = async (id: number) => {
+ return await request.delete({ url: `/wms/processproduction-record-detail/delete?id=` + id })
+}
+
+// 导出工序报产记录子 Excel
+export const exportProcessproductionRecordDetail = async (params) => {
+ return await request.download({ url: `/wms/processproduction-record-detail/export-excel`, params })
+}
+
+// 下载用户导入模板
+export const importTemplate = () => {
+ return request.download({ url: '/wms/processproduction-record-detail/get-import-template' })
+}
\ No newline at end of file
diff --git a/src/api/wms/processproductionRecordMain/index.ts b/src/api/wms/processproductionRecordMain/index.ts
new file mode 100644
index 000000000..f2d6002ac
--- /dev/null
+++ b/src/api/wms/processproductionRecordMain/index.ts
@@ -0,0 +1,57 @@
+import request from '@/config/axios'
+
+export interface ProcessproductionRecordMainVO {
+ number: string
+ requestNumber: string
+ itemCode: string
+ completedQuantity: number
+ scrapQuantity: number
+ available: string
+ remark: string
+ deletionTime: Date
+ deleterId: string
+ extraProperties: string
+ concurrencyStamp: number
+ siteId: string
+}
+
+// 查询工序报产记录主列表
+export const getProcessproductionRecordMainPage = async (params) => {
+ if (params.isSearch) {
+ delete params.isSearch
+ const data = {...params}
+ return await request.post({ url: '/wms/processproduction-record-main/senior', data })
+ } else {
+ return await request.get({ url: `/wms/processproduction-record-main/page`, params })
+ }
+}
+
+// 查询工序报产记录主详情
+export const getProcessproductionRecordMain = async (id: number) => {
+ return await request.get({ url: `/wms/processproduction-record-main/get?id=` + id })
+}
+
+// 新增工序报产记录主
+export const createProcessproductionRecordMain = async (data: ProcessproductionRecordMainVO) => {
+ return await request.post({ url: `/wms/processproduction-record-main/create`, data })
+}
+
+// 修改工序报产记录主
+export const updateProcessproductionRecordMain = async (data: ProcessproductionRecordMainVO) => {
+ return await request.put({ url: `/wms/processproduction-record-main/update`, data })
+}
+
+// 删除工序报产记录主
+export const deleteProcessproductionRecordMain = async (id: number) => {
+ return await request.delete({ url: `/wms/processproduction-record-main/delete?id=` + id })
+}
+
+// 导出工序报产记录主 Excel
+export const exportProcessproductionRecordMain = async (params) => {
+ return await request.download({ url: `/wms/processproduction-record-main/export-excel`, params })
+}
+
+// 下载用户导入模板
+export const importTemplate = () => {
+ return request.download({ url: '/wms/processproduction-record-main/get-import-template' })
+}
\ No newline at end of file
diff --git a/src/views/wms/productionManage/processproduction/processproductionRecord/index.vue b/src/views/wms/productionManage/processproduction/processproductionRecord/index.vue
new file mode 100644
index 000000000..9f7f42537
--- /dev/null
+++ b/src/views/wms/productionManage/processproduction/processproductionRecord/index.vue
@@ -0,0 +1,286 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ row.code }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/wms/productionManage/processproduction/processproductionRecord/processproductionRecordMain.data.ts b/src/views/wms/productionManage/processproduction/processproductionRecord/processproductionRecordMain.data.ts
new file mode 100644
index 000000000..c81b52900
--- /dev/null
+++ b/src/views/wms/productionManage/processproduction/processproductionRecord/processproductionRecordMain.data.ts
@@ -0,0 +1,342 @@
+import type { CrudSchema } from '@/hooks/web/useCrudSchemas'
+import { dateFormatter } from '@/utils/formatTime'
+import { fa } from 'element-plus/es/locale'
+
+export const ProcessproductionRecordMain = useCrudSchemas(reactive([
+ {
+ label: '单据号',
+ field: 'number',
+ sort: 'custom',
+ isSearch: true,
+ table: {
+ width: 150
+ },
+ },
+ {
+ label: '申请单据号',
+ field: 'requestNumber',
+ sort: 'custom',
+ isSearch: true,
+ table: {
+ width: 150
+ },
+ },
+ {
+ label: '物料代码',
+ field: 'itemCode',
+ sort: 'custom',
+ isSearch: true,
+ table: {
+ width: 150
+ },
+ },
+ {
+ label: '完工数量',
+ field: 'completedQuantity',
+ sort: 'custom',
+ table: {
+ width: 150
+ },
+ },
+ {
+ label: '报废数量',
+ field: 'scrapQuantity',
+ sort: 'custom',
+ table: {
+ width: 150
+ },
+ },
+ {
+ label: '是否可用',
+ field: 'available',
+ sort: 'custom',
+ table: {
+ width: 150
+ },
+ isTable:false,
+ },
+ {
+ label: '备注',
+ field: 'remark',
+ sort: 'custom',
+ isTable: false,
+ table: {
+ width: 150
+ },
+ },
+ {
+ label: '创建时间',
+ field: 'createTime',
+ sort: 'custom',
+ formatter: dateFormatter,
+ table: {
+ width: 150
+ },
+ isForm: false,
+ isTable:false,
+ },
+ {
+ label: '删除时间',
+ field: 'deletionTime',
+ sort: 'custom',
+ formatter: dateFormatter,
+ isSearch: false,
+ table: {
+ width: 150
+ },
+ isTable: false,
+ 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: '删除者ID',
+ field: 'deleterId',
+ sort: 'custom',
+ isSearch: false,
+ table: {
+ width: 150
+ },
+ isTable: false,
+ },
+ {
+ label: '扩展属性',
+ field: 'extraProperties',
+ sort: 'custom',
+ isSearch: false,
+ isTable: false,
+ table: {
+ width: 150
+ },
+ },
+ {
+ label: '并发乐观锁',
+ field: 'concurrencyStamp',
+ sort: 'custom',
+ isSearch: false,
+ isTable: false,
+ form: {
+ component: 'InputNumber',
+ value: 0
+ },
+ table: {
+ width: 150
+ },
+ },
+ {
+ label: '地点ID',
+ field: 'siteId',
+ sort: 'custom',
+ isTable: false,
+ isSearch: false,
+ },
+ {
+ label: '操作',
+ field: 'action',
+ isForm: false,
+ isTable: false,
+ table: {
+ width: 150,
+ fixed: 'right'
+ }
+ }
+]))
+
+// 表单校验
+export const ProcessproductionRecordMainRules = reactive({
+ available: [required],
+})
+
+export const ProcessproductionRecordDetail = useCrudSchemas(reactive([
+ {
+ label: '主表ID',
+ field: 'masterId',
+ sort: 'custom',
+ isTable:false,
+ form: {
+ component: 'InputNumber',
+ value: 0
+ },
+ },
+ {
+ label: '单据号',
+ field: 'number',
+ sort: 'custom',
+ isSearch: false,
+ table: {
+ width: 150
+ },
+ },
+ {
+ label: '工序',
+ field: 'processCode',
+ sort: 'custom',
+ table: {
+ width: 150
+ },
+ },
+ {
+ label: '生产线',
+ field: 'productionLine',
+ sort: 'custom',
+ table: {
+ width: 150
+ },
+ },
+ {
+ label: '库位代码',
+ field: 'locationCode',
+ sort: 'custom',
+ table: {
+ width: 150
+ },
+ },
+ {
+ label: '子物料代码',
+ field: 'componentItemCode',
+ sort: 'custom',
+ table: {
+ width: 150
+ },
+ },
+ {
+ label: '批次',
+ field: 'batch',
+ sort: 'custom',
+ table: {
+ width: 150
+ },
+ },
+ {
+ label: '子物料数量',
+ field: 'componentItemcodeQty',
+ sort: 'custom',
+ table: {
+ width: 150
+ },
+ },
+ {
+ label: '生效日期',
+ field: 'effectiveDate',
+ sort: 'custom',
+ formatter: dateFormatter,
+ table: {
+ width: 150
+ },
+ form: {
+ component: 'DatePicker',
+ componentProps: {
+ type: 'datetime',
+ valueFormat: 'x'
+ }
+ },
+ },
+ {
+ label: '是否可用',
+ field: 'available',
+ sort: 'custom',
+ table: {
+ width: 150
+ },
+ },
+ {
+ label: '备注',
+ field: 'remark',
+ sort: 'custom',
+ table: {
+ width: 150
+ },
+ },
+ {
+ label: '创建时间',
+ field: 'createTime',
+ sort: 'custom',
+ formatter: dateFormatter,
+ isForm: false,
+ table: {
+ width: 150
+ },
+ },
+ {
+ label: '删除时间',
+ field: 'deletionTime',
+ sort: 'custom',
+ formatter: dateFormatter,
+ isTable: false,
+ isSearch: false,
+ 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: '删除者ID',
+ field: 'deleterId',
+ sort: 'custom',
+ isSearch: false,
+ isTable: false,
+ },
+ {
+ label: '扩展属性',
+ field: 'extraProperties',
+ sort: 'custom',
+ isSearch: false,
+ isTable: false,
+ },
+ {
+ label: '并发乐观锁',
+ field: 'concurrencyStamp',
+ sort: 'custom',
+ isSearch: false,
+ isTable: false,
+ form: {
+ component: 'InputNumber',
+ value: 0
+ },
+ },
+ {
+ label: '地点ID',
+ field: 'siteId',
+ sort: 'custom',
+ isSearch: false,
+ isTable: false,
+ },
+ {
+ label: '操作',
+ field: 'action',
+ isForm: false,
+ hiddenInMain:true,
+ table: {
+ width: 150,
+ fixed: 'right'
+ }
+ }
+]))
+
+// 表单校验
+export const ProcessproductionRecordDetailRules = reactive({
+ available: [required],
+})
\ No newline at end of file