物料需求计划 审核列表详情页数据加载

物料需求计划 审核列表详情页数据加载
pull/4/head
siontion 8 months ago
parent 362adc4b88
commit 3712bdd76e

@ -66,10 +66,10 @@ public class MaterialPlanServiceImpl implements MaterialPlanService {
MaterialPlanDO updateObj = BeanUtils.toBean(updateReqVO, MaterialPlanDO.class);
LocalDateTime currTime = LocalDateTime.now();
if(updateReqVO.getSubmitUserId()!= null){
if(updateReqVO.getStatus()==2){
updateObj.setSubmitTime(currTime);
}
if(updateReqVO.getAuditor()!= null){
if(updateReqVO.getStatus()== 3 || updateReqVO.getStatus() == 4){
updateObj.setAuditTime(currTime);
}

@ -96,6 +96,7 @@ import ProjectPlanDialog from '@/views/heli/materialplan/ProjectPlanDialog.vue'
const { t } = useI18n() //
const message = useMessage() //
const router = useRouter()
const dialogVisible = ref(false) //
const dialogTitle = ref('') //
@ -141,11 +142,10 @@ const submitForm = async () => {
formLoading.value = true
try {
const data = formData.value as unknown as MaterialPlanApi.MaterialPlanVO
await MaterialPlanApi.createMaterialPlan(data)
message.success(t('common.createSuccess'))
var materialPlanId = await MaterialPlanApi.createMaterialPlan(data)
router.push({ path: '/purchase/materialplanedit',query: { id: materialPlanId }})
//message.success(t('common.createSuccess'))
dialogVisible.value = false
//
emit('success')
} finally {
formLoading.value = false
}

@ -0,0 +1,211 @@
<template>
<ContentWrap>
<!-- 搜索工作栏 -->
<el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" label-width="130px">
<el-form-item label="物料计划单号" prop="projectMaterialPlanNo">
<el-input v-model="queryParams.projectMaterialPlanNo" placeholder="物料计划单号" clearable @keyup.enter="handleQuery"
class="!w-240px" />
</el-form-item>
<el-form-item label="单据日期" prop="createTime">
<el-date-picker class="!w-265px" v-model="queryParams.createTime" type="date" value-format="x"
placeholder="单据日期" />
</el-form-item>
<el-form-item label="生产计划单号" prop="planNo">
<el-input v-model="queryParams.planNo" placeholder="生产计划单号" clearable @keyup.enter="handleQuery"
class="!w-240px" />
</el-form-item>
<el-form-item label="项目名称" prop="projectName">
<el-input v-model="queryParams.projectName" placeholder="项目名称" clearable @keyup.enter="handleQuery"
class="!w-250px" />
</el-form-item>
<el-form-item label="单据状态" prop="status" v-if="false">
<el-select v-model="queryParams.status" placeholder="下拉选择" clearable class="!w-240px">
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.HELI_PROJECT_MATERIAL_PLAN_STATUS)" :key="dict.value"
:label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item>
<el-button @click="handleQuery">
<Icon icon="ep:search" class="mr-5px" /> 搜索
</el-button>
<el-button @click="resetQuery">
<Icon icon="ep:refresh" class="mr-5px" /> 重置
</el-button>
<el-button type="primary" plain @click="openForm('create')">
<Icon icon="ep:plus" class="mr-5px" /> 新增
</el-button>
</el-form-item>
</el-form>
</ContentWrap>
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
<el-table-column label="物料需求计划单号" align="center" prop="projectMaterialPlanNo" width="180" fixed>
<template #default="scope">
<el-button text type="primary" @click="openForm('review', scope.row.id)">
{{ scope.row.projectMaterialPlanNo }}
</el-button>
</template>
</el-table-column>
<el-table-column label="单据日期" align="center" prop="createTime" :formatter="dateFormatter" width="180px" fixed>
<template #default="scope">
{{
formatDate(scope.row.createTime, 'YYYY-MM-DD')
}}
</template>
</el-table-column>
<el-table-column label="生产计划单号" align="center" prop="planNo" />
<el-table-column label="项目名称" align="center" prop="projectName" />
<el-table-column label="备注" align="center" prop="description" />
<el-table-column label="创建人" align="center" prop="creator" >
<template #default="scope">
{{ userInit.find((user) => user.id == scope.row.creator)?.nickname }}
</template>
</el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime" :formatter="dateFormatter" width="220" />
<el-table-column label="送审人" align="center" prop="submitUserId" />
<el-table-column label="送审时间" align="center" prop="submitTime" :formatter="dateFormatter" width="220" />
<el-table-column label="审核人" align="center" prop="auditor" />
<el-table-column label="审核时间" align="center" prop="auditTime" :formatter="dateFormatter" width="220" />
<el-table-column label="单据状态" align="center" prop="status" fixed="right">
<template #default="scope">
<dict-tag :type="DICT_TYPE.HELI_PROJECT_MATERIAL_PLAN_STATUS" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column label="操作" align="center" fixed="right">
<template #default="scope">
<el-button link type="primary" @click="openForm('update', scope.row.id)" >
去审核
</el-button>
<el-button link type="primary" @click="openForm('detail', scope.row.id)">
查看详情
</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<Pagination :total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize"
@pagination="getList" />
</ContentWrap>
<!-- 表单弹窗添加/修改 -->
<MaterialPlanForm ref="formRef" @success="getList" />
</template>
<script setup lang="ts">
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
import { dateFormatter, formatDate } from '@/utils/formatTime'
import download from '@/utils/download'
import * as MaterialPlanApi from '@/api/heli/materialplan'
import * as UserApi from '@/api/system/user'
defineOptions({ name: 'MaterialPlan' })
const router = useRouter()
const message = useMessage() //
const { t } = useI18n() //
const loading = ref(true) //
const list = ref([]) //
const total = ref(0) //
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
id: undefined,
projectMaterialPlanNo: undefined,
projectId: undefined,
projectPlanId: undefined,
submitUserId: undefined,
submitTime: [],
auditor: undefined,
auditTime: [],
status: 2,
description: undefined,
createTime: [],
})
const queryFormRef = ref() //
const exportLoading = ref(false) //
/** 查询列表 */
const getList = async () => {
loading.value = true
try {
const data = await MaterialPlanApi.getMaterialPlanPage(queryParams)
list.value = data.list
total.value = data.total
} finally {
loading.value = false
}
}
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.pageNo = 1
queryParams.createTime= formatDate(queryParams.createTime, 'YYYY-MM-DD')
getList()
}
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value.resetFields()
handleQuery()
}
/** 添加/修改操作 */
const openForm = (type: string, id?: number) => {
switch (type) {
case 'create':
router.push({ path: '/purchase/materialplanadd', query: { id: id } })
break;
case 'update':
router.push({ path: '/purchase/auditdetail', query: { id: id } })
break;
case 'detail':
router.push({ path: '/purchase/materialplandetail', query: { id: id } })
break;
default:
break;
}
}
/** 删除按钮操作 */
const handleDelete = async (id: number) => {
try {
//
await message.delConfirm()
//
await MaterialPlanApi.deleteMaterialPlan(id)
message.success(t('common.delSuccess'))
//
await getList()
} catch { }
}
/** 导出按钮操作 */
const handleExport = async () => {
try {
//
await message.exportConfirm()
//
exportLoading.value = true
const data = await MaterialPlanApi.exportMaterialPlan(queryParams)
download.excel(data, '物料需求计划.xls')
} catch {
} finally {
exportLoading.value = false
}
}
const userInit = ref()
/** 初始化 **/
onMounted(async () => {
//
userInit.value = await UserApi.getSimpleUserList()
getList()
})
</script>

