fix: 优化用户交接人选择逻辑

- 更新 UsersController 中的交接人选择逻辑,确保在选择交接人时进行有效性检查
- 修改前端 TeamManagement 组件,添加交接人选择提示信息
- 确保在提交数据时正确处理交接人 ID 的格式
This commit is contained in:
kuaifan 2025-09-24 19:06:50 +08:00
parent 068de0fa9f
commit c6bee25264
2 changed files with 37 additions and 14 deletions

View File

@ -1029,8 +1029,13 @@ class UsersController extends AbstractController
$upArray['identity'] = array_diff($userInfo->identity, ['disable']); $upArray['identity'] = array_diff($userInfo->identity, ['disable']);
$upArray['identity'][] = 'disable'; $upArray['identity'][] = 'disable';
$upArray['disable_at'] = Carbon::parse($data['disable_time']); $upArray['disable_at'] = Carbon::parse($data['disable_time']);
$transferUserid = is_array($data['transfer_userid']) ? $data['transfer_userid'][0] : $data['transfer_userid']; $transferUserid = Arr::get($data, 'transfer_userid');
$transferUser = User::find(intval($transferUserid)); if (is_array($transferUserid)) {
$transferUserid = $transferUserid[0] ?? null;
}
$transferUserid = intval($transferUserid);
if ($transferUserid > 0) {
$transferUser = User::find($transferUserid);
if (empty($transferUser)) { if (empty($transferUser)) {
return Base::retError('请选择正确的交接人'); return Base::retError('请选择正确的交接人');
} }
@ -1040,6 +1045,7 @@ class UsersController extends AbstractController
if ($transferUser->isDisable()) { if ($transferUser->isDisable()) {
return Base::retError('交接人已离职,请选择另一个交接人'); return Base::retError('交接人已离职,请选择另一个交接人');
} }
}
break; break;
case 'cleardisable': case 'cleardisable':
@ -1145,7 +1151,7 @@ class UsersController extends AbstractController
$joinDialog->pushMsg("groupJoin", null, $userids); $joinDialog->pushMsg("groupJoin", null, $userids);
} }
} }
} elseif ($type === 'setdisable') { } elseif ($type === 'setdisable' && $transferUser) {
$userTransfer = UserTransfer::createInstance([ $userTransfer = UserTransfer::createInstance([
'original_userid' => $userInfo->userid, 'original_userid' => $userInfo->userid,
'new_userid' => $transferUser->userid, 'new_userid' => $transferUser->userid,

View File

@ -344,6 +344,7 @@
</FormItem> </FormItem>
<FormItem :label="$L('交接人')"> <FormItem :label="$L('交接人')">
<UserSelect v-model="disableData.transfer_userid" :disabled-choice="[disableData.userid]" :multiple-max="1" :title="$L('选择交接人')"/> <UserSelect v-model="disableData.transfer_userid" :disabled-choice="[disableData.userid]" :multiple-max="1" :title="$L('选择交接人')"/>
<div class="form-tip">{{ $L('可选,留空则不执行迁移') }}</div>
<div class="form-tip">{{ $L(`${disableData.nickname} 负责的部门、项目、任务和文件将移交给交接人;同时退出所有群(如果是群主则转让给交接人)`) }}</div> <div class="form-tip">{{ $L(`${disableData.nickname} 负责的部门、项目、任务和文件将移交给交接人;同时退出所有群(如果是群主则转让给交接人)`) }}</div>
</FormItem> </FormItem>
</Form> </Form>
@ -787,7 +788,10 @@ export default {
disableShow: false, disableShow: false,
disableLoading: 0, disableLoading: 0,
disableData: {}, disableData: {
transfer_userid: [],
disable_time: ''
},
disableOptions: { disableOptions: {
shortcuts: [ shortcuts: [
{ {
@ -1154,6 +1158,8 @@ export default {
type: 'setdisable', type: 'setdisable',
userid: row.userid, userid: row.userid,
nickname: row.nickname, nickname: row.nickname,
transfer_userid: [],
disable_time: ''
}; };
this.disableShow = true; this.disableShow = true;
break; break;
@ -1200,11 +1206,12 @@ export default {
operationUser(data, tipErr) { operationUser(data, tipErr) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
let submitData = data;
if (data.type == 'checkin_macs') { if (data.type == 'checkin_macs') {
this.checkinMacEditLoading++; this.checkinMacEditLoading++;
} else if (data.type == 'checkin_face') { } else if (data.type == 'checkin_face') {
this.checkinFaceEditLoading++; this.checkinFaceEditLoading++;
data = { submitData = {
type: data.type, type: data.type,
userid: data.userid, userid: data.userid,
nickname: data.nickname, nickname: data.nickname,
@ -1214,12 +1221,22 @@ export default {
this.departmentEditLoading++; this.departmentEditLoading++;
} else if (data.type == 'setdisable') { } else if (data.type == 'setdisable') {
this.disableLoading++; this.disableLoading++;
submitData = Object.assign({}, data);
if (Array.isArray(submitData.transfer_userid)) {
if (submitData.transfer_userid.length > 0) {
submitData.transfer_userid = submitData.transfer_userid[0];
} else {
delete submitData.transfer_userid;
}
} else if (!submitData.transfer_userid) {
delete submitData.transfer_userid;
}
} else { } else {
this.loadIng++; this.loadIng++;
} }
this.$store.dispatch("call", { this.$store.dispatch("call", {
url: 'users/operation', url: 'users/operation',
data, data: submitData,
}).then(({msg}) => { }).then(({msg}) => {
$A.messageSuccess(msg); $A.messageSuccess(msg);
this.getLists(); this.getLists();