Преглед на файлове

工时管家——工时报告

ZhouRuiTing преди 5 години
родител
ревизия
5ff6fc2f02
променени са 2 файла, в които са добавени 92 реда и са изтрити 15 реда
  1. 4 1
      fhKeeper/formulahousekeeper/timesheet/src/port.js
  2. 88 14
      fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue

+ 4 - 1
fhKeeper/formulahousekeeper/timesheet/src/port.js

@@ -48,6 +48,9 @@ export default {
         list: '/report/getReportList',                          // 获取报告列表
         export: '/report/exportReport',                         // 导出报告
         getPort: '/report/getReport',                           // 获取当天自己报告
-        editPort: '/report/editReport',                             // 编辑报告
+        editPort: '/report/editReport',                         // 编辑报告
+
+        approve: '/report/approve',                             // 通过报告
+        deny: '/report/deny',                                   // 未通过
     }
 }

+ 88 - 14
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue

@@ -33,12 +33,13 @@
                                 总填报:
                                 <span :style="parseFloat(item1.reportTime)>parseFloat(item1.calculateTime)+0.5?'color:red':''">{{item1.reportTime}}h</span>
                             </span>
-                            <span>系统智能统计:{{item1.calculateTime}}h</span>
+                            <el-link v-if="user.role != 0" type="primary" :underline="false" @click="junpToDeskTop">系统智能统计:{{item1.calculateTime}}h</el-link>
+                            <span v-else>系统智能统计:{{item1.calculateTime}}h</span>
                         </span>
                         <div class="checkbtn">
-                            <el-button type="primary" size="small" @click="submitDepartment">通过</el-button>
-                            <el-button type="danger" size="small" @click="submitDepartment">驳回</el-button>
-                            <el-button type="danger" size="small" @click="submitDepartment">驳回</el-button>
+                            <el-button v-if="user.role != 0 && item1.state == 0" type="primary" :loading="logining" size="small" @click="approve(item1.id)">通过</el-button>
+                            <el-button v-if="user.role != 0 && item1.state == 0" type="danger" :loading="logining" size="small" @click="deny(item1.id,0)">驳回</el-button>
+                            <el-button v-if="user.role != 0 && item1.state == 1" type="danger" :loading="logining" size="small" @click="deny(item1.id,1)">撤销</el-button>
                         </div>
                         <div class="one_daily_body">
                             <el-timeline>
@@ -63,7 +64,7 @@
             <el-form ref="workForm" :model="workForm" :rules="workRules" label-width="100px">
                 <el-form-item label="工作日期" prop="createDate">
                     <el-date-picker v-model="workForm.createDate" :editable="false" format="yyyy-MM-dd" value-format="yyyy-MM-dd" 
-                    @change="changeMonth()" :clearable="false" type="date" placeholder="选择工作日期" style="width:100%;"></el-date-picker>
+                    @change="changeMonth()" :clearable="false" type="date" placeholder="选择工作日期"></el-date-picker>
                 </el-form-item>
                 <el-form-item label="待分配时长" prop="name">
                     <span>{{report.time}}h</span>
@@ -72,28 +73,32 @@
                 <div v-for="(domain, index) in workForm.domains" :key="domain.id">
                     <el-form-item label="投入项目" :prop="'domains.' + index + '.projectId'"
                         :rules="{ required: true, message: '请选择投入项目', trigger: ['change','blur'] }">
-                        <el-select v-model="domain.projectId" placeholder="请选择" style="width:200px;">
+                        <el-select v-model="domain.projectId" placeholder="请选择" style="width:200px;"
+                        :disabled="workForm.domains.length!=0 && workForm.domains[0].state!=2">
                             <el-option v-for="item in projectList" :key="item.id" :label="item.projectName" :value="item.id"></el-option>
                         </el-select>
-                        <el-link v-if="index >= 1" type="primary" :underline="false" @click="delDomain(index)" style="float:right;margin-right:10px;">
+                        <el-link v-if="index >= 1" type="primary" :underline="false" @click="delDomain(index)" style="float:right;margin-right:10px;"
+                            :disabled="workForm.domains.length!=0 && workForm.domains[0].state!=2">
                             <i class="fa fa-trash" style="color: red;;font-size:18px;"></i>
                         </el-link>
                     </el-form-item>
 
                     <el-form-item label="投入时长" :prop="'domains.' + index + '.workingTime'"
                         :rules="{ required: true, message: '请输入投入时长', trigger: 'blur' }">
