2996 lines
114 KiB
Vue
2996 lines
114 KiB
Vue
<template>
|
||
<el-card class="hl-card" style="position: relative">
|
||
<template #header>
|
||
<span>编辑页</span>
|
||
</template>
|
||
<el-form
|
||
ref="formRef"
|
||
:model="formData"
|
||
:rules="formRules"
|
||
label-width="160px"
|
||
v-loading="formLoading"
|
||
>
|
||
<el-card class="hl-card-info">
|
||
<template #header>
|
||
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">基础信息</span>
|
||
</template>
|
||
|
||
<el-row>
|
||
<el-col :span="24">
|
||
<el-row>
|
||
<el-col :span="6">
|
||
<el-row>
|
||
<el-col :span="24">
|
||
<el-form-item label="计划编号" prop="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:new-value="handleSelectedUser1" class="!w-265px"/>-->
|
||
<el-select
|
||
class="!w-265px"
|
||
v-model="formData.projectOwner"
|
||
clearable
|
||
filterable
|
||
>
|
||
<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="hasCast">
|
||
<el-radio-group v-model="formData.hasCast" @change="handleCastInfo">
|
||
<el-radio
|
||
v-for="dict in getIntDictOptions(DICT_TYPE.HELI_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="hasCraft">
|
||
<el-radio-group v-model="formData.hasCraft" @change="handleCraftInfo">
|
||
<el-radio
|
||
v-for="dict in getIntDictOptions(DICT_TYPE.HELI_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:new-value="handleSelectedUser3"
|
||
class="!w-265px"
|
||
/>
|
||
</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>
|
||
</el-col>
|
||
</el-row>
|
||
<el-row>
|
||
<el-col :span="80">
|
||
<el-form-item label="备注" prop="description">
|
||
<el-input
|
||
class="!w-713px"
|
||
type="textarea"
|
||
v-model="formData.description"
|
||
show-word-limit
|
||
maxlength="200"
|
||
/>
|
||
</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.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="castOwner">
|
||
<!-- <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:new-value="handleSelectedUser2" class="!w-265px"/>-->
|
||
<el-select
|
||
class="!w-265px"
|
||
v-model="formData.castOwner"
|
||
clearable
|
||
:disabled="formData.hasCast == 0"
|
||
filterable
|
||
>
|
||
<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="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:new-value="handleSelectedUser2" class="!w-265px"/>-->
|
||
<el-select
|
||
class="!w-265px"
|
||
v-model="formData.craftOwner"
|
||
clearable
|
||
:disabled="formData.hasCraft == 0"
|
||
filterable
|
||
>
|
||
<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 >
|
||
<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:new-value="handleSelectedUser4"
|
||
class="!w-265px"
|
||
/>
|
||
</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>
|
||
</el-col>
|
||
</el-row>
|
||
</el-col>
|
||
|
||
<el-col :span="6">
|
||
<el-row>
|
||
<el-col :span="24">
|
||
<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.HELI_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.HELI_PROJECT_PROPERTY)"
|
||
: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="castStartDate">
|
||
<el-date-picker
|
||
class="!w-265px"
|
||
v-model="formData.castStartDate"
|
||
type="date"
|
||
value-format="x"
|
||
placeholder="铸件图开始日期"
|
||
:disabled="!formData.hasCast"
|
||
/>
|
||
</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:new-value="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>
|
||
</el-col>
|
||
</el-row>
|
||
<el-row>
|
||
<el-col :span="24">
|
||
<el-form-item label="生产状态" prop="status">
|
||
<el-select
|
||
v-model="formData.status"
|
||
placeholder="生产状态"
|
||
clearable
|
||
class="!w-265px"
|
||
disabled
|
||
>
|
||
<el-option
|
||
v-for="dict in getIntDictOptions(DICT_TYPE.HELI_PROJECT_PLAN_STATUS)"
|
||
:key="dict.value"
|
||
:label="dict.label"
|
||
:value="dict.value"
|
||
/>
|
||
</el-select>
|
||
</el-form-item>
|
||
</el-col>
|
||
</el-row>
|
||
</el-col>
|
||
|
||
<el-col :span="6">
|
||
<el-row>
|
||
<el-col :span="24">
|
||
<el-form-item label="客户名称" prop="customerName">
|
||
<el-input
|
||
class="!w-265px"
|
||
v-model="formData.customerName"
|
||
placeholder="客户名称"
|
||
disabled
|
||
/>
|
||
</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"
|
||
>{{
|
||
' 共计' +
|
||
betweenDay1(
|
||
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.HELI_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="castEndDate">
|
||
<el-date-picker
|
||
class="!w-265px"
|
||
v-model="formData.castEndDate"
|
||
type="date"
|
||
value-format="x"
|
||
placeholder="铸件图结束日期"
|
||
:disabled="!formData.hasCast"
|
||
/>
|
||
</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>
|
||
</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-form-item>
|
||
</el-col>
|
||
</el-row>
|
||
</el-col>
|
||
|
||
<el-col :span="6">
|
||
<el-row>
|
||
<el-col :span="24">
|
||
<el-form-item label="要求设计结束日期" prop="changeEndTime">
|
||
<el-date-picker
|
||
class="!w-265px"
|
||
v-model="formData.changeEndTime"
|
||
type="date"
|
||
value-format="x"
|
||
placeholder="要求设计结束日期"
|
||
/>
|
||
</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>
|
||
<el-button style="margin-left: 3%" type="warning" size="large" @click="printfClick"
|
||
>打印</el-button
|
||
>
|
||
<el-button style="margin-left: 3%" type="primary" size="large" @click="openUp"
|
||
>查看工作</el-button
|
||
>
|
||
</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-table
|
||
:show-overflow-tooltip="true"
|
||
@selection-change="handleSelectionChange"
|
||
:data="formData.projectPlanSubs"
|
||
class="hl-table"
|
||
>
|
||
<el-table-column type="selection" width="55" />
|
||
<el-table-column label="序号" align="center" type="index" width="70px" fixed />
|
||
<el-table-column
|
||
prop="name"
|
||
label="子项目名称"
|
||
min-width="140px"
|
||
align="center"
|
||
fixed
|
||
/>
|
||
<el-table-column prop="projectSubShortName" min-width="130px" 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="子项目简码"
|
||
disabled
|
||
@change="(name) => handleSubCode(row, name)"
|
||
/>
|
||
</el-form-item>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column prop="amount" label="数量" min-width="70px" align="center" />
|
||
<el-table-column prop="mouldId" align="center" min-width="130px">
|
||
<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="140px">
|
||
<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:new-value="handleSelectedequip(scope, $event)"
|
||
/>
|
||
</el-form-item>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column min-width="180px" align="center">
|
||
<template #header>毛坯开始日期</template>
|
||
<template #default="{ row, $index }">
|
||
<el-form-item :prop="`${$index}.startBlankDate`" class="mb-0px!">
|
||
<el-date-picker
|
||
:disabled="row.hasSaveInBlankDetail"
|
||
class="!w-265px"
|
||
v-model="row.startBlankDate"
|
||
type="date"
|
||
:disabled-date="disabledFutureDates"
|
||
value-format="x"
|
||
placeholder="毛坯开始日期"
|
||
@change="
|
||
handleDateChange(
|
||
$index,
|
||
row.startBlankDate,
|
||
row.blankDate,
|
||
'1',
|
||
row.blankOwner,
|
||
row.id,
|
||
'startBlankDate',
|
||
'blankDate',
|
||
'blankNum',
|
||
'start'
|
||
)
|
||
"
|
||
/>
|
||
</el-form-item>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column min-width="180px" align="center">
|
||
<template #header>毛坯结束日期</template>
|
||
<template #default="{ row, $index }">
|
||
<el-form-item :prop="`${$index}.blankDate`" class="mb-0px!">
|
||
<el-date-picker
|
||
:disabled="row.hasSaveInBlankDetail"
|
||
class="!w-265px"
|
||
v-model="row.blankDate"
|
||
type="date"
|
||
:disabled-date="disabledFutureDates"
|
||
value-format="x"
|
||
placeholder="毛坯结束日期"
|
||
@change="
|
||
handleDateChange(
|
||
$index,
|
||
row.startBlankDate,
|
||
row.blankDate,
|
||
'1',
|
||
row.blankOwner,
|
||
row.id,
|
||
'startBlankDate',
|
||
'blankDate',
|
||
'blankNum',
|
||
'end'
|
||
)
|
||
"
|
||
/>
|
||
</el-form-item>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column
|
||
prop="blankNum"
|
||
label="毛坯工时"
|
||
min-width="110px"
|
||
align="center"
|
||
/>
|
||
<el-table-column min-width="150px" align="center">
|
||
<template #header>毛坯负责人</template>
|
||
<template #default="{ row, $index }">
|
||
<el-form-item :prop="`${$index}.blankOwner`" class="mb-0px!">
|
||
<el-select
|
||
:disabled="row.hasSaveInBlankDetail"
|
||
class="!w-265px"
|
||
v-model="row.blankOwner"
|
||
clearable
|
||
@change="handleSelectedUser6($index)"
|
||
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:new-value="handleSelectedUser6($index,$event)" @change="handleDateChange($index, row.startBlankDate,row.blankDate,'1',row.blankOwner,row.id)" class="!w-265px"/>-->
|
||
</el-form-item>
|
||
</template>
|
||
</el-table-column>
|
||
|
||
<el-table-column min-width="180px" align="center">
|
||
<template #header>3D开始日期</template>
|
||
<template #default="{ row, $index }">
|
||
<el-form-item :prop="`${$index}.startThreeDimDate`" class="mb-0px!">
|
||
<el-date-picker
|
||
:disabled="row.hasSaveIn3DDetail"
|
||
class="!w-265px"
|
||
v-model="row.startThreeDimDate"
|
||
type="date"
|
||
:disabled-date="disabledFutureDates"
|
||
value-format="x"
|
||
placeholder="3D开始日期"
|
||
@change="
|
||
handleDateChange(
|
||
$index,
|
||
row.startThreeDimDate,
|
||
row.threeDimDate,
|
||
'3',
|
||
row.threeDimOwner,
|
||
row.id,
|
||
'startThreeDimDate',
|
||
'threeDimDate',
|
||
'threeDimNum',
|
||
'start'
|
||
)
|
||
"
|
||
/>
|
||
</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
|
||
:disabled="row.hasSaveIn3DDetail"
|
||
class="!w-265px"
|
||
v-model="row.threeDimDate"
|
||
type="date"
|
||
value-format="x"
|
||
:disabled-date="disabledFutureDates"
|
||
placeholder="3D结束日期"
|
||
@change="
|
||
handleDateChange(
|
||
$index,
|
||
row.startThreeDimDate,
|
||
row.threeDimDate,
|
||
'3',
|
||
row.threeDimOwner,
|
||
row.id,
|
||
'startThreeDimDate',
|
||
'threeDimDate',
|
||
'threeDimNum',
|
||
'end'
|
||
)
|
||
"
|
||
/>
|
||
</el-form-item>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column
|
||
prop="threeDimNum"
|
||
label="3D工时"
|
||
min-width="90px"
|
||
align="center"
|
||
/>
|
||
<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
|
||
:disabled="row.hasSaveIn3DDetail"
|
||
class="!w-265px"
|
||
v-model="row.threeDimOwner"
|
||
clearable
|
||
@change="handleSelectedUser8($index)"
|
||
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.threeDimOwner" @update:new-value="handleSelectedUser8($index,$event)" @change="handleDateChange($index, row.startThreeDimDate,row.threeDimDate,'3',row.threeDimOwner,row.id)" class="!w-265px"/>-->
|
||
</el-form-item>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column min-width="180px" align="center">
|
||
<template #header>2D开始日期</template>
|
||
<template #default="{ row, $index }">
|
||
<el-form-item :prop="`${$index}.startTwoDimDate`" class="mb-0px!">
|
||
<el-date-picker
|
||
:disabled="row.hasSaveIn2DDetail"
|
||
class="!w-265px"
|
||
v-model="row.startTwoDimDate"
|
||
type="date"
|
||
value-format="x"
|
||
:disabled-date="disabledFutureDates"
|
||
placeholder="2D开始日期"
|
||
@change="
|
||
handleDateChange(
|
||
$index,
|
||
row.startTwoDimDate,
|
||
row.twoDimDate,
|
||
'2',
|
||
row.twoDimOwner,
|
||
row.id,
|
||
'startTwoDimDate',
|
||
'twoDimDate',
|
||
'twoDimNum',
|
||
'start'
|
||
)
|
||
"
|
||
/>
|
||
</el-form-item>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column min-width="180px" align="center">
|
||
<template #header>2D结束日期</template>
|
||
<template #default="{ row, $index }">
|
||
<el-form-item :prop="`${$index}.twoDimDate`" class="mb-0px!">
|
||
<el-date-picker
|
||
:disabled="row.hasSaveIn2DDetail"
|
||
class="!w-265px"
|
||
v-model="row.twoDimDate"
|
||
type="date"
|
||
:disabled-date="disabledFutureDates"
|
||
value-format="x"
|
||
placeholder="2D结束日期"
|
||
@change="
|
||
handleDateChange(
|
||
$index,
|
||
row.startTwoDimDate,
|
||
row.twoDimDate,
|
||
'2',
|
||
row.twoDimOwner,
|
||
row.id,
|
||
'startTwoDimDate',
|
||
'twoDimDate',
|
||
'twoDimNum',
|
||
'end'
|
||
)
|
||
"
|
||
/>
|
||
</el-form-item>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column
|
||
prop="twoDimNum"
|
||
label="2D工时"
|
||
min-width="90px"
|
||
align="center"
|
||
/>
|
||
<el-table-column min-width="150" align="center">
|
||
<template #header>2D负责人</template>
|
||
<template #default="{ row, $index }">
|
||
<el-form-item :prop="`${$index}.twoDimOwner`" class="mb-0px!">
|
||
<el-select
|
||
:disabled="row.hasSaveIn2DDetail"
|
||
class="!w-265px"
|
||
v-model="row.twoDimOwner"
|
||
clearable
|
||
@change="handleSelectedUser7($index)"
|
||
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.twoDimOwner" @update:new-value="handleSelectedUser7($index,$event)" @change="handleDateChange($index, row.startTwoDimDate,row.twoDimDate,'2',row.twoDimOwner,row.id)" class="!w-265px"/>-->
|
||
</el-form-item>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column
|
||
prop="compositionName"
|
||
label="主要材质"
|
||
min-width="100px"
|
||
align="center"
|
||
/>
|
||
<el-table-column
|
||
prop="projectSubCode"
|
||
label="子项目编号"
|
||
min-width="180px"
|
||
align="center"
|
||
/>
|
||
<el-table-column prop="unit" label="单位" min-width="90px" align="center">
|
||
<template #default="scope">
|
||
<dict-tag :type="DICT_TYPE.HELI_MATERIAL_UNIT" :value="scope.row.unit" />
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column prop="id" label="id" min-width="80px" align="center" />
|
||
</el-table>
|
||
</el-form>
|
||
</el-card>
|
||
</el-col>
|
||
</el-row>
|
||
</el-card>
|
||
|
||
<el-card class="hl-card-info">
|
||
<template #header>
|
||
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">工艺流程</span>
|
||
</template>
|
||
<el-row>
|
||
<el-col>
|
||
<el-card class="hl-incard">
|
||
<el-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">
|
||
<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>
|
||
</template>
|
||
</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-select style="width: 100%" v-model="row.owner" clearable filterable @update:new-value="handleSelectedUser9($index,$event)" v-if="row.name!='检验'&&row.name!='预验收'&&row.name!='装配'">-->
|
||
<!-- <el-option v-for="dict in mergedArray" :key="dict.id"-->
|
||
<!-- :label="dict.username+' '+dict.nickname" :value="dict.id" />-->
|
||
<!-- </el-select>-->
|
||
<!-- <el-select style="width: 100%" v-model="row.owner" clearable filterable @update:new-value="handleSelectedUser9($index,$event)" v-if="row.name=='检验'||row.name=='预验收'">-->
|
||
<!-- <el-option v-for="dict in userInit2" :key="dict.id"-->
|
||
<!-- :label="dict.username+' '+dict.nickname" :value="dict.id" />-->
|
||
<!-- </el-select>-->
|
||
<!-- <el-select style="width: 100%" v-model="row.owner" clearable filterable @update:new-value="handleSelectedUser9($index,$event)" v-if="row.name=='装配'">-->
|
||
<!-- <el-option v-for="dict in mergedArray1" :key="dict.id"-->
|
||
<!-- :label="dict.username+' '+dict.nickname" :value="dict.id" />-->
|
||
<!-- </el-select>-->
|
||
<el-select
|
||
style="width: 100%"
|
||
v-model="row.owner"
|
||
clearable
|
||
filterable
|
||
@update:new-value="handleSelectedUser9($index, $event)"
|
||
v-if="row.name == '母模/毛坯'"
|
||
>
|
||
<el-option
|
||
v-for="dict in mergedArray"
|
||
:key="dict.id"
|
||
:label="dict.username + ' ' + dict.nickname"
|
||
:value="dict.id"
|
||
/>
|
||
</el-select>
|
||
<el-select
|
||
style="width: 100%"
|
||
v-model="row.owner"
|
||
clearable
|
||
filterable
|
||
@update:new-value="handleSelectedUser9($index, $event)"
|
||
v-if="row.name == '粗,精加工'"
|
||
>
|
||
<el-option
|
||
v-for="dict in mergedArray1"
|
||
:key="dict.id"
|
||
:label="dict.username + ' ' + dict.nickname"
|
||
:value="dict.id"
|
||
/>
|
||
</el-select>
|
||
<el-select
|
||
style="width: 100%"
|
||
v-model="row.owner"
|
||
clearable
|
||
filterable
|
||
@update:new-value="handleSelectedUser9($index, $event)"
|
||
v-if="row.name == '热处理'"
|
||
>
|
||
<el-option
|
||
v-for="dict in mergedArray2"
|
||
:key="dict.id"
|
||
:label="dict.username + ' ' + dict.nickname"
|
||
:value="dict.id"
|
||
/>
|
||
</el-select>
|
||
<el-select
|
||
style="width: 100%"
|
||
v-model="row.owner"
|
||
clearable
|
||
filterable
|
||
@update:new-value="handleSelectedUser9($index, $event)"
|
||
v-if="row.name == '电火花'"
|
||
>
|
||
<el-option
|
||
v-for="dict in mergedArray3"
|
||
:key="dict.id"
|
||
:label="dict.username + ' ' + dict.nickname"
|
||
:value="dict.id"
|
||
/>
|
||
</el-select>
|
||
<el-select
|
||
style="width: 100%"
|
||
v-model="row.owner"
|
||
clearable
|
||
filterable
|
||
@update:new-value="handleSelectedUser9($index, $event)"
|
||
v-if="row.name == '打孔/抛光'"
|
||
>
|
||
<el-option
|
||
v-for="dict in mergedArray4"
|
||
:key="dict.id"
|
||
:label="dict.username + ' ' + dict.nickname"
|
||
:value="dict.id"
|
||
/>
|
||
</el-select>
|
||
<el-select
|
||
style="width: 100%"
|
||
v-model="row.owner"
|
||
clearable
|
||
filterable
|
||
@update:new-value="handleSelectedUser9($index, $event)"
|
||
v-if="row.name == '装配'"
|
||
>
|
||
<el-option
|
||
v-for="dict in mergedArray5"
|
||
:key="dict.id"
|
||
:label="dict.username + ' ' + dict.nickname"
|
||
:value="dict.id"
|
||
/>
|
||
</el-select>
|
||
<el-select
|
||
style="width: 100%"
|
||
v-model="row.owner"
|
||
clearable
|
||
filterable
|
||
@update:new-value="handleSelectedUser9($index, $event)"
|
||
v-if="row.name == '预验收'"
|
||
>
|
||
<el-option
|
||
v-for="dict in mergedArray6"
|
||
:key="dict.id"
|
||
:label="dict.username + ' ' + dict.nickname"
|
||
:value="dict.id"
|
||
/>
|
||
</el-select>
|
||
<el-select
|
||
style="width: 100%"
|
||
v-model="row.owner"
|
||
clearable
|
||
filterable
|
||
@update:new-value="handleSelectedUser9($index, $event)"
|
||
v-if="row.name == '检验'"
|
||
>
|
||
<el-option
|
||
v-for="dict in mergedArray7"
|
||
:key="dict.id"
|
||
:label="dict.username + ' ' + dict.nickname"
|
||
:value="dict.id"
|
||
/>
|
||
</el-select>
|
||
|
||
<!-- <UserSelect v-model="row.owner" @update:new-value="handleSelectedUser9($index,$event)" class="!w-265px"/>-->
|
||
</el-form-item>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column min-width="350" 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>
|
||
</template>
|
||
</el-table-column>
|
||
</el-table>
|
||
</el-card>
|
||
</el-col>
|
||
</el-row>
|
||
</el-card>
|
||
|
||
<el-card class="hl-card-info">
|
||
<template #header>
|
||
<div class="hl-card-info-icona"></div><span class="hl-card-info-text">操作日志</span>
|
||
<el-button @click="() => router.back()" size="large" style="margin-left: 5rem"
|
||
>取 消</el-button
|
||
>
|
||
<el-button @click="submitForm" type="success" size="large">保 存</el-button>
|
||
</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>
|
||
|
||
</el-card>
|
||
<ProjectOrderDialog ref="projectOrderDialog" @success="handleSelectedProjectOrder" />
|
||
<insert ref="insert" />
|
||
<ProjectSubDialog
|
||
:title="dialogTitle"
|
||
width="80%"
|
||
v-model="dialogVisible"
|
||
:parent-method="parentMethod"
|
||
:parent-methods="clouse"
|
||
:projectOrderSubs="dataList"
|
||
:ownerId="ownerId"
|
||
:dateOne="dateOne"
|
||
:dateTwo="dateTwo"
|
||
:id="id"
|
||
:diffDays="diffDays"
|
||
:typeNames="typeNames"
|
||
@update="handleUpdate"
|
||
:showCloseProp="false"
|
||
center
|
||
/><!-- :ownerId="ownerId" :dateOne="dateOne" :dateTwo="dateTwo" :id="id" :diffDays="diffDays" :typeNames="typeNames" -->
|
||
<printDialog ref="printref" :minAmount="minAmount" :formData="formData" />
|
||
</template>
|
||
<script setup lang="ts">
|
||
import { inject, ref } from 'vue'
|
||
import { getIntDictOptions, getStrDictOptions, getDictLabel, DICT_TYPE } from '@/utils/dict'
|
||
import { betweenDay, formatDate, dateFormatter, betweenDay1 } from '@/utils/formatTime'
|
||
import printDialog from './printDialog.vue'
|
||
import { Search, Plus } from '@element-plus/icons-vue'
|
||
import ProjectOrderDialog from '@/views/heli/plan/projectOrderDialog.vue'
|
||
import ProjectSubDialog from '@/views/heli/plan/projectSubDialog.vue'
|
||
import * as PlanApi from '@/api/heli/plan'
|
||
import * as PlanSubApi from '@/api/heli/plansub'
|
||
import * as ProjectOrderApi from '@/api/heli/projectorder'
|
||
import * as CustomerApi from '@/api/heli/customer'
|
||
import * as UserApi from '@/api/system/user'
|
||
import * as EquipApi from '@/api/heli/equip'
|
||
import * as MouldTypeApi from '@/api/heli/mouldtype'
|
||
import { getOperateLogPage } from '@/api/system/operatelog'
|
||
import UserSelect from '@/views/heli/hlvuestyle/userSelect.vue'
|
||
import EquipSelect from '@/views/heli/hlvuestyle/equipSelect.vue'
|
||
import * as ProjectLeaderApi from '@/api/heli/projectleader'
|
||
import * as shopCalendarApi from '@/api/heli/shopCalendar'
|
||
import * as TaskDispatchApi from '@/api/heli/taskdispatch'
|
||
import * as planSubDetailApi from '@/api/heli/plansubdetail'
|
||
import { verification } from '@/api/heli/plan'
|
||
import Insert from "@/views/heli/plan/insert.vue";
|
||
const printref = ref()
|
||
const { t } = useI18n() // 国际化
|
||
const message = useMessage() // 消息弹窗
|
||
const { query } = useRoute()
|
||
const router = useRouter()
|
||
const reload = inject('reload')
|
||
|
||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||
const dialogVisible = ref(false) // 弹窗的是否展示
|
||
const dialogTitle = ref('设计时间冲突信息窗') // 弹窗的标题
|
||
const fuzerenId = ref()
|
||
const startTimeOne = ref()
|
||
const endTimeTwo = ref()
|
||
const dateThree = ref()
|
||
const formRef = ref() // 表单
|
||
const subFormRef = ref() //子表单 Ref
|
||
|
||
const prod = ref({
|
||
projectPlanSubs: []
|
||
})
|
||
|
||
const currentTime = ref('')
|
||
const prods = ref({
|
||
projectPlanSubs: []
|
||
})
|
||
|
||
const formData = ref({
|
||
id: undefined,
|
||
projectId: undefined,
|
||
projectPlanId: undefined,
|
||
projectOwner: undefined,
|
||
hasCraft: 1,
|
||
craftOwner: undefined,
|
||
craftStartTime: undefined,
|
||
craftEndTime: undefined,
|
||
editor: undefined,
|
||
editorDate: undefined,
|
||
auditor: undefined,
|
||
auditDate: undefined,
|
||
approver: undefined,
|
||
approveDate: undefined,
|
||
description: undefined,
|
||
status: undefined,
|
||
createTime: undefined,
|
||
operateLogs: [],
|
||
projectOrderSubs: [],
|
||
projectPlanSubs: [],
|
||
craftInfos: [],
|
||
craftContent: undefined,
|
||
changeEndTime: undefined,
|
||
castOwner: undefined,
|
||
hasCast: 1,
|
||
castStartDate: undefined,
|
||
castEndDate: undefined
|
||
})
|
||
const ownerId = ref('')
|
||
const dateOne = ref('')
|
||
const dateTwo = ref('')
|
||
const id = ref('')
|
||
const diffDays = ref('')
|
||
const typeNames = ref('')
|
||
const dataList = ref({
|
||
projectOrderSubs: []
|
||
})
|
||
|
||
const dataListShuju = ref([])
|
||
const dataListShujus = ref([])
|
||
const formRules = reactive({
|
||
projectCode: [{ required: true, message: '项目编号不能为空', trigger: 'blur' }],
|
||
projectOwner: [{ required: true, message: '项目负责人不能为空', trigger: 'blur' }]
|
||
})
|
||
const subFormRules = reactive({
|
||
projectSubShortName: [{ required: true, message: '子项目简称不能为空', trigger: 'blur' }]
|
||
})
|
||
const projectOrderDialog = ref()
|
||
const insert= ref()
|
||
const openProjectOrderDialog = () => {
|
||
projectOrderDialog.value?.open()
|
||
}
|
||
const clickItem = ref([])
|
||
const handleSelectionChange = (val) => {
|
||
clickItem.value = val
|
||
}
|
||
const disabledFutureDates = (time) => {
|
||
const today = new Date()
|
||
today.setHours(0, 0, 0, 0)
|
||
return time.getTime() < today.getTime()
|
||
}
|
||
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 parentMethod = async () => {
|
||
// 检查是否超过要求设计日期
|
||
|
||
let overdueTime = null // 初始化变量
|
||
let projectName = null // 初始化变量
|
||
const isOverdue = dataList.value.projectOrderSubs.some((sub) => {
|
||
if (sub.changeEndTime) {
|
||
const isOverdueSub =
|
||
sub.blankDate > sub.changeEndTime ||
|
||
sub.twoDimDate > sub.changeEndTime ||
|
||
sub.threeDimDate > sub.changeEndTime
|
||
|
||
// 如果当前 sub 是超期的,将 sub.changeEndTime 赋值给 overdueTime
|
||
if (isOverdueSub) {
|
||
overdueTime = sub.changeEndTime
|
||
projectName = sub.projectSubName
|
||
}
|
||
|
||
return isOverdueSub
|
||
}
|
||
return false
|
||
})
|
||
|
||
/* const isOverdue = dataList.value.projectOrderSubs.some(sub => {
|
||
if (sub.changeEndTime) {
|
||
return sub.blankDate > sub.changeEndTime ||
|
||
sub.twoDimDate > sub.changeEndTime ||
|
||
sub.threeDimDate > sub.changeEndTime;
|
||
}
|
||
return false;
|
||
}); */
|
||
if (isOverdue) {
|
||
message.error(
|
||
projectName +
|
||
',超过要求设计结束日期-' +
|
||
formatDate(overdueTime, 'YYYY-MM-DD') +
|
||
',不允许插活'
|
||
)
|
||
return // 如果超过日期,直接返回,不执行后续代码
|
||
}
|
||
dialogVisible.value = false
|
||
// 更新 formData 中的数据
|
||
dataList.value.projectOrderSubs.forEach((sub) => {
|
||
const matchingPlanSub = formData.value.projectPlanSubs.find((planSub) => planSub.id === sub.id)
|
||
if (matchingPlanSub) {
|
||
matchingPlanSub.startBlankDate = sub.startBlankDate
|
||
matchingPlanSub.blankDate = sub.blankDate
|
||
matchingPlanSub.startTwoDimDate = sub.startTwoDimDate
|
||
matchingPlanSub.twoDimDate = sub.twoDimDate
|
||
matchingPlanSub.startThreeDimDate = sub.startThreeDimDate
|
||
matchingPlanSub.threeDimDate = sub.threeDimDate
|
||
}
|
||
})
|
||
// 直接调用提交方法
|
||
await submitForm()
|
||
// 清空数据
|
||
dataListShuju.value = []
|
||
}
|
||
/* const parentMethod = () => {
|
||
//先判断是否超过要求设计日期,超过时给出提醒,不允许插活
|
||
for(var a= 0;a<dataList.value.projectOrderSubs.length;a++){
|
||
if(dataList.value.projectOrderSubs[a].changeEndTime){
|
||
if(dataList.value.projectOrderSubs[a].blankDate>dataList.value.projectOrderSubs[a].changeEndTime
|
||
|| dataList.value.projectOrderSubs[a].twoDimDate>dataList.value.projectOrderSubs[a].changeEndTime
|
||
|| dataList.value.projectOrderSubs[a].threeDimDate>dataList.value.projectOrderSubs[a].changeEndTime)
|
||
{
|
||
message.error("本次插活已经超过要求设计结束日期,无法插活");
|
||
}
|
||
}
|
||
|
||
}
|
||
dialogVisible.value = false
|
||
for(var a= 0;a<dataList.value.projectOrderSubs.length;a++){
|
||
for(var b=0;b<formData.value.projectPlanSubs.length;b++){
|
||
if(dataList.value.projectOrderSubs[a].id == formData.value.projectPlanSubs[b].id){
|
||
formData.value.projectPlanSubs[b].startBlankDate = dataList.value.projectOrderSubs[a].startBlankDate
|
||
formData.value.projectPlanSubs[b].blankDate = dataList.value.projectOrderSubs[a].blankDate
|
||
|
||
formData.value.projectPlanSubs[b].startTwoDimDate = dataList.value.projectOrderSubs[a].startTwoDimDate
|
||
formData.value.projectPlanSubs[b].twoDimDate = dataList.value.projectOrderSubs[a].twoDimDate
|
||
|
||
formData.value.projectPlanSubs[b].startThreeDimDate= dataList.value.projectOrderSubs[a].startThreeDimDate
|
||
formData.value.projectPlanSubs[b].threeDimDate =dataList.value.projectOrderSubs[a].threeDimDate
|
||
}
|
||
|
||
}
|
||
}
|
||
//直接调用提交方法
|
||
submitForm()
|
||
dataListShuju.value = []; */
|
||
|
||
/* if(formData.value.changeEndTime){
|
||
if(currentTime.value>formData.value.changeEndTime){
|
||
message.error("本次插活已经超过要求设计结束日期,无法插活");
|
||
}else{
|
||
//确定插活后,将日期进行更新,并在根据最后一个日期继续查看后面的时间是否有冲突
|
||
dialogVisible.value = false
|
||
console.log(dataList.value.projectOrderSubs);
|
||
for(var a= 0;a<dataList.value.projectOrderSubs.length;a++){
|
||
for(var b=0;b<formData.value.projectPlanSubs.length;b++){
|
||
if(dataList.value.projectOrderSubs[a].id == formData.value.projectPlanSubs[b].id){
|
||
formData.value.projectPlanSubs[b].startBlankDate = dataList.value.projectOrderSubs[a].startBlankDate
|
||
formData.value.projectPlanSubs[b].blankDate = dataList.value.projectOrderSubs[a].blankDate
|
||
|
||
formData.value.projectPlanSubs[b].startTwoDimDate = dataList.value.projectOrderSubs[a].startTwoDimDate
|
||
formData.value.projectPlanSubs[b].twoDimDate = dataList.value.projectOrderSubs[a].twoDimDate
|
||
|
||
formData.value.projectPlanSubs[b].startThreeDimDate= dataList.value.projectOrderSubs[a].startThreeDimDate
|
||
formData.value.projectPlanSubs[b].threeDimDate =dataList.value.projectOrderSubs[a].threeDimDate
|
||
}
|
||
|
||
}
|
||
|
||
}
|
||
}
|
||
}else{
|
||
//确定插活后,将日期进行更新,并在根据最后一个日期继续查看后面的时间是否有冲突
|
||
dialogVisible.value = false
|
||
console.log(dataList.value.projectOrderSubs);
|
||
for(var a= 0;a<dataList.value.projectOrderSubs.length;a++){
|
||
for(var b=0;b<formData.value.projectPlanSubs.length;b++){
|
||
if(dataList.value.projectOrderSubs[a].id == formData.value.projectPlanSubs[b].id){
|
||
formData.value.projectPlanSubs[b].startBlankDate = dataList.value.projectOrderSubs[a].startBlankDate
|
||
formData.value.projectPlanSubs[b].blankDate = dataList.value.projectOrderSubs[a].blankDate
|
||
|
||
formData.value.projectPlanSubs[b].startTwoDimDate = dataList.value.projectOrderSubs[a].startTwoDimDate
|
||
formData.value.projectPlanSubs[b].twoDimDate = dataList.value.projectOrderSubs[a].twoDimDate
|
||
|
||
formData.value.projectPlanSubs[b].startThreeDimDate= dataList.value.projectOrderSubs[a].startThreeDimDate
|
||
formData.value.projectPlanSubs[b].threeDimDate =dataList.value.projectOrderSubs[a].threeDimDate
|
||
}
|
||
|
||
}
|
||
|
||
}
|
||
} */
|
||
|
||
//};
|
||
const clouse = () => {
|
||
dialogVisible.value = false
|
||
dataListShuju.value = []
|
||
}
|
||
const openUp=()=>{
|
||
insert.value?.open()
|
||
}
|
||
const queryParams = reactive({
|
||
pageNo: 1,
|
||
pageSize: 10,
|
||
dates: new Date().getTime().toString(),
|
||
times: undefined,
|
||
xingqj: undefined,
|
||
ifjiejiari: undefined
|
||
})
|
||
/* 计算设计天数 */
|
||
const handleDateChange = async (
|
||
index,
|
||
startBlankDate,
|
||
blankDate,
|
||
num,
|
||
ownder,
|
||
id,
|
||
startField,
|
||
endField,
|
||
dataNumField,
|
||
type
|
||
) => {
|
||
var nowDa = new Date()
|
||
var nowDataStr = nowDa.toLocaleDateString('en-CA')
|
||
dataListShuju.value = []
|
||
const rowData = formData.value.projectPlanSubs[index]
|
||
// 使用一个数组来收集所有遇到的错误信息
|
||
const errors = []
|
||
var deleteBlankNum = false;
|
||
var deleteEndNum = false;
|
||
// --- 检查开始日期 ---
|
||
if (typeof startBlankDate === 'undefined' || startBlankDate === null || startBlankDate === '') {
|
||
errors.push('请选择开始日期,否则无法计算设计天数')
|
||
deleteBlankNum = true;
|
||
} else {
|
||
const starDateStr = new Date(startBlankDate).toLocaleDateString('en-CA')
|
||
if (starDateStr < nowDataStr) {
|
||
errors.push('开始日期只能选择当天或往后的时间!')
|
||
// 标记需要清空,但先不清空,等最后统一处理
|
||
startBlankDate = null
|
||
} else {
|
||
const queryHolidayParams = { queryDate: startBlankDate }
|
||
const isHoliday = await shopCalendarApi.isHoliday(queryHolidayParams)
|
||
if (!isHoliday) {
|
||
message.error(starDateStr + '为节假日,不允许选择')
|
||
rowData[startField] = null
|
||
return
|
||
}
|
||
}
|
||
}
|
||
|
||
// --- 检查结束日期 ---
|
||
if (typeof blankDate === 'undefined' || blankDate === null || blankDate === '') {
|
||
errors.push('请选择结束日期,否则无法计算设计天数')
|
||
deleteEndNum = true;
|
||
} else {
|
||
const endDateStr = new Date(blankDate).toLocaleDateString('en-CA')
|
||
if (endDateStr < nowDataStr) {
|
||
errors.push('结束日期只能选择当天或往后的时间!')
|
||
blankDate = null
|
||
} else {
|
||
const queryHolidayParams = { queryDate: blankDate }
|
||
const isHoliday = await shopCalendarApi.isHoliday(queryHolidayParams)
|
||
if (!isHoliday) {
|
||
// 注意:你的原代码这里是 !isHoliday,我根据你的提示语修正了逻辑
|
||
message.error(endDateStr + '为节假日,不允许选择')
|
||
rowData[endField] = null
|
||
return
|
||
}
|
||
}
|
||
}
|
||
|
||
// --- 统一处理错误和更新数据 ---
|
||
if (errors.length > 0) {
|
||
// 如果有错误,将所有错误信息合并后一次性弹出
|
||
message.error(errors.join('\n')) // 使用 '\n' 换行显示多个错误
|
||
|
||
// 统一更新 rowData,清空无效的日期
|
||
if (startBlankDate === null) {
|
||
rowData[dataNumField] = null
|
||
rowData[startField] = null
|
||
}
|
||
if (blankDate === null) {
|
||
rowData[dataNumField] = null
|
||
rowData[endField] = null
|
||
}
|
||
return // 最后再 return,终止函数
|
||
}
|
||
//用户选择完成后要取数据库中检索是否存在时间冲突,存在弹出插活框
|
||
if (startBlankDate > blankDate) {
|
||
message.error('开始时间必须早于结束时间,否则无法计算设计天数,请检查')
|
||
if (type == 'end') {
|
||
rowData[endField] = null
|
||
} else {
|
||
rowData[startField] = null
|
||
}
|
||
|
||
rowData[dataNumField] = null
|
||
return
|
||
}
|
||
|
||
//调用查询天数的后端接口
|
||
getSearchRlTs(startBlankDate, blankDate, index, num, ownder)
|
||
|
||
//计算天数
|
||
// 将日期字符串转换为Date对象
|
||
const date1 = new Date(startBlankDate)
|
||
const date2 = new Date(blankDate)
|
||
|
||
// 计算两个日期之间的天数差
|
||
const timeDiff = Math.abs(date2.getTime() - date1.getTime())
|
||
const diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24))
|
||
const tianshu = diffDays + 1
|
||
}
|
||
|
||
const getSearchRlTs = async (
|
||
startDateTime: string,
|
||
endDateTime: string,
|
||
index: number,
|
||
num: string,
|
||
ownder: number
|
||
) => {
|
||
let data = await PlanSubApi.getSearchRlTsS(
|
||
formatDate(startDateTime, 'YYYY-MM-DD'),
|
||
formatDate(endDateTime, 'YYYY-MM-DD')
|
||
)
|
||
if (num === '1') {
|
||
//调用接口查询检索设计时间是否冲突
|
||
formData.value.projectPlanSubs[index].blankNum = data
|
||
// formatDate(startBlankDate,'YYYY-MM-DD')
|
||
// if(ownder){
|
||
// prod.value.projectPlanSubs = JSON.parse(JSON.stringify(formData.value.projectPlanSubs));
|
||
// startTimeOne.value = formatDate(startDateTime,'YYYY-MM-DD');
|
||
// endTimeTwo.value = formatDate(endDateTime,'YYYY-MM-DD');
|
||
// fuzerenId.value = ownder;
|
||
// getOwnderList(index)
|
||
// }
|
||
|
||
/* getOwnderList(index,ownder,startBlankDate,blankDate,id) */
|
||
} else if (num === '2') {
|
||
//调用接口查询检索设计时间是否冲突
|
||
formData.value.projectPlanSubs[index].twoDimNum = data
|
||
|
||
// if(ownder){
|
||
// prod.value.projectPlanSubs = JSON.parse(JSON.stringify(formData.value.projectPlanSubs));
|
||
// startTimeOne.value = formatDate(startDateTime,'YYYY-MM-DD');
|
||
// endTimeTwo.value = formatDate(endDateTime,'YYYY-MM-DD');
|
||
// fuzerenId.value = ownder;
|
||
// getOwnderLists(index)
|
||
// }
|
||
} else {
|
||
formData.value.projectPlanSubs[index].threeDimNum = data
|
||
// if(ownder){
|
||
// prod.value.projectPlanSubs = JSON.parse(JSON.stringify(formData.value.projectPlanSubs));
|
||
// startTimeOne.value = formatDate(startDateTime,'YYYY-MM-DD');
|
||
// endTimeTwo.value = formatDate(endDateTime,'YYYY-MM-DD');
|
||
// fuzerenId.value = ownder;
|
||
// getOwnderListss(index)
|
||
// }
|
||
}
|
||
}
|
||
|
||
//选择3D
|
||
const getOwnderListss = async (index: number) => {
|
||
prod.value.projectPlanSubs[index].projectPlanId = formData.value.id
|
||
prod.value.projectPlanSubs[index].type = 3
|
||
dataListShujus.value = []
|
||
|
||
const currentRow = prod.value.projectPlanSubs[index]
|
||
dateThree.value = currentRow.threeDimDate
|
||
const blankOwner = currentRow.threeDimOwner
|
||
dataListShujus.value.push(prod.value.projectPlanSubs[index])
|
||
// 递归处理函数
|
||
const processRecursive = async (i: number) => {
|
||
const datas = { ...prod.value.projectPlanSubs[i] }
|
||
|
||
if (i !== index && prod.value.projectPlanSubs[i].threeDimOwner === blankOwner) {
|
||
if (
|
||
isInRange(
|
||
currentRow.startThreeDimDate,
|
||
currentRow.threeDimDate,
|
||
prod.value.projectPlanSubs[i].startThreeDimDate,
|
||
prod.value.projectPlanSubs[i].threeDimDate
|
||
)
|
||
) {
|
||
const datalists = await PlanSubApi.getOwnderPlanSub(
|
||
formatDate(currentRow.threeDimDate, 'YYYY-MM-DD'),
|
||
prod.value.projectPlanSubs[i].threeDimNum
|
||
)
|
||
prod.value.projectPlanSubs[i].startThreeDimDate = datalists[0].dates
|
||
prod.value.projectPlanSubs[i].threeDimDate = datalists[1].dates
|
||
datas.startThreeDimDates = datas.startThreeDimDate
|
||
datas.threeDimDates = datas.threeDimDate
|
||
datas.startThreeDimDate = datalists[0].dates
|
||
datas.threeDimDate = datalists[1].dates
|
||
|
||
datas.changeEndTime = formData.value.changeEndTime
|
||
datas.projectPlanId = formData.value.id
|
||
datas.type = 2
|
||
currentTime.value = datalists[1].dates
|
||
dateThree.value = datalists[1].dates
|
||
dataListShuju.value.push(datas)
|
||
dataListShujus.value.push(datas)
|
||
await processRecursive(i) // 递归调用
|
||
}
|
||
}
|
||
}
|
||
|
||
// 处理所有相关行
|
||
for (let i = 0; i < prod.value.projectPlanSubs.length; i++) {
|
||
await processRecursive(i)
|
||
}
|
||
|
||
// 去重逻辑
|
||
for (let a = 0; a < dataListShuju.value.length; a++) {
|
||
for (let b = a + 1; b < dataListShuju.value.length; b++) {
|
||
if (
|
||
dataListShuju.value[a] &&
|
||
dataListShuju.value[a].id &&
|
||
dataListShuju.value[b] &&
|
||
dataListShuju.value[b].id &&
|
||
dataListShuju.value[a].id === dataListShuju.value[b].id
|
||
) {
|
||
dataListShuju.value[a].startThreeDimDate = dataListShuju.value[b].startThreeDimDate
|
||
dataListShuju.value[a].threeDimDate = dataListShuju.value[b].threeDimDate
|
||
dataListShuju.value.splice(b, 1)
|
||
b--
|
||
}
|
||
}
|
||
}
|
||
|
||
// 更新数据
|
||
dataList.value.projectOrderSubs = dataListShuju.value
|
||
ownerId.value = blankOwner
|
||
dateOne.value = formatDate(currentRow.startThreeDimDate, 'YYYY-MM-DD')
|
||
dateTwo.value = formatDate(currentRow.threeDimDate, 'YYYY-MM-DD')
|
||
id.value = currentRow.id
|
||
diffDays.value = '1'
|
||
typeNames.value = '1'
|
||
|
||
// 递归执行完毕后,执行以下代码
|
||
const datalistss = await PlanSubApi.getOwnderPlanChaHuo(dataListShujus.value) //(formData.value.id, fuzerenId.value, startTimeOne.value, endTimeTwo.value, "", 0, 1, formatDate(dateThree.value, 'YYYY-MM-DD'));
|
||
prods.value.projectPlanSubs = []
|
||
for (let a = 0; a < datalistss.length; a++) {
|
||
dataListShuju.value.push(datalistss[a])
|
||
prods.value.projectPlanSubs.push(datalistss[a])
|
||
}
|
||
let lastEndTime = null
|
||
for (let a = 0; a < prods.value.projectPlanSubs.length; a++) {
|
||
const prodItem = { ...prods.value.projectPlanSubs[a] }
|
||
for (let b = 0; b < prod.value.projectPlanSubs.length; b++) {
|
||
const existingItem = { ...prod.value.projectPlanSubs[b] }
|
||
if (existingItem.threeDimOwner === prodItem.threeDimOwner) {
|
||
if (
|
||
isInRange(
|
||
prodItem.startThreeDimDate,
|
||
prodItem.threeDimDate,
|
||
existingItem.startThreeDimDate,
|
||
existingItem.threeDimDate
|
||
)
|
||
) {
|
||
const queryStartTime = lastEndTime || prodItem.threeDimDate
|
||
const datalists = await PlanSubApi.getOwnderPlanSub(
|
||
formatDate(queryStartTime, 'YYYY-MM-DD'),
|
||
prod.value.projectPlanSubs[b].threeDimNum
|
||
)
|
||
prod.value.projectPlanSubs[b].startThreeDimDate = datalists[0].dates
|
||
prod.value.projectPlanSubs[b].threeDimDate = datalists[1].dates
|
||
existingItem.startThreeDimDates = existingItem.startThreeDimDate
|
||
existingItem.threeDimDates = existingItem.threeDimDate
|
||
existingItem.startThreeDimDate = datalists[0].dates
|
||
existingItem.threeDimDate = datalists[1].dates
|
||
|
||
lastEndTime = datalists[1].dates
|
||
existingItem.changeEndTime = formData.value.changeEndTime
|
||
existingItem.projectPlanId = formData.value.id
|
||
existingItem.type = 2
|
||
currentTime.value = datalists[1].dates
|
||
dateThree.value = datalists[1].dates
|
||
dataListShuju.value.push(existingItem)
|
||
dataListShujus.value.push(existingItem)
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
// 显示对话框
|
||
if (dataList.value.projectOrderSubs.length > 0) {
|
||
dialogVisible.value = true
|
||
}
|
||
}
|
||
const printfClick = () => {
|
||
if (clickItem.value == null || clickItem.value.length == 0) {
|
||
message.error('至少选择一项后,打印!')
|
||
return
|
||
}
|
||
|
||
for (var i = 0; i < clickItem.value.length; i++) {
|
||
var item = clickItem.value[i]
|
||
if (item.id == null) {
|
||
message.error('请先保存后再打印!')
|
||
return
|
||
}
|
||
if (item.projectSubShortName == null || item.projectSubShortName == '') {
|
||
message.error(
|
||
item.projectSubName == null
|
||
? '子项目简码不得为空'
|
||
: item.projectSubName + '的子项目简码不得为空!'
|
||
)
|
||
return
|
||
}
|
||
}
|
||
printref.value.open(clickItem.value)
|
||
}
|
||
/* const getOwnderListss = async (index: number) => {
|
||
|
||
//根据行索引获取到编辑行
|
||
|
||
const currentRow = prod.value.projectPlanSubs[index];
|
||
//获取到负责人ID
|
||
const blankOwner = currentRow.threeDimOwner;
|
||
for (let i = 0; i < prod.value.projectPlanSubs.length; i++) {
|
||
const datas = {...prod.value.projectPlanSubs[i] }
|
||
if (i!== index && prod.value.projectPlanSubs[i].threeDimOwner === blankOwner) {
|
||
if (isInRange(currentRow.startThreeDimDate,currentRow.threeDimDate, prod.value.projectPlanSubs[i].startThreeDimDate,prod.value.projectPlanSubs[i].threeDimDate)) {
|
||
const datalists = await PlanSubApi.getOwnderPlanSub(formatDate(currentRow.threeDimDate,'YYYY-MM-DD'),prod.value.projectPlanSubs[i].threeDimNum)
|
||
prod.value.projectPlanSubs[i].startThreeDimDate = datalists[0].dates;
|
||
prod.value.projectPlanSubs[i].threeDimDate = datalists[1].dates;
|
||
datas.startThreeDimDate = datalists[0].dates;
|
||
datas.threeDimDate = datalists[1].dates;
|
||
datas.changeEndTime = formData.value.changeEndTime;
|
||
//将最后一次更新的数据的最晚时间进行记录,用于判断此次插活是否超过要求设计结束日期
|
||
currentTime.value = datalists[1].dates;
|
||
//赋值给集合
|
||
dataListShuju.value.push(datas);
|
||
|
||
getOwnderListss(i);
|
||
}
|
||
}
|
||
}
|
||
for(let a=0;a<dataListShuju.value.length;a++){
|
||
|
||
for(let b=a+1;b<dataListShuju.value.length;b++){
|
||
if (dataListShuju.value[a] && dataListShuju.value[a].id && dataListShuju.value[b] && dataListShuju.value[b].id &&dataListShuju.value[a].id === dataListShuju.value[b].id) {
|
||
dataListShuju.value[a].startThreeDimDate = dataListShuju.value[b].startThreeDimDate;
|
||
dataListShuju.value[a].threeDimDate = dataListShuju.value[b].threeDimDate;
|
||
// 删除下标为b的数据
|
||
dataListShuju.value.splice(b, 1);
|
||
// 由于删除了一个元素,需要调整内层循环的索引
|
||
b--;
|
||
}
|
||
}
|
||
}
|
||
|
||
dataList.value.projectOrderSubs = dataListShuju.value
|
||
ownerId.value = blankOwner
|
||
dateOne.value = formatDate(currentRow.startBlankDate,'YYYY-MM-DD')
|
||
dateTwo.value = formatDate(currentRow.blankDate,'YYYY-MM-DD')
|
||
id.value = currentRow.id
|
||
diffDays.value = '1'
|
||
typeNames.value = '1'
|
||
|
||
if(dataList.value.projectOrderSubs.length>0){
|
||
dialogVisible.value = true;
|
||
}
|
||
|
||
|
||
|
||
// 通知子组件数据已经更新
|
||
//emit('update');
|
||
} */
|
||
|
||
//选择2D
|
||
const getOwnderLists = async (index: number) => {
|
||
prod.value.projectPlanSubs[index].projectPlanId = formData.value.id
|
||
prod.value.projectPlanSubs[index].type = 2
|
||
dataListShujus.value = []
|
||
|
||
const currentRow = prod.value.projectPlanSubs[index]
|
||
dateThree.value = currentRow.twoDimDate
|
||
const blankOwner = currentRow.twoDimOwner
|
||
dataListShujus.value.push(prod.value.projectPlanSubs[index])
|
||
// 递归处理函数
|
||
const processRecursive = async (i: number) => {
|
||
const datas = { ...prod.value.projectPlanSubs[i] }
|
||
|
||
if (i !== index && prod.value.projectPlanSubs[i].twoDimOwner === blankOwner) {
|
||
if (
|
||
isInRange(
|
||
currentRow.startTwoDimDate,
|
||
currentRow.twoDimDate,
|
||
prod.value.projectPlanSubs[i].startTwoDimDate,
|
||
prod.value.projectPlanSubs[i].twoDimDate
|
||
)
|
||
) {
|
||
const datalists = await PlanSubApi.getOwnderPlanSub(
|
||
formatDate(currentRow.twoDimDate, 'YYYY-MM-DD'),
|
||
prod.value.projectPlanSubs[i].twoDimNum
|
||
)
|
||
prod.value.projectPlanSubs[i].startTwoDimDate = datalists[0].dates
|
||
prod.value.projectPlanSubs[i].twoDimDate = datalists[1].dates
|
||
|
||
datas.startTwoDimDates = datas.startTwoDimDate
|
||
datas.twoDimDates = datas.twoDimDate
|
||
|
||
datas.startTwoDimDate = datalists[0].dates
|
||
datas.twoDimDate = datalists[1].dates
|
||
|
||
datas.changeEndTime = formData.value.changeEndTime
|
||
datas.projectPlanId = formData.value.id
|
||
datas.type = 2
|
||
currentTime.value = datalists[1].dates
|
||
dateThree.value = datalists[1].dates
|
||
dataListShuju.value.push(datas)
|
||
dataListShujus.value.push(datas)
|
||
|
||
await processRecursive(i) // 递归调用
|
||
}
|
||
}
|
||
}
|
||
|
||
// 处理所有相关行
|
||
for (let i = 0; i < prod.value.projectPlanSubs.length; i++) {
|
||
await processRecursive(i)
|
||
}
|
||
|
||
// 去重逻辑
|
||
for (let a = 0; a < dataListShuju.value.length; a++) {
|
||
for (let b = a + 1; b < dataListShuju.value.length; b++) {
|
||
if (
|
||
dataListShuju.value[a] &&
|
||
dataListShuju.value[a].id &&
|
||
dataListShuju.value[b] &&
|
||
dataListShuju.value[b].id &&
|
||
dataListShuju.value[a].id === dataListShuju.value[b].id
|
||
) {
|
||
dataListShuju.value[a].startTwoDimDate = dataListShuju.value[b].startTwoDimDate
|
||
dataListShuju.value[a].twoDimDate = dataListShuju.value[b].twoDimDate
|
||
dataListShuju.value.splice(b, 1)
|
||
b--
|
||
}
|
||
}
|
||
}
|
||
|
||
// 更新数据
|
||
dataList.value.projectOrderSubs = dataListShuju.value
|
||
ownerId.value = blankOwner
|
||
dateOne.value = formatDate(currentRow.startTwoDimDate, 'YYYY-MM-DD')
|
||
dateTwo.value = formatDate(currentRow.twoDimDate, 'YYYY-MM-DD')
|
||
id.value = currentRow.id
|
||
diffDays.value = '1'
|
||
typeNames.value = '1'
|
||
|
||
// 递归执行完毕后,执行以下代码
|
||
const datalistss = await PlanSubApi.getOwnderPlanChaHuo(dataListShujus.value) //(formData.value.id, fuzerenId.value, startTimeOne.value, endTimeTwo.value, "", 0, 1, formatDate(dateThree.value, 'YYYY-MM-DD'));
|
||
prods.value.projectPlanSubs = []
|
||
for (let a = 0; a < datalistss.length; a++) {
|
||
dataListShuju.value.push(datalistss[a])
|
||
prods.value.projectPlanSubs.push(datalistss[a])
|
||
}
|
||
|
||
let lastEndTime = null
|
||
for (let a = 0; a < prods.value.projectPlanSubs.length; a++) {
|
||
const prodItem = { ...prods.value.projectPlanSubs[a] }
|
||
for (let b = 0; b < prod.value.projectPlanSubs.length; b++) {
|
||
const existingItem = { ...prod.value.projectPlanSubs[b] }
|
||
if (existingItem.twoDimOwner === prodItem.twoDimOwner) {
|
||
if (
|
||
isInRange(
|
||
prodItem.startTwoDimDate,
|
||
prodItem.twoDimDate,
|
||
existingItem.startTwoDimDate,
|
||
existingItem.twoDimDate
|
||
)
|
||
) {
|
||
const queryStartTime = lastEndTime || prodItem.twoDimDate
|
||
const datalists = await PlanSubApi.getOwnderPlanSub(
|
||
formatDate(queryStartTime, 'YYYY-MM-DD'),
|
||
prod.value.projectPlanSubs[b].twoDimNum
|
||
)
|
||
prod.value.projectPlanSubs[b].startTwoDimDate = datalists[0].dates
|
||
prod.value.projectPlanSubs[b].twoDimDate = datalists[1].dates
|
||
|
||
existingItem.startTwoDimDates = existingItem.startTwoDimDate
|
||
existingItem.twoDimDates = existingItem.twoDimDate
|
||
|
||
existingItem.startTwoDimDate = datalists[0].dates
|
||
existingItem.twoDimDate = datalists[1].dates
|
||
|
||
lastEndTime = datalists[1].dates
|
||
existingItem.changeEndTime = formData.value.changeEndTime
|
||
existingItem.projectPlanId = formData.value.id
|
||
existingItem.type = 2
|
||
currentTime.value = datalists[1].dates
|
||
dateThree.value = datalists[1].dates
|
||
dataListShuju.value.push(existingItem)
|
||
dataListShujus.value.push(existingItem)
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
// 显示对话框
|
||
if (dataList.value.projectOrderSubs.length > 0) {
|
||
dialogVisible.value = true
|
||
}
|
||
}
|
||
/* const getOwnderLists = async (index: number) => {
|
||
|
||
|
||
const currentRow = prod.value.projectPlanSubs[index];
|
||
//获取到负责人ID
|
||
const blankOwner = currentRow.twoDimOwner;
|
||
for (let i = 0; i < prod.value.projectPlanSubs.length; i++) {
|
||
const datas = {...prod.value.projectPlanSubs[i] }
|
||
if (i!== index && prod.value.projectPlanSubs[i].twoDimOwner === blankOwner) {
|
||
if (isInRange(currentRow.startTwoDimDate,currentRow.twoDimDate, prod.value.projectPlanSubs[i].startTwoDimDate,prod.value.projectPlanSubs[i].twoDimDate)) {
|
||
const datalists = await PlanSubApi.getOwnderPlanSub(formatDate(currentRow.twoDimDate,'YYYY-MM-DD'),prod.value.projectPlanSubs[i].twoDimNum)
|
||
prod.value.projectPlanSubs[i].startTwoDimDate = datalists[0].dates;
|
||
prod.value.projectPlanSubs[i].twoDimDate = datalists[1].dates;
|
||
datas.startTwoDimDate = datalists[0].dates;
|
||
datas.twoDimDate = datalists[1].dates;
|
||
datas.changeEndTime = formData.value.changeEndTime;
|
||
currentTime.value = datalists[1].dates;
|
||
//赋值给集合
|
||
dataListShuju.value.push(datas);
|
||
getOwnderLists(i);
|
||
}
|
||
}
|
||
}
|
||
for(let a=0;a<dataListShuju.value.length;a++){
|
||
|
||
for(let b=a+1;b<dataListShuju.value.length;b++){
|
||
if (dataListShuju.value[a] && dataListShuju.value[a].id && dataListShuju.value[b] && dataListShuju.value[b].id &&dataListShuju.value[a].id === dataListShuju.value[b].id) {
|
||
dataListShuju.value[a].startTwoDimDate = dataListShuju.value[b].startTwoDimDate;
|
||
dataListShuju.value[a].twoDimDate = dataListShuju.value[b].twoDimDate;
|
||
// 删除下标为b的数据
|
||
dataListShuju.value.splice(b, 1);
|
||
// 由于删除了一个元素,需要调整内层循环的索引
|
||
b--;
|
||
}
|
||
}
|
||
}
|
||
|
||
dataList.value.projectOrderSubs = dataListShuju.value
|
||
ownerId.value = blankOwner
|
||
dateOne.value = formatDate(currentRow.startBlankDate,'YYYY-MM-DD')
|
||
dateTwo.value = formatDate(currentRow.blankDate,'YYYY-MM-DD')
|
||
id.value = currentRow.id
|
||
diffDays.value = '1'
|
||
typeNames.value = '1'
|
||
|
||
if(dataList.value.projectOrderSubs.length>0){
|
||
dialogVisible.value = true;
|
||
}
|
||
} */
|
||
|
||
// 选择毛坯 ,ownder: number,newdateOne: number,newdateTwo: number,newid:number
|
||
const getOwnderList = async (index: number) => {
|
||
prod.value.projectPlanSubs[index].projectPlanId = formData.value.id
|
||
prod.value.projectPlanSubs[index].type = 1
|
||
dataListShujus.value = []
|
||
|
||
const currentRow = prod.value.projectPlanSubs[index]
|
||
dateThree.value = currentRow.blankDate
|
||
const blankOwner = currentRow.blankOwner
|
||
dataListShujus.value.push(prod.value.projectPlanSubs[index])
|
||
// 递归处理函数
|
||
const processRecursive = async (i: number) => {
|
||
const datas = { ...prod.value.projectPlanSubs[i] }
|
||
|
||
if (i !== index && prod.value.projectPlanSubs[i].blankOwner === blankOwner) {
|
||
if (
|
||
isInRange(
|
||
currentRow.startBlankDate,
|
||
currentRow.blankDate,
|
||
prod.value.projectPlanSubs[i].startBlankDate,
|
||
prod.value.projectPlanSubs[i].blankDate
|
||
)
|
||
) {
|
||
const datalists = await PlanSubApi.getOwnderPlanSub(
|
||
formatDate(currentRow.blankDate, 'YYYY-MM-DD'),
|
||
prod.value.projectPlanSubs[i].blankNum
|
||
)
|
||
prod.value.projectPlanSubs[i].startBlankDate = datalists[0].dates
|
||
prod.value.projectPlanSubs[i].blankDate = datalists[1].dates
|
||
datas.startBlankDates = datas.startBlankDate
|
||
datas.blankDates = datas.blankDate
|
||
|
||
datas.startBlankDate = datalists[0].dates
|
||
datas.blankDate = datalists[1].dates
|
||
|
||
datas.changeEndTime = formData.value.changeEndTime
|
||
datas.projectPlanId = formData.value.id
|
||
currentTime.value = datalists[1].dates
|
||
dateThree.value = datalists[1].dates
|
||
datas.type = 1
|
||
dataListShuju.value.push(datas)
|
||
dataListShujus.value.push(datas)
|
||
|
||
await processRecursive(i) // 递归调用
|
||
}
|
||
}
|
||
}
|
||
|
||
// 处理所有相关行
|
||
for (let i = 0; i < prod.value.projectPlanSubs.length; i++) {
|
||
await processRecursive(i)
|
||
}
|
||
|
||
// 去重逻辑
|
||
for (let a = 0; a < dataListShuju.value.length; a++) {
|
||
for (let b = a + 1; b < dataListShuju.value.length; b++) {
|
||
if (
|
||
dataListShuju.value[a] &&
|
||
dataListShuju.value[a].id &&
|
||
dataListShuju.value[b] &&
|
||
dataListShuju.value[b].id &&
|
||
dataListShuju.value[a].id === dataListShuju.value[b].id
|
||
) {
|
||
dataListShuju.value[a].startBlankDate = dataListShuju.value[b].startBlankDate
|
||
dataListShuju.value[a].blankDate = dataListShuju.value[b].blankDate
|
||
dataListShuju.value.splice(b, 1)
|
||
b--
|
||
}
|
||
}
|
||
}
|
||
|
||
// 更新数据
|
||
dataList.value.projectOrderSubs = dataListShuju.value
|
||
ownerId.value = blankOwner
|
||
dateOne.value = formatDate(currentRow.startBlankDate, 'YYYY-MM-DD')
|
||
dateTwo.value = formatDate(currentRow.blankDate, 'YYYY-MM-DD')
|
||
id.value = currentRow.id
|
||
diffDays.value = '1'
|
||
typeNames.value = '1'
|
||
|
||
// 递归执行完毕后,执行以下代码
|
||
const datalistss = await PlanSubApi.getOwnderPlanChaHuo(dataListShujus.value) //(formData.value.id, fuzerenId.value, startTimeOne.value, endTimeTwo.value, "", 0, 1, formatDate(dateThree.value, 'YYYY-MM-DD'));
|
||
prods.value.projectPlanSubs = []
|
||
for (let a = 0; a < datalistss.length; a++) {
|
||
dataListShuju.value.push(datalistss[a])
|
||
prods.value.projectPlanSubs.push(datalistss[a])
|
||
}
|
||
|
||
let lastEndTime = null
|
||
for (let a = 0; a < prods.value.projectPlanSubs.length; a++) {
|
||
const prodItem = { ...prods.value.projectPlanSubs[a] }
|
||
for (let b = 0; b < prod.value.projectPlanSubs.length; b++) {
|
||
const existingItem = { ...prod.value.projectPlanSubs[b] }
|
||
if (existingItem.blankOwner === prodItem.blankOwner) {
|
||
if (
|
||
isInRange(
|
||
prodItem.startBlankDate,
|
||
prodItem.blankDate,
|
||
existingItem.startBlankDate,
|
||
existingItem.blankDate
|
||
)
|
||
) {
|
||
const queryStartTime = lastEndTime || prodItem.blankDate
|
||
const datalists = await PlanSubApi.getOwnderPlanSub(
|
||
formatDate(queryStartTime, 'YYYY-MM-DD'),
|
||
prod.value.projectPlanSubs[b].blankNum
|
||
)
|
||
prod.value.projectPlanSubs[b].startBlankDate = datalists[0].dates
|
||
prod.value.projectPlanSubs[b].blankDate = datalists[1].dates
|
||
|
||
existingItem.startBlankDates = existingItem.startBlankDate
|
||
existingItem.blankDates = existingItem.blankDate
|
||
|
||
existingItem.startBlankDate = datalists[0].dates
|
||
existingItem.blankDate = datalists[1].dates
|
||
|
||
lastEndTime = datalists[1].dates
|
||
existingItem.changeEndTime = formData.value.changeEndTime
|
||
existingItem.projectPlanId = formData.value.id
|
||
existingItem.type = 2
|
||
currentTime.value = datalists[1].dates
|
||
dateThree.value = datalists[1].dates
|
||
dataListShuju.value.push(existingItem)
|
||
dataListShujus.value.push(existingItem)
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
// 显示对话框
|
||
if (dataList.value.projectOrderSubs.length > 0) {
|
||
dialogVisible.value = true
|
||
}
|
||
}
|
||
|
||
//选择毛坯 ,ownder: number,newdateOne: number,newdateTwo: number,newid:number
|
||
/* const getOwnderList = async (index: number) => {
|
||
|
||
//根据行索引获取到编辑行
|
||
const currentRow = prod.value.projectPlanSubs[index];
|
||
dateThree.value = prod.value.projectPlanSubs[index].blankDate;
|
||
//获取到负责人ID
|
||
const blankOwner = currentRow.blankOwner;
|
||
for (let i = 0; i < prod.value.projectPlanSubs.length; i++) {
|
||
const datas = {...prod.value.projectPlanSubs[i] }
|
||
|
||
if (i!== index && prod.value.projectPlanSubs[i].blankOwner === blankOwner) {
|
||
|
||
if (isInRange(currentRow.startBlankDate,currentRow.blankDate, prod.value.projectPlanSubs[i].startBlankDate,prod.value.projectPlanSubs[i].blankDate)) {
|
||
const datalists = await PlanSubApi.getOwnderPlanSub(formatDate(currentRow.blankDate,'YYYY-MM-DD'),prod.value.projectPlanSubs[i].blankNum)
|
||
prod.value.projectPlanSubs[i].startBlankDate = datalists[0].dates;
|
||
prod.value.projectPlanSubs[i].blankDate = datalists[1].dates;
|
||
datas.startBlankDate = datalists[0].dates;
|
||
datas.blankDate = datalists[1].dates;
|
||
datas.changeEndTime = formData.value.changeEndTime;
|
||
currentTime.value = datalists[1].dates;
|
||
dateThree.value = datalists[1].dates;
|
||
//赋值给集合
|
||
dataListShuju.value.push(datas);
|
||
getOwnderList(i);
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
for(let a=0;a<dataListShuju.value.length;a++){
|
||
|
||
for(let b=a+1;b<dataListShuju.value.length;b++){
|
||
if (dataListShuju.value[a] && dataListShuju.value[a].id && dataListShuju.value[b] && dataListShuju.value[b].id &&dataListShuju.value[a].id === dataListShuju.value[b].id) {
|
||
dataListShuju.value[a].startBlankDate = dataListShuju.value[b].startBlankDate;
|
||
dataListShuju.value[a].blankDate = dataListShuju.value[b].blankDate;
|
||
// 删除下标为b的数据
|
||
dataListShuju.value.splice(b, 1);
|
||
// 由于删除了一个元素,需要调整内层循环的索引
|
||
b--;
|
||
}
|
||
}
|
||
}
|
||
//完成后检查其他项目是否存在日期冲突
|
||
console.log('调用了');
|
||
const datalistss = await PlanSubApi.getOwnderPlanChaHuo(formData.value.id,fuzerenId.value,startTimeOne.value,endTimeTwo.value,"",0,1,formatDate(dateThree.value,'YYYY-MM-DD'))
|
||
for(var a=0;a<datalistss.length;a++){
|
||
dataListShuju.value.push(datalistss[a]);
|
||
}
|
||
|
||
dataList.value.projectOrderSubs = dataListShuju.value
|
||
ownerId.value = blankOwner
|
||
dateOne.value = formatDate(currentRow.startBlankDate,'YYYY-MM-DD')
|
||
dateTwo.value = formatDate(currentRow.blankDate,'YYYY-MM-DD')
|
||
id.value = currentRow.id
|
||
diffDays.value = '1'
|
||
typeNames.value = '1'
|
||
|
||
|
||
|
||
|
||
if(dataList.value.projectOrderSubs.length>0){
|
||
dialogVisible.value = true;
|
||
}
|
||
|
||
|
||
// 通知子组件数据已经更新
|
||
//emit('update');
|
||
} */
|
||
|
||
const isInRange = (start, end, target1, target2) => {
|
||
const startDate = new Date(start)
|
||
const endDate = new Date(end)
|
||
const targetDate1 = new Date(target1)
|
||
const targetDate2 = new Date(target2)
|
||
const isTarget1InRange = targetDate1 >= startDate && targetDate1 <= endDate
|
||
const isTarget2InRange = targetDate2 >= startDate && targetDate2 <= endDate
|
||
return isTarget1InRange || isTarget2InRange
|
||
}
|
||
|
||
const handleUpdate = () => {
|
||
// 处理子组件的更新通知
|
||
console.log('子组件已更新')
|
||
}
|
||
|
||
const handleCraftInfo = async (val) => {
|
||
if (val == 0) {
|
||
const a = await PlanApi.verification(query.id, 'BLUEPRINT_FOUNDRY_TECHNOLOGY')
|
||
if (a) {
|
||
formData.value.craftOwner = undefined
|
||
formData.value.craftStartDate = undefined
|
||
formData.value.craftEndDate = undefined
|
||
} else {
|
||
message.error('铸造工艺进度上报有报工数据,不允许修改为否')
|
||
formData.value.hasCraft = 1
|
||
}
|
||
} else {
|
||
const data = await PlanApi.getPlan(query.id)
|
||
formData.value.craftOwner = data.craftOwner
|
||
formData.value.craftStartDate = data.craftStartDate
|
||
formData.value.craftEndDate = data.craftEndDate
|
||
}
|
||
}
|
||
const handleCastInfo = async (val) => {
|
||
if (val == 0) {
|
||
const a = await PlanApi.verification(query.id, 'CASTING_DRAWING')
|
||
if (a) {
|
||
formData.value.castOwner = undefined
|
||
formData.value.castStartDate = undefined
|
||
formData.value.castEndDate = undefined
|
||
} else {
|
||
message.error('铸件图设计进度上报有报工数据 不允许修改为否')
|
||
formData.value.hasCast = 1
|
||
}
|
||
} else {
|
||
const data = await PlanApi.getPlan(query.id)
|
||
formData.value.castOwner = data.castOwner
|
||
formData.value.castStartDate = data.castStartDate
|
||
formData.value.castEndDate = data.castEndDate
|
||
}
|
||
}
|
||
const handleSubCode = (row, name) => {
|
||
// row.projectSubCode = name.length==0?"" : (formData.value.projectCode + '-' + customerInit.value.brief + '-' + name)
|
||
}
|
||
|
||
const handleMouldType = async (scope, mid) => {
|
||
// 获得设备信息下拉列表
|
||
//scope.row.equipList = equipInit.value.filter(rg => rg.id == mid)
|
||
}
|
||
|
||
const submitForm = async () => {
|
||
// 校验表单
|
||
await formRef.value.validate()
|
||
await subFormRef.value.validate()
|
||
let isRepeat = false
|
||
for (var i = 0; i < formData.value.projectPlanSubs.length; i++) {
|
||
var item = formData.value.projectPlanSubs[i]
|
||
item.projectPlanId = formData.value.id
|
||
//毛坯
|
||
if (item.blankDate) {
|
||
if (!item.startBlankDate) {
|
||
message.alert(item.name + '的毛坯开始时间不能为空')
|
||
return
|
||
}
|
||
if (!item.blankOwner) {
|
||
message.alert(item.name + '的毛坯责任人不能为空')
|
||
return
|
||
}
|
||
}
|
||
|
||
if (item.startBlankDate) {
|
||
if (!item.blankDate) {
|
||
message.alert(item.name + '的毛坯结束时间不能为空')
|
||
return
|
||
}
|
||
if (!item.blankOwner) {
|
||
message.alert(item.name + '的毛坯责任人不能为空')
|
||
return
|
||
}
|
||
}
|
||
|
||
if (item.blankOwner) {
|
||
if (!item.startBlankDate) {
|
||
message.alert(item.name + '的毛坯开始时间不能为空')
|
||
return
|
||
}
|
||
if (!item.blankDate) {
|
||
message.alert(item.name + '的毛坯结束时间不能为空')
|
||
return
|
||
}
|
||
}
|
||
//2D
|
||
if (item.twoDimDate) {
|
||
if (!item.startTwoDimDate) {
|
||
message.alert(item.name + '的2D开始时间不能为空')
|
||
return
|
||
}
|
||
if (!item.twoDimOwner) {
|
||
message.alert(item.name + '的2D责任人不能为空')
|
||
return
|
||
}
|
||
}
|
||
|
||
if (item.startTwoDimDate) {
|
||
if (!item.twoDimDate) {
|
||
message.alert(item.name + '的2D结束时间不能为空')
|
||
return
|
||
}
|
||
if (!item.twoDimOwner) {
|
||
message.alert(item.name + '的2D责任人不能为空')
|
||
return
|
||
}
|
||
}
|
||
|
||
if (item.twoDimOwner) {
|
||
if (!item.startTwoDimDate) {
|
||
message.alert(item.name + '的2D开始时间不能为空')
|
||
return
|
||
}
|
||
if (!item.twoDimDate) {
|
||
message.alert(item.name + '的2D结束时间不能为空')
|
||
return
|
||
}
|
||
}
|
||
|
||
//3D
|
||
if (item.threeDimDate) {
|
||
if (!item.startThreeDimDate) {
|
||
message.alert(item.name + '的3D开始时间不能为空')
|
||
return
|
||
}
|
||
if (!item.threeDimOwner) {
|
||
message.alert(item.name + '的3D责任人不能为空')
|
||
return
|
||
}
|
||
}
|
||
|
||
if (item.startThreeDimDate) {
|
||
if (!item.threeDimDate) {
|
||
message.alert(item.name + '的3D结束时间不能为空')
|
||
return
|
||
}
|
||
if (!item.threeDimOwner) {
|
||
message.alert(item.name + '的3D责任人不能为空')
|
||
return
|
||
}
|
||
}
|
||
|
||
if (item.threeDimOwner) {
|
||
if (!item.startThreeDimDate) {
|
||
message.alert(item.name + '的3D开始时间不能为空')
|
||
return
|
||
}
|
||
if (!item.threeDimDate) {
|
||
message.alert(item.name + '的3D结束时间不能为空')
|
||
return
|
||
}
|
||
}
|
||
|
||
if (
|
||
formData.value.projectPlanSubs.filter((record) => {
|
||
return record.projectSubShortName == item.projectSubShortName
|
||
}).length > 1
|
||
)
|
||
isRepeat = true
|
||
}
|
||
|
||
if (isRepeat) {
|
||
await message.alert('子项目简称不能重复!')
|
||
return
|
||
}
|
||
// 提交请求
|
||
formLoading.value = true
|
||
try {
|
||
const data = formData.value as unknown as PlanApi.PlanVO
|
||
data.craftContent = JSON.stringify(data.craftInfos)
|
||
|
||
await PlanApi.updatePlan(data)
|
||
await PlanSubApi.operate(formData.value.projectPlanSubs)
|
||
setTimeout(() => {
|
||
reload()
|
||
},1000)
|
||
console.log()
|
||
message.success(t('common.updateSuccess'))
|
||
// 发送操作成功的事件
|
||
// emit('success')
|
||
} finally {
|
||
formLoading.value = false
|
||
}
|
||
}
|
||
|
||
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.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.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
|
||
}
|
||
// item.projectSubCode = subTemp.projectSubCode
|
||
// item.mouldId = subTemp.mouldId
|
||
|
||
// item.blankDate = subTemp.blankDate
|
||
// item.blankOwner = subTemp.blankOwner
|
||
// item.twoDimDate = subTemp.twoDimDate
|
||
// item.twoDimOwner = subTemp.twoDimOwner
|
||
// item.threeDimDate = subTemp.threeDimDate
|
||
// item.threeDimOwner = subTemp.threeDimOwner
|
||
|
||
// 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)
|
||
}
|
||
})
|
||
}
|
||
const userInit = ref()
|
||
const userInit1 = ref()
|
||
const userInit2 = ref()
|
||
const userInit3 = ref()
|
||
// const userInit4 = ref()
|
||
const mergedArray = ref()
|
||
const mergedArray1 = ref()
|
||
const mergedArray2 = ref()
|
||
const mergedArray3 = ref()
|
||
const mergedArray4 = ref()
|
||
const mergedArray5 = ref()
|
||
const mergedArray6 = ref()
|
||
const mergedArray7 = ref()
|
||
const equipInit = ref()
|
||
const mouldTypeList = ref()
|
||
const customerInit = ref()
|
||
type OwnerListType = {
|
||
index: number
|
||
id: number
|
||
label: string
|
||
}
|
||
const personList = ref([])
|
||
const ownerList = ref<OwnerListType[]>([])
|
||
const getOwnerListThis = async (): Promise<OwnerListType[]> => {
|
||
let tempList: any[]
|
||
let ownerList: OwnerListType[] = []
|
||
tempList = personList.value
|
||
|
||
if (tempList) {
|
||
tempList.forEach((item, index) => {
|
||
let key = Object.keys(item)[0]
|
||
let value = item[key] as string
|
||
ownerList.push({ index: index + 1, id: Number(key), label: value })
|
||
})
|
||
}
|
||
return ownerList
|
||
}
|
||
onMounted(async () => {
|
||
//用户列表数据
|
||
userInit.value = await UserApi.getDeptName('设计部')
|
||
// userInit1.value = await UserApi.getDeptName("生产部")
|
||
userInit2.value = await UserApi.getDeptName('检验部')
|
||
// userInit3.value=await UserApi.getDeptName("采购部")
|
||
// userInit4.value=await UserApi.getDeptName("技术部")
|
||
// 模具类型下拉列表数据
|
||
mouldTypeList.value = await MouldTypeApi.getSimpList()
|
||
// 设备信息下拉列表数据
|
||
equipInit.value = await EquipApi.getSimpList()
|
||
// 获取库存信息
|
||
formData.value = await PlanApi.getPlan(query.id)
|
||
userInit1.value = await TaskDispatchApi.getOwnerUserList(0, 1)
|
||
// ownerList.value = await getOwnerListThis();
|
||
if (formData.value.hasCraft == null) {
|
||
formData.value.hasCraft = 1
|
||
}
|
||
if (formData.value.hasCast == null) {
|
||
formData.value.hasCast = 1
|
||
}
|
||
|
||
const data = await ProjectLeaderApi.getProjectLeaderType(4)
|
||
const data1 = await ProjectLeaderApi.getProjectLeaderType(5)
|
||
const data2 = await ProjectLeaderApi.getProjectLeaderType(6)
|
||
const data3 = await ProjectLeaderApi.getProjectLeaderType(7)
|
||
const data4 = await ProjectLeaderApi.getProjectLeaderType(8)
|
||
const data5 = await ProjectLeaderApi.getProjectLeaderType(9)
|
||
const data6 = await ProjectLeaderApi.getProjectLeaderType(10)
|
||
const data7 = await ProjectLeaderApi.getProjectLeaderType(11)
|
||
mergedArray.value = [...userInit1.value]
|
||
mergedArray1.value = [...userInit1.value]
|
||
mergedArray2.value = [...userInit1.value]
|
||
mergedArray3.value = [...userInit1.value]
|
||
mergedArray4.value = [...userInit1.value]
|
||
mergedArray5.value = [...userInit1.value]
|
||
mergedArray6.value = [...userInit2.value]
|
||
mergedArray7.value = [...userInit2.value]
|
||
if (data && data.owner) {
|
||
// 自动过滤 null/undefined
|
||
// 检查 mergedArray1 是否已存在相同 id 的数据
|
||
const isOwnerExist = mergedArray.value.some((item) => item.id === data.owner)
|
||
// 如果不存在,才 push 新数据
|
||
if (!isOwnerExist) {
|
||
mergedArray.value.push({
|
||
id: data.owner,
|
||
username: data.userName,
|
||
nickname: data.ownerName
|
||
})
|
||
}
|
||
}
|
||
if (data1 && data1.owner) {
|
||
const isOwnerExist = mergedArray1.value.some((item) => item.id === data1.owner)
|
||
// 如果不存在,才 push 新数据
|
||
if (!isOwnerExist) {
|
||
mergedArray1.value.push({
|
||
id: data1.owner,
|
||
username: data1.userName,
|
||
nickname: data1.ownerName
|
||
})
|
||
}
|
||
}
|
||
if (data2 && data2.owner) {
|
||
const isOwnerExist = mergedArray2.value.some((item) => item.id === data2.owner)
|
||
// 如果不存在,才 push 新数据
|
||
if (!isOwnerExist) {
|
||
mergedArray2.value.push({
|
||
id: data2.owner,
|
||
username: data2.userName,
|
||
nickname: data2.ownerName
|
||
})
|
||
}
|
||
}
|
||
|
||
if (data3 && data3.owner) {
|
||
const isOwnerExist = mergedArray3.value.some((item) => item.id === data3.owner)
|
||
// 如果不存在,才 push 新数据
|
||
if (!isOwnerExist) {
|
||
mergedArray3.value.push({
|
||
id: data3.owner,
|
||
username: data3.userName,
|
||
nickname: data3.ownerName
|
||
})
|
||
}
|
||
}
|
||
if (data4 && data4.owner) {
|
||
const isOwnerExist = mergedArray4.value.some((item) => item.id === data4.owner)
|
||
// 如果不存在,才 push 新数据
|
||
if (!isOwnerExist) {
|
||
mergedArray4.value.push({
|
||
id: data4.owner,
|
||
username: data4.userName,
|
||
nickname: data4.ownerName
|
||
})
|
||
}
|
||
}
|
||
if (data5 && data5.owner) {
|
||
const isOwnerExist = mergedArray5.value.some((item) => item.id === data5.owner)
|
||
// 如果不存在,才 push 新数据
|
||
if (!isOwnerExist) {
|
||
mergedArray5.value.push({
|
||
id: data5.owner,
|
||
username: data5.userName,
|
||
nickname: data5.ownerName
|
||
})
|
||
}
|
||
}
|
||
if (data6 && data6.owner) {
|
||
const isOwnerExist = mergedArray6.value.some((item) => item.id === data6.owner)
|
||
// 如果不存在,才 push 新数据
|
||
if (!isOwnerExist) {
|
||
mergedArray6.value.push({
|
||
id: data6.owner,
|
||
username: data6.userName,
|
||
nickname: data6.ownerName
|
||
})
|
||
}
|
||
}
|
||
if (data7 && data7.owner) {
|
||
// 自动过滤 null/undefined
|
||
const isOwnerExist = mergedArray7.value.some((item) => item.id === data7.owner)
|
||
// 如果不存在,才 push 新数据
|
||
if (!isOwnerExist) {
|
||
mergedArray7.value.push({
|
||
id: data7.owner,
|
||
username: data7.userName,
|
||
nickname: data7.ownerName
|
||
})
|
||
}
|
||
}
|
||
await handleInitPlanSub()
|
||
var projectInit = await ProjectOrderApi.getProjectOrder(formData.value.projectId)
|
||
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?.value.name
|
||
formData.value.projectName = projectInit.projectName
|
||
formData.value.businessMan = businessManInit?.nickname
|
||
formData.value.projectStartTime = projectInit.projectStartTime
|
||
formData.value.projectEndTime = projectInit.projectEndTime
|
||
formData.value.businessLine = projectInit.businessLine
|
||
formData.value.property = projectInit.property
|
||
formData.value.isUrgency = projectInit.isUrgency
|
||
if (formData.value.auditDate == null || formData.value.auditDate == '') {
|
||
formData.value.auditDate = projectInit.orderTime
|
||
}
|
||
if (formData.value.editorDate == null || formData.value.editorDate == '') {
|
||
formData.value.editorDate = projectInit.orderTime
|
||
}
|
||
if (formData.value.approveDate == null || formData.value.approveDate == '') {
|
||
formData.value.approveDate = projectInit.orderTime
|
||
}
|
||
// 操作日志
|
||
let logParams = {
|
||
pageNo: 1,
|
||
pageSize: 99,
|
||
businessId: formData.value.projectId,
|
||
businessType: 'PROJECT_ORDER'
|
||
}
|
||
formData.value.operateLogs = (await getOperateLogPage(logParams)).list
|
||
|
||
if (formData.value.craftContent == null) {
|
||
formData.value.craftInfos = []
|
||
|
||
getIntDictOptions(DICT_TYPE.HELI_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)
|
||
}
|
||
// 计划编制人
|
||
if (formData.value.editor == null || formData.value.editor == undefined) {
|
||
var newVar = await ProjectLeaderApi.getProjectLeaderType(1)
|
||
formData.value.editor = newVar.owner
|
||
}
|
||
// 计划审核人
|
||
if (formData.value.auditor == null || formData.value.auditor == undefined) {
|
||
const newVar = await ProjectLeaderApi.getProjectLeaderType(2)
|
||
formData.value.auditor = newVar.owner
|
||
}
|
||
// 计划批准人
|
||
if (formData.value.approver == null || formData.value.approver == undefined) {
|
||
const newVar = await ProjectLeaderApi.getProjectLeaderType(3)
|
||
formData.value.approver = newVar.owner
|
||
}
|
||
//装配的负责人
|
||
const craftInfos = formData.value.craftInfos
|
||
for (var i = 0; i < craftInfos.length; i++) {
|
||
if (craftInfos[i].name == '母模/毛坯') {
|
||
if (
|
||
craftInfos[i].owner == null ||
|
||
craftInfos[i].owner == undefined ||
|
||
craftInfos[i].owner == ''
|
||
) {
|
||
if (data && data.owner) {
|
||
craftInfos[i].owner = data.owner
|
||
}
|
||
}
|
||
}
|
||
if (craftInfos[i].name == '粗,精加工') {
|
||
if (
|
||
craftInfos[i].owner == null ||
|
||
craftInfos[i].owner == undefined ||
|
||
craftInfos[i].owner == ''
|
||
) {
|
||
if (data1 && data1.owner) {
|
||
craftInfos[i].owner = data1.owner
|
||
}
|
||
}
|
||
}
|
||
if (craftInfos[i].name == '热处理') {
|
||
if (
|
||
craftInfos[i].owner == null ||
|
||
craftInfos[i].owner == undefined ||
|
||
craftInfos[i].owner == ''
|
||
) {
|
||
if (data2 && data2.owner) {
|
||
craftInfos[i].owner = data2.owner
|
||
}
|
||
}
|
||
}
|
||
if (craftInfos[i].name == '电火花') {
|
||
if (
|
||
craftInfos[i].owner == null ||
|
||
craftInfos[i].owner == undefined ||
|
||
craftInfos[i].owner == ''
|
||
) {
|
||
if (data3 && data3.owner) {
|
||
craftInfos[i].owner = data3.owner
|
||
}
|
||
}
|
||
}
|
||
|
||
if (craftInfos[i].name == '打孔/抛光') {
|
||
if (
|
||
craftInfos[i].owner == null ||
|
||
craftInfos[i].owner == undefined ||
|
||
craftInfos[i].owner == ''
|
||
) {
|
||
if (data4 && data4.owner) {
|
||
craftInfos[i].owner = data4.owner
|
||
}
|
||
}
|
||
}
|
||
if (craftInfos[i].name == '装配') {
|
||
if (
|
||
craftInfos[i].owner == null ||
|
||
craftInfos[i].owner == undefined ||
|
||
craftInfos[i].owner == ''
|
||
) {
|
||
if (data5 && data5.owner) {
|
||
craftInfos[i].owner = data5.owner
|
||
}
|
||
}
|
||
}
|
||
if (craftInfos[i].name == '预验收') {
|
||
if (
|
||
craftInfos[i].owner == null ||
|
||
craftInfos[i].owner == undefined ||
|
||
craftInfos[i].owner == ''
|
||
) {
|
||
if (data6 && data6.owner) {
|
||
craftInfos[i].owner = data6.owner
|
||
}
|
||
}
|
||
}
|
||
if (craftInfos[i].name == '检验') {
|
||
if (
|
||
craftInfos[i].owner == null ||
|
||
craftInfos[i].owner == undefined ||
|
||
craftInfos[i].owner == ''
|
||
) {
|
||
if (data7 && data7.owner) {
|
||
craftInfos[i].owner = data7.owner
|
||
}
|
||
}
|
||
}
|
||
}
|
||
})
|
||
|
||
//项目负责人
|
||
const handleSelectedUser1 = (newValue: any) => {
|
||
formData.value.projectOwner = newValue?.id
|
||
}
|
||
//工艺负责人
|
||
const handleSelectedUser2 = (newValue: any) => {
|
||
formData.value.craftOwner = newValue?.id
|
||
}
|
||
const handleSelectedUser10 = (newValue: any) => {
|
||
formData.value.castOwner = newValue?.id
|
||
}
|
||
// 计划编制人
|
||
const handleSelectedUser3 = (newValue: any) => {
|
||
formData.value.editor = newValue?.id
|
||
}
|
||
// 计划审核人
|
||
const handleSelectedUser4 = (newValue: any) => {
|
||
formData.value.auditor = newValue?.id
|
||
}
|
||
// 计划批准人
|
||
const handleSelectedUser5 = (newValue: any) => {
|
||
formData.value.approver = newValue?.id
|
||
}
|
||
// 毛坯负责人
|
||
const handleSelectedUser6 = async (currentIndex) => {
|
||
var userId = formData.value.projectPlanSubs[currentIndex].blankOwner
|
||
var maxBeginDate = null
|
||
if (!formData.value.projectPlanSubs[currentIndex].startBlankDate) {
|
||
for (var i = 0; i < formData.value.projectPlanSubs.length; i++) {
|
||
var item = formData.value.projectPlanSubs[i]
|
||
console.log(item.blankOwner)
|
||
if (item.blankOwner != null && item.blankOwner == userId) {
|
||
if (item.blankDate != null) {
|
||
if (maxBeginDate == null) {
|
||
maxBeginDate = item.blankDate
|
||
} else {
|
||
if (new Date(item.blankDate).getTime() > new Date(maxBeginDate).getTime()) {
|
||
maxBeginDate = item.blankDate
|
||
}
|
||
}
|
||
}
|
||
}
|
||
if (item.twoDimOwner != null && item.twoDimOwner == userId) {
|
||
if (item.twoDimDate != null) {
|
||
if (maxBeginDate == null) {
|
||
maxBeginDate = item.twoDimDate
|
||
} else {
|
||
if (new Date(item.twoDimDate).getTime() > new Date(maxBeginDate).getTime()) {
|
||
maxBeginDate = item.twoDimDate
|
||
}
|
||
}
|
||
}
|
||
}
|
||
if (item.threeDimOwner != null && item.threeDimOwner == userId) {
|
||
if (item.threeDimDate != null) {
|
||
if (maxBeginDate == null) {
|
||
maxBeginDate = item.threeDimDate
|
||
} else {
|
||
if (new Date(item.threeDimDate).getTime() > new Date(maxBeginDate).getTime()) {
|
||
maxBeginDate = item.threeDimDate
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
//查数据库
|
||
var queryMaxDateParams = {
|
||
twoDimOwner: userId,
|
||
queryDate: maxBeginDate == null ? null : new Date(maxBeginDate).getTime(),
|
||
projectId: formData.value.projectId
|
||
}
|
||
var maxDateDO = await planSubDetailApi.queryMaxDetail(queryMaxDateParams)
|
||
if (maxDateDO != null) {
|
||
formData.value.projectPlanSubs[currentIndex].startBlankDate = maxDateDO.maxTime
|
||
}
|
||
}
|
||
}
|
||
// 设备型号
|
||
const handleSelectedequip = (scope, newValue: any) => {
|
||
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.equipId = null
|
||
scope.row.mouldId = null
|
||
}
|
||
}
|
||
// 2D负责人
|
||
const handleSelectedUser7 = async (currentIndex) => {
|
||
var userId = formData.value.projectPlanSubs[currentIndex].twoDimOwner
|
||
var maxBeginDate = null
|
||
if (!formData.value.projectPlanSubs[currentIndex].startTwoDimDate) {
|
||
for (var i = 0; i < formData.value.projectPlanSubs.length; i++) {
|
||
var item = formData.value.projectPlanSubs[i]
|
||
if (item.blankOwner != null && item.blankOwner == userId) {
|
||
if (item.blankDate != null) {
|
||
if (maxBeginDate == null) {
|
||
maxBeginDate = item.blankDate
|
||
} else {
|
||
if (new Date(item.blankDate).getTime() > new Date(maxBeginDate).getTime()) {
|
||
maxBeginDate = item.blankDate
|
||
}
|
||
}
|
||
}
|
||
}
|
||
if (item.twoDimOwner != null && item.twoDimOwner == userId) {
|
||
if (item.twoDimDate != null) {
|
||
if (maxBeginDate == null) {
|
||
maxBeginDate = item.twoDimDate
|
||
} else {
|
||
if (new Date(item.twoDimDate).getTime() > new Date(maxBeginDate).getTime()) {
|
||
maxBeginDate = item.twoDimDate
|
||
}
|
||
}
|
||
}
|
||
}
|
||
if (item.threeDimOwner != null && item.threeDimOwner == userId) {
|
||
if (item.threeDimDate != null) {
|
||
if (maxBeginDate == null) {
|
||
maxBeginDate = item.threeDimDate
|
||
} else {
|
||
if (new Date(item.threeDimDate).getTime() > new Date(maxBeginDate).getTime()) {
|
||
maxBeginDate = item.threeDimDate
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
//查数据库
|
||
var queryMaxDateParams = {
|
||
twoDimOwner: userId,
|
||
queryDate: maxBeginDate == null ? null : new Date(maxBeginDate).getTime(),
|
||
projectId: formData.value.projectId
|
||
}
|
||
var maxDateDO = await planSubDetailApi.queryMaxDetail(queryMaxDateParams)
|
||
if (maxDateDO != null) {
|
||
formData.value.projectPlanSubs[currentIndex].startTwoDimDate = maxDateDO.maxTime
|
||
}
|
||
}
|
||
}
|
||
// 3D负责人
|
||
const handleSelectedUser8 = async (currentIndex) => {
|
||
var userId = formData.value.projectPlanSubs[currentIndex].threeDimOwner
|
||
var maxBeginDate = null
|
||
if (!formData.value.projectPlanSubs[currentIndex].startThreeDimDate) {
|
||
for (var i = 0; i < formData.value.projectPlanSubs.length; i++) {
|
||
var item = formData.value.projectPlanSubs[i]
|
||
if (item.blankOwner != null && item.blankOwner == userId) {
|
||
if (item.blankDate != null) {
|
||
if (maxBeginDate == null) {
|
||
maxBeginDate = item.blankDate
|
||
} else {
|
||
if (new Date(item.blankDate).getTime() > new Date(maxBeginDate).getTime()) {
|
||
maxBeginDate = item.blankDate
|
||
}
|
||
}
|
||
}
|
||
}
|
||
if (item.twoDimOwner != null && item.twoDimOwner == userId) {
|
||
if (item.twoDimDate != null) {
|
||
if (maxBeginDate == null) {
|
||
maxBeginDate = item.twoDimDate
|
||
} else {
|
||
if (new Date(item.twoDimDate).getTime() > new Date(maxBeginDate).getTime()) {
|
||
maxBeginDate = item.twoDimDate
|
||
}
|
||
}
|
||
}
|
||
}
|
||
if (item.threeDimOwner != null && item.threeDimOwner == userId) {
|
||
if (item.threeDimDate != null) {
|
||
if (maxBeginDate == null) {
|
||
maxBeginDate = item.threeDimDate
|
||
} else {
|
||
if (new Date(item.threeDimDate).getTime() > new Date(maxBeginDate).getTime()) {
|
||
maxBeginDate = item.threeDimDate
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
//查数据库
|
||
var queryMaxDateParams = {
|
||
twoDimOwner: userId,
|
||
queryDate: maxBeginDate == null ? null : new Date(maxBeginDate).getTime(),
|
||
projectId: formData.value.projectId
|
||
}
|
||
var maxDateDO = await planSubDetailApi.queryMaxDetail(queryMaxDateParams)
|
||
if (maxDateDO != null) {
|
||
formData.value.projectPlanSubs[currentIndex].startThreeDimDate = maxDateDO.maxTime
|
||
}
|
||
}
|
||
}
|
||
// 责任人
|
||
const handleSelectedUser9 = (currentIndex, newValue: any) => {
|
||
formData.value.craftInfos[currentIndex].owner = newValue?.id
|
||
}
|
||
</script>
|
||
<style>
|
||
a {
|
||
color: #409eff;
|
||
text-decoration: none;
|
||
}
|
||
|
||
.upload-file-uploader {
|
||
margin-bottom: 10px;
|
||
display: inline-block;
|
||
margin-right: 20px;
|
||
}
|
||
|
||
.hl-card .alter-class {
|
||
position: relative;
|
||
border: solid 1px orange;
|
||
outline: solid 1px orange;
|
||
}
|
||
.el-form-item__content {
|
||
margin-left: 0px !important;
|
||
}
|
||
</style>
|