|
|
|
@ -9,8 +9,7 @@
|
|
|
|
|
<img src="/src/assets/imgs/status/statuszf.png" v-else-if="formData.status == 3" alt="" />
|
|
|
|
|
<span v-else></span>
|
|
|
|
|
</div>
|
|
|
|
|
<el-form ref="formRef" :model="formData" :rules="formRules" label-width="200px" v-loading="formLoading"
|
|
|
|
|
v-bind:disabled="isShowBtnOther">
|
|
|
|
|
<el-form ref="formRef" :model="formData" :rules="formRules" label-width="200px" v-loading="formLoading">
|
|
|
|
|
<!-- 基础信息 -->
|
|
|
|
|
<el-card class="hl-card-info">
|
|
|
|
|
<template #header>
|
|
|
|
@ -98,7 +97,7 @@
|
|
|
|
|
<el-col>
|
|
|
|
|
<el-card class="hl-incard">
|
|
|
|
|
<el-col>
|
|
|
|
|
<el-button class="hl-addbutton" type="primary" size="large" @click="openMatForm">新增</el-button>
|
|
|
|
|
<el-button class="hl-addbutton" type="primary" size="large" v-bind:disabled="ctrView || ctrSave" @click="openMatForm">新增</el-button>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-form ref="matSubFormRef" :model="formData.matItemDOList" :rules="subFormRules"
|
|
|
|
|
v-loading="subFormLoading" label-width="0">
|
|
|
|
@ -114,7 +113,7 @@
|
|
|
|
|
<template #header> <span class="hl-table_header">*</span>库区 </template>
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-form-item :prop="`${scope.$index}.rgId`" :rules="subFormRules.rgId" class="mb-0px!">
|
|
|
|
|
<el-select v-model="scope.row.rgId" placeholder="" style="width: 100%" @change="(val)=>handleRg(val,scope)">
|
|
|
|
|
<el-select v-model="scope.row.rgId" placeholder="" style="width: 100%" @change="(val)=>handleRg(val,scope)" v-bind:disabled="ctrView || ctrSave">
|
|
|
|
|
<el-option v-for="dict in rgList" :key="dict.id" :label="dict.rg_name" :value="dict.id" />
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
@ -124,7 +123,7 @@
|
|
|
|
|
<template #header> <span class="hl-table_header">*</span>库位 </template>
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-form-item :prop="`${scope.$index}.pnId`" :rules="subFormRules.pnId" class="mb-0px!">
|
|
|
|
|
<el-select v-model="scope.row.pnId" placeholder="" style="width: 100%" @change="(val)=>handlePn(val,scope)">
|
|
|
|
|
<el-select v-model="scope.row.pnId" placeholder="" style="width: 100%" @change="(val)=>handlePn(val,scope)" v-bind:disabled="ctrView || ctrSave">
|
|
|
|
|
<el-option v-for="dict in scope.row.pnlist" :key="dict.id" :label="dict.pn_name"
|
|
|
|
|
:value="dict.id" />
|
|
|
|
|
</el-select>
|
|
|
|
@ -137,7 +136,7 @@
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-form-item :prop="`${scope.$index}.storageOkQty`" :rules="subFormRules.storageOkQty"
|
|
|
|
|
class="mb-0px!">
|
|
|
|
|
<el-input v-model="scope.row.storageOkQty" @change="(val)=>handleSub(val,scope)" />
|
|
|
|
|
<el-input v-model="scope.row.storageOkQty" @change="(val)=>handleSub(val,scope)" v-bind:disabled="ctrView || ctrSave" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
@ -145,11 +144,11 @@
|
|
|
|
|
<el-table-column prop="matUnit" label="库存单位" min-width="120" align="center" />
|
|
|
|
|
<el-table-column label="操作" align="center" width="240">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-button link type="danger" size="small" @click.prevent="handleDelete2(scope.$index)"
|
|
|
|
|
<el-button link type="danger" size="small" @click.prevent="handleDelete2(scope.$index)" v-bind:disabled="ctrView || ctrDelete"
|
|
|
|
|
v-if="scope.row.isCopy==1">
|
|
|
|
|
删除
|
|
|
|
|
</el-button>
|
|
|
|
|
<el-button link type="primary" v-if="scope.row.isCopy==0" @click="handleCopy(scope.$index, scope.row)">复制</el-button>
|
|
|
|
|
<el-button link type="primary" v-if="scope.row.isCopy==0" @click="handleCopy(scope.$index, scope.row)" v-bind:disabled="ctrView || ctrDelete">复制</el-button>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
</el-table>
|
|
|
|
@ -173,7 +172,7 @@
|
|
|
|
|
'tenant-id': getTenantId()
|
|
|
|
|
}" name="files" :show-file-list="false" :auto-upload="false" :data="matUploadData"
|
|
|
|
|
:on-change="matUploadChange" class="upload-file-uploader">
|
|
|
|
|
<el-button type="primary">
|
|
|
|
|
<el-button type="primary" v-bind:disabled="ctrView || ctrSave">
|
|
|
|
|
<Icon icon="ep:upload-filled" />上传
|
|
|
|
|
</el-button>
|
|
|
|
|
</el-upload>
|
|
|
|
@ -189,12 +188,12 @@
|
|
|
|
|
|
|
|
|
|
<el-table-column label="操作" align="center">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-button link type="danger" size="small" v-if="isShowBtnDelete"
|
|
|
|
|
@click="handleDeleteAttachment(scope.$index, scope.row.businessFileType)">
|
|
|
|
|
<el-button link type="danger" size="small"
|
|
|
|
|
@click="handleDeleteAttachment(scope.$index, scope.row.businessFileType)" v-bind:disabled="ctrView || ctrDelete">
|
|
|
|
|
删除
|
|
|
|
|
</el-button>
|
|
|
|
|
<el-button link type="primary" size="small"
|
|
|
|
|
@click="downloadAttachment(scope.row.name, scope.row.url)">
|
|
|
|
|
@click="downloadAttachment(scope.row.name, scope.row.url)" v-bind:disabled="ctrView || ctrDelete">
|
|
|
|
|
下载
|
|
|
|
|
</el-button>
|
|
|
|
|
</template>
|
|
|
|
@ -224,17 +223,17 @@
|
|
|
|
|
</el-row>
|
|
|
|
|
<el-row justify="center">
|
|
|
|
|
<el-col :span="8">
|
|
|
|
|
<el-form-item prop="outbound" label="出库人">
|
|
|
|
|
{{ userList.find((user) => user.id == formData.outbound)?.nickname }}
|
|
|
|
|
<el-form-item prop="keeper" label="提交人">
|
|
|
|
|
{{ userList.find((user) => user.id == formData.keeper)?.nickname }}
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="8">
|
|
|
|
|
<el-form-item prop="outboundTime" label="出库时间">
|
|
|
|
|
{{ formatDate(formData.outboundTime, 'YYYY-MM-DD HH:mm') }}
|
|
|
|
|
<el-form-item prop="keepTime" label="提交时间">
|
|
|
|
|
{{ formatDate(formData.keeperTime, 'YYYY-MM-DD HH:mm') }}
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
<el-row justify="center">
|
|
|
|
|
<!-- <el-row justify="center">
|
|
|
|
|
<el-col :span="8">
|
|
|
|
|
<el-form-item prop="cancel" label="作废人">
|
|
|
|
|
{{ userList.find((user) => user.id == formData.cancel)?.nickname }}
|
|
|
|
@ -245,16 +244,16 @@
|
|
|
|
|
{{ formatDate(formData.cancelTime, 'YYYY-MM-DD HH:mm') }}
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
</el-row> -->
|
|
|
|
|
</el-card>
|
|
|
|
|
</el-form>
|
|
|
|
|
<div class="text-center hl-footer">
|
|
|
|
|
<el-button @click="() => router.go(-1)" size="large">取 消</el-button>
|
|
|
|
|
<el-button @click="submitForm" type="success" :disabled="formLoading" size="large">保
|
|
|
|
|
<el-button @click="submitForm" type="success" v-if="btnSave" size="large">保
|
|
|
|
|
存</el-button>
|
|
|
|
|
<el-button @click="handleStatus(2)" type="primary" :disabled="formLoading" size="large">提
|
|
|
|
|
<el-button @click="handleStatus(2)" type="primary" v-if="btnSave" size="large">提
|
|
|
|
|
交</el-button>
|
|
|
|
|
<el-button @click="handleStatus(3)" type="danger" :disabled="formLoading" size="large">删
|
|
|
|
|
<el-button @click="handleStatus(3)" type="danger" v-if="btnCancel" size="large">删
|
|
|
|
|
除</el-button>
|
|
|
|
|
</div>
|
|
|
|
|
</el-card>
|
|
|
|
@ -338,18 +337,40 @@ const subFormRules = reactive({
|
|
|
|
|
storageOkQty: [{ required: true, message: '盘点数量不能为空', trigger: 'blur' }]
|
|
|
|
|
})
|
|
|
|
|
const handleStatus = async (num) => {
|
|
|
|
|
formData.value.status = num
|
|
|
|
|
if(num == 2){
|
|
|
|
|
formData.value.keeper = useUserStore().getUser.id
|
|
|
|
|
// 校验表单
|
|
|
|
|
await formRef.value.validate()
|
|
|
|
|
if (formData.value.matItemDOList.length === 0) {
|
|
|
|
|
if (formData.value.matItemDOList ==undefined || formData.value.matItemDOList.length === 0) {
|
|
|
|
|
message.alertWarning('请添加物料信息!')
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 校验子表单
|
|
|
|
|
try {
|
|
|
|
|
var isRepeat = false
|
|
|
|
|
formData.value.matItemDOList.forEach(item=>{
|
|
|
|
|
if(formData.value.matItemDOList.filter(mat =>mat.matId == item.matId && mat.pnId == item.pnId).length>1){
|
|
|
|
|
isRepeat = true
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
if(isRepeat){
|
|
|
|
|
message.alertWarning('存在相同库位的物料信息,请修改,避免重复盘点!')
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
await matSubFormRef.value.validate()
|
|
|
|
|
} catch (e) {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
//保存表单数据
|
|
|
|
|
await saveFormData()
|
|
|
|
|
}else{
|
|
|
|
|
formData.value.cancel = useUserStore().getUser.id
|
|
|
|
|
const data = formData.value as unknown as CheckApi.StorageCheckVO
|
|
|
|
|
await CheckApi.updateStorageCheck(data)
|
|
|
|
|
}
|
|
|
|
|
await initStatus(formData.value.status)
|
|
|
|
|
reload()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -441,8 +462,6 @@ const downloadAttachment = async (name, url) => {
|
|
|
|
|
}
|
|
|
|
|
// ====================附件信息 结束=======================================
|
|
|
|
|
|
|
|
|
|
var commonResult = ''
|
|
|
|
|
|
|
|
|
|
/** 提交表单 */
|
|
|
|
|
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
|
|
|
|
|
|
|
|
|
@ -464,18 +483,12 @@ const saveFormData = async () => {
|
|
|
|
|
const dataMats = formData.value.matItemDOList as unknown as CheckMatApi.StorageCheckMatVO[]
|
|
|
|
|
await CheckMatApi.createCheckMatBatch(dataMats, formData.value.id)
|
|
|
|
|
|
|
|
|
|
if (formData.value.matItemDOList !=undefined &&formData.value.matItemDOList.length > 0) {
|
|
|
|
|
//附件信息保存
|
|
|
|
|
matUploadData.value.businessId = formData.value.id
|
|
|
|
|
matUploadRef.value!.submit()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (formData.value.attachments!=undefined && formData.value.attachments.length > 0) {
|
|
|
|
|
//附件信息保存
|
|
|
|
|
matUploadData.value.businessId = formData.value.id
|
|
|
|
|
matUploadRef.value!.submit()
|
|
|
|
|
}
|
|
|
|
|
message.success(t(commonResult))
|
|
|
|
|
message.success(t('common.updateSuccess'))
|
|
|
|
|
} finally {
|
|
|
|
|
formLoading.value = false
|
|
|
|
|
}
|
|
|
|
@ -506,6 +519,9 @@ const submitForm = async () => {
|
|
|
|
|
}
|
|
|
|
|
//保存表单数据
|
|
|
|
|
await saveFormData()
|
|
|
|
|
|
|
|
|
|
await initStatus(formData.value.status)
|
|
|
|
|
|
|
|
|
|
// 成功后刷新
|
|
|
|
|
reload()
|
|
|
|
|
}
|
|
|
|
@ -552,8 +568,6 @@ const handleSub = async (pNum,scope) => {
|
|
|
|
|
scope.row.matSub = Number(pNum)- Number(scope.row.matRest)
|
|
|
|
|
//-----------------
|
|
|
|
|
}
|
|
|
|
|
const isShowBtnOther = ref(false)
|
|
|
|
|
const isShowBtnDelete = ref(true)
|
|
|
|
|
|
|
|
|
|
//仓库列表
|
|
|
|
|
const init_page_wh = (async ()=>{
|
|
|
|
@ -569,12 +583,65 @@ const init_page_pn = (async ()=>{
|
|
|
|
|
var pnData = await PnApi.getSimpList()
|
|
|
|
|
pnList.value = pnData.filter(item =>item.wh_id== formData.value.whId)
|
|
|
|
|
})
|
|
|
|
|
// 按钮控制
|
|
|
|
|
const ctrView = ref(false)
|
|
|
|
|
const ctrSave = ref(false)
|
|
|
|
|
const ctrCancel = ref(true)
|
|
|
|
|
const ctrDelete = ref(false)
|
|
|
|
|
const btnSave = ref(true)
|
|
|
|
|
const btnCancel = ref(false)
|
|
|
|
|
|
|
|
|
|
// 根据页面动作和数据状态控制按钮输入框信息
|
|
|
|
|
const initStatus = async (status) =>{
|
|
|
|
|
switch(status){
|
|
|
|
|
case 1:
|
|
|
|
|
ctrView.value = false
|
|
|
|
|
ctrSave.value = false
|
|
|
|
|
ctrCancel.value = true
|
|
|
|
|
ctrDelete.value = false
|
|
|
|
|
|
|
|
|
|
btnSave.value= true
|
|
|
|
|
btnCancel.value = false
|
|
|
|
|
break
|
|
|
|
|
case 2:
|
|
|
|
|
ctrView.value = false
|
|
|
|
|
ctrSave.value = true
|
|
|
|
|
ctrCancel.value = false
|
|
|
|
|
ctrDelete.value = true
|
|
|
|
|
btnSave.value= false
|
|
|
|
|
btnCancel.value = true
|
|
|
|
|
break
|
|
|
|
|
case 3:
|
|
|
|
|
ctrView.value = true
|
|
|
|
|
ctrSave.value = true
|
|
|
|
|
ctrCancel.value = true
|
|
|
|
|
ctrDelete.value = true
|
|
|
|
|
btnSave.value= false
|
|
|
|
|
btnCancel.value = false
|
|
|
|
|
break
|
|
|
|
|
default:
|
|
|
|
|
break
|
|
|
|
|
}
|
|
|
|
|
// 查看页面时可操作控件禁用
|
|
|
|
|
if(query.type === 'review'){
|
|
|
|
|
ctrView.value = true
|
|
|
|
|
ctrSave.value = true
|
|
|
|
|
ctrCancel.value = true
|
|
|
|
|
ctrDelete.value = true
|
|
|
|
|
|
|
|
|
|
btnSave.value= false
|
|
|
|
|
btnCancel.value = false
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/** 初始化 **/
|
|
|
|
|
onMounted(async () => {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
formData.value = await CheckApi.getStorageCheck(query.id)
|
|
|
|
|
|
|
|
|
|
// 页面控件可视初始化
|
|
|
|
|
await initStatus(formData.value.status)
|
|
|
|
|
|
|
|
|
|
await init_page_wh()
|
|
|
|
|
await init_page_rg()
|
|
|
|
|
await init_page_pn()
|
|
|
|
|