|
|
|
@ -12,126 +12,65 @@
|
|
|
|
|
<el-row>
|
|
|
|
|
<el-col :span="24">
|
|
|
|
|
<el-row>
|
|
|
|
|
|
|
|
|
|
<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>
|
|
|
|
|
</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 >
|
|
|
|
|
<el-option v-for="dict in userInit" :key="dict.id"
|
|
|
|
|
:label="dict.username+' '+dict.nickname" :value="dict.id" />
|
|
|
|
|
</el-select> -->
|
|
|
|
|
<UserSelect v-model="formData.projectOwner" @update:newValue="handleSelectedUser1" class="!w-265px"/>
|
|
|
|
|
</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" @change="handleCraftInfo">
|
|
|
|
|
<el-radio 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 >
|
|
|
|
|
<el-option v-for="dict in userInit" :key="dict.id"
|
|
|
|
|
:label="dict.username+' '+dict.nickname" :value="dict.id" />
|
|
|
|
|
</el-select> -->
|
|
|
|
|
<UserSelect v-model="formData.editor" @update:newValue="handleSelectedUser3" class="!w-265px"/>
|
|
|
|
|
<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="editorDate">
|
|
|
|
|
<el-date-picker class="!w-265px" v-model="formData.editorDate" type="date" value-format="x"
|
|
|
|
|
placeholder="计划编制日期" />
|
|
|
|
|
<!-- 计划负责人:默认登录人,允许修改 -->
|
|
|
|
|
<el-form-item label="计划负责人" prop="editor">
|
|
|
|
|
<UserSelect v-model="formData.editor" @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 class="!w-713px" type="textarea" v-model="formData.description" show-word-limit
|
|
|
|
|
maxlength="200" />
|
|
|
|
|
<el-input class="!w-640px" 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>
|
|
|
|
|
</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 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="!formData.hasCraft " >
|
|
|
|
|
<el-option v-for="dict in userInit" :key="dict.id"
|
|
|
|
|
:label="dict.username+' '+dict.nickname" :value="dict.id" />
|
|
|
|
|
</el-select> -->
|
|
|
|
|
<UserSelect v-model="formData.craftOwner" @update:newValue="handleSelectedUser2" :disabled="!formData.hasCraft" class="!w-265px" />
|
|
|
|
|
<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="auditor">
|
|
|
|
|
<!-- <el-select class="!w-265px" v-model="formData.auditor" filterable >
|
|
|
|
|
<el-option v-for="dict in userInit" :key="dict.id"
|
|
|
|
|
:label="dict.username+' '+dict.nickname" :value="dict.id" />
|
|
|
|
|
</el-select> -->
|
|
|
|
|
<UserSelect v-model="formData.auditor" @update:newValue="handleSelectedUser4" class="!w-265px"/>
|
|
|
|
|
<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 class="!w-265px" v-model="formData.auditDate" type="date" value-format="x"
|
|
|
|
|
placeholder="计划审核日期" />
|
|
|
|
|
<el-form-item label="修改人" prop="editor">
|
|
|
|
|
<UserSelect v-model="formData.editor" @update:newValue="handleSelectedUser3" class="!w-265px" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
@ -140,69 +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-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-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="craftStartTime">
|
|
|
|
|
<el-date-picker class="!w-265px" v-model="formData.craftStartDate" type="date" value-format="x"
|
|
|
|
|
placeholder="工艺开始日期" :disabled="!formData.hasCraft "/>
|
|
|
|
|
</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-select> -->
|
|
|
|
|
<UserSelect v-model="formData.approver" @update:newValue="handleSelectedUser5" class="!w-265px"/>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
<el-row>
|
|
|
|
|
<el-col :span="24">
|
|
|
|
|
<el-form-item label="计划批准日期" prop="approveDate">
|
|
|
|
|
<el-date-picker class="!w-265px" v-model="formData.approveDate" type="date" value-format="x"
|
|
|
|
|
placeholder="计划批准日期" />
|
|
|
|
|
<el-form-item label="修改时间" prop="approveDate">
|
|
|
|
|
<el-date-picker class="!w-265px" v-model="formData.approveDate" 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">
|
|
|
|
@ -213,129 +120,63 @@
|
|
|
|
|
</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 class="!w-265px" v-model="formData.craftEndDate" type="date" value-format="x"
|
|
|
|
|
placeholder="工艺结束日期" :disabled="!formData.hasCraft " />
|
|
|
|
|
</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="subFormRef" :model="formData.projectPlanSubs" :rules="subFormRules"
|
|
|
|
|
v-loading="subFormLoading" label-width="0">
|
|
|
|
|
<el-form ref="subFormRef" :model="formData.projectPlanSubs" :rules="subFormRules" v-loading="subFormLoading" label-width="0">
|
|
|
|
|
<el-table :show-overflow-tooltip="true" :data="formData.projectPlanSubs" class="hl-table">
|
|
|
|
|
<el-table-column label="序号" align="center" 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><span class="hl-table_header">*</span>子项目简称</template>
|
|
|
|
|
<template #default="{ row, $index }">
|
|
|
|
|
<el-form-item :prop="`${$index}.projectSubShortName`" :rules="subFormRules.projectSubShortName" class="mb-0px!">
|
|
|
|
|
<el-input v-model="row.projectSubShortName" placeholder="子项目简称"
|
|
|
|
|
@change="(name) => handleSubCode(row, name)" />
|
|
|
|
|
</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 v-model="scope.row.mouldId" clearable placeholder="下拉选择" disabled
|
|
|
|
|
@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 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> -->
|
|
|
|
|
<EquipSelect v-model="scope.row.equipId" @update:newValue="handleSelectedequip(scope, $event)" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column prop="projectSubCode" label="产品编号" min-width="350" align="center" />
|
|
|
|
|
<el-table-column prop="name" label="产品名称" min-width="180" align="center" fixed />
|
|
|
|
|
<el-table-column prop="mouldId" label="规格/型号" align="center" min-width="180" />
|
|
|
|
|
<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="180" align="center" />
|
|
|
|
|
<el-table-column min-width="180" align="center">
|
|
|
|
|
<!-- <el-table-column prop="compositionName" label="主要材质" min-width="180" 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 class="!w-265px" v-model="row.blankDate" type="date" value-format="x"
|
|
|
|
|
placeholder="毛坯结束日期" />
|
|
|
|
|
<el-date-picker class="!w-265px" v-model="row.blankDate" type="date" value-format="x" placeholder="毛坯结束日期" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
@ -343,24 +184,11 @@
|
|
|
|
|
<template #header>毛坯负责人</template>
|
|
|
|
|
<template #default="{ row, $index }">
|
|
|
|
|
<el-form-item :prop="`${$index}.blankOwner`" class="mb-0px!">
|
|
|
|
|
<!-- <el-select class="!w-265px" v-model="row.blankOwner" filterable >
|
|
|
|
|
<el-option v-for="dict in userInit" :key="dict.id"
|
|
|
|
|
:label="dict.username+' '+dict.nickname" :value="dict.id" />
|
|
|
|
|
</el-select> -->
|
|
|
|
|
<UserSelect v-model="row.blankOwner" @update:newValue="handleSelectedUser6($index,$event)" class="!w-265px"/>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
|
|
|
|
|
<el-table-column min-width="180" align="center">
|
|
|
|
|
<template #header>2D结束日期</template>
|
|
|
|
|
<template #default="{ row, $index }">
|
|
|
|
|
<el-form-item :prop="`${$index}.twoDimDate`" class="mb-0px!">
|
|
|
|
|
<el-date-picker class="!w-265px" v-model="row.twoDimDate" type="date" value-format="x"
|
|
|
|
|
placeholder="2D结束日期" />
|
|
|
|
|
|
|
|
|
|
<UserSelect v-model="row.blankOwner" @update:newValue="handleSelectedUser6($index,$event)" class="!w-265px" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
</el-table-column> -->
|
|
|
|
|
<el-table-column min-width="150" align="center">
|
|
|
|
|
<template #header>2D负责人</template>
|
|
|
|
|
<template #default="{ row, $index }">
|
|
|
|
@ -369,17 +197,15 @@
|
|
|
|
|
<el-option v-for="dict in userInit" :key="dict.id"
|
|
|
|
|
:label="dict.username+' '+dict.nickname" :value="dict.id" />
|
|
|
|
|
</el-select> -->
|
|
|
|
|
<UserSelect v-model="row.twoDimOwner" @update:newValue="handleSelectedUser7($index,$event)" class="!w-265px"/>
|
|
|
|
|
<UserSelect v-model="row.twoDimOwner" @update:newValue="handleSelectedUser7($index,$event)" class="!w-265px" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
|
|
|
|
|
<el-table-column min-width="180" align="center">
|
|
|
|
|
<template #header>3D结束日期</template>
|
|
|
|
|
<template #header>2D结束日期</template>
|
|
|
|
|
<template #default="{ row, $index }">
|
|
|
|
|
<el-form-item :prop="`${$index}.threeDimDate`" class="mb-0px!">
|
|
|
|
|
<el-date-picker class="!w-265px" v-model="row.threeDimDate" type="date" value-format="x"
|
|
|
|
|
placeholder="3D结束日期" />
|
|
|
|
|
<el-form-item :prop="`${$index}.twoDimDate`" class="mb-0px!">
|
|
|
|
|
<el-date-picker class="!w-265px" v-model="row.twoDimDate" type="date" value-format="x" placeholder="2D结束日期" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
@ -391,11 +217,18 @@
|
|
|
|
|
<el-option v-for="dict in userInit" :key="dict.id"
|
|
|
|
|
:label="dict.username+' '+dict.nickname" :value="dict.id" />
|
|
|
|
|
</el-select> -->
|
|
|
|
|
<UserSelect v-model="row.threeDimOwner" @update:newValue="handleSelectedUser8($index,$event)" class="!w-265px"/>
|
|
|
|
|
<UserSelect 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">
|
|
|
|
|
<template #header>3D结束日期</template>
|
|
|
|
|
<template #default="{ row, $index }">
|
|
|
|
|
<el-form-item :prop="`${$index}.threeDimDate`" class="mb-0px!">
|
|
|
|
|
<el-date-picker 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>
|
|
|
|
@ -405,46 +238,33 @@
|
|
|
|
|
|
|
|
|
|
<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="序号" prop="id" type="index" width="80" />
|
|
|
|
|
|
|
|
|
|
<el-table-column min-width="120" prop="name" label="工艺流程" align="center" />
|
|
|
|
|
<el-table-column min-width="150" label="开始日期" align="center">
|
|
|
|
|
<el-table-column min-width="120" prop="name" label="生产车间" align="center" />
|
|
|
|
|
<el-table-column min-width="150" label="责任人" align="center">
|
|
|
|
|
<template #default="{ row, $index }">
|
|
|
|
|
<el-form-item :prop="`${$index}.startDate`" class="mb-0px!">
|
|
|
|
|
<el-date-picker style="width: 100%" v-model="row.startDate" type="date" value-format="x"
|
|
|
|
|
placeholder="开始日期" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column min-width="150" label="结束日期" align="center">
|
|
|
|
|
<template #default="{ row, $index }">
|
|
|
|
|
<el-form-item :prop="`${$index}.endDate`" class="mb-0px!">
|
|
|
|
|
<el-date-picker style="width: 100%" v-model="row.endDate" type="date" value-format="x"
|
|
|
|
|
placeholder="结束日期" />
|
|
|
|
|
<el-form-item :prop="`${$index}.owner`" class="mb-0px!">
|
|
|
|
|
|
|
|
|
|
<UserSelect v-model="row.owner" @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 min-width="150" label="预计开始日期" align="center">
|
|
|
|
|
<template #default="{ row, $index }">
|
|
|
|
|
<el-form-item :prop="`${$index}.owner`" class="mb-0px!">
|
|
|
|
|
<!-- <el-select style="width: 100%" v-model="row.owner" filterable >
|
|
|
|
|
<el-option v-for="dict in userInit" :key="dict.id"
|
|
|
|
|
:label="dict.username+' '+dict.nickname" :value="dict.id" />
|
|
|
|
|
</el-select> -->
|
|
|
|
|
<UserSelect v-model="row.owner" @update:newValue="handleSelectedUser9($index,$event)" class="!w-265px"/>
|
|
|
|
|
<el-form-item :prop="`${$index}.startDate`" class="mb-0px!">
|
|
|
|
|
<el-date-picker style="width: 100%" v-model="row.startDate" type="date" value-format="x" placeholder="开始日期" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column min-width="350" 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 style="width: 100%" v-model="row.description" placeholder="备注" />
|
|
|
|
|
<el-form-item :prop="`${$index}.endDate`" class="mb-0px!">
|
|
|
|
|
<el-date-picker style="width: 100%" v-model="row.endDate" type="date" value-format="x" placeholder="结束日期" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
@ -532,12 +352,10 @@ const formData = ref({
|
|
|
|
|
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' }],
|
|
|
|
|
|
|
|
|
|
projectSubShortName: [{ required: true, message: '子项目简称不能为空', trigger: 'blur' }]
|
|
|
|
|
})
|
|
|
|
|
const projectOrderDialog = ref()
|
|
|
|
|
const openProjectOrderDialog = () => {
|
|
|
|
@ -561,15 +379,16 @@ const handleSelectedProjectOrder = (arr: ProjectOrderVO[]) => {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const handleCraftInfo = (val) =>{
|
|
|
|
|
if(val == 0){
|
|
|
|
|
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)
|
|
|
|
|
row.projectSubCode =
|
|
|
|
|
name.length == 0 ? '' : formData.value.projectCode + '-' + customerInit.value.brief + '-' + name
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const handleMouldType = async (scope, mid) => {
|
|
|
|
@ -582,13 +401,17 @@ const submitForm = async () => {
|
|
|
|
|
await formRef.value.validate()
|
|
|
|
|
await subFormRef.value.validate()
|
|
|
|
|
|
|
|
|
|
let isRepeat= false
|
|
|
|
|
formData.value.projectPlanSubs.forEach(item => {
|
|
|
|
|
if(formData.value.projectPlanSubs.filter(record =>{ return record.projectSubShortName == item.projectSubShortName }).length>1)
|
|
|
|
|
isRepeat = true
|
|
|
|
|
let isRepeat = false
|
|
|
|
|
formData.value.projectPlanSubs.forEach((item) => {
|
|
|
|
|
if (
|
|
|
|
|
formData.value.projectPlanSubs.filter((record) => {
|
|
|
|
|
return record.projectSubShortName == item.projectSubShortName
|
|
|
|
|
}).length > 1
|
|
|
|
|
)
|
|
|
|
|
isRepeat = true
|
|
|
|
|
})
|
|
|
|
|
if(isRepeat){
|
|
|
|
|
await message.alert("子项目简称不能重复!")
|
|
|
|
|
if (isRepeat) {
|
|
|
|
|
await message.alert('子项目简称不能重复!')
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
// 提交请求
|
|
|
|
@ -598,7 +421,7 @@ const submitForm = async () => {
|
|
|
|
|
data.craftContent = JSON.stringify(data.craftInfos)
|
|
|
|
|
|
|
|
|
|
await PlanApi.updatePlan(data)
|
|
|
|
|
formData.value.projectPlanSubs.forEach(item => {
|
|
|
|
|
formData.value.projectPlanSubs.forEach((item) => {
|
|
|
|
|
var subData = item as unknown as PlanSubApid.PlanSubVo
|
|
|
|
|
// subData.projectId = item.projectOrderId
|
|
|
|
|
// subData.projectPlanId = formData.value.id
|
|
|
|
@ -624,8 +447,9 @@ const submitForm = async () => {
|
|
|
|
|
|
|
|
|
|
const handleInitPlanSub = async () => {
|
|
|
|
|
// 项目子项列表
|
|
|
|
|
formData.value.projectOrderSubs =
|
|
|
|
|
await ProjectOrderApi.getProjectOrderSubListByProjectOrderId(formData.value.projectId)
|
|
|
|
|
formData.value.projectOrderSubs = await ProjectOrderApi.getProjectOrderSubListByProjectOrderId(
|
|
|
|
|
formData.value.projectId
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// 生产计划子项列表
|
|
|
|
|
const queryParams = reactive({
|
|
|
|
@ -634,23 +458,22 @@ const handleInitPlanSub = async () => {
|
|
|
|
|
projectPlanId: query.id
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
formData.value.projectPlanSubs =
|
|
|
|
|
(await PlanSubApi.getPlanSubPage(queryParams)).list
|
|
|
|
|
formData.value.projectPlanSubs = (await PlanSubApi.getPlanSubPage(queryParams)).list
|
|
|
|
|
|
|
|
|
|
formData.value.projectPlanSubs.forEach(item => {
|
|
|
|
|
if (formData.value.projectOrderSubs.filter(sub => item.projectSubId == sub.id).length > 0) {
|
|
|
|
|
var subTemp = formData.value.projectOrderSubs.find(sub => item.projectSubId == sub.id)
|
|
|
|
|
formData.value.projectPlanSubs.forEach((item) => {
|
|
|
|
|
if (formData.value.projectOrderSubs.filter((sub) => item.projectSubId == sub.id).length > 0) {
|
|
|
|
|
var subTemp = formData.value.projectOrderSubs.find((sub) => item.projectSubId == sub.id)
|
|
|
|
|
item.planSubId = item.id
|
|
|
|
|
item.projectPlanId = subTemp.projectPlanId
|
|
|
|
|
item.projectId = subTemp.projectOrderId
|
|
|
|
|
item.projectSubId = subTemp.id
|
|
|
|
|
item.name = subTemp.name
|
|
|
|
|
item.compositionName = subTemp.compositionName
|
|
|
|
|
item.unit= subTemp.unit
|
|
|
|
|
item.unit = subTemp.unit
|
|
|
|
|
item.amount = subTemp.amount
|
|
|
|
|
|
|
|
|
|
if(item.equip!= undefined && item.equip.length>0){
|
|
|
|
|
item.mouldId = equipInit.value.filter(rg => rg.id == item.equipId)[0].mould_type_id
|
|
|
|
|
if (item.equip != undefined && item.equip.length > 0) {
|
|
|
|
|
item.mouldId = equipInit.value.filter((rg) => rg.id == item.equipId)[0].mould_type_id
|
|
|
|
|
}
|
|
|
|
|
// item.projectSubCode = subTemp.projectSubCode
|
|
|
|
|
// item.mouldId = subTemp.mouldId
|
|
|
|
@ -665,9 +488,8 @@ const handleInitPlanSub = async () => {
|
|
|
|
|
// if(item.equipId != undefined && item.equipId.length>0){
|
|
|
|
|
// item.equipList = equipInit.value.filter(rg => rg.id == item.equipId)
|
|
|
|
|
// }
|
|
|
|
|
item.equipList = equipInit.value.filter(rg => rg.id == item.equipId)
|
|
|
|
|
item.equipList = equipInit.value.filter((rg) => rg.id == item.equipId)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
const userInit = ref()
|
|
|
|
@ -675,7 +497,6 @@ const equipInit = ref()
|
|
|
|
|
const mouldTypeList = ref()
|
|
|
|
|
const customerInit = ref()
|
|
|
|
|
onMounted(async () => {
|
|
|
|
|
|
|
|
|
|
//用户列表数据
|
|
|
|
|
userInit.value = await UserApi.getSimpleUserList()
|
|
|
|
|
|
|
|
|
@ -716,8 +537,15 @@ onMounted(async () => {
|
|
|
|
|
if (formData.value.craftContent == null) {
|
|
|
|
|
formData.value.craftInfos = []
|
|
|
|
|
|
|
|
|
|
getIntDictOptions(DICT_TYPE.BIZ_CRAFT).forEach(dict => {
|
|
|
|
|
formData.value.craftInfos.push({ id: dict.value, name: dict.label, startDate: '', endDate: '', owner: '', description: '' })
|
|
|
|
|
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)
|
|
|
|
@ -742,38 +570,33 @@ const handleSelectedUser4 = (newValue: any) => {
|
|
|
|
|
}
|
|
|
|
|
// 计划批准人
|
|
|
|
|
const handleSelectedUser5 = (newValue: any) => {
|
|
|
|
|
|
|
|
|
|
formData.value.approver = newValue?.id
|
|
|
|
|
}
|
|
|
|
|
// 毛坯负责人
|
|
|
|
|
const handleSelectedUser6 = (currentIndex,newValue: any) => {
|
|
|
|
|
formData.value.projectPlanSubs[currentIndex].blankOwner = newValue?.id
|
|
|
|
|
const handleSelectedUser6 = (currentIndex, newValue: any) => {
|
|
|
|
|
formData.value.projectPlanSubs[currentIndex].blankOwner = newValue?.id
|
|
|
|
|
}
|
|
|
|
|
// 设备型号
|
|
|
|
|
const handleSelectedequip = (scope, newValue: any) => {
|
|
|
|
|
|
|
|
|
|
if(newValue !=null && newValue!= undefined && newValue.id>0){
|
|
|
|
|
if (newValue != null && newValue != undefined && newValue.id > 0) {
|
|
|
|
|
scope.row.equipId = newValue?.id
|
|
|
|
|
scope.row.mouldId = equipInit.value.filter(ep => ep.id == newValue?.id)[0].mould_type_id
|
|
|
|
|
}else{
|
|
|
|
|
scope.row.mouldId = equipInit.value.filter((ep) => ep.id == newValue?.id)[0].mould_type_id
|
|
|
|
|
} else {
|
|
|
|
|
scope.row.equipId = null
|
|
|
|
|
scope.row.mouldId = null
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 2D负责人
|
|
|
|
|
const handleSelectedUser7 = (currentIndex,newValue: any) => {
|
|
|
|
|
|
|
|
|
|
formData.value.projectPlanSubs[currentIndex].twoDimOwner = newValue?.id
|
|
|
|
|
const handleSelectedUser7 = (currentIndex, newValue: any) => {
|
|
|
|
|
formData.value.projectPlanSubs[currentIndex].twoDimOwner = newValue?.id
|
|
|
|
|
}
|
|
|
|
|
// 3D负责人
|
|
|
|
|
const handleSelectedUser8 = (currentIndex,newValue: any) => {
|
|
|
|
|
|
|
|
|
|
formData.value.projectPlanSubs[currentIndex].threeDimOwner = newValue?.id
|
|
|
|
|
const handleSelectedUser8 = (currentIndex, newValue: any) => {
|
|
|
|
|
formData.value.projectPlanSubs[currentIndex].threeDimOwner = newValue?.id
|
|
|
|
|
}
|
|
|
|
|
// 责任人
|
|
|
|
|
const handleSelectedUser9 = (currentIndex,newValue: any) => {
|
|
|
|
|
|
|
|
|
|
formData.value.craftInfos[currentIndex].owner = newValue?.id
|
|
|
|
|
const handleSelectedUser9 = (currentIndex, newValue: any) => {
|
|
|
|
|
formData.value.craftInfos[currentIndex].owner = newValue?.id
|
|
|
|
|
}
|
|
|
|
|
</script>
|
|
|
|
|
<style>
|
|
|
|
@ -793,7 +616,7 @@ a {
|
|
|
|
|
border: solid 1px orange;
|
|
|
|
|
outline: solid 1px orange;
|
|
|
|
|
}
|
|
|
|
|
.el-form-item__content{
|
|
|
|
|
.el-form-item__content {
|
|
|
|
|
margin-left: 0px !important;
|
|
|
|
|
}
|
|
|
|
|
</style>
|
|
|
|
|