Browse Source

HL-5957生产退料功能的修改1:主数据中增加到仓库选项;2:在申请中不选择目标库位,申请处理完生成任务后,在任务中根据上架策略为退回的包装在目标仓库下推荐目标库位,可以参考合格转隔离时推荐目标库位的模式

hella_online_20240924
yufei_wang 2 months ago
parent
commit
f8bda453dc
  1. 119
      src/views/wms/issueManage/productionreturn/productionreturnRequestMain/index.vue
  2. 516
      src/views/wms/issueManage/productionreturn/productionreturnRequestMain/productionreturnRequestMain.data.ts
  3. 2
      src/views/wms/issueManage/productionreturn/productionreturnRequestMainNo/index.vue
  4. 1527
      src/views/wms/issueManage/productionreturn/productionreturnRequestMainNo/productionreturnRequestMain.data.ts

119
src/views/wms/issueManage/productionreturn/productionreturnRequestMain/index.vue

@ -43,7 +43,7 @@
<BasicForm
ref="formRef"
:isOpenSearchTable="true"
fieldTableColumn="workStationCode"
fieldTableColumn="itemCode"
@success="getList"
:rules="ProductionreturnRequestMainRules"
:formAllSchemas="ProductionreturnRequestMain.allSchemas"
@ -59,6 +59,7 @@
@tableSelectionDelete="tableSelectionDelete"
@searchTableSuccess="searchTableSuccess"
@submitForm="submitForm"
@clearSearchInput="clearSearchInput"
/>
<!-- 详情 -->
@ -88,7 +89,7 @@
:isShowButton="false"
@handleAddTable="handleAddTable"
@handleDeleteTable="handleDeleteTable"
@searchTableSuccess="searchTableSuccess"
@searchTableSuccess="searchTableSuccessLabel"
@submitForm="submitFormLabel"
/>
@ -183,9 +184,28 @@ const isItemType = async (itemCode, labelTypeParams) => {
if (!isType) labelType.value = labelTypeOld
return isType
}
const clearSearchInput = (formField) => {
if(formField=='workshopCode'){
//
formRef.value.formRef.setValues({
productionLineCode:'',//线
workStationCode:'',//
fromLocationCode:'',//
})
tableData.value = []
}else if(formField=='productionLineCode'){
//线
formRef.value.formRef.setValues({
workStationCode:'',//
fromLocationCode:'',//
})
tableData.value = []
}
}
//
const searchTableSuccess = (formField, searchField, val, formRef, type, row ) => {
console.log('searchTableSuccess',formRef.formModel)
nextTick(async () => {
if (type == 'tableForm') {
//
@ -194,23 +214,37 @@ const searchTableSuccess = (formField, searchField, val, formRef, type, row ) =>
message.warning(`物料${val[0]['itemCode']}已经存在`)
return
}
let enableBuy = val[0]['enableBuy']
if(tableData.value.length>0){
enableBuy = tableData.value[0]['enableBuy']
}
//
let noList = val.filter(item=>item['enableBuy']!=enableBuy)
if(noList&&noList.length>0){
let itemCodes = noList.map(item=>item['itemCode'])
console.log(itemCodes)
message.warning(`${itemCodes.join(',')}与其他数据制造类型不一致,被过滤!`)
}
val = val.filter(item=>item['enableBuy']==enableBuy)
const isType = await isItemType(val[0]['itemCode'], labelType.value)
if(!isType){
message.warning('当前物料可制造与其他数据不一致,请重新选择!')
} else {
row['itemCode'] = val[0]['itemCode']
row['uom'] = val[0]['uom']
row['inventoryStatus'] = val[0]['inventoryStatus']
row['qty'] = val[0]['qty']
val.forEach(item=>{
const newRow = JSON.parse(JSON.stringify({...tableFormKeys,...item}))
newRow['itemCode'] = item['itemCode']
newRow['enableBuy'] = item['enableBuy']
newRow['uom'] = item['uom']
newRow['inventoryStatus'] = item['inventoryStatus']
newRow['qty'] = item['qty']
// 000000
if (val[0]['batch'] !== '') {
row['batch'] = val[0]['batch']
if (item['batch'] !== '') {
newRow['batch'] = item['batch']
} else {
row['batch'] = '000000'
newRow['batch'] = '000000'
}
row['packUnit'] = val[0]['packUnit']
row['packQty'] = val[0]['packQty']
newRow['packUnit'] = item['packUnit']
newRow['packQty'] = item['packQty']
tableData.value.push(newRow)
})
// HL-4885 @ @
// tableform
// TODO: tableFormColumns 10 20 20
@ -219,16 +253,17 @@ const searchTableSuccess = (formField, searchField, val, formRef, type, row ) =>
// item.tableForm.max = val[0]['qty']
// }
// })
// }
}
} else if(formField == 'workStationCode') {
//
val.forEach(item=>{
const newRow = JSON.parse(JSON.stringify({...tableFormKeys,...item}))
newRow['workStationCode'] = item['code']
newRow['fromLocationCode'] = item['rawLocationCode']
tableData.value.push(newRow)
})
}
// else if(formField == 'workStationCode') {
// //
// val.forEach(item=>{
// const newRow = JSON.parse(JSON.stringify({...tableFormKeys,...item}))
// newRow['workStationCode'] = item['code']
// newRow['fromLocationCode'] = item['rawLocationCode']
// tableData.value.push(newRow)
// })
// }
// else if(formField == 'packUnit') {
// row['packUnit'] = val[0]['packUnit']
// row['packQty'] = val[0]['packQty']
@ -239,11 +274,43 @@ const searchTableSuccess = (formField, searchField, val, formRef, type, row ) =>
} else {
const setV = {}
setV[formField] = val[0][searchField]
if(formField=='workshopCode'){
//
setV['productionLineCode'] = ''//线
setV['workStationCode'] = ''//
setV['fromLocationCode'] = ''//
tableData.value = []
}else if(formField=='productionLineCode'){
//线
setV['workStationCode'] = ''//
setV['fromLocationCode'] = ''//
tableData.value = []
}
if(formField == 'workStationCode') {
//
setV['workStationCode'] = val[0]['code']
setV['fromLocationCode'] = val[0]['rawLocationCode']
}
tableData.value = [] //
formRef.setValues(setV)
}
})
}
//
const searchTableSuccessLabel = (formField, searchField, val, formRef, type, row ) => {
console.log('searchTableSuccessLabel',formField, searchField, val, formRef, type, row)
nextTick(async () => {
if (type == 'tableForm') {
//
row[formField] = val[0][searchField]
} else {
const setV = {}
setV[formField] = val[0][searchField]
formRef.setValues(setV)
}
})
}
//
const searchTableSuccessDetail = (formField, searchField, val, formRef ) => {
nextTick(async () => {
@ -654,6 +721,10 @@ const submitForm = async (formType, submitData) => {
if(data.masterId){
data.id = data.masterId
}
tableData.value.forEach((item:any)=>{
item['workStationCode'] = data.workStationCode
item['fromLocationCode'] = data.fromLocationCode
})
data.subList = tableData.value //
let isZC = true //
data.subList.forEach(item => {

516
src/views/wms/issueManage/productionreturn/productionreturnRequestMain/productionreturnRequestMain.data.ts

@ -24,7 +24,8 @@ import * as SupplieritemApi from '@/api/wms/supplieritem'
import { Supplieritem } from '@/views/wms/basicDataManage/supplierManage/supplieritem/supplieritem.data'
import * as LocationApi from '@/api/wms/location'
import { Location } from '@/views/wms/basicDataManage/factoryModeling/location/location.data'
import { Warehouse } from "@/views/wms/basicDataManage/factoryModeling/warehouse/warehouse.data";
import * as WarehouseApi from "@/api/wms/warehouse";
const { t } = useI18n() // 国际化
// 获取自动提交自动通过自动执行,跳过任务直接删生成记录的默认值
@ -116,7 +117,7 @@ export const ProductionreturnRequestMain = useCrudSchemas(reactive<CrudSchema[]>
},
},
{
label: '生产线代码',
label: '生产线',
field: 'productionLineCode',
sort: 'custom',
table: {
@ -171,6 +172,155 @@ export const ProductionreturnRequestMain = useCrudSchemas(reactive<CrudSchema[]>
}]
},
},
{
label: '工位',
field: 'workStationCode',
sort: 'custom',
table: {
width: 150
},
isForm: true,
form: {
// labelMessage: '信息提示说明!!!',
componentProps: {
enterSearch: true,
isSearchList: true, // 开启查询弹窗
searchListPlaceholder: '请选择工位代码', // 输入框占位文本
searchField: 'code', // 查询弹窗赋值字段
searchTitle: '工位信息', // 查询弹窗标题
searchAllSchemas: Workstation.allSchemas, // 查询弹窗所需类
searchPage: WorkstationApi.getWorkstationPage, // 查询弹窗所需分页方法
searchCondition:[{
key: 'available',
value: 'TRUE',
isMainValue: false
},{
key: 'workshopCode',
value: 'workshopCode',
message: '请选择车间信息!',
isMainValue: true
},{
key: 'productionLineCode',
value: 'productionLineCode',
message: '请选择生产线信息!',
isMainValue: true,
isOptional:true, // isMainValue=true情况,添加参数可选可空的判断
}],
verificationParams: [{
key: 'code',
action: '==',
value: '',
isMainValue: false,
isSearch: true,
isFormModel: true,
}], // 失去焦点校验参数
}
},
tableForm:{
multiple:true,
disabled:true,
// isInpuFocusShow: true,
searchListPlaceholder: '请选择工位代码', // 输入框占位文本
searchField: 'code', // 查询弹窗赋值字段
searchTitle: '工位信息', // 查询弹窗标题
searchAllSchemas: Workstation.allSchemas, // 查询弹窗所需类
searchPage: WorkstationApi.getWorkstationPage, // 查询弹窗所需分页方法
searchCondition: [
{
key: 'available',
value: 'TRUE',
action: '==', // 查询拼接条件
isSearch: true, // 使用自定义拼接条件
isMainValue: false
},
{
key: 'workshopCode',
value: 'workshopCode',
message: '请选择车间信息!',
action: '==', // 查询拼接条件
isSearch: true, // 使用自定义拼接条件
isMainValue: false, // 拼接条件必须要 false 同时不能与 isMainValue: true 同用
isFormModel:true, // filters中添加筛选的数据--取于formModel
required:true, // 前置添加必有,和isFormModel结合使用
},
{
key: 'productionLineCode', // 查询列表中字段
value: 'productionLineCode', // 指查询具体值
action: '==', // 查询拼接条件
isSearch: true, // 使用自定义拼接条件
isMainValue: false, // 拼接条件必须要 false 同时不能与 isMainValue: true 同用
isFormModel:true, // filters中添加筛选的数据--取于formModel
required:false, // 前置添加必有,和isFormModel结合使用
},
],
verificationPage: WorkstationApi.getWorkstationByCodes, // 校验数去焦点输入是否正确的方法
isShowTableFormSearch: true,
isRepeat: true,//是否可以重复添加该条数据
verificationParams: [{
key: 'code',
action: '==',
value: '',
isMainValue: false,
isSearch: true,
isFormModel: true,
}], // 失去焦点校验参数
},
},
{
label: '来源库位',
field: 'fromLocationCode',
sort: 'custom',
table: {
width: 150
},
tableForm: {
disabled: true
},
form: {
componentProps: {
disabled: true
}
},
isDetail:false,
isTable:true,
isTableForm: true,
isForm: true,
},
{
label: '到仓库',
field: 'toWarehouseCode',
sort: 'custom',
table: {
width: 150,
},
isForm:true,
form: {
// labelMessage: '信息提示说明!!!',
componentProps: {
enterSearch: true,
isSearchList: true,
searchListPlaceholder: '请选择仓库代码',
searchField: 'code',
searchTitle: '仓库信息',
searchAllSchemas: Warehouse.allSchemas,
searchPage: WarehouseApi.getWarehousePage,
searchCondition: [{
key: 'available',
value: 'TRUE',
isMainValue: false
}],
verificationParams: [{
key: 'code',
action: '==',
value: '',
isMainValue: false,
isSearch: true,
isFormModel: true,
}], // 失去焦点校验参数
}
}
},
{
label: '申请时间',
field: 'requestTime',
@ -524,6 +674,12 @@ export const ProductionreturnRequestMainRules = reactive({
// productionLineCode: [
// { required: true, message: '请选择生产线代码', trigger: 'change' }
// ],
workStationCode: [
{ required: true, message: '请选择工位代码', trigger: 'change' }
],
toWarehouseCode: [
{ required: true, message: '请选择到仓库', trigger: 'change' }
],
})
/**
@ -579,161 +735,161 @@ export const ProductionreturnRequestDetail = useCrudSchemas(reactive<CrudSchema[
}]
},
},
{
label: '工位代码',
field: 'workStationCode',
sort: 'custom',
table: {
width: 150
},
form: {
// labelMessage: '信息提示说明!!!',
componentProps: {
isSearchList: true, // 开启查询弹窗
searchListPlaceholder: '请选择工位代码', // 输入框占位文本
searchField: 'code', // 查询弹窗赋值字段
searchTitle: '工位信息', // 查询弹窗标题
searchAllSchemas: Workstation.allSchemas, // 查询弹窗所需类
searchPage: WorkstationApi.getWorkstationPage, // 查询弹窗所需分页方法
searchCondition:[{
key: 'available',
value: 'TRUE',
isMainValue: false
},{
key: 'workshopCode',
value: 'workshopCode',
message: '请选择车间信息!',
isMainValue: true
},{
key: 'productionLineCode',
value: 'productionLineCode',
message: '请选择生产线信息!',
isMainValue: true
}],
// {
// label: '工位代码',
// field: 'workStationCode',
// sort: 'custom',
// table: {
// width: 150
// },
// form: {
// // labelMessage: '信息提示说明!!!',
// componentProps: {
// isSearchList: true, // 开启查询弹窗
// searchListPlaceholder: '请选择工位代码', // 输入框占位文本
// searchField: 'code', // 查询弹窗赋值字段
// searchTitle: '工位信息', // 查询弹窗标题
// searchAllSchemas: Workstation.allSchemas, // 查询弹窗所需类
// searchPage: WorkstationApi.getWorkstationPage, // 查询弹窗所需分页方法
// searchCondition:[{
// key: 'available',
// value: 'TRUE',
// isMainValue: false
// },{
// key: 'workshopCode',
// value: 'workshopCode',
// message: '请选择车间信息!',
// isMainValue: true
// },{
// key: 'productionLineCode',
// value: 'productionLineCode',
// message: '请选择生产线信息!',
// isMainValue: true
// }],
}
},
tableForm:{
multiple:true,
disabled:true,
// isInpuFocusShow: true,
searchListPlaceholder: '请选择工位代码', // 输入框占位文本
searchField: 'code', // 查询弹窗赋值字段
searchTitle: '工位信息', // 查询弹窗标题
searchAllSchemas: Workstation.allSchemas, // 查询弹窗所需类
searchPage: WorkstationApi.getWorkstationPage, // 查询弹窗所需分页方法
searchCondition: [
{
key: 'available',
value: 'TRUE',
action: '==', // 查询拼接条件
isSearch: true, // 使用自定义拼接条件
isMainValue: false
},
{
key: 'workshopCode',
value: 'workshopCode',
message: '请选择车间信息!',
action: '==', // 查询拼接条件
isSearch: true, // 使用自定义拼接条件
isMainValue: false, // 拼接条件必须要 false 同时不能与 isMainValue: true 同用
isFormModel:true, // filters中添加筛选的数据--取于formModel
required:true, // 前置添加必有,和isFormModel结合使用
},
{
key: 'productionLineCode', // 查询列表中字段
value: 'productionLineCode', // 指查询具体值
action: '==', // 查询拼接条件
isSearch: true, // 使用自定义拼接条件
isMainValue: false, // 拼接条件必须要 false 同时不能与 isMainValue: true 同用
isFormModel:true, // filters中添加筛选的数据--取于formModel
required:false, // 前置添加必有,和isFormModel结合使用
},
],
verificationPage: WorkstationApi.getWorkstationByCodes, // 校验数去焦点输入是否正确的方法
isShowTableFormSearch: true,
isRepeat: true,//是否可以重复添加该条数据
verificationParams: [{
key: 'code',
action: '==',
value: '',
isMainValue: false,
isSearch: true,
isFormModel: true,
}], // 失去焦点校验参数
},
},
{
label: '来源库位',
field: 'fromLocationCode',
sort: 'custom',
table: {
width: 150
},
tableForm: {
disabled: true
},
form: {
componentProps: {
disabled: true
}
},
isDetail:false,
isTable:true,
isTableForm: true,
isForm: false,
},
{
label: '目标库位',
field: 'toLocationCode',
sort: 'custom',
table: {
width: 150
},
tableForm: {
multiple: true,//多选
isInpuFocusShow: true, // 开启查询弹窗
searchListPlaceholder: '请选择库位代码', // 输入框占位文本
searchField: 'code', // 查询弹窗赋值字段
searchTitle: '库位基础信息', // 查询弹窗标题
searchAllSchemas: Location.allSchemas, // 查询弹窗所需类
searchPage: LocationApi.selectBusinessTypeOutLocation, // 查询弹窗所需分页方法
searchCondition: [{
key: 'businessType',
value: 'ReturnToStore', // 生产退料
isMainValue: false
},
{
key: 'isIn',
value: 'in',
isMainValue: false
}
]
},
form: {
// labelMessage: '信息提示说明!!!',
componentProps: {
isSearchList: true, // 开启查询弹窗
multiple: true,//多选
searchListPlaceholder: '请选择库位代码', // 输入框占位文本
searchField: 'code', // 查询弹窗赋值字段
searchTitle: '库位基础信息', // 查询弹窗标题
searchAllSchemas: Location.allSchemas, // 查询弹窗所需类
searchPage: LocationApi.selectBusinessTypeOutLocation, // 查询弹窗所需分页方法
searchCondition: [{
key: 'businessType',
value: 'ReturnToStore', // 生产退料
isMainValue: false
},
{
key: 'isIn',
value: 'in',
isMainValue: false
}]
}
}
},
// }
// },
// tableForm:{
// multiple:true,
// disabled:true,
// // isInpuFocusShow: true,
// searchListPlaceholder: '请选择工位代码', // 输入框占位文本
// searchField: 'code', // 查询弹窗赋值字段
// searchTitle: '工位信息', // 查询弹窗标题
// searchAllSchemas: Workstation.allSchemas, // 查询弹窗所需类
// searchPage: WorkstationApi.getWorkstationPage, // 查询弹窗所需分页方法
// searchCondition: [
// {
// key: 'available',
// value: 'TRUE',
// action: '==', // 查询拼接条件
// isSearch: true, // 使用自定义拼接条件
// isMainValue: false
// },
// {
// key: 'workshopCode',
// value: 'workshopCode',
// message: '请选择车间信息!',
// action: '==', // 查询拼接条件
// isSearch: true, // 使用自定义拼接条件
// isMainValue: false, // 拼接条件必须要 false 同时不能与 isMainValue: true 同用
// isFormModel:true, // filters中添加筛选的数据--取于formModel
// required:true, // 前置添加必有,和isFormModel结合使用
// },
// {
// key: 'productionLineCode', // 查询列表中字段
// value: 'productionLineCode', // 指查询具体值
// action: '==', // 查询拼接条件
// isSearch: true, // 使用自定义拼接条件
// isMainValue: false, // 拼接条件必须要 false 同时不能与 isMainValue: true 同用
// isFormModel:true, // filters中添加筛选的数据--取于formModel
// required:false, // 前置添加必有,和isFormModel结合使用
// },
// ],
// verificationPage: WorkstationApi.getWorkstationByCodes, // 校验数去焦点输入是否正确的方法
// isShowTableFormSearch: true,
// isRepeat: true,//是否可以重复添加该条数据
// verificationParams: [{
// key: 'code',
// action: '==',
// value: '',
// isMainValue: false,
// isSearch: true,
// isFormModel: true,
// }], // 失去焦点校验参数
// },
// },
// {
// label: '来源库位',
// field: 'fromLocationCode',
// sort: 'custom',
// table: {
// width: 150
// },
// tableForm: {
// disabled: true
// },
// form: {
// componentProps: {
// disabled: true
// }
// },
// isDetail:false,
// isTable:true,
// isTableForm: true,
// isForm: false,
// },
// {
// label: '目标库位',
// field: 'toLocationCode',
// sort: 'custom',
// table: {
// width: 150
// },
// tableForm: {
// multiple: true,//多选
// isInpuFocusShow: true, // 开启查询弹窗
// searchListPlaceholder: '请选择库位代码', // 输入框占位文本
// searchField: 'code', // 查询弹窗赋值字段
// searchTitle: '库位基础信息', // 查询弹窗标题
// searchAllSchemas: Location.allSchemas, // 查询弹窗所需类
// searchPage: LocationApi.selectBusinessTypeOutLocation, // 查询弹窗所需分页方法
// searchCondition: [{
// key: 'businessType',
// value: 'ReturnToStore', // 生产退料
// isMainValue: false
// },
// {
// key: 'isIn',
// value: 'in',
// isMainValue: false
// }
// ]
// },
// form: {
// // labelMessage: '信息提示说明!!!',
// componentProps: {
// isSearchList: true, // 开启查询弹窗
// multiple: true,//多选
// searchListPlaceholder: '请选择库位代码', // 输入框占位文本
// searchField: 'code', // 查询弹窗赋值字段
// searchTitle: '库位基础信息', // 查询弹窗标题
// searchAllSchemas: Location.allSchemas, // 查询弹窗所需类
// searchPage: LocationApi.selectBusinessTypeOutLocation, // 查询弹窗所需分页方法
// searchCondition: [{
// key: 'businessType',
// value: 'ReturnToStore', // 生产退料
// isMainValue: false
// },
// {
// key: 'isIn',
// value: 'in',
// isMainValue: false
// }]
// }
// }
// },
{
label: '物料代码',
field: 'itemCode',
@ -754,9 +910,15 @@ export const ProductionreturnRequestDetail = useCrudSchemas(reactive<CrudSchema[
{
key: 'locationCode',
value: 'fromLocationCode',
message: '请填写原料库位!',
message: '请填写来源库位!',
isMainValue: true
},
{
key: 'toWarehouseCode',
value: 'toWarehouseCode',
message: '请填写到仓库!',
isMainValue: true
},//接口不需要,单纯为了校验填写
{
key: 'inventoryStatus',
value: 'OK',
@ -765,7 +927,9 @@ export const ProductionreturnRequestDetail = useCrudSchemas(reactive<CrudSchema[
}
},
tableForm:{
isInpuFocusShow: true,
multiple: true,
disabled:true,
// isInpuFocusShow: true,
searchListPlaceholder: '请选择物料代码', // 输入框占位文本
searchField: 'itemCode', // 查询弹窗赋值字段
searchTitle: '库存余额信息', // 查询弹窗标题
@ -775,9 +939,15 @@ export const ProductionreturnRequestDetail = useCrudSchemas(reactive<CrudSchema[
{
key: 'locationCode',
value: 'fromLocationCode',
message: '请填写原料库位!',
message: '请填写来源库位!',
isMainValue: true
},
{
key: 'toWarehouseCode',
value: 'toWarehouseCode',
message: '请填写到仓库!',
isMainValue: true
},//接口不需要,单纯为了校验填写
{
key: 'inventoryStatus',
value: 'OK',
@ -978,15 +1148,7 @@ export const ProductionreturnRequestDetail = useCrudSchemas(reactive<CrudSchema[
}
}
},
{
label: '备注',
field: 'remark',
sort: 'custom',
table: {
width: 150
},
hiddenInMain: true,
},
{
label: '创建者',
field: 'creator',
@ -1102,7 +1264,15 @@ export const ProductionreturnRequestDetail = useCrudSchemas(reactive<CrudSchema[
}
}
},
{
label: '备注',
field: 'remark',
sort: 'custom',
table: {
width: 150
},
hiddenInMain: true,
},
{
label: '包装号',
field: 'packingNumber',
@ -1180,12 +1350,10 @@ const validateQty = (rule: any, value: any, callback: any,a,b) => {
//表单校验
export const ProductionreturnRequestDetailRules = reactive({
workStationCode: [
{ required: true, message: '请选择工位代码', trigger: 'change' }
],
toLocationCode: [
{ required: true, message: '请选择目标库位', trigger: 'change' }
],
// toLocationCode: [
// { required: true, message: '请选择目标库位', trigger: 'change' }
// ],
productionLineCode: [
{ required: true, message: '请选择生产线代码', trigger: 'change' }
],

2
src/views/wms/issueManage/productionreturn/productionreturnRequestMainNo/index.vue

@ -101,7 +101,7 @@
<script setup lang="ts">
import download from '@/utils/download'
import { ProductionreturnRequestMain,ProductionreturnRequestMainRules } from '../productionreturnRequestMain/productionreturnRequestMain.data'
import { ProductionreturnRequestMain,ProductionreturnRequestMainRules } from './productionreturnRequestMain.data'
import { ProductionreturnRequestDetail,ProductionreturnRequestDetailRules, ProductionreturnRequestDetailNoLabel, ProductionreturnRequestDetailNoLabelRules,SupplierdeliverRequestPackage } from './productionreturnRequestMainNo.data'
import * as ProductionreturnRequestMainNoApi from '@/api/wms/productionreturnRequestMainNo'

1527
src/views/wms/issueManage/productionreturn/productionreturnRequestMainNo/productionreturnRequestMain.data.ts

File diff suppressed because it is too large
Loading…
Cancel
Save