diff --git a/src/api/wms/business/inputBlur.ts b/src/api/wms/business/inputBlur.ts index 50ffd9583..20a179bb8 100644 --- a/src/api/wms/business/inputBlur.ts +++ b/src/api/wms/business/inputBlur.ts @@ -22,95 +22,122 @@ const { t } = useI18n() // 国际化 * tableFormBlur 表格表单失去焦点时候获取焦点 * FormBlur 表格失去焦点时候获取焦点 */ -export const tableFormBlurVer = async (headerItem, val, row, index,routeName,formRef,detailData,tableData,callback) => { - if ( - headerItem.field == 'fromPackingNumber' || - headerItem.field == 'packingNumber' || - headerItem.field == 'itemCode' || - headerItem.field == 'packUnit' || - headerItem.field == 'secondPackUnit' || - headerItem.field == 'fromPackUnit' || - headerItem.field == 'toPackUnit'|| - headerItem.field == 'toPackUnit'|| - headerItem.field == 'supplierItemCode' - - ) { - let searchField = headerItem.field - let pageApi = ref() - let params = ref() - +export const tableFormBlurVer = async (headerItem, val, row, index, routeName, formRef, detailData, tableData, callback) => { + if (headerItem.tableForm.searchPage && headerItem.tableForm.verificationParams) { if (val && isString(val)) { - // const obj = props.tableAllSchemas.tableFormColumns.find((item) => item.field == headerItem.field) if (val.indexOf(',') > -1) { message.alert('该输入框只能输入一条数据') row[headerItem.field] = '' return } // 校验 - let params = ref({}) - let searchCondition1 = headerItem.tableForm.searchCondition //获取data.ts参数信息 + const params = ref({}) + const filters: any[] = [] + const searchCondition = headerItem.tableForm.searchCondition //获取data.ts参数信息 + const verificationParams = headerItem.tableForm.verificationParams //获取data.ts参数信息 // 循环参数设置参数为key:value格式 - if (searchCondition1 && searchCondition1.length > 0) { - for (let i = 0; i < searchCondition1.length; i++) { - if (searchCondition1[i].isMainValue) { - params.value[searchCondition1[i].key] = formRef.formModel[ - searchCondition1[i].value + if (searchCondition && searchCondition.length > 0) { + for (let i = 0; i < searchCondition.length; i++) { + if (searchCondition[i].isMainValue) { + params.value[searchCondition[i].key] = formRef.formModel[ + searchCondition[i].value ] - ? formRef.formModel[searchCondition1[i].value] + ? formRef.formModel[searchCondition[i].value] : detailData - ? detailData[searchCondition1[i].value] - : row - ? row[searchCondition1[i].value] - : '' + ? detailData[searchCondition[i].value] + : row + ? row[searchCondition[i].value] + : '' // 是否含有空参数情况 let isNull = false if ( - params.value[searchCondition1[i].key] == '' || - params.value[searchCondition1[i].key] == undefined + params.value[searchCondition[i].key] == '' || + params.value[searchCondition[i].key] == undefined ) { isNull = true } if (isNull) { message.warning( - searchCondition1[i].message ? searchCondition1[i].message : '前置条件未选择!' + searchCondition[i].message ? searchCondition[i].message : '前置条件未选择!' ) row[headerItem.field] = '' return } + filters.push({ + action: searchCondition[i].action || '==', + column: searchCondition[i].key, + value: formRef.formModel[searchCondition[i].value] + }) } else { // 扩展 转换为筛选条件进行查询 - if (searchCondition1[i].isSearch) { - if (searchCondition1[i].isFormModel) { + if (searchCondition[i].isSearch) { + if (searchCondition[i].isFormModel) { //用formModel中的值 - if (searchCondition1[i].required) { + if (searchCondition[i].required) { if ( - formRef.formModel[searchCondition1[i].value] == '' || - formRef.formModel[searchCondition1[i].value] == undefined + formRef.formModel[searchCondition[i].value] == '' || + formRef.formModel[searchCondition[i].value] == undefined ) { message.warning( - searchCondition1[i].message ? searchCondition1[i].message : '前置条件未选择!' + searchCondition[i].message ? searchCondition[i].message : '前置条件未选择!' ) row[headerItem.field] = '' return } } } + filters.push({ + action: searchCondition[i].action || '==', + column: searchCondition[i].key, + value: formRef.formModel[searchCondition[i].value] + }) } else { - params.value[searchCondition1[i].key] = searchCondition1[i].value + params.value[searchCondition[i].key] = searchCondition[i].value } } } } - params.value[headerItem.field] = val?.trim() + if (verificationParams && verificationParams.length > 0) { + // 转换筛选条件所需 + for (let i = 0; i < verificationParams.length; i++) { + // 扩展 转换为筛选条件进行查询 + if (verificationParams[i].isSearch) { + if (verificationParams[i].isFormModel) { + filters.push({ + action: verificationParams[i].action, + column: verificationParams[i].key, + value: formRef.formModel[verificationParams[i].value] + ? formRef.formModel[verificationParams[i].value] + : val.trim() + }) + filters.push({ + action: searchCondition[i].action || '==', + column: searchCondition[i].key, + value: formRef.formModel[searchCondition[i].value] + }) + } else { + filters.push({ + action: searchCondition[i].action || '==', + column: searchCondition[i].key, + value: searchCondition[i].value + }) + } + } else { + params[verificationParams[i].key] = verificationParams[i].value + } + } + } // 判断改包装号是否已经添加 const seen = new Set() const repeatCode = new Set() - let arr = tableData.map((item) => item[headerItem.field]?.trim()) + const arr = tableData.map((item) => item[headerItem.field]?.trim()) arr.forEach((item) => { - if (seen.has(item)) { - repeatCode.add(item) - } else { - seen.add(item) + if (item) { + if (seen.has(item)) { + repeatCode.add(item) + } else { + seen.add(item) + } } }) const arr1 = Array.from(repeatCode) @@ -119,132 +146,258 @@ export const tableFormBlurVer = async (headerItem, val, row, index,routeName,for row[headerItem.field] = '' return } - if ( - headerItem.field == 'fromPackingNumber' || - headerItem.field == 'packingNumber' || - headerItem.field == 'itemCode' - ) { - // 业务 - // 采购退货申请,制品拆解,调拨出库,报废出库申请,合格转隔离,隔离转合格,隔离转报废,合格转报废,报废转隔离,库存移动申请,库存修改申请 - if ( - routeName == 'PurchasereturnRequestMain' || - routeName == 'ProductdismantleRequestMain' || - routeName == 'TransferissueRequestMain' || - routeName == 'ScrapRequestMain' || - routeName == 'OktoholdRequestMain' || - routeName == 'HoldtookRequestMain' || - routeName == 'HoldtoscrapRequestMain' || - routeName == 'OktoscrapRequestMain' || - routeName == 'ScraptoholdRequestMain' || - routeName == 'InventorymoveRequestMain' || - routeName == 'InventorychangeRequestMain' - ) { - // //合格转隔离,隔离转合格,隔离转报废,合格转报废,报废转隔离,库存移动申请参数稍有不同 - // if ( - // routeName == 'OktoholdRequestMain' || - // routeName == 'HoldtookRequestMain' || - // routeName == 'HoldtoscrapRequestMain' || - // routeName == 'OktoscrapRequestMain' || - // routeName == 'ScraptoholdRequestMain' || - // routeName == 'InventorymoveRequestMain' || - // routeName == 'InventorychangeRequestMain' - // ) { - // searchField = 'packingNumber' - // params.value.packingNumber = val?.trim() - // } - // pageApi.value = getBalanceItemListByCodes - } else if ( - routeName == 'RepleinshRequestMain' || - routeName == 'IssueRequestMain' || - routeName == 'InventoryinitRequestMain' - ) { - // 补料申请业务 - pageApi.value = getItemListByCodes - searchField = 'code' - params.value.codes = val?.trim() - } else if ( - routeName == 'ProductionMainAssemble' || - routeName == 'ProductionMainASparePart' || - routeName == 'ProductionMainPredictSparePart' || - routeName == 'ProductreceiptRequestMain' || - routeName == 'ProductreceiptRequestMainA' || - routeName == 'ProductreceiptscrapRequestMain' || - routeName == 'ProductscrapRequestMain' - ) { - // 装配计划,裝配备件计划,预备产件计划,预生产收货申请,装配收货申请,报修收货申请,制品报废申请 - pageApi.value = getProductionLineCodelistByCodes - params.value.productionLineCode= - formRef.formModel.productionLine || formRef.formModel.productionLineCode || row.productionLine || row.productionLineCode, - params.value.itemCodes=val?.trim() - } - } else if ( - headerItem.field == 'packUnit' || - headerItem.field == 'secondPackUnit' || - headerItem.field == 'fromPackUnit' || - headerItem.field == 'toPackUnit' - ) { - searchField = 'packUnit' - //包装规格 - // 预生产收货申请,装配收货申请,报修收货申请,客户退货申请,计划外入库,计划外出库,翻包申请 - if ( - routeName == 'ProductreceiptRequestMain' || - routeName == 'ProductreceiptRequestMainA' || - routeName == 'ProductreceiptscrapRequestMain' || - routeName == 'CustomerreturnRequestMain' || - routeName == 'UnplannedreceiptRequestMain' || - routeName == 'UnplannedissueJobMain' || - routeName == 'PackageoverRequestMain' - ) { - params.value.itemCode= row.itemCode - params.value.packUnit= val?.trim() - pageApi.value = getItemPackageunitListByCodes - } - } else if ( - headerItem.field == 'supplierItemCode' - ) { - // 生产退料申请,隔离退料申请 - if ( - routeName == 'ProductionreturnRequestMain' || - routeName == 'ProductionreturnRequestMainNo' - ) { - searchField = 'supplierCode' - params.value.itemCodes= row.itemCode - params.value.supplierCode= val?.trim() - pageApi.value = getSupplierItemListByCodes - } + if (filters.length > 0) { + params.value.isSearch = true + params.value.filters = filters + } + const obj = { + by: 'ASC', + pageNo: 1, + pageSize: 20 + } + params.value = { + isSearch: params.value.isSearch, + filters: params.value.filters, + ...obj } const list = ref() // 调取包装接口 - await pageApi.value(params.value).then(async (res) => { - list.value = res ? res : [] + await headerItem.tableForm.searchPage(params.value).then(async (res) => { + + list.value = res?.list?.length > 0 ? res.list.slice(0, 1) : [] // 只查一条数据,多条数据查询默认显示不存在 - if (res.length == 1) { - callback(searchField,list.value) - } else { + if (list.value?.length == 0) { message.alert('代码' + row[headerItem.field] + '没有找到对应数据') row[headerItem.field] = '' return } + callback(list.value) }) } + } else { + if ( + headerItem.field == 'fromPackingNumber' || + headerItem.field == 'packingNumber' || + headerItem.field == 'itemCode' || + headerItem.field == 'packUnit' || + headerItem.field == 'secondPackUnit' || + headerItem.field == 'fromPackUnit' || + headerItem.field == 'toPackUnit'|| + headerItem.field == 'toPackUnit'|| + headerItem.field == 'supplierItemCode' + + ) { + let searchField = headerItem.field + let pageApi = ref() + let params = ref() + + if (val && isString(val)) { + // const obj = props.tableAllSchemas.tableFormColumns.find((item) => item.field == headerItem.field) + if (val.indexOf(',') > -1) { + message.alert('该输入框只能输入一条数据') + row[headerItem.field] = '' + return + } + // 校验 + let params = ref({}) + let searchCondition1 = headerItem.tableForm.searchCondition //获取data.ts参数信息 + // 循环参数设置参数为key:value格式 + if (searchCondition1 && searchCondition1.length > 0) { + for (let i = 0; i < searchCondition1.length; i++) { + if (searchCondition1[i].isMainValue) { + params.value[searchCondition1[i].key] = formRef.formModel[ + searchCondition1[i].value + ] + ? formRef.formModel[searchCondition1[i].value] + : detailData + ? detailData[searchCondition1[i].value] + : row + ? row[searchCondition1[i].value] + : '' + // 是否含有空参数情况 + let isNull = false + if ( + params.value[searchCondition1[i].key] == '' || + params.value[searchCondition1[i].key] == undefined + ) { + isNull = true + } + if (isNull) { + message.warning( + searchCondition1[i].message ? searchCondition1[i].message : '前置条件未选择!' + ) + row[headerItem.field] = '' + return + } + } else { + // 扩展 转换为筛选条件进行查询 + if (searchCondition1[i].isSearch) { + if (searchCondition1[i].isFormModel) { + //用formModel中的值 + if (searchCondition1[i].required) { + if ( + formRef.formModel[searchCondition1[i].value] == '' || + formRef.formModel[searchCondition1[i].value] == undefined + ) { + message.warning( + searchCondition1[i].message ? searchCondition1[i].message : '前置条件未选择!' + ) + row[headerItem.field] = '' + return + } + } + } + } else { + params.value[searchCondition1[i].key] = searchCondition1[i].value + } + } + } + } + params.value[headerItem.field] = val?.trim() + // 判断改包装号是否已经添加 + const seen = new Set() + const repeatCode = new Set() + let arr = tableData.map((item) => item[headerItem.field]?.trim()) + arr.forEach((item) => { + if (seen.has(item)) { + repeatCode.add(item) + } else { + seen.add(item) + } + }) + const arr1 = Array.from(repeatCode) + if (arr1.length > 0) { + message.warning(`${arr1.join(',')}${t('ts.已经存在')}`) + row[headerItem.field] = '' + return + } + if ( + headerItem.field == 'fromPackingNumber' || + headerItem.field == 'packingNumber' || + headerItem.field == 'itemCode' + ) { + // 业务 + // 采购退货申请,制品拆解,调拨出库,报废出库申请,合格转隔离,隔离转合格,隔离转报废,合格转报废,报废转隔离,库存移动申请,库存修改申请 + if ( + routeName == 'PurchasereturnRequestMain' || + routeName == 'ProductdismantleRequestMain' || + routeName == 'TransferissueRequestMain' || + routeName == 'ScrapRequestMain' || + routeName == 'OktoholdRequestMain' || + routeName == 'HoldtookRequestMain' || + routeName == 'HoldtoscrapRequestMain' || + routeName == 'OktoscrapRequestMain' || + routeName == 'ScraptoholdRequestMain' || + routeName == 'InventorymoveRequestMain' || + routeName == 'InventorychangeRequestMain' + ) { + // //合格转隔离,隔离转合格,隔离转报废,合格转报废,报废转隔离,库存移动申请参数稍有不同 + // if ( + // routeName == 'OktoholdRequestMain' || + // routeName == 'HoldtookRequestMain' || + // routeName == 'HoldtoscrapRequestMain' || + // routeName == 'OktoscrapRequestMain' || + // routeName == 'ScraptoholdRequestMain' || + // routeName == 'InventorymoveRequestMain' || + // routeName == 'InventorychangeRequestMain' + // ) { + // searchField = 'packingNumber' + // params.value.packingNumber = val?.trim() + // } + // pageApi.value = getBalanceItemListByCodes + } else if ( + routeName == 'RepleinshRequestMain' || + routeName == 'IssueRequestMain' || + routeName == 'InventoryinitRequestMain' + ) { + // 补料申请业务 + pageApi.value = getItemListByCodes + searchField = 'code' + params.value.codes = val?.trim() + } else if ( + routeName == 'ProductionMainAssemble' || + routeName == 'ProductionMainASparePart' || + routeName == 'ProductionMainPredictSparePart' || + routeName == 'ProductreceiptRequestMain' || + routeName == 'ProductreceiptRequestMainA' || + routeName == 'ProductreceiptscrapRequestMain' || + routeName == 'ProductscrapRequestMain' + ) { + // 装配计划,裝配备件计划,预备产件计划,预生产收货申请,装配收货申请,报修收货申请,制品报废申请 + pageApi.value = getProductionLineCodelistByCodes + params.value.productionLineCode= + formRef.formModel.productionLine || formRef.formModel.productionLineCode || row.productionLine || row.productionLineCode, + params.value.itemCodes=val?.trim() + } + } else if ( + headerItem.field == 'packUnit' || + headerItem.field == 'secondPackUnit' || + headerItem.field == 'fromPackUnit' || + headerItem.field == 'toPackUnit' + ) { + searchField = 'packUnit' + //包装规格 + // 预生产收货申请,装配收货申请,报修收货申请,客户退货申请,计划外入库,计划外出库,翻包申请 + if ( + routeName == 'ProductreceiptRequestMain' || + routeName == 'ProductreceiptRequestMainA' || + routeName == 'ProductreceiptscrapRequestMain' || + routeName == 'CustomerreturnRequestMain' || + routeName == 'UnplannedreceiptRequestMain' || + routeName == 'UnplannedissueJobMain' || + routeName == 'PackageoverRequestMain' + ) { + params.value.itemCode= row.itemCode + params.value.packUnit= val?.trim() + pageApi.value = getItemPackageunitListByCodes + } + } else if ( + headerItem.field == 'supplierItemCode' + ) { + // 生产退料申请,隔离退料申请 + if ( + routeName == 'ProductionreturnRequestMain' || + routeName == 'ProductionreturnRequestMainNo' + ) { + searchField = 'supplierCode' + params.value.itemCodes= row.itemCode + params.value.supplierCode= val?.trim() + pageApi.value = getSupplierItemListByCodes + } + } + const list = ref() + // 调取包装接口 + await pageApi.value(params.value).then(async (res) => { + list.value = res ? res : [] + // 只查一条数据,多条数据查询默认显示不存在 + if (res.length == 1) { + callback(list.value) + } else { + message.alert('代码' + row[headerItem.field] + '没有找到对应数据') + row[headerItem.field] = '' + return + } + }) + } + } } } export const FormBlur = async (field, val, routeName, formRef, detailData, formSchema, callback) => { if (formSchema.searchPage && formSchema.verificationParams) { //获取data.ts参数信息 - let searchCondition = formSchema?.searchCondition || [] + const searchCondition = formSchema?.searchCondition || [] //获取失去焦点参数信息 - let verificationParams = formSchema?.verificationParams || + const verificationParams = formSchema?.verificationParams || [] console.log('走新方法啦') // searchCondition = [...searchCondition, ...verificationParams] if (val && isString(val)) { - let setV = {} + const setV = {} setV[field] = '' let params = {} const _searchCondition = {} - let filters: any[] = [] + const filters: any[] = [] if (searchCondition && searchCondition.length > 0) { // 转换筛选条件所需 for (let i = 0; i < searchCondition.length; i++) { @@ -359,12 +512,13 @@ export const FormBlur = async (field, val, routeName, formRef, detailData, formS } } } + console.log(filters) if (filters.length > 0) { _searchCondition.isSearch = true _searchCondition.filters = filters } console.log(4545, _searchCondition) - let obj = { + const obj = { by: 'ASC', pageNo: 1, pageSize: 20 @@ -382,8 +536,8 @@ export const FormBlur = async (field, val, routeName, formRef, detailData, formS return } await formSchema.searchPage(params).then((res) => { - let arr1 = val.split(',') - let list = ref([]) + const arr1 = val.split(',') + const list = ref([]) list.value = res?.list?.length > 0 ? res.list.slice(0, 1) : [] if (list.value?.length == 0) { message.alert('暂无数据') @@ -391,8 +545,8 @@ export const FormBlur = async (field, val, routeName, formRef, detailData, formS return } if (arr1.length != list.value.length) { - let arr2 = list.value.map((item) => item.code) - let str = [ + const arr2 = list.value.map((item) => item.code) + const str = [ ...arr1.filter((item) => !arr2.includes(item)), ...arr2.filter((item) => !arr1.includes(item)) ].join(',') diff --git a/src/components/BasicForm/src/BasicForm.vue b/src/components/BasicForm/src/BasicForm.vue index 74928cee4..99a390f19 100644 --- a/src/components/BasicForm/src/BasicForm.vue +++ b/src/components/BasicForm/src/BasicForm.vue @@ -904,11 +904,11 @@ const inputStringBlur = async (headerItem, val, row, index) => { formRef.value, props.detailData, props.tableData, - (searchField, list) => { + ( list) => { emit( 'searchTableSuccess', headerItem.field, - searchField, + headerItem.tableForm.searchField, list, formRef.value, 'tableForm', diff --git a/src/views/wms/purchasereceiptManage/purchasereceipt/purchasereceiptRequestMain/purchasereceiptRequestMain.data.ts b/src/views/wms/purchasereceiptManage/purchasereceipt/purchasereceiptRequestMain/purchasereceiptRequestMain.data.ts index abb308c19..f83af7467 100644 --- a/src/views/wms/purchasereceiptManage/purchasereceipt/purchasereceiptRequestMain/purchasereceiptRequestMain.data.ts +++ b/src/views/wms/purchasereceiptManage/purchasereceipt/purchasereceiptRequestMain/purchasereceiptRequestMain.data.ts @@ -988,7 +988,8 @@ export const PurchasereceiptRequestDetail = useCrudSchemas(reactive