Bladeren bron

2022.6.24 项目报表-日报待审核统计

ggooalice 2 jaren geleden
bovenliggende
commit
01561440a0

+ 97 - 16
fhKeeper/formulahousekeeper/timesheet/src/views/corpreport/list.vue

@@ -28,6 +28,7 @@
                 <el-menu-item index="1-8" v-if="permissions.reportOvertime"><p @click="ssl(6)">加班情况统计表</p></el-menu-item>
 
                 <el-menu-item index="1-10" v-if="permissions.reportTimely"><p @click="ssl(9)">员工填报及时率</p></el-menu-item>
+                <el-menu-item index="1-11" v-if="permissions.reportTimely"><p @click="ssl(10)">日报待审核统计</p></el-menu-item>
               </el-submenu>
             </el-menu>
         </el-col>
@@ -59,13 +60,18 @@
           </el-select>
         </template>
         <!-- 时间段筛选 -->
-          <template v-if="ins == 6 || ins == 8 || ins == 9">
+          <template v-if="ins == 6 || ins == 8 || ins == 9 || ins == 10">
             <span class="demonstration" style="color:#999;padding:0 10px">时间段</span>
-            <el-date-picker v-model="rangeDatas" type="daterange" value-format="yyyy-MM-dd" placeholder="选择开始日期" @change="picks()" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" style="width:350px" :clearable="false" size="small"> </el-date-picker>
+            <el-date-picker v-model="rangeDatas" type="daterange" value-format="yyyy-MM-dd" placeholder="选择开始日期" @change="picks()" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" style="width:300px" :clearable="false" size="small"> </el-date-picker>
           </template>
-          
+
+        <!-- 按部门/项目筛选 -->
+        <el-select v-if="ins == 10" v-model="departmentOrProject" placeholder="请选择" size="small" @change="selcts(10)" style="margin-left:10px;width:120px">
+          <el-option label="按部门筛选" :value="0"></el-option>
+          <el-option label="按项目筛选" :value="1"></el-option>
+        </el-select>
         <!-- 项目筛选 -->
-        <el-select v-if="ins != 4 && ins != 8 && ins != 9" v-model="proJuctId" placeholder="请选择项目" clearable filterable size="small" @change="selcts()" style="margin-left:10px">
+        <el-select v-if="(ins != 4 && ins != 8 && ins != 9 && ins != 10) || (ins == 10 && departmentOrProject == 1)" v-model="proJuctId" placeholder="请选择项目" clearable filterable size="small" @change="selcts()" style="margin-left:10px">
           <el-option v-for="(item) in proListOvertime" :key="item.id" :label="item.projectName + (item.projectCode ? item.projectCode : '')" :value="item.id">
             <span style="float: left;color: #8492a6;">{{ item.projectCode }}</span>
             <span style="float: right;font-size: 13px;margin-left: 20px">{{ item.projectName }}</span>
@@ -73,13 +79,13 @@
         </el-select>
           
           <!-- 部门筛选 -->
-          <el-cascader v-if="ins == 9" v-model="departmentIdArray" :options="departmentList" placeholder="请选择部门"
+          <el-cascader v-if="ins == 9 || (ins == 10 && departmentOrProject == 0)" v-model="departmentIdArray" :options="departmentList" placeholder="请选择部门"
             :props="{ checkStrictly: false,expandTrigger: 'hover' }" :show-all-levels="false" clearable
             @change="selcts(9)" size="small" style="margin-left:10px"
           ></el-cascader>
 
           <!-- 人员筛选 -->
-          <el-select v-if="ins == 6 || ins == 8 || ins == 9" v-model="userId" placeholder="请选择人员" @change="selcts()" clearable filterable size="small" style="margin-left:10px">
+          <el-select v-if="ins == 6 || ins == 8 || ins == 9 || ins == 10" v-model="userId" placeholder="请选择人员" @change="selcts()" clearable filterable size="small" style="margin-left:10px;width:150px">
             <el-option v-for="(item, index) in selUserList" :key="index" :label="item.name" :value="item.id"></el-option>
           </el-select>
       </div>
@@ -423,12 +429,19 @@
 
             </el-table>
 
