|
|
|
|
@ -6,7 +6,7 @@
|
|
|
|
|
@approvalVerifyOpen="approvalVerifyOpen"
|
|
|
|
|
@handleApprovalRecord="handleApprovalRecord"
|
|
|
|
|
:buttonLoading="buttonLoading"
|
|
|
|
|
:id="form.contractId"
|
|
|
|
|
:id="form.projectId"
|
|
|
|
|
:status="form.flowStatus"
|
|
|
|
|
:pageType="routeParams.type"
|
|
|
|
|
:mode="false"
|
|
|
|
|
@ -14,13 +14,7 @@
|
|
|
|
|
</el-card>
|
|
|
|
|
|
|
|
|
|
<el-card shadow="never" style="margin-top: 0">
|
|
|
|
|
<el-form
|
|
|
|
|
ref="projectInfoFormRef"
|
|
|
|
|
:model="form"
|
|
|
|
|
:disabled="routeParams.type === 'view' || routeParams.type === 'approval'"
|
|
|
|
|
:rules="rules"
|
|
|
|
|
label-width="120px"
|
|
|
|
|
>
|
|
|
|
|
<el-form ref="projectInfoFormRef" :model="form" :rules="rules" label-width="120px">
|
|
|
|
|
<el-row :gutter="20">
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-form-item label="项目编号" prop="projectCode">
|
|
|
|
|
@ -29,7 +23,7 @@
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-form-item label="项目名称" prop="projectName">
|
|
|
|
|
<el-input v-model="form.projectName" placeholder="请输入项目名称" />
|
|
|
|
|
<el-input v-model="form.projectName" placeholder="请输入项目名称" :disabled="isFormDisabled" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
@ -61,24 +55,25 @@
|
|
|
|
|
:props="{ value: 'projectTypeId', label: 'typeName', children: 'children', emitPath: false }"
|
|
|
|
|
placeholder="请选择项目类型"
|
|
|
|
|
style="width: 100%"
|
|
|
|
|
:disabled="isFormDisabled"
|
|
|
|
|
/>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<!-- <el-col :span="12">-->
|
|
|
|
|
<!-- <el-form-item label="付款方式" prop="paymentMethod">-->
|
|
|
|
|
<!-- <el-input v-model="form.paymentMethod" placeholder="请输入付款方式(如:3-3-3-1)" />-->
|
|
|
|
|
<!-- </el-form-item>-->
|
|
|
|
|
<!-- </el-col>-->
|
|
|
|
|
<!-- <el-col :span="12">-->
|
|
|
|
|
<!-- <el-form-item label="付款方式" prop="paymentMethod">-->
|
|
|
|
|
<!-- <el-input v-model="form.paymentMethod" placeholder="请输入付款方式(如:3-3-3-1)" />-->
|
|
|
|
|
<!-- </el-form-item>-->
|
|
|
|
|
<!-- </el-col>-->
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-form-item label="部门" prop="deptId">
|
|
|
|
|
<el-select v-model="form.deptId" placeholder="请选择部门">
|
|
|
|
|
<el-select v-model="form.deptId" placeholder="请选择部门" :disabled="isFormDisabled">
|
|
|
|
|
<el-option v-for="item in deptInfoList" :key="item.deptId" :label="item.deptName" :value="item.deptId" />
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-form-item label="项目经理" prop="managerId">
|
|
|
|
|
<el-select v-model="form.managerId" placeholder="请选择项目经理" clearable filterable>
|
|
|
|
|
<el-select v-model="form.managerId" placeholder="请选择项目经理" :disabled="isFormDisabled" clearable filterable>
|
|
|
|
|
<el-option v-for="user in userList" :key="user.userId" :label="user.nickName" :value="user.userId" />
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
@ -99,7 +94,7 @@
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-form-item label="合同编号" prop="contractCode">
|
|
|
|
|
<el-input v-model="form.contractCode" placeholder="请输入合同编号" :disabled="true"/>
|
|
|
|
|
<el-input v-model="form.contractCode" placeholder="请输入合同编号" :disabled="true" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
@ -109,7 +104,7 @@
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-form-item label="抄送人员" prop="peopleId">
|
|
|
|
|
<el-select v-model="form.peopleId" placeholder="请选择抄送人员" clearable filterable multiple>
|
|
|
|
|
<el-select v-model="form.peopleId" placeholder="请选择抄送人员" :disabled="isFormDisabled" clearable filterable multiple>
|
|
|
|
|
<el-option v-for="user in userList" :key="user.userId" :label="user.nickName" :value="user.userId" />
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
@ -132,7 +127,7 @@
|
|
|
|
|
<el-form-item label="终版合同上传" prop="ossId">
|
|
|
|
|
<FileUpload
|
|
|
|
|
v-model="ossIdString"
|
|
|
|
|
:limit="5"
|
|
|
|
|
:limit="1"
|
|
|
|
|
:fileSize="20"
|
|
|
|
|
:fileType="['doc', 'docx', 'pdf', 'xls', 'xlsx']"
|
|
|
|
|
:disabled="routeParams.type === 'view' || routeParams.type === 'approval'"
|
|
|
|
|
@ -142,7 +137,7 @@
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="24">
|
|
|
|
|
<el-form-item label="备注" prop="remark">
|
|
|
|
|
<el-input v-model="form.remark" type="textarea" placeholder="请输入备注" />
|
|
|
|
|
<el-input v-model="form.remark" type="textarea" placeholder="请输入备注" :disabled="isFormDisabled" />
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
@ -154,9 +149,9 @@
|
|
|
|
|
<template #header>
|
|
|
|
|
<el-row :gutter="10">
|
|
|
|
|
<el-col :span="1.5">
|
|
|
|
|
<span class="card-title">项目阶段计划</span>
|
|
|
|
|
<span class="card-title">回款阶段</span>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="1.5" v-if="routeParams.type !== 'view' && routeParams.type !== 'approval'">
|
|
|
|
|
<el-col :span="1.5" v-if="isFormDisabled">
|
|
|
|
|
<el-button type="primary" icon="Plus" @click="handleAddPlanStage">添加阶段</el-button>
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
@ -166,12 +161,7 @@
|
|
|
|
|
<el-table-column label="序号" type="index" width="60" align="center" />
|
|
|
|
|
<el-table-column label="项目阶段" width="150" align="center">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-select
|
|
|
|
|
v-model="scope.row.projectPhases"
|
|
|
|
|
placeholder="请选择项目阶段"
|
|
|
|
|
style="width: 100%"
|
|
|
|
|
:disabled="routeParams.type === 'view' || routeParams.type === 'approval'"
|
|
|
|
|
>
|
|
|
|
|
<el-select v-model="scope.row.projectPhases" placeholder="请选择项目阶段" style="width: 100%" :disabled="!isFormDisabled">
|
|
|
|
|
<el-option v-for="dict in project_phases" :key="dict.value" :label="dict.label" :value="dict.value" />
|
|
|
|
|
</el-select>
|
|
|
|
|
</template>
|
|
|
|
|
@ -184,6 +174,7 @@
|
|
|
|
|
value-format="YYYY-MM-DD"
|
|
|
|
|
placeholder="选择日期"
|
|
|
|
|
style="width: 100%"
|
|
|
|
|
:disabled="!isFormDisabled"
|
|
|
|
|
/>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
@ -195,18 +186,14 @@
|
|
|
|
|
value-format="YYYY-MM-DD"
|
|
|
|
|
placeholder="选择日期"
|
|
|
|
|
style="width: 100%"
|
|
|
|
|
:disabled="!isFormDisabled"
|
|
|
|
|
/>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="回款阶段" width="150" align="center">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-select v-model="scope.row.collectionStage" placeholder="请选择回款阶段" clearable style="width: 100%">
|
|
|
|
|
<el-option
|
|
|
|
|
v-for="stage in paymentStageList"
|
|
|
|
|
:key="stage.paymentStageId"
|
|
|
|
|
:label="stage.stageName"
|
|
|
|
|
:value="stage.collectionStage"
|
|
|
|
|
/>
|
|
|
|
|
<el-select v-model="scope.row.collectionStage" placeholder="请选择回款阶段" clearable style="width: 100%" :disabled="!isFormDisabled">
|
|
|
|
|
<el-option v-for="stage in paymentStageList" :key="stage.paymentStageId" :label="stage.stageName" :value="stage.collectionStage" />
|
|
|
|
|
</el-select>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
@ -219,20 +206,22 @@
|
|
|
|
|
:precision="2"
|
|
|
|
|
controls-position="right"
|
|
|
|
|
style="width: 100%"
|
|
|
|
|
:disabled="!isFormDisabled"
|
|
|
|
|
/>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="预计回款金额" width="150" align="center">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-input-number
|
|
|
|
|
v-model="scope.row.repaymentAmount"
|
|
|
|
|
:min="0"
|
|
|
|
|
:precision="2"
|
|
|
|
|
controls-position="right"
|
|
|
|
|
style="width: 100%"
|
|
|
|
|
/>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<!-- <el-table-column label="预计回款金额" width="150" align="center">-->
|
|
|
|
|
<!-- <template #default="scope">-->
|
|
|
|
|
<!-- <el-input-number-->
|
|
|
|
|
<!-- v-model="scope.row.repaymentAmount"-->
|
|
|
|
|
<!-- :min="0"-->
|
|
|
|
|
<!-- :precision="2"-->
|
|
|
|
|
<!-- controls-position="right"-->
|
|
|
|
|
<!-- style="width: 100%"-->
|
|
|
|
|
<!-- :disabled="!isFormDisabled"-->
|
|
|
|
|
<!-- />-->
|
|
|
|
|
<!-- </template>-->
|
|
|
|
|
<!-- </el-table-column>-->
|
|
|
|
|
<el-table-column label="预计回款时间" width="160" align="center">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-date-picker
|
|
|
|
|
@ -241,46 +230,43 @@
|
|
|
|
|
value-format="YYYY-MM-DD"
|
|
|
|
|
placeholder="选择日期"
|
|
|
|
|
style="width: 100%"
|
|
|
|
|
:disabled="!isFormDisabled"
|
|
|
|
|
/>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="回款延期天数" width="130" align="center">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-input-number
|
|
|
|
|
v-model="scope.row.delayDay"
|
|
|
|
|
:min="0"
|
|
|
|
|
controls-position="right"
|
|
|
|
|
style="width: 100%"
|
|
|
|
|
/>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="应收款日期" width="160" align="center">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-date-picker
|
|
|
|
|
v-model="scope.row.receivableDate"
|
|
|
|
|
type="date"
|
|
|
|
|
value-format="YYYY-MM-DD"
|
|
|
|
|
placeholder="选择日期"
|
|
|
|
|
style="width: 100%"
|
|
|
|
|
/>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="原因说明" min-width="200" align="center">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-input v-model="scope.row.reasonsExplanation" placeholder="请输入原因说明" />
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="进度备注" min-width="200" align="center">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-input v-model="scope.row.scheduleRemark" placeholder="请输入进度备注" />
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<!-- <el-table-column label="回款延期天数" width="130" align="center">-->
|
|
|
|
|
<!-- <template #default="scope">-->
|
|
|
|
|
<!-- <el-input-number v-model="scope.row.delayDay" :min="0" controls-position="right" style="width: 100%" :disabled="!isFormDisabled" />-->
|
|
|
|
|
<!-- </template>-->
|
|
|
|
|
<!-- </el-table-column>-->
|
|
|
|
|
<!-- <el-table-column label="应收款日期" width="160" align="center">-->
|
|
|
|
|
<!-- <template #default="scope">-->
|
|
|
|
|
<!-- <el-date-picker-->
|
|
|
|
|
<!-- v-model="scope.row.receivableDate"-->
|
|
|
|
|
<!-- type="date"-->
|
|
|
|
|
<!-- value-format="YYYY-MM-DD"-->
|
|
|
|
|
<!-- placeholder="选择日期"-->
|
|
|
|
|
<!-- style="width: 100%"-->
|
|
|
|
|
<!-- :disabled="!isFormDisabled"-->
|
|
|
|
|
<!-- />-->
|
|
|
|
|
<!-- </template>-->
|
|
|
|
|
<!-- </el-table-column>-->
|
|
|
|
|
<!-- <el-table-column label="原因说明" min-width="200" align="center">-->
|
|
|
|
|
<!-- <template #default="scope">-->
|
|
|
|
|
<!-- <el-input v-model="scope.row.reasonsExplanation" placeholder="请输入原因说明" :disabled="!isFormDisabled" />-->
|
|
|
|
|
<!-- </template>-->
|
|
|
|
|
<!-- </el-table-column>-->
|
|
|
|
|
<!-- <el-table-column label="进度备注" min-width="200" align="center">-->
|
|
|
|
|
<!-- <template #default="scope">-->
|
|
|
|
|
<!-- <el-input v-model="scope.row.scheduleRemark" placeholder="请输入进度备注" :disabled="!isFormDisabled" />-->
|
|
|
|
|
<!-- </template>-->
|
|
|
|
|
<!-- </el-table-column>-->
|
|
|
|
|
<el-table-column label="备注" min-width="150" align="center">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-input v-model="scope.row.remark" placeholder="请输入备注" />
|
|
|
|
|
<el-input v-model="scope.row.remark" placeholder="请输入备注" :disabled="!isFormDisabled" />
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column v-if="routeParams.type !== 'view' && routeParams.type !== 'approval'" label="操作" width="80" align="center" fixed="right">
|
|
|
|
|
<el-table-column v-if="isFormDisabled" label="操作" width="80" align="center" fixed="right">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-button type="danger" link icon="Delete" @click="handleDeletePlanStage(scope.$index)">删除</el-button>
|
|
|
|
|
</template>
|
|
|
|
|
@ -288,7 +274,6 @@
|
|
|
|
|
</el-table>
|
|
|
|
|
</el-card>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 提交审批组件 -->
|
|
|
|
|
<submitVerify ref="submitVerifyRef" :task-variables="taskVariables" @submit-callback="submitCallback" />
|
|
|
|
|
<!-- 审批记录 -->
|
|
|
|
|
@ -297,7 +282,7 @@
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script setup name="ProjectInfoEdit" lang="ts">
|
|
|
|
|
import { getProjectInfo } from '@/api/oa/erp/projectInfo';
|
|
|
|
|
import { getErpProjectInfoList, getProjectInfo, listProjectInfo } from '@/api/oa/erp/projectInfo';
|
|
|
|
|
import { saveContractOrder, updateContractOrder, submitContractOrderAndFlowStart } from '@/api/oa/erp/contractOrder';
|
|
|
|
|
import { ProjectInfoForm } from '@/api/oa/erp/projectInfo/types';
|
|
|
|
|
import { getRuleGenerateCode } from '@/api/system/codeRule';
|
|
|
|
|
@ -312,7 +297,7 @@ import { ProjectTypeVO } from '@/api/oa/erp/projectType/types';
|
|
|
|
|
import { listUser } from '@/api/system/user';
|
|
|
|
|
import { UserQuery } from '@/api/system/user/types';
|
|
|
|
|
import { CodeRuleEnum, FlowCodeEnum, ProjectCategoryEnum } from '@/enums/OAEnum';
|
|
|
|
|
import { listErpProjectPlanStage } from '@/api/oa/erp/erpProjectPlanStage';
|
|
|
|
|
import { getErpProjectPlanStageList, listErpProjectPlanStage } from '@/api/oa/erp/erpProjectPlanStage';
|
|
|
|
|
import { ErpProjectPlanStageForm, ErpProjectPlanStageQuery } from '@/api/oa/erp/erpProjectPlanStage/types';
|
|
|
|
|
import { listContractInfo, getContractInfo } from '@/api/oa/erp/contractInfo';
|
|
|
|
|
import { ContractInfoVO, ContractInfoQuery } from '@/api/oa/erp/contractInfo/types';
|
|
|
|
|
@ -438,12 +423,21 @@ const data = reactive<{ form: ProjectInfoFormEx; rules: any }>({
|
|
|
|
|
contractFlag: [{ required: true, message: '有无合同不能为空', trigger: 'change' }],
|
|
|
|
|
projectName: [{ required: true, message: '项目名称不能为空', trigger: 'blur' }],
|
|
|
|
|
businessDirection: [{ required: true, message: '业务方向不能为空', trigger: 'change' }],
|
|
|
|
|
projectCategory: [{ required: true, message: '项目类别不能为空', trigger: 'change' }]
|
|
|
|
|
projectCategory: [{ required: true, message: '项目类别不能为空', trigger: 'change' }],
|
|
|
|
|
projectTypeId: [{ required: true, message: '项目类型不能为空', trigger: 'change' }],
|
|
|
|
|
deptId: [{ required: true, message: '部门不能为空', trigger: 'change' }],
|
|
|
|
|
managerId: [{ required: true, message: '项目经理不能为空', trigger: 'change' }],
|
|
|
|
|
ossId: [{ required: true, message: '请上传终版合同', trigger: 'change' }]
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
const { form, rules } = toRefs(data);
|
|
|
|
|
|
|
|
|
|
// 判断表单是否禁用(查看或审批模式)
|
|
|
|
|
const isFormDisabled = computed(() => {
|
|
|
|
|
return routeParams.value.type === 'view' || routeParams.value.type === 'approval';
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// 附件ID字符串转换(用于FileUpload组件)
|
|
|
|
|
const ossIdString = computed({
|
|
|
|
|
get() {
|
|
|
|
|
@ -455,23 +449,6 @@ const ossIdString = computed({
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// 生成项目编号
|
|
|
|
|
const generateProjectCode = async () => {
|
|
|
|
|
if (isCodeGenerated.value) return;
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
const codeRuleCode = form.value.projectCategory === ProjectCategoryEnum.RD ? CodeRuleEnum.PROJECT_RD : CodeRuleEnum.PROJECT;
|
|
|
|
|
const params = { codeRuleCode: codeRuleCode } as any;
|
|
|
|
|
const res = await getRuleGenerateCode(params);
|
|
|
|
|
form.value.projectCode = res.msg;
|
|
|
|
|
isCodeGenerated.value = true;
|
|
|
|
|
proxy?.$modal.msgSuccess('项目编号生成成功');
|
|
|
|
|
} catch (error) {
|
|
|
|
|
console.error('生成项目编号失败:', error);
|
|
|
|
|
proxy?.$modal.msgError('生成项目编号失败');
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
//返回
|
|
|
|
|
const goBack = () => {
|
|
|
|
|
proxy.$tab.closePage(proxy.$route);
|
|
|
|
|
@ -513,15 +490,15 @@ const submitForm = (status: string, mode: boolean) => {
|
|
|
|
|
submitData.variables = {
|
|
|
|
|
projectId: submitData.projectId,
|
|
|
|
|
projectCode: submitData.projectCode,
|
|
|
|
|
projectName: submitData.projectName
|
|
|
|
|
projectName: submitData.projectName,
|
|
|
|
|
contractManagerId: submitData.peopleId
|
|
|
|
|
};
|
|
|
|
|
// 流程实例业务扩展字段
|
|
|
|
|
submitData.bizExt = {
|
|
|
|
|
businessTitle: '合同订单激活',
|
|
|
|
|
businessCode: submitData.projectCode
|
|
|
|
|
businessTitle: '合同订单激活'
|
|
|
|
|
};
|
|
|
|
|
submitData.projectStatus = '2';
|
|
|
|
|
submitData.flowStatus = 'waiting';
|
|
|
|
|
submitData.projectStatus = '3';
|
|
|
|
|
submitData.flowStatus = 'finish';
|
|
|
|
|
const res = await submitContractOrderAndFlowStart(submitData).finally(() => (buttonLoading.value = false));
|
|
|
|
|
form.value = res.data;
|
|
|
|
|
buttonLoading.value = false;
|
|
|
|
|
@ -550,7 +527,6 @@ const submitForm = (status: string, mode: boolean) => {
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//初始化调用
|
|
|
|
|
const loadSelectOptions = async () => {
|
|
|
|
|
await getUserList();
|
|
|
|
|
@ -563,26 +539,50 @@ const loadContractInfo = async () => {
|
|
|
|
|
const contractId = routeParams.value.contractId as string | number;
|
|
|
|
|
if (contractId) {
|
|
|
|
|
try {
|
|
|
|
|
const contractRes = await getContractInfo(contractId);
|
|
|
|
|
if (contractRes.data) {
|
|
|
|
|
const contractData = contractRes.data;
|
|
|
|
|
form.value.contractId = contractData.contractId;
|
|
|
|
|
form.value.projectName = contractData.contractName + "订单";
|
|
|
|
|
form.value.businessDirection = contractData.businessDirection;
|
|
|
|
|
form.value.deptId = contractData.contractDeptId;
|
|
|
|
|
form.value.contractCode = contractData.contractCode;
|
|
|
|
|
form.value.contractName = contractData.contractName;
|
|
|
|
|
form.value.amount = contractData.totalPrice;
|
|
|
|
|
// 先通过 contractId 查询项目
|
|
|
|
|
const projectRes = await getErpProjectInfoList({ contractId: contractId } as any);
|
|
|
|
|
if (projectRes.data && projectRes.data.length > 0) {
|
|
|
|
|
// 如果查出项目,则进行 form 赋值
|
|
|
|
|
const projectData = projectRes.data[0];
|
|
|
|
|
if (projectData.flowStatus === 'finish') {
|
|
|
|
|
routeParams.value.type = 'view';
|
|
|
|
|
}
|
|
|
|
|
Object.assign(form.value, projectData);
|
|
|
|
|
// 将抄送人员字符串转换为数组,用于多选下拉框显示
|
|
|
|
|
if (form.value.peopleId && typeof form.value.peopleId === 'string') {
|
|
|
|
|
form.value.peopleId = (form.value.peopleId as string).split(',').map((id) => {
|
|
|
|
|
return String(id.trim());
|
|
|
|
|
}) as any;
|
|
|
|
|
}
|
|
|
|
|
// 查询项目阶段计划列表
|
|
|
|
|
await getPlanStageList();
|
|
|
|
|
} else {
|
|
|
|
|
// 如果没有查询到项目,则查询合同信息并赋值相关字段
|
|
|
|
|
const contractRes = await getContractInfo(contractId);
|
|
|
|
|
if (contractRes.data) {
|
|
|
|
|
const contractData = contractRes.data;
|
|
|
|
|
form.value.contractId = contractData.contractId;
|
|
|
|
|
form.value.projectName = contractData.contractName + '订单';
|
|
|
|
|
form.value.businessDirection = contractData.businessDirection;
|
|
|
|
|
form.value.deptId = contractData.contractDeptId;
|
|
|
|
|
form.value.contractCode = contractData.contractCode;
|
|
|
|
|
form.value.contractName = contractData.contractName;
|
|
|
|
|
form.value.amount = contractData.totalPrice;
|
|
|
|
|
|
|
|
|
|
// 根据部门ID查找部门信息,获取部门负责人和分管副总
|
|
|
|
|
const deptInfo = deptInfoList.value.find((dept: any) => dept.deptId === contractData.contractDeptId);
|
|
|
|
|
form.value.chargeId = deptInfo.leader;
|
|
|
|
|
form.value.deputyId = deptInfo.vicePresident;
|
|
|
|
|
// 将抄送人员字符串转换为数组,用于多选下拉框显示
|
|
|
|
|
if (contractData.contractManagerId) {
|
|
|
|
|
form.value.peopleId = String(contractData.contractManagerId).split(',').map((id) => {
|
|
|
|
|
return String(id.trim());
|
|
|
|
|
}) as any;
|
|
|
|
|
if (deptInfo) {
|
|
|
|
|
form.value.chargeId = deptInfo.leader;
|
|
|
|
|
form.value.deputyId = deptInfo.vicePresident;
|
|
|
|
|
}
|
|
|
|
|
// 将抄送人员字符串转换为数组,用于多选下拉框显示
|
|
|
|
|
if (contractData.contractManagerId) {
|
|
|
|
|
form.value.peopleId = String(contractData.contractManagerId)
|
|
|
|
|
.split(',')
|
|
|
|
|
.map((id) => {
|
|
|
|
|
return String(id.trim());
|
|
|
|
|
}) as any;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} catch (error) {
|
|
|
|
|
@ -651,13 +651,9 @@ const getPlanStageList = async () => {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
const params: ErpProjectPlanStageQuery = {
|
|
|
|
|
projectId: form.value.projectId,
|
|
|
|
|
pageNum: 1,
|
|
|
|
|
pageSize: 9999
|
|
|
|
|
};
|
|
|
|
|
const res = await listErpProjectPlanStage(params);
|
|
|
|
|
planStageList.value = (res.rows || []).map((item: any) => ({
|
|
|
|
|
const params = { projectId: form.value.projectId };
|
|
|
|
|
const res = await getErpProjectPlanStageList(params);
|
|
|
|
|
planStageList.value = (res.data || []).map((item: any) => ({
|
|
|
|
|
...item,
|
|
|
|
|
// 确保所有字段都有默认值
|
|
|
|
|
projectPhases: item.projectPhases || '',
|
|
|
|
|
|