This commit is contained in:
mkm 2024-01-15 17:13:42 +08:00
parent b8e2a4d1dc
commit 028a06bf13
2 changed files with 44 additions and 15 deletions
application
common/Model
project/controller

@ -36,7 +36,7 @@ class TaskStages extends CommonModel
* @throws \think\db\exception\ModelNotFoundException
* @throws \think\exception\DbException
*/
public function tasks($stageCode, $deleted = 0, $done = -1, $title = '', $pri = [], $executor = [], $creator = [], $joiner = [], $status = [], $endTime = [], $beginTime = [], $createTime = [], $doneTime = [],$data=[])
public function tasks($stageCode, $deleted = 0, $done = -1, $title = '', $pri = [], $executor = [], $creator = [], $joiner = [], $status = [], $endTime = [], $beginTime = [], $createTime = [], $doneTime = [], $data = [])
{
$where = ['pcode' => '', 'deleted' => $deleted];
if ($done != -1) {
@ -46,7 +46,8 @@ class TaskStages extends CommonModel
if (is_array($stageCode)) {
$taskModel = $taskModel->whereIn('t.stage_code', $stageCode);
} else {
$taskModel = $taskModel->where('t.stage_code', $stageCode);
if (isset($data['type']) && $data['type'] != 'all')
$taskModel = $taskModel->where('t.stage_code', $stageCode);
}
if ($title) {
$taskModel = $taskModel->whereLike('t.name', "%$title%");
@ -71,18 +72,20 @@ class TaskStages extends CommonModel
}
//todo 查询范围问题
$joinTaskMember = false;
$member=new MemberAccount();
$member_code=getCurrentMember()['code'];
$find=$member->where('member_code',$member_code)->find();
if(isset($data['type']) &&$data['type']=='copied_list'){
$taskModel = $taskModel->whereRaw('find_in_set(:id,t.copied_list) ', ['id' => $member_code]);
}else{
if($find &&$find['is_liaison_man']==0){
$member = new MemberAccount();
$member_code = getCurrentMember()['code'];
$find = $member->where('member_code', $member_code)->find();
if (isset($data['type'])) {
if ($data['type'] == 'copied_list') {
$taskModel = $taskModel->whereRaw('find_in_set(:id,t.copied_list) ', ['id' => $member_code]);
}
} else {
if ($find && $find['is_liaison_man'] == 0) {
$joinTaskMember = true;
$type=ProjectAuth::where('id',$find['authorize'])->value('type');
if($type=='admin'){
$taskModel = $taskModel->where('t.create_by',$member_code);
}else{
$type = ProjectAuth::where('id', $find['authorize'])->value('type');
if ($type == 'admin') {
$taskModel = $taskModel->where('t.create_by', $member_code);
} else {
$taskModel = $taskModel->leftJoin('task_member tm', 't.code = tm.task_code')->where('tm.member_code', $member_code)->where('tm.is_executor', 1);
}
}
@ -99,7 +102,7 @@ class TaskStages extends CommonModel
!$joinTaskMember && $taskModel->leftJoin('task_member tm', 't.code = tm.task_code');
$taskModel = $taskModel->whereIn('tm.member_code', $joiner);
}
$list = $taskModel->order('t.create_time desc')->field('id', true)->select();
$list = $taskModel->order('t.create_time desc')->field('id', true)->page($data['page'], 10)->select();
if ($list) {
$taskMemberList = [];
foreach ($list as &$task) {
@ -113,6 +116,30 @@ class TaskStages extends CommonModel
$taskMemberList[$assign_to] = $task['executor'];
}
}
$task['exchange_info'] = [];
$arr = '';
if ($task['exchange_list'] && $task['transferred']) {
$arr = $task['exchange_list'] . ',' . $task['transferred'];
} elseif ($task['exchange_list']) {
$arr = $task['exchange_list'];
} elseif ($task['transferred']) {
$arr = $task['transferred'];
}
$arr = array_unique(explode(',', $arr));
$arr2 = explode(',', $task['copied_list']);
$task['exchange_info'] = MemberAccount::whereIn('member_code', $arr)->field('member_code,name,avatar')->select();
$task['copied_info'] = MemberAccount::whereIn('member_code', $arr2)->field('member_code,name,avatar')->select();
$endTime = strtotime($task['end_time']);
$createTime = strtotime($task['create_time']);
$task['timeout']=0;
$task['department_name']=Department::where('code',$task['department'])->value('name');
if ($endTime > $createTime) {
$timeDifference = abs($endTime - $createTime);
// 计算天数
$days = $timeDifference / 86400;
$task['timeout']=$days.'天';
}
}
}
return $list;
@ -123,7 +150,7 @@ class TaskStages extends CommonModel
$taskModel = new Task();
$list1 = $taskModel->where('stage_code', $stageCode)->where('done', 0)->where('deleted', 0)->order('sort asc,end_time desc, id asc')->select();
$list2 = $taskModel->where('stage_code', $stageCode)->where('done', 1)->where('deleted', 0)->order('sort asc,end_time desc, id asc')->select();
$list = array_merge($list1?$list1->toArray():[],$list2?$list2->toArray():[]);
$list = array_merge($list1 ? $list1->toArray() : [], $list2 ? $list2->toArray() : []);
if ($list) {
foreach ($list as $key => &$item) {
$item = $taskModel->read($item['code']);

@ -67,6 +67,7 @@ class TaskStages extends BasicApi
$where = [];
$code = Request::post('stageCode');
$type = Request::post('type');
$page = Request::post('page',1);
$done = Request::param('done', -1);
$title = Request::param('title', '');
$pri = json_decode(Request::post('pri', ''));
@ -84,6 +85,7 @@ class TaskStages extends BasicApi
}
$where[] = ['stage_code', '=', $code];
$data = ['type'=>$type];
$data = ['page'=>$page];
$list = $this->model->tasks($code, 0, $done, $title, $pri, $executor, $creator, $joiner, $status, $endTime, $beginTime, $createTime, $doneTime,$data);
// $list = \app\common\Model\Task::alias('t')->join('member m','t.assign_to = m.code')->field()->where(['stage_code'=>$code])->select();