// 获取供应商列表 import { getSupplierListByCodes, importTemplate } from '@/api/wms/supplier' // 获取物料列表 import { getItemListByCodes } from '@/api/wms/itembasic' // 获取供应商物料列表 import { getSupplierItemListByCodes } from '@/api/wms/supplieritem' // 获取生产线物料 import { getProductionLineCodelistByCodes } from '@/api/wms/productionlineitem' // 获取包装规格 import { getPackageunitListByCodes } from '@/api/wms/packageunit' // 获取物料包装规格 import { getItemPackageunitListByCodes } from '@/api/wms/itempackage' // 获取客户物料 import { getCustomerItemListByCodes } from '@/api/wms/customeritem' // 获取库存余额 import { getBalanceItemListByCodes } from '@/api/wms/balance' import { isString } from 'min-dash' const message = useMessage() // 消息弹窗 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() 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(searchField,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 || [] //获取失去焦点参数信息 let verificationParams = formSchema?.verificationParams || [] console.log('走新方法啦') // searchCondition = [...searchCondition, ...verificationParams] if (val && isString(val)) { let setV = {} setV[field] = '' let params = {} const _searchCondition = {} let filters: any[] = [] if (searchCondition && searchCondition.length > 0) { // 转换筛选条件所需 for (let i = 0; i < searchCondition.length; i++) { // searchCondition.forEach((item) => { // 查询条件为主表某字段,需要赋值主表数据,数据来源是详情的,赋值需要从row中获取 if (searchCondition[i].isMainValue) { _searchCondition[searchCondition[i].key] = formRef.formModel[ searchCondition[i].value ] ? formRef.formModel[searchCondition[i].value] : detailData ? detailData[searchCondition[i].value] : // : row // ? row[searchCondition[i].value] '' // 是否含有空参数情况 let isNull = false if ( _searchCondition[searchCondition[i].key] == '' || _searchCondition[searchCondition[i].key] == undefined ) { isNull = true } if (isNull) { message.warning( searchCondition[i].message ? searchCondition[i].message : '前置条件未选择!' ) formRef.setValues(setV) return } filters.push({ action: searchCondition[i].action || '==', column: searchCondition[i].key, value: formRef.formModel[searchCondition[i].value] }) } // else if (searchCondition[i].isTableRowValue) { // if (searchCondition[i].required) { // if (row[searchCondition[i].value] == '' || row[searchCondition[i].value] == undefined) { // message.warning( // searchCondition[i].message ? searchCondition[i].message : '前置条件未选择!' // ) // return // } // } // row[searchCondition[i].value] // //查询当前table表数据的值 // _searchCondition[searchCondition[i].key] = row[searchCondition[i].value] // } else { // 扩展 转换为筛选条件进行查询 if (searchCondition[i].isSearch) { if (searchCondition[i].isFormModel) { //用formModel中的值 if (searchCondition[i].required) { if ( formRef.formModel[searchCondition[i].value] == '' || formRef.formModel[searchCondition[i].value] == undefined ) { message.warning( searchCondition[i].message ? searchCondition[i].message : '前置条件未选择!' ) formRef.setValues(setV) return } } 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 { filters.push({ action: searchCondition[i].action || '==', column: searchCondition[i].key, value: searchCondition[i].value }) } } } } 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() }) } else { filters.push({ action: verificationParams[i].action, column: verificationParams[i].key, value: verificationParams[i].value }) } } else { _searchCondition[verificationParams[i].key] = verificationParams[i].value } } } if (filters.length > 0) { _searchCondition.isSearch = true _searchCondition.filters = filters } console.log(4545, _searchCondition) let obj = { by: 'ASC', pageNo: 1, pageSize: 20 } console.log(888, _searchCondition) params = { isSearch: _searchCondition.isSearch, filters: _searchCondition.filters, ...obj } // console.log(333,params) if (!formSchema?.multiple && val.indexOf(',') > -1) { message.alert('该输入框只能输入一条数据') formRef.setValues(setV) return } await formSchema.searchPage(params).then((res) => { let arr1 = val.split(',') let list = ref([]) list.value = res?.list?.length > 0 ? res.list.slice(0, 1) : [] if (list.value?.length == 0) { message.alert('暂无数据') formRef.setValues(setV) return } if (arr1.length != list.value.length) { let arr2 = list.value.map((item) => item.code) let str = [ ...arr1.filter((item) => !arr2.includes(item)), ...arr2.filter((item) => !arr1.includes(item)) ].join(',') message.alert('代码' + str + '没有找到对应数据') formRef.setValues(setV) return } callback(list.value) }) } } else { let pageApi = ref() let params = ref() let setV = {} setV[field] = '' if (val && isString(val)) { if ( field == 'supplierCode' || field == 'itemCode' || field == 'productItemCode' || field == 'componentItemCode' || field == 'packUnit' || field == 'inPackUnit' || field == 'fromPackingNumber' ) { let searchField = 'code' if (field == 'supplierCode') { params.value = val?.trim() pageApi.value = getSupplierListByCodes } else if ( field == 'itemCode' || field == 'productItemCode' || field == 'componentItemCode' ) { // 销售价格单 if (routeName == 'Saleprice') { params.value = { customerCode: formRef.formModel.customerCode, itemCodes: val?.trim() } pageApi.value = getCustomerItemListByCodes searchField = 'itemCode' } else if (routeName == 'ProductscrapRequestMain') { // 制品报废申请 params.value = { productionLineCode: detailData.productionLine || detailData.productionLineCode, itemCodes: val?.trim() } pageApi.value = getProductionLineCodelistByCodes searchField = 'itemCode' } else { // params.value = val.trim() searchField = 'code' params.value = { codes: val?.trim() } pageApi.value = getItemListByCodes } } else if (field == 'packUnit') { if (routeName == 'Itemwarehouse' || routeName == 'Callmaterials') {//物料仓库默认配置,叫料标签 searchField = 'packUnit' params.value = { itemCode: formRef.formModel.itemCode, packUnit: val?.trim() } pageApi.value = getItemPackageunitListByCodes } else { params.value = val?.trim() pageApi.value = getPackageunitListByCodes } } else if (field == 'inPackUnit') { params.value = { itemCode: formRef.formModel.itemCode, packUnit: val.trim() } pageApi.value = getItemPackageunitListByCodes } // else if (formField == 'fromPackingNumber') { // params.value = { // packingNumber: val?.trim() // } // pageApi.value = getBalanceItemListByCodes // } let obj = {} let searchCondition1 = formSchema.searchCondition //获取data.ts参数信息 // 循环参数设置参数为key:value格式 if (searchCondition1 && searchCondition1.length > 0) { for (let i = 0; i < searchCondition1.length; i++) { if (searchCondition1[i].isMainValue) { obj[searchCondition1[i].key] = formRef.formModel[searchCondition1[i].value] ? formRef.formModel[searchCondition1[i].value] : detailData ? detailData[searchCondition1[i].value] : '' // 是否含有空参数情况 let isNull = false if (obj[searchCondition1[i].key] == '' || obj[searchCondition1[i].key] == undefined) { isNull = true } if (isNull) { message.warning( searchCondition1[i].message ? searchCondition1[i].message : '前置条件未选择!' ) 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 : '前置条件未选择!' ) return } } } } else { obj[searchCondition1[i].key] = searchCondition1[i].value } } } } if (!formSchema.multiple && val.indexOf(',') > -1) { message.alert('该输入框只能输入一条数据') formRef.setValues(setV) return } await pageApi.value(params.value).then((res) => { let arr1 = val.split(',') let list = ref([]) list.value = res if (list.value?.length == 0) { message.alert('暂无数据') formRef.setValues(setV) return } if (arr1.length != list.value.length) { let arr2 = list.value.map((item) => item.code) let str = [ ...arr1.filter((item) => !arr2.includes(item)), ...arr2.filter((item) => !arr1.includes(item)) ].join(',') message.alert('代码' + str + '没有找到对应数据') formRef.setValues(setV) return } // emit('searchTableSuccess', formField, searchField, list.value, formRef.value, 'form') callback(list.value) }) } } } } // 根据下方输入框失去焦点校验信息 export const getListByBottonInput = async (headerItem, val, row, routeName, formRef, detailData, tableData, callback) => { let tableFormSchemaObj = headerItem?.tableForm console.log(333,tableFormSchemaObj) if (tableFormSchemaObj.searchPage && tableFormSchemaObj.verificationParams) { let params = ref({}) let list = ref([]) console.log(3344) let searchCondition1 = headerItem.tableForm.searchCondition //获取data.ts参数信息 let 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 ] ? formRef.formModel[searchCondition1[i].value] : detailData ? detailData[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 : '前置条件未选择!' ) return } } else if (searchCondition1[i].isTableRowValue) { if (searchCondition1[i].required) { if (row[searchCondition1[i].value] == '' || row[searchCondition1[i].value] == undefined) { message.warning( searchCondition1[i].message ? searchCondition1[i].message : '前置条件未选择!' ) return } } row[searchCondition1[i].value] //查询当前table表数据的值 params.value[searchCondition1[i].key] = row[searchCondition1[i].value] } 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 : '前置条件未选择!' ) return } } } else { params.value[searchCondition1[i].key] = searchCondition1[i].value } } else { params.value[searchCondition1[i].key] = searchCondition1[i].value } } } } console.log(999, verificationParams) if (verificationParams && verificationParams.length > 0) { for (let i = 0; i < verificationParams.length; i++) { params.value[verificationParams[i].key] = val } } await tableFormSchemaObj.verificationPage(params.value).then(async (res) => { list.value = res ? res : [] let arr1 = val.split(',').map(item => item.trim()) if (arr1.length != res.length) { let arr2 = res.map((item) => item[field]) let str = [ ...arr1.filter((item) => !arr2.includes(item)), ...arr2.filter((item) => !arr1.includes(item)) ].join(',') message.alert('代码' + str + '没有找到对应数据') return } else { let repeatCode = [] if (tableData.length > 0) { tableData.forEach((item) => { const findIndex = arr1.findIndex(valItem => valItem == item[field]) if (findIndex > -1) { arr1.splice(findIndex, 1) repeatCode.push(item.itemCode) } }) } if (repeatCode.length > 0) { message.warning(`${t('ts.代码')}${repeatCode.join(',')}${t('ts.已经存在')}`); return; } callback(list.value) } }) return } else { let pageApi = ref() let params = ref({}) let list = ref([]) let field = 'itemCode' // scp采购订单 if (!val) return; if (routeName == 'PurchaseMain') { pageApi.value = getSupplierItemListByCodes params.value = { supplierCode: formRef.formModel.supplierCode, itemCodes: val?.trim(), available: true } } else if (routeName == 'ProductionMain') { pageApi.value = getProductionLineCodelistByCodes params.value = { productionLineCode: formRef.formModel.productionLine, itemCodes: val?.trim() } } else if ( routeName == 'ZZBJDeliverPlanMain' || routeName == 'DeliverPlanMain' || routeName == 'DeliverRequestMain' || routeName == 'ZZBJDeliverRequestMain' ) { // 自制备件发货计划,发货计划,成品发货申请,自制备件发货申请 pageApi.value = getCustomerItemListByCodes params.value = { customerCode: formRef.formModel.customerCode, itemCodes: val?.trim() } } // else if (routeName == 'UnplannedissueRequestMain') { // // 计划外出库 // pageApi.value = getBalanceItemListByCodes // params.value = { // packingNumber: val?.trim() // } // field = 'packingNumber' // } else { params.value.codes = val?.trim() pageApi.value = getItemListByCodes } await pageApi.value(params.value).then(async (res) => { list.value = res ? res : [] let arr1 = val.split(',').map(item => item.trim()) if (arr1.length != res.length) { let arr2 = res.map((item) => item[field]) let str = [ ...arr1.filter((item) => !arr2.includes(item)), ...arr2.filter((item) => !arr1.includes(item)) ].join(',') message.alert('代码' + str + '没有找到对应数据') return } else { let repeatCode = [] if (tableData.length > 0) { tableData.forEach((item) => { const findIndex = arr1.findIndex(valItem => valItem == item[field]) if (findIndex > -1) { arr1.splice(findIndex, 1) repeatCode.push(item.itemCode) } }) } if (repeatCode.length > 0) { message.warning(`${t('ts.代码')}${repeatCode.join(',')}${t('ts.已经存在')}`); return; } callback(list.value) } }) } }