mirror of
https://github.com/kuaifan/dootask.git
synced 2026-03-17 03:03:41 +00:00
no message
This commit is contained in:
parent
7f79795c55
commit
04d121367a
@ -146,7 +146,7 @@ class SystemController extends AbstractController
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @api {get} api/system/demo 03. 获取演示账号
|
* @api {get} api/system/demo 03. 获取演示帐号
|
||||||
*
|
*
|
||||||
* @apiVersion 1.0.0
|
* @apiVersion 1.0.0
|
||||||
* @apiGroup system
|
* @apiGroup system
|
||||||
|
|||||||
@ -3,9 +3,6 @@
|
|||||||
namespace App\Http\Controllers\Api;
|
namespace App\Http\Controllers\Api;
|
||||||
|
|
||||||
use App\Models\AbstractModel;
|
use App\Models\AbstractModel;
|
||||||
use App\Models\File;
|
|
||||||
use App\Models\ProjectTaskUser;
|
|
||||||
use App\Models\ProjectUser;
|
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
use App\Models\UserEmailVerification;
|
use App\Models\UserEmailVerification;
|
||||||
use App\Models\UserTransfer;
|
use App\Models\UserTransfer;
|
||||||
@ -84,10 +81,10 @@ class UsersController extends AbstractController
|
|||||||
};
|
};
|
||||||
$user = User::whereEmail($email)->first();
|
$user = User::whereEmail($email)->first();
|
||||||
if (empty($user)) {
|
if (empty($user)) {
|
||||||
return $retError('账号或密码错误');
|
return $retError('帐号或密码错误');
|
||||||
}
|
}
|
||||||
if ($user->password != Base::md52($password, $user->encrypt)) {
|
if ($user->password != Base::md52($password, $user->encrypt)) {
|
||||||
return $retError('账号或密码错误');
|
return $retError('帐号或密码错误');
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
if (in_array('disable', $user->identity)) {
|
if (in_array('disable', $user->identity)) {
|
||||||
@ -436,7 +433,15 @@ class UsersController extends AbstractController
|
|||||||
* - keys.nickname 昵称
|
* - keys.nickname 昵称
|
||||||
* - keys.profession 职位
|
* - keys.profession 职位
|
||||||
* - keys.identity 身份(如:admin、noadmin)
|
* - keys.identity 身份(如:admin、noadmin)
|
||||||
* - keys.email_verity 邮箱是否认证(如:yes、no)
|
* - keys.disable 是否离职
|
||||||
|
* - yes: 仅离职
|
||||||
|
* - all: 全部
|
||||||
|
* - 其他值: 仅在职(默认)
|
||||||
|
* - keys.email_verity 邮箱是否认证
|
||||||
|
* - yes: 已认证
|
||||||
|
* - no: 未认证
|
||||||
|
* - 其他值: 全部(默认)
|
||||||
|
*
|
||||||
* @apiParam {Number} [page] 当前页,默认:1
|
* @apiParam {Number} [page] 当前页,默认:1
|
||||||
* @apiParam {Number} [pagesize] 每页显示数量,默认:20,最大:50
|
* @apiParam {Number} [pagesize] 每页显示数量,默认:20,最大:50
|
||||||
*
|
*
|
||||||
@ -480,11 +485,18 @@ class UsersController extends AbstractController
|
|||||||
$builder->where("identity", "like", "%,{$keys['identity']},%");
|
$builder->where("identity", "like", "%,{$keys['identity']},%");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if ($keys['disable'] === 'yes') {
|
||||||
|
$builder->whereNotNull('disable_at');
|
||||||
|
} elseif ($keys['disable'] !== 'all') {
|
||||||
|
$builder->whereNull('disable_at');
|
||||||
|
}
|
||||||
if ($keys['email_verity'] === 'yes') {
|
if ($keys['email_verity'] === 'yes') {
|
||||||
$builder->whereEmailVerity(1);
|
$builder->whereEmailVerity(1);
|
||||||
} elseif ($keys['email_verity'] === 'no') {
|
} elseif ($keys['email_verity'] === 'no') {
|
||||||
$builder->whereEmailVerity(0);
|
$builder->whereEmailVerity(0);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
$builder->whereNull('disable_at');
|
||||||
}
|
}
|
||||||
$list = $builder->orderByDesc('userid')->paginate(Base::getPaginate(50, 20));
|
$list = $builder->orderByDesc('userid')->paginate(Base::getPaginate(50, 20));
|
||||||
//
|
//
|
||||||
@ -546,7 +558,8 @@ 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']);
|
||||||
$transferUser = User::find(intval($data['transfer_userid']));
|
$transferUserid = is_array($data['transfer_userid']) ? $data['transfer_userid'][0] : $data['transfer_userid'];
|
||||||
|
$transferUser = User::find(intval($transferUserid));
|
||||||
if (empty($transferUser)) {
|
if (empty($transferUser)) {
|
||||||
return Base::retError('请选择正确的交接人');
|
return Base::retError('请选择正确的交接人');
|
||||||
}
|
}
|
||||||
|
|||||||
@ -414,6 +414,10 @@ class File extends AbstractModel
|
|||||||
*/
|
*/
|
||||||
public static function transfer($originalUserid, $newUserid)
|
public static function transfer($originalUserid, $newUserid)
|
||||||
{
|
{
|
||||||
|
if (!self::whereUserid($originalUserid)->exists()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// 创建一个文件夹存放移交的文件
|
// 创建一个文件夹存放移交的文件
|
||||||
$name = User::userid2nickname($originalUserid) ?: ('ID:' . $originalUserid);
|
$name = User::userid2nickname($originalUserid) ?: ('ID:' . $originalUserid);
|
||||||
$file = File::createInstance([
|
$file = File::createInstance([
|
||||||
|
|||||||
@ -200,7 +200,7 @@ class User extends AbstractModel
|
|||||||
$user = self::whereUserid(User::email2userid($email))->first();
|
$user = self::whereUserid(User::email2userid($email))->first();
|
||||||
if ($isRegVerify && $user->email_verity === 0) {
|
if ($isRegVerify && $user->email_verity === 0) {
|
||||||
UserEmailVerification::userEmailSend($user);
|
UserEmailVerification::userEmailSend($user);
|
||||||
throw new ApiException('您的账号已注册过,请验证邮箱', ['code' => 'email']);
|
throw new ApiException('您的帐号已注册过,请验证邮箱', ['code' => 'email']);
|
||||||
}
|
}
|
||||||
throw new ApiException('邮箱地址已存在');
|
throw new ApiException('邮箱地址已存在');
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1632,7 +1632,7 @@ class Base
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户名、邮箱、手机账号、银行卡号中间字符串以*隐藏
|
* 用户名、邮箱、手机帐号、银行卡号中间字符串以*隐藏
|
||||||
* @param $str
|
* @param $str
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -37,7 +37,7 @@
|
|||||||
</DropdownMenu>
|
</DropdownMenu>
|
||||||
</Dropdown>
|
</Dropdown>
|
||||||
</div>
|
</div>
|
||||||
<div class="header-right-two" @click="register">{{ $L("注册账号") }}</div>
|
<div class="header-right-two" @click="register">{{ $L("注册帐号") }}</div>
|
||||||
<div class="header-right-three no-dark-mode" @click="login">{{ $L("登录") }}</div>
|
<div class="header-right-three no-dark-mode" @click="login">{{ $L("登录") }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="header-nav-box header-nav-boxs" v-else>
|
<div class="header-nav-box header-nav-boxs" v-else>
|
||||||
@ -47,7 +47,7 @@
|
|||||||
</a>
|
</a>
|
||||||
<DropdownMenu slot="list">
|
<DropdownMenu slot="list">
|
||||||
<DropdownItem @click.native="login">{{ $L("登录") }}</DropdownItem>
|
<DropdownItem @click.native="login">{{ $L("登录") }}</DropdownItem>
|
||||||
<DropdownItem @click.native="register">{{ $L("注册账号") }}</DropdownItem>
|
<DropdownItem @click.native="register">{{ $L("注册帐号") }}</DropdownItem>
|
||||||
<Dropdown placement="right-start" @on-click="setLanguage">
|
<Dropdown placement="right-start" @on-click="setLanguage">
|
||||||
<DropdownItem>
|
<DropdownItem>
|
||||||
<Icon class="header-right-one-language no-dark-mode" type="md-globe"/>
|
<Icon class="header-right-one-language no-dark-mode" type="md-globe"/>
|
||||||
|
|||||||
@ -21,7 +21,7 @@
|
|||||||
{{$L("项目状态")}}
|
{{$L("项目状态")}}
|
||||||
</div>
|
</div>
|
||||||
<div class="search-content">
|
<div class="search-content">
|
||||||
<Select v-model="keys.status" :placeholder="$L('请选择')">
|
<Select v-model="keys.status" :placeholder="$L('全部')">
|
||||||
<Option value="">{{$L('全部')}}</Option>
|
<Option value="">{{$L('全部')}}</Option>
|
||||||
<Option value="unarchived">{{$L('未归档')}}</Option>
|
<Option value="unarchived">{{$L('未归档')}}</Option>
|
||||||
<Option value="archived">{{$L('已归档')}}</Option>
|
<Option value="archived">{{$L('已归档')}}</Option>
|
||||||
|
|||||||
@ -21,7 +21,7 @@
|
|||||||
{{$L("身份")}}
|
{{$L("身份")}}
|
||||||
</div>
|
</div>
|
||||||
<div class="search-content">
|
<div class="search-content">
|
||||||
<Select v-model="keys.identity" :placeholder="$L('请选择')">
|
<Select v-model="keys.identity" :placeholder="$L('全部')">
|
||||||
<Option value="">{{$L('全部')}}</Option>
|
<Option value="">{{$L('全部')}}</Option>
|
||||||
<Option value="admin">{{$L('管理员')}}</Option>
|
<Option value="admin">{{$L('管理员')}}</Option>
|
||||||
<Option value="noadmin">{{$L('非管理员')}}</Option>
|
<Option value="noadmin">{{$L('非管理员')}}</Option>
|
||||||
@ -33,7 +33,7 @@
|
|||||||
{{$L("在职状态")}}
|
{{$L("在职状态")}}
|
||||||
</div>
|
</div>
|
||||||
<div class="search-content">
|
<div class="search-content">
|
||||||
<Select v-model="keys.disable" :placeholder="$L('请选择')">
|
<Select v-model="keys.disable" :placeholder="$L('在职')">
|
||||||
<Option value="">{{$L('在职')}}</Option>
|
<Option value="">{{$L('在职')}}</Option>
|
||||||
<Option value="yes">{{$L('离职')}}</Option>
|
<Option value="yes">{{$L('离职')}}</Option>
|
||||||
<Option value="all">{{$L('全部')}}</Option>
|
<Option value="all">{{$L('全部')}}</Option>
|
||||||
@ -45,7 +45,7 @@
|
|||||||
{{$L("邮箱认证")}}
|
{{$L("邮箱认证")}}
|
||||||
</div>
|
</div>
|
||||||
<div class="search-content">
|
<div class="search-content">
|
||||||
<Select v-model="keys.email_verity" :placeholder="$L('请选择')">
|
<Select v-model="keys.email_verity" :placeholder="$L('全部')">
|
||||||
<Option value="">{{$L('全部')}}</Option>
|
<Option value="">{{$L('全部')}}</Option>
|
||||||
<Option value="yes">{{$L('已邮箱认证')}}</Option>
|
<Option value="yes">{{$L('已邮箱认证')}}</Option>
|
||||||
<Option value="no">{{$L('未邮箱认证')}}</Option>
|
<Option value="no">{{$L('未邮箱认证')}}</Option>
|
||||||
@ -94,7 +94,7 @@
|
|||||||
class="operate-left"
|
class="operate-left"
|
||||||
:title="$L('操作离职')">
|
:title="$L('操作离职')">
|
||||||
<Form :model="disableData" label-width="auto" @submit.native.prevent>
|
<Form :model="disableData" label-width="auto" @submit.native.prevent>
|
||||||
<Alert type="error">{{$L(`正在进行帐号【ID:${disableData.userid},${disableData.nickname}】离职操作。`)}}</Alert>
|
<Alert type="error" style="margin-bottom:18px">{{$L(`正在进行帐号【ID:${disableData.userid},${disableData.nickname}】离职操作。`)}}</Alert>
|
||||||
<FormItem :label="$L('离职时间')">
|
<FormItem :label="$L('离职时间')">
|
||||||
<DatePicker
|
<DatePicker
|
||||||
v-model="disableData.disable_time"
|
v-model="disableData.disable_time"
|
||||||
@ -111,7 +111,17 @@
|
|||||||
</Form>
|
</Form>
|
||||||
<div slot="footer" class="adaption">
|
<div slot="footer" class="adaption">
|
||||||
<Button type="default" @click="disableShow=false">{{$L('取消')}}</Button>
|
<Button type="default" @click="disableShow=false">{{$L('取消')}}</Button>
|
||||||
<Button type="primary" :loading="disableLoading > 0" @click="operationUser(disableData)">{{$L('确定离职')}}</Button>
|
<Poptip
|
||||||
|
confirm
|
||||||
|
placement="bottom"
|
||||||
|
style="margin-left:8px"
|
||||||
|
@on-ok="operationUser(disableData)"
|
||||||
|
transfer>
|
||||||
|
<div slot="title">
|
||||||
|
<p>{{$L('注意:离职操作不可逆!')}}</p>
|
||||||
|
</div>
|
||||||
|
<Button type="primary" :loading="disableLoading > 0">{{$L('确定离职')}}</Button>
|
||||||
|
</Poptip>
|
||||||
</div>
|
</div>
|
||||||
</Modal>
|
</Modal>
|
||||||
</div>
|
</div>
|
||||||
@ -299,7 +309,7 @@ export default {
|
|||||||
style: {
|
style: {
|
||||||
color: '#f90'
|
color: '#f90'
|
||||||
}
|
}
|
||||||
}, [h('div', this.$L('恢复身份(已离职)'))]));
|
}, [h('div', this.$L('恢复帐号(已离职)'))]));
|
||||||
} else {
|
} else {
|
||||||
dropdownItems.push(h('EDropdownItem', {
|
dropdownItems.push(h('EDropdownItem', {
|
||||||
props: {
|
props: {
|
||||||
@ -454,20 +464,31 @@ export default {
|
|||||||
|
|
||||||
operationUser(data) {
|
operationUser(data) {
|
||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
this.loadIng++;
|
if (data.type == 'setdisable') {
|
||||||
|
this.disableLoading++;
|
||||||
|
} else {
|
||||||
|
this.loadIng++;
|
||||||
|
}
|
||||||
this.$store.dispatch("call", {
|
this.$store.dispatch("call", {
|
||||||
url: 'users/operation',
|
url: 'users/operation',
|
||||||
data,
|
data,
|
||||||
}).then(({msg}) => {
|
}).then(({msg}) => {
|
||||||
$A.messageSuccess(msg);
|
$A.messageSuccess(msg);
|
||||||
this.loadIng--;
|
|
||||||
this.getLists();
|
this.getLists();
|
||||||
resolve()
|
resolve()
|
||||||
|
if (data.type == 'setdisable') {
|
||||||
|
this.disableShow = false;
|
||||||
|
}
|
||||||
}).catch(({msg}) => {
|
}).catch(({msg}) => {
|
||||||
$A.modalError(msg, 301);
|
$A.modalError(msg, 301);
|
||||||
this.loadIng--;
|
|
||||||
this.getLists();
|
this.getLists();
|
||||||
resolve()
|
resolve()
|
||||||
|
}).finally(_ => {
|
||||||
|
if (data.type == 'setdisable') {
|
||||||
|
this.disableLoading--;
|
||||||
|
} else {
|
||||||
|
this.loadIng--;
|
||||||
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
<FormItem :label="$L('端口')" prop="port">
|
<FormItem :label="$L('端口')" prop="port">
|
||||||
<Input :maxlength="20" v-model="formData.port"/>
|
<Input :maxlength="20" v-model="formData.port"/>
|
||||||
</FormItem>
|
</FormItem>
|
||||||
<FormItem :label="$L('账号')" prop="account">
|
<FormItem :label="$L('帐号')" prop="account">
|
||||||
<Input :maxlength="128" v-model="formData.account"/>
|
<Input :maxlength="128" v-model="formData.account"/>
|
||||||
</FormItem>
|
</FormItem>
|
||||||
<FormItem :label="$L('密码')" prop="password">
|
<FormItem :label="$L('密码')" prop="password">
|
||||||
@ -29,7 +29,7 @@
|
|||||||
<Radio label="open">{{ $L('开启') }}</Radio>
|
<Radio label="open">{{ $L('开启') }}</Radio>
|
||||||
<Radio label="close">{{ $L('关闭') }}</Radio>
|
<Radio label="close">{{ $L('关闭') }}</Radio>
|
||||||
</RadioGroup>
|
</RadioGroup>
|
||||||
<div v-if="formData.reg_verify == 'open'" class="form-tip">{{$L('开启后账号需验证通过才可登录')}}</div>
|
<div v-if="formData.reg_verify == 'open'" class="form-tip">{{$L('开启后帐号需验证通过才可登录')}}</div>
|
||||||
</FormItem>
|
</FormItem>
|
||||||
<FormItem :label="$L('开启通知')" prop="notice">
|
<FormItem :label="$L('开启通知')" prop="notice">
|
||||||
<RadioGroup v-model="formData.notice">
|
<RadioGroup v-model="formData.notice">
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
<Spin size="large" v-if="!success && !error"></Spin>
|
<Spin size="large" v-if="!success && !error"></Spin>
|
||||||
<div class="validation-text" v-if="success">
|
<div class="validation-text" v-if="success">
|
||||||
<p>{{$L('您的邮箱已通过验证')}}</p>
|
<p>{{$L('您的邮箱已通过验证')}}</p>
|
||||||
<p>{{$L('今后您可以通过此邮箱重置您的账号密码')}}</p>
|
<p>{{$L('今后您可以通过此邮箱重置您的帐号密码')}}</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="validation-text" v-if="error">
|
<div class="validation-text" v-if="error">
|
||||||
<div>{{errorText}}</div>
|
<div>{{errorText}}</div>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user