|
|
|
|
@ -146,58 +146,58 @@
|
|
|
|
|
|
|
|
|
|
<!-- 项目阶段计划 -->
|
|
|
|
|
<el-card shadow="never" style="margin-top: 0">
|
|
|
|
|
<template #header>
|
|
|
|
|
<el-row :gutter="10">
|
|
|
|
|
<el-col :span="1.5">
|
|
|
|
|
<span class="card-title">回款阶段</span>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="1.5" v-if="!isFormDisabled">
|
|
|
|
|
<el-button type="primary" icon="Plus" @click="handleAddPlanStage">添加阶段</el-button>
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
</template>
|
|
|
|
|
<!-- <template #header>-->
|
|
|
|
|
<!-- <el-row :gutter="10">-->
|
|
|
|
|
<!-- <el-col :span="1.5">-->
|
|
|
|
|
<!-- <span class="card-title">回款阶段</span>-->
|
|
|
|
|
<!-- </el-col>-->
|
|
|
|
|
<!-- <el-col :span="1.5" v-if="!isFormDisabled">-->
|
|
|
|
|
<!-- <el-button type="primary" icon="Plus" @click="handleAddPlanStage">添加阶段</el-button>-->
|
|
|
|
|
<!-- </el-col>-->
|
|
|
|
|
<!-- </el-row>-->
|
|
|
|
|
<!-- </template>-->
|
|
|
|
|
|
|
|
|
|
<el-table :data="planStageList" border stripe max-height="400">
|
|
|
|
|
<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="isFormDisabled">
|
|
|
|
|
<el-option v-for="dict in project_phases" :key="dict.value" :label="dict.label" :value="dict.value" />
|
|
|
|
|
</el-select>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="计划开始时间" width="160" align="center">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-date-picker
|
|
|
|
|
v-model="scope.row.planStartTime"
|
|
|
|
|
type="date"
|
|
|
|
|
value-format="YYYY-MM-DD"
|
|
|
|
|
placeholder="选择日期"
|
|
|
|
|
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.planEndTime"
|
|
|
|
|
type="date"
|
|
|
|
|
value-format="YYYY-MM-DD"
|
|
|
|
|
placeholder="选择日期"
|
|
|
|
|
style="width: 100%"
|
|
|
|
|
:disabled="isFormDisabled"
|
|
|
|
|
/>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="回款阶段" width="150" 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="isFormDisabled">-->
|
|
|
|
|
<!-- <el-option v-for="dict in project_phases" :key="dict.value" :label="dict.label" :value="dict.value" />-->
|
|
|
|
|
<!-- </el-select>-->
|
|
|
|
|
<!-- </template>-->
|
|
|
|
|
<!-- </el-table-column>-->
|
|
|
|
|
<!-- <el-table-column label="计划开始时间" width="160" align="center">-->
|
|
|
|
|
<!-- <template #default="scope">-->
|
|
|
|
|
<!-- <el-date-picker-->
|
|
|
|
|
<!-- v-model="scope.row.planStartTime"-->
|
|
|
|
|
<!-- type="date"-->
|
|
|
|
|
<!-- value-format="YYYY-MM-DD"-->
|
|
|
|
|
<!-- placeholder="选择日期"-->
|
|
|
|
|
<!-- 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.planEndTime"-->
|
|
|
|
|
<!-- type="date"-->
|
|
|
|
|
<!-- value-format="YYYY-MM-DD"-->
|
|
|
|
|
<!-- placeholder="选择日期"-->
|
|
|
|
|
<!-- style="width: 100%"-->
|
|
|
|
|
<!-- :disabled="isFormDisabled"-->
|
|
|
|
|
<!-- />-->
|
|
|
|
|
<!-- </template>-->
|
|
|
|
|
<!-- </el-table-column>-->
|
|
|
|
|
<el-table-column label="回款阶段" width="220" align="center">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<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-option v-for="stage in paymentStageList" :key="stage.paymentStageId" :label="stage.paymentMethod" :value="stage.paymentStageId" />
|
|
|
|
|
</el-select>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="预计回款比例(%)" width="150" align="center">
|
|
|
|
|
<el-table-column label="预计回款比例(%)" width="220" align="center">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-input-number
|
|
|
|
|
v-model="scope.row.repaymentRate"
|
|
|
|
|
@ -222,7 +222,7 @@
|
|
|
|
|
<!-- />-->
|
|
|
|
|
<!-- </template>-->
|
|
|
|
|
<!-- </el-table-column>-->
|
|
|
|
|
<el-table-column label="预计回款时间" width="160" align="center">
|
|
|
|
|
<el-table-column label="预计回款时间" width="220" align="center">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-date-picker
|
|
|
|
|
v-model="scope.row.repaymentTime"
|
|
|
|
|
@ -266,11 +266,11 @@
|
|
|
|
|
<el-input v-model="scope.row.remark" placeholder="请输入备注" :disabled="isFormDisabled" />
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<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>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<!-- <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>-->
|
|
|
|
|
<!-- </el-table-column>-->
|
|
|
|
|
</el-table>
|
|
|
|
|
</el-card>
|
|
|
|
|
|
|
|
|
|
@ -285,7 +285,6 @@
|
|
|
|
|
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';
|
|
|
|
|
import { startWorkFlow } from '@/api/workflow/task';
|
|
|
|
|
import { StartProcessBo } from '@/api/workflow/workflowCommon/types';
|
|
|
|
|
import SubmitVerify from '@/components/Process/submitVerify.vue';
|
|
|
|
|
@ -300,7 +299,6 @@ import { CodeRuleEnum, FlowCodeEnum, ProjectCategoryEnum } from '@/enums/OAEnum'
|
|
|
|
|
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';
|
|
|
|
|
import { getBasePaymentStageList } from '@/api/oa/base/paymentStage';
|
|
|
|
|
import { PaymentStageVO } from '@/api/oa/base/paymentStage/types';
|
|
|
|
|
import { getInfo } from '@/api/login';
|
|
|
|
|
@ -359,7 +357,10 @@ const paymentStageList = ref<PaymentStageVO[]>([]);
|
|
|
|
|
const getPaymentStageList = async () => {
|
|
|
|
|
try {
|
|
|
|
|
const res = await getBasePaymentStageList({ pageNum: 1, pageSize: 9999 });
|
|
|
|
|
paymentStageList.value = res.data || [];
|
|
|
|
|
paymentStageList.value = (res.data || []).map((item: any) => ({
|
|
|
|
|
...item,
|
|
|
|
|
paymentStageId: item.paymentStageId != null ? String(item.paymentStageId) : item.paymentStageId
|
|
|
|
|
}));
|
|
|
|
|
} catch (error) {
|
|
|
|
|
console.error('查询回款阶段列表失败:', error);
|
|
|
|
|
paymentStageList.value = [];
|
|
|
|
|
@ -583,6 +584,32 @@ const loadContractInfo = async () => {
|
|
|
|
|
return String(id.trim());
|
|
|
|
|
}) as any;
|
|
|
|
|
}
|
|
|
|
|
// 新增时:合同付款方式赋值到回款阶段表格
|
|
|
|
|
const list = (contractData as any).contractPaymentMethodList;
|
|
|
|
|
if (list && Array.isArray(list) && list.length > 0) {
|
|
|
|
|
planStageList.value = list.map((pm: any, index: number) => {
|
|
|
|
|
const stage = paymentStageList.value.find((s: PaymentStageVO) => String(s.paymentStageId) === String(pm.paymentStageId));
|
|
|
|
|
return {
|
|
|
|
|
planStageId: undefined,
|
|
|
|
|
projectId: form.value.projectId,
|
|
|
|
|
projectPlanId: undefined,
|
|
|
|
|
projectPhases: '',
|
|
|
|
|
planStartTime: undefined,
|
|
|
|
|
planEndTime: undefined,
|
|
|
|
|
collectionStage: stage.paymentStageId,
|
|
|
|
|
repaymentRate: pm.paymentPercentage ?? undefined,
|
|
|
|
|
repaymentAmount: undefined,
|
|
|
|
|
repaymentTime: undefined,
|
|
|
|
|
delayDay: undefined,
|
|
|
|
|
receivableDate: undefined,
|
|
|
|
|
reasonsExplanation: '',
|
|
|
|
|
scheduleRemark: '',
|
|
|
|
|
sortOrder: pm.sortOrder ?? index + 1,
|
|
|
|
|
remark: pm.remark ?? '',
|
|
|
|
|
activeFlag: '1'
|
|
|
|
|
} as ErpProjectPlanStageForm;
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} catch (error) {
|
|
|
|
|
|