|
@@ -294,7 +294,7 @@ class ProjectController extends Controller
|
|
|
if ($temp['id'] == $info['labelid']) {
|
|
|
$info['persons'] = Project::taskPersons($info);
|
|
|
$info['overdue'] = Project::taskIsOverdue($info);
|
|
|
- $subtask = Base::DBC2A(DB::table('project_sub_task')->where(['taskid'=>$info['id'], 'delete' => 0])->orderByDesc('userorder')->get());
|
|
|
+ $subtask = Base::DBC2A(DB::table('project_sub_task')->where(['taskid'=>$info['id'], 'delete' => 0])->orderByDesc('id')->get());
|
|
|
$info['subtask'] = $subtask;
|
|
|
$info['follower'] = Base::string2array($info['follower']);
|
|
|
$info['plantime'] = ($info['startdate'] > 0 ? date("Y-m-d",$info['startdate']) : "未设置") . "-" . ($info['enddate'] > 0 ? date("Y-m-d",$info['enddate']) : "未设置");
|
|
@@ -813,6 +813,198 @@ class ProjectController extends Controller
|
|
|
return Base::retSuccess('保存成功!');
|
|
|
}
|
|
|
|
|
|
+ public function labelsort()
|
|
|
+ {
|
|
|
+ $user = Users::authE();
|
|
|
+ if (Base::isError($user)) {
|
|
|
+ return $user;
|
|
|
+ } else {
|
|
|
+ $user = $user['data'];
|
|
|
+ }
|
|
|
+ $projectid = trim(Request::input('projectid'));
|
|
|
+ if(!in_array('admin',$user['identity'])){
|
|
|
+ $inRes = Project::inThe($projectid, $user['username']);
|
|
|
+ if (Base::isError($inRes)) {
|
|
|
+ return $inRes;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if($id = intval(Request::input('id'))){
|
|
|
+ $newIndex = intval(Request::input('newIndex'));
|
|
|
+ $oldIndex = intval(Request::input('oldIndex'));
|
|
|
+ //移动前,先把移动前后中间的item对应的order+1
|
|
|
+ DB::table('project_label')->where("projectid","=",$projectid)->where("inorder",">=",$newIndex)->where("inorder","<",$oldIndex)->increment('inorder');
|
|
|
+ //进行移动操作更改
|
|
|
+ DB::table('project_label')->where([
|
|
|
+ 'id' => $id,
|
|
|
+ 'projectid' => $projectid
|
|
|
+ ])->update([
|
|
|
+ 'inorder' => $newIndex
|
|
|
+ ]);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ $row = Base::DBC2A(DB::table('project_log')->where([ 'type' => '日志', 'projectid' => $projectid ])->orderByDesc('id')->first());
|
|
|
+ $continue = 1;
|
|
|
+ if ($row && $row['username'] == $user['username'] && $row['indate'] + 300 > Base::time()) {
|
|
|
+ $other = Base::string2array($row['other']);
|
|
|
+ if ($other['sortType'] == "label") {
|
|
|
+ $continue = intval($other['continue']) + 1;
|
|
|
+ if ($continue <= 100) {
|
|
|
+ DB::table('project_log')->where('id', $row['id'])->update([
|
|
|
+ 'detail' => '调整任务列表排序(' . $continue . '次)',
|
|
|
+ 'other' => Base::array2string([
|
|
|
+ 'sortType' => "label",
|
|
|
+ 'continue' => $continue,
|
|
|
+ 'times' => $other['times'] . '|' . Base::time(),
|
|
|
+ ])
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if ($continue == 1) {
|
|
|
+ DB::table('project_log')->insert([
|
|
|
+ 'type' => '日志',
|
|
|
+ 'projectid' => $projectid,
|
|
|
+ 'username' => $user['username'],
|
|
|
+ 'detail' => "调整任务列表排序",
|
|
|
+ 'indate' => Base::time(),
|
|
|
+ 'other' => Base::array2string([
|
|
|
+ 'sortType' => "label",
|
|
|
+ 'continue' => $continue,
|
|
|
+ 'times' => Base::time(),
|
|
|
+ ])
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+ return Base::retSuccess('保存成功!');
|
|
|
+ }
|
|
|
+
|
|
|
+ public function tasksort()
|
|
|
+ {
|
|
|
+ $user = Users::authE();
|
|
|
+ if (Base::isError($user)) {
|
|
|
+ return $user;
|
|
|
+ } else {
|
|
|
+ $user = $user['data'];
|
|
|
+ }
|
|
|
+ $projectid = trim(Request::input('projectid'));
|
|
|
+ if(!in_array('admin',$user['identity'])){
|
|
|
+ $inRes = Project::inThe($projectid, $user['username']);
|
|
|
+ if (Base::isError($inRes)) {
|
|
|
+ return $inRes;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $fromid = intval(Request::input('fromid'));
|
|
|
+ $toid = intval(Request::input('toid'));
|
|
|
+ $id = intval(Request::input("id"));
|
|
|
+ if($fromid == $toid){
|
|
|
+ //同一个label下移动
|
|
|
+ $newIndex = intval(Request::input('newIndex'));
|
|
|
+ $oldIndex = intval(Request::input('oldIndex'));
|
|
|
+ $list = DB::table('project_task')->where("projectid","=",$projectid)->where("labelid","=",$fromid)->orderBy('inorder','desc')->get()->toArray();
|
|
|
+ if($newIndex > $oldIndex){
|
|
|
+ //移动前,先把移动前后中间的item对应的order+1
|
|
|
+ DB::table('project_task')->where("projectid","=",$projectid)->where("labelid","=",$fromid)->where("inorder","<",$list[$oldIndex]->inorder)->where("inorder",">=",$list[$newIndex]->inorder)->increment('inorder');
|
|
|
+ $inorder = $list[$newIndex]->inorder;
|
|
|
+ }else{
|
|
|
+ //移动前,先把移动前后中间的item对应的order+1
|
|
|
+ DB::table('project_task')->where("projectid","=",$projectid)->where("labelid","=",$fromid)->where("inorder","<=",$list[$newIndex]->inorder)->where("inorder",">",$list[$oldIndex]->inorder)->decrement('inorder');
|
|
|
+ $inorder = $list[$newIndex]->inorder;
|
|
|
+ }
|
|
|
+
|
|
|
+ //进行移动操作更改
|
|
|
+ DB::table('project_task')->where([
|
|
|
+ 'id' => $id,
|
|
|
+ 'projectid' => $projectid,
|
|
|
+ 'labelid' => $fromid
|
|
|
+ ])->update([
|
|
|
+ 'inorder' => $inorder
|
|
|
+ ]);
|
|
|
+ }else{
|
|
|
+ //移动到其他label
|
|
|
+ $newIndex = intval(Request::input('newIndex'));
|
|
|
+ $oldIndex = intval(Request::input('oldIndex'));
|
|
|
+ $fromlist = DB::table('project_task')->where("projectid","=",$projectid)->where("labelid","=",$fromid)->get()->toArray();
|
|
|
+ if(count($fromlist) == 0 || !array_key_exists($oldIndex,$fromlist)){
|
|
|
+ return Base::retSuccess('移出的任务组数据出错!');
|
|
|
+ }
|
|
|
+ $tolist = DB::table('project_task')->where("projectid","=",$projectid)->where("labelid","=",$toid)->get()->toArray();
|
|
|
+ //对历史遗留项的inorder为null进行处理
|
|
|
+ DB::table('project_task')->where("projectid","=",$projectid)->where("labelid","=",$fromid)->whereNull('inorder')->update(['inorder' => 0]);
|
|
|
+ DB::table('project_task')->where("projectid","=",$projectid)->where("labelid","=",$toid)->whereNull('inorder')->update(['inorder' => 0]);
|
|
|
+
|
|
|
+ //先操作from label
|
|
|
+ //分两种情况,一个是移出后这个fromlist是空表,一种是移出后是非空表,只处理非空表
|
|
|
+ //如果移出项不是最后一个,才处理,否则不处理
|
|
|
+ if(($oldIndex < count($fromlist)) && (count($fromlist) > 1)){
|
|
|
+ //先把当前移动项之后的排序-1
|
|
|
+ DB::table('project_task')->where("projectid","=",$projectid)->where("labelid","=",$fromid)->where("inorder",">",$fromlist[$oldIndex]->inorder)->decrement('inorder');
|
|
|
+ }
|
|
|
+ //再操作to label
|
|
|
+ //分两种情况,一种是目标表是空表,一种是目标表非空表
|
|
|
+ //只处理非空表,如果移入的下标大于目标界,即移入项排在最后一个,则不处理,否则处理
|
|
|
+ if(count($tolist) > 0){
|
|
|
+ if($newIndex < count($tolist)){
|
|
|
+ //把小于平移后的index(包含)都+1
|
|
|
+ DB::table('project_task')->where("projectid","=",$projectid)->where("labelid","=",$toid)->where("inorder",">=",$tolist[$newIndex]->inorder)->increment('inorder');
|
|
|
+ $inorder = $tolist[$newIndex]->inorder;
|
|
|
+ }else{
|
|
|
+ $end = array_pop($tolist);
|
|
|
+ $inorder = $end->inorder+1;
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ $inorder = 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ //最后进行移动操作更改
|
|
|
+ DB::table('project_task')->where([
|
|
|
+ 'id' => $id,
|
|
|
+ 'projectid' => $projectid,
|
|
|
+ 'labelid' => $fromid
|
|
|
+ ])->update([
|
|
|
+ 'labelid' => $toid,
|
|
|
+ 'inorder' => $inorder
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+
|
|
|
+ $row = Base::DBC2A(DB::table('project_log')->where([ 'type' => '日志', 'projectid' => $projectid ])->orderByDesc('id')->first());
|
|
|
+ $continue = 1;
|
|
|
+ if ($row && $row['username'] == $user['username'] && $row['indate'] + 300 > Base::time()) {
|
|
|
+ $other = Base::string2array($row['other']);
|
|
|
+ if ($other['sortType'] == "task") {
|
|
|
+ $continue = intval($other['continue']) + 1;
|
|
|
+ if ($continue <= 100) {
|
|
|
+ DB::table('project_log')->where('id', $row['id'])->update([
|
|
|
+ 'detail' => '调整任务排序(' . $continue . '次)',
|
|
|
+ 'other' => Base::array2string([
|
|
|
+ 'sortType' => "task",
|
|
|
+ 'continue' => $continue,
|
|
|
+ 'times' => $other['times'] . '|' . Base::time(),
|
|
|
+ ])
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if ($continue == 1) {
|
|
|
+ DB::table('project_log')->insert([
|
|
|
+ 'type' => '日志',
|
|
|
+ 'projectid' => $projectid,
|
|
|
+ 'username' => $user['username'],
|
|
|
+ 'detail' => "调整任务排序",
|
|
|
+ 'indate' => Base::time(),
|
|
|
+ 'other' => Base::array2string([
|
|
|
+ 'sortType' => "task",
|
|
|
+ 'continue' => $continue,
|
|
|
+ 'times' => Base::time(),
|
|
|
+ ])
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+ $from_res = DB::table('project_task')->where("projectid","=",$projectid)->where("labelid","=",$fromid)->pluck("inorder","id");
|
|
|
+ $to_res = DB::table('project_task')->where("projectid","=",$projectid)->where("labelid","=",$toid)->pluck("inorder","id");
|
|
|
+ return Base::retSuccess('保存成功!',["fromid" => $fromid,"from_res" => $from_res,"toid" => $toid,"to_res" => $to_res]);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 排序任务(todo待办)
|
|
|
*
|
|
@@ -1498,7 +1690,7 @@ class ProjectController extends Controller
|
|
|
$overdue ? '是' : '-',
|
|
|
date("Y-m-d H:i:s", $info['indate'])
|
|
|
];
|
|
|
- $subtask = Base::DBC2A(DB::table('project_sub_task')->where(['taskid'=>$info['id'], 'delete' => 0])->orderByDesc('userorder')->get());
|
|
|
+ $subtask = Base::DBC2A(DB::table('project_sub_task')->where(['taskid'=>$info['id'], 'delete' => 0])->orderByDesc('id')->get());
|
|
|
if ($subtask) {
|
|
|
foreach ($subtask AS $subInfo) {
|
|
|
$data[] = [
|
|
@@ -1561,7 +1753,7 @@ class ProjectController extends Controller
|
|
|
foreach ($lists['lists'] AS $key => $info) {
|
|
|
$info['persons'] = Project::taskPersons($info);
|
|
|
$info['overdue'] = Project::taskIsOverdue($info);
|
|
|
- $info['subtask'] = Base::DBC2A(DB::table('project_sub_task')->where(['taskid'=>$info['id'], 'delete' => 0])->orderByDesc('userorder')->get());
|
|
|
+ $info['subtask'] = Base::DBC2A(DB::table('project_sub_task')->where(['taskid'=>$info['id'], 'delete' => 0])->orderByDesc('id')->get());
|
|
|
$info['follower'] = Base::string2array($info['follower']);
|
|
|
$info['plantime'] = ($info['startdate'] > 0 ? date("Y-m-d",$info['startdate']) : "未设置") . "-" . ($info['enddate'] > 0 ? date("Y-m-d H:i:s",$info['enddate']) : "未设置");
|
|
|
$update = DB::table('project_log')->where('taskid', $info['id'])->limit(1)->orderBy('indate','DESC')->first();
|
|
@@ -1619,7 +1811,7 @@ class ProjectController extends Controller
|
|
|
}
|
|
|
//
|
|
|
$task = Base::DBC2A(DB::table('project_task')->where('id', $taskid)->first());
|
|
|
- $task['subtask'] = Base::DBC2A(DB::table('project_sub_task')->where(['taskid'=>$taskid, 'delete' => 0])->orderByDesc('userorder')->get());
|
|
|
+ $task['subtask'] = Base::DBC2A(DB::table('project_sub_task')->where(['taskid'=>$taskid, 'delete' => 0])->orderByDesc('id')->get());
|
|
|
$task['persons'] = Project::taskPersons($task);
|
|
|
$task['overdue'] = Project::taskIsOverdue($task);
|
|
|
$task['follower'] = Base::string2array($task['follower']);
|
|
@@ -1766,7 +1958,7 @@ class ProjectController extends Controller
|
|
|
if (empty($projectid)) {
|
|
|
$inorder = 0;
|
|
|
} else {
|
|
|
- $inorder = intval(DB::table('project_task')->where('projectid', $projectid)->orderBy('inorder', $insertbottom ? 'asc' : 'desc')->value('inorder')) + ($insertbottom ? -1 : 1);
|
|
|
+ $inorder = intval(DB::table('project_task')->where('projectid', $projectid)->where("labelid",$labelid)->orderBy('inorder', $insertbottom ? 'asc' : 'desc')->value('inorder')) + ($insertbottom ? -1 : 1);
|
|
|
}
|
|
|
$userorder = intval(DB::table('project_task')->where('username', $user['username'])->where('level', $level)->orderByDesc('userorder')->value('userorder')) + 1;
|
|
|
//
|
|
@@ -1806,7 +1998,7 @@ class ProjectController extends Controller
|
|
|
$task = Base::DBC2A(DB::table('project_task')->where('id', $taskid)->first());
|
|
|
$task['persons'] = Project::taskPersons($task);
|
|
|
$task['overdue'] = Project::taskIsOverdue($task);
|
|
|
- $task['subtask'] = Base::DBC2A(DB::table('project_sub_task')->where(['taskid'=>$taskid, 'delete' => 0])->orderByDesc('userorder')->get());
|
|
|
+ $task['subtask'] = Base::DBC2A(DB::table('project_sub_task')->where(['taskid'=>$taskid, 'delete' => 0])->orderByDesc('id')->get());
|
|
|
$task['follower'] = Base::string2array($task['follower']);
|
|
|
$task = array_merge($task, Users::username2basic($task['username']));
|
|
|
return Base::retSuccess('添加成功!', $task);
|
|
@@ -1900,7 +2092,7 @@ class ProjectController extends Controller
|
|
|
}
|
|
|
//
|
|
|
$content = Base::newTrim(Base::getPostValue('content'));
|
|
|
- $task['subtask'] = Base::DBC2A(DB::table('project_sub_task')->where(['taskid'=>$taskid, 'delete' => 0])->orderByDesc('userorder')->get());
|
|
|
+ $task['subtask'] = Base::DBC2A(DB::table('project_sub_task')->where(['taskid'=>$taskid, 'delete' => 0])->orderByDesc('id')->get());
|
|
|
$message = "";
|
|
|
$upArray = [];
|
|
|
$logArray = [];
|
|
@@ -2537,7 +2729,7 @@ class ProjectController extends Controller
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
- $task['subtask'] = Base::DBC2A(DB::table('project_sub_task')->where(['taskid'=>$task['id'], 'delete' => 0])->orderByDesc('userorder')->get());
|
|
|
+ $task['subtask'] = Base::DBC2A(DB::table('project_sub_task')->where(['taskid'=>$task['id'], 'delete' => 0])->orderByDesc('id')->get());
|
|
|
|
|
|
$logArray[] = [
|
|
|
'type' => '日志',
|
|
@@ -2641,14 +2833,15 @@ class ProjectController extends Controller
|
|
|
$pushlid = $item['id'];
|
|
|
if($item['detail'] == '修改负责人'){
|
|
|
$ding_followers = $task['follower'];
|
|
|
- $ding_followers[] = $item['old_username'];
|
|
|
+ $ding_followers[] = $item['other']['old_username'];
|
|
|
+ $ding_followers[] = $item['username'];
|
|
|
$users = DB::table('users')->whereIn("username",$ding_followers)->pluck("userid")->toArray();
|
|
|
$json = [
|
|
|
'userid_list' => implode(',',$users),
|
|
|
'msg' => [
|
|
|
'msgtype' => 'oa',
|
|
|
'oa' => [
|
|
|
- 'message_url' => 'http://project.jinjianghc.com/ding?corpId=$CORPID$',
|
|
|
+ 'message_url' => 'https://project.jinjianghc.com/ding?corpId=$CORPID$',
|
|
|
'head' => [
|
|
|
'bgcolor' => 'FFBBBBBB',
|
|
|
'text' => '头部标题'
|
|
@@ -2665,10 +2858,14 @@ class ProjectController extends Controller
|
|
|
Notification::send($json);
|
|
|
}
|
|
|
if($item['detail'] == '修改子任务负责人'){
|
|
|
- $ding_followers = $task['follower'];
|
|
|
- if(!empty($item['other']['old_subtask']['uname'])){
|
|
|
- $ding_followers[] = $item['other']['old_subtask']['uname'];
|
|
|
+ if(is_array($task['follower'])){
|
|
|
+ $ding_followers = $task['follower'];
|
|
|
+ }else{
|
|
|
+ $ding_followers = [];
|
|
|
}
|
|
|
+
|
|
|
+ $ding_followers[] = $item['other']['subtask'][0]['uname'];
|
|
|
+ $ding_followers[] = $item['username'];
|
|
|
$sub_own = array_merge($item, Users::username2basic($item['other']['subtask'][0]['uname']));
|
|
|
$users = DB::table('users')->whereIn("username",$ding_followers)->pluck("userid")->toArray();
|
|
|
$json = [
|
|
@@ -2676,7 +2873,7 @@ class ProjectController extends Controller
|
|
|
'msg' => [
|
|
|
'msgtype' => 'oa',
|
|
|
'oa' => [
|
|
|
- 'message_url' => 'http://project.jinjianghc.com/ding?corpId=$CORPID$',
|
|
|
+ 'message_url' => 'https://project.jinjianghc.com/ding?corpId=$CORPID$',
|
|
|
'head' => [
|
|
|
'bgcolor' => 'FFBBBBBB',
|
|
|
'text' => '头部标题'
|