@ -0,0 +1,592 @@
<template>
<el-card class="hl-card" style="position: relative">
<template #header>
<span>编辑页</span>
</template>
<el-form ref="formRef" :model="formData" :rules="formRules" label-width="160px" v-loading="formLoading">
<!-- 基础信息 -->
<el-card class="hl-card-info">
<template #header>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">基础信息</span>
</template>
<el-row>
<el-col :span="24">
<el-row>
<el-col :span="6">
<el-row>
<el-col :span="24">
<el-form-item label="物料需求计划编号" prop="projectMaterialPlanNo">
<el-input class="!w-265px" placeholder="系统自动生成" v-model="formData.projectMaterialPlanNo" disabled />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="80">
<el-form-item label="备注" prop="description">
<el-input class="!w-713px" type="textarea" v-model="formData.description" show-word-limit
maxlength="200" disabled />
</el-form-item>
</el-col>
</el-row>
</el-col>
<el-col :span="6">
<el-row>
<el-col :span="24">
<el-form-item label="单据日期" prop="createTime">
<el-date-picker class="!w-265px" v-model="formData.createTime" value-format="x" placeholder="单据日期"
disabled />
</el-form-item>
</el-col>
</el-row>
</el-col>
<el-col :span="6">
<el-row>
<el-col :span="24">
<el-form-item label="生产计划单号" prop="planNo">
<el-input class="!w-265px" placeholder="生产计划单号" v-model="formData.planNo" disabled />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="项目名称" prop="projectName">
<el-input class="!w-265px" placeholder="项目名称" v-model="formData.projectName" disabled />
</el-form-item>
</el-col>
</el-row>
</el-col>
<el-col :span="6">
<el-row>
<el-col :span="24">
<el-form-item label="项目编号" prop="projectCode">
<el-input class="!w-265px" v-model="formData.projectCode" placeholder="项目编号" disabled />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="单据状态" prop="status">
<el-select v-model="formData.status" placeholder="单据状态" clearable class="!w-265px" disabled>
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.HELI_PROJECT_MATERIAL_PLAN_STATUS)"
:key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-col>
</el-row>
</el-col>
</el-row>
</el-card>
<!-- 物料信息 -->
<el-card class="hl-card-info">
<template #header>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">物料信息</span>
</template>
<el-row>
<el-col>
<el-card class="hl-incard">
<el-col>
<el-button class="hl-addbutton" type="primary" size="large" @click="onAddItem" v-if="false"></el-button>
</el-col>
<el-form ref="subFormRef" :model="formData.matItemDOList" :rules="subFormRules"
v-loading="subFormLoading" label-width="0">
<el-table :data="formData.matItemDOList" class="hl-table">
<el-table-column type="index" label="序号" :width="80" />
<el-table-column prop="matCode" label="物料编码" min-width="120" align="center" />
<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="remoteMatNameSearch" disabled
remote-show-suffix remote clearable reserve-keyword filterable :loading="matSelectLoading"
@change="(val) => handleMatName(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="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="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="requireAmount" min-width="120" align="center">
<template #header><span class="hl-table_header">*</span>需求数量</template>
<template #default="scope">
<el-form-item :prop="`${scope.$index}.requireAmount`" :rules="subFormRules.requireAmount" class="mb-0px!">
<el-input v-model="scope.row.requireAmount" disabled/>
</el-form-item>
</template>
</el-table-column>
<el-table-column min-width="150" align="center">
<template #header> <span class="hl-table_header">*</span>需求到货日期 </template>
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.requireArriveTime`" :rules="subFormRules.requireArriveTime" class="mb-0px!">
<el-date-picker class="!w-265px" v-model="row.requireArriveTime" type="date" value-format="x"
placeholder="需求到货日期" disabled/>
</el-form-item>
</template>
</el-table-column>
<el-table-column min-width="150" align="center">
<template #header><span class="hl-table_header">*</span>子项目编号</template>
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.projectSubId`" :rules="subFormRules.projectSubId" class="mb-0px!">
<el-select class="!w-265px" v-model="row.projectSubId" filterable clearable disabled>
<el-option v-for="dict in formData.projectOrderSubs" :key="dict.projectSubId"
:label="dict.projectSubCode" :value="dict.projectSubId" />
</el-select>
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="description" min-width="180" label="备注" align="center">
<template #default="scope">
<el-input v-model="scope.row.description" disabled/>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="240">
<template #default="scope">
<el-button link type="danger" size="small" @click.prevent="handleDelete2(scope.$index)" v-if="false">
删除
</el-button>
</template>
</el-table-column>
</el-table>
</el-form>
</el-card>
</el-col>
</el-row>
</el-card>
<!-- 附件信息 -->
<el-card class="hl-card-info">
<template #header>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">附件信息</span>
</template>
<el-row>
<el-col>
<el-card class="hl-incard">
<el-col>
<el-upload ref="matUploadRef" :file-list="matUploadFiles" multiple :limit="10" :action="uploadUrl"
:headers="{
Authorization: 'Bearer ' + getAccessToken(),
'tenant-id': getTenantId()
}" name="files" :show-file-list="false" :auto-upload="false" :data="matUploadData"
:on-change="matUploadChange" :on-error="UpError" class="upload-file-uploader">
<el-button type="primary" v-if="false">
<Icon icon="ep:upload-filled" />上传
</el-button>
</el-upload>
</el-col>
<el-table :data="formData.attachments" class="hl-table">
<el-table-column prop="name" label="文件名称" align="center">
<!-- <template #default="scope">
<a :href="scope.row.url" target="_blank" style="color: #409eff">{{ scope.row.name }} </a>
</template> -->
</el-table-column>
<el-table-column prop="createTime" align="center" label="上传日期" :formatter="dateFormatter" />
<el-table-column label="操作" align="center">
<template #default="scope">
<el-button link type="danger" size="small" v-if="false"
@click="handleDeleteAttachment(scope.$index, scope.row.businessFileType)">
删除
</el-button>
<el-button link type="primary" size="small"
@click="downloadAttachment(scope.row.name, scope.row.url)">
下载
</el-button>
</template>
</el-table-column>
</el-table>
</el-card>
</el-col>
</el-row>
</el-card>
<!-- 系统信息 -->
<el-card class="hl-card-info">
<template #header>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">系统信息</span>
</template>
<el-row justify="center">
<el-col :span="8">
<el-form-item prop="creator" label="创建人">
{{ userList.find((user) => user.id == formData.creator)?.nickname }}
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="createTime" label="创建时间">
{{ formatDate(formData.createTime, 'YYYY-MM-DD HH:mm') }}
</el-form-item>
</el-col>
</el-row>
<el-row justify="center">
<el-col :span="8">
<el-form-item prop="submitUserId" label="送审人">
{{ userList.find((user) => user.id == formData.submitUserId)?.nickname }}
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="submitTime" label="送审时间">
{{ formatDate(formData.submitTime, 'YYYY-MM-DD HH:mm') }}
</el-form-item>
</el-col>
</el-row>
<el-row justify="center">
<el-col :span="8">
<el-form-item prop="auditor" label="审核人">
{{ userList.find((user) => user.id == formData.auditor)?.nickname }}
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="auditTime" label="审核时间">
{{ formatDate(formData.auditTime, 'YYYY-MM-DD HH:mm') }}
</el-form-item>
</el-col>
</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="saveForm(3)" v-if="isShow" type="primary" size="large"> </el-button>
<el-button @click="saveForm(4)" v-if="isShow" type="danger" size="large"> </el-button>
</div>
</el-card>
</template>
<script setup lang="ts">
import { getIntDictOptions, DICT_TYPE } from '@/utils/dict'
import * as MaterialPlanApi from '@/api/heli/materialplan'
import * as MaterialPlanDetailApi from '@/api/heli/materialplandetail'
import * as PlanApi from '@/api/heli/plan'
import * as PlanSubApi from '@/api/heli/plansub'
import * as ProjectOrderApi from '@/api/heli/projectorder'
import * as UserApi from '@/api/system/user'
import * as MaterialApi from '@/api/heli/material'
import { deleteFile, downloadFile, getFilePage } from '@/api/infra/file'
import download from '@/utils/download'
import { getAccessToken, getTenantId } from '@/utils/auth'
import { dateFormatter, formatDate } from '@/utils/formatTime'
import { useUserStore } from '@/store/modules/user'
const reload = inject('reload')
const { t } = useI18n() //
const message = useMessage() //
const { query } = useRoute()
const router = useRouter()
const dialogVisible = ref(false) //
const formLoading = ref(false) // 12
const formData = ref({
id: undefined,
projectMaterialPlanNo: undefined,
projectId: undefined,
projectPlanId: undefined,
projectPlanNo: undefined,
projectCode: undefined,
auditor: undefined,
createTime: new Date(),
status: undefined,
description: undefined,
matItemDOList: [],
matItemRemoveList: [],
attachments: []
})
const formRules = reactive({
projectPlanId: [{ required: true, message: '生产计划单号不能为空', trigger: 'blur' }],
})
const subFormRules = reactive({
matId: [{ required: true, message: '物料编码不能为空', trigger: 'blur' }],
requireAmount: [{ required: true, message: '需求数量不能为空', trigger: 'blur' }],
requireArriveTime: [{ required: true, message: '需求到货日期不能为空', trigger: 'blur' }],
projectSubId: [{ required: true, message: '子项目编号不能为空', trigger: 'blur' }],
})
const formRef = ref() // Ref
const subFormRef = ref() // Ref
// ==================== =======================================
const uploadUrl = ref(import.meta.env.VITE_UPLOAD_BATCH_URL)
const matUploadRef = ref()
const matUploadFiles = ref<UploadUserFile[]>([])
const matUploadData = ref({
businessType: 'MATERIALPLAN',
businessId: formData.value.id,
businessFileType: ''
})
const matUploadChange = (file, files) => {
matUploadFiles.value = files
refreshAttachments(files, 'MATERIALPLAN')
}
const failedAttachments = ref<UploadUserFile[]>([])
const failedAttachmentsName = ref()
const UpError = (err, file, fileList) => {
//
if (err) {
// failedAttachments.value
failedAttachments.value.push(file)
failedAttachmentsName.value = failedAttachments.value.map((value) => value.name)
}
}
const openerror = () => {
setTimeout(() => {
if (failedAttachmentsName.value.length > 0) {
//
ElMessageBox.alert(
// 使
`文件名为:${failedAttachmentsName.value.join(' / ')}上传失败`,
`文件格式不正确或网络问题 请您稍后再试`,
{
dangerouslyUseHTMLString: false,
confirmButtonText: '知道了',
center: true
}
)
}
}, 1000)
}
const refreshAttachments = (files, type) => {
formData.value.attachments = formData.value.attachments.filter((value) => value.id)
//
const newFiles = files.filter(
(file) => !formData.value.attachments.some((att) => att.name === file.name)
)
for (let i = 0; i < newFiles.length; i++) {
let file = newFiles[i]
file.businessFileType = type
file.createTime = new Date()
formData.value.attachments.push(file)
}
//
formData.value.attachments.sort((v1, v2) => v1.createTime - v2.createTime)
}
//
const handleDeleteAttachment = async (index, type) => {
const deletedAttachments = formData.value.attachments.splice(index, 1)
for (let i = 0; i < deletedAttachments.length; i++) {
const attachment = deletedAttachments[i]
if (attachment.id) {
//
await deleteFile(attachment.id)
}
//
matUploadFiles.value = matUploadFiles.value.filter((file1) => {
return file1.name != attachment.name || file1.businessFileType != type
})
}
}
//
const downloadAttachment = async (name, url) => {
if (url) {
const data = await downloadFile(url)
download.any(data, name)
}
}
// ==================== =======================================
//
const getMatList = async (name) => {
//
let matParams = {
pageNo: 1,
pageSize: 10,
status: '1'
}
if (name.length > 0) {
matParams.name = name
}
const dataMat = await MaterialApi.getMaterialPage(matParams)
matList.value = dataMat.list
}
const matList = ref<MaterialApi.MaterialVO[]>([]) //
const matSelectLoading = ref(false)
const remoteMatNameSearch = async (name) => {
matSelectLoading.value = true
//
await getMatList(name)
matSelectLoading.value = false
}
const handleMatName = async (scope, matid) => {
scope.row.matId = matList.value.find((item) => item.id === matid)?.id
scope.row.matName = matList.value.find((item) => item.id === matid)?.name
scope.row.matCode = matList.value.find((item) => item.id === matid)?.code
scope.row.matSpec = matList.value.find((item) => item.id === matid)?.spec
scope.row.matType = matList.value.find((item) => item.id === matid)?.materialType
scope.row.matUnit = matList.value.find((item) => item.id === matid)?.unit
}
//
const onAddItem = () => {
const newData = {
//
stockId: 0,
matId: '',
matName: '',
matCode: '',
matType: '',
matSpec: '',
matUnit: '',
requireAmount: '',
requireArriveTime: '',
projectSubId: '',
description: ''
}
formData.value.matItemDOList.push(newData)
}
//
const handleDelete2 = (index: number) => {
formData.value.matItemRemoveList.push(formData.value.matItemDOList[index])
formData.value.matItemDOList.splice(index, 1)
}
const handleInitPlanSub = async () => {
//
formData.value.projectOrderSubs =
await ProjectOrderApi.getProjectOrderSubListByProjectOrderId(formData.value.projectId)
//
const queryParams = reactive({
pageNo: 1,
pageSize: 99,
projectPlanId: query.id
})
formData.value.projectPlanSubs =
(await PlanSubApi.getPlanSubPage(queryParams)).list
formData.value.projectOrderSubs.forEach(item => {
if (formData.value.projectPlanSubs.filter(sub => sub.projectSubId == item.id).length > 0) {
var subTemp = formData.value.projectPlanSubs.find(sub => sub.projectSubId == item.id)
item.projectSubId = subTemp.projectSubId
item.projectSubCode = subTemp.projectSubCode
}
})
}
//
const saveMaterials = async () =>{
formData.value.matItemDOList.forEach(item => {
var subData = item as unknown as MaterialPlanDetailApi.MaterialPlanDetailVO
subData.materialId = item.matId
subData.projectMaterialPlanId = formData.value.id
if (subData.id == undefined) {
MaterialPlanDetailApi.createMaterialPlanDetail(subData)
} else {
MaterialPlanDetailApi.updateMaterialPlanDetail(subData)
}
})
formData.value.matItemRemoveList.forEach(item =>{
if (item.id != undefined) {
MaterialPlanDetailApi.deleteMaterialPlanDetail(item.id)
}
})
}
const isShow = ref(true)
//
const saveForm = async (active) => {
//
formLoading.value = true
try {
const data = formData.value as unknown as MaterialPlanApi.MaterialPlanVO
data.status = active
data.auditor = useUserStore().getUser.id
await MaterialPlanApi.updateMaterialPlan(data)
message.success('已'+(active==3?'审核':'打回'))
isShow.value = false
dialogVisible.value = false
} finally {
reload()
formLoading.value = false
}
}
//
const submitForm = async () => {
if(formData.value.matItemDOList.length ==0){
message.alertWarning('请添加物料信息!')
return
}
//
try {
await subFormRef.value.validate()
} catch (e) {
return
}
//
formData.value.status = 2
formData.value.submitUserId = useUserStore().getUser.id
await saveForm()
}
const userList = ref<UserApi.UserVO[]>([]) //
const planInit = ref()
const projectInit = ref()
const queryParams = reactive({
pageNo: 1,
pageSize: 99,
projectMaterialPlanId: query.id,
})
//
onMounted(async () => {
//
formData.value = await MaterialPlanApi.getMaterialPlan(query.id)
//
planInit.value = await PlanApi.getPlan(formData.value.projectPlanId)
//
projectInit.value = await ProjectOrderApi.getProjectOrder(formData.value.projectId)
formData.value.planNo = planInit.value.planNo
formData.value.projectName = projectInit.value.projectName
formData.value.projectCode = projectInit.value.code
//
formData.value.matItemDOList = (await MaterialPlanDetailApi.getMaterialPlanDetailPage(queryParams)).list
formData.value.matItemDOList.forEach(item=>{
matList.value.push({id:item.matId,name:item.matName})
})
formData.value.matItemRemoveList = []
//
await handleInitPlanSub()
//
let attParams = {
pageNo: 1,
pageSize: 99,
businessId: query.id,
businessType: 'MATERIALPLAN'
}
formData.value.attachments = (await getFilePage(attParams)).list
//
userList.value = await UserApi.getSimpleUserList()
if(formData.value.status ==3 || formData.value.status == 4){
isShow.value=false
}
})
</script>

