소스 검색

调整请假模块

Lijy 3 년 전
부모
커밋
f757b097e0

+ 1 - 1
fhKeeper/formulahousekeeper/timesheet/config/index.js

@@ -5,7 +5,7 @@ var path = require('path')
 
  
 var ip = '47.100.37.243'
-// var ip = '192.168.2.21'
+// var ip = '192.168.2.17'
 
 // var os = require('os'), ip = '', ifaces = os.networkInterfaces() // 获取本机ip
 // for (var i in ifaces) {

+ 94 - 12
fhKeeper/formulahousekeeper/timesheet/src/views/corpreport/list.vue

@@ -22,7 +22,7 @@
               <el-menu-item index="1-4"><p @click="ssl(3)">项目收支平衡表</p></el-menu-item>
               <el-menu-item index="1-5" v-if="user.company.packageCustomer == 1"><p @click="ssl(4)">客户项目利润表</p></el-menu-item>
               <el-menu-item index="1-6"><p @click="ssl(5)">项目阶段工时表</p></el-menu-item>
-              <!-- <el-menu-item index="1-7"><p @click="ssl(6)">加班情况统计</p></el-menu-item> -->
+              <el-menu-item index="1-7"><p @click="ssl(6)">加班情况统计</p></el-menu-item>
             </el-submenu>
           </el-menu>
       </el-col>
@@ -272,11 +272,30 @@
             </el-table>
 
             <!-- 项目加班情况统计报表 -->
-            <div v-if="ins == 6">
-              <el-table></el-table>
+            <div v-if="ins == 6" style="padding: 0 20px">
+              <div class="flsx">
+                <div>
+                  <el-select v-model="proJuctId" placeholder="请选择项目" @change="selcts()">
+                    <el-option v-for="(item, index) in proList" :key="index" :label="item.projectName" :value="item.id" @change="selscts(item)"></el-option>
+                  </el-select>
+                </div>
+                <div class="bianju">
+                    <span class="demonstration">开始日期</span>
+                    <el-date-picker v-model="statDatas" type="date" :picker-options="pickerOptionsStart" value-format="yyyy-MM-dd" placeholder="选择开始日期" @change="picks()"> </el-date-picker>
+                </div>
+                <div class="bianju">
+                    <span class="demonstration">结束日期</span>
+                    <el-date-picker v-model="endDatas" type="date" :picker-options="pickerOptionsEnd" value-format="yyyy-MM-dd" placeholder="选择结束日期" @change="picks()"> </el-date-picker>
+                </div>
+              </div>
+              <el-table v-if="ins == 6" :key="ins" border :data="overTimeList" highlight-current-row v-loading="listLoading" :height="tableHeight" style="width: 100%;">
+                <el-table-column prop="username" label="姓名" width="180"></el-table-column> 
+                <el-table-column prop="workingTime" label="加班时长" width="180"></el-table-column> 
+                <el-table-column prop="cost" label="成本" width="180"></el-table-column> 
+              </el-table>
             </div>
         <!--工具条-->
-        <el-col :span="24" class="toolbar">
+        <el-col :span="24" class="toolbar" v-if="ins != 6">
             <el-pagination
                 @size-change="handleSizeChange"
                 @current-change="handleCurrentChange"
@@ -378,7 +397,29 @@ export default {
       dialog: false, // 单据查看展示
       shuz: ["项目报表","项目任务报表","项目成本报表","项目收支平衡表(利润表)","客户项目利润报表","项目阶段工时表"],
       ins: 0,
-      user: JSON.parse(sessionStorage.user)
+      user: JSON.parse(sessionStorage.user),
+      overTimeList: [], // 项目加班情况统计列表
+      statDatas: this.getCurrentTimes(),
+      endDatas: this.getCurrentTime(),
+      proList: [],
+      proJuctId: '',
+      createDate: '2020-01-01',
+      pickerOptionsStart: {
+        disabledDate: (time) => {
+          if (this.endDatas) {
+            return time.getTime() > new Date(this.endDatas).getTime() || time.getTime() <= new Date(this.createDate).getTime() - 86400000;
+          }
+          return time.getTime() <= new Date(this.createDate).getTime() - 86400000;
+        },
+      },
+      pickerOptionsEnd: {
+          disabledDate: (time) => {
+          if (this.statDatas) {
+              return time.getTime() < new Date(this.statDatas).getTime();
+          }
+          return time.getTime() <= new Date(this.createDate).getTime() - 86400000;
+          },
+      },
     };
   },
   computed: {},
