Merge remote-tracking branch 'origin/dev' into dev

pull/2/head
zengchenxi 9 months ago
commit 8b7d3aa013

@ -667,7 +667,7 @@ const saveFormData = async () => {
const dataMats = formData.value.matItemDOList as unknown as StorageMatApi.StorageMatVO[]
await StorageMatApi.createStorageMatBatch(dataMats, storageid.value)
if (formData.value.matItemDOList.length > 0) {
if (formData.value.attachments!=undefined && formData.value.attachments.length > 0) {
//
matUploadData.value.businessId = storageid
matUploadRef.value!.submit()

@ -662,7 +662,7 @@ const saveFormData = async () => {
const dataMats = formData.value.matItemDOList as unknown as StorageMatApi.StorageMatVO[]
await StorageMatApi.createStorageMatBatch(dataMats, storageid.value)
if (formData.value.matItemDOList.length > 0) {
if (formData.value.attachments!=undefined && formData.value.attachments.length > 0) {
//
matUploadData.value.businessId = storageid
matUploadRef.value!.submit()

@ -30,7 +30,7 @@
<el-form-item prop="whId" label="盘点仓库" required>
<el-select v-model="formData.whId" placeholder="下拉选择" clearable disabled class="!w-400px"
@change="handleWh">
<el-option v-for="dict in whList" :key="dict.id" :label="dict.whName" :value="dict.id" />
<el-option v-for="dict in whList" :key="dict.id" :label="dict.wh_name" :value="dict.id" />
</el-select>
</el-form-item>
</el-col>
@ -62,7 +62,7 @@
<el-row>
<el-col :span="24">
<el-form-item label="排除库存为0的物料?" prop="noZero">
<el-radio-group v-model="formData.noZero" disabled>
<el-radio-group v-model="formData.noZero" >
<el-radio v-for="dict in getIntDictOptions(DICT_TYPE.HELI_COMMON_IS_OR_NOT)" :key="dict.value"
:label="dict.value">
{{ dict.label }}
@ -74,7 +74,8 @@
<el-row>
<el-col :span="24">
<el-form-item label="盘点开始日期" prop="checkTime">
<el-date-picker v-model="formData.checkTime" value-format="YYYY-MM-DD" type="date" disabled class="!w-220px" />
<el-date-picker v-model="formData.checkTime" value-format="x" placeholder="盘点开始时间"
class="!w-220px" />
</el-form-item>
</el-col>
</el-row>
@ -83,7 +84,7 @@
<el-row>
<el-col :span="20">
<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" />
</el-form-item>
</el-col>
</el-row>
@ -103,46 +104,24 @@
v-loading="subFormLoading" label-width="0">
<el-table :data="formData.matItemDOList" class="hl-table">
<el-table-column prop="cid" label="序号" :width="80" />
<el-table-column prop="matId" min-width="140" align="center">
<template #header> <span class="hl-table_header">*</span>物料名称 </template>
<template #default="scope">
<el-form-item :prop="`${scope.$index}.matId`" :rules="subFormRules.matId" class="mb-0px!">
<el-select v-model="scope.row.matId" placeholder="物料名称" :remote-method="remoteMatCodeSearch"
remote-show-suffix remote clearable reserve-keyword filterable :loading="matSelectLoading"
@change="(val) => handleMatCode(scope, val)" class="!w-180px">
<el-option v-for="item in matList" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="matCode" label="物料编码" min-width="120" align="center" />
<el-table-column prop="matType" label="物料类型" min-width="120" align="center">
<template #default="scope">
<dict-tag :type="DICT_TYPE.HELI_MATERIAL_TYPE" :value="scope.row.matType"
v-if="scope.row.matType ? true : false" />
</template>
</el-table-column>
<el-table-column prop="matName" label="物料名称" min-width="140" align="center" />
<el-table-column prop="matType" 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="matUnit" label="系统单位" min-width="120" align="center">
<template #default="scope">
<dict-tag :type="DICT_TYPE.HELI_MATERIAL_UNIT" :value="scope.row.matUnit"
v-if="scope.row.matUnit ? true : false" />
</template>
</el-table-column>
<el-table-column prop="matBrand" label="品牌" min-width="120" align="center" />
<el-table-column prop="rgId" 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">
<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="handleRg(scope)"
disabled="">
<el-select v-model="scope.row.rgId" placeholder="" style="width: 100%" @change="handleRg(scope)">
<el-option v-for="dict in rgList" :key="dict.id" :label="dict.rgName" :value="dict.id" />
</el-select>
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="pnId" 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">
<el-form-item :prop="`${scope.$index}.pnId`" :rules="subFormRules.pnId" class="mb-0px!">
<el-select v-model="scope.row.pnId" placeholder="" style="width: 100%">
@ -152,9 +131,10 @@
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="lotNo" min-width="120" label="批次号" align="center" />
<el-table-column prop="matRest" label="库存数量" 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">
<el-form-item :prop="`${scope.$index}.storageOkQty`" :rules="subFormRules.storageOkQty"
class="mb-0px!">
@ -162,27 +142,14 @@
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="lotNo" min-width="120" label="批次号" align="center" />
<el-table-column prop="description" min-width="180" label="备注" align="center">
<template #default="scope">
<el-input v-model="scope.row.description" />
</template>
</el-table-column>
<el-table-column prop="matUnit" label="库存单位" min-width="120" align="center" />
<el-table-column label="操作" align="center" width="240">
<template #default="scope">
<!-- <el-button v-if="!scope.row.editable" type="primary" size="small" link
@click="handleEdit(scope.$index)">
编辑
</el-button>
<el-button link v-else type="success" size="small" @click="handleSave(scope.$index)">
保存
</el-button>
<el-button link type="primary" @click="handlefuke(scope.$index, scope.row)">复制</el-button> -->
<el-button link type="danger" size="small" @click.prevent="handleDelete2(scope.$index)"
v-if="isShowBtnDelete">
删除
</el-button>
<el-button link type="primary" @click="handleCopy(scope.$index, scope.row)">复制</el-button>
</template>
</el-table-column>
</el-table>
@ -283,11 +250,11 @@
</el-form>
<div class="text-center hl-footer">
<el-button @click="() => router.go(-1)" size="large"> </el-button>
<el-button @click="submitForm" v-if="isShowBtnGroup" type="success" :disabled="formLoading" size="large">
<el-button @click="submitForm" type="success" :disabled="formLoading" size="large">
</el-button>
<el-button @click="handleStatus(2)" v-if="isShowBtnGroup" type="primary" :disabled="formLoading" size="large">
<el-button @click="handleStatus(2)" type="primary" :disabled="formLoading" size="large">
</el-button>
<el-button @click="handleStatus(3)" v-if="isShowBtnCancel" type="danger" :disabled="formLoading" size="large">
<el-button @click="handleStatus(3)" type="danger" :disabled="formLoading" size="large">
</el-button>
</div>
</el-card>
@ -305,7 +272,6 @@ import * as CheckApi from '@/api/heli/storagecheck'
import * as CheckMatApi from '@/api/heli/storagecheckmat'
import * as UserApi from '@/api/system/user'
import * as MatApi from '@/api/heli/material'
import * as WhApi from '@/api/heli/warehouse'
import * as RgApi from '@/api/heli/rg'
import * as PnApi from '@/api/heli/pn'
@ -328,7 +294,7 @@ const formData = ref({
stockNo: undefined,
checkType: undefined,
checkTime: undefined,
status:undefined,
status: undefined,
noZero: undefined,
whId: undefined,
description: undefined,
@ -373,52 +339,6 @@ const handleStatus = async (num) => {
} catch (e) {
return
}
//
await saveFormData()
formData.value.status = num
const dataUpdate = formData.value as unknown as CheckApi.StorageVO
if (num == 2) {
dataUpdate.outbound = useUserStore().getUser.id
} else {
dataUpdate.cancel = useUserStore().getUser.id
}
await CheckApi.updateStorageStatus(dataUpdate)
message.success(t('common.updateSuccess'))
switch (num) {
case 1:
isShowBtnGroup.value = true
isShowBtnCancel.value = false
isShowBtnOther.value = true
isShowBtnDelete.value = true
break
case 2:
isShowBtnGroup.value = false
isShowBtnCancel.value = true
isShowBtnOther.value = false
isShowBtnDelete.value = false
break
case 3:
isShowBtnGroup.value = false
isShowBtnCancel.value = false
isShowBtnOther.value = false
isShowBtnDelete.value = false
break
default:
break
}
//
if (query.type === 'review') {
isShowBtnGroup.value = false
isShowBtnCancel.value = false
isShowBtnOther.value = false
isShowBtnDelete.value = false
}
query.id = storageid.value
query.type = 'update'
reload()
}
const userList = ref<UserApi.UserVO[]>([]) //
@ -476,7 +396,6 @@ const downloadAttachment = async (name, url) => {
}
// ==================== =======================================
const storageid = ref()
var commonResult = ''
/** 提交表单 */
@ -487,17 +406,28 @@ const saveFormData = async () => {
//
formLoading.value = true
try {
const data = formData.value as unknown as CheckApi.StorageCheckVO
await CheckApi.updateStorageCheck(data)
//
formData.value.matItemDOList.forEach((item) => {
item.stockId = storageid.value
item.whId = formData.value.whId
})
if( formData.value.matItemDOList){
formData.value.matItemDOList.forEach((item) => {
item.stockId = formData.value.id
item.whId = formData.value.whId
})
}
const dataMats = formData.value.matItemDOList as unknown as CheckMatApi.StorageCheckMatVO[]
await CheckMatApi.createStorageMatBatch(dataMats, storageid.value)
//await CheckMatApi.createStorageMatBatch(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.matItemDOList.length > 0) {
if (formData.value.attachments!=undefined && formData.value.attachments.length > 0) {
//
matUploadData.value.businessId = storageid
matUploadData.value.businessId = formData.value.id
matUploadRef.value!.submit()
}
message.success(t(commonResult))
@ -508,10 +438,10 @@ const saveFormData = async () => {
const submitForm = async () => {
//
await formRef.value.validate()
if (formData.value.matItemDOList.length === 0) {
message.alertWarning('请添加物料信息!')
return
}
// if (formData.value.matItemDOList ==undefined || formData.value.matItemDOList.length === 0) {
// message.alertWarning('!')
// return
// }
//
try {
await matSubFormRef.value.validate()
@ -521,87 +451,54 @@ const submitForm = async () => {
//
await saveFormData()
//
query.id = storageid.value
query.type = 'update'
reload()
}
var matCount = 1
const onAddItem = () => {
if (formData.value.whId) {
const newData = {
//
cid: matCount,
stockId: 0,
matId: '',
matName: '',
matCode: '',
matType: '',
matSpec: '',
matUnit: '',
whId: '',
rgId: '',
pnId: '',
pnlist: ref([]),
storageOkQty: '',
lotNo: '',
description: '',
productBomItemValueDOList: []
}
matCount = matCount + 1
formData.value.matItemDOList.push(newData)
} else {
message.alertWarning('请选择出库仓库')
const newData = {
//
cid: matCount,
isCopy: 0,
stockId: 0,
matId: '',
matName: '',
matCode: '',
matType: '',
matSpec: '',
matUnit: '',
matRest: '',
whId: '',
rgId: '',
pnId: '',
pnlist: ref([]),
storageOkQty: '',
lotNo: '',
description: '',
productBomItemValueDOList: []
}
matCount = matCount + 1
formData.value.matItemDOList.push(newData)
}
//
const handleDelete2 = (index: number) => {
formData.value.matItemDOList.splice(index, 1)
var itemDelteing = formData.value.matItemDOList[index]
if (itemDelteing.isCopy == 0) {
message.alertWarning("原始物料不能删除")
} else {
formData.value.matItemDOList.splice(index, 1)
}
}
//
const warehouseList = ref([])
const whList = ref([])
//
var rgList = ref([])
//
var pnList = ref([])
const handleWh = async (wid) => {
//-------------------
const queryParamsRg = reactive({
pageNo: 1,
pageSize: 99,
whId: wid
})
const dataRg = await RgApi.getRgPage(queryParamsRg)
rgList.value = []
pnList.value = []
rgList.value = dataRg.list
const matLastRemoteData = await CheckMatApi.getStorageMatList()
let matParams = {
pageNo: 1,
pageSize: 99,
status: '1'
}
const dataMat = await MatApi.getMaterialPage(matParams)
matList.value = []
matList.value = dataMat.list.filter(
(item) =>
matLastRemoteData.find((fish) => fish.matId === item.id && fish.whId == wid) !== undefined
)
formData.value.matItemDOList = []
// formData.value.matItemDOList.forEach(item => {
// item.rgId = ''
// item.pnId = ''
// item.pnlist.value = []
// })
//-------------------
}
const handleRg = async (scope) => {
//-------------------
const queryParamsRPn = reactive({
@ -616,203 +513,32 @@ const handleRg = async (scope) => {
//-------------------
}
const matList = ref<MatApi.MaterialVO[]>([]) //
const matSelectLoading = ref(false)
const remoteMatCodeSearch = async (name) => {
matSelectLoading.value = true
//
let matParams = {
pageNo: 1,
pageSize: 10,
name: name,
status: '1'
}
const matLastRemoteData = await CheckMatApi.getStorageMatList()
const dataMat = await MatApi.getMaterialPage(matParams)
matList.value = []
matList.value = dataMat.list.filter(
(item) =>
matLastRemoteData.find(
(fish) => fish.matId === item.id && fish.whId == formData.value.whId
) !== undefined
)
matSelectLoading.value = false
}
const handleMatCode = async (scope, matid) => {
if (matid && matLastData.value.find((item) => item.matId === matid)) {
const matVo = matLastData.value.find((item) => item.matId === matid)
scope.row.matId = matVo.matId
scope.row.matName = matVo.matName
scope.row.matCode = matVo.matCode
scope.row.matSpec = matVo.matSpec
scope.row.matType = matVo.materialType
scope.row.matUnit = matVo.matUnit
scope.row.rgId = matVo.rgId
scope.row.pnId = matVo.pnId
scope.row.matRest = matVo.matRest
scope.row.storageOkQty = matVo.storageOkQty
scope.row.lotNo = matVo.lotNo
scope.row.description = matVo.description
const queryParamsRPn = reactive({
pageNo: 1,
pageSize: 99,
rgId: scope.row.rgId,
pnStatus: 1
})
const dataPn = await PnApi.getPnPage(queryParamsRPn)
scope.row.pnlist = dataPn.list
} else {
scope.row.matId = ''
scope.row.matName = ''
scope.row.matCode = ''
scope.row.matSpec = ''
scope.row.matType = ''
scope.row.matUnit = ''
scope.row.rgId = ''
scope.row.pnId = ''
scope.row.matRest = ''
scope.row.storageOkQty = ''
scope.row.lotNo = ''
scope.row.description = ''
scope.row.pnlist = []
}
}
const isShowBtnGroup = ref(true)
const isShowBtnCancel = ref(false)
const isShowBtnOther = ref(false)
const isShowBtnDelete = ref(true)
const btnWhClickable = ref(false)
const matLastData = ref([])
//
const init_page_wh = (async ()=>{
whList.value = await WhApi.getSimpList()
})
//
const init_page_rg = (async ()=>{
rgList.value = await RgApi.getSimpList()
})
/** 初始化 **/
onMounted(async () => {
btnWhClickable.value = query.type === 'update' ? true : false
matLastData.value = await CheckMatApi.getStorageMatList()
await init_page_wh()
await init_page_rg()
formData.value = await CheckApi.getStorageCheck(query.id)
//
let matParams = {
//
let attParams = {
pageNo: 1,
pageSize: 99,
status: '1'
businessId: query.id,
businessType: 'STORAGECHECK'
}
const dataMat = await MatApi.getMaterialPage(matParams)
matList.value = []
matList.value = dataMat.list
dialogTitle.value = t('action.' + query.type)
dialogTitle.value = query.type === 'review' ? '查看' : dialogTitle.value
//-------------------
const data = await WhApi.getWarehouseSimpList()
warehouseList.value = data
//-------------------
if (query.id) {
//
formData.value = await CheckApi.getStorage(query.id)
switch (formData.value.status) {
case 1:
isShowBtnGroup.value = true
isShowBtnCancel.value = false
isShowBtnDelete.value = true
break
case 2:
isShowBtnGroup.value = false
isShowBtnCancel.value = true
isShowBtnOther.value = false
isShowBtnDelete.value = false
break
case 3:
isShowBtnGroup.value = false
isShowBtnCancel.value = false
isShowBtnOther.value = false
isShowBtnDelete.value = false
break
default:
break
}
//
if (query.type === 'review') {
isShowBtnGroup.value = false
isShowBtnCancel.value = false
isShowBtnOther.value = false
isShowBtnDelete.value = false
}
//
const queryParamsRg = reactive({
pageNo: 1,
pageSize: 99,
status: 1,
whId: formData.value.whId
})
const dataRg = await RgApi.getRgPage(queryParamsRg)
rgList.value = []
rgList.value = dataRg.list
//
const queryParamsPn = reactive({
pageNo: 1,
pageSize: 99
})
const dataPn = await PnApi.getPnPage(queryParamsPn)
pnList.value = []
pnList.value = dataPn.list
//
const queryParamsMat = reactive({
pageNo: 1,
pageSize: 99,
stockId: query.id
})
const dataMats = await CheckMatApi.getStorageMatPage(queryParamsMat)
formData.value.matItemDOList = dataMats.list
//
const queryParamsMat2 = reactive({
pageNo: 1,
pageSize: 99,
status: 1
})
const matVos = await MatApi.getMaterialPage(queryParamsMat2)
formData.value.matItemDOList.forEach((item) => {
item.cid = matCount
item.matId = matVos.list.find((record) => record.id === item.matId)?.id
//item.matCode = matVos.list.find( (record) => record.id === item.matId)?.id
item.matCode = matVos.list.find((record) => record.id == item.matId)?.code
item.matSpec = matVos.list.find((record) => record.id == item.matId)?.spec
item.matType = matVos.list.find((record) => record.id == item.matId)?.materialType
item.matUnit = matVos.list.find((record) => record.id == item.matId)?.unit
item.pnlist = pnList.value.filter((pn) => pn.rgId == item.rgId)
item.matRest = matLastData.value.find(
(rest) => rest.rgId == item.rgId && rest.pnId == item.pnId
)?.matRest
item.matRest = item.matRest == undefined ? 0 : item.matRest
matCount = matCount + 1
// item = matLastData.value.find((rest) => rest.rgId === item.rgId && rest.pnId === item.pnId)
// item.pnlist = pnList.value.filter((pn) => pn.rgId === item.rgId)
// item.cid = matCount
// matCount = matCount + 1
})
//
let attParams = {
pageNo: 1,
pageSize: 99,
businessId: query.id,
businessType: 'STORAGE'
}
formData.value.attachments = (await getFilePage(attParams)).list
}
formData.value.attachments = (await getFilePage(attParams)).list
//
userList.value = await UserApi.getSimpleUserList()
})

@ -59,9 +59,17 @@
</template>
</el-table-column>
<el-table-column label="备注" align="center" prop="description" />
<el-table-column label="创建人" align="center" prop="creator" />
<el-table-column label="创建人" align="center" prop="creator">
<template #default="scope">
{{ userList.find((user) => user.id == scope.row.creator)?.nickname }}
</template>
</el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime" :formatter="dateFormatter" width="180px" />
<el-table-column label="提交人" align="center" prop="keeper" />
<el-table-column label="提交人" align="center" prop="keeper" >
<template #default="scope">
{{ userList.find((user) => user.id == scope.row.keeper)?.nickname }}
</template>
</el-table-column>
<el-table-column label="提交时间" align="center" prop="keeperTime" :formatter="dateFormatter" width="180px" />
<el-table-column label="单据状态" align="center" prop="status">
<template #default="scope">
@ -95,6 +103,7 @@ import download from '@/utils/download'
import * as StorageCheckApi from '@/api/heli/storagecheck'
import StorageCheckForm from './StorageCheckForm.vue'
import * as WarehouseApi from '@/api/heli/warehouse'
import * as UserApi from '@/api/system/user'
defineOptions({ name: 'StorageCheck' })
@ -128,6 +137,7 @@ const queryParams = reactive({
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
const userList = ref<UserApi.UserVO[]>([]) //
const whList = ref([])
//
const init_page_wh = (async () => {
@ -137,6 +147,8 @@ const init_page_wh = (async () => {
const getList = async () => {
loading.value = true
try {
//
userList.value = await UserApi.getSimpleUserList()
const data = await StorageCheckApi.getStorageCheckPage(queryParams)
list.value = data.list
total.value = data.total
@ -198,6 +210,7 @@ const handleExport = async () => {
/** 初始化 **/
onMounted(async () => {
await init_page_wh()
await getList()
})

Loading…
Cancel
Save