@ -32,7 +32,7 @@
<el-form-item label="项目负责人" prop="projectOwner">
<el-select class="!w-265px" v-model="formData.projectOwner" filterable disabled>
<el-option v-for="dict in userInit" :key="dict.id"
:label="dict.nickname" :value="dict.id" />
:label="dict.username + ' '+ dict.nickname" :value="dict.id" />
</el-select>
</el-form-item>
</el-col>
@ -54,7 +54,7 @@
<el-form-item label="计划编制人" prop="editor">
<el-select class="!w-265px" v-model="formData.editor" filterable disabled>
<el-option v-for="dict in userInit" :key="dict.id"
:label="dict.nickname" :value="dict.id" />
:label="dict.username + ' '+ dict.nickname" :value="dict.id" />
</el-select>
</el-form-item>
</el-col>
@ -107,7 +107,7 @@
<el-form-item label="工艺负责人" prop="craftOwner">
<el-select class="!w-265px" v-model="formData.craftOwner" filterable disabled>
<el-option v-for="dict in userInit" :key="dict.id"
:label="dict.nickname" :value="dict.id" />
:label="dict.username + ' '+ dict.nickname" :value="dict.id" />
</el-select>
</el-form-item>
</el-col>
@ -117,7 +117,7 @@
<el-form-item label="计划审核人" prop="auditor">
<el-select class="!w-265px" v-model="formData.auditor" filterable disabled>
<el-option v-for="dict in userInit" :key="dict.id"
:label="dict.nickname" :value="dict.id" />
:label="dict.username + ' '+ dict.nickname" :value="dict.id" />
</el-select>
</el-form-item>
</el-col>
@ -174,7 +174,7 @@
<el-form-item label="计划批准人" prop="approver">
<el-select class="!w-265px" v-model="formData.approver" filterable >
<el-option v-for="dict in userInit" :key="dict.id"
:label="dict.nickname" :value="dict.id" />
:label="dict.username + ' '+ dict.nickname" :value="dict.id" />
</el-select>
</el-form-item>
</el-col>
@ -335,7 +335,7 @@
<el-form-item :prop="`${$index}.blankOwner`" class="mb-0px!">
<el-select class="!w-265px" v-model="row.blankOwner" filterable disabled>
<el-option v-for="dict in userInit" :key="dict.id"
:label="dict.nickname" :value="dict.id" />
:label="dict.username + ' '+ dict.nickname" :value="dict.id" />
</el-select>
</el-form-item>
</template>
@ -356,7 +356,7 @@
<el-form-item :prop="`${$index}.twoDimOwner`" class="mb-0px!">
<el-select class="!w-265px" v-model="row.twoDimOwner" filterable disabled>
<el-option v-for="dict in userInit" :key="dict.id"
:label="dict.nickname" :value="dict.id" />
:label="dict.username + ' '+ dict.nickname" :value="dict.id" />
</el-select>
</el-form-item>
</template>
@ -377,7 +377,7 @@
<el-form-item :prop="`${$index}.threeDimOwner`" class="mb-0px!">
<el-select class="!w-265px" v-model="row.threeDimOwner" filterable disabled>
<el-option v-for="dict in userInit" :key="dict.id"
:label="dict.nickname" :value="dict.id" />
:label="dict.username + ' '+ dict.nickname" :value="dict.id" />
</el-select>
</el-form-item>
</template>

Loading…
Cancel
Save