|
|
|
|
@ -14,6 +14,51 @@
|
|
|
|
|
/>
|
|
|
|
|
</el-card>
|
|
|
|
|
|
|
|
|
|
<!-- 项目关联合同 -->
|
|
|
|
|
<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">
|
|
|
|
|
<el-button type="primary" plain icon="Plus" @click="handleAddContract" size="small" :disabled="routeParams.type === 'view' || routeParams.type === 'approval'"
|
|
|
|
|
>新增关联
|
|
|
|
|
</el-button>
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<el-table v-loading="contractLoading" border :data="projectContractsList">
|
|
|
|
|
<el-table-column type="index" label="序号" width="60" align="center" />
|
|
|
|
|
<el-table-column label="合同编号" align="center" prop="contractCode" min-width="120" />
|
|
|
|
|
<el-table-column label="合同名称" align="center" prop="contractName" min-width="180" />
|
|
|
|
|
<el-table-column label="合同总价" align="center" prop="totalPrice" min-width="120">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
{{ scope.row.totalPrice ? scope.row.totalPrice + ' 元' : '-' }}
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="业务方向" align="center" prop="businessDirection" min-width="120">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<dict-tag :options="business_direction" :value="scope.row.businessDirection" />
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="合同状态" align="center" prop="contractStatus" min-width="100">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<dict-tag :options="contract_status" :value="scope.row.contractStatus" />
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<!-- <el-table-column label="备注" align="center" prop="remark" min-width="150" show-overflow-tooltip />-->
|
|
|
|
|
<el-table-column label="操作" align="center" width="120" fixed="right" v-if="routeParams.type !== 'view'">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-tooltip content="删除" placement="top">
|
|
|
|
|
<el-button link type="danger" icon="Delete" @click="handleDeleteContract(scope.row)"></el-button>
|
|
|
|
|
</el-tooltip>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
</el-table>
|
|
|
|
|
</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-row :gutter="20">
|
|
|
|
|
@ -24,9 +69,16 @@
|
|
|
|
|
</el-radio-group>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-form-item label="单合同标识" prop="singleContractFlag">
|
|
|
|
|
<el-radio-group v-model="form.singleContractFlag">
|
|
|
|
|
<el-radio v-for="dict in single_contract_flag" :key="dict.value" :value="dict.value">{{ dict.label }}</el-radio>
|
|
|
|
|
</el-radio-group>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-form-item label="项目编号" prop="projectCode">
|
|
|
|
|
<el-input v-model="form.projectCode" placeholder="请输入项目编号">
|
|
|
|
|
<el-input v-model="form.projectCode" placeholder="请输入项目编号或生成项目编号">
|
|
|
|
|
<template #append>
|
|
|
|
|
<el-button type="primary" @click="generateProjectCode" :disabled="isCodeGenerated">生成项目编号 </el-button>
|
|
|
|
|
</template>
|
|
|
|
|
@ -52,13 +104,13 @@
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-form-item label="备件标识" prop="spareFlag">
|
|
|
|
|
<el-radio-group v-model="form.spareFlag" disabled>
|
|
|
|
|
<el-radio v-for="dict in spare_flag" :key="dict.value" :value="dict.value">{{ dict.label }}</el-radio>
|
|
|
|
|
</el-radio-group>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<!-- <el-col :span="12">-->
|
|
|
|
|
<!-- <el-form-item label="备件标识" prop="spareFlag">-->
|
|
|
|
|
<!-- <el-radio-group v-model="form.spareFlag" disabled>-->
|
|
|
|
|
<!-- <el-radio v-for="dict in spare_flag" :key="dict.value" :value="dict.value">{{ dict.label }}</el-radio>-->
|
|
|
|
|
<!-- </el-radio-group>-->
|
|
|
|
|
<!-- </el-form-item>-->
|
|
|
|
|
<!-- </el-col>-->
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-form-item label="项目类型" prop="projectTypeId">
|
|
|
|
|
<el-cascader
|
|
|
|
|
@ -70,11 +122,11 @@
|
|
|
|
|
/>
|
|
|
|
|
</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="请选择部门">
|
|
|
|
|
@ -103,6 +155,13 @@
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-form-item label="合同跟进人" prop="contractUserId">
|
|
|
|
|
<el-select v-model="form.contractUserId" placeholder="请选择合同跟进人" clearable filterable>
|
|
|
|
|
<el-option v-for="user in userList" :key="user.userId" :label="user.nickName" :value="user.userId" />
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-col>
|
|
|
|
|
<el-col :span="12">
|
|
|
|
|
<el-form-item label="抄送人员" prop="peopleId">
|
|
|
|
|
<el-select v-model="form.peopleId" placeholder="请选择抄送人员" clearable filterable multiple>
|
|
|
|
|
@ -133,51 +192,6 @@
|
|
|
|
|
</el-form>
|
|
|
|
|
</el-card>
|
|
|
|
|
|
|
|
|
|
<!-- 项目关联合同 -->
|
|
|
|
|
<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">
|
|
|
|
|
<el-button type="primary" plain icon="Plus" @click="handleAddContract" size="small" :disabled="routeParams.type === 'view' || routeParams.type === 'approval'"
|
|
|
|
|
>新增关联
|
|
|
|
|
</el-button>
|
|
|
|
|
</el-col>
|
|
|
|
|
</el-row>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<el-table v-loading="contractLoading" border :data="projectContractsList">
|
|
|
|
|
<el-table-column type="index" label="序号" width="60" align="center" />
|
|
|
|
|
<el-table-column label="合同编号" align="center" prop="contractCode" min-width="120" />
|
|
|
|
|
<el-table-column label="合同名称" align="center" prop="contractName" min-width="180" />
|
|
|
|
|
<el-table-column label="合同总价" align="center" prop="totalPrice" min-width="120">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
{{ scope.row.totalPrice ? scope.row.totalPrice + ' 元' : '-' }}
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="业务方向" align="center" prop="businessDirection" min-width="120">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<dict-tag :options="business_direction" :value="scope.row.businessDirection" />
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="合同状态" align="center" prop="contractStatus" min-width="100">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<dict-tag :options="contract_status" :value="scope.row.contractStatus" />
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column label="备注" align="center" prop="remark" min-width="150" show-overflow-tooltip />
|
|
|
|
|
<el-table-column label="操作" align="center" width="120" fixed="right" v-if="routeParams.type !== 'view'">
|
|
|
|
|
<template #default="scope">
|
|
|
|
|
<el-tooltip content="删除" placement="top">
|
|
|
|
|
<el-button link type="danger" icon="Delete" @click="handleDeleteContract(scope.row)"></el-button>
|
|
|
|
|
</el-tooltip>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
</el-table>
|
|
|
|
|
</el-card>
|
|
|
|
|
|
|
|
|
|
<!-- 添加合同关联对话框 -->
|
|
|
|
|
<el-dialog title="选择关联合同" v-model="contractDialog.visible" width="900px" append-to-body>
|
|
|
|
|
<el-form :model="contractQueryParams" :inline="true" label-width="100px">
|
|
|
|
|
@ -278,8 +292,8 @@ const router = useRouter();
|
|
|
|
|
|
|
|
|
|
// 路由参数
|
|
|
|
|
const routeParams = ref<Record<string, any>>({});
|
|
|
|
|
const { business_direction, project_status, contract_flag, project_category, spare_flag, contract_status } = toRefs<any>(
|
|
|
|
|
proxy?.useDict('business_direction', 'project_status', 'contract_flag', 'project_category', 'spare_flag', 'contract_status')
|
|
|
|
|
const { business_direction, project_status, contract_flag, project_category, spare_flag, single_contract_flag, contract_status } = toRefs<any>(
|
|
|
|
|
proxy?.useDict('business_direction', 'project_status', 'contract_flag', 'project_category', 'spare_flag', 'single_contract_flag', 'contract_status')
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
const buttonLoading = ref(false);
|
|
|
|
|
@ -347,6 +361,7 @@ const initFormData: ProjectInfoFormEx = {
|
|
|
|
|
businessDirection: undefined,
|
|
|
|
|
projectCategory: undefined,
|
|
|
|
|
spareFlag: undefined,
|
|
|
|
|
singleContractFlag: '1',
|
|
|
|
|
projectTypeId: undefined,
|
|
|
|
|
paymentMethod: undefined,
|
|
|
|
|
deptId: undefined,
|
|
|
|
|
@ -359,6 +374,7 @@ const initFormData: ProjectInfoFormEx = {
|
|
|
|
|
flowStatus: undefined,
|
|
|
|
|
sortOrder: 0,
|
|
|
|
|
contractId: undefined,
|
|
|
|
|
contractUserId: undefined,
|
|
|
|
|
remark: undefined,
|
|
|
|
|
activeFlag: '1',
|
|
|
|
|
flowCode: undefined,
|
|
|
|
|
@ -593,6 +609,7 @@ const contractLoading = ref(false);
|
|
|
|
|
const projectContractsList = computed(() => {
|
|
|
|
|
return (form.value as any).projectContractsList || [];
|
|
|
|
|
});
|
|
|
|
|
const isSingleContract = computed(() => form.value.singleContractFlag === '1');
|
|
|
|
|
const contractDialog = reactive({ visible: false });
|
|
|
|
|
const contractTableRef = ref();
|
|
|
|
|
const contractSelectLoading = ref(false);
|
|
|
|
|
@ -627,6 +644,10 @@ const getProjectContractsList = async () => {
|
|
|
|
|
|
|
|
|
|
/** 打开添加合同关联对话框 */
|
|
|
|
|
const handleAddContract = () => {
|
|
|
|
|
if (isSingleContract.value && projectContractsList.value.length >= 1) {
|
|
|
|
|
proxy?.$modal.msgWarning('单合同项目仅允许关联一个合同。');
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
contractDialog.visible = true;
|
|
|
|
|
contractQueryParams.value.pageNum = 1;
|
|
|
|
|
getContractList();
|
|
|
|
|
@ -691,6 +712,11 @@ const submitContractRelation = () => {
|
|
|
|
|
(form.value as any).projectContractsList.push(newContract);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
if (isSingleContract.value && form.value.projectContractsList.length > 0) {
|
|
|
|
|
form.value.businessDirection = form.value.projectContractsList[0].businessDirection;
|
|
|
|
|
form.value.amount = form.value.projectContractsList[0].totalPrice;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
proxy?.$modal.msgSuccess('添加关联成功');
|
|
|
|
|
contractDialog.visible = false;
|
|
|
|
|
selectedContracts.value = [];
|
|
|
|
|
|