no message
This commit is contained in:
parent
be1dea7452
commit
77a905c109
@ -38,22 +38,20 @@ class ProjectController extends AbstractController
|
||||
Carbon::today()->startOfDay(),
|
||||
Carbon::today()->endOfDay()
|
||||
];
|
||||
$data['today'] = ProjectTask::authData()
|
||||
->whereNull('project_tasks.archived_at')
|
||||
->whereNull('project_tasks.complete_at')
|
||||
->where('project_tasks.parent_id', 0)
|
||||
$data['today'] = ProjectTask::authData()->whereParentId(0)
|
||||
->whereNull('archived_at')
|
||||
->whereNull('complete_at')
|
||||
->where(function ($query) use ($between) {
|
||||
$query->whereBetween('project_tasks.start_at', $between)->orWhereBetween('project_tasks.end_at', $between);
|
||||
$query->whereBetween('start_at', $between)->orWhereBetween('end_at', $between);
|
||||
})
|
||||
->count();
|
||||
|
||||
// 超期未完成
|
||||
$data['overdue'] = ProjectTask::authData()
|
||||
->whereNull('project_tasks.archived_at')
|
||||
->whereNull('project_tasks.complete_at')
|
||||
->where('project_tasks.parent_id', 0)
|
||||
->whereNotNull('project_tasks.end_at')
|
||||
->where('project_tasks.end_at', '<', Carbon::now())
|
||||
$data['overdue'] = ProjectTask::authData()->whereParentId(0)
|
||||
->whereNull('archived_at')
|
||||
->whereNull('complete_at')
|
||||
->whereNotNull('end_at')
|
||||
->where('end_at', '<', Carbon::now())
|
||||
->count();
|
||||
|
||||
return Base::retSuccess('success', $data);
|
||||
@ -509,57 +507,63 @@ class ProjectController extends AbstractController
|
||||
* @apiParam {Number} [project_id] 项目ID
|
||||
* @apiParam {Number} [parent_id] 主任务ID(填写此项时 project_id 参数无效)
|
||||
* @apiParam {String} [name] 任务描述关键词
|
||||
* @apiParam {Array} [time] 指定时间范围未完成,如:['2020-12-12', '2020-12-30']
|
||||
* @apiParam {String} [time_before] 指定时间之前未完成,如:2020-12-30 00:00:00(填写此项时 time 参数无效)
|
||||
* @apiParam {Array} [time] 指定时间范围,如:['2020-12-12', '2020-12-30']
|
||||
* @apiParam {String} [time_before] 指定时间之前,如:2020-12-30 00:00:00(填写此项时 time 参数无效)
|
||||
* @apiParam {String} [complete] 完成状态
|
||||
* - all:所有(默认)
|
||||
* - yes:已完成
|
||||
* - no:未完成
|
||||
*/
|
||||
public function task__lists()
|
||||
{
|
||||
User::auth();
|
||||
//
|
||||
$builder = ProjectTask::with(['taskUser', 'taskTag'])->whereNull('project_tasks.archived_at');
|
||||
$builder = ProjectTask::with(['taskUser', 'taskTag'])->whereNull('archived_at');
|
||||
//
|
||||
$parent_id = intval(Request::input('parent_id'));
|
||||
$project_id = intval(Request::input('project_id'));
|
||||
$name = Request::input('name');
|
||||
$time = Request::input('time');
|
||||
$time_before = Request::input('time_before');
|
||||
$complete = Request::input('complete');
|
||||
//
|
||||
if ($parent_id > 0) {
|
||||
ProjectTask::userTask($parent_id);
|
||||
$builder->where('project_tasks.parent_id', $parent_id);
|
||||
$builder->whereParentId($parent_id);
|
||||
} elseif ($project_id > 0) {
|
||||
Project::userProject($project_id);
|
||||
$builder->where('project_tasks.project_id', $project_id);
|
||||
$builder->whereParentId(0)->whereProjectId($project_id);
|
||||
} else {
|
||||
$builder->authData();
|
||||
$builder->whereParentId(0)->authData();
|
||||
}
|
||||
//
|
||||
if ($name) {
|
||||
$builder->where(function($query) use ($name) {
|
||||
$query->where('project_tasks.name', 'like', '%,' . $name . ',%');
|
||||
$query->where('name', 'like', '%,' . $name . ',%');
|
||||
});
|
||||
}
|
||||
//
|
||||
if (Base::isDateOrTime($time_before)) {
|
||||
$builder
|
||||
->whereNull('project_tasks.complete_at')
|
||||
->whereNotNull('project_tasks.end_at')
|
||||
->where('project_tasks.end_at', '<', Carbon::parse($time_before));
|
||||
$builder->whereNotNull('end_at')->where('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
|
||||
->whereNull('project_tasks.complete_at')
|
||||
->where(function ($query) use ($between) {
|
||||
$query->whereBetween('project_tasks.start_at', $between)->orWhereBetween('project_tasks.end_at', $between);
|
||||
});
|
||||
$builder->where(function ($query) use ($between) {
|
||||
$query->whereBetween('start_at', $between)->orWhereBetween('end_at', $between);
|
||||
});
|
||||
}
|
||||
}
|
||||
//
|
||||
$list = $builder->orderByDesc('project_tasks.id')->paginate(Base::getPaginate(200, 100));
|
||||
if ($complete === 'yes') {
|
||||
$builder->whereNotNull('complete_at');
|
||||
} elseif ($complete === 'no') {
|
||||
$builder->whereNull('complete_at');
|
||||
}
|
||||
//
|
||||
$list = $builder->orderByDesc('id')->paginate(Base::getPaginate(200, 100));
|
||||
//
|
||||
return Base::retSuccess('success', $list);
|
||||
}
|
||||
|
@ -7,7 +7,6 @@ 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;
|
||||
@ -40,6 +39,7 @@ use Request;
|
||||
* @property-read int $file_num
|
||||
* @property-read int $msg_num
|
||||
* @property-read bool $overdue
|
||||
* @property-read bool $owner
|
||||
* @property-read int $percent
|
||||
* @property-read int $sub_complete
|
||||
* @property-read int $sub_num
|
||||
@ -84,12 +84,8 @@ class ProjectTask extends AbstractModel
|
||||
{
|
||||
use SoftDeletes;
|
||||
|
||||
const taskSelect = [
|
||||
'project_tasks.*',
|
||||
'project_task_users.owner',
|
||||
];
|
||||
|
||||
protected $appends = [
|
||||
'owner',
|
||||
'file_num',
|
||||
'msg_num',
|
||||
'sub_num',
|
||||
@ -99,6 +95,22 @@ class ProjectTask extends AbstractModel
|
||||
'overdue',
|
||||
];
|
||||
|
||||
/**
|
||||
* 是否我是负责人
|
||||
* @return bool
|
||||
*/
|
||||
public function getOwnerAttribute()
|
||||
{
|
||||
if (!isset($this->appendattrs['owner'])) {
|
||||
if ($this->parent_id > 0) {
|
||||
$this->appendattrs['owner'] = ProjectTaskUser::whereTaskId($this->id)->whereUserid(User::userid())->whereOwner(1)->exists();
|
||||
} else {
|
||||
$this->appendattrs['owner'] = ProjectTaskUser::whereTaskPid($this->id)->whereUserid(User::userid())->whereOwner(1)->exists();
|
||||
}
|
||||
}
|
||||
return $this->appendattrs['owner'];
|
||||
}
|
||||
|
||||
/**
|
||||
* 附件数量
|
||||
* @return int
|
||||
@ -256,18 +268,10 @@ class ProjectTask extends AbstractModel
|
||||
*/
|
||||
public function scopeAuthData($query, $user = null)
|
||||
{
|
||||
$pre = DB::getTablePrefix();
|
||||
$user = $user ?: User::auth();
|
||||
$query->select(self::taskSelect)
|
||||
->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')
|
||||
->where('B.owner', 1)
|
||||
->whereColumn('project_task_users.task_pid', '=', 'B.task_pid')
|
||||
->havingRaw("max({$pre}B.id) = {$pre}project_task_users.id");
|
||||
})
|
||||
->where('project_task_users.userid', $user->userid);
|
||||
$query->whereIn('id', function ($qy) use ($user) {
|
||||
$qy->select('task_pid')->from('project_task_users')->where('userid', $user->userid);
|
||||
});
|
||||
return $query;
|
||||
}
|
||||
|
||||
|
@ -252,6 +252,19 @@ class User extends AbstractModel
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取我的ID
|
||||
* @return int
|
||||
*/
|
||||
public static function userid()
|
||||
{
|
||||
$user = self::authInfo();
|
||||
if (!$user) {
|
||||
return 0;
|
||||
}
|
||||
return $user->userid;
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户身份认证(获取用户信息)
|
||||
* @return self
|
||||
|
@ -191,7 +191,8 @@ export default {
|
||||
}
|
||||
this.loadIng++;
|
||||
this.$store.dispatch("getTasks", {
|
||||
time
|
||||
time: time,
|
||||
complete: "no"
|
||||
}).then(() => {
|
||||
this.loadIng--;
|
||||
}).catch(() => {
|
||||
|
@ -200,20 +200,16 @@ export default {
|
||||
|
||||
methods: {
|
||||
getTask() {
|
||||
let data = {};
|
||||
let data = {complete: "no"};
|
||||
switch (this.dashboard) {
|
||||
case 'today':
|
||||
data = {
|
||||
time: [
|
||||
$A.formatDate("Y-m-d 00:00:00"),
|
||||
$A.formatDate("Y-m-d 23:59:59")
|
||||
],
|
||||
}
|
||||
data.time = [
|
||||
$A.formatDate("Y-m-d 00:00:00"),
|
||||
$A.formatDate("Y-m-d 23:59:59")
|
||||
]
|
||||
break;
|
||||
case 'overdue':
|
||||
data = {
|
||||
time_before: $A.formatDate("Y-m-d 00:00:00")
|
||||
}
|
||||
data.time_before = $A.formatDate("Y-m-d 00:00:00")
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
@ -267,6 +263,7 @@ export default {
|
||||
task_id: task.id,
|
||||
})).then(() => {
|
||||
this.$set(this.taskLoad, task.id, false);
|
||||
this.$store.dispatch("getProjectStatistics");
|
||||
}).catch(({msg}) => {
|
||||
$A.modalError(msg);
|
||||
this.$set(this.taskLoad, task.id, false);
|
||||
@ -292,6 +289,7 @@ export default {
|
||||
$A.messageSuccess(msg);
|
||||
this.$Modal.remove();
|
||||
this.$set(this.taskLoad, task.id, false);
|
||||
this.$store.dispatch("getProjectStatistics");
|
||||
}).catch(({msg}) => {
|
||||
$A.modalError(msg, 301);
|
||||
this.$Modal.remove();
|
||||
|
67
resources/assets/js/store/actions.js
vendored
67
resources/assets/js/store/actions.js
vendored
@ -145,7 +145,7 @@ export default {
|
||||
dispatch("saveUserInfo", result.data);
|
||||
resolve(result)
|
||||
}).catch(e => {
|
||||
!e.ret && console.error(e);
|
||||
console.error(e);
|
||||
reject(e)
|
||||
});
|
||||
});
|
||||
@ -243,7 +243,7 @@ export default {
|
||||
typeof success === "function" && success(item, true)
|
||||
});
|
||||
}).catch(e => {
|
||||
!e.ret && console.error(e);
|
||||
console.error(e);
|
||||
state.cacheUserBasic["::load"] = false;
|
||||
typeof complete === "function" && complete()
|
||||
});
|
||||
@ -327,7 +327,7 @@ export default {
|
||||
state.projects = [];
|
||||
dispatch("saveProject", result.data.data);
|
||||
}).catch(e => {
|
||||
!e.ret && console.error(e);
|
||||
console.error(e);
|
||||
});
|
||||
},
|
||||
|
||||
@ -346,7 +346,7 @@ export default {
|
||||
}).then(result => {
|
||||
dispatch("saveProject", result.data);
|
||||
}).catch(e => {
|
||||
!e.ret && console.error(e);
|
||||
console.error(e);
|
||||
});
|
||||
},
|
||||
|
||||
@ -366,7 +366,7 @@ export default {
|
||||
dispatch("forgetProject", project_id)
|
||||
resolve(result)
|
||||
}).catch(e => {
|
||||
!e.ret && console.error(e);
|
||||
console.error(e);
|
||||
dispatch("getProjectOne", project_id);
|
||||
reject(e)
|
||||
});
|
||||
@ -389,7 +389,7 @@ export default {
|
||||
dispatch("forgetProject", project_id)
|
||||
resolve(result)
|
||||
}).catch(e => {
|
||||
!e.ret && console.error(e);
|
||||
console.error(e);
|
||||
dispatch("getProjectOne", project_id);
|
||||
reject(e)
|
||||
});
|
||||
@ -475,7 +475,7 @@ export default {
|
||||
state.columns = state.columns.filter((item) => item.project_id != project_id || ids.includes(item.id));
|
||||
dispatch("saveColumn", result.data.data);
|
||||
}).catch(e => {
|
||||
!e.ret && console.error(e);
|
||||
console.error(e);
|
||||
});
|
||||
},
|
||||
|
||||
@ -495,7 +495,7 @@ export default {
|
||||
dispatch("forgetColumn", column_id)
|
||||
resolve(result)
|
||||
}).catch(e => {
|
||||
!e.ret && console.error(e);
|
||||
console.error(e);
|
||||
reject(e);
|
||||
});
|
||||
});
|
||||
@ -562,7 +562,7 @@ export default {
|
||||
* 获取任务
|
||||
* @param state
|
||||
* @param dispatch
|
||||
* @param data {?project_id, ?parent_id}
|
||||
* @param data
|
||||
*/
|
||||
getTasks({state, dispatch}, data) {
|
||||
if (state.userId === 0) {
|
||||
@ -576,16 +576,33 @@ export default {
|
||||
url: 'project/task/lists',
|
||||
data: data
|
||||
}).then(result => {
|
||||
const ids = result.data.data.map(({id}) => id)
|
||||
const resData = result.data;
|
||||
const ids = resData.data.map(({id}) => id)
|
||||
if (data.project_id) {
|
||||
state.tasks = state.tasks.filter((item) => item.project_id != data.project_id || ids.includes(item.id));
|
||||
}
|
||||
if (data.parent_id) {
|
||||
state.tasks = state.tasks.filter((item) => item.parent_id != data.parent_id || ids.includes(item.id));
|
||||
}
|
||||
dispatch("saveTask", result.data.data);
|
||||
dispatch("saveTask", resData.data);
|
||||
//
|
||||
if (resData.next_page_url) {
|
||||
const nextData = Object.assign(data, {
|
||||
page: resData.current_page + 1,
|
||||
});
|
||||
if (resData.current_page % 5 === 0) {
|
||||
$A.modalWarning({
|
||||
content: "数据已超过" + resData.to + "条,是否继续加载?",
|
||||
onOk: () => {
|
||||
dispatch("getTasks", nextData)
|
||||
}
|
||||
});
|
||||
} else {
|
||||
dispatch("getTasks", nextData)
|
||||
}
|
||||
}
|
||||
}).catch(e => {
|
||||
!e.ret && console.error(e);
|
||||
console.error(e);
|
||||
});
|
||||
},
|
||||
|
||||
@ -607,7 +624,7 @@ export default {
|
||||
}).then(result => {
|
||||
dispatch("saveTask", result.data);
|
||||
}).catch(e => {
|
||||
!e.ret && console.error(e);
|
||||
console.error(e);
|
||||
});
|
||||
},
|
||||
|
||||
@ -628,7 +645,7 @@ export default {
|
||||
dispatch("forgetTask", task_id)
|
||||
resolve(result)
|
||||
}).catch(e => {
|
||||
!e.ret && console.error(e);
|
||||
console.error(e);
|
||||
dispatch("getTaskOne", task_id);
|
||||
reject(e)
|
||||
});
|
||||
@ -652,7 +669,7 @@ export default {
|
||||
dispatch("forgetTask", task_id)
|
||||
resolve(result)
|
||||
}).catch(e => {
|
||||
!e.ret && console.error(e);
|
||||
console.error(e);
|
||||
dispatch("getTaskOne", task_id);
|
||||
reject(e)
|
||||
});
|
||||
@ -682,7 +699,7 @@ export default {
|
||||
}
|
||||
resolve(result)
|
||||
}).catch(e => {
|
||||
!e.ret && console.error(e);
|
||||
console.error(e);
|
||||
reject(e);
|
||||
});
|
||||
});
|
||||
@ -713,7 +730,7 @@ export default {
|
||||
})
|
||||
resolve(result)
|
||||
}).catch(e => {
|
||||
!e.ret && console.error(e);
|
||||
console.error(e);
|
||||
reject(e);
|
||||
});
|
||||
});
|
||||
@ -756,7 +773,7 @@ export default {
|
||||
dispatch("addTaskSuccess", result.data)
|
||||
resolve(result)
|
||||
}).catch(e => {
|
||||
!e.ret && console.error(e);
|
||||
console.error(e);
|
||||
reject(e);
|
||||
});
|
||||
});
|
||||
@ -777,7 +794,7 @@ export default {
|
||||
dispatch("addTaskSuccess", result.data)
|
||||
resolve(result)
|
||||
}).catch(e => {
|
||||
!e.ret && console.error(e);
|
||||
console.error(e);
|
||||
reject(e);
|
||||
});
|
||||
});
|
||||
@ -821,7 +838,7 @@ export default {
|
||||
dispatch("saveTask", result.data)
|
||||
resolve(result)
|
||||
}).catch(e => {
|
||||
!e.ret && console.error(e);
|
||||
console.error(e);
|
||||
dispatch("getTaskOne", post.task_id);
|
||||
reject(e)
|
||||
});
|
||||
@ -842,7 +859,7 @@ export default {
|
||||
state.taskPriority = result.data;
|
||||
resolve(result)
|
||||
}).catch(e => {
|
||||
!e.ret && console.error(e);
|
||||
console.error(e);
|
||||
reject(e);
|
||||
});
|
||||
});
|
||||
@ -895,7 +912,7 @@ export default {
|
||||
}
|
||||
resolve(result);
|
||||
}).catch(e => {
|
||||
!e.ret && console.error(e);
|
||||
console.error(e);
|
||||
reject(e);
|
||||
});
|
||||
});
|
||||
@ -941,7 +958,7 @@ export default {
|
||||
dispatch("saveDialog", result.data);
|
||||
resolve(result);
|
||||
}).catch(e => {
|
||||
!e.ret && console.error(e);
|
||||
console.error(e);
|
||||
reject(e);
|
||||
});
|
||||
});
|
||||
@ -1000,7 +1017,7 @@ export default {
|
||||
// 更新当前会话消息
|
||||
commit("dialogMsgListSuccess", data);
|
||||
}).catch(e => {
|
||||
!e.ret && console.error(e);
|
||||
console.error(e);
|
||||
state.dialogMsgLoad--;
|
||||
state.cacheDialogMsg[dialog_id + "::load"] = false;
|
||||
});
|
||||
@ -1035,7 +1052,7 @@ export default {
|
||||
commit("dialogMsgListSuccess", result.data);
|
||||
resolve(result)
|
||||
}).catch(e => {
|
||||
!e.ret && console.error(e);
|
||||
console.error(e);
|
||||
state.dialogMsgLoad--;
|
||||
reject(e)
|
||||
});
|
||||
|
Loading…
x
Reference in New Issue
Block a user