-            <el-table v-if="ins == 9" key="9" border :data="timelyCostList" highlight-current-row v-loading="listLoading" :height="tableHeight" style="width: 100%;">
+            <!-- 员工填报及时率 -->
+            <el-table v-if="ins == 9" key="9" border :data="reportTimelyList" highlight-current-row v-loading="listLoading" :height="tableHeight" style="width: 100%;">
                 <el-table-column prop="userName" label="人员" min-width="200" align="center"></el-table-column>
                 <el-table-column prop="departmentName" label="所属部门" min-width="200" align="center"></el-table-column>
                 <el-table-column prop="timelinessRate" label="填报及时率" min-width="200" align="center"></el-table-column>
             </el-table>
 
+            <!-- 日报待审核统计 -->
+            <el-table v-if="ins == 10" key="10" border :data="auditRateList" highlight-current-row v-loading="listLoading" :height="tableHeight" style="width: 100%;">
+                <el-table-column prop="userName" label="审核人" min-width="200" align="center"></el-table-column>
+                <el-table-column :prop="departmentOrProject == 0 ? 'departmentName' : 'projectName'" :label="departmentOrProject == 0 ? '所属部门' : '负责项目'" min-width="200" align="center"></el-table-column>
+                <el-table-column prop="num" label="待审核条数" min-width="200" align="center"></el-table-column>
+            </el-table>
             
 
         <!--工具条-->
@@ -611,7 +624,7 @@ export default {
       shuz: ["项目报表","项目任务报表","项目成本报表",
       "项目收支平衡表(利润表)","客户项目利润报表","项目阶段工时表",
       "加班情况统计表","工时成本预警表","人员工时分配表",
-      "员工填报及时率报表"],
+      "员工填报及时率统计","日报待审核统计"],
       ins: 0,
       user: JSON.parse(sessionStorage.user),
       overTimeList: [], // 项目加班情况统计列表
@@ -633,10 +646,12 @@ export default {
       cusProListOvertime: [],
 
       userWorkHoursList: [],
-      timelyCostList: [],
+      reportTimelyList: [],
+      auditRateList: [],
       departmentList: [],
       departmentIdArray: [],
-      selUserList: []
+      selUserList: [],
+      departmentOrProject: 0
 
     };
   },
@@ -873,7 +888,9 @@ export default {
                 } else if (this.ins == 8) {
                     this.getWorkHoursList()
                 } else if (this.ins == 9) {
-                    this.getTimelyCostList()
+                    this.getReportTimelyList()
+                } else if (this.ins == 10) {
+                    this.getAuditRateList()
                 }
             },
       exportExcel() {
@@ -917,6 +934,21 @@ export default {
           url += "/exportReportTimelinessRate"
           sl.startDate = this.rangeDatas[0]
           sl.endDate = this.rangeDatas[1]
+        } else if (this.ins == 10) {
+          fName = "日报待审核统计.xls"
+          url += "/exportWaitingReviewList"
+          sl.startDate = this.rangeDatas[0]
+          sl.endDate = this.rangeDatas[1]
+          sl.stateKey = this.departmentOrProject
+          if(this.userId){
+            sl.userId = this.userId
+          }
+          if(this.departmentIdArray.length != 0 && this.departmentOrProject == 0){
+            sl.departmentId = this.departmentIdArray[this.departmentIdArray.length - 1]
+          }
+          if(this.proJuctId && this.departmentOrProject == 1){
+            sl.projectId = this.proJuctId
+          }
         }
           this.http.post(url, sl,
             res => {
@@ -959,9 +991,11 @@ export default {
       this.overTimeList = []
       this.baseCostList = []
       this.userWorkHoursList = []
-      this.timelyCostList = []
-      this.departmentIdArray = [],
+      this.reportTimelyList = []
+      this.auditRateList = []
+      this.departmentIdArray = []
       this.userId = null
+      this.selUserList = this.userList
       this.getList();
     },
     getCustomerProjectInAndOut() {
@@ -1207,7 +1241,7 @@ export default {
         })
       })
     },
