no message
This commit is contained in:
parent
921be40c64
commit
570583bafd
@ -32,11 +32,10 @@ class ProjectController extends AbstractController
|
|||||||
*/
|
*/
|
||||||
public function lists()
|
public function lists()
|
||||||
{
|
{
|
||||||
$user = User::auth();
|
User::auth();
|
||||||
//
|
//
|
||||||
$list = Project::select(Project::projectSelect)
|
$list = Project::select(Project::projectSelect)
|
||||||
->join('project_users', 'projects.id', '=', 'project_users.project_id')
|
->authData()
|
||||||
->where('project_users.userid', $user->userid)
|
|
||||||
->orderByDesc('projects.id')
|
->orderByDesc('projects.id')
|
||||||
->paginate(Base::getPaginate(200, 100));
|
->paginate(Base::getPaginate(200, 100));
|
||||||
//
|
//
|
||||||
@ -50,7 +49,7 @@ class ProjectController extends AbstractController
|
|||||||
*/
|
*/
|
||||||
public function basic()
|
public function basic()
|
||||||
{
|
{
|
||||||
user::auth();
|
User::auth();
|
||||||
//
|
//
|
||||||
$project_id = intval(Request::input('project_id'));
|
$project_id = intval(Request::input('project_id'));
|
||||||
//
|
//
|
||||||
@ -66,7 +65,7 @@ class ProjectController extends AbstractController
|
|||||||
*/
|
*/
|
||||||
public function detail()
|
public function detail()
|
||||||
{
|
{
|
||||||
$user = User::auth();
|
User::auth();
|
||||||
//
|
//
|
||||||
$project_id = intval(Request::input('project_id'));
|
$project_id = intval(Request::input('project_id'));
|
||||||
//
|
//
|
||||||
@ -76,9 +75,8 @@ class ProjectController extends AbstractController
|
|||||||
}]);
|
}]);
|
||||||
}, 'projectUser'])
|
}, 'projectUser'])
|
||||||
->select(project::projectSelect)
|
->select(project::projectSelect)
|
||||||
->join('project_users', 'projects.id', '=', 'project_users.project_id')
|
->authData()
|
||||||
->where('projects.id', $project_id)
|
->where('projects.id', $project_id)
|
||||||
->where('project_users.userid', $user->userid)
|
|
||||||
->first();
|
->first();
|
||||||
if (empty($project)) {
|
if (empty($project)) {
|
||||||
return Base::retError('项目不存在或不在成员列表内');
|
return Base::retError('项目不存在或不在成员列表内');
|
||||||
@ -167,7 +165,7 @@ class ProjectController extends AbstractController
|
|||||||
*/
|
*/
|
||||||
public function update()
|
public function update()
|
||||||
{
|
{
|
||||||
user::auth();
|
User::auth();
|
||||||
//
|
//
|
||||||
$project_id = intval(Request::input('project_id'));
|
$project_id = intval(Request::input('project_id'));
|
||||||
$name = trim(Request::input('name', ''));
|
$name = trim(Request::input('name', ''));
|
||||||
@ -208,7 +206,7 @@ class ProjectController extends AbstractController
|
|||||||
*/
|
*/
|
||||||
public function user()
|
public function user()
|
||||||
{
|
{
|
||||||
user::auth();
|
User::auth();
|
||||||
//
|
//
|
||||||
$project_id = intval(Request::input('project_id'));
|
$project_id = intval(Request::input('project_id'));
|
||||||
$userid = Request::input('userid');
|
$userid = Request::input('userid');
|
||||||
@ -247,7 +245,7 @@ class ProjectController extends AbstractController
|
|||||||
*/
|
*/
|
||||||
public function transfer()
|
public function transfer()
|
||||||
{
|
{
|
||||||
user::auth();
|
User::auth();
|
||||||
//
|
//
|
||||||
$project_id = intval(Request::input('project_id'));
|
$project_id = intval(Request::input('project_id'));
|
||||||
$owner_userid = intval(Request::input('owner_userid'));
|
$owner_userid = intval(Request::input('owner_userid'));
|
||||||
@ -286,7 +284,7 @@ class ProjectController extends AbstractController
|
|||||||
*/
|
*/
|
||||||
public function sort()
|
public function sort()
|
||||||
{
|
{
|
||||||
user::auth();
|
User::auth();
|
||||||
//
|
//
|
||||||
$project_id = intval(Request::input('project_id'));
|
$project_id = intval(Request::input('project_id'));
|
||||||
$sort = Base::json2array(Request::input('sort'));
|
$sort = Base::json2array(Request::input('sort'));
|
||||||
@ -363,7 +361,7 @@ class ProjectController extends AbstractController
|
|||||||
*/
|
*/
|
||||||
public function delete()
|
public function delete()
|
||||||
{
|
{
|
||||||
user::auth();
|
User::auth();
|
||||||
//
|
//
|
||||||
$project_id = intval(Request::input('project_id'));
|
$project_id = intval(Request::input('project_id'));
|
||||||
//
|
//
|
||||||
@ -384,7 +382,7 @@ class ProjectController extends AbstractController
|
|||||||
*/
|
*/
|
||||||
public function column__add()
|
public function column__add()
|
||||||
{
|
{
|
||||||
user::auth();
|
User::auth();
|
||||||
//
|
//
|
||||||
$project_id = intval(Request::input('project_id'));
|
$project_id = intval(Request::input('project_id'));
|
||||||
$name = trim(Request::input('name'));
|
$name = trim(Request::input('name'));
|
||||||
@ -417,7 +415,7 @@ class ProjectController extends AbstractController
|
|||||||
*/
|
*/
|
||||||
public function column__update()
|
public function column__update()
|
||||||
{
|
{
|
||||||
$user = User::auth();
|
User::auth();
|
||||||
//
|
//
|
||||||
$data = Request::all();
|
$data = Request::all();
|
||||||
$column_id = intval($data['column_id']);
|
$column_id = intval($data['column_id']);
|
||||||
@ -428,9 +426,8 @@ class ProjectController extends AbstractController
|
|||||||
}
|
}
|
||||||
// 项目
|
// 项目
|
||||||
$project = Project::select(project::projectSelect)
|
$project = Project::select(project::projectSelect)
|
||||||
->join('project_users', 'projects.id', '=', 'project_users.project_id')
|
->authData()
|
||||||
->where('projects.id', $column->project_id)
|
->where('projects.id', $column->project_id)
|
||||||
->where('project_users.userid', $user->userid)
|
|
||||||
->first();
|
->first();
|
||||||
if (empty($project)) {
|
if (empty($project)) {
|
||||||
return Base::retError('项目不存在或不在成员列表内');
|
return Base::retError('项目不存在或不在成员列表内');
|
||||||
@ -456,7 +453,7 @@ class ProjectController extends AbstractController
|
|||||||
*/
|
*/
|
||||||
public function column__delete()
|
public function column__delete()
|
||||||
{
|
{
|
||||||
$user = User::auth();
|
User::auth();
|
||||||
//
|
//
|
||||||
$column_id = intval(Request::input('column_id'));
|
$column_id = intval(Request::input('column_id'));
|
||||||
// 列表
|
// 列表
|
||||||
@ -466,9 +463,8 @@ class ProjectController extends AbstractController
|
|||||||
}
|
}
|
||||||
// 项目
|
// 项目
|
||||||
$project = Project::select(project::projectSelect)
|
$project = Project::select(project::projectSelect)
|
||||||
->join('project_users', 'projects.id', '=', 'project_users.project_id')
|
->authData()
|
||||||
->where('projects.id', $column->project_id)
|
->where('projects.id', $column->project_id)
|
||||||
->where('project_users.userid', $user->userid)
|
|
||||||
->first();
|
->first();
|
||||||
if (empty($project)) {
|
if (empty($project)) {
|
||||||
return Base::retError('项目不存在或不在成员列表内');
|
return Base::retError('项目不存在或不在成员列表内');
|
||||||
@ -478,6 +474,30 @@ class ProjectController extends AbstractController
|
|||||||
return Base::retSuccess('删除成功', $column->toArray());
|
return Base::retSuccess('删除成功', $column->toArray());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 任务统计
|
||||||
|
*/
|
||||||
|
public function task__statistics()
|
||||||
|
{
|
||||||
|
User::auth();
|
||||||
|
|
||||||
|
$data = [];
|
||||||
|
|
||||||
|
// 今日待任务
|
||||||
|
$between = [
|
||||||
|
Carbon::today()->startOfDay(),
|
||||||
|
Carbon::today()->endOfDay()
|
||||||
|
];
|
||||||
|
$data['today'] = ProjectTask::authData()->where(function($query) use ($between) {
|
||||||
|
$query->whereBetween('project_tasks.start_at', $between)->orWhereBetween('project_tasks.end_at', $between);
|
||||||
|
})->count();
|
||||||
|
|
||||||
|
// 超期未完成
|
||||||
|
$data['overdue'] = ProjectTask::authData()->whereNotNull('project_tasks.end_at')->where('project_tasks.end_at', '<', Carbon::now())->count();
|
||||||
|
|
||||||
|
return Base::retSuccess('success', $data);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 任务列表
|
* 任务列表
|
||||||
*
|
*
|
||||||
@ -486,9 +506,9 @@ class ProjectController extends AbstractController
|
|||||||
*/
|
*/
|
||||||
public function task__lists()
|
public function task__lists()
|
||||||
{
|
{
|
||||||
$user = user::auth();
|
User::auth();
|
||||||
//
|
//
|
||||||
$builder = ProjectTask::select(ProjectTask::taskSelect);
|
$builder = ProjectTask::select(ProjectTask::taskSelect)->authData();
|
||||||
//
|
//
|
||||||
$name = Request::input('name');
|
$name = Request::input('name');
|
||||||
$time = Request::input('time');
|
$time = Request::input('time');
|
||||||
@ -509,13 +529,7 @@ class ProjectController extends AbstractController
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
$list = $builder
|
$list = $builder->orderByDesc('project_tasks.id')->paginate(Base::getPaginate(200, 100));
|
||||||
->join('project_task_users', 'project_tasks.id', '=', 'project_task_users.task_pid')
|
|
||||||
->whereNull('project_tasks.archived_at')
|
|
||||||
->where('project_tasks.parent_id', 0)
|
|
||||||
->where('project_task_users.userid', $user->userid)
|
|
||||||
->orderByDesc('project_tasks.id')
|
|
||||||
->paginate(Base::getPaginate(200, 100));
|
|
||||||
//
|
//
|
||||||
return Base::retSuccess('success', $list);
|
return Base::retSuccess('success', $list);
|
||||||
}
|
}
|
||||||
@ -527,7 +541,7 @@ class ProjectController extends AbstractController
|
|||||||
*/
|
*/
|
||||||
public function task__basic()
|
public function task__basic()
|
||||||
{
|
{
|
||||||
user::auth();
|
User::auth();
|
||||||
//
|
//
|
||||||
$task_id = intval(Request::input('task_id'));
|
$task_id = intval(Request::input('task_id'));
|
||||||
//
|
//
|
||||||
@ -546,7 +560,7 @@ class ProjectController extends AbstractController
|
|||||||
*/
|
*/
|
||||||
public function task__sublist()
|
public function task__sublist()
|
||||||
{
|
{
|
||||||
user::auth();
|
User::auth();
|
||||||
//
|
//
|
||||||
$task_id = intval(Request::input('task_id'));
|
$task_id = intval(Request::input('task_id'));
|
||||||
//
|
//
|
||||||
@ -563,7 +577,7 @@ class ProjectController extends AbstractController
|
|||||||
*/
|
*/
|
||||||
public function task__content()
|
public function task__content()
|
||||||
{
|
{
|
||||||
user::auth();
|
User::auth();
|
||||||
//
|
//
|
||||||
$task_id = intval(Request::input('task_id'));
|
$task_id = intval(Request::input('task_id'));
|
||||||
//
|
//
|
||||||
@ -579,7 +593,7 @@ class ProjectController extends AbstractController
|
|||||||
*/
|
*/
|
||||||
public function task__files()
|
public function task__files()
|
||||||
{
|
{
|
||||||
user::auth();
|
User::auth();
|
||||||
//
|
//
|
||||||
$task_id = intval(Request::input('task_id'));
|
$task_id = intval(Request::input('task_id'));
|
||||||
//
|
//
|
||||||
@ -602,7 +616,7 @@ class ProjectController extends AbstractController
|
|||||||
*/
|
*/
|
||||||
public function task__add()
|
public function task__add()
|
||||||
{
|
{
|
||||||
user::auth();
|
User::auth();
|
||||||
parse_str(Request::getContent(), $data);
|
parse_str(Request::getContent(), $data);
|
||||||
$project_id = intval($data['project_id']);
|
$project_id = intval($data['project_id']);
|
||||||
$column_id = $data['column_id'];
|
$column_id = $data['column_id'];
|
||||||
@ -658,7 +672,7 @@ class ProjectController extends AbstractController
|
|||||||
*/
|
*/
|
||||||
public function task__addsub()
|
public function task__addsub()
|
||||||
{
|
{
|
||||||
user::auth();
|
User::auth();
|
||||||
//
|
//
|
||||||
$task_id = intval(Request::input('task_id'));
|
$task_id = intval(Request::input('task_id'));
|
||||||
$name = Request::input('name');
|
$name = Request::input('name');
|
||||||
@ -699,7 +713,7 @@ class ProjectController extends AbstractController
|
|||||||
*/
|
*/
|
||||||
public function task__update()
|
public function task__update()
|
||||||
{
|
{
|
||||||
user::auth();
|
User::auth();
|
||||||
//
|
//
|
||||||
parse_str(Request::getContent(), $data);
|
parse_str(Request::getContent(), $data);
|
||||||
$task_id = intval($data['task_id']);
|
$task_id = intval($data['task_id']);
|
||||||
@ -796,7 +810,7 @@ class ProjectController extends AbstractController
|
|||||||
*/
|
*/
|
||||||
public function task__dialog()
|
public function task__dialog()
|
||||||
{
|
{
|
||||||
user::auth();
|
User::auth();
|
||||||
//
|
//
|
||||||
$task_id = intval(Request::input('task_id'));
|
$task_id = intval(Request::input('task_id'));
|
||||||
//
|
//
|
||||||
@ -834,7 +848,7 @@ class ProjectController extends AbstractController
|
|||||||
*/
|
*/
|
||||||
public function task__archived()
|
public function task__archived()
|
||||||
{
|
{
|
||||||
user::auth();
|
User::auth();
|
||||||
//
|
//
|
||||||
$task_id = intval(Request::input('task_id'));
|
$task_id = intval(Request::input('task_id'));
|
||||||
//
|
//
|
||||||
@ -855,7 +869,7 @@ class ProjectController extends AbstractController
|
|||||||
*/
|
*/
|
||||||
public function task__delete()
|
public function task__delete()
|
||||||
{
|
{
|
||||||
user::auth();
|
User::auth();
|
||||||
//
|
//
|
||||||
$task_id = intval(Request::input('task_id'));
|
$task_id = intval(Request::input('task_id'));
|
||||||
//
|
//
|
||||||
@ -876,7 +890,7 @@ class ProjectController extends AbstractController
|
|||||||
*/
|
*/
|
||||||
public function log__lists()
|
public function log__lists()
|
||||||
{
|
{
|
||||||
user::auth();
|
User::auth();
|
||||||
//
|
//
|
||||||
$project_id = intval(Request::input('project_id'));
|
$project_id = intval(Request::input('project_id'));
|
||||||
$task_id = intval(Request::input('task_id'));
|
$task_id = intval(Request::input('task_id'));
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
namespace App\Models;
|
namespace App\Models;
|
||||||
|
|
||||||
use App\Exceptions\ApiException;
|
use App\Exceptions\ApiException;
|
||||||
use App\Module\Base;
|
|
||||||
use App\Tasks\PushTask;
|
use App\Tasks\PushTask;
|
||||||
use Hhxsv5\LaravelS\Swoole\Task\Task;
|
use Hhxsv5\LaravelS\Swoole\Task\Task;
|
||||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||||
@ -33,6 +32,7 @@ use Request;
|
|||||||
* @property-read int|null $project_log_count
|
* @property-read int|null $project_log_count
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\ProjectUser[] $projectUser
|
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\ProjectUser[] $projectUser
|
||||||
* @property-read int|null $project_user_count
|
* @property-read int|null $project_user_count
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|Project authData($user = null)
|
||||||
* @method static \Illuminate\Database\Eloquent\Builder|Project newModelQuery()
|
* @method static \Illuminate\Database\Eloquent\Builder|Project newModelQuery()
|
||||||
* @method static \Illuminate\Database\Eloquent\Builder|Project newQuery()
|
* @method static \Illuminate\Database\Eloquent\Builder|Project newQuery()
|
||||||
* @method static \Illuminate\Database\Query\Builder|Project onlyTrashed()
|
* @method static \Illuminate\Database\Query\Builder|Project onlyTrashed()
|
||||||
@ -189,6 +189,20 @@ class Project extends AbstractModel
|
|||||||
return $this->hasMany(projectUser::class, 'project_id', 'id')->orderBy('id');
|
return $this->hasMany(projectUser::class, 'project_id', 'id')->orderBy('id');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询自己的项目
|
||||||
|
* @param $query
|
||||||
|
* @param null $user
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public function scopeAuthData($query, $user = null)
|
||||||
|
{
|
||||||
|
$user = $user ?: User::auth();
|
||||||
|
$query->join('project_users', 'projects.id', '=', 'project_users.project_id')
|
||||||
|
->where('project_users.userid', $user->userid);
|
||||||
|
return $query;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 加入项目
|
* 加入项目
|
||||||
* @param int $userid 加入的会员ID
|
* @param int $userid 加入的会员ID
|
||||||
@ -325,9 +339,8 @@ class Project extends AbstractModel
|
|||||||
public static function userProject($project_id)
|
public static function userProject($project_id)
|
||||||
{
|
{
|
||||||
$project = Project::select(self::projectSelect)
|
$project = Project::select(self::projectSelect)
|
||||||
->join('project_users', 'projects.id', '=', 'project_users.project_id')
|
->authData()
|
||||||
->where('projects.id', intval($project_id))
|
->where('projects.id', intval($project_id))
|
||||||
->where('project_users.userid', User::token2userid())
|
|
||||||
->first();
|
->first();
|
||||||
if (empty($project)) {
|
if (empty($project)) {
|
||||||
throw new ApiException('项目不存在或不在成员列表内');
|
throw new ApiException('项目不存在或不在成员列表内');
|
||||||
|
@ -50,6 +50,7 @@ use Request;
|
|||||||
* @property-read int|null $task_tag_count
|
* @property-read int|null $task_tag_count
|
||||||
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\ProjectTaskUser[] $taskUser
|
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\ProjectTaskUser[] $taskUser
|
||||||
* @property-read int|null $task_user_count
|
* @property-read int|null $task_user_count
|
||||||
|
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTask authData($user = null)
|
||||||
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTask newModelQuery()
|
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTask newModelQuery()
|
||||||
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTask newQuery()
|
* @method static \Illuminate\Database\Eloquent\Builder|ProjectTask newQuery()
|
||||||
* @method static \Illuminate\Database\Query\Builder|ProjectTask onlyTrashed()
|
* @method static \Illuminate\Database\Query\Builder|ProjectTask onlyTrashed()
|
||||||
@ -246,6 +247,22 @@ class ProjectTask extends AbstractModel
|
|||||||
return $this->hasMany(projectTaskTag::class, 'task_id', 'id')->orderBy('id');
|
return $this->hasMany(projectTaskTag::class, 'task_id', 'id')->orderBy('id');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询自己的任务
|
||||||
|
* @param $query
|
||||||
|
* @param null $user
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public function scopeAuthData($query, $user = null)
|
||||||
|
{
|
||||||
|
$user = $user ?: User::auth();
|
||||||
|
$query->join('project_task_users', 'project_tasks.id', '=', 'project_task_users.task_pid')
|
||||||
|
->whereNull('project_tasks.archived_at')
|
||||||
|
->where('project_tasks.parent_id', 0)
|
||||||
|
->where('project_task_users.userid', $user->userid);
|
||||||
|
return $query;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 添加任务
|
* 添加任务
|
||||||
* @param $data
|
* @param $data
|
||||||
@ -669,9 +686,8 @@ class ProjectTask extends AbstractModel
|
|||||||
}
|
}
|
||||||
//
|
//
|
||||||
$project = Project::select(Project::projectSelect)
|
$project = Project::select(Project::projectSelect)
|
||||||
->join('project_users', 'projects.id', '=', 'project_users.project_id')
|
->authData()
|
||||||
->where('projects.id', $task->project_id)
|
->where('projects.id', $task->project_id)
|
||||||
->where('project_users.userid', User::token2userid())
|
|
||||||
->first();
|
->first();
|
||||||
if (empty($project)) {
|
if (empty($project)) {
|
||||||
throw new ApiException('项目不存在或不在成员列表内');
|
throw new ApiException('项目不存在或不在成员列表内');
|
||||||
|
@ -170,7 +170,14 @@ export default {
|
|||||||
},
|
},
|
||||||
|
|
||||||
computed: {
|
computed: {
|
||||||
...mapState(['userId', 'userInfo', 'dialogMsgUnread', 'projectList', 'projectOpenTask', 'projectChatShow']),
|
...mapState([
|
||||||
|
'userId',
|
||||||
|
'userInfo',
|
||||||
|
'dialogMsgUnread',
|
||||||
|
'projectList',
|
||||||
|
'projectOpenTask',
|
||||||
|
'projectChatShow'
|
||||||
|
]),
|
||||||
},
|
},
|
||||||
|
|
||||||
watch: {
|
watch: {
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<em v-if="item.p_name && item.parent_id === 0" class="priority-color" :style="{backgroundColor:item.p_color}"></em>
|
<em v-if="item.p_name && item.parent_id === 0" class="priority-color" :style="{backgroundColor:item.p_color}"></em>
|
||||||
<Col span="12" :class="['row-name', item.complete_at ? 'complete' : '']">
|
<Col span="12" :class="['row-name', item.complete_at ? 'complete' : '']">
|
||||||
<Icon
|
<Icon
|
||||||
v-if="item.sub_num > 0 || fastAddTask"
|
v-if="item.sub_num > 0 || (item.parent_id===0 && fastAddTask)"
|
||||||
:class="['sub-icon', item[openName] ? 'active' : '']"
|
:class="['sub-icon', item[openName] ? 'active' : '']"
|
||||||
type="ios-arrow-forward"
|
type="ios-arrow-forward"
|
||||||
@click="getSublist(item)"/>
|
@click="getSublist(item)"/>
|
||||||
@ -86,7 +86,7 @@
|
|||||||
v-if="item[openName]===true"
|
v-if="item[openName]===true"
|
||||||
:list="item.sub_task"
|
:list="item.sub_task"
|
||||||
:parent-id="item.id"
|
:parent-id="item.id"
|
||||||
:fast-add-task="fastAddTask"
|
:fast-add-task="item.parent_id===0 && fastAddTask"
|
||||||
:color-list="colorList"
|
:color-list="colorList"
|
||||||
:open-key="openKey"
|
:open-key="openKey"
|
||||||
@command="dropTask"/>
|
@command="dropTask"/>
|
||||||
|
@ -1,14 +1,67 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="page-dashboard">
|
<div class="page-dashboard">
|
||||||
<PageTitle>{{$L('仪表板')}}</PageTitle>
|
<PageTitle>{{$L('仪表板')}}</PageTitle>
|
||||||
<div class="nopage">
|
<div class="dashboard-wrapper">
|
||||||
<div class="nopage-icon"><Icon type="ios-speedometer" /></div>
|
<div class="dashboard-hello">{{$L('欢迎您,' + userInfo.nickname)}}</div>
|
||||||
<div class="nopage-text">{{$L('仪表板')}}</div>
|
<div class="dashboard-desc">{{$L('以下是你当前的任务统计数据')}}</div>
|
||||||
|
<ul class="dashboard-block">
|
||||||
|
<li>
|
||||||
|
<div class="block-title">{{$L('今日待完成')}}</div>
|
||||||
|
<div class="block-data">
|
||||||
|
<div class="block-num">21</div>
|
||||||
|
<i class="iconfont"></i>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<div class="block-title">{{$L('超期未完成')}}</div>
|
||||||
|
<div class="block-data">
|
||||||
|
<div class="block-num">2</div>
|
||||||
|
<i class="iconfont"></i>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<div class="block-title">{{$L('参与的项目')}}</div>
|
||||||
|
<div class="block-data">
|
||||||
|
<div class="block-num">{{projectList.length}}</div>
|
||||||
|
<i class="iconfont"></i>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<div class="dashboard-title">{{$L('今日任务')}}</div>
|
||||||
|
<ul class="dashboard-list overlay-y">
|
||||||
|
<li>
|
||||||
|
<i class="iconfont"></i>
|
||||||
|
<div class="item-title">超全!B端通用界面设计法则全方位科普</div>
|
||||||
|
<div class="item-time"></div>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="iconfont"></i>
|
||||||
|
<div class="item-title">做B端后台产品很复杂?送你一份完整的设计流程和规范!</div>
|
||||||
|
<div class="item-time"></div>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="iconfont"></i>
|
||||||
|
<div class="item-title">如何设计「时间显示」更专业?来看大厂总结的方法</div>
|
||||||
|
<div class="item-time"></div>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="iconfont"></i>
|
||||||
|
<div class="item-title">用实战分析和案例,教你网页配色的终极套路</div>
|
||||||
|
<div class="item-time"></div>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<i class="iconfont"></i>
|
||||||
|
<div class="item-title">用一篇超全面的文章,帮你了解维也纳艺术团体「分离派」</div>
|
||||||
|
<div class="item-time"></div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import {mapState} from "vuex";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {}
|
return {}
|
||||||
@ -16,5 +69,8 @@ export default {
|
|||||||
mounted() {
|
mounted() {
|
||||||
|
|
||||||
},
|
},
|
||||||
|
computed: {
|
||||||
|
...mapState(['userInfo', 'projectList']),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
6
resources/assets/sass/iconfont.scss
vendored
6
resources/assets/sass/iconfont.scss
vendored
@ -1,8 +1,8 @@
|
|||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'iconfont'; /* Project id 2583385 */
|
font-family: 'iconfont'; /* Project id 2583385 */
|
||||||
src: url('//at.alicdn.com/t/font_2583385_cz486uauxcg.woff2?t=1623761047200') format('woff2'),
|
src: url('//at.alicdn.com/t/font_2583385_s933tffef1.woff2?t=1624075007364') format('woff2'),
|
||||||
url('//at.alicdn.com/t/font_2583385_cz486uauxcg.woff?t=1623761047200') format('woff'),
|
url('//at.alicdn.com/t/font_2583385_s933tffef1.woff?t=1624075007364') format('woff'),
|
||||||
url('//at.alicdn.com/t/font_2583385_cz486uauxcg.ttf?t=1623761047200') format('truetype');
|
url('//at.alicdn.com/t/font_2583385_s933tffef1.ttf?t=1624075007364') format('truetype');
|
||||||
}
|
}
|
||||||
|
|
||||||
.iconfont {
|
.iconfont {
|
||||||
|
120
resources/assets/sass/pages/page-dashboard.scss
vendored
120
resources/assets/sass/pages/page-dashboard.scss
vendored
@ -1,4 +1,124 @@
|
|||||||
.page-dashboard {
|
.page-dashboard {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
.dashboard-wrapper {
|
||||||
|
width: 664px;
|
||||||
|
max-width: 80%;
|
||||||
|
max-height: 90%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
.dashboard-hello {
|
||||||
|
padding: 0 12px;
|
||||||
|
color: #333333;
|
||||||
|
font-size: 24px;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
.dashboard-desc {
|
||||||
|
margin-top: 18px;
|
||||||
|
padding: 0 12px;
|
||||||
|
color: #888888;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
.dashboard-block {
|
||||||
|
margin-top: 18px;
|
||||||
|
padding: 0 12px;
|
||||||
|
display: flex;
|
||||||
|
> li {
|
||||||
|
flex: 1;
|
||||||
|
flex-shrink: 0;
|
||||||
|
list-style: none;
|
||||||
|
margin-right: 24px;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 16px 24px;
|
||||||
|
background-color: #fa8e8c;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: box-shadow 0.3s;
|
||||||
|
&:hover {
|
||||||
|
box-shadow: 0 0 10px #cccccc;
|
||||||
|
}
|
||||||
|
&:first-child {
|
||||||
|
background-color: #6f9ef6;
|
||||||
|
}
|
||||||
|
&:last-child {
|
||||||
|
background-color: #98de6e;
|
||||||
|
margin-right: 0;
|
||||||
|
cursor: default;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
.block-title {
|
||||||
|
color: rgba(255, 255, 255, 0.6);
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
.block-data {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
padding-top: 10px;
|
||||||
|
line-height: 1;
|
||||||
|
.block-num {
|
||||||
|
flex: 1;
|
||||||
|
color: #ffffff;
|
||||||
|
font-weight: 600;
|
||||||
|
font-size: 32px;
|
||||||
|
}
|
||||||
|
.iconfont {
|
||||||
|
color: rgba(255, 255, 255, 0.7);
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.dashboard-title {
|
||||||
|
margin-top: 60px;
|
||||||
|
padding: 0 12px;
|
||||||
|
font-weight: 600;
|
||||||
|
font-size: 15px;
|
||||||
|
}
|
||||||
|
.dashboard-list {
|
||||||
|
margin-top: 4px;
|
||||||
|
padding: 0 12px;
|
||||||
|
overflow: auto;
|
||||||
|
> li {
|
||||||
|
list-style: none;
|
||||||
|
display: flex;
|
||||||
|
background: #F9FAFB;
|
||||||
|
margin-top: 12px;
|
||||||
|
padding: 8px 12px;
|
||||||
|
border-radius: 6px;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: box-shadow 0.3s;
|
||||||
|
&:hover {
|
||||||
|
box-shadow: 0 0 6px #dfdfdf;
|
||||||
|
}
|
||||||
|
&:last-child {
|
||||||
|
margin-bottom: 12px;
|
||||||
|
}
|
||||||
|
.iconfont {
|
||||||
|
color: #bbbbbb;
|
||||||
|
font-size: 18px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
width: 22px;
|
||||||
|
height: 22px;
|
||||||
|
line-height: 22px;
|
||||||
|
}
|
||||||
|
.item-title {
|
||||||
|
flex: 1;
|
||||||
|
padding-left: 6px;
|
||||||
|
line-height: 22px;
|
||||||
|
}
|
||||||
|
.item-time {
|
||||||
|
padding-left: 12px;
|
||||||
|
flex-shrink: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
.nopage {
|
.nopage {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user