Browse Source

任务默认查询待办任务;任务视图展示当天反馈工时;任务反馈时,计划工时修改为非必填,任务进度修改为手动填写

yanshichao 1 year ago
parent
commit
04dea67f14
3 changed files with 100 additions and 78 deletions
  1. 1 1
      src/views/task/projectView.vue
  2. 1 1
      src/views/task/task.vue
  3. 98 76
      src/views/task/view.vue

+ 1 - 1
src/views/task/projectView.vue

@@ -245,7 +245,7 @@ export default {
         projectId: undefined,
         startDate: undefined,
         endDate: undefined,
-        status: '0',
+        status: '1',
         priority: undefined
       },
       loading: true,

+ 1 - 1
src/views/task/task.vue

@@ -387,7 +387,7 @@ export default {
         projectId: undefined,
         startDate: undefined,
         endDate: undefined,
-        status: '0',
+        status: '1',
         priority: undefined,
         sortField: undefined,
         order: undefined

+ 98 - 76
src/views/task/view.vue

@@ -1,57 +1,71 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="mini" :inline="true">
-      <el-form-item label="日期" prop="startDate">
-        <el-date-picker
-          v-model="queryParams.startDate"
-          type="date"
-          value-format="yyyy-MM-dd"
-          @change="getList"
-          placeholder="开始日期"
-          :clearable="false"
-          style="width: 135px">
-        </el-date-picker>
-      </el-form-item>
-      <el-form-item label="至" prop="endDate">
-        <el-date-picker
-          v-model="queryParams.endDate"
-          type="date"
-          value-format="yyyy-MM-dd"
-          @change="getList"
-          placeholder="结束日期"
-          :clearable="false"
-          style="width: 135px">
-        </el-date-picker>
-      </el-form-item>
-      <el-form-item prop="status">
-        <el-radio-group v-model="queryParams.status" size="mini" @change="getList">
-          <el-radio-button
-            v-for="dict in dict.type.task_status"
-            :key="dict.value"
-            :label="dict.value"
-          >{{ dict.label }}
-          </el-radio-button>
-        </el-radio-group>
-      </el-form-item>
-      <el-form-item prop="priority">
-        <el-select
-          v-model="queryParams.priority"
-          @change="getList"
-          clearable
-          placeholder="优先级"
-          style="width: 85px">
-          <el-option
-            v-for="dict in dict.type.task_priority"
-            :key="dict.value"
-            :label="dict.label"
-            :value="dict.value">
-            <el-tag :color="priorityColorMap[dict.value]" effect="dark" :hit="false">
-              {{ dict.label }}
-            </el-tag>
-          </el-option>
-        </el-select>
-      </el-form-item>
-    </el-form>
+    <el-row>
+      <el-col :span="22">
+        <el-form :model="queryParams" ref="queryForm" size="mini" :inline="true">
+          <el-form-item label="日期" prop="startDate">
+            <el-date-picker
+              v-model="queryParams.startDate"
+              type="date"
+              value-format="yyyy-MM-dd"
+              @change="getList"
+              placeholder="开始日期"
+              :clearable="false"
+              style="width: 135px">
+            </el-date-picker>
+          </el-form-item>
+          <el-form-item label="至" prop="endDate">
+            <el-date-picker
+              v-model="queryParams.endDate"
+              type="date"
+              value-format="yyyy-MM-dd"
+              @change="getList"
+              placeholder="结束日期"
+              :clearable="false"
+              style="width: 135px">
+            </el-date-picker>
+          </el-form-item>
+          <el-form-item prop="status">
+            <el-radio-group v-model="queryParams.status" size="mini" @change="getList">
+              <el-radio-button
+                v-for="dict in dict.type.task_status"
+                :key="dict.value"
+                :label="dict.value"
+              >{{ dict.label }}
+              </el-radio-button>
+            </el-radio-group>
+          </el-form-item>
+          <el-form-item prop="priority">
+            <el-select
+              v-model="queryParams.priority"
+              @change="getList"
+              clearable
+              placeholder="优先级"
+              style="width: 85px">
+              <el-option
+                v-for="dict in dict.type.task_priority"
+                :key="dict.value"
+                :label="dict.label"
+                :value="dict.value">
+                <el-tag :color="priorityColorMap[dict.value]" effect="dark" :hit="false">
+                  {{ dict.label }}
+                </el-tag>
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </el-form>
+      </el-col>
+      <el-col :span="2">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+        >日常任务
+        </el-button>
+      </el-col>
+    </el-row>
 
     <el-table
       class="view-table"
@@ -85,13 +99,19 @@
       </el-table-column>
       <el-table-column align="center" v-for="header in tableHeaders" :key="header.day" :prop="header.day" width="42">
         <template slot="header">
-          <div style="width:40px;text-align: center">
-            <div style="font-size: 10px;">{{ header.day }}</div>
-            <div v-if="header.week=='周六'" class="view-cell" style="color: #1c84c6">{{ header.week }}</div>
-            <div v-else-if="header.week=='周日'" class="view-cell" style="color: #1c84c6">{{ header.week }}</div>
-            <div v-else-if="header.week=='今日'" class="view-cell" style="color: #00E704">{{ header.week }}</div>
-            <div v-else class="view-cell">{{ header.week }}</div>
-          </div>
+          <el-popover placement="top" trigger="hover">
+            <div>{{ header.day }}已反馈工时:
+              <span style="font-size: 16px;font-weight: bold; margin-right: 5px">{{ header.dayHours }}</span>
+              小时
+            </div>
+            <div slot="reference" style="width:40px;text-align: center;cursor: pointer">
+              <div style="font-size: 10px;">{{ header.day }}</div>
+              <div v-if="header.week=='周六'" class="view-cell" style="color: #1c84c6">{{ header.week }}</div>
+              <div v-else-if="header.week=='周日'" class="view-cell" style="color: #1c84c6">{{ header.week }}</div>
+              <div v-else-if="header.week=='今日'" class="view-cell" style="color: #00E704">{{ header.week }}</div>
+              <div v-else class="view-cell">{{ header.week }}</div>
+            </div>
+          </el-popover>
         </template>
         <template slot-scope="scope">
           <span v-if="scope.row[header.day].comment" class="comment-badge"></span>
@@ -177,8 +197,8 @@
         </el-row>
         <el-row :gutter="20">
           <el-col :span="12">
-            <el-form-item label="计划工时" prop="planHours">
-              <el-input-number v-model="form.planHours" @change="hoursChange" :min="0.1" :step="0.1"
+            <el-form-item label="计划工时">
+              <el-input-number v-model="form.planHours" :min="0.1" :step="0.1"
                                :step-strictly="true"
                                :controls="false"></el-input-number>
               <span style="margin-left: 5px">小时</span>
@@ -194,20 +214,16 @@
         <el-row :gutter="20">
           <el-col :span="12">
             <el-form-item label="工作时长" prop="hours">
-              <el-input-number v-model="form.hours" @change="hoursChange" :min="0.1" :max="24" :step="0.1"
+              <el-input-number v-model="form.hours" :min="0.1" :max="24" :step="0.1"
                                :step-strictly="true" :controls="false"></el-input-number>
               <span style="margin-left: 5px">小时</span>
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item prop="value">
-              <template slot="label">
-                <span>进度</span>
-                <el-tooltip class="item" effect="dark" content="计算方式:(工作时长+已反馈工时)÷计划工时×100%" placement="top">
-                  <i class="el-icon-info"></i>
-                </el-tooltip>
-              </template>
-              <el-progress :percentage="form.value" style="margin-top: 7px"></el-progress>
+            <el-form-item label="任务进度" prop="value">
+              <el-input-number v-model="form.value" :min="1" :max="100" :step="1"
+                               :step-strictly="true" :controls="false"></el-input-number>
+              <span style="margin-left: 5px">%</span>
             </el-form-item>
           </el-col>
         </el-row>
@@ -382,7 +398,7 @@ export default {
         projectId: undefined,
         startDate: undefined,
         endDate: undefined,
-        status: '0',
+        status: '1',
         priority: undefined,
         userId: undefined
       },
@@ -390,7 +406,6 @@ export default {
       projectTree: [],
       tableHeaders: [],
       tableData: [],
-      popoverVisible: false,
 
       open: false,
       form: {},
@@ -402,9 +417,6 @@ export default {
         value: [
           {required: true, validator: validateValue, trigger: 'blur'}
         ],
-        planHours: [
-          {required: true, message: "计划工时不能为空", trigger: "blur"}
-        ],
         hours: [
           {required: true, validator: validateHours, trigger: 'blur'}
         ],
@@ -453,7 +465,16 @@ export default {
       }
       this.queryParams.userId = this.userId
       listView(this.queryParams).then(res => {
-        this.tableHeaders = res.data.headers
+        this.tableHeaders = res.data.headers.map(header => {
+          let dayHours = 0;
+          res.data.data.forEach(item => {
+            if (item[header.day].hours) {
+              dayHours += item[header.day].hours
+            }
+          })
+          header['dayHours'] = dayHours
+          return header;
+        })
         this.tableData = res.data.data
         this.loading = false
       })
@@ -526,6 +547,7 @@ export default {
         this.openDetail = true
       })
     },
+
     feedbackTypeChange(val) {
       if (val === '2') {
         this.form.value = 100