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

dev
zengchenxi 6 months ago
commit 165dda4979

@ -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>

@ -6,46 +6,30 @@
<ContentWrap class="borderxx">
<!-- 搜索工作栏 -->
<el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" label-width="120px">
<el-form-item label="生产计划号" prop="planNo">
<el-form-item label="生产计划号" prop="planNo">
<el-input v-model="queryParams.planNo" placeholder="生产计划编号" clearable @keyup.enter="handleQuery" class="!w-250px" />
</el-form-item>
<el-form-item label="项目编号" prop="projectCode">
<el-form-item label="生产订单号" prop="projectCode">
<el-input v-model="queryParams.projectCode" placeholder="项目编号" clearable @keyup.enter="handleQuery" class="!w-250px" />
</el-form-item>
<el-form-item label="客户名称" prop="customerName">
<el-input v-model="queryParams.customerName" placeholder="客户名称" clearable @keyup.enter="handleQuery" class="!w-250px" />
</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="businessLine">
<el-select class="!w-250px" v-model="queryParams.businessLine" placeholder="下拉选择">
<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-form-item label="性质" prop="property">
<el-select class="!w-250px" v-model="queryParams.property" placeholder="下拉选择">
<el-option v-for="dict in getIntDictOptions(DICT_TYPE.BIZ_PROJECT_PROPERTY)" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="生产状态" prop="status">
<el-select v-model="queryParams.status" placeholder="生产状态" clearable class="!w-250px">
<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-form-item label="项目负责人" prop="projectOwner">
<el-input v-model="queryParams.projectOwner" placeholder="项目负责人" clearable @keyup.enter="handleQuery" class="!w-250px" />
</el-form-item>
<el-form-item style="margin-left:15px">
<el-button @click="handleQuery" type="primary">
<Icon icon="ep:search" class="mr-5px" /> 搜索
<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="openAdd()" v-if="false">
<!-- <el-button type="primary" plain @click="openAdd()" v-if="false">
<Icon icon="ep:plus" class="mr-5px" /> 新增
</el-button>
</el-button> -->
</el-form-item>
</el-form>
</ContentWrap>
@ -54,19 +38,19 @@
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" class="hl-table">
<el-table-column type="index" min-width="100" fixed label="序号" align="center" />
<el-table-column fixed label="计划单号" align="center" prop="planNo" min-width="150">
<el-table-column fixed label="生产计划单号" align="center" prop="planNo" min-width="150">
<template #default="scope">
<el-button text type="primary" @click="handleCommand('detail',scope.row.id)">
{{scope.row.planNo}}
</el-button>
</template>
</el-table-column>
<!-- <el-table-column fixed label="项目编号" align="center" prop="projectCode" min-width="220" /> -->
<el-table-column fixed label="生产订单号" align="center" prop="projectCode" min-width="220" />
<el-table-column fixed label="项目变更次数" align="center" prop="changeNum" min-width="150" />
<el-table-column label="客户名称" align="center" prop="customerName" min-width="150" />
<el-table-column label="项目名称" align="center" prop="projectName" min-width="150" />
<!-- <el-table-column label="项目名称" align="center" prop="projectName" min-width="150" /> -->
<!-- <el-table-column label="业务员" align="center" prop="businessManName" min-width="150" /> -->
<el-table-column label="起止时间" align="center" prop="projectStartTime" min-width="260">
<el-table-column label="起止日期" align="center" prop="projectStartTime" min-width="260">
<template #default="scope">
{{
formatDate(scope.row.projectStartTime, 'YYYY-MM-DD') +
@ -75,16 +59,16 @@
}}
</template>
</el-table-column>
<!-- <el-table-column label="所属业务线" align="center" prop="businessLine" min-width="150">
<el-table-column label="所属业务线" align="center" prop="businessLine" min-width="150">
<template #default="scope">
<dict-tag :type="DICT_TYPE.BIZ_BUSINESS_LINE" :value="scope.row.businessLine" />
</template>
</el-table-column> -->
<el-table-column label="性质" align="center" prop="property" min-width="120">
</el-table-column>
<!-- <el-table-column label="性质" align="center" prop="property" min-width="120">
<template #default="scope">
<dict-tag :type="DICT_TYPE.BIZ_PROJECT_PROPERTY" :value="scope.row.property" />
</template>
</el-table-column>
</el-table-column> -->
<el-table-column label="是否紧急" align="center" prop="isUrgency" min-width="150">
<template #default="scope">
<dict-tag :type="DICT_TYPE.BIZ_COMMON_IS_OR_NOT" :value="scope.row.isUrgency" />
@ -95,32 +79,19 @@
<dict-tag :type="DICT_TYPE.BIZ_COMMON_IS_OR_NOT" :value="scope.row.hasAlter" />
</template>
</el-table-column>
<el-table-column label="是否要工艺" align="center" prop="hasCraft" min-width="150">
<template #default="scope">
<dict-tag :type="DICT_TYPE.BIZ_COMMON_IS_OR_NOT" :value="scope.row.hasCraft" />
</template>
</el-table-column>
<el-table-column label="工艺起止时间" align="center" prop="craftStartDate" min-width="260">
<template #default="scope">
{{
formatDate(scope.row.craftStartDate, 'YYYY-MM-DD') +
'~' +
formatDate(scope.row.craftEndDate, 'YYYY-MM-DD')
}}
</template>
</el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime" :formatter="dateFormatter" min-width="220px" />
<el-table-column label="备注" align="center" prop="description" min-width="150" />
<el-table-column fixed="right" label="项目负责人" align="center" prop="projectOwner" min-width="150">
<el-table-column fixed="right" label="计划负责人" align="center" prop="projectOwner" min-width="150">
<template #default="scope">
{{ userInit.find((user) => user.id == scope.row.projectOwner)?.nickname }}
</template>
</el-table-column>
<el-table-column fixed="right" label="工艺负责人" align="center" prop="craftOwner" min-width="150">
<el-table-column fixed="right" label="修改人" align="center" prop="craftOwner" min-width="150">
<template #default="scope">
{{ userInit.find((user) => user.id == scope.row.craftOwner)?.nickname }}
</template>
</el-table-column>
<el-table-column label="修改时间" align="center" prop="createTime" :formatter="dateFormatter" min-width="220px" />
<el-table-column label="备注" align="center" prop="description" min-width="150" />
<el-table-column fixed="right" label="生产状态" align="center" prop="status" min-width="150">
<template #default="scope">
<dict-tag :type="DICT_TYPE.BIZ_PROJECT_PLAN_STATUS" :value="scope.row.status" />
@ -143,12 +114,12 @@
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item command="detail">查看详情</el-dropdown-item>
<el-dropdown-item command="printProjectPlan">
<!-- <el-dropdown-item command="printProjectPlan">
打印生产计划单
</el-dropdown-item>
<el-dropdown-item command="A3printProjectPlan">
打印子项目跟踪表
</el-dropdown-item>
</el-dropdown-item> -->
</el-dropdown-menu>
</template>
</el-dropdown>

