diff --git a/mes-ui/mes-ui-admin-vue3/src/views/biz/Packaging/ChestDialog.vue b/mes-ui/mes-ui-admin-vue3/src/views/biz/Packaging/ChestDialog.vue
index 68d35c71..e0cd0b47 100644
--- a/mes-ui/mes-ui-admin-vue3/src/views/biz/Packaging/ChestDialog.vue
+++ b/mes-ui/mes-ui-admin-vue3/src/views/biz/Packaging/ChestDialog.vue
@@ -4,7 +4,7 @@
- 新增
+ 新增
@@ -42,7 +42,7 @@
@@ -54,7 +54,7 @@
-
+
删除删除
@@ -79,7 +79,7 @@
取 消
- 保 存
+ 保 存
@@ -117,7 +117,12 @@ const subFormRules = reactive({
})
/** 打开弹窗 */
const fid = ref()
-const open = async (fData, val, index) => {
+const distype = ref(false)
+const open = async (fData, val, index, type) => {
+ console.log(type)
+ if (type == 'detail') {
+ distype.value=true
+ }
resetForm()
formData.value.index = index
console.log(val.saleOrderPackingClauseDetails == undefined)
diff --git a/mes-ui/mes-ui-admin-vue3/src/views/biz/Packaging/detail.vue b/mes-ui/mes-ui-admin-vue3/src/views/biz/Packaging/detail.vue
index ffbf0b95..38c6a211 100644
--- a/mes-ui/mes-ui-admin-vue3/src/views/biz/Packaging/detail.vue
+++ b/mes-ui/mes-ui-admin-vue3/src/views/biz/Packaging/detail.vue
@@ -313,7 +313,7 @@
min-width="220"
:formatter="dateFormatter"
/>
-
+
打印
+ 详情
@@ -563,8 +566,8 @@ const onAddItem = () => {
//编辑包装规则
const chestref = ref()
-const openDetail = (val, index) => {
- chestref.value.open(formData.value, val, index)
+const openDetail = (val, index,type) => {
+ chestref.value.open(formData.value, val, index,type)
}
const handlechestSuccess = (val) => {
List.value[val.index].saleOrderPackingClauseDetails = []
diff --git a/mes-ui/mes-ui-admin-vue3/src/views/biz/storage/StorageForm.vue b/mes-ui/mes-ui-admin-vue3/src/views/biz/storage/StorageForm.vue
index 1d8da744..2d8bd1c7 100644
--- a/mes-ui/mes-ui-admin-vue3/src/views/biz/storage/StorageForm.vue
+++ b/mes-ui/mes-ui-admin-vue3/src/views/biz/storage/StorageForm.vue
@@ -1,18 +1,23 @@
-
+
-
+
-
基础信息
@@ -20,16 +25,27 @@
-
+
-
-
-
+
+
+
@@ -38,17 +54,54 @@
-
-
-
-
+
+
+
-
-
+
+
+
+
+
+
+
@@ -56,20 +109,20 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
@@ -79,14 +132,19 @@
-
+
-
物料信息
@@ -94,100 +152,111 @@
- 新增
+ 新增
-
-
+
+
-
+
物料编码
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
- 入库库区
-
+
+
-
-
-
-
+
-
-
- 入库库位
+
+
-
-
-
-
+
-
-
- 入库数量
-
+
+ 本次退料数量
-
-
+
+
-
-
+
-
+
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
删除
@@ -200,7 +269,6 @@
-
附件信息
@@ -208,31 +276,68 @@
-
+
上传
-
+
-
+
-
-
+
删除
-
+
下载
@@ -243,8 +348,7 @@
-
-
+
系统信息
@@ -257,23 +361,24 @@
- {{ formatDate(formData.createTime, 'YYYY-MM-DD HH:mm:ss') }}
+ {{ formatDate(formData.createTime, 'YYYY-MM-DD HH:mm') }}
-
- {{ userList.find((user) => user.id == formData.keeper)?.nickname }}
+
+ {{ userList.find((user) => user.id == formData.outbound)?.nickname }}
-
- {{ formatDate(formData.keeperTime, 'YYYY-MM-DD HH:mm:ss') }}
+
+ {{ formatDate(formData.outboundTime, 'YYYY-MM-DD HH:mm') }}
-
+
+
+
+
+
+ {{ userList.find((user) => user.id == formData.cancel)?.nickname }}
+
+
+
+
+ {{ formatDate(formData.cancelTime, 'YYYY-MM-DD HH:mm') }}
@@ -289,12 +406,71 @@
@@ -326,6 +502,7 @@ import download from '@/utils/download'
import * as UserApi from '@/api/system/user'
import materials from './materials.vue'
import projects from './subproject.vue'
+import { useCommonStore } from '@/store/modules/common'
const reload: any = inject('reload')
@@ -333,13 +510,15 @@ const { t } = useI18n() // 国际化
const message = useMessage() // 消息弹窗
const { query } = useRoute()
const router = useRouter()
-
+const commonStore = useCommonStore()
+const activetype = toRef(commonStore.getStore('active'))
+const activeId = toRef(commonStore.getStore('id'))
const dialogTitle = ref('') // 弹窗的标题
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
const formData = ref({
id: undefined,
stockType: 1,
- stockInType: undefined,
+ stockInType: 5, //字典类型
stockOutType: undefined,
stockNo: undefined,
headerNo: undefined,
@@ -360,8 +539,8 @@ const formData = ref({
const formRules = reactive({
// name: [{ required: true, message: '模具类型不能为空', trigger: 'blur' }],
status: [{ required: true, message: '启用状态不能为空', trigger: 'blur' }],
- stockInType: [{ required: true, message: '入库类型不能为空', trigger: 'blur' }],
- whId: [{ required: true, message: '入库仓库不能为空', trigger: 'blur' }]
+ stockInType: [{ required: true, message: '退料类型不能为空', trigger: 'blur' }],
+ whId: [{ required: true, message: '接收仓库不能为空', trigger: 'blur' }]
})
const formRef = ref() // 表单 Ref
const matSubFormRef = ref() //子表单 Ref
@@ -376,8 +555,6 @@ const subFormRules = reactive({
})
const matOpenFormRef = ref()
-const proOpenFormRef = ref()
-
const openMatForm = () => {
// if (formData.value.whId == undefined || formData.value.whId == '') {
// message.alertWarning('请选择入库仓库')
@@ -387,124 +564,18 @@ const openMatForm = () => {
matOpenFormRef.value.open(formData.value.whId, 'in')
}
-const openProjectForm = (scope) => {
- proOpenFormRef.value.open(scope)
-}
const getList = async (arrMat) => {
- arrMat.forEach((row) => {
- if (
- formData.value.matItemDOList.filter(
- (item) =>
- item.matId == row.id &&
- item.whId == row.whId &&
- item.rgId == row.rgId &&
- item.pnId == row.pnId
- ).length == 0
- ) {
- row.matId = row.id
- row.pnlist = ref([])
- row.pnlist = pnList.value.filter((pn) => pn.wh_id == row.whId && pn.rg_id == row.rgId)
- if (row.pnlist.length == 0) {
- row.rgId = ''
- row.pnId = ''
- row.matRest = 0
- }
- formData.value.matItemDOList.push(row)
+ arrMat.forEach((item) => {
+ const exists = formData.value.matItemDOList.some(
+ (listItem) => listItem.projectSubCode === item.projectSubCode
+ )
+ if (!exists) {
+ formData.value.matItemDOList.push(item)
}
})
}
-
-const getProject = async (pro, scope) => {
- formData.value.matItemDOList.forEach((item) => {
- if (
- item.matId == scope.value.row.matId &&
- item.whId == scope.value.row.whId &&
- item.rgId == scope.value.row.rgId &&
- item.pnId == scope.value.row.pnId
- ) {
- item.projectNo = pro.projectSubId
- item.projectSubName = pro.projectSubName
- }
- })
-}
-
const deleteMatCodes = ref([])
const canRemove = ref(true)
-//作废时物料库存剩余验证 storageOkQty> 剩余数 ,不能删除
-
-// 提交、作废按钮数据状态提交
-const handleStatus = async (num) => {
- // 校验表单
- await formRef.value.validate()
- if (formData.value.matItemDOList.length === 0) {
- message.alertWarning('请添加物料信息!')
- return
- }
- // 校验子表单
- try {
- await matSubFormRef.value.validate()
- } catch (e) {
- return
- }
- // 提示用户是否保存入库信息
- await message.confirm('确认' + (num == 2 ? '提交' : '作废') + '入库信息?')
-
- // 入库单作废时验证库存是否为空
- if (num == 3) {
- // formData.value.matItemDOList.forEach(async(item) => {
- // item.matRest = await StorageCheckApi.getStorageNowMatRest(item.matId, item.pnId)
- // if (item.matRest < item.storageOkQty) {
- // canRemove.value = false
- // deleteMatCodes.value.push(item.matCode + ' ' + item.matName)
- // }
- // })
- for (var i = 0; i < formData.value.matItemDOList.length; i++) {
- var item = formData.value.matItemDOList[i]
- item.matRest = await StorageCheckApi.getStorageNowMatRest(item.matId, item.pnId)
- if (item.matRest < item.storageOkQty) {
- canRemove.value = false
- var errMsg =
- '[' +
- item.matCode +
- ' ' +
- item.matName +
- ' ' +
- item.pnlist.filter((pn) => pn.id == item.pnId)[0].pn_name +
- ']'
- deleteMatCodes.value.push(errMsg)
- }
- }
- if (!canRemove.value) {
- message.alertWarning(
- '该入库单对应的物料' + deleteMatCodes.value.join(',') + '已出库,不允许作废!'
- )
- return
- }
- }
-
- formData.value.status = num
-
- //保存表单数据
- await saveFormData()
-
- const dataUpdate = formData.value as unknown as StorageApi.StorageVO
-
- if (num == 2) {
- dataUpdate.keeper = useUserStore().getUser.id
- } else {
- dataUpdate.cancel = useUserStore().getUser.id
- }
-
- await StorageApi.updateStorageStatus(dataUpdate)
-
- message.success(t('common.updateSuccess'))
-
- query.id = formData.value.id
- query.type = 'update'
- if (sumbefore.value == 0) {
- reload()
- }
-}
// 根据入库类型显示上游单号
const enableHeadNo = ref(false)
@@ -634,40 +705,133 @@ var commonResult = ''
/** 提交表单 */
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
-const saveFormData = async () => {
+const saveFormData = async (active, status, type) => {
+ if (active === 'SUBMIT') {
+ //提示
+ if (formData.value.matItemDOList.length === 0) {
+ message.alertWarning('请添加物料信息!')
+ return
+ }
+ }
+ await formRef.value.validate()
+ formData.value.active = active
+ formData.value.status = status
+ await initStatus(formData.value.status)
// 提交请求
formLoading.value = true
try {
const data = formData.value as unknown as StorageApi.StorageVO
- if (query.type === 'create') {
+ if (activetype.value === 'create') {
//库存信息保存
formData.value.id = await StorageApi.createStorage(data)
- commonResult = 'common.createSuccess'
+ commonStore.setStore('active', 'update')
+ commonStore.setStore('id', formData.value.id)
+ reload()
+ } else if (formData.value.active === 'SUBMIT' && formData.value.status == 2) {
+ // //先执行一下保存物料和保存附件
+
+ // formData.value.active = 'SAVE'
+ // formData.value.matItemDOList.forEach((item) => {
+ // item.stockId = formData.value.id
+ // item.whId = formData.value.whId
+ // })
+ // const dataMats = formData.value.matItemDOList as unknown as StorageMatApi.StorageMatVO[]
+ // await StorageMatApi.createStorageMatBatch(dataMats, formData.value.id)
+ // if (formData.value.attachments != undefined && formData.value.attachments.length > 0) {
+ // //附件信息保存
+ // matUploadData.value.businessId = formData.value.id
+ // await matUploadRef.value!.submit()
+ // }
+
+ //通过异步执行送审
+ // setTimeout(async () => {
+ // console.log('------');
+
+ formData.value.active === 'SUBMIT'
+ data.outbound = useUserStore().getUser.id
+ const nowStr = formatDate(new Date(), 'YYYY-MM-DD HH:mm')
+ const now = new Date(nowStr).getTime()
+ data.outboundTime = now
+ await StorageApi.updateStorage(data)
+ commonStore.setStore('active', 'review')
+ // reload()
+ // }, 500)
+
+ // commonStore.setStore('id', formData.value.id)
+ } else if (formData.value.active === 'INVALID') {
+ data.cancel = useUserStore().getUser.id
+ data.cancelTime = new Date()
+ await StorageApi.updateStorage(data)
+ commonStore.setStore('active', 'review')
+ reload()
} else {
await StorageApi.updateStorage(data)
- commonResult = 'common.updateSuccess'
+ // reload()
}
- //物料信息保存
+ var repeatItem = []
formData.value.matItemDOList.forEach((item) => {
- item.stockId = formData.value.id
- item.whId = formData.value.whId
+ if (formData.value.matItemDOList.filter((mat) => mat.matId == item.matId).length > 1) {
+ var tmpCode = item.code
+ if (repeatItem.indexOf(tmpCode) < 0) {
+ repeatItem.push(tmpCode)
+ }
+ }
})
- const dataMats = formData.value.matItemDOList as unknown as StorageMatApi.StorageMatVO[]
- await StorageMatApi.createStorageMatBatch(dataMats, formData.value.id)
+ if (repeatItem.length > 0) {
+ message.alertWarning(
+ '物料编码' + repeatItem.join(' ') + '出库库位存在多行数据,请修改,避免重复出库'
+ )
+ return
+ }
+ if (active !== 'INVALID') {
+ // console.log('保存物料-------');
+
+ formData.value.matItemDOList.forEach((item) => {
+ item.stockId = formData.value.id
+ item.whId = formData.value.whId
+ })
+ const dataMats = formData.value.matItemDOList as unknown as StorageMatApi.StorageMatVO[]
+ await StorageMatApi.createStorageMatBatch(dataMats, formData.value.id)
+ }
+ //物料信息保存
if (formData.value.attachments != undefined && formData.value.attachments.length > 0) {
//附件信息保存
matUploadData.value.businessId = formData.value.id
await matUploadRef.value!.submit()
}
- await initStatus(formData.value.status)
- //formData.value = await StorageApi.getStorage(formData.value.id)
- message.success(t(commonResult))
+ if (type == 'suc') {
+ commonResult = 'common.updateSuccess'
+ message.success(t(commonResult))
+ }
+ } catch (error) {
+ // 捕获并处理异常
+ console.error('创建物料存储时发生错误:', error)
+ // 可以在这里展示错误消息给用户,或者执行重试逻辑等
+ reload()
} finally {
formLoading.value = false
}
}
+
+const saveFormDataSUBMIT = (active, status) => {
+ setTimeout(async () => {
+ //提交
+ formData.value.active = active
+ formData.value.status = status
+ const data = formData.value as unknown as StorageApi.StorageVO
+ data.cancel = useUserStore().getUser.id
+ const nowStr = formatDate(new Date(), 'YYYY-MM-DD HH:mm')
+ const now = new Date(nowStr).getTime()
+ data.cancelTime = now
+ await StorageApi.updateStorage(data)
+ await initStatus(formData.value.status)
+ commonResult = '审核成功'
+ message.success(t(commonResult))
+ reload()
+ }, 1000)
+}
const submitForm = async () => {
// 校验表单
await formRef.value.validate()
@@ -686,7 +850,7 @@ const submitForm = async () => {
// // 提示用户是否保存入库信息
// await message.confirm('确认保存入库信息?')
//保存表单数据
- await saveFormData()
+ // await saveFormData()
// 成功后刷新
query.id = formData.value.id
@@ -732,31 +896,6 @@ const handleDelete2 = (index: number) => {
//仓库全数据
const whList = ref([])
-//库区全数据
-const rgList = ref([])
-//库位全数据
-const pnList = ref([])
-const handleWh = async (wid) => {
- //-------------------库区全数据
- // 获得库区列表
- const dataRgList = await RgApi.getSimpList()
- const dataPnList = await PnApi.getSimpList()
- rgList.value = dataRgList.filter((rg) => rg.wh_id == wid)
- pnList.value = dataPnList.filter((pn) => pn.wh_id == wid)
-
- formData.value.matItemDOList.forEach((item) => {
- item.rgId = ''
- item.pnId = ''
- item.pnlist.value = []
- })
-}
-const handleRg = async (scope) => {
- //-------------------库位全数据
- const dataPnList = await PnApi.getSimpList()
- scope.row.pnId = ''
- scope.row.pnlist = dataPnList.filter((pn) => pn.rg_id == scope.row.rgId)
- //-------------------
-}
// 远程数据筛选物料
const matList = ref([]) // 物料列表
@@ -774,25 +913,6 @@ const remoteMatCodeSearch = async (code) => {
matList.value = (await MaterialApi.getMaterialPage(matParams)).list
matSelectLoading.value = false
}
-// 选中物料编码时,列表中数据
-const handleMatCode = async (scope, matid) => {
- if (matid) {
- const matVo = matSimpList.value.find((item) => item.id == scope.row.matId)
- scope.row.matId = matVo.id
- scope.row.matName = matVo.name
- scope.row.matCode = matVo.code
- scope.row.matSpec = matVo.spec
- scope.row.matType = matVo.material_type
- scope.row.matUnit = matVo.unit
- } else {
- scope.row.matId = ''
- scope.row.matCode = ''
- scope.row.matName = ''
- scope.row.matSpec = ''
- scope.row.matType = ''
- scope.row.matUnit = ''
- }
-}
// 按钮控制
const ctrView = ref(false)
@@ -853,16 +973,23 @@ const pnstatus = ref(false)
/** 初始化 **/
onMounted(async () => {
// 页面标题展示
- dialogTitle.value = query.type === 'review' ? '查看' : t('action.' + query.type)
+ // 页面标题展示
+ dialogTitle.value =
+ activetype.value === 'review'
+ ? '查看'
+ : activetype.value === 'Check'
+ ? '审核'
+ : t('action.' + activetype.value)
+
//- 获取仓库全数据
whList.value = await WarehouseApi.getWarehouseSimpList()
- formData.value.whId = Math.min.apply(
- Math,
- whList.value.map(function (i) {
- return i.id
- })
- )
+ // formData.value.whId = Math.min.apply(
+ // Math,
+ // whList.value.map(function (i) {
+ // return i.id
+ // })
+ // )
// 获取原始物料信息
matSimpList.value = await MaterialApi.getSimpList()
@@ -897,15 +1024,6 @@ onMounted(async () => {
// 页面控件可视初始化
await initStatus(formData.value.status)
- // 获得库区列表
- const dataRgList = await RgApi.getSimpList()
- rgList.value = dataRgList.filter((rg) => rg.wh_id == formData.value.whId)
-
-
- // 获得库区列表
- const dataPnList = await PnApi.getSimpList()
- pnList.value = dataPnList.filter((pn) => pn.wh_id == formData.value.whId)
-
// 获取库存物料列表信息
const queryParamsMat = reactive({
pageNo: 1,
@@ -914,28 +1032,6 @@ onMounted(async () => {
})
const dataMats = await StorageMatApi.getStorageMatPage(queryParamsMat)
formData.value.matItemDOList = dataMats
-
- var matTypes = getIntDictOptions(DICT_TYPE.BIZ_MATERIAL_TYPE)
- var matUnits = getIntDictOptions(DICT_TYPE.BIZ_MATERIAL_UNIT)
- // 填充物料原始信息
- formData.value.matItemDOList.forEach((item) => {
- item.rgStatus = matSimpList.value.find(
- (record) => record.rgStatus === item.rgStatus
- )?.rgStatus
- item.matId = matSimpList.value.find((record) => record.id === item.matId)?.id
- item.matCode = matSimpList.value.find((record) => record.id === item.matId)?.code
- item.matName = matSimpList.value.find((record) => record.id === item.matId)?.name
- item.matSpec = matSimpList.value.find((record) => record.id === item.matId)?.spec
- item.matType = matTypes.find(
- (op) =>
- op.value == matSimpList.value.find((record) => record.id === item.matId)?.material_type
- )?.label
- item.matUnit = matUnits.find(
- (op) => op.value == matSimpList.value.find((record) => record.id === item.matId)?.unit
- )?.label //matSimpList.value.find((record) => record.id === item.matId)?.unit
- item.pnlist = pnList.value.filter((pn) => pn.rg_id === item.rgId)
- })
-
// 附件信息
let attParams = {
pageNo: 1,
@@ -949,26 +1045,6 @@ onMounted(async () => {
//用户信息,用于底部数据展示
userList.value = await UserApi.getSimpleUserList()
})
-
-//接收物料传递的数据
-const handleSelectedMaterial = (currentIndex: number, newValue: any) => {
- // console.log(currentIndex,'接收物料对应的数据:', newValue)
- formData.value.matItemDOList[currentIndex].matId = newValue?.id
- formData.value.matItemDOList[currentIndex].matName = newValue?.name
- formData.value.matItemDOList[currentIndex].matCode = newValue?.code
- formData.value.matItemDOList[currentIndex].matSpec = newValue?.spec
- formData.value.matItemDOList[currentIndex].matType = newValue?.materialType
- formData.value.matItemDOList[currentIndex].matUnit = newValue?.unit
-}
-
-//接收库区传递的数据
-const handleSelectedrg = (currentIndex: number, newValue: any) => {
- formData.value.matItemDOList[currentIndex].rgId = newValue?.id
-}
-//接收库区传递的数据
-const handleSelectedpn= (currentIndex: number, newValue: any) => {
- formData.value.matItemDOList[currentIndex].pnId = newValue?.id
-}