diff --git a/src/api/eam/equipmentRepairJobMain/index.ts b/src/api/eam/equipmentRepairJobMain/index.ts
index e06982c20..3e7cad2b0 100644
--- a/src/api/eam/equipmentRepairJobMain/index.ts
+++ b/src/api/eam/equipmentRepairJobMain/index.ts
@@ -69,6 +69,11 @@ export const createEquipmentRepairJobMain = async (data: EquipmentRepairJobMainV
return await request.post({ url: `/eam/equipment-repair-job-main/create`, data })
}
+// 维修验证更新工单主
+export const wxVerifyEquipmentRepairJobMain = async (data: EquipmentRepairJobMainVO) => {
+ return await request.post({ url: `/eam/equipment-repair-job-main/wxVerify`, data })
+}
+
// 修改维修工单主
export const updateEquipmentRepairJobMain = async (data: EquipmentRepairJobMainVO) => {
return await request.put({ url: `/eam/equipment-repair-job-main/update`, data })
diff --git a/src/api/eam/equipmentReportRepairRequest/index.ts b/src/api/eam/equipmentReportRepairRequest/index.ts
index 10542bbf9..c804cc467 100644
--- a/src/api/eam/equipmentReportRepairRequest/index.ts
+++ b/src/api/eam/equipmentReportRepairRequest/index.ts
@@ -77,6 +77,11 @@ export const updateEquipmentReportRepairOrder = async (data: EquipmentReportRepa
return await request.post({ url: `/eam/equipment-report-repair-request/updateOrder`, data })
}
+// 审核报修工单状态
+export const audiEquipmentReportRepairOrder = async (data: EquipmentReportRepairRequestVO) => {
+ return await request.post({ url: `/eam/equipment-report-repair-request/audiOrder`, data })
+}
+
// 完成并创建维修工单
export const createEquipmentWeixiuOrder = async (data: EquipmentReportRepairRequestVO) => {
return await request.post({ url: `/eam/equipment-report-repair-request/updateCreateOrder`, data })
diff --git a/src/api/wms/balance/index.ts b/src/api/wms/balance/index.ts
index 839ac877a..fbca93edf 100644
--- a/src/api/wms/balance/index.ts
+++ b/src/api/wms/balance/index.ts
@@ -189,4 +189,8 @@ export const getBalanceByBusinessTypeByItemType = async (params) => {
} else {
return await request.get({ url: `/wms/balance/pageBusinessTypeToBalance`, params })
}
-}
\ No newline at end of file
+}
+// 根据code获取数据列表
+export const getBalanceItemListByCodes = async (data) => {
+ return await request.get({ url: `/wms/balance/listByCodes`,data })
+ }
\ No newline at end of file
diff --git a/src/api/wms/business/business.ts b/src/api/wms/business/business.ts
new file mode 100644
index 000000000..6329afa0b
--- /dev/null
+++ b/src/api/wms/business/business.ts
@@ -0,0 +1,524 @@
+// 获取供应商列表
+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 (formField, val,routeName,formRef,detailData,formSchema,callback) => {
+ let pageApi = ref()
+ let params = ref()
+ let setV = {}
+ setV[formField] = ''
+ if (val && isString(val)) {
+ if (
+ formField == 'supplierCode' ||
+ formField == 'itemCode' ||
+ formField == 'productItemCode' ||
+ formField == 'componentItemCode' ||
+ formField == 'packUnit' ||
+ formField == 'inPackUnit' ||
+ formField == 'fromPackingNumber'
+ ) {
+ let searchField = 'code'
+ if (formField == 'supplierCode') {
+ params.value = val?.trim()
+ pageApi.value = getSupplierListByCodes
+ } else if (
+ formField == 'itemCode' ||
+ formField == 'productItemCode' ||
+ formField == '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 (formField == '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 (formField == '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.find((item) => item.field == formField).componentProps
+ .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
+ }
+ }
+ }
+ }
+
+ let obj1 = formSchema.find((item) => item.field == formField)
+ if (!obj1.componentProps.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(searchField,list.value)
+ })
+ }
+ }
+}
+
+// 根据下方输入框失去焦点校验信息
+export const getListByBottonInput = async (headerItem, val,row,routeName,formRef,detailData,tableData,callback) => {
+ 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
+ }
+ 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]
+ : ''
+ // 是否含有空参数情况
+ 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
+ }
+ }
+ }
+ }
+ 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)
+ }
+ })
+}
diff --git a/src/api/wms/customeritem/index.ts b/src/api/wms/customeritem/index.ts
index c4c27e8a7..b9af7035d 100644
--- a/src/api/wms/customeritem/index.ts
+++ b/src/api/wms/customeritem/index.ts
@@ -72,4 +72,9 @@ export const getPageBusinessTypeToItemCode = async (params) => {
} else {
return await request.get({ url: `/wms/customeritem/pageBusinessTypeToItemCode`, params })
}
-}
\ No newline at end of file
+}
+
+// 根据code获取数据列表
+export const getCustomerItemListByCodes = async (data) => {
+ return await request.get({ url: `/wms/customeritem/listByCodes?itemCodes=` + data.itemCodes + '&customerCode='+data.customerCode + '&businessType='+(data.businessType?data.businessType:'') })
+}
diff --git a/src/api/wms/itembasic/index.ts b/src/api/wms/itembasic/index.ts
index 25f3566ec..efd0319f0 100644
--- a/src/api/wms/itembasic/index.ts
+++ b/src/api/wms/itembasic/index.ts
@@ -113,4 +113,9 @@ export const selectConfigToItembasic = async (params) => {
// 根据物料代码查计量单位
export const getQueryItemCodeInfo = async (data) => {
return await request.post({ url: 'wms/itembasic/queryItemCodeInfo', data })
-}
\ No newline at end of file
+}
+// 根据code获取数据列表
+export const getItemListByCodes = async (params) => {
+ return await request.get({ url: `/wms/itembasic/listByCodes`,params})
+}
+
diff --git a/src/api/wms/itempackage/index.ts b/src/api/wms/itempackage/index.ts
index 97eb8348e..555a174b0 100644
--- a/src/api/wms/itempackage/index.ts
+++ b/src/api/wms/itempackage/index.ts
@@ -86,3 +86,7 @@ export const exportItempackaging = async (params) => {
export const importTemplate = () => {
return request.download({ url: '/wms/itempackage/get-import-template' })
}
+// 根据code获取数据列表
+export const getItemPackageunitListByCodes = async (data) => {
+ return await request.get({ url: `/wms/itempackage/listByCodes?itemCode=` + data.itemCode + '&packUnit='+data.packUnit})
+}
diff --git a/src/api/wms/packageunit/index.ts b/src/api/wms/packageunit/index.ts
index 940fabef9..fa1718d35 100644
--- a/src/api/wms/packageunit/index.ts
+++ b/src/api/wms/packageunit/index.ts
@@ -69,3 +69,8 @@ export const exportPackageunit = async (params) => {
export const importTemplate = () => {
return request.download({ url: '/wms/packageunit/get-import-template' })
}
+
+// 根据code获取数据列表
+export const getPackageunitListByCodes = async (codes: string) => {
+ return await request.get({ url: `/wms/packageunit/listByCodes?codes=` + codes })
+}
diff --git a/src/api/wms/productionlineitem/index.ts b/src/api/wms/productionlineitem/index.ts
index cc9716fe3..0b3b03e20 100644
--- a/src/api/wms/productionlineitem/index.ts
+++ b/src/api/wms/productionlineitem/index.ts
@@ -67,3 +67,8 @@ export const exportProductionlineitem = async (params) => {
export const importTemplate = () => {
return request.download({ url: '/wms/productionlineitem/get-import-template' })
}
+
+
+export const getProductionLineCodelistByCodes = (data) => {
+ return request.get({ url: `/wms/productionlineitem/listByCodes?productionLineCode=`+data.productionLineCode +'&itemCodes='+data.itemCodes})
+}
diff --git a/src/api/wms/supplier/index.ts b/src/api/wms/supplier/index.ts
index 961d949a0..1287bea73 100644
--- a/src/api/wms/supplier/index.ts
+++ b/src/api/wms/supplier/index.ts
@@ -93,3 +93,9 @@ export const exportSupplierSCP = async (params) => {
export const importTemplate = () => {
return request.download({ url: '/wms/supplier/get-import-template' })
}
+
+// 根据code获取数据列表
+export const getSupplierListByCodes = async (codes: string) => {
+ return await request.get({ url: `/wms/supplier/listByCodes?codes=` + codes })
+}
+
diff --git a/src/api/wms/supplierinvoiceRequestMain/index.ts b/src/api/wms/supplierinvoiceRequestMain/index.ts
index 5358945de..338cd176e 100644
--- a/src/api/wms/supplierinvoiceRequestMain/index.ts
+++ b/src/api/wms/supplierinvoiceRequestMain/index.ts
@@ -147,3 +147,8 @@ export const getLoginUserRoleList = async () => {
}
+// 编辑的时候计算主表系统税额
+export const getTaxAmount = async ({id,taxRate}) => {
+ return await request.get({ url: `/wms/supplierinvoice-request-main/computeById?id=${id}&taxRate=${taxRate}`})
+
+}
\ No newline at end of file
diff --git a/src/api/wms/supplieritem/index.ts b/src/api/wms/supplieritem/index.ts
index e6002d3c7..81cbf3d12 100644
--- a/src/api/wms/supplieritem/index.ts
+++ b/src/api/wms/supplieritem/index.ts
@@ -99,4 +99,10 @@ export const selectItembasicTypeToSupplieritem = async (params) => {
export const getDefaultLocationCode = async(data: SupplieritemVO)=> {
return await request.post({ url: `/wms/supplieritem/getDefaultLocationCode`, data })
-}
\ No newline at end of file
+}
+
+
+// 根据code获取数据列表
+export const getSupplierItemListByCodes = async (data) => {
+ return await request.get({ url: `/wms/supplieritem/listByCodes?supplierCode=`+data.supplierCode +'&itemCodes='+data.itemCodes })
+}
diff --git a/src/components/Annex/src/Annex.vue b/src/components/Annex/src/Annex.vue
index 2c7f75bfe..a9f8b472b 100644
--- a/src/components/Annex/src/Annex.vue
+++ b/src/components/Annex/src/Annex.vue
@@ -3,7 +3,7 @@
-
@@ -56,6 +56,10 @@ const props = defineProps({
return ['apk','doc', 'xls', 'ppt', 'txt', 'pdf','png', 'jpg', 'jpeg']
}
},
+ fileSize:{
+ type:Number,
+ required: false,
+ },
showPreview: {
type: Boolean,
required: false
diff --git a/src/components/BasicForm/src/BasicForm.vue b/src/components/BasicForm/src/BasicForm.vue
index 6ec7b387c..5444c2218 100644
--- a/src/components/BasicForm/src/BasicForm.vue
+++ b/src/components/BasicForm/src/BasicForm.vue
@@ -99,6 +99,8 @@
@tableFormSelectOnBlur="tableFormSelectOnBlur"
@formFormDateChange="formFormDateChange"
@clearInput='clearInput'
+ @batchAdd="batchAdd"
+ :routeName="routeName"
>
@@ -132,9 +134,8 @@ import * as defaultButtons from '@/utils/disposition/defaultButtons'
import ButtonBase from '@/components/XButton/src/ButtonBase.vue'
import TableForm from '@/components/TableForm/src/TableForm.vue'
import TableFormCountPlan from '@/components/TableFormCountPlan/src/TableFormCountPlan.vue'
-import { DICT_TYPE, getStrDictOptions } from '@/utils/dict'
-import { debounce } from 'lodash-es'
+import { tableFormBlurVer,FormBlur,getListByBottonInput } from '@/api/wms/business/business'
const props = defineProps({
// 显示窗口宽度设置
basicFormWidth: {
@@ -338,7 +339,10 @@ const formRef = ref() // 表单 Ref
const formSchema = ref(props.formAllSchemas?.formSchema)
const tableAllSchemas = ref(props.tableAllSchemas)
const tableFormRules = ref(props.tableFormRules)
-console.log(111,formSchema)
+const route = useRoute() // 路由信息
+const routeName = ref('')
+routeName.value = route.name
+const isExecute = ref(true)//如果走失去焦点的方法只有为true的时候才能进行保存
// 列表-按钮
// const buttondata = [
@@ -496,9 +500,13 @@ let originFormModel = {}
const updateOriginFormModel = (data)=>{
originFormModel = JSON.parse(JSON.stringify(data))
}
+const sumFormDataHandle1 = ()=>{
+ emit('sumFormDataHandle',formRef,unref(formRef)?.formModel,props.tableData,formType.value,originFormModel,updateOriginFormModel)
+}
+
watch(()=>unref(formRef)?.formModel,async () => {
if(props?.sumFormDataByForm&&unref(formRef)?.formModel){
- props?.sumFormDataByForm(formRef,unref(formRef)?.formModel,props.tableData,formType.value,originFormModel,updateOriginFormModel)
+ props?.sumFormDataByForm(formRef,unref(formRef)?.formModel,props.tableData,formType.value,originFormModel,updateOriginFormModel,sumFormDataHandle1)
}
},{
deep:true
@@ -674,7 +682,8 @@ const emit = defineEmits([
'formFormDateChange',
'footButtonClick',
'clearSearchInput',
- 'clearInput'
+ 'clearInput',
+ 'sumFormDataHandle'
])
//普通下拉改变事件
const formSelectChange = (field, val, row) => {
@@ -758,11 +767,42 @@ const onChange = (field, cur) => {
/**
* 监听失焦事件
* @param field 当前操作字段
- * @param e
+ * @param e
*/
-const onBlur = (field, e) => {
+ const onBlur = async (field, e) => {
+ isExecute.value = false
+ await FormBlur(field, e,routeName.value,formRef.value,props.detailData,formSchema.value,(searchField, list)=>{
+ emit('searchTableSuccess', field, searchField, list, formRef.value, 'form')
+ })
+ isExecute.value = true
emit('onBlur', field, e)
}
+
+// 批量增加
+const batchAdd = async (val) => {
+ const row = {}
+ tableAllSchemas.value.tableFormColumns.forEach((item) => {
+ row[item.field] = item.default ? item.default : ''
+ })
+ const headerItem = tableAllSchemas.value.tableColumns.find((item) => item.field == props.fieldTableColumn)
+
+
+
+ await getListByBottonInput(headerItem, val,row,routeName.value,formRef.value,props.detailData,props.tableData,(list)=>{
+ emit('searchTableSuccess',headerItem.field,'itemCode',list, formRef.value,'tableForm',row)
+ })
+}
+
+const inputStringBlur = async (headerItem, val, row, index) => {
+ // isExecute.value = false
+ await tableFormBlurVer(headerItem,val,row,index,routeName.value,formRef.value,props.detailData,props.tableData,(searchField, list)=>{
+ emit('searchTableSuccess',headerItem.field,searchField,list, formRef.value,'tableForm',row,'blur',index)
+ })
+
+ // isExecute.value = true
+}
+
+
/**
* 回车事件
* @param field 当前操作字段
@@ -791,9 +831,7 @@ const buttonOperationClick = (row, label, index)=> {
emit("buttonOperationClick", row, label, index);
}
-const inputStringBlur = (headerItem, row, index)=> {
- emit("inputStringBlur", headerItem, row, index);
-}
+
defineExpose({ open, formRef, opensearchTable, dialogVisible, formLoading ,handleAddTable,changeDialogWidth}) // 提供 open 方法,用于打开弹窗
diff --git a/src/components/BasicForm/src/BasicFormWmsCount.vue b/src/components/BasicForm/src/BasicFormWmsCount.vue
index 97eccb7a1..9b7543781 100644
--- a/src/components/BasicForm/src/BasicFormWmsCount.vue
+++ b/src/components/BasicForm/src/BasicFormWmsCount.vue
@@ -757,7 +757,7 @@ const submitForm = async () => {
try {
const data = unref(formRef)?.formModel
const data1 = unref(formRef1)?.formModel
- emit('submitForm', formType.value, {...data,...data1})
+ emit('submitForm', formType.value, {...data})
} finally {
formLoading.value = false
}
diff --git a/src/components/Detail/src/Detail.vue b/src/components/Detail/src/Detail.vue
index afd300ab9..07411ee65 100644
--- a/src/components/Detail/src/Detail.vue
+++ b/src/components/Detail/src/Detail.vue
@@ -108,6 +108,7 @@
{
hasSubDetail:item.hasSubDetail||false,
subDetailTableData:item.subDetailTableData,
fileType:item.fileType||['apk','doc', 'xls', 'ppt', 'txt', 'pdf','png', 'jpg', 'jpeg'],
+ fileSize:item.fileSize||5,
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 479d9df73..6babae951 100644
--- a/src/components/Form/src/Form.vue
+++ b/src/components/Form/src/Form.vue
@@ -269,7 +269,10 @@ export default defineComponent({
//回车
emit('onEnter',item.field,formModel.value[item.field],event)
}
- }} v-slots={{
+ }}
+
+ onBlur={(e)=>{onBlur(item.field, e)}}
+ v-slots={{
suffix: () => (
{
if(Array.isArray(formModel.value[item.field])){
@@ -318,7 +321,10 @@ export default defineComponent({
//回车
emit('onEnter',item.field,formModel.value[item.field],event)
}
- }} disabled={item?.componentProps?.enterSearch?false:true} v-slots={{
+ }}
+
+ onBlur={(e)=>{onBlur(item.field,formModel.value[item.field])}}
+ disabled={item?.componentProps?.enterSearch?false:true} v-slots={{
suffix: () => (
{
if(Array.isArray(formModel.value[item.field])){
diff --git a/src/components/TableForm/src/TableForm.vue b/src/components/TableForm/src/TableForm.vue
index 703f5f630..c72d90387 100644
--- a/src/components/TableForm/src/TableForm.vue
+++ b/src/components/TableForm/src/TableForm.vue
@@ -66,9 +66,9 @@
clearable
:type="headerItem?.tableForm?.inputType"
:placeholder="t(`ts.${headerItem?.tableForm?.placeholder || '请输入' + headerItem.label}`).replace('ts.','')"
- :disabled="headerItem?.tableForm?.disabled ? true: headerItem?.tableForm?.isInpuFocusShow ? true : false"
+ :disabled="disabledInput(headerItem)"
style="flex:1"
- @blur="inputStringBlur(headerItem.field, row[headerItem.field], row)"
+ @blur="inputStringBlur(headerItem, row[headerItem.field], row,index)"
/>
@@ -333,6 +333,10 @@
{{t('ts.批量删除')}}
+
+
+ {{t('批量添加')}}
+
@@ -408,7 +412,13 @@ const props = defineProps({
tableFormRules: {
type: Object,
default: null
- }
+ },
+ // 业务名称
+ routeName: {
+ type: String,
+ required: false,
+ default: ''
+ },
})
// 传递给父类
const emit = defineEmits([
@@ -426,7 +436,8 @@ const emit = defineEmits([
'inputStringBlur',
'tableFormSelectOnBlur',
'formFormDateChange',
- 'clearInput'
+ 'clearInput',
+ 'batchAdd'
])
// 获取下拉列表 | type = radio | type = select
const initSelectOptions = (item) => {
@@ -528,8 +539,8 @@ const inpuFocus = (headerItem, row, index)=>{
}
// input输入失去焦点事件
-const inputStringBlur = (field, val,row) => {
- emit('inputStringBlur', field, val,row)
+const inputStringBlur = (headerItem, val,row,index) => {
+ emit('inputStringBlur', headerItem, val,row,index)
}
const clearInput= (field, row, index) => {
emit('clearInput',field, row, index)
@@ -548,10 +559,39 @@ const showTableData = ()=>{
return props.tableData
}
}
+const keyWord = ref('')
+console.log(9999,props.tableFields)
+const batchAdd = ()=>{
+ console.log(keyWord.value)
+ let field = ''
+ const itemCodeFields = props.tableFields.find(item=>item.field == 'itemCode')
+ const supplierFields = props.tableFields.find(item=>item.field == 'supplierCode')
+ if(itemCodeFields){
+ field = itemCodeFields.field
+ }else {
+ if(itemCodeFields){
+ field = supplierFields.field
+ }
+ }
+console.log(field)
+ emit('batchAdd',keyWord.value)
+}
+const disabledInput=(headerItem)=>{
+ if(headerItem.tableForm?.isInpuFocusShow){
+ if(headerItem.tableForm?.enterSearch){
+ return false
+ }else{
+ return true
+ }
+ }else{
+ return headerItem?.tableForm?.disabled || true
+ }
+}
// setup 语法糖 抛出方法
defineExpose({
TableBaseComponents_Ref,
- validateForm
+ validateForm,
+ keyWord
})
diff --git a/src/views/eam/equipmentInspectionMain/index.vue b/src/views/eam/equipmentInspectionMain/index.vue
index ddf2c7985..8148ea401 100644
--- a/src/views/eam/equipmentInspectionMain/index.vue
+++ b/src/views/eam/equipmentInspectionMain/index.vue
@@ -94,6 +94,7 @@ import {EquipmentAccounts} from "@/views/eam/equipmentAccounts/equipmentAccounts
import * as EquipmentItemApi from "@/api/eam/equipmentAccounts";
import {ToolAccounts} from "@/views/eam/toolAccounts/toolAccounts.data";
import * as ToolItemApi from "@/api/eam/toolAccounts";
+import * as EquipmentSpotCheckMainApi from "@/api/eam/equipmentSpotCheckMain";
defineOptions({ name: 'EquipmentInspectionMain' })
@@ -189,9 +190,10 @@ const isShowEditStatusButton = (row) => {
// 列表-操作按钮
const butttondata = (row) => {
return [
- defaultButtons.mainListEditBtn({hide: isShowEditStatusButton(row),hasPermi:'eam:equipmentInspectionMain:update'}), // 编辑
+ defaultButtons.mainListEditBtn({hide: isShowStatusButton(row,['3','4']),hasPermi:'eam:equipmentInspectionMain:update'}), // 编辑
defaultButtons.mainListReceiveOrderBtn({hide: isShowStatusButton(row,['3']),hasPermi:'eam:equipmentInspectionMain:update'}), // 接单
defaultButtons.mainListExecuteBtn({hide: isShowStatusButton(row,['4']),hasPermi:'eam:equipmentInspectionMain:update'}), // 执行
+ defaultButtons.mainListCancelBtn({hide: isShowStatusButton(row,['5']),hasPermi:'eam:equipmentInspectionMain:update'}), //作废
defaultButtons.mainListFinishBtn({hide: isShowStatusButton(row,['5']),hasPermi:'eam:equipmentInspectionMain:update'}), // 完成巡检
defaultButtons.mainListValidateBtn({hide: isShowStatusButton(row,['6']),hasPermi:'eam:equipmentInspectionMain:update'}), // 验证
//defaultButtons.mainListEnableBtn({hide:isShowMainButton(row,['FALSE']),hasPermi:'eam:equipmentInspectionMain:update'}),
@@ -213,6 +215,8 @@ const buttonTableClick = async (val, row) => {
handleFinish(row)
} else if (val == 'validate') { // 验证
handleValidate(row)
+ } else if (val == 'cancel') { // 作废
+ handleCancel(row.id)
}
}
@@ -392,6 +396,26 @@ const handleValidate = async (row) => {
}
+/** 作废按钮操作 */
+const handleCancel = async (id: number) => {
+ try {
+ // 二次确认
+ await message.delConfirm('是否作废所选中任务?');
+ const params = ref({
+ id: '',
+ status:'',
+ })
+ params.value.id = id
+ params.value.status = '8'
+ // 发起
+ await EquipmentInspectionMainApi.updateEquipmentInspectionOrder(params.value)
+ message.success(t('执行成功'))
+ // 刷新列表
+ await getList()
+ } catch {}
+}
+
+
const detailBasicFormOnChange = (field, item) => {
//未完成
if(field == 'result' && item == '1'){
diff --git a/src/views/eam/equipmentMaintenanceMain/index.vue b/src/views/eam/equipmentMaintenanceMain/index.vue
index 07d7bb31c..08c0f18ec 100644
--- a/src/views/eam/equipmentMaintenanceMain/index.vue
+++ b/src/views/eam/equipmentMaintenanceMain/index.vue
@@ -104,6 +104,7 @@ import {EquipmentAccounts} from "@/views/eam/equipmentAccounts/equipmentAccounts
import * as EquipmentItemApi from "@/api/eam/equipmentAccounts";
import {ToolAccounts} from "@/views/eam/toolAccounts/toolAccounts.data";
import * as ToolItemApi from "@/api/eam/toolAccounts";
+import * as EquipmentInspectionMainApi from "@/api/eam/equipmentInspectionMain";
defineOptions({ name: 'EquipmentMaintenanceMain' })
@@ -197,9 +198,10 @@ const isShowEditStatusButton = (row) => {
// 列表-操作按钮
const butttondata = (row) => {
return [
- defaultButtons.mainListEditBtn({hide: isShowEditStatusButton(row),hasPermi:'eam:equipmentMaintenanceMain:update'}), // 编辑
+ defaultButtons.mainListEditBtn({hide: isShowStatusButton(row,['3','4']),hasPermi:'eam:equipmentMaintenanceMain:update'}), // 编辑
defaultButtons.mainListReceiveOrderBtn({hide: isShowStatusButton(row,['3']),hasPermi:'eam:equipmentMaintenanceMain:update'}), // 接单
defaultButtons.mainListExecuteBtn({hide: isShowStatusButton(row,['4']),hasPermi:'eam:equipmentMaintenanceMain:update'}), // 执行
+ defaultButtons.mainListCancelBtn({hide: isShowStatusButton(row,['5']),hasPermi:'eam:equipmentMaintenanceMain:update'}), //作废
defaultButtons.mainListFinishBtn({hide: isShowStatusButton(row,['5']),hasPermi:'eam:equipmentMaintenanceMain:update'}), // 完成保养
defaultButtons.mainListValidateBtn({hide: isShowStatusButton(row,['6']),hasPermi:'eam:equipmentMaintenanceMain:update'}), // 验证
defaultButtons.mainListEnableBtn({hide:isShowMainButton(row,['FALSE']),hasPermi:'eam:equipmentMaintenanceMain:update'}),
@@ -221,6 +223,8 @@ const buttonTableClick = async (val, row) => {
handleFinish(row)
} else if (val == 'validate') { // 验证
handleValidate(row)
+ } else if (val == 'cancel') { // 作废
+ handleCancel(row.id)
}
}
@@ -391,6 +395,25 @@ const handleValidate = async (row) => {
}
+/** 作废按钮操作 */
+const handleCancel = async (id: number) => {
+ try {
+ // 二次确认
+ await message.delConfirm('是否作废所选中任务?');
+ const params = ref({
+ id: '',
+ status:'',
+ })
+ params.value.id = id
+ params.value.status = '8'
+ // 发起
+ await EquipmentMaintenanceMainApi.updateMaintenanceOrder(params.value)
+ message.success(t('执行成功'))
+ // 刷新列表
+ await getList()
+ } catch {}
+}
+
/** 启用 */
const handleEnable = async (id: number) => {
try {
diff --git a/src/views/eam/equipmentRepairJobMain/finishForm1.vue b/src/views/eam/equipmentRepairJobMain/finishForm1.vue
index d0b042e01..4f42c446d 100644
--- a/src/views/eam/equipmentRepairJobMain/finishForm1.vue
+++ b/src/views/eam/equipmentRepairJobMain/finishForm1.vue
@@ -2,29 +2,29 @@