kuaifan hace 5 años
padre
commit
5c5e7730f4

+ 8 - 8
app/Http/Controllers/Api/ProjectController.php

@@ -102,7 +102,7 @@ class ProjectController extends Controller
         $label = Base::DBC2A(DB::table('project_label')->where('projectid', $projectid)->orderBy('inorder')->orderBy('id')->get());
         $simpleLabel = [];
         //任务
-        $task = Base::DBC2A(DB::table('project_task')->where([ 'projectid' => $projectid, 'delete' => 0, 'complete' => 0 ])->orderBy('level')->orderBy('id')->get());
+        $task = Base::DBC2A(DB::table('project_task')->where([ 'projectid' => $projectid, 'delete' => 0, 'complete' => 0 ])->orderByDesc('inorder')->orderByDesc('id')->get());
         //任务归类
         foreach ($label AS $index => $temp) {
             $taskLists = [];
@@ -112,7 +112,7 @@ class ProjectController extends Controller
                     $taskLists[] = array_merge($info, Users::username2basic($info['username']));
                 }
             }
-            $label[$index]['taskLists'] = Project::sortTask($taskLists);
+            $label[$index]['taskLists'] = $taskLists;
             $simpleLabel[] = ['id' => $temp['id'], 'title' => $temp['title']];
         }
         //
@@ -785,7 +785,6 @@ class ProjectController extends Controller
      * - 已完成
      * @apiParam {String} [username]            负责人用户名
      * @apiParam {Number} [statistics]          是否获取统计数据(1:获取)
-     * @apiParam {Number} [levelsort]           是否按紧急排序(1:是)
      * @apiParam {Number} [page]                当前页,默认:1
      * @apiParam {Number} [pagesize]            每页显示数量,默认:20,最大:100
      */
@@ -804,7 +803,7 @@ class ProjectController extends Controller
             return $inRes;
         }
         //
-        $orderBy = '`id` ASC';
+        $orderBy = '`inorder` DESC,`id` DESC';
         $whereArray = [];
         $whereArray[] = ['project_lists.id', '=', $projectid];
         $whereArray[] = ['project_lists.delete', '=', 0];
@@ -843,9 +842,6 @@ class ProjectController extends Controller
                 $whereArray[] = ['project_task.complete', '=', 1];
                 break;
         }
-        if (intval(Request::input('levelsort')) == 1) {
-            $orderBy = '`level` ASC,' . $orderBy;
-        }
         //
         $lists = DB::table('project_lists')
             ->join('project_task', 'project_lists.id', '=', 'project_task.projectid')
@@ -951,7 +947,11 @@ class ProjectController extends Controller
                 'indate' => Base::time()
             ]);
             Project::updateNum($inArray['projectid']);
-            return Base::retSuccess('添加成功!');
+            //
+            $task = Base::DBC2A(DB::table('project_task')->where('id', $taskid)->first());
+            $task['overdue'] = Project::taskIsOverdue($task);
+            $task = array_merge($task, Users::username2basic($task['username']));
+            return Base::retSuccess('添加成功!', $task);
         });
     }
 

+ 1 - 1
resources/assets/js/main/components/project/task/add.vue

@@ -214,7 +214,7 @@
                             this.addText = '';
                             this.addFocus = false;
                             this.$Message.success(res.msg);
-                            this.$emit('on-add-success');
+                            this.$emit('on-add-success', res.data);
                         } else {
                             this.$Modal.error({title: this.$L('温馨提示'), content: res.msg});
                         }

+ 2 - 2
resources/assets/js/main/components/project/users.vue