@@ -473,6 +514,7 @@ export default {
       exportExcel() {
         var url = "/project";
         var fName = "";
+        var sl = {}
         if (this.ins == 0) {  
           fName = "项目报表.xls";
           url += "/exportProject";
@@ -491,8 +533,14 @@ export default {
         } else if (this.ins == 5) {
           fName = "项目阶段工时报表.xls";
           url += "/exportProjectStagesCost";
+        } else if (this.ins == 6) {
+          fName = "加班情况统计报表.xls";
+          url += "/exportOvertimeList";
+          sl.startDate = this.statDatas
+          sl.endDate = this.endDatas
+          sl.projectId = this.proJuctId
         }
-          this.http.post(url, {},
+          this.http.post(url, sl,
             res => {
                 if (res.code == "ok") {
                     var filePath = res.data;
@@ -576,15 +624,14 @@ export default {
     overTime() {
       this.listLoading = true;
       this.http.post('/project/getOvertimeList', {
-                    projectId: '',
-                    startDate: '2021-12-01',
-                    endDate: '2021-12-13',
-                    pageIndex: this.page,
-                    pageSize: this.size,
+                    projectId: this.proJuctId,
+                    startDate: this.statDatas,
+                    endDate: this.endDatas,
                     },
         res => {
             if (res.code == "ok") {
-                console.log(res, '打印出来的数据')
+                this.listLoading = false
+                this.overTimeList = res.data
             } else {
                 this.$message({
                 message: res.msg,
@@ -689,6 +736,7 @@ export default {
             if (res.code == "ok") {
                 this.list = res.data.records;
                 this.total = res.data.total;
+                this.proList = res.data.records
                 this.listLoading = false; 
             } else {
                 this.$message({
@@ -724,6 +772,29 @@ export default {
         this.$refs.headHe.style.paddingLeft = '210px'
       }
     },
+    picks() {
+      this.overTime()
+    },
+    // 日期
+    getCurrentTime() {
+        var _this = this;
+      let yy = new Date().getFullYear();
+      let mm = new Date().getMonth()+1;
+      let dd = new Date().getDate();
+      _this.gettime = yy +'-'+ mm +'-'+ dd;
+       return  _this.gettime
+    },
+    getCurrentTimes() {
+        var _this = this;
+      let yy = new Date().getFullYear();
+      let mm = new Date().getMonth()+1;
+      let dd = new Date().getDate();
+      _this.gettime = yy+'-'+mm+'-'+'01';
+       return  _this.gettime
+    },
+    selcts() {
+      this.overTime()
+    }
   },
 };
 </script>
@@ -889,5 +960,16 @@ export default {
   margin-left: 50%;
 
 }
+.flsx {
+  display: flex;
+  margin: 20px 0;
+}
+.bianju {
+  margin-left: 40px;
+}
+.bianju span {
+  display: inline-block;
+  margin-right: 20px;
+}
 
 </style>

+ 113 - 17
fhKeeper/formulahousekeeper/timesheet/src/views/leave/list.vue

@@ -20,8 +20,8 @@
               <i class="iconfont firerock-iconbaoxiaodan"></i>
               <span>{{user.role == 0?"我的请假单":"请假单列表"}}</span>
             </template>
-            <el-menu-item index="2-1" ><p @click="bills(false)" >全部</p></el-menu-item>
-            <el-menu-item index="2-2" ><p @click="bills(true)">待核审</p></el-menu-item>
+            <el-menu-item index="2-1" ><p @click="bills(false, 2)" >全部</p></el-menu-item>
+            <el-menu-item index="2-2" ><p @click="bills(true, 1)">待核审</p></el-menu-item>
           </el-submenu>
             <el-menu-item index="3" @select="bills" @click="bills(false)" v-if="user.role == 0">
               <i class="iconfont firerock-iconbaoxiaodan"></i>
@@ -53,9 +53,9 @@
             <!-- 表单 -->
             <el-form ref="addForm" :model="addForm" label-width="80px" :rules="addFormRules">
                 <!-- 请假人 -->
-                <el-form-item label="请假人" prop="ownerId" >
+                <el-form-item label="请假人" prop="ownerId"  style="width: 300px">
                     <!--普通员工只能自己填报自己的 -->
-                    <el-select v-model="addForm.ownerId" @change="selts()" placeholder="请选择请假人" style="width: 150px" :disabled="user.role == 0" filterable="true">
+                    <el-select v-model="addForm.ownerId" @change="selts()" placeholder="请选择请假人" style="width: 240px" :disabled="user.role == 0" filterable="true">
                         <span v-for="(item, index) in users" :key="index">
                         <el-option :label="item.name" :value="item.id"></el-option>
                         </span> 
@@ -66,7 +66,7 @@
                     <el-input ref="ipts" v-model="addForm.tel" placeholder="请输入手机号" style="width: 250px"></el-input>
                 </el-form-item>
                 <!-- 单选 -->
-                <el-form-item>
+                <el-form-item style="display: block">
                     <el-radio-group v-model="addForm.timeType" @change="chanRadio()">
                         <el-radio label="0">按天请假</el-radio>
                         <el-radio label="1">按小时请假</el-radio>
@@ -74,13 +74,13 @@
                 </el-form-item>
                 <!-- 时间选择 -->
                 <el-form-item :label="flg ? '选择日期' : '选择时间'" style="width: 60%;margin-right:500px">
-                    <el-col :span="11">
-                        <el-date-picker v-if="flg" type="date" placeholder="开始日期" value-format="yyyy-MM-dd" :picker-options="pickerOptionsStart" v-model="addForm.startDate" style="width: 100%;" @blur="datas()"></el-date-picker>
-                        <el-date-picker v-else type="date" placeholder="开始日期" value-format="yyyy-MM-dd" v-model="addForm.startDate" style="width: 100%;" @change="datasss()"></el-date-picker>
+                    <el-col :span="9">
+                        <el-date-picker v-if="flg" type="date" placeholder="开始日期" value-format="yyyy-MM-dd" :picker-options="pickerOptionsStart" v-model="addForm.startDate" style="width: 240px;" @blur="datas()"></el-date-picker>
+                        <el-date-picker v-else type="date" placeholder="开始日期" value-format="yyyy-MM-dd" v-model="addForm.startDate" style="width: 240px;" @change="datasss()"></el-date-picker>
                     </el-col>
-                    <el-col class="line" :span="2">-</el-col>
-                    <el-col :span="11">
-                        <el-date-picker v-if="flg" type="date" placeholder="结束日期" value-format="yyyy-MM-dd" :picker-options="pickerOptionsEnd" v-model="addForm.endDate" style="width: 100%;" @blur="datas()"></el-date-picker>
+                    <el-col class="line" v-if="flg" :span="2">-</el-col>
+                    <el-col :span="9">
+                        <el-date-picker v-if="flg" type="date" placeholder="结束日期" value-format="yyyy-MM-dd" :picker-options="pickerOptionsEnd" v-model="addForm.endDate" style="width: 250px;" @blur="datas()"></el-date-picker>
                         <!-- <el-select v-else v-model="addForm.timeHours" placeholder="请假时长" @change="chanSele()">
                             <el-option v-for="(item, index) in options" :key="index" :label="item" :value="item"></el-option>
                         </el-select> -->
@@ -114,7 +114,42 @@
     <div v-if="displayTable && apk == false" class="tops">
         <!-- 公共 -->
         <div class="ctons">
-            <el-table v-loading="loading" :data="tableData" style="width: 100%" height="100%">
+          <div class="flex">
+            <div>
+              <el-select v-model="ownerIds" placeholder="请选择请假人" @change="chufas()" style="width: 180px" :disabled="user.role == 0" filterable="true">
+                  <span v-for="(item, index) in users" :key="index">
+                  <el-option :label="item.name" :value="item.id"></el-option>
+                  </span> 
+              </el-select>
+            </div>
+            <div>
+              <span>请假类型</span>
+              <el-select v-model="type" placeholder="请选择请假类型" @change="chufas()" style="width: 180px" filterable="true">
+                  <span v-for="(item, index) in typess" :key="index">
+                  <el-option :label="item.name" :value="item.id"></el-option>
+                  </span> 
+              </el-select>
+              
+            </div>
+            <div>
+              <span>请假状态</span>
+              <el-select v-if="falg == 0" v-model="code" placeholder="请选择请假状态" @change="chufas()" style="width: 180px" :disabled="user.role == 0" filterable="true">
+                  <span v-for="(item, index) in statuss" :key="index">
+                  <el-option :label="item.name" :value="item.id"></el-option>
+                  </span> 
+              </el-select>
+              <el-select v-if="falg == 1" disabled v-model="code" placeholder="请选择请假类型" @change="chufas()" style="width: 180px" filterable="true">
+                  <span v-for="(item, index) in statuss" :key="index">
+                  <el-option :label="item.name" :value="item.id"></el-option>
+                  </span> 
+              </el-select>
+            </div>
+            <div>
+              <span>请假时间</span>
+              <el-date-picker v-model="createDate" type="date" @change="chufas()" :value-format = "YYYY-MM-DD" placeholder="选择日期"> </el-date-picker>
+            </div>
+          </div>
+            <el-table v-loading="loading" :data="tableData" style="width: 100%" height="90%">
                 <el-table-column prop="ownerName" label="请假人" width="180"></el-table-column>
                 <el-table-column prop="tel" label="电话" width="180"></el-table-column>
                 <el-table-column prop="leaveType" label="请假类型" width="180">
@@ -325,6 +360,38 @@ export default {
       statisticalList: [],
       loading: false,
       timeChoose: 1,
+      typess: [{
+        name: '事假',
+        id: 0
+      },{
+        name: '病假',
+        id: 1
+      },{
+        name: '年假',
+        id: 2
+      },{
+        name: '产假',
+        id: 3
+      }],
+      statuss: [{
+        name: '核审通过',
+        id: 0
+      },{
+        name: '待核审',
+        id: 1
+      },{
+        name: '驳回',
+        id: 2
+      },{
+        name: '已撤销',
+        id: 3
+      }],
+      createDatelis: '',
+      ownerIds: '',
+      type: '',
+      code: '',
+      createDate: '',
+      falg: 0
     };
   },
   computed: {},
@@ -424,17 +491,34 @@ export default {
         this.statistical()
       }
     },
-    bills(audit){
+    bills(audit, tr){
+      if(tr) {
+        this.code = ''
+        this.createDate = ''
+        this.ownerIds = ''
+        this.type = ''
+        if(tr == 1) {
+          this.falg = 1
+          this.code = 1
+        } else if(tr == 2) {
+          this.code = ''
+          this.falg = 0
+        } else {
+          this.falg = 0
+        }
+      } else {
+        this.falg = false
+      }
       this.tableData = []
       this.displayTable = true;
       this.isAuditList = audit;
       this.loading = true
       var param = {pageIndex: this.page,
                     pageSize: this.size,
-                    code: '',
-                    createDate: '',
-                    ownerId:'',
-                    type:'',
+                    status: this.code,
+                    createDate: this.createDate,
+                    ownerId: this.ownerIds,
+                    leaveType: this.type,
                   };
       if (this.isAuditList) {
         param.status = 1;
@@ -553,6 +637,9 @@ export default {
         }
         return delta - weeks;
     },
+    chufas() {
+      this.bills(true, 0)
+    },
     // 时间
     getTadeTime() {
         var time = new Date();
@@ -857,6 +944,7 @@ export default {
 }
 .line {
     text-align: center;
+    margin: 0 6px
 }
 .poss {
     position: fixed;
@@ -864,4 +952,12 @@ export default {
     right: 1%;
     box-sizing: border-box;
 }
+.flex {
+  display: flex;
+  margin: 0 0 20px 0;
+}
+.flex span {
+  display: inline-block;
+  margin: 0 10px 0 20px;
+}
 </style>