diff --git a/app/Http/Controllers/Api/UsersController.php b/app/Http/Controllers/Api/UsersController.php index 5319821a4..b4e9ef37e 100755 --- a/app/Http/Controllers/Api/UsersController.php +++ b/app/Http/Controllers/Api/UsersController.php @@ -766,30 +766,6 @@ class UsersController extends AbstractController ]); $userTransfer->save(); $userTransfer->start(); - // 离职移出群组 - WebSocketDialog::select(['web_socket_dialogs.*']) - ->join('web_socket_dialog_users as u', 'web_socket_dialogs.id', '=', 'u.dialog_id') - ->where('web_socket_dialogs.type', 'group') - ->where('u.userid', $userInfo->userid) - ->orderByDesc('web_socket_dialogs.id') - ->chunk(100, function($list) use ($transferUser, $userInfo) { - /** @var WebSocketDialog $dialog */ - foreach ($list as $dialog) { - // 离职员工退出群 - $dialog->exitGroup($userInfo->userid, 'remove', false, false); - if ($dialog->owner_id === $userInfo->userid) { - // 如果是群主则把交接人设为群主 - $dialog->owner_id = $transferUser->userid; - if ($dialog->save()) { - $dialog->joinGroup($transferUser->userid, 0); - $dialog->pushMsg("groupUpdate", [ - 'id' => $dialog->id, - 'owner_id' => $dialog->owner_id, - ]); - } - } - } - }); } elseif ($type === 'cleardisable') { // 取消离职重新加入全员群组 if (Base::settingFind('system', 'all_group_autoin', 'yes') === 'yes') { diff --git a/app/Models/UserDepartment.php b/app/Models/UserDepartment.php index 4fbdcbe54..1baec3e67 100644 --- a/app/Models/UserDepartment.php +++ b/app/Models/UserDepartment.php @@ -132,4 +132,22 @@ class UserDepartment extends AbstractModel // $this->delete(); } + + /** + * 移交部门身份 + * @param $originalUserid + * @param $newUserid + * @return void + */ + public static function transfer($originalUserid, $newUserid) + { + self::whereOwnerUserid($originalUserid)->chunkById(100, function ($list) use ($originalUserid, $newUserid) { + /** @var self $item */ + foreach ($list as $item) { + $item->saveDepartment([ + 'owner_userid' => $newUserid, + ]); + } + }); + } } diff --git a/app/Models/UserTransfer.php b/app/Models/UserTransfer.php index 79e22bda7..7dd11d222 100644 --- a/app/Models/UserTransfer.php +++ b/app/Models/UserTransfer.php @@ -35,11 +35,37 @@ class UserTransfer extends AbstractModel */ public function start() { + // 移交部门 + UserDepartment::transfer($this->original_userid, $this->new_userid); // 移交项目身份 ProjectUser::transfer($this->original_userid, $this->new_userid); // 移交任务身份 ProjectTaskUser::transfer($this->original_userid, $this->new_userid); // 移交文件 File::transfer($this->original_userid, $this->new_userid); + // 离职移出群组 + WebSocketDialog::select(['web_socket_dialogs.*']) + ->join('web_socket_dialog_users as u', 'web_socket_dialogs.id', '=', 'u.dialog_id') + ->where('web_socket_dialogs.type', 'group') + ->where('u.userid', $this->original_userid) + ->orderByDesc('web_socket_dialogs.id') + ->chunk(100, function($list) { + /** @var WebSocketDialog $dialog */ + foreach ($list as $dialog) { + // 离职员工退出群 + $dialog->exitGroup($this->original_userid, 'remove', false, false); + if ($dialog->owner_id === $this->original_userid) { + // 如果是群主则把交接人设为群主 + $dialog->owner_id = $this->new_userid; + if ($dialog->save()) { + $dialog->joinGroup($this->new_userid, 0); + $dialog->pushMsg("groupUpdate", [ + 'id' => $dialog->id, + 'owner_id' => $dialog->owner_id, + ]); + } + } + } + }); } } diff --git a/resources/assets/js/pages/manage/components/TeamManagement.vue b/resources/assets/js/pages/manage/components/TeamManagement.vue index 116c6f849..f7e90e816 100644 --- a/resources/assets/js/pages/manage/components/TeamManagement.vue +++ b/resources/assets/js/pages/manage/components/TeamManagement.vue @@ -221,16 +221,18 @@ {{$L(`正在进行帐号【ID:${disableData.userid},${disableData.nickname}】离职操作。`)}} -
{{ $L(`${disableData.nickname} 负责的项目、任务和文件将移交给交接人;同时退出所有群(如果是群主则转让给交接人)`) }}
+
{{ $L(`${disableData.nickname} 负责的部门、项目、任务和文件将移交给交接人;同时退出所有群(如果是群主则转让给交接人)`) }}
@@ -279,6 +281,55 @@ export default { disableShow: false, disableLoading: 0, disableData: {}, + disableOptions: { + shortcuts: [ + { + text: this.$L('12:00'), + value () { + return $A.Date($A.formatDate("Y-m-d 12:00:00")); + }, + onClick: (picker) => { + picker.handlePickSuccess(); + } + }, + { + text: this.$L('17:00'), + value () { + return $A.Date($A.formatDate("Y-m-d 17:00:00")); + }, + onClick: (picker) => { + picker.handlePickSuccess(); + } + }, + { + text: this.$L('18:00'), + value () { + return $A.Date($A.formatDate("Y-m-d 18:00:00")); + }, + onClick: (picker) => { + picker.handlePickSuccess(); + } + }, + { + text: this.$L('19:00'), + value () { + return $A.Date($A.formatDate("Y-m-d 19:00:00")); + }, + onClick: (picker) => { + picker.handlePickSuccess(); + } + }, + { + text: this.$L('现在'), + value () { + return new Date(); + }, + onClick: (picker) => { + picker.handlePickSuccess(); + } + }, + ] + }, departmentShow: false, departmentLoading: 0,