@@ -51,8 +51,8 @@
                 render: (h, params) => {
                     return h('img', {
                         style: {
-                            width: "36px",
-                            height: "36px",
+                            width: "32px",
+                            height: "32px",
                             verticalAlign: "middle",
                             objectFit: "cover",
                             borderRadius: "50%"

+ 56 - 25
resources/assets/js/main/pages/project-panel.vue

@@ -35,6 +35,7 @@
                             <Dropdown trigger="click" @on-click="handleLabel($event, label)" transfer>
                                 <Icon type="ios-more"/>
                                 <DropdownMenu slot="list">
+                                    <Dropdown-item name="refresh">{{$L('刷新列表')}}</Dropdown-item>
                                     <Dropdown-item name="rename">{{$L('重命名')}}</Dropdown-item>
                                     <Dropdown-item name="delete">{{$L('删除')}}</Dropdown-item>
                                 </DropdownMenu>
@@ -42,7 +43,12 @@
                         </div>
                         <draggable v-model="label.taskLists" class="task-box" group="task" :animation="150" draggable=".task-draggable">
                             <div v-for="task in label.taskLists" :key="task.id" class="task-item task-draggable">
-                                <div class="task-shadow" :class="['p'+task.level,task.complete?'complete':'',task.overdue?'overdue':'']">
+                                <div class="task-shadow" :class="[
+                                        'p'+task.level,
+                                        task.complete ? 'complete' : '',
+                                        task.overdue ? 'overdue' : '',
+                                        task.isNewtask === true ? 'newtask' : ''
+                                    ]">
                                     <div class="task-title">{{task.title}}</div>
                                     <div class="task-more">
                                         <div v-if="task.overdue" class="task-status">已超期</div>
@@ -53,7 +59,7 @@
                                 </div>
                             </div>
                             <div slot="footer">
-                                <project-add-task :placeholder='`添加任务至"${label.title}"`' :projectid="label.projectid" :labelid="label.id" @on-add-success="addTaskSuccess(label)"></project-add-task>
+                                <project-add-task :placeholder='`添加任务至"${label.title}"`' :projectid="label.projectid" :labelid="label.id" @on-add-success="addTaskSuccess($event, label)"></project-add-task>
                             </div>
                         </draggable>
                     </div>
@@ -204,6 +210,7 @@
                                 cursor: pointer;
                                 box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
                                 transition: all 0.3s;
+                                transform: scale(1);
                                 &:hover{
                                     box-shadow: 0 0 4px 0 rgba(0, 0, 0, 0.38);
                                 }
@@ -227,15 +234,22 @@
                                     }
                                 }
                                 &.overdue {
+                                    .task-title {
+                                        font-weight: bold;
+                                    }
                                     .task-more {
                                         .task-status {
                                             color: #ff0000;
                                         }
                                     }
                                 }
+                                &.newtask {
+                                    transform: scale(1.5);
+                                }
                                 .task-title {
                                     font-size: 12px;
                                     color: #091e42;
+                                    word-break: break-all;
                                 }
                                 .task-more {
                                     min-height: 30px;
@@ -351,6 +365,10 @@
             },
             handleLabel(event, labelDetail) {
                 switch (event) {
+                    case 'refresh': {
+                        this.refreshLabel(labelDetail);
+                        break;
+                    }
                     case 'rename': {
                         this.renameLabel(labelDetail);
                         break;
@@ -362,6 +380,31 @@
                 }
             },
 
+            refreshLabel(item) {
+                this.$set(item, 'loadIng', true);
+                $A.aAjax({
+                    url: 'project/task/lists',
+                    data: {
+                        projectid: this.projectid,
+                        labelid: item.id,
+                        levelsort: 1
+                    },
+                    complete: () => {
+                        this.$set(item, 'loadIng', false);
+                    },
+                    error: () => {
+                        window.location.reload();
+                    },
+                    success: (res) => {
+                        if (res.ret === 1) {
+                            this.$set(item, 'taskLists', res.data.lists);
+                        } else {
+                            window.location.reload();
+                        }
+                    }
+                });
+            },
+
             renameLabel(item) {
                 this.renameValue = "";
                 this.$Modal.confirm({
@@ -521,29 +564,17 @@
                     },
                 });
             },
-            addTaskSuccess(label) {
-                this.$set(label, 'loadIng', true);
-                $A.aAjax({
-                    url: 'project/task/lists',
-                    data: {
-                        projectid: this.projectid,
-                        labelid: label.id,
-                        levelsort: 1
-                    },
-                    complete: () => {
-                        this.$set(label, 'loadIng', false);
-                    },
-                    error: () => {
-                        window.location.reload();
-                    },
-                    success: (res) => {
-                        if (res.ret === 1) {
-                            this.$set(label, 'taskLists', res.data.lists);
-                        } else {
-                            window.location.reload();
-                        }
-                    }
-                });
+
+            addTaskSuccess(taskDetail, label) {
+                if (label.taskLists instanceof Array) {
+                    taskDetail.isNewtask = true;
+                    label.taskLists.unshift(taskDetail);
+                    this.$nextTick(() => {
+                        this.$set(taskDetail, 'isNewtask', false);
+                    });
+                } else {
+                    this.refreshLabel(label);
+                }
             },
 
             openProjectDrawer(tab) {

+ 1 - 1
resources/assets/js/main/pages/project.vue

@@ -38,7 +38,7 @@
                                         <Dropdown-item v-if="item.isowner" name="rename">{{$L('重命名')}}</Dropdown-item>
                                         <Dropdown-item v-if="item.isowner" name="transfer">{{$L('移交项目')}}</Dropdown-item>
                                         <Dropdown-item v-if="item.isowner" name="delete">{{$L('删除')}}</Dropdown-item>
-                                        <Dropdown-item name="out">{{$L('退出')}}</Dropdown-item>
+                                        <Dropdown-item v-else name="out">{{$L('退出')}}</Dropdown-item>
                                     </Dropdown-menu>
                                 </Dropdown>
                             </div>