-                        <el-input v-model.number="domain.workingTime" placeholder="请输入投入时长" type='number' clearable style="width:200px;"></el-input>
+                        <el-input v-model.number="domain.workingTime" placeholder="请输入投入时长" type='number' clearable style="width:200px;"
+                         :disabled="workForm.domains.length!=0 && workForm.domains[0].state!=2"></el-input>
                     </el-form-item>
 
                     <el-form-item label="工作事项" :prop="'domains.' + index + '.content'" :rules="{ required: true, message: '请输入工作事项', trigger: 'blur' }">
-                        <el-input v-model="domain.content" type="textarea" :rows="4" placeholder="请输入投入时长" clearable></el-input>
+                        <el-input v-model="domain.content" type="textarea" :rows="4" placeholder="请输入投入时长" clearable
+                         :disabled="workForm.domains.length!=0 && workForm.domains[0].state!=2"></el-input>
                     </el-form-item>
                     <el-divider v-if="workForm.domains.length>1"></el-divider>
                 </div>
             </el-form>
             <span slot="footer" class="dialog-footer">
                 <el-button @click="dialogVisible = false">取消</el-button>
-                <el-button type="primary" @click="submitDepartment">提交</el-button>
+                <el-button type="primary" :disabled="workForm.domains.length!=0 && workForm.domains[0].state!=2" @click="submitDepartment">提交</el-button>
             </span>
         </el-dialog>
     </section>
@@ -125,12 +130,15 @@
                         id: null,
                         projectId: "",
                         workingTime: "",
-                        content: ""
+                        content: "",
+                        state: "",
                     }],
                 },
                 workRules: {
                     createDate: [{ required: true, message: "请选择工作日期", trigger: "change" }],
-                }
+                },
+
+                logining: false,
             };
         },
         methods: {
@@ -273,7 +281,8 @@
                                     id: list.report[i].id,
                                     projectId: list.report[i].projectId,
                                     workingTime: list.report[i].workingTime,
-                                    content: list.report[i].content
+                                    content: list.report[i].content,
+                                    state: list.report[i].state
                                 })
                             }
                             this.workForm = {
@@ -287,7 +296,8 @@
                                     id: null,
                                     projectId: "",
                                     workingTime: "",
-                                    content: ""
+                                    content: "",
+                                    state: "",
                                 }],
                             }
                         }
@@ -376,6 +386,70 @@
                 });
             },
 
+            // 跳转
+            junpToDeskTop() {
+                let day = this.choseDay > 9 ? "-" + (this.choseDay + 1) : "-0" + (this.choseDay + 1);
+                this.$router.push("/desktop/" + this.user.id + "/" + this.date +day);
+            },
+
+            // 通过日报
+            approve(id) {
+                this.logining = true;
+                let day = this.choseDay > 9 ? "-" + (this.choseDay + 1) : "-0" + (this.choseDay + 1);
+                this.http.post( this.port.report.approve, {id: id , date: this.date +day},
+                res => {
+                    this.logining = false;
+                    if (res.code == "ok") {
+                        this.$message({
+                            message: "审核成功",
+                            type: "success"
+                        });
+                        this.getReportList();
+                    } else {
+                        this.$message({
+                            message: res.msg,
+                            type: "error"
+                        });
+                    }
+                },
+                error => {
+                    this.logining = false;
+                    this.$message({
+                        message: error,
+                        type: "error"
+                    });
+                });
+            },
+
+            // 未通过日报
+            deny(id,i) {
+                this.logining = true;
+                let day = this.choseDay > 9 ? "-" + (this.choseDay + 1) : "-0" + (this.choseDay + 1);
+                this.http.post( this.port.report.deny, {id: id , date: this.date +day},
+                res => {
+                    this.logining = false;
+                    if (res.code == "ok") {
+                        this.$message({
+                            message: i==0?"驳回成功":"撤销成功",
+                            type: "success"
+                        });
+                        this.getReportList();
+                    } else {
+                        this.$message({
+                            message: res.msg,
+                            type: "error"
+                        });
+                    }
+                },
+                error => {
+                    this.logining = false;
+                    this.$message({
+                        message: error,
+                        type: "error"
+                    });
+                });
+            }
+
         },
         created() {
             let height = window.innerHeight;