Explorar el Código

Merge remote-tracking branch 'origin/master'

humingbo hace 1 año
padre
commit
71e3119b20

+ 1 - 1
src/utils/date.js

@@ -126,7 +126,7 @@ export default {
     return moment(date).add(1, 'weeks').startOf('week').format(DATE_FORMAT)
   },
 
-  getFeedBackDate(startDate, endDate, day) {
+  getFeedBackDate(startDate,endDate, day) {
     let startYear = moment(startDate).year()
     let endYear = moment(endDate).year()
 

+ 1 - 2
src/utils/request.js

@@ -4,6 +4,7 @@ import store from '@/store'
 import {getToken} from '@/utils/auth'
 
 axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
+let loading;
 
 // create an axios instance
 const service = axios.create({
@@ -12,7 +13,6 @@ const service = axios.create({
   timeout: 5000 // request timeout
 })
 
-let loading;
 // request interceptor
 service.interceptors.request.use(
   config => {
@@ -24,7 +24,6 @@ service.interceptors.request.use(
       // please modify it according to the actual situation
       config.headers['satoken'] = getToken();
     }
-
     loading = Loading.service({
       lock: true,
       text: '数据请求中.....',

+ 3 - 7
src/views/dashboard/index.vue

@@ -173,15 +173,11 @@ export default {
     }
   },
   beforeDestroy() {
-    clearInterval(this.timer)
+    // clearInterval(this.timer)
   },
   mounted() {
-    this.timer = setInterval(this.queryData, 5000)
-    this.getTodoTask();
-    this.getAssetReceive();
-    this.getTaskList();
-    this.getTodoMeetinStatisticss()
-    this.getEnforceRemindCounts()
+    // this.timer = setInterval(this.queryData, 5000)
+    this.queryData()
   },
   methods: {
     queryData() {

+ 31 - 15
src/views/system/user.vue

@@ -146,7 +146,7 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="归属部门" prop="deptId">
+            <el-form-item label="归属部门" prop="deptId" class="mini-treeselect">
               <treeselect v-model="form.deptId" :options="deptOptions" :normalizer="normalizer" :show-count="true"
                           placeholder="请选择归属部门"/>
             </el-form-item>
@@ -154,7 +154,7 @@
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item v-if="form.id == undefined" label="登录账户" prop="account">
+            <el-form-item label="登录账户" prop="account">
               <el-input v-model="form.account" placeholder="请输入登录账户" maxlength="30"/>
             </el-form-item>
           </el-col>
@@ -163,25 +163,30 @@
               <el-input v-model="form.password" placeholder="请输入用户密码" type="password" maxlength="20" show-password/>
             </el-form-item>
           </el-col>
+          <el-col :span="12">
+            <el-form-item v-if="form.id" label="岗位" prop="post">
+              <el-input v-model="form.post" placeholder="请输入岗位" maxlength="32"/>
+            </el-form-item>
+          </el-col>
         </el-row>
-        <el-row>
+        <el-row v-if="form.id == undefined">
           <el-col :span="12">
             <el-form-item label="岗位" prop="post">
               <el-input v-model="form.post" placeholder="请输入岗位" maxlength="32"/>
             </el-form-item>
           </el-col>
           <el-col :span="12">
-<!--            <el-form-item label="角色" prop="roleIds">-->
-<!--              <el-select v-model="form.roleIds" multiple placeholder="请选择角色">-->
-<!--                <el-option-->
-<!--                  v-for="item in roleOptions"-->
-<!--                  :key="item.id"-->
-<!--                  :label="item.roleName"-->
-<!--                  :value="item.id"-->
-<!--                  :disabled="item.status == 1"-->
-<!--                ></el-option>-->
-<!--              </el-select>-->
-<!--            </el-form-item>-->
+            <!--            <el-form-item label="角色" prop="roleIds">-->
+            <!--              <el-select v-model="form.roleIds" multiple placeholder="请选择角色">-->
+            <!--                <el-option-->
+            <!--                  v-for="item in roleOptions"-->
+            <!--                  :key="item.id"-->
+            <!--                  :label="item.roleName"-->
+            <!--                  :value="item.id"-->
+            <!--                  :disabled="item.status == 1"-->
+            <!--                ></el-option>-->
+            <!--              </el-select>-->
+            <!--            </el-form-item>-->
           </el-col>
         </el-row>
         <el-row>
@@ -545,7 +550,7 @@ export default {
     handlePermission(row) {
       menuTreeselect().then(res => {
         this.menuOptions = res.data;
-        this.permissionUserId=row.id
+        this.permissionUserId = row.id
         this.permissionOpen = true
         getPermissionByUserId(row.id).then(res => {
           res.data.forEach((v) => {
@@ -585,4 +590,15 @@ export default {
 .custom-dialog::v-deep .el-dialog__body {
   padding: 0 20px 10px 20px;
 }
+
+.mini-treeselect {
+  ::v-deep.vue-treeselect__control {
+    height: 28px;
+  }
+
+  ::v-deep.vue-treeselect__placeholder, .vue-treeselect__single-value {
+    padding-left: 10px;
+    line-height: 28px;
+  }
+}
 </style>

+ 103 - 6
src/views/task/projectView.vue

@@ -170,6 +170,7 @@
       </el-table-column>
     </el-table>
 
+    <!-- 添加评论对话框 -->
     <el-dialog title="添加评论" :visible.sync="open" width="680px" class="feed-dialog" append-to-body @close="cancel">
       <el-form ref="form" :model="form" :rules="rules" size="mini" label-width="100px">
         <el-form-item label="任务名称">
@@ -203,11 +204,43 @@
       </div>
     </el-dialog>
 
+    <!-- 任务详情对话框 -->
     <el-dialog :title="detailForm.id+'、'+detailForm.taskName" :visible.sync="openDetail" width="900px"
                class="feed-dialog" :close-on-click-modal="true" append-to-body>
       <task-detail :detailForm="detailForm"></task-detail>
     </el-dialog>
 
+    <!-- 审核任务对话框 -->
+    <el-dialog :title="detailForm.id+'、'+detailForm.taskName" :visible.sync="auditOpen" width="900px" class="add-dialog"
+               append-to-body @close="auditCancel">
+      <task-detail :detail-form="detailForm"></task-detail>
+      <el-form ref="auditForm" :model="auditForm" :rules="auditRules" size="mini" label-width="100px">
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="审核意见" prop="auditResult">
+              <el-radio-group v-model="auditForm.auditResult">
+                <el-radio label="1">确认完成</el-radio>
+                <el-radio label="0">驳回</el-radio>
+                <el-radio label="9">评论</el-radio>
+              </el-radio-group>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item v-if="auditForm.auditResult==='0'" label="进度(%)" prop="value">
+              <el-input-number v-model="auditForm.value" :min="1" :max="99"></el-input-number>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-form-item label="审核备注" prop="auditOpinion">
+          <el-input v-model="auditForm.auditOpinion" type="textarea"/>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" size="mini" @click="submitAudit">确 定</el-button>
+        <el-button size="mini" @click="auditCancel">取 消</el-button>
+      </div>
+    </el-dialog>
+
   </div>
 </template>
 
@@ -219,7 +252,7 @@ import {
   getFeedbackList,
   confirmComment,
   listProjectView,
-  childrenTask
+  childrenTask, auditTask
 } from "@/api/task/task";
 import {getProjectList, getProjectTree} from "@/api/task/project";
 import DateUtil from "@/utils/date"
@@ -230,6 +263,7 @@ import RichTextEditor from "@/components/RichTextEditor"
 import {getDeptUserTree} from "@/api/system/user";
 import task from "@/views/mixins/task";
 import elTableInfiniteScroll from 'el-table-infinite-scroll'
+import {mapGetters} from "vuex";
 
 export default {
   components: {TaskDetail, FileUpload, DeptUserTree, RichTextEditor},
@@ -238,6 +272,9 @@ export default {
     'el-table-infinite-scroll': elTableInfiniteScroll
   },
   mixins: [task],
+  computed: {
+    ...mapGetters(['userId'])
+  },
   data() {
     return {
       queryParams: {
@@ -266,6 +303,16 @@ export default {
       },
       openDetail: false,
       detailForm: {},
+      auditOpen: false,
+      auditForm: {},
+      auditRules: {
+        auditResult: [
+          {required: true, message: "审核意见不能为空", trigger: "change"}
+        ],
+        value: [
+          {required: true, message: "进度不能为空", trigger: "blur"}
+        ]
+      }
     }
   },
   watch: {
@@ -390,10 +437,23 @@ export default {
       if (column.property != "taskName") {
         return
       }
-      getTask(row.id).then(res => {
-        this.detailForm = res.data
-        this.openDetail = true
-      })
+      if (row.status === '6' && row.auditUserId === this.userId) {
+        getTask(row.id).then(res => {
+          this.detailForm = res.data;
+          this.auditForm = {
+            taskId: row.id,
+            auditResult: undefined,
+            value: undefined,
+            auditOpinion: undefined
+          }
+          this.auditOpen = true;
+        })
+      } else {
+        getTask(row.id).then(res => {
+          this.detailForm = res.data
+          this.openDetail = true
+        })
+      }
     },
     feedbackTypeChange(val) {
       if (val === '2') {
@@ -484,7 +544,44 @@ export default {
       childrenTask(params).then(res => {
         resolve(res.data)
       })
-    }
+    },
+    /** 审核任务提交按钮 */
+    submitAudit() {
+      this.$refs["auditForm"].validate(valid => {
+        if (valid) {
+          if (this.auditForm.auditResult != '9') {
+            auditTask(this.auditForm).then(res => {
+              this.$message.success("操作成功");
+              this.getList()
+              this.auditCancel()
+            })
+          } else {
+            let data = {
+              taskId: this.auditForm.taskId,
+              feedbackDate: DateUtil.day(),
+              feedbackType: '4',
+              description: this.auditForm.auditOpinion
+            }
+            addTaskFeedback(data).then(res => {
+              this.$message.success("评论成功");
+              this.auditCancel()
+            });
+          }
+        }
+      });
+    },
+    // 审核取消按钮
+    auditCancel() {
+      this.detailForm = {};
+      this.auditForm = {
+        taskId: undefined,
+        auditResult: undefined,
+        value: undefined,
+        auditOpinion: undefined
+      }
+      this.resetForm("auditForm");
+      this.auditOpen = false;
+    },
   }
 }
 </script>

+ 18 - 14
src/views/task/task.vue

@@ -94,10 +94,10 @@
                   row-key="id"
                   :indent="10"
                   :tree-props="{children: 'children'}">
-          <el-table-column label="任务编号" prop="id"/>
+          <el-table-column label="任务编号" prop="id" width="120"/>
           <el-table-column label="任务名称" prop="taskName" min-width="150" :show-overflow-tooltip="true"/>
-          <el-table-column label="执行(负责)人" prop="executorName" width="100"/>
-          <el-table-column label="进度" prop="progressValue" width="70">
+          <el-table-column label="执行(负责)人" prop="executorName" width="95"/>
+          <el-table-column label="进度" prop="progressValue" width="60">
             <template slot-scope="scope">
               <span>{{ (scope.row.progressValue ? scope.row.progressValue : 0) + '%' }}</span>
             </template>
@@ -110,7 +110,7 @@
               </el-tag>
             </template>
           </el-table-column>
-          <el-table-column label="优先级" prop="priority" align="center" width="80">
+          <el-table-column label="优先级" prop="priority" align="center" width="60">
             <template slot-scope="scope">
               <el-tag v-if="scope.row.priority==='1'" color="#fa8888" effect="dark" :hit="false">
                 {{ getTaskPriority(scope.row.priority) }}
@@ -129,19 +129,19 @@
           </el-table-column>
           <el-table-column label="开始时间" prop="beginDate" sortable="custom" width="100"/>
           <el-table-column label="结束时间" prop="endDate" sortable="custom" width="100"/>
-          <el-table-column label="操作" width="120">
+          <el-table-column label="操作" width="66">
             <template slot-scope="scope">
-              <el-button size="mini"
-                         type="text"
-                         icon="el-icon-coordinate"
-                         @click="handleAudit(scope.row)"
-                         :disabled="scope.row.status!='6'||scope.row.auditUserId!=userId"
-                         v-hasPermi="['task:task:audit']"
-              >审核
-              </el-button>
+              <!--              <el-button size="mini"-->
+              <!--                         type="text"-->
+              <!--                         icon="el-icon-coordinate"-->
+              <!--                         @click="handleAudit(scope.row)"-->
+              <!--                         :disabled="scope.row.status!='6'||scope.row.auditUserId!=userId"-->
+              <!--                         v-hasPermi="['task:task:audit']"-->
+              <!--              >审核-->
+              <!--              </el-button>-->
               <el-dropdown size="mini" @command="(command) => handleCommand(command, scope.row)"
                            v-hasPermi="['task:task:edit','task:task:split', 'task:task:delete']">
-                <el-button size="mini" type="text" icon="el-icon-d-arrow-right">更多</el-button>
+                <el-button size="mini" type="text">更多<i class="el-icon-d-arrow-right"/></el-button>
                 <el-dropdown-menu slot="dropdown">
                   <el-dropdown-item command="handleSplit" icon="el-icon-tickets"
                                     v-hasPermi="['task:task:split']"
@@ -541,6 +541,10 @@ export default {
       if (!column.property || column.property != 'taskName') {
         return
       }
+      if (row.status === '6' && row.auditUserId === this.userId) {
+        this.handleAudit(row)
+        return;
+      }
       getTask(row.id).then(res => {
         this.detailForm = res.data;
         this.detailOpen = true;

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

@@ -247,7 +247,7 @@
       </div>
     </el-dialog>
 
-    <el-dialog :title="detailForm.taskName" :visible.sync="openDetail" width="900px" class="feed-dialog"
+    <el-dialog :title="detailForm.id+'、'+detailForm.taskName" :visible.sync="openDetail" width="900px" class="feed-dialog"
                :close-on-click-modal="true"
                append-to-body>
       <task-detail :detailForm="detailForm"></task-detail>