|
|
@ -27,8 +27,7 @@
|
|
|
|
<el-row>
|
|
|
|
<el-row>
|
|
|
|
<el-col :span="24">
|
|
|
|
<el-col :span="24">
|
|
|
|
<el-form-item prop="whId" label="盘点仓库" required>
|
|
|
|
<el-form-item prop="whId" label="盘点仓库" required>
|
|
|
|
<el-select v-model="formData.whId" placeholder="下拉选择" clearable disabled class="!w-400px"
|
|
|
|
<el-select v-model="formData.whId" placeholder="下拉选择" clearable disabled class="!w-400px" @change="handleWh">
|
|
|
|
@change="handleWh">
|
|
|
|
|
|
|
|
<el-option v-for="dict in whList" :key="dict.id" :label="dict.wh_name" :value="dict.id" />
|
|
|
|
<el-option v-for="dict in whList" :key="dict.id" :label="dict.wh_name" :value="dict.id" />
|
|
|
|
</el-select>
|
|
|
|
</el-select>
|
|
|
|
</el-form-item>
|
|
|
|
</el-form-item>
|
|
|
@ -40,8 +39,7 @@
|
|
|
|
<el-col :span="24">
|
|
|
|
<el-col :span="24">
|
|
|
|
<el-form-item prop="status" label="单据状态">
|
|
|
|
<el-form-item prop="status" label="单据状态">
|
|
|
|
<el-select v-model="formData.status" placeholder="下拉选择" clearable class="!w-400px" disabled>
|
|
|
|
<el-select v-model="formData.status" placeholder="下拉选择" clearable class="!w-400px" disabled>
|
|
|
|
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.HELI_STORAGE_MAT_CHECK_STATUS)"
|
|
|
|
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.HELI_STORAGE_MAT_CHECK_STATUS)" :key="dict.value" :label="dict.label" :value="dict.value" />
|
|
|
|
:key="dict.value" :label="dict.label" :value="dict.value" />
|
|
|
|
|
|
|
|
</el-select>
|
|
|
|
</el-select>
|
|
|
|
</el-form-item>
|
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
</el-col>
|
|
|
@ -50,8 +48,7 @@
|
|
|
|
<el-col :span="24">
|
|
|
|
<el-col :span="24">
|
|
|
|
<el-form-item prop="checkType" label="盘点类型">
|
|
|
|
<el-form-item prop="checkType" label="盘点类型">
|
|
|
|
<el-select v-model="formData.checkType" clearable class="!w-400px" disabled>
|
|
|
|
<el-select v-model="formData.checkType" clearable class="!w-400px" disabled>
|
|
|
|
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.HELI_STORAGE_MAT_CHECK_TYPE)" :key="dict.value"
|
|
|
|
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.HELI_STORAGE_MAT_CHECK_TYPE)" :key="dict.value" :label="dict.label" :value="dict.value" />
|
|
|
|
:label="dict.label" :value="dict.value" />
|
|
|
|
|
|
|
|
</el-select>
|
|
|
|
</el-select>
|
|
|
|
</el-form-item>
|
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
</el-col>
|
|
|
@ -62,8 +59,7 @@
|
|
|
|
<el-col :span="24">
|
|
|
|
<el-col :span="24">
|
|
|
|
<el-form-item label="排除库存为0的物料?" prop="noZero">
|
|
|
|
<el-form-item label="排除库存为0的物料?" prop="noZero">
|
|
|
|
<el-radio-group v-model="formData.noZero" disabled>
|
|
|
|
<el-radio-group v-model="formData.noZero" disabled>
|
|
|
|
<el-radio v-for="dict in getIntDictOptions(DICT_TYPE.HELI_COMMON_IS_OR_NOT)" :key="dict.value"
|
|
|
|
<el-radio v-for="dict in getIntDictOptions(DICT_TYPE.HELI_COMMON_IS_OR_NOT)" :key="dict.value" :label="dict.value">
|
|
|
|
:label="dict.value">
|
|
|
|
|
|
|
|
{{ dict.label }}
|
|
|
|
{{ dict.label }}
|
|
|
|
</el-radio>
|
|
|
|
</el-radio>
|
|
|
|
</el-radio-group>
|
|
|
|
</el-radio-group>
|
|
|
@ -73,15 +69,14 @@
|
|
|
|
<el-row>
|
|
|
|
<el-row>
|
|
|
|
<el-col :span="24">
|
|
|
|
<el-col :span="24">
|
|
|
|
<el-form-item label="盘点开始日期" prop="checkTime">
|
|
|
|
<el-form-item label="盘点开始日期" prop="checkTime">
|
|
|
|
<el-date-picker v-model="formData.checkTime" value-format="x" placeholder="盘点开始时间"
|
|
|
|
<el-date-picker v-model="formData.checkTime" value-format="x" placeholder="盘点开始时间" class="!w-220px" disabled />
|
|
|
|
class="!w-220px" disabled />
|
|
|
|
|
|
|
|
</el-form-item>
|
|
|
|
</el-form-item>
|
|
|
|
</el-col>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
</el-row>
|
|
|
|
</el-col>
|
|
|
|
</el-col>
|
|
|
|
</el-row>
|
|
|
|
</el-row>
|
|
|
|
<el-row>
|
|
|
|
<el-row>
|
|
|
|
<el-col :span="20">
|
|
|
|
<el-col :span="16">
|
|
|
|
<el-form-item label="备注" prop="description">
|
|
|
|
<el-form-item label="备注" prop="description">
|
|
|
|
<el-input type="textarea" v-model="formData.description" show-word-limit maxlength="200" disabled />
|
|
|
|
<el-input type="textarea" v-model="formData.description" show-word-limit maxlength="200" disabled />
|
|
|
|
</el-form-item>
|
|
|
|
</el-form-item>
|
|
|
@ -99,8 +94,7 @@
|
|
|
|
<el-col>
|
|
|
|
<el-col>
|
|
|
|
<el-button class="hl-addbutton" type="primary" size="large" v-bind:disabled="ctrView || ctrSave" @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-col>
|
|
|
|
<el-form ref="matSubFormRef" :model="formData.matItemDOList" :rules="subFormRules"
|
|
|
|
<el-form ref="matSubFormRef" :model="formData.matItemDOList" :rules="subFormRules" v-loading="subFormLoading" label-width="0">
|
|
|
|
v-loading="subFormLoading" label-width="0">
|
|
|
|
|
|
|
|
<el-table :data="formData.matItemDOList" class="hl-table">
|
|
|
|
<el-table :data="formData.matItemDOList" class="hl-table">
|
|
|
|
<el-table-column prop="cid" label="序号" :width="80" />
|
|
|
|
<el-table-column prop="cid" label="序号" :width="80" />
|
|
|
|
<el-table-column prop="matCode" label="物料编码" min-width="120" align="center" />
|
|
|
|
<el-table-column prop="matCode" label="物料编码" min-width="120" align="center" />
|
|
|
@ -109,7 +103,7 @@
|
|
|
|
<el-table-column prop="shortName" label="物料简称" min-width="120" align="center" />
|
|
|
|
<el-table-column prop="shortName" label="物料简称" min-width="120" align="center" />
|
|
|
|
<el-table-column prop="matSpec" label="规格/型号" min-width="120" align="center" />
|
|
|
|
<el-table-column prop="matSpec" label="规格/型号" min-width="120" align="center" />
|
|
|
|
<el-table-column prop="matBrand" label="品牌" min-width="120" align="center" />
|
|
|
|
<el-table-column prop="matBrand" label="品牌" min-width="120" align="center" />
|
|
|
|
<el-table-column prop="rgId" min-width="120" align="center">
|
|
|
|
<el-table-column prop="rgId" min-width="140" align="center">
|
|
|
|
<template #header> <span class="hl-table_header">*</span>库区 </template>
|
|
|
|
<template #header> <span class="hl-table_header">*</span>库区 </template>
|
|
|
|
<template #default="scope">
|
|
|
|
<template #default="scope">
|
|
|
|
<el-form-item :prop="`${scope.$index}.rgId`" :rules="subFormRules.rgId" class="mb-0px!">
|
|
|
|
<el-form-item :prop="`${scope.$index}.rgId`" :rules="subFormRules.rgId" class="mb-0px!">
|
|
|
@ -119,13 +113,12 @@
|
|
|
|
</el-form-item>
|
|
|
|
</el-form-item>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
</el-table-column>
|
|
|
|
</el-table-column>
|
|
|
|
<el-table-column prop="pnId" min-width="140" align="center">
|
|
|
|
<el-table-column prop="pnId" min-width="180" align="center">
|
|
|
|
<template #header> <span class="hl-table_header">*</span>库位 </template>
|
|
|
|
<template #header> <span class="hl-table_header">*</span>库位 </template>
|
|
|
|
<template #default="scope">
|
|
|
|
<template #default="scope">
|
|
|
|
<el-form-item :prop="`${scope.$index}.pnId`" :rules="subFormRules.pnId" class="mb-0px!">
|
|
|
|
<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)" v-bind:disabled="ctrView || ctrSave">
|
|
|
|
<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"
|
|
|
|
<el-option v-for="dict in scope.row.pnlist" :key="dict.id" :label="dict.pn_name" :value="dict.id" />
|
|
|
|
:value="dict.id" />
|
|
|
|
|
|
|
|
</el-select>
|
|
|
|
</el-select>
|
|
|
|
</el-form-item>
|
|
|
|
</el-form-item>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
@ -134,18 +127,29 @@
|
|
|
|
<el-table-column prop="storageOkQty" min-width="120" align="center">
|
|
|
|
<el-table-column prop="storageOkQty" min-width="120" align="center">
|
|
|
|
<template #header> <span class="hl-table_header">*</span>盘点数量</template>
|
|
|
|
<template #header> <span class="hl-table_header">*</span>盘点数量</template>
|
|
|
|
<template #default="scope">
|
|
|
|
<template #default="scope">
|
|
|
|
<el-form-item :prop="`${scope.$index}.storageOkQty`" :rules="subFormRules.storageOkQty"
|
|
|
|
<el-form-item :prop="`${scope.$index}.storageOkQty`" :rules="subFormRules.storageOkQty" class="mb-0px!">
|
|
|
|
class="mb-0px!">
|
|
|
|
|
|
|
|
<el-input v-model="scope.row.storageOkQty" @change="(val)=>handleSub(val,scope)" v-bind:disabled="ctrView || ctrSave" />
|
|
|
|
<el-input v-model="scope.row.storageOkQty" @change="(val)=>handleSub(val,scope)" v-bind:disabled="ctrView || ctrSave" />
|
|
|
|
</el-form-item>
|
|
|
|
</el-form-item>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
|
</el-table-column>
|
|
|
|
</el-table-column>
|
|
|
|
<el-table-column prop="matSub" label="盈亏差异" min-width="120" align="center" />
|
|
|
|
<el-table-column prop="matSub" label="盈亏差异" min-width="120" align="center">
|
|
|
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div v-if="scope.row.matSub<0" style="color:#EC808D;">
|
|
|
|
|
|
|
|
{{scope.row.matSub}}
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<span v-else-if="scope.row.matSub>0" style="color:#63A103;">
|
|
|
|
|
|
|
|
+{{scope.row.matSub}}
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
<span v-else>
|
|
|
|
|
|
|
|
{{scope.row.matSub}}
|
|
|
|
|
|
|
|
</span>
|
|
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
</el-table-column>
|
|
|
|
<el-table-column prop="matUnit" label="库存单位" min-width="120" align="center" />
|
|
|
|
<el-table-column prop="matUnit" label="库存单位" min-width="120" align="center" />
|
|
|
|
<el-table-column label="操作" align="center" width="240">
|
|
|
|
<el-table-column label="操作" align="center" width="240">
|
|
|
|
<template #default="scope">
|
|
|
|
<template #default="scope">
|
|
|
|
<el-button link type="danger" size="small" @click.prevent="handleDelete2(scope.$index)" v-bind:disabled="ctrView || ctrDelete"
|
|
|
|
<el-button link type="danger" size="small" @click.prevent="handleDelete2(scope.$index)" v-bind:disabled="ctrView || ctrDelete" v-if="scope.row.isCopy==1">
|
|
|
|
v-if="scope.row.isCopy==1">
|
|
|
|
|
|
|
|
删除
|
|
|
|
删除
|
|
|
|
</el-button>
|
|
|
|
</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>
|
|
|
|
<el-button link type="primary" v-if="scope.row.isCopy==0" @click="handleCopy(scope.$index, scope.row)" v-bind:disabled="ctrView || ctrDelete">复制</el-button>
|
|
|
@ -166,18 +170,16 @@
|
|
|
|
<el-col>
|
|
|
|
<el-col>
|
|
|
|
<el-card class="hl-incard">
|
|
|
|
<el-card class="hl-incard">
|
|
|
|
<el-col>
|
|
|
|
<el-col>
|
|
|
|
<el-upload ref="matUploadRef" :file-list="matUploadFiles" multiple :limit="10" :action="uploadUrl"
|
|
|
|
<el-upload ref="matUploadRef" :file-list="matUploadFiles" multiple :limit="10" :action="uploadUrl" :headers="{
|
|
|
|
:headers="{
|
|
|
|
|
|
|
|
Authorization: 'Bearer ' + getAccessToken(),
|
|
|
|
Authorization: 'Bearer ' + getAccessToken(),
|
|
|
|
'tenant-id': getTenantId()
|
|
|
|
'tenant-id': getTenantId()
|
|
|
|
}" name="files" :show-file-list="false" :auto-upload="false" :data="matUploadData"
|
|
|
|
}" name="files" :show-file-list="false" :auto-upload="false" :data="matUploadData" :on-change="matUploadChange" class="upload-file-uploader">
|
|
|
|
:on-change="matUploadChange" class="upload-file-uploader">
|
|
|
|
|
|
|
|
<el-button type="primary" v-bind:disabled="ctrView || ctrSave">
|
|
|
|
<el-button type="primary" v-bind:disabled="ctrView || ctrSave">
|
|
|
|
<Icon icon="ep:upload-filled" />上传
|
|
|
|
<Icon icon="ep:upload-filled" />上传
|
|
|
|
</el-button>
|
|
|
|
</el-button>
|
|
|
|
</el-upload>
|
|
|
|
</el-upload>
|
|
|
|
</el-col>
|
|
|
|
</el-col>
|
|
|
|
<el-table :data="formData.attachments" class="hl-table">
|
|
|
|
<el-table :data="formData.attachments" class="hl-table" style="margin-top: 10px">
|
|
|
|
<el-table-column prop="name" label="文件名称" align="center">
|
|
|
|
<el-table-column prop="name" label="文件名称" align="center">
|
|
|
|
<!-- <template #default="scope">
|
|
|
|
<!-- <template #default="scope">
|
|
|
|
<a :href="scope.row.url" target="_blank" style="color: #409eff">{{ scope.row.name }} </a>
|
|
|
|
<a :href="scope.row.url" target="_blank" style="color: #409eff">{{ scope.row.name }} </a>
|
|
|
@ -188,12 +190,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
<el-table-column label="操作" align="center">
|
|
|
|
<el-table-column label="操作" align="center">
|
|
|
|
<template #default="scope">
|
|
|
|
<template #default="scope">
|
|
|
|
<el-button link type="danger" size="small"
|
|
|
|
<el-button link type="danger" size="small" @click="handleDeleteAttachment(scope.$index, scope.row.businessFileType)" v-bind:disabled="ctrView || ctrDelete">
|
|
|
|
@click="handleDeleteAttachment(scope.$index, scope.row.businessFileType)" v-bind:disabled="ctrView || ctrDelete">
|
|
|
|
|
|
|
|
删除
|
|
|
|
删除
|
|
|
|
</el-button>
|
|
|
|
</el-button>
|
|
|
|
<el-button link type="primary" size="small"
|
|
|
|
<el-button link type="primary" size="small" @click="downloadAttachment(scope.row.name, scope.row.url)" v-bind:disabled="ctrView || ctrDelete">
|
|
|
|
@click="downloadAttachment(scope.row.name, scope.row.url)" v-bind:disabled="ctrView || ctrDelete">
|
|
|
|
|
|
|
|
下载
|
|
|
|
下载
|
|
|
|
</el-button>
|
|
|
|
</el-button>
|
|
|
|
</template>
|
|
|
|
</template>
|
|
|
@ -249,11 +249,11 @@
|
|
|
|
</el-form>
|
|
|
|
</el-form>
|
|
|
|
<div class="text-center hl-footer">
|
|
|
|
<div class="text-center hl-footer">
|
|
|
|
<el-button @click="() => router.go(-1)" size="large">取 消</el-button>
|
|
|
|
<el-button @click="() => router.go(-1)" size="large">取 消</el-button>
|
|
|
|
<el-button @click="submitForm" type="success" v-if="btnSave" size="large">保
|
|
|
|
<el-button @click="submitForm" type="success" v-if="btnSave" size="large">保
|
|
|
|
存</el-button>
|
|
|
|
存</el-button>
|
|
|
|
<el-button @click="handleStatus(2)" type="primary" v-if="btnSave" size="large">提
|
|
|
|
<el-button @click="handleStatus(2)" type="primary" v-if="btnSave" size="large">提
|
|
|
|
交</el-button>
|
|
|
|
交</el-button>
|
|
|
|
<el-button @click="handleStatus(3)" type="danger" v-if="btnCancel" size="large">删
|
|
|
|
<el-button @click="handleStatus(3)" type="danger" v-if="btnCancel" size="large">删
|
|
|
|
除</el-button>
|
|
|
|
除</el-button>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</el-card>
|
|
|
|
</el-card>
|
|
|
@ -266,7 +266,7 @@ import { ref } from 'vue'
|
|
|
|
import { useRoute } from 'vue-router'
|
|
|
|
import { useRoute } from 'vue-router'
|
|
|
|
import { dateFormatter, formatDate } from '@/utils/formatTime'
|
|
|
|
import { dateFormatter, formatDate } from '@/utils/formatTime'
|
|
|
|
|
|
|
|
|
|
|
|
import { getIntDictOptions,getDictLabel, DICT_TYPE } from '@/utils/dict'
|
|
|
|
import { getIntDictOptions, getDictLabel, DICT_TYPE } from '@/utils/dict'
|
|
|
|
import { getAccessToken, getTenantId } from '@/utils/auth'
|
|
|
|
import { getAccessToken, getTenantId } from '@/utils/auth'
|
|
|
|
import { useUserStore } from '@/store/modules/user'
|
|
|
|
import { useUserStore } from '@/store/modules/user'
|
|
|
|
|
|
|
|
|
|
|
@ -326,7 +326,7 @@ const matOpenFormRef = ref()
|
|
|
|
|
|
|
|
|
|
|
|
const openMatForm = () => {
|
|
|
|
const openMatForm = () => {
|
|
|
|
//noZero: number,whId?: number,isAll?: number
|
|
|
|
//noZero: number,whId?: number,isAll?: number
|
|
|
|
matOpenFormRef.value.open(formData.value.noZero,formData.value.whId, formData.value.checkType)
|
|
|
|
matOpenFormRef.value.open(formData.value.noZero, formData.value.whId, formData.value.checkType)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const subFormLoading = ref(false) // 子表单的加载中
|
|
|
|
const subFormLoading = ref(false) // 子表单的加载中
|
|
|
@ -338,24 +338,28 @@ const subFormRules = reactive({
|
|
|
|
})
|
|
|
|
})
|
|
|
|
const handleStatus = async (num) => {
|
|
|
|
const handleStatus = async (num) => {
|
|
|
|
formData.value.status = num
|
|
|
|
formData.value.status = num
|
|
|
|
if(num == 2){
|
|
|
|
if (num == 2) {
|
|
|
|
formData.value.keeper = useUserStore().getUser.id
|
|
|
|
formData.value.keeper = useUserStore().getUser.id
|
|
|
|
// 校验表单
|
|
|
|
// 校验表单
|
|
|
|
await formRef.value.validate()
|
|
|
|
await formRef.value.validate()
|
|
|
|
if (formData.value.matItemDOList ==undefined || formData.value.matItemDOList.length === 0) {
|
|
|
|
if (formData.value.matItemDOList == undefined || formData.value.matItemDOList.length === 0) {
|
|
|
|
message.alertWarning('请添加物料信息!')
|
|
|
|
message.alertWarning('请添加物料信息!')
|
|
|
|
return
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 校验子表单
|
|
|
|
// 校验子表单
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
var isRepeat = false
|
|
|
|
var isRepeat = false
|
|
|
|
formData.value.matItemDOList.forEach(item=>{
|
|
|
|
formData.value.matItemDOList.forEach((item) => {
|
|
|
|
if(formData.value.matItemDOList.filter(mat =>mat.matId == item.matId && mat.pnId == item.pnId).length>1){
|
|
|
|
if (
|
|
|
|
|
|
|
|
formData.value.matItemDOList.filter(
|
|
|
|
|
|
|
|
(mat) => mat.matId == item.matId && mat.pnId == item.pnId
|
|
|
|
|
|
|
|
).length > 1
|
|
|
|
|
|
|
|
) {
|
|
|
|
isRepeat = true
|
|
|
|
isRepeat = true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
})
|
|
|
|
if(isRepeat){
|
|
|
|
if (isRepeat) {
|
|
|
|
message.alertWarning('存在相同库位的物料信息,请修改,避免重复盘点!')
|
|
|
|
message.alertWarning('存在相同库位的物料信息,请修改,避免重复盘点!')
|
|
|
|
return
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -366,7 +370,7 @@ const handleStatus = async (num) => {
|
|
|
|
//保存表单数据
|
|
|
|
//保存表单数据
|
|
|
|
await saveFormData()
|
|
|
|
await saveFormData()
|
|
|
|
await CheckApi.updateStorageCheckStatus(formData.value.id)
|
|
|
|
await CheckApi.updateStorageCheckStatus(formData.value.id)
|
|
|
|
}else{
|
|
|
|
} else {
|
|
|
|
formData.value.cancel = useUserStore().getUser.id
|
|
|
|
formData.value.cancel = useUserStore().getUser.id
|
|
|
|
const data = formData.value as unknown as CheckApi.StorageCheckVO
|
|
|
|
const data = formData.value as unknown as CheckApi.StorageCheckVO
|
|
|
|
await CheckApi.updateStorageCheck(data)
|
|
|
|
await CheckApi.updateStorageCheck(data)
|
|
|
@ -376,22 +380,29 @@ const handleStatus = async (num) => {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const getList = async (arrMat) => {
|
|
|
|
const getList = async (arrMat) => {
|
|
|
|
|
|
|
|
arrMat.forEach((row) => {
|
|
|
|
arrMat.forEach(row => {
|
|
|
|
|
|
|
|
row.cid = matCount
|
|
|
|
row.cid = matCount
|
|
|
|
if(formData.value.matItemDOList.filter(item =>item.matId == row.id && item.whId==row.whId && item.rgId == row.rgId && item.pnId== row.pnId).length==0){
|
|
|
|
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.matId = row.id
|
|
|
|
row.pnlist = ref([])
|
|
|
|
row.pnlist = ref([])
|
|
|
|
row.pnlist = pnList.value.filter(pn => pn.rg_id == row.rgId)
|
|
|
|
row.pnlist = pnList.value.filter((pn) => pn.rg_id == row.rgId)
|
|
|
|
if(row.pnlist.length==0){
|
|
|
|
if (row.pnlist.length == 0) {
|
|
|
|
row.rgId =''
|
|
|
|
row.rgId = ''
|
|
|
|
row.pnId = ''
|
|
|
|
row.pnId = ''
|
|
|
|
row.matRest = 0
|
|
|
|
row.matRest = 0
|
|
|
|
}
|
|
|
|
}
|
|
|
|
formData.value.matItemDOList.push(row)
|
|
|
|
formData.value.matItemDOList.push(row)
|
|
|
|
matCount = matCount +1
|
|
|
|
matCount = matCount + 1
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
})
|
|
|
|
//formData.value.matItemDOList = arrMat
|
|
|
|
//formData.value.matItemDOList = arrMat
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// 复制数据
|
|
|
|
// 复制数据
|
|
|
@ -402,11 +413,11 @@ const handleCopy = (index, item) => {
|
|
|
|
const newData: any = {
|
|
|
|
const newData: any = {
|
|
|
|
...data,
|
|
|
|
...data,
|
|
|
|
isCopy: 1,
|
|
|
|
isCopy: 1,
|
|
|
|
cid:matCount
|
|
|
|
cid: matCount
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// 添加新数据
|
|
|
|
// 添加新数据
|
|
|
|
formData.value.matItemDOList.splice(index + 1, 0, newData)
|
|
|
|
formData.value.matItemDOList.splice(index + 1, 0, newData)
|
|
|
|
matCount = matCount +1
|
|
|
|
matCount = matCount + 1
|
|
|
|
}
|
|
|
|
}
|
|
|
|
const userList = ref<UserApi.UserVO[]>([]) // 用户列表
|
|
|
|
const userList = ref<UserApi.UserVO[]>([]) // 用户列表
|
|
|
|
|
|
|
|
|
|
|
@ -467,15 +478,13 @@ const downloadAttachment = async (name, url) => {
|
|
|
|
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
|
|
|
|
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
|
|
|
|
|
|
|
|
|
|
|
|
const saveFormData = async () => {
|
|
|
|
const saveFormData = async () => {
|
|
|
|
|
|
|
|
|
|
|
|
// 提交请求
|
|
|
|
// 提交请求
|
|
|
|
formLoading.value = true
|
|
|
|
formLoading.value = true
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
|
|
|
|
|
|
|
|
const data = formData.value as unknown as CheckApi.StorageCheckVO
|
|
|
|
const data = formData.value as unknown as CheckApi.StorageCheckVO
|
|
|
|
await CheckApi.updateStorageCheck(data)
|
|
|
|
await CheckApi.updateStorageCheck(data)
|
|
|
|
//物料信息保存
|
|
|
|
//物料信息保存
|
|
|
|
if( formData.value.matItemDOList){
|
|
|
|
if (formData.value.matItemDOList) {
|
|
|
|
formData.value.matItemDOList.forEach((item) => {
|
|
|
|
formData.value.matItemDOList.forEach((item) => {
|
|
|
|
item.checkId = formData.value.id
|
|
|
|
item.checkId = formData.value.id
|
|
|
|
item.whId = formData.value.whId
|
|
|
|
item.whId = formData.value.whId
|
|
|
@ -484,12 +493,12 @@ const saveFormData = async () => {
|
|
|
|
const dataMats = formData.value.matItemDOList as unknown as CheckMatApi.StorageCheckMatVO[]
|
|
|
|
const dataMats = formData.value.matItemDOList as unknown as CheckMatApi.StorageCheckMatVO[]
|
|
|
|
await CheckMatApi.createCheckMatBatch(dataMats, formData.value.id)
|
|
|
|
await CheckMatApi.createCheckMatBatch(dataMats, formData.value.id)
|
|
|
|
|
|
|
|
|
|
|
|
if (formData.value.attachments!=undefined && formData.value.attachments.length > 0) {
|
|
|
|
if (formData.value.attachments != undefined && formData.value.attachments.length > 0) {
|
|
|
|
//附件信息保存
|
|
|
|
//附件信息保存
|
|
|
|
matUploadData.value.businessId = formData.value.id
|
|
|
|
matUploadData.value.businessId = formData.value.id
|
|
|
|
matUploadRef.value!.submit()
|
|
|
|
matUploadRef.value!.submit()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
message.success(t('common.updateSuccess'))
|
|
|
|
message.success(t('common.updateSuccess'))
|
|
|
|
} finally {
|
|
|
|
} finally {
|
|
|
|
formLoading.value = false
|
|
|
|
formLoading.value = false
|
|
|
@ -498,20 +507,24 @@ const saveFormData = async () => {
|
|
|
|
const submitForm = async () => {
|
|
|
|
const submitForm = async () => {
|
|
|
|
// 校验表单
|
|
|
|
// 校验表单
|
|
|
|
await formRef.value.validate()
|
|
|
|
await formRef.value.validate()
|
|
|
|
if (formData.value.matItemDOList ==undefined || formData.value.matItemDOList.length === 0) {
|
|
|
|
if (formData.value.matItemDOList == undefined || formData.value.matItemDOList.length === 0) {
|
|
|
|
message.alertWarning('请添加物料信息!')
|
|
|
|
message.alertWarning('请添加物料信息!')
|
|
|
|
return
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 校验子表单
|
|
|
|
// 校验子表单
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
var isRepeat = false
|
|
|
|
var isRepeat = false
|
|
|
|
formData.value.matItemDOList.forEach(item=>{
|
|
|
|
formData.value.matItemDOList.forEach((item) => {
|
|
|
|
if(formData.value.matItemDOList.filter(mat =>mat.matId == item.matId && mat.pnId == item.pnId).length>1){
|
|
|
|
if (
|
|
|
|
|
|
|
|
formData.value.matItemDOList.filter(
|
|
|
|
|
|
|
|
(mat) => mat.matId == item.matId && mat.pnId == item.pnId
|
|
|
|
|
|
|
|
).length > 1
|
|
|
|
|
|
|
|
) {
|
|
|
|
isRepeat = true
|
|
|
|
isRepeat = true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
})
|
|
|
|
if(isRepeat){
|
|
|
|
if (isRepeat) {
|
|
|
|
message.alertWarning('存在相同库位的物料信息,请修改,避免重复盘点!')
|
|
|
|
message.alertWarning('存在相同库位的物料信息,请修改,避免重复盘点!')
|
|
|
|
return
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -534,7 +547,7 @@ var matCount = 1
|
|
|
|
const handleDelete2 = (index: number) => {
|
|
|
|
const handleDelete2 = (index: number) => {
|
|
|
|
var itemDelteing = formData.value.matItemDOList[index]
|
|
|
|
var itemDelteing = formData.value.matItemDOList[index]
|
|
|
|
if (itemDelteing.isCopy == 0) {
|
|
|
|
if (itemDelteing.isCopy == 0) {
|
|
|
|
message.alertWarning("原始物料不能删除")
|
|
|
|
message.alertWarning('原始物料不能删除')
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
formData.value.matItemDOList.splice(index, 1)
|
|
|
|
formData.value.matItemDOList.splice(index, 1)
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -547,45 +560,59 @@ var rgList = ref([])
|
|
|
|
//库位全数据
|
|
|
|
//库位全数据
|
|
|
|
var pnList = ref([])
|
|
|
|
var pnList = ref([])
|
|
|
|
|
|
|
|
|
|
|
|
const handleRg = async (rgid,scope) => {
|
|
|
|
const handleRg = async (rgid, scope) => {
|
|
|
|
//-------------------库位全数据
|
|
|
|
//-------------------库位全数据
|
|
|
|
scope.row.pnId = ''
|
|
|
|
scope.row.pnId = ''
|
|
|
|
scope.row.pnlist = pnList.value.filter(pn => pn.rg_id === rgid)
|
|
|
|
scope.row.pnlist = pnList.value.filter((pn) => pn.rg_id === rgid)
|
|
|
|
//-------------------
|
|
|
|
//-------------------
|
|
|
|
}
|
|
|
|
}
|
|
|
|
const handlePn = async (pnid,scope) => {
|
|
|
|
const handlePn = async (pnid, scope) => {
|
|
|
|
//-------------------库位全数据
|
|
|
|
//-------------------库位全数据
|
|
|
|
if(formData.value.matItemDOList.filter(item =>item.id == scope.row.id && item.whId==scope.row.whId && item.rgId == scope.row.rgId && item.pnId== pnid).length>1){
|
|
|
|
if (
|
|
|
|
|
|
|
|
formData.value.matItemDOList.filter(
|
|
|
|
|
|
|
|
(item) =>
|
|
|
|
|
|
|
|
item.id == scope.row.id &&
|
|
|
|
|
|
|
|
item.whId == scope.row.whId &&
|
|
|
|
|
|
|
|
item.rgId == scope.row.rgId &&
|
|
|
|
|
|
|
|
item.pnId == pnid
|
|
|
|
|
|
|
|
).length > 1
|
|
|
|
|
|
|
|
) {
|
|
|
|
scope.row.matRest = 0
|
|
|
|
scope.row.matRest = 0
|
|
|
|
message.alertWarning('物料编码'+scope.row.matCode+',当前库位已存在,请修改,避免重复盘点')
|
|
|
|
message.alertWarning('物料编码' + scope.row.matCode + ',当前库位已存在,请修改,避免重复盘点')
|
|
|
|
|
|
|
|
|
|
|
|
return
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
|
var currentMatRest = await CheckApi.getStorageNowMatRest(scope.row.id,scope.row.pnId)
|
|
|
|
var currentMatRest = await CheckApi.getStorageNowMatRest(scope.row.id, scope.row.pnId)
|
|
|
|
scope.row.matRest = currentMatRest
|
|
|
|
scope.row.matRest = currentMatRest
|
|
|
|
if(scope.row.storageOkQty == undefined || scope.row.storageOkQty == '') {scope.row.matSub =0}else{ scope.row.matSub = scope.row.storageOkQty-scope.row.matRest}
|
|
|
|
if (scope.row.storageOkQty == undefined || scope.row.storageOkQty == '') {
|
|
|
|
|
|
|
|
scope.row.matSub = 0
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
scope.row.matSub = scope.row.storageOkQty - scope.row.matRest
|
|
|
|
|
|
|
|
}
|
|
|
|
//-------------------
|
|
|
|
//-------------------
|
|
|
|
}
|
|
|
|
}
|
|
|
|
const handleSub = async (pNum,scope) => {
|
|
|
|
const handleSub = async (pNum, scope) => {
|
|
|
|
//-------------------库位全数据
|
|
|
|
//-------------------库位全数据
|
|
|
|
scope.row.matSub = Number(pNum)- Number(scope.row.matRest)
|
|
|
|
scope.row.matSub = Number(pNum) - Number(scope.row.matRest)
|
|
|
|
|
|
|
|
console.log(typeof scope.row.matSub)
|
|
|
|
|
|
|
|
|
|
|
|
//-----------------
|
|
|
|
//-----------------
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//仓库列表
|
|
|
|
//仓库列表
|
|
|
|
const init_page_wh = (async ()=>{
|
|
|
|
const init_page_wh = async () => {
|
|
|
|
whList.value = await WhApi.getSimpList()
|
|
|
|
whList.value = await WhApi.getSimpList()
|
|
|
|
})
|
|
|
|
}
|
|
|
|
//库区列表
|
|
|
|
//库区列表
|
|
|
|
const init_page_rg = (async ()=>{
|
|
|
|
const init_page_rg = async () => {
|
|
|
|
var rgData = await RgApi.getSimpList()
|
|
|
|
var rgData = await RgApi.getSimpList()
|
|
|
|
rgList.value = rgData.filter(item =>item.wh_id== formData.value.whId)
|
|
|
|
rgList.value = rgData.filter((item) => item.wh_id == formData.value.whId)
|
|
|
|
})
|
|
|
|
}
|
|
|
|
//库位列表
|
|
|
|
//库位列表
|
|
|
|
const init_page_pn = (async ()=>{
|
|
|
|
const init_page_pn = async () => {
|
|
|
|
var pnData = await PnApi.getSimpList()
|
|
|
|
var pnData = await PnApi.getSimpList()
|
|
|
|
pnList.value = pnData.filter(item =>item.wh_id== formData.value.whId)
|
|
|
|
pnList.value = pnData.filter((item) => item.wh_id == formData.value.whId)
|
|
|
|
})
|
|
|
|
}
|
|
|
|
// 按钮控制
|
|
|
|
// 按钮控制
|
|
|
|
const ctrView = ref(false)
|
|
|
|
const ctrView = ref(false)
|
|
|
|
const ctrSave = ref(false)
|
|
|
|
const ctrSave = ref(false)
|
|
|
@ -595,15 +622,15 @@ const btnSave = ref(true)
|
|
|
|
const btnCancel = ref(false)
|
|
|
|
const btnCancel = ref(false)
|
|
|
|
|
|
|
|
|
|
|
|
// 根据页面动作和数据状态控制按钮输入框信息
|
|
|
|
// 根据页面动作和数据状态控制按钮输入框信息
|
|
|
|
const initStatus = async (status) =>{
|
|
|
|
const initStatus = async (status) => {
|
|
|
|
switch(status){
|
|
|
|
switch (status) {
|
|
|
|
case 1:
|
|
|
|
case 1:
|
|
|
|
ctrView.value = false
|
|
|
|
ctrView.value = false
|
|
|
|
ctrSave.value = false
|
|
|
|
ctrSave.value = false
|
|
|
|
ctrCancel.value = true
|
|
|
|
ctrCancel.value = true
|
|
|
|
ctrDelete.value = false
|
|
|
|
ctrDelete.value = false
|
|
|
|
|
|
|
|
|
|
|
|
btnSave.value= true
|
|
|
|
btnSave.value = true
|
|
|
|
btnCancel.value = true
|
|
|
|
btnCancel.value = true
|
|
|
|
break
|
|
|
|
break
|
|
|
|
case 2:
|
|
|
|
case 2:
|
|
|
@ -611,7 +638,7 @@ const initStatus = async (status) =>{
|
|
|
|
ctrSave.value = true
|
|
|
|
ctrSave.value = true
|
|
|
|
ctrCancel.value = false
|
|
|
|
ctrCancel.value = false
|
|
|
|
ctrDelete.value = true
|
|
|
|
ctrDelete.value = true
|
|
|
|
btnSave.value= false
|
|
|
|
btnSave.value = false
|
|
|
|
btnCancel.value = false
|
|
|
|
btnCancel.value = false
|
|
|
|
break
|
|
|
|
break
|
|
|
|
case 3:
|
|
|
|
case 3:
|
|
|
@ -619,27 +646,27 @@ const initStatus = async (status) =>{
|
|
|
|
ctrSave.value = true
|
|
|
|
ctrSave.value = true
|
|
|
|
ctrCancel.value = true
|
|
|
|
ctrCancel.value = true
|
|
|
|
ctrDelete.value = true
|
|
|
|
ctrDelete.value = true
|
|
|
|
btnSave.value= false
|
|
|
|
btnSave.value = false
|
|
|
|
btnCancel.value = false
|
|
|
|
btnCancel.value = false
|
|
|
|
break
|
|
|
|
break
|
|
|
|
default:
|
|
|
|
default:
|
|
|
|
break
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// 查看页面时可操作控件禁用
|
|
|
|
// 查看页面时可操作控件禁用
|
|
|
|
if(query.type === 'review'){
|
|
|
|
if (query.type === 'review') {
|
|
|
|
ctrView.value = true
|
|
|
|
ctrView.value = true
|
|
|
|
ctrSave.value = true
|
|
|
|
ctrSave.value = true
|
|
|
|
ctrCancel.value = true
|
|
|
|
ctrCancel.value = true
|
|
|
|
ctrDelete.value = true
|
|
|
|
ctrDelete.value = true
|
|
|
|
|
|
|
|
|
|
|
|
btnSave.value= false
|
|
|
|
btnSave.value = false
|
|
|
|
btnCancel.value = false
|
|
|
|
btnCancel.value = false
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/** 初始化 **/
|
|
|
|
/** 初始化 **/
|
|
|
|
onMounted(async () => {
|
|
|
|
onMounted(async () => {
|
|
|
|
|
|
|
|
dialogTitle.value = query.type === 'update' ? '编辑页' : '详情页'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
formData.value = await CheckApi.getStorageCheck(query.id)
|
|
|
|
formData.value = await CheckApi.getStorageCheck(query.id)
|
|
|
|
|
|
|
|
|
|
|
|
// 页面控件可视初始化
|
|
|
|
// 页面控件可视初始化
|
|
|
@ -652,29 +679,29 @@ onMounted(async () => {
|
|
|
|
const dataCheckMats = await CheckMatApi.getStorageCheckListByCheckID(query.id)
|
|
|
|
const dataCheckMats = await CheckMatApi.getStorageCheckListByCheckID(query.id)
|
|
|
|
formData.value.matItemDOList = dataCheckMats
|
|
|
|
formData.value.matItemDOList = dataCheckMats
|
|
|
|
|
|
|
|
|
|
|
|
if(formData.value.matItemDOList==undefined){formData.value.matItemDOList=[]}
|
|
|
|
if (formData.value.matItemDOList == undefined) {
|
|
|
|
|
|
|
|
formData.value.matItemDOList = []
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const dataMatSimples = await MatApi.getSimpList()
|
|
|
|
const dataMatSimples = await MatApi.getSimpList()
|
|
|
|
|
|
|
|
|
|
|
|
formData.value.matItemDOList.forEach(item =>{
|
|
|
|
formData.value.matItemDOList.forEach((item) => {
|
|
|
|
var matFind = dataMatSimples.find( simp=> simp.id == item.matId)
|
|
|
|
var matFind = dataMatSimples.find((simp) => simp.id == item.matId)
|
|
|
|
item.cid = matCount
|
|
|
|
item.cid = matCount
|
|
|
|
item.isCopy = 0
|
|
|
|
item.isCopy = 0
|
|
|
|
item.matName = matFind?.name
|
|
|
|
item.matName = matFind?.name
|
|
|
|
item.matCode = matFind?.code
|
|
|
|
item.matCode = matFind?.code
|
|
|
|
item.matSpec = matFind?.spec
|
|
|
|
item.matSpec = matFind?.spec
|
|
|
|
item.matUnit =getDictLabel(DICT_TYPE.HELI_MATERIAL_UNIT, matFind?.unit)
|
|
|
|
item.matUnit = getDictLabel(DICT_TYPE.HELI_MATERIAL_UNIT, matFind?.unit)
|
|
|
|
item.matType =getDictLabel(DICT_TYPE.HELI_MATERIAL_TYPE, matFind?.unit)
|
|
|
|
item.matType = getDictLabel(DICT_TYPE.HELI_MATERIAL_TYPE, matFind?.unit)
|
|
|
|
item.matBrand = matFind?.brand
|
|
|
|
item.matBrand = matFind?.brand
|
|
|
|
item.shortName = matFind?.short_name
|
|
|
|
item.shortName = matFind?.short_name
|
|
|
|
item.matSub = item.storageOkQty-item.matRest
|
|
|
|
item.matSub = item.storageOkQty - item.matRest
|
|
|
|
item.pnlist = pnList.value.filter( pn=> pn.rg_id == item.rgId)
|
|
|
|
item.pnlist = pnList.value.filter((pn) => pn.rg_id == item.rgId)
|
|
|
|
|
|
|
|
|
|
|
|
matCount = matCount +1
|
|
|
|
matCount = matCount + 1
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 附件信息
|
|
|
|
// 附件信息
|
|
|
|
let attParams = {
|
|
|
|
let attParams = {
|
|
|
|
pageNo: 1,
|
|
|
|
pageNo: 1,
|
|
|
|