新增团队多选人员功能

This commit is contained in:
LHD_HY 2026-01-09 14:40:12 +08:00
parent 7ecc73131e
commit 4d244eeff9
4 changed files with 94 additions and 9 deletions

View File

@ -12,7 +12,7 @@ export async function getClassifyMarkSelApi(params) {
// 部门下拉树 // 部门下拉树
export async function getDeptSelectApi(params) { export async function getDeptSelectApi(params) {
return await request({ return await request({
url: '/smartPlatform/transferApply/getDeptSelect', url: '/smartPlatform/system/dept/list',
method: 'get', method: 'get',
params, params,
}) })

View File

@ -9,6 +9,24 @@
maxlength="32"></el-input> maxlength="32"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="团队成员" prop="memberIds">
<el-select
v-model="form.memberIds"
multiple
clearable
filterable
placeholder="请选择团队成员"
class="form-item"
v-loading="false">
<el-option
v-for="person in personList"
:key="person.userId"
:label="person.userName"
:value="person.userId">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="备注" prop="teamRemark"> <el-form-item label="备注" prop="teamRemark">
<el-input type="textarea" :autosize="{ minRows: 2, maxRows: 4 }" class="form-item" <el-input type="textarea" :autosize="{ minRows: 2, maxRows: 4 }" class="form-item"
v-model.trim="form.teamRemark" clearable show-word-limit placeholder="请输入备注" v-model.trim="form.teamRemark" clearable show-word-limit placeholder="请输入备注"
@ -26,6 +44,7 @@
<script> <script>
import _ from 'lodash' import _ from 'lodash'
import { addTeamAPI, editTeamAPI } from '@/api/system/team' import { addTeamAPI, editTeamAPI } from '@/api/system/team'
import { listUser } from '@/api/system/user'
// //
export default { export default {
name: "TeamForm", name: "TeamForm",
@ -38,12 +57,18 @@ export default {
teamId: null, teamId: null,
teamName: '', teamName: '',
teamRemark: '', teamRemark: '',
memberIds: [],
}, },
rules: { rules: {
teamName: [ teamName: [
{ required: true, message: '团队名称不能为空', trigger: 'blur' } { required: true, message: '团队名称不能为空', trigger: 'blur' }
], ],
memberIds: [
{ required: true, message: '请选择至少一名团队成员', trigger: 'change' }
],
}, },
personList: [], //
personLoading: false //
}; };
}, },
watch: { watch: {
@ -56,7 +81,36 @@ export default {
immediate: true, immediate: true,
}, },
}, },
created() {
this.initPersonList();
},
methods: { methods: {
async initPersonList() {
try {
this.personLoading = true;
const res = await listUser({});
if (res.code === 200) {
const userList = res.rows || [];
this.personList = userList.map(item => {
return {
userId: item.userId, // ID
userName: item.userName, //
};
});
} else {
this.$modal.msgError('获取人员列表失败:' + res.msg);
}
} catch (error) {
this.$modal.msgError('获取人员列表异常:' + error.message);
console.error('获取人员列表失败:', error);
} finally {
this.personLoading = false;
}
},
/** 初始化表单数据 */ /** 初始化表单数据 */
async initFormData() { async initFormData() {
if (!this.rowData) return; if (!this.rowData) return;
@ -65,6 +119,7 @@ export default {
teamId: this.rowData.teamId, teamId: this.rowData.teamId,
teamName: this.rowData.teamName || '', teamName: this.rowData.teamName || '',
teamRemark: this.rowData.teamRemark || '', teamRemark: this.rowData.teamRemark || '',
memberIds: this.rowData.memberIds || [], // ID
}; };
}, },
/*关闭弹窗 */ /*关闭弹窗 */
@ -209,6 +264,10 @@ export default {
width: 100%; width: 100%;
} }
::v-deep .el-select__tags {
flex-wrap: wrap;
}
.select-style { .select-style {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;

View File

@ -12,7 +12,13 @@
class="el-icon-plus"></i> 新增团队</el-button> class="el-icon-plus"></i> 新增团队</el-button>
</template> </template>
<template slot="teamNum" slot-scope="{ data }"> <template slot="teamNum" slot-scope="{ data }">
<span>{{ data.teamNum }}</span> <span
class="version-link"
@click="handleUserListClick(data)"
v-if="data.teamNum"
>
{{ data.teamNum }}
</span>
</template> </template>
<template slot="handle" slot-scope="{ data }"> <template slot="handle" slot-scope="{ data }">
@ -60,6 +66,15 @@ export default {
created() { }, created() { },
methods: { methods: {
handleUserListClick(data) {
this.$router.push({
name: 'UserList',
query: {
// templateId: encryptWithSM4(data.templateId.toString()),
},
title: `人员信息`
});
},
/** 新增按钮操作 */ /** 新增按钮操作 */
handleAdd() { handleAdd() {
@ -153,4 +168,15 @@ export default {
margin-right: 0; margin-right: 0;
} }
} }
.version-link {
color: #1F72EA;
cursor: pointer;
transition: color 0.3s ease;
&:hover {
color: #4A8BFF;
}
}
</style> </style>