1.0.68 项目添加单合同标识、合同跟进人

dev
yinq 7 days ago
parent 78ba7b5feb
commit 3a5cc750a9

@ -34,6 +34,11 @@ export interface ProjectInfoVO {
*/
spareFlag: string;
/**
* 1 0
*/
singleContractFlag: string;
/**
* ID
*/
@ -94,6 +99,11 @@ export interface ProjectInfoVO {
*/
contractId: string | number;
/**
*
*/
contractUserId?: string | number;
/**
*
*/
@ -164,6 +174,11 @@ export interface ProjectInfoForm extends BaseEntity {
*/
spareFlag?: string;
/**
* 1 0
*/
singleContractFlag?: string;
/**
* ID
*/
@ -224,6 +239,11 @@ export interface ProjectInfoForm extends BaseEntity {
*/
contractId?: string | number;
/**
*
*/
contractUserId?: string | number;
/**
*
*/
@ -271,6 +291,11 @@ export interface ProjectInfoForm extends BaseEntity {
*
*/
contractName?: string;
/**
*
*/
contractUserName?: string;
}
export interface ProjectInfoQuery extends PageQuery {
@ -304,6 +329,11 @@ export interface ProjectInfoQuery extends PageQuery {
*/
spareFlag?: string;
/**
* 1 0
*/
singleContractFlag?: string;
/**
* ID
*/
@ -364,6 +394,11 @@ export interface ProjectInfoQuery extends PageQuery {
*/
contractId?: string | number;
/**
*
*/
contractUserId?: string | number;
/**
* 1 0
*/

@ -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 = [];

@ -75,11 +75,11 @@
</template>
</el-dropdown>
</el-col>
<el-col :span="1.5">
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['oa/erp:projectInfo:edit']"
>修改
</el-button>
</el-col>
<!-- <el-col :span="1.5">-->
<!-- <el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['oa/erp:projectInfo:edit']"-->
<!-- >修改-->
<!-- </el-button>-->
<!-- </el-col>-->
<el-col :span="1.5">
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['oa/erp:projectInfo:remove']"
>删除

Loading…
Cancel
Save