@ -0,0 +1,152 @@
<template>
<el-card class="hl-card">
<template #header>
<span>生产进度统计</span>
</template>
<ContentWrap class="borderxx">
<!-- 搜索工作栏 -->
<el-form class="-mb-15px" :model="queryParams" ref="queryFormRef" :inline="true" label-width="130px">
<el-form-item label="生产订单号" prop="projectCode">
<el-input v-model="queryParams.projectCode" placeholder="生产订单号" clearable @keyup.enter="handleQuery" class="!w-250px" />
</el-form-item>
<el-form-item label="销售订单号" prop="projectCode">
<el-input v-model="queryParams.projectCode" placeholder="销售订单号" clearable @keyup.enter="handleQuery" class="!w-250px" />
</el-form-item>
<el-form-item label="生产计划单号" prop="planNo">
<el-input v-model="queryParams.planNo" placeholder="生产计划单号" clearable @keyup.enter="handleQuery" class="!w-250px" />
</el-form-item>
<el-form-item label="所属业务线" prop="planNo">
<el-select :disabled="detailDisabled" class="!w-250px" v-model="queryParam" placeholder="所属业务线">
<el-option v-for="dict in getStrDictOptions(DICT_TYPE.BIZ_INVOICE_TYPE)" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="产品编码/名称" prop="matName">
<el-input v-model="queryParams.matName" placeholder="产品编码/名称" clearable @keyup.enter="handleQuery" class="!w-250px" />
</el-form-item>
<el-form-item label="规格/型号" prop="matName">
<el-input v-model="queryParams.matName" placeholder="规格/型号" clearable @keyup.enter="handleQuery" class="!w-250px" />
</el-form-item>
<el-form-item style="margin-left:15px">
<el-button @click="handleQuery" type="primary">
<Icon icon="ep:search" class="mr-5px" /> 查询
</el-button>
<el-button @click="resetQuery">
<Icon icon="ep:refresh" 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" class="hl-table">
<el-table-column type="index" min-width="70" fixed label="序号" align="center" />
<el-table-column label="生产订单号" fixed align="center" prop="projectCode" min-width="180" />
<el-table-column label="销售订单号" fixed align="center" prop="projectName" min-width="150" />
<el-table-column label="生产计划单号" align="center" prop="planNo" min-width="150" />
<el-table-column label="生产状态" align="center" prop="status" min-width="120">
<template #default="scope">
<dict-tag :type="DICT_TYPE.HELI_PROJECT_PLAN_STATUS" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column label="产品编码" align="center" prop="projectSubCode" min-width="150" />
<el-table-column label="产品名称" align="center" prop="projectSubName" min-width="150" />
<el-table-column label="规格/型号" align="center" prop="matName" min-width="150" />
<el-table-column label="数量" align="center" prop="matAmount" min-width="150" />
<el-table-column label="单位" align="center" prop="matUnit" min-width="150">
<template #default="scope">
<dict-tag :type="DICT_TYPE.HELI_MATERIAL_UNIT" :value="scope.row.matUnit" />
</template>
</el-table-column>
<el-table-column label="生产起止日期" align="center" prop="requireEndDate" min-width="220">
<template #default="scope">
{{
formatDate(scope.row.requireEndDate, 'YYYY-MM-DD')
}}
</template>
</el-table-column>
<el-table-column label="所属车间" align="center" prop="procedureName" min-width="150" />
<el-table-column label="工序名称" align="center" prop="procedureName" min-width="120" />
<el-table-column label="报工人" align="center" prop="procedureName" min-width="120" />
<el-table-column label="预计工时" fixed="right" align="center" prop="workTime" min-width="150" />
<el-table-column label="派工数量" fixed="right" align="center" prop="workAmount" min-width="150" />
<el-table-column label="报工工时" fixed="right" align="center" prop="reportTime" min-width="220" />
<el-table-column label="报工数量" fixed="right" align="center" prop="reportAmount" min-width="150" />
<el-table-column label="完成标志" fixed="right" align="center" prop="isCompleted" min-width="110">
<template #default="scope">
<dict-tag :type="DICT_TYPE.HELI_COMMON_IS_OR_NOT" :value="scope.row.isCompleted" />
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<Pagination :total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize" @pagination="getList" />
</ContentWrap>
</el-card>
</template>
<script setup lang="ts">
import { DICT_TYPE,getStrDictOptions } from '@/utils/dict'
import { formatDate } from '@/utils/formatTime'
import * as PlanApi from '@/api/biz/plan'
defineOptions({ name: 'Plan' })
const message = useMessage() //
const { t } = useI18n() //
const loading = ref(true) //
const list = ref([]) //
const total = ref(0) //
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
planNo: undefined,
projectCode: undefined,
projectName: undefined,
projectSubCode: undefined,
projectSubName: undefined,
matName: undefined,
owner: undefined
})
const queryFormRef = ref() //
/** 查询列表 */
const getList = async () => {
loading.value = true
try {
const data = await PlanApi.getScheduleOfPlanPage(queryParams)
list.value = data.list
total.value = data.total
} finally {
loading.value = false
}
}
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.pageNo = 1
getList()
}
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value.resetFields()
handleQuery()
}
/** 初始化 **/
onMounted(async () => {
//
await getList()
})
</script>
<style scoped>
.el-dropdown-link {
cursor: pointer;
margin: 5px;
color: var(--el-color-primary);
display: flex;
align-items: center;
}
</style>
Loading…
Cancel
Save