-    getTimelyCostList(){
+    getReportTimelyList(){
       let parameter = {
         startDate: this.rangeDatas[0],
         endDate: this.rangeDatas[1],
@@ -1225,7 +1259,45 @@ export default {
         res => {
           this.listLoading = false
           if(res.code == 'ok'){
-            this.timelyCostList = res.data.list
+            this.reportTimelyList = res.data.list
+            this.total = res.data.total
+          }else {
+            this.$message({
+              message: res.msg,
+              type: 'error'
+            })
+          }
+        },err => {
+          this.listLoading = false
+          this.$message({
+            message: err,
+            type: 'error'
+          })
+        })
+    },
+    getAuditRateList(){
+      let parameter = {
+        startDate: this.rangeDatas[0],
+        endDate: this.rangeDatas[1],
+        pageIndex: this.page,
+        pageSize: this.size,
+        stateKey: this.departmentOrProject
+      }
+      if(this.userId){
+        parameter.userId = this.userId
+      }
+      if(this.departmentIdArray.length != 0 && this.departmentOrProject == 0){
+        parameter.departmentId = this.departmentIdArray[this.departmentIdArray.length - 1]
+      }
+      if(this.proJuctId && this.departmentOrProject == 1){
+        parameter.projectId = this.proJuctId
+      }
+      this.listLoading = true
+      this.http.post('/project/getWaitingReviewList',parameter,
+        res => {
+          this.listLoading = false
+          if(res.code == 'ok'){
+            this.auditRateList = res.data.result
             this.total = res.data.total
           }else {
             this.$message({
@@ -1396,7 +1468,10 @@ export default {
         this.getWorkHoursList()
       }
       if(this.ins == 9){
-        this.getTimelyCostList()
+        this.getReportTimelyList()
+      }
+      if(this.ins == 10){
+        this.getAuditRateList()
       }
     },
     // 日期
@@ -1420,6 +1495,12 @@ export default {
           this.selUserList = this.userList
         }
       }
+      if(e == 10){
+        this.proJuctId = ''
+        this.departmentIdArray = []
+        this.selUserList = this.userList
+        this.userId = ''
+      }
       // console.log(this.customerId);
       this.getList()
     },

+ 1 - 0
fhKeeper/formulahousekeeper/timesheet/src/views/project/list.vue

@@ -2400,6 +2400,7 @@ a {
                                 type: "success"
                             });
                             this.getList();
+                            this.addFormVisible = false
                         } else if (res.code == 'reconfirm') {
                             this.deleteAlertMsg = res.msg;
                             this.forceDeletePro(item.id);

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

@@ -496,14 +496,14 @@
                         </el-form-item>
                         <!-- 相关维度 -->
                         <el-form-item :label="yonghuUser.customDegreeName" v-if="domain.projectId && yonghuUser.customDegreeActive == 1" :rules="user.timeType.customDegreeStatus == 1 && domain.wuduList.length != 0 ? { required: true, message: '请选择' + yonghuUser.customDegreeName, trigger: ['change','blur'] } : null" :prop="'domains.' + index + '.degreeId'">
-                            <el-select v-model="domain.degreeId" clearable placeholder="请选择">
+                            <el-select v-model="domain.degreeId" :disabled="!canEdit" clearable placeholder="请选择">
                                 <el-option v-for="item in domain.wuduList" :key="item.value" :label="item.name" :value="item.id">
                                 </el-option>
                             </el-select>
                         </el-form-item>
                         <!-- 相关数值 -->
                         <el-form-item :label="yonghuUser.customDataName" v-if="domain.projectId && yonghuUser.customDataActive == 1" :prop="'domains.' + index + '.customData'" :rules="user.timeType.customDataStatus == 1 ? { type: 'number', required: true, message: '请填写' + yonghuUser.customDataName, trigger: ['change','blur'] } : null">
-                            <el-input-number :id="'numberData_'+index" v-model="domain.customData" style="width:200px;" @keyup.native="restrictNumber('numberData_'+index)"></el-input-number>
+                            <el-input-number :id="'numberData_'+index" :disabled="!canEdit" v-model="domain.customData" style="width:200px;" @keyup.native="restrictNumber('numberData_'+index)"></el-input-number>
                         </el-form-item>
                         <!-- 自定义文本 -->
                         <el-form-item :label="yonghuUser.customTextName" v-if="yonghuUser.customTextActive == 1" :prop="'domains.' + index + '.customText'" :rules="user.timeType.customTextStatus == 1 ? { required: true, message: '请填写' + yonghuUser.customTextName, trigger: ['change','blur'] } : null">