生产计划编辑详情

dev
qiuhongwu 6 months ago
parent 5aa62f752f
commit 20f9e849b1

@ -15,118 +15,62 @@
<el-col :span="6">
<el-row>
<el-col :span="24">
<el-form-item label="计划号" prop="planNo">
<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 label="生产开始日期" prop="projectStartTime">
<el-date-picker class="!w-265px" v-model="formData.projectStartTime" type="date" value-format="x" placeholder="生产开始日期" disabled />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<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.username + ' '+ dict.nickname" :value="dict.id" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="是否要工艺" prop="hasCraft">
<el-radio-group v-model="formData.hasCraft">
<el-radio disabled v-for="dict in getIntDictOptions(DICT_TYPE.BIZ_COMMON_IS_OR_NOT)" :key="dict.value"
:label="dict.value">
{{ dict.label }}
</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<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.username + ' '+ dict.nickname" :value="dict.id" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="计划编制日期" prop="editorDate">
<el-date-picker disabled class="!w-265px" v-model="formData.editorDate" type="date" value-format="x"
placeholder="计划编制日期" />
<!-- 计划负责人默认登录人允许修改 -->
<el-form-item label="计划负责人" prop="projectOwner">
<UserSelect v-model="formData.projectOwner" disabled @update:newValue="handleSelectedUser3" class="!w-265px" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="80">
<el-col :span="40">
<el-form-item label="备注" prop="description">
<el-input disabled class="!w-713px" type="textarea" v-model="formData.description" show-word-limit
maxlength="200" />
<el-input class="!w-640px" disabled type="textarea" v-model="formData.description" show-word-limit maxlength="200" />
</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" placeholder="项目编号" v-model="formData.projectCode" disabled />
<el-form-item label="生产订单号" prop="projectCode">
<el-input class="!w-265px" placeholder="生产订单号" v-model="formData.projectCode" disabled />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="业务员" prop="businessMan">
<el-input class="!w-265px" placeholder="业务员" v-model="formData.businessMan" disabled />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="所属业务线" prop="businessLine">
<el-select class="!w-265px" v-model="formData.businessLine" disabled>
<el-option disabled v-for="dict in getStrDictOptions(DICT_TYPE.BIZ_BUSINESS_LINE)" :key="dict.value"
:label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<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.username + ' '+ dict.nickname" :value="dict.id" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<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.username + ' '+ dict.nickname" :value="dict.id" />
</el-select>
<el-form-item label="生产结束日期" prop="projectEndTime">
<el-date-picker class="!w-265px" v-model="formData.projectEndTime" type="date" value-format="x" placeholder="生产结束日期" disabled />
<span style="position: absolute; left: 0; top: 30px" v-if="formData.projectStartTime && formData.projectEndTime">{{
' 共计' +
betweenDay(
new Date(formData.projectStartTime),
new Date(formData.projectEndTime)
) +
'天'
}}</span>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="计划审核日期" prop="auditDate">
<el-date-picker disabled class="!w-265px" v-model="formData.auditDate" type="date" value-format="x"
placeholder="计划审核日期" />
<el-form-item label="修改人" prop="updater">
<UserSelect disabled v-model="formData.updater" class="!w-265px" />
</el-form-item>
</el-col>
</el-row>
@ -135,68 +79,37 @@
<el-col :span="6">
<el-row>
<el-col :span="24">
<el-form-item label="项目状态" prop="projectStatus">
<el-form-item label="订单状态" prop="projectStatus">
<el-select v-model="formData.projectStatus" placeholder="项目状态" clearable class="!w-265px" disabled>
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.BIZ_PROJECT_ORDER_STATUS)"
:key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="项目开始日期" prop="projectStartTime">
<el-date-picker class="!w-265px" v-model="formData.projectStartTime" type="date" value-format="x"
placeholder="项目开始日期" disabled />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="性质" prop="property">
<el-select class="!w-265px" v-model="formData.property" placeholder="下拉选择" disabled>
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.BIZ_PROJECT_PROPERTY)" :key="dict.value"
:label="dict.label" :value="dict.value" />
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.BIZ_PROJECT_ORDER_STATUS)" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="工艺开始日期" prop="craftStartTime">
<el-date-picker disabled class="!w-265px" v-model="formData.craftStartDate" type="date" value-format="x"
placeholder="工艺开始日期" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<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.username + ' '+ dict.nickname" :value="dict.id" />
<el-form-item label="所属业务线" prop="businessLine">
<el-select class="!w-265px" v-model="formData.businessLine" disabled>
<el-option v-for="dict in getStrDictOptions(DICT_TYPE.HELI_BUSINESS_LINE)" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="计划批准日期" prop="approveDate">
<el-date-picker disabled class="!w-265px" v-model="formData.approveDate" type="date" value-format="x"
placeholder="计划批准日期" />
<el-form-item label="修改时间" prop="updateTime">
<el-date-picker disabled class="!w-265px" v-model="formData.updateTime" type="date" value-format="x" placeholder="修改时间" />
</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.BIZ_PROJECT_PLAN_STATUS)" :key="dict.value"
:label="dict.label" :value="dict.value" />
</el-select>
<el-form-item label="项目变更次数" prop="changeNum">
<el-input class="!w-265px" placeholder="项目变更次数" v-model="formData.changeNum" disabled />
</el-form-item>
</el-col>
</el-row>
</el-col>
<el-col :span="6">
@ -207,184 +120,89 @@
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="项目结束日期" prop="projectEndTime">
<el-date-picker class="!w-265px" v-model="formData.projectEndTime" type="date" value-format="x"
placeholder="项目结束日期" disabled />
<span style="position: absolute; left: 0; top: 30px" v-if="formData.projectStartTime && formData.projectEndTime">{{
' 共计' +
betweenDay(
new Date(formData.projectStartTime),
new Date(formData.projectEndTime)
) +
'天'
}}</span>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="是否紧急" prop="isUrgency">
<el-select class="!w-265px" v-model="formData.isUrgency" disabled>
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.BIZ_COMMON_IS_OR_NOT)" :key="dict.value"
:label="dict.label" :value="dict.value" />
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.BIZ_COMMON_IS_OR_NOT)" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="工艺结束日期" prop="craftEndTime">
<el-date-picker disabled class="!w-265px" v-model="formData.craftEndDate" type="date" value-format="x"
placeholder="工艺结束日期" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="创建时间" prop="createTime">
<el-date-picker class="!w-265px" v-model="formData.createTime" type="date" value-format="x"
placeholder="创建时间" disabled />
<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.BIZ_PROJECT_PLAN_STATUS)" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="项目变更日期" prop="changeLastDate">
<el-date-picker class="!w-265px" v-model="formData.changeLastDate" type="date" value-format="x" placeholder="项目变更日期" disabled/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="项目变更次数" prop="changeNum">
<el-input class="!w-265px" placeholder="项目变更次数" v-model="formData.changeNum" disabled />
<el-date-picker class="!w-265px" v-model="formData.changeLastDate" type="date" value-format="x" placeholder="项目变更日期" disabled />
</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>
<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-form ref="projectOrderSubFormRef" :model="formData.projectOrderSubs" :rules="subFormRules"
v-loading="subFormLoading" label-width="0">
<el-table :data="formData.projectOrderSubs" :show-overflow-tooltip="true" class="hl-table">
<el-table-column label="序号" type="index" width="80" fixed />
<el-table-column prop="name" label="子项目名称" min-width="180" align="center" fixed/>
<el-table-column prop="projectSubShortName" min-width="150" align="center" >
<template #header>子项目简称</template>
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.projectSubShortName`" class="mb-0px!">
<el-input disabled v-model="row.projectSubShortName" placeholder="子项目简称" />
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="projectSubCode" label="子项目编号" min-width="350" align="center" />
<el-table-column prop="mouldId" align="center" min-width="180">
<template #header> 模具类型 </template>
<template #default="scope">
<el-form-item :prop="`${scope.$index}.mouldId`" class="mb-0px!">
<el-select disabled v-model="scope.row.mouldId" clearable placeholder="下拉选择" @change="(mid)=>handleMouldType(scope,mid)" style="width: 100%">
<el-option v-for="dict in mouldTypeList" :key="dict.id" :label="dict.name" :value="dict.id" />
</el-select>
</el-form-item>
</template>
</el-table-column>
<el-table-column prop="equipId" align="center" min-width="180">
<template #header> 设备型号 </template>
<template #default="scope">
<el-form-item :prop="`${scope.$index}.equipId`" class="mb-0px!">
<el-select disabled v-model="scope.row.equipId" clearable placeholder="下拉选择" style="width: 100%">
<el-option v-for="dict in scope.row.equipList" :key="dict.id" :label="dict.name"
:value="dict.id" />
</el-select>
</el-form-item>
</template>
</el-table-column>
<el-form ref="subFormRef" :model="formData.planSubs" :rules="subFormRules" v-loading="subFormLoading" label-width="0">
<el-table :show-overflow-tooltip="true" :data="formData.planSubs" class="hl-table">
<el-table-column label="序号" align="center" type="index" width="80" fixed />
<el-table-column prop="projectSubCode" label="产品编码" min-width="160" align="center" />
<el-table-column prop="projectSubName" label="产品名称" min-width="140" align="center" />
<el-table-column prop="mouldId" label="规格/型号" align="center" min-width="120" />
<el-table-column prop="amount" label="数量" min-width="100" align="center" />
<el-table-column prop="unit" label="单位" min-width="100" align="center">
<template #default="scope">
<dict-tag :type="DICT_TYPE.BIZ_MATERIAL_UNIT" :value="scope.row.unit" />
</template>
</el-table-column>
<el-table-column prop="compositionName" label="主要材质" min-width="120" align="center" />
<el-table-column min-width="180" align="center">
<template #header>毛坯结束日期</template>
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.blankDate`" class="mb-0px!">
<el-date-picker disabled class="!w-265px" v-model="row.blankDate" type="date" value-format="x"
placeholder="毛坯结束日期" />
</el-form-item>
</template>
</el-table-column>
<el-table-column min-width="150" align="center">
<template #header>毛坯负责人</template>
<el-table-column min-width="160" align="center">
<template #header>2D负责人</template>
<template #default="{ row, $index }">
<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.username + ' '+ dict.nickname" :value="dict.id" />
</el-select>
<el-form-item :prop="`${$index}.twoDimOwner`" class="mb-0px!">
<UserSelect v-model="row.twoDimOwner" disabled @update:newValue="handleSelectedUser7($index,$event)" class="!w-265px" />
</el-form-item>
</template>
</el-table-column>
<el-table-column min-width="180" align="center">
<el-table-column min-width="160" align="center">
<template #header>2D结束日期</template>
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.twoDimDate`" class="mb-0px!">
<el-date-picker disabled class="!w-265px" v-model="row.twoDimDate" type="date" value-format="x"
placeholder="2D结束日期" />
<el-date-picker disabled class="!w-265px" v-model="row.twoDimDate" type="date" value-format="x" placeholder="2D结束日期" />
</el-form-item>
</template>
</el-table-column>
<el-table-column min-width="150" align="center">
<template #header>2D负责人</template>
<template #header>3D负责人</template>
<template #default="{ row, $index }">
<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.username + ' '+ dict.nickname" :value="dict.id" />
</el-select>
<el-form-item :prop="`${$index}.threeDimOwner`" class="mb-0px!">
<UserSelect disabled v-model="row.threeDimOwner" @update:newValue="handleSelectedUser8($index,$event)" class="!w-265px" />
</el-form-item>
</template>
</el-table-column>
<el-table-column min-width="180" align="center">
<el-table-column min-width="160" align="center">
<template #header>3D结束日期</template>
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.threeDimDate`" class="mb-0px!">
<el-date-picker disabled class="!w-265px" v-model="row.threeDimDate" type="date" value-format="x"
placeholder="3D结束日期" />
</el-form-item>
</template>
</el-table-column>
<el-table-column min-width="150" align="center">
<template #header>3D负责人</template>
<template #default="{ row, $index }">
<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.username + ' '+ dict.nickname" :value="dict.id" />
</el-select>
<el-date-picker disabled class="!w-265px" v-model="row.threeDimDate" type="date" value-format="x" placeholder="3D结束日期" />
</el-form-item>
</template>
</el-table-column>
</el-table>
</el-form>
</el-card>
@ -394,43 +212,41 @@
<el-card class="hl-card-info">
<template #header>
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">工艺流程</span>
<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-table :data="formData.craftInfos" class="hl-table">
<el-table-column label="序号" align="center" type="index" width="80" />
<el-table-column prop="name" min-width="120" label="工艺流程" align="center" />
<el-table-column min-width="150" label="开始日期" align="center">
<el-button type="primary" size="large" @click="addcraftInfos"></el-button>
<el-table :data="formData.planWorkshops" class="hl-table">
<el-table-column label="序号" prop="id" type="index" width="80" />
<el-table-column min-width="120" prop="workshopId" label="生产车间" align="center">
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.startDate`" class="mb-0px!">
<el-date-picker disabled v-model="row.startDate" type="date" value-format="x" style="width: 100%;"
placeholder="开始日期" />
<el-form-item :prop="`${$index}.workshopId`" class="mb-0px!">
<WorkshopSelect disabled v-model="row.workshopId" style="width: 100%" @update:newValue="handleSelectedWorkshop($index,$event)" />
</el-form-item>
</template>
</el-table-column>
<el-table-column min-width="150" align="center">
<template #header> 结束日期 </template>
<el-table-column min-width="150" label="责任人" prop="leaderUserName" align="center" />
<!-- <el-table-column min-width="150" label="责任人" prop="leaderUserId" align="center" >
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.endDate`" class="mb-0px!">
<el-date-picker disabled style="width: 100%;" v-model="row.endDate" type="date" value-format="x"
placeholder="结束日期" />
<el-form-item :prop="`${$index}.leaderUserId`" class="mb-0px!">
<UserSelect v-model="row.leaderUserId" style="width: 100%" @update:newValue="handleSelectedUser9($index,$event)" class="!w-265px" />
</el-form-item>
</template>
</el-table-column>
<el-table-column min-width="150" label="责任人" align="center">
</el-table-column> -->
<el-table-column min-width="150" label="预计开始日期" align="center">
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.owner`" class="mb-0px!">
<el-input style="width: 100%;" disabled v-model="row.owner" placeholder="责任人" />
<el-form-item :prop="`${$index}.startTime`" class="mb-0px!">
<el-date-picker disabled style="width: 100%" v-model="row.startTime" type="date" value-format="x" placeholder="开始日期" />
</el-form-item>
</template>
</el-table-column>
<el-table-column min-width="300" label="备注" align="center">
<el-table-column min-width="150" label="预计完成日期" align="center">
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.description`" class="mb-0px!">
<el-input disabled style="width: 100%;" v-model="row.description" placeholder="备注" />
<el-form-item :prop="`${$index}.endTime`" class="mb-0px!">
<el-date-picker disabled style="width: 100%" v-model="row.endTime" type="date" value-format="x" placeholder="结束日期" />
</el-form-item>
</template>
</el-table-column>
@ -439,40 +255,18 @@
</el-col>
</el-row>
</el-card>
<el-card class="hl-card-info" v-if="false">
<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-table :data="formData.operateLogs" class="hl-table" :style="{ height: formData.operateLogs?.length > 10 ? '450px' : '' }">
<el-table-column prop="type" label="操作" align="center" width="200px">
<template #default="scope">
{{ getDictLabel(DICT_TYPE.SYSTEM_OPERATE_TYPE, scope.row.type) }}
</template>
</el-table-column>
<el-table-column prop="userNickname" label="操作人" align="center" />
<el-table-column label="操作时间" align="center" prop="startTime" width="220" :formatter="dateFormatter" />
</el-table>
</el-card>
</el-col>
</el-row>
</el-card>
</el-form>
<div class="text-center hl-footer">
<el-button @click="() => router.back()" size="large"> </el-button>
<el-button @click="submitForm" type="success" size="large"> </el-button>
</div>
</el-card>
<ProjectOrderDialog ref="projectOrderDialog" @success="handleSelectedProjectOrder" />
</template>
<script setup lang="ts">
import { inject } from 'vue'
import { getIntDictOptions, getStrDictOptions, getDictLabel, DICT_TYPE } from '@/utils/dict'
import { betweenDay, formatDate,dateFormatter } from '@/utils/formatTime'
import { betweenDay, formatDate, dateFormatter } from '@/utils/formatTime'
import { Search, Plus } from '@element-plus/icons-vue'
import ProjectOrderDialog from '@/views/biz/plan/projectOrderDialog.vue'
import * as PlanApi from '@/api/biz/plan'
import * as PlanSubApi from '@/api/biz/plansub'
import * as ProjectOrderApi from '@/api/biz/projectorder'
@ -481,7 +275,9 @@ import * as UserApi from '@/api/system/user'
import * as EquipApi from '@/api/biz/equip'
import * as MouldTypeApi from '@/api/biz/mouldtype'
import { getOperateLogPage } from '@/api/system/operatelog'
import UserSelect from '@/views/biz/hlvuestyle/userSelect.vue'
import EquipSelect from '@/views/biz/hlvuestyle/equipSelect.vue'
import WorkshopSelect from '@/views/biz/hlvuestyle/workshopSelect.vue'
const { t } = useI18n() //
const message = useMessage() //
const { query } = useRoute()
@ -490,11 +286,12 @@ const reload = inject('reload')
const formLoading = ref(false) // 12
const formRef = ref() //
const subFormRef = ref() // Ref
const formData = ref({
id: undefined,
projectId: undefined,
projectOwner: undefined,
hasCraft: undefined,
hasCraft: 1,
craftOwner: undefined,
craftStartTime: undefined,
craftEndTime: undefined,
@ -509,64 +306,57 @@ const formData = ref({
createTime: undefined,
operateLogs: [],
projectOrderSubs: [],
projectPlanSubs: [],
craftInfos: [],
craftContent:undefined
planWorkshops: [],
planSubs: [],
craftContent: undefined
})
const formRules = reactive({
projectCode: [{ required: true, message: '项目编号不能为空', trigger: 'blur' }],
projectCode: [{ required: true, message: '项目编号不能为空', trigger: 'blur' }]
})
const subFormRules = reactive({
projectSubShortName: [{ required: true, message: '子项目简称不能为空', trigger: 'blur' }]
})
const projectOrderDialog = ref()
const openProjectOrderDialog = () => {
projectOrderDialog.value?.open()
}
const handleSelectedProjectOrder = (arr: ProjectOrderVO[]) => {
if (arr) {
formData.value.projectCode = arr.code
formData.value.projectStatus = arr.orderStatus
formData.value.customerName = arr.customerName
formData.value.projectName = arr.projectName
formData.value.businessMan = arr.businessManName
formData.value.projectStartTime = arr.projectStartTime
formData.value.projectEndTime = arr.projectEndTime
formData.value.businessLine = arr.businessLine
formData.value.property = arr.property
formData.value.isUrgency = arr.isUrgency
formData.value.projectId = arr.id
handleInitPlanSub()
// const handleCraftInfo = (val) => {
// if (val == 0) {
// formData.value.craftOwner = undefined
// formData.value.craftStartDate = undefined
// formData.value.craftEndDate = undefined
// }
// }
// const handleSubCode = (row, name) => {
// row.projectSubCode =
// name.length == 0 ? '' : formData.value.projectCode + '-' + customerInit.value.brief + '-' + name
// }
//
const addcraftInfos = () => {
const row = {
projectPlanId: formData.value.id,
projectId: formData.value.projectId,
workshopId: '',
leaderUserName: '',
startTime: '',
endTime: ''
}
}
const handleMouldType = async (scope,mid) => {
//
scope.row.equipList = equipInit.value.filter( rg => rg.mould_type_id == mid)
formData.value.planWorkshops.push(row)
}
const submitForm = async () => {
//
await formRef.value.validate()
await subFormRef.value.validate()
//
formLoading.value = true
try {
const data = formData.value as unknown as PlanApi.PlanVO
data.craftContent = JSON.stringify(data.craftInfos)
console.log(data)
await PlanApi.updatePlan(data)
formData.value.projectOrderSubs.forEach(item=>{
var subData = item as unknown as PlanSubApid.PlanSubVo
subData.projectId = item.projectOrderId
subData.projectPlanId = formData.value.id
subData.projectSubId = item.id
if(item.planSubId == undefined){
subData.id = 0
PlanSubApi.createPlanSub(subData)
}else{
subData.id = item.planSubId
PlanSubApi.updatePlanSub(subData)
}
subData.id = subData.projectSubId
})
message.success(t('common.updateSuccess'))
//
emit('success')
@ -575,66 +365,27 @@ const submitForm = async () => {
}
}
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.planSubId = subTemp.id
item.projectPlanId = subTemp.projectPlanId
item.projectId = subTemp.projectId
item.projectSubId = subTemp.projectSubId
item.projectSubShortName = subTemp.projectSubShortName
item.projectSubCode = subTemp.projectSubCode
item.mouldId = subTemp.mouldId
item.equipId = subTemp.equipId
item.blankDate = subTemp.blankDate
item.blankOwner = subTemp.blankOwner
item.twoDimDate = subTemp.twoDimDate
item.twoDimOwner = subTemp.twoDimOwner
item.threeDimDate = subTemp.threeDimDate
item.threeDimOwner = subTemp.threeDimOwner
item.equipList = equipInit.value.filter( rg => rg.mould_type_id == subTemp.mouldId)
}
})
}
const userInit = ref()
const equipInit = ref()
const mouldTypeList = ref()
const customerInit = ref()
onMounted(async () => {
//
userInit.value = await UserApi.getSimpleUserList()
//
mouldTypeList.value = await MouldTypeApi.getNoStatusSimpList()
mouldTypeList.value = await MouldTypeApi.getSimpList()
//
equipInit.value = await EquipApi.getNoStatusSimpList()
equipInit.value = await EquipApi.getSimpList()
//
formData.value = await PlanApi.getPlan(query.id)
await handleInitPlanSub()
formData.value.hasCraft = 1
var projectInit = await ProjectOrderApi.getProjectOrder(formData.value.projectId)
var customerInit = await CustomerApi.getCustomer(projectInit.customerId)
customerInit.value = await CustomerApi.getCustomer(projectInit.customerId)
var businessManInit = await UserApi.getUser(projectInit.businessMan)
formData.value.projectCode = projectInit.code
formData.value.projectStatus = projectInit.orderStatus
formData.value.customerName = customerInit?.name
formData.value.customerName = customerInit?.value.name
formData.value.projectName = projectInit.projectName
formData.value.businessMan = businessManInit?.nickname
formData.value.projectStartTime = projectInit.projectStartTime
@ -643,25 +394,39 @@ onMounted(async () => {
formData.value.property = projectInit.property
formData.value.isUrgency = projectInit.isUrgency
//
let logParams = {
pageNo: 1,
pageSize: 99,
businessId: formData.value.projectId,
businessType: 'PROJECT_ORDER'
}
formData.value.operateLogs = (await getOperateLogPage(logParams)).list
//
var design = await PlanApi.getPlanSubListByProjectPlanId(formData.value.id)
formData.value.planSubs = design
//
var workshop = await PlanApi.getPlanWorkshopListByProjectPlanId(formData.value.id)
formData.value.planWorkshops = workshop
})
if(formData.value.craftContent == null) {
formData.value.craftInfos = []
//
const handleSelectedUser3 = (newValue: any) => {
formData.value.projectOwner = newValue?.id
}
getIntDictOptions(DICT_TYPE.BIZ_CRAFT).forEach(dict =>{
formData.value.craftInfos.push({id:dict.value,name:dict.label,startDate:'',endDate:'',owner:'',description:''})
})
}else{
formData.value.craftInfos = eval( formData.value.craftContent)
}
})
// 2D
const handleSelectedUser7 = (currentIndex, newValue: any) => {
formData.value.planSubs[currentIndex].twoDimOwner = newValue?.id
}
// 3D
const handleSelectedUser8 = (currentIndex, newValue: any) => {
formData.value.planSubs[currentIndex].threeDimOwner = newValue?.id
}
//
const handleSelectedUser9 = (currentIndex, newValue: any) => {
formData.value.planWorkshops[currentIndex].owner = newValue?.id
}
//
//
const handleSelectedWorkshop = (currentIndex, newValue: any) => {
console.log('接收车间对应的数据:', newValue, currentIndex)
formData.value.planWorkshops[currentIndex].workshopId = newValue?.id
formData.value.planWorkshops[currentIndex].leaderUserName = newValue?.leaderUserName
formData.value.planWorkshops[currentIndex].leaderUserId = newValue?.leaderUserId
}
</script>
<style>
a {
@ -680,7 +445,7 @@ a {
border: solid 1px orange;
outline: solid 1px orange;
}
.el-form-item__content{
.el-form-item__content {
margin-left: 0px !important;
}
</style>

@ -162,16 +162,16 @@
<el-form ref="subFormRef" :model="formData.planSubs" :rules="subFormRules" v-loading="subFormLoading" label-width="0">
<el-table :show-overflow-tooltip="true" :data="formData.planSubs" class="hl-table">
<el-table-column label="序号" align="center" type="index" width="80" fixed />
<el-table-column prop="projectSubCode" label="产品编号" min-width="350" align="center" />
<el-table-column prop="projectSubName" label="产品名称" min-width="180" align="center" fixed />
<el-table-column prop="mouldId" label="规格/型号" align="center" min-width="180" />
<el-table-column prop="projectSubCode" label="产品编码" min-width="160" align="center" />
<el-table-column prop="projectSubName" label="产品名称" min-width="140" align="center" />
<el-table-column prop="mouldId" label="规格/型号" align="center" min-width="120" />
<el-table-column prop="amount" label="数量" min-width="100" align="center" />
<el-table-column prop="unit" label="单位" min-width="100" align="center">
<template #default="scope">
<dict-tag :type="DICT_TYPE.BIZ_MATERIAL_UNIT" :value="scope.row.unit" />
</template>
</el-table-column>
<el-table-column min-width="150" align="center">
<el-table-column min-width="160" align="center">
<template #header>2D负责人</template>
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.twoDimOwner`" class="mb-0px!">
@ -179,7 +179,7 @@
</el-form-item>
</template>
</el-table-column>
<el-table-column min-width="180" align="center">
<el-table-column min-width="160" align="center">
<template #header>2D结束日期</template>
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.twoDimDate`" class="mb-0px!">
@ -195,7 +195,7 @@
</el-form-item>
</template>
</el-table-column>
<el-table-column min-width="180" align="center">
<el-table-column min-width="160" align="center">
<template #header>3D结束日期</template>
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.threeDimDate`" class="mb-0px!">
@ -221,10 +221,9 @@
<el-table :data="formData.planWorkshops" class="hl-table">
<el-table-column label="序号" prop="id" type="index" width="80" />
<el-table-column min-width="120" prop="workshopId" label="生产车间" align="center">
<template #default="{ row, $index }">
<el-form-item :prop="`${$index}.workshopId`" class="mb-0px!">
<WorkshopSelect :disabled="row.id" v-model="row.workshopId" style="width: 100%" @update:newValue="handleSelectedWorkshop($index,$event)" />
<WorkshopSelect v-model="row.workshopId" style="width: 100%" @update:newValue="handleSelectedWorkshop($index,$event)" />
</el-form-item>
</template>
@ -256,27 +255,6 @@
</el-col>
</el-row>
</el-card>
<el-card class="hl-card-info" v-if="false">
<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-table :data="formData.operateLogs" class="hl-table" :style="{ height: formData.operateLogs?.length > 10 ? '450px' : '' }">
<el-table-column prop="type" label="操作" align="center" width="200px">
<template #default="scope">
{{ getDictLabel(DICT_TYPE.SYSTEM_OPERATE_TYPE, scope.row.type) }}
</template>
</el-table-column>
<el-table-column prop="userNickname" label="操作人" align="center" />
<el-table-column label="操作时间" align="center" prop="startTime" width="220" :formatter="dateFormatter" />
</el-table>
</el-card>
</el-col>
</el-row>
</el-card>
</el-form>
<div class="text-center hl-footer">
<el-button @click="() => router.back()" size="large"> </el-button>

Loading…
Cancel
Save