提交
This commit is contained in:
parent
02c26790d8
commit
a1123251ae
@ -24,6 +24,21 @@ export interface ContractInfoVO {
|
|||||||
*/
|
*/
|
||||||
remark: string;
|
remark: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 重要性
|
||||||
|
*/
|
||||||
|
manageContractLevel?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 合同负责人
|
||||||
|
*/
|
||||||
|
contractManagerId?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 合同负责人
|
||||||
|
*/
|
||||||
|
contractManager?: string;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ContractInfoForm extends BaseEntity {
|
export interface ContractInfoForm extends BaseEntity {
|
||||||
@ -52,6 +67,21 @@ export interface ContractInfoForm extends BaseEntity {
|
|||||||
*/
|
*/
|
||||||
remark?: string;
|
remark?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 重要性
|
||||||
|
*/
|
||||||
|
manageContractLevel?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 合同负责人id
|
||||||
|
*/
|
||||||
|
contractManagerId?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 合同负责人
|
||||||
|
*/
|
||||||
|
contractManager?: string;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ContractInfoQuery extends PageQuery {
|
export interface ContractInfoQuery extends PageQuery {
|
||||||
|
@ -10,7 +10,7 @@ import { CustomerInfoVO, CustomerInfoForm, CustomerInfoQuery } from '@/api/syste
|
|||||||
|
|
||||||
export const listCustomerInfo = (query?: CustomerInfoQuery): AxiosPromise<CustomerInfoVO[]> => {
|
export const listCustomerInfo = (query?: CustomerInfoQuery): AxiosPromise<CustomerInfoVO[]> => {
|
||||||
return request({
|
return request({
|
||||||
url: '/system/customerInfo/list',
|
url: '/manage/customerInfo/list',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: query
|
params: query
|
||||||
});
|
});
|
||||||
@ -22,7 +22,7 @@ export const listCustomerInfo = (query?: CustomerInfoQuery): AxiosPromise<Custom
|
|||||||
*/
|
*/
|
||||||
export const getCustomerInfo = (id: string | number): AxiosPromise<CustomerInfoVO> => {
|
export const getCustomerInfo = (id: string | number): AxiosPromise<CustomerInfoVO> => {
|
||||||
return request({
|
return request({
|
||||||
url: '/system/customerInfo/' + id,
|
url: '/manage/customerInfo/' + id,
|
||||||
method: 'get'
|
method: 'get'
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
@ -33,7 +33,7 @@ export const getCustomerInfo = (id: string | number): AxiosPromise<CustomerInfoV
|
|||||||
*/
|
*/
|
||||||
export const addCustomerInfo = (data: CustomerInfoForm) => {
|
export const addCustomerInfo = (data: CustomerInfoForm) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/system/customerInfo',
|
url: '/manage/customerInfo',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: data
|
data: data
|
||||||
});
|
});
|
||||||
@ -45,7 +45,7 @@ export const addCustomerInfo = (data: CustomerInfoForm) => {
|
|||||||
*/
|
*/
|
||||||
export const updateCustomerInfo = (data: CustomerInfoForm) => {
|
export const updateCustomerInfo = (data: CustomerInfoForm) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/system/customerInfo',
|
url: '/manage/customerInfo',
|
||||||
method: 'put',
|
method: 'put',
|
||||||
data: data
|
data: data
|
||||||
});
|
});
|
||||||
@ -57,7 +57,7 @@ export const updateCustomerInfo = (data: CustomerInfoForm) => {
|
|||||||
*/
|
*/
|
||||||
export const delCustomerInfo = (id: string | number | Array<string | number>) => {
|
export const delCustomerInfo = (id: string | number | Array<string | number>) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/system/customerInfo/' + id,
|
url: '/manage/customerInfo/' + id,
|
||||||
method: 'delete'
|
method: 'delete'
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
@ -43,8 +43,12 @@
|
|||||||
<!-- <el-table-column label="" align="center" prop="id" v-if="true" />-->
|
<!-- <el-table-column label="" align="center" prop="id" v-if="true" />-->
|
||||||
<el-table-column label="合同编码" align="center" prop="contractCode" fixed="left"/>
|
<el-table-column label="合同编码" align="center" prop="contractCode" fixed="left"/>
|
||||||
<el-table-column label="合同名称" align="center" prop="contractName" width="300" fixed="left"/>
|
<el-table-column label="合同名称" align="center" prop="contractName" width="300" fixed="left"/>
|
||||||
<el-table-column label="合同负责人" align="center" prop="contractCode" />
|
<el-table-column label="合同负责人" align="center" prop="contractManager" />
|
||||||
<el-table-column label="重要性" align="center" prop="contractLevel" />
|
<el-table-column label="重要性" align="center" prop="contractLevel" >
|
||||||
|
<template #default="scope">
|
||||||
|
<dict-tag :options="manage_contract_level" :value="scope.row.contractLevel" />
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column label="委托单位" align="center" prop="contractCode" />
|
<el-table-column label="委托单位" align="center" prop="contractCode" />
|
||||||
<el-table-column label="签约日期" align="center" prop="contractCode" />
|
<el-table-column label="签约日期" align="center" prop="contractCode" />
|
||||||
<el-table-column label="合同类型" align="center" prop="contractType" >
|
<el-table-column label="合同类型" align="center" prop="contractType" >
|
||||||
@ -77,7 +81,7 @@
|
|||||||
</el-card>
|
</el-card>
|
||||||
<!-- 添加或修改合同信息对话框 -->
|
<!-- 添加或修改合同信息对话框 -->
|
||||||
<el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
|
<el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
|
||||||
<el-form ref="contractInfoFormRef" :model="form" :rules="rules" label-width="80px">
|
<el-form ref="contractInfoFormRef" :model="form" :rules="rules" label-width="110px">
|
||||||
<el-form-item label="合同编码" prop="contractCode">
|
<el-form-item label="合同编码" prop="contractCode">
|
||||||
<el-input v-model="form.contractCode" placeholder="请输入合同编码" />
|
<el-input v-model="form.contractCode" placeholder="请输入合同编码" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -89,6 +93,23 @@
|
|||||||
<el-option v-for="dict in manage_contract_type" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
|
<el-option v-for="dict in manage_contract_type" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="合同重要性" prop="manageContractLevel">
|
||||||
|
<el-select v-model="form.manageContractLevel" placeholder="请选择">
|
||||||
|
<el-option v-for="dict in manage_contract_level" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="合同重要性" prop="manageContractLevel">
|
||||||
|
<el-select v-model="form.manageContractLevel" placeholder="请选择">
|
||||||
|
<el-option v-for="dict in manage_contract_level" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="合同负责人" prop="contractManagerId">
|
||||||
|
<el-button type="primary" icon="Plus" circle @click="openUserSelect" />
|
||||||
|
<el-tag v-for="user in selectUserList" :key="user.userId" closable style="margin: 2px"
|
||||||
|
@close="handleCloseTag(user)">
|
||||||
|
{{ user.employeeName }}
|
||||||
|
</el-tag>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="备注" prop="remark">
|
<el-form-item label="备注" prop="remark">
|
||||||
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
|
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -99,6 +120,8 @@
|
|||||||
<el-button @click="cancel">取 消</el-button>
|
<el-button @click="cancel">取 消</el-button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
<UserSelect ref="userSelectRef" :multiple="false" :data="selectUserIds" @confirm-call-back="userSelectCallBack">
|
||||||
|
</UserSelect>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@ -106,7 +129,8 @@
|
|||||||
<script setup name="ContractInfo" lang="ts">
|
<script setup name="ContractInfo" lang="ts">
|
||||||
import { listContractInfo, getContractInfo, delContractInfo, addContractInfo, updateContractInfo } from '@/api/manage/contract';
|
import { listContractInfo, getContractInfo, delContractInfo, addContractInfo, updateContractInfo } from '@/api/manage/contract';
|
||||||
import { ContractInfoVO, ContractInfoQuery, ContractInfoForm } from '@/api/manage/contract/types';
|
import { ContractInfoVO, ContractInfoQuery, ContractInfoForm } from '@/api/manage/contract/types';
|
||||||
|
import UserSelect from '@/components/UserSelect/index.vue';
|
||||||
|
import { UserVO } from '@/api/system/user/types';
|
||||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||||
|
|
||||||
const contractInfoList = ref<ContractInfoVO[]>([]);
|
const contractInfoList = ref<ContractInfoVO[]>([]);
|
||||||
@ -120,7 +144,12 @@ const total = ref(0);
|
|||||||
|
|
||||||
const queryFormRef = ref<ElFormInstance>();
|
const queryFormRef = ref<ElFormInstance>();
|
||||||
const contractInfoFormRef = ref<ElFormInstance>();
|
const contractInfoFormRef = ref<ElFormInstance>();
|
||||||
|
const userFormRef = ref<ElFormInstance>();
|
||||||
|
//user
|
||||||
|
const selectUserList = ref<UserVO[]>([]);
|
||||||
|
//userid
|
||||||
|
const selectUserIds = ref<string>(undefined);
|
||||||
|
const userSelectRef = ref<InstanceType<typeof UserSelect>>();
|
||||||
const dialog = reactive<DialogOption>({
|
const dialog = reactive<DialogOption>({
|
||||||
visible: false,
|
visible: false,
|
||||||
title: ''
|
title: ''
|
||||||
@ -152,7 +181,7 @@ const data = reactive<PageData<ContractInfoForm, ContractInfoQuery>>({
|
|||||||
});
|
});
|
||||||
|
|
||||||
const { queryParams, form, rules } = toRefs(data);
|
const { queryParams, form, rules } = toRefs(data);
|
||||||
const { manage_contract_type } = toRefs<any>(proxy?.useDict('manage_contract_type'));
|
const { manage_contract_type,manage_contract_level } = toRefs<any>(proxy?.useDict('manage_contract_type','manage_contract_level'));
|
||||||
|
|
||||||
/** 查询合同信息列表 */
|
/** 查询合同信息列表 */
|
||||||
const getList = async () => {
|
const getList = async () => {
|
||||||
@ -209,6 +238,32 @@ const handleUpdate = async (row?: ContractInfoVO) => {
|
|||||||
Object.assign(form.value, res.data);
|
Object.assign(form.value, res.data);
|
||||||
dialog.visible = true;
|
dialog.visible = true;
|
||||||
dialog.title = "修改合同信息";
|
dialog.title = "修改合同信息";
|
||||||
|
console.log(row)
|
||||||
|
const newUser: UserVO = {
|
||||||
|
userId: form.value.contractManagerId,
|
||||||
|
employeeName: form.value.contractManager,
|
||||||
|
tenantId: undefined,
|
||||||
|
deptId: undefined,
|
||||||
|
userName: undefined,
|
||||||
|
nickName: undefined,
|
||||||
|
userType: undefined,
|
||||||
|
email: undefined,
|
||||||
|
phonenumber: undefined,
|
||||||
|
sex: undefined,
|
||||||
|
avatar: undefined,
|
||||||
|
status: undefined,
|
||||||
|
delFlag: undefined,
|
||||||
|
loginIp: undefined,
|
||||||
|
loginDate: undefined,
|
||||||
|
remark: undefined,
|
||||||
|
deptName: undefined,
|
||||||
|
roles: undefined,
|
||||||
|
roleIds: undefined,
|
||||||
|
postIds: undefined,
|
||||||
|
roleId: undefined,
|
||||||
|
admin: undefined
|
||||||
|
};
|
||||||
|
selectUserList.value[0] = newUser;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 提交按钮 */
|
/** 提交按钮 */
|
||||||
@ -244,6 +299,46 @@ const handleExport = () => {
|
|||||||
}, `contractInfo_${new Date().getTime()}.xlsx`)
|
}, `contractInfo_${new Date().getTime()}.xlsx`)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//打开人员
|
||||||
|
const openUserSelect = () => {
|
||||||
|
if (userSelectRef.value) {
|
||||||
|
userSelectRef.value.open();
|
||||||
|
// 确保 UserSelect 的 data 是数组格式(即使单选也传数组)
|
||||||
|
userSelectRef.value.$el.querySelector('input')?.focus(); // 可选:自动聚焦输入框
|
||||||
|
console.log('selectUserList')
|
||||||
|
console.log(selectUserList)
|
||||||
|
if (selectUserList.value.length !== 0) {
|
||||||
|
console.log('selectUserList不为空')
|
||||||
|
selectUserIds.value = selectUserList.value.map((item) => item.userId).join(',');
|
||||||
|
}else{
|
||||||
|
selectUserIds.value = undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
};
|
||||||
|
//确认人员
|
||||||
|
const userSelectCallBack = (data: UserVO[]) => {
|
||||||
|
if (data && data.length > 0) {
|
||||||
|
selectUserList.value = data;
|
||||||
|
selectUserIds.value = data[0].userId.toString();
|
||||||
|
// 单选模式下直接取第一个用户的ID
|
||||||
|
form.value.contractManagerId = selectUserIds.value; // 同步到表单(关键!)
|
||||||
|
} else {
|
||||||
|
selectUserList.value = [];
|
||||||
|
selectUserIds.value = '';
|
||||||
|
form.value.contractManagerId = ''; // 清空表单
|
||||||
|
}
|
||||||
|
};
|
||||||
|
//删除人员
|
||||||
|
const handleCloseTag = (user: UserVO) => {
|
||||||
|
const userId = user.userId;
|
||||||
|
// 使用split删除用户
|
||||||
|
const index = selectUserList.value.findIndex((item) => item.userId === userId);
|
||||||
|
selectUserList.value.splice(index, 1);
|
||||||
|
selectUserIds.value = selectUserList.value.map((item) => item.userId).join(',');
|
||||||
|
};
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getList();
|
getList();
|
||||||
});
|
});
|
||||||
|
@ -40,18 +40,19 @@
|
|||||||
|
|
||||||
<el-table v-loading="loading" :data="customerInfoList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" :data="customerInfoList" @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column type="selection" width="55" align="center" />
|
||||||
<el-table-column label="" align="center" prop="id" v-if="true" />
|
<!-- <el-table-column label="" align="center" prop="id" v-if="true" />-->
|
||||||
|
<el-table-column label="客户编码" align="center" prop="customerCode" />
|
||||||
<el-table-column label="客户名称" align="center" prop="customerName" />
|
<el-table-column label="客户名称" align="center" prop="customerName" />
|
||||||
<el-table-column label="客户类型" align="center" prop="customerType" />
|
<el-table-column label="客户类型" align="center" prop="customerType" />
|
||||||
<el-table-column label="客户编码" align="center" prop="customerCode" />
|
|
||||||
<el-table-column label="备注" align="center" prop="remark" />
|
<el-table-column label="备注" align="center" prop="remark" />
|
||||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-tooltip content="修改" placement="top">
|
<el-tooltip content="修改" placement="top">
|
||||||
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['system:customerInfo:edit']"></el-button>
|
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['manage:customerInfo:edit']"></el-button>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
<el-tooltip content="删除" placement="top">
|
<el-tooltip content="删除" placement="top">
|
||||||
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['system:customerInfo:remove']"></el-button>
|
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['manage:customerInfo:remove']"></el-button>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user