no message
This commit is contained in:
parent
570583bafd
commit
a9c763bb77
@ -483,7 +483,7 @@ class ProjectController extends AbstractController
|
||||
|
||||
$data = [];
|
||||
|
||||
// 今日待任务
|
||||
// 今日待完成
|
||||
$between = [
|
||||
Carbon::today()->startOfDay(),
|
||||
Carbon::today()->endOfDay()
|
||||
@ -501,8 +501,9 @@ class ProjectController extends AbstractController
|
||||
/**
|
||||
* 任务列表
|
||||
*
|
||||
* @apiParam {String} name 任务名称(包含)
|
||||
* @apiParam {Array} time 时间范围,格式:数组,如:[2020-12-12,2020-20-12]
|
||||
* @apiParam {String} name 任务名称(包含)
|
||||
* @apiParam {Array} time 时间范围,如:['2020-12-12', '2020-12-30']
|
||||
* @apiParam {String} time_before 指定时间之前,如:2020-12-30 00:00:00(填写此项时time参数无效)
|
||||
*/
|
||||
public function task__lists()
|
||||
{
|
||||
@ -512,18 +513,21 @@ class ProjectController extends AbstractController
|
||||
//
|
||||
$name = Request::input('name');
|
||||
$time = Request::input('time');
|
||||
$time_before = Request::input('time_before');
|
||||
if ($name) {
|
||||
$builder->where(function($query) use ($name) {
|
||||
$query->where('project_tasks.name', 'like', '%,' . $name . ',%');
|
||||
});
|
||||
}
|
||||
if (is_array($time)) {
|
||||
if (Base::isDateOrTime($time_before)) {
|
||||
$builder->whereNotNull('project_tasks.end_at')->where('project_tasks.end_at', '<', Carbon::parse($time_before));
|
||||
} elseif (is_array($time)) {
|
||||
if (Base::isDateOrTime($time[0]) && Base::isDateOrTime($time[1])) {
|
||||
$between = [
|
||||
Carbon::parse($time[0])->startOfDay(),
|
||||
Carbon::parse($time[1])->endOfDay()
|
||||
];
|
||||
$builder->where(function($query) use ($between) {
|
||||
$builder->where(function ($query) use ($between) {
|
||||
$query->whereBetween('project_tasks.start_at', $between)->orWhereBetween('project_tasks.end_at', $between);
|
||||
});
|
||||
}
|
||||
|
@ -191,9 +191,9 @@ class Project extends AbstractModel
|
||||
|
||||
/**
|
||||
* 查询自己的项目
|
||||
* @param $query
|
||||
* @param self $query
|
||||
* @param null $user
|
||||
* @return mixed
|
||||
* @return self
|
||||
*/
|
||||
public function scopeAuthData($query, $user = null)
|
||||
{
|
||||
|
@ -7,6 +7,7 @@ use App\Module\Base;
|
||||
use App\Tasks\PushTask;
|
||||
use Arr;
|
||||
use Carbon\Carbon;
|
||||
use DB;
|
||||
use Hhxsv5\LaravelS\Swoole\Task\Task;
|
||||
use Illuminate\Database\Eloquent\SoftDeletes;
|
||||
use Request;
|
||||
@ -249,14 +250,21 @@ class ProjectTask extends AbstractModel
|
||||
|
||||
/**
|
||||
* 查询自己的任务
|
||||
* @param $query
|
||||
* @param self $query
|
||||
* @param null $user
|
||||
* @return mixed
|
||||
* @return self
|
||||
*/
|
||||
public function scopeAuthData($query, $user = null)
|
||||
{
|
||||
$pre = DB::getTablePrefix();
|
||||
$user = $user ?: User::auth();
|
||||
$query->join('project_task_users', 'project_tasks.id', '=', 'project_task_users.task_pid')
|
||||
->whereExists(function ($der) use ($pre) {
|
||||
$der->select(DB::raw(1))
|
||||
->from('project_task_users as B')
|
||||
->whereColumn('project_task_users.task_pid', '=', 'B.task_pid')
|
||||
->havingRaw("max({$pre}B.id) = {$pre}project_task_users.id");
|
||||
})
|
||||
->whereNull('project_tasks.archived_at')
|
||||
->where('project_tasks.parent_id', 0)
|
||||
->where('project_task_users.userid', $user->userid);
|
||||
|
@ -5,17 +5,17 @@
|
||||
<div class="dashboard-hello">{{$L('欢迎您,' + userInfo.nickname)}}</div>
|
||||
<div class="dashboard-desc">{{$L('以下是你当前的任务统计数据')}}</div>
|
||||
<ul class="dashboard-block">
|
||||
<li>
|
||||
<li @click="active='today'">
|
||||
<div class="block-title">{{$L('今日待完成')}}</div>
|
||||
<div class="block-data">
|
||||
<div class="block-num">21</div>
|
||||
<div class="block-num">{{projectTaskStatistics.today || '...'}}</div>
|
||||
<i class="iconfont"></i>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<li @click="active='overdue'">
|
||||
<div class="block-title">{{$L('超期未完成')}}</div>
|
||||
<div class="block-data">
|
||||
<div class="block-num">2</div>
|
||||
<div class="block-num">{{projectTaskStatistics.overdue || '...'}}</div>
|
||||
<i class="iconfont"></i>
|
||||
</div>
|
||||
</li>
|
||||
@ -27,31 +27,11 @@
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="dashboard-title">{{$L('今日任务')}}</div>
|
||||
<div class="dashboard-title">{{getTitle}}</div>
|
||||
<ul class="dashboard-list overlay-y">
|
||||
<li>
|
||||
<li v-for="item in taskList">
|
||||
<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-title">{{item.title}}</div>
|
||||
<div class="item-time"></div>
|
||||
</li>
|
||||
</ul>
|
||||
@ -64,13 +44,87 @@ import {mapState} from "vuex";
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {}
|
||||
},
|
||||
mounted() {
|
||||
return {
|
||||
loadIng: 0,
|
||||
|
||||
active: 'today',
|
||||
}
|
||||
},
|
||||
|
||||
activated() {
|
||||
this.$store.dispatch("getTaskStatistics");
|
||||
this.getDashboardTask();
|
||||
},
|
||||
|
||||
computed: {
|
||||
...mapState(['userInfo', 'projectList']),
|
||||
...mapState(['userInfo', 'projectList', 'projectTaskStatistics', 'calendarTask']),
|
||||
|
||||
getTitle() {
|
||||
const {active} = this;
|
||||
switch (active) {
|
||||
case 'today':
|
||||
return this.$L('今日任务');
|
||||
case 'overdue':
|
||||
return this.$L('超期任务');
|
||||
default:
|
||||
return '';
|
||||
}
|
||||
},
|
||||
|
||||
taskList() {
|
||||
const {calendarTask, active} = this;
|
||||
const todayStart = new Date($A.formatDate("Y-m-d 00:00:00")),
|
||||
todayEnd = new Date($A.formatDate("Y-m-d 23:59:59"));
|
||||
return calendarTask.filter((item) => {
|
||||
const start = new Date(item.start);
|
||||
const end = new Date(item.end);
|
||||
switch (active) {
|
||||
case 'today':
|
||||
return (start >= todayStart && start <= todayEnd) || (end >= todayStart && end <= todayEnd);
|
||||
case 'overdue':
|
||||
return end < todayStart;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
watch: {
|
||||
active() {
|
||||
this.getDashboardTask();
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
getDashboardTask() {
|
||||
let payload = {};
|
||||
switch (this.active) {
|
||||
case 'today':
|
||||
payload = {
|
||||
time: [
|
||||
$A.formatDate("Y-m-d 00:00:00"),
|
||||
$A.formatDate("Y-m-d 23:59:59")
|
||||
],
|
||||
}
|
||||
break;
|
||||
case 'overdue':
|
||||
payload = {
|
||||
time_before: $A.formatDate("Y-m-d 00:00:00")
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
//
|
||||
this.loadIng++;
|
||||
this.$store.dispatch("getTaskList", payload).then(({data}) => {
|
||||
this.loadIng--;
|
||||
this.$store.dispatch("saveCalendarTask", data.data)
|
||||
}).catch(() => {
|
||||
this.loadIng--;
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
13
resources/assets/js/store/actions.js
vendored
13
resources/assets/js/store/actions.js
vendored
@ -466,6 +466,19 @@ export default {
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取任务统计
|
||||
* @param state
|
||||
* @param dispatch
|
||||
*/
|
||||
getTaskStatistics({state, dispatch}) {
|
||||
dispatch("call", {
|
||||
url: 'project/task/statistics',
|
||||
}).then(({data}) => {
|
||||
state.projectTaskStatistics = data;
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取任务列表
|
||||
* @param state
|
||||
|
1
resources/assets/js/store/state.js
vendored
1
resources/assets/js/store/state.js
vendored
@ -272,6 +272,7 @@ state.projectLoad = 0;
|
||||
state.projectList = state.cacheProjectList;
|
||||
state.projectDetail = {id: 0, project_column: [], project_user: []};
|
||||
state.projectOpenTask = {_show: false, id: 0, task_user: [], task_tag: []};
|
||||
state.projectTaskStatistics = {};
|
||||
state.projectTaskContent = {};
|
||||
state.projectTaskFiles = {};
|
||||
state.projectSubTask = {};
|
||||
|
@ -8,7 +8,7 @@
|
||||
.dashboard-wrapper {
|
||||
width: 664px;
|
||||
max-width: 80%;
|
||||
max-height: 90%;
|
||||
max-height: 80%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.dashboard-hello {
|
||||
|
Loading…
x
Reference in New Issue
Block a user