山水共长天一色 il y a 3 ans
Parent
commit
55f2871225

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

@@ -2,7 +2,7 @@ var path = require('path')
 
 //  var ip = '127.0.0.1'
 // var ip = '192.168.2.20'
-// var ip = '192.168.2.2'
+// var ip = '192.168.2.12'
 // var ip = '47.100.37.243' 
 
 var os = require('os'), ip = '', ifaces = os.networkInterfaces() // 获取本机ip
@@ -12,7 +12,7 @@ for (var i in ifaces) {
         if (val.family === 'IPv4' && val.address !== '127.0.0.1') {
             ip = val.address
         }
-    } 
+    }
 }
 
 module.exports = {

+ 216 - 101
fhKeeper/formulahousekeeper/timesheet/src/views/awayOffice/awayOffice.vue

@@ -15,8 +15,8 @@
                         <span>{{"出差列表"}}</span>
                     </template>
                     <!-- 导航切换 -->
-                    <el-menu-item index="2-1" ><p @click="bills(false, 2)" v-if="permissions.awayOfficeAll">全部</p></el-menu-item>
-                    <el-menu-item index="2-2" ><p @click="bills(true, 1)" v-if="permissions.awayOfficeAudit">待审核</p></el-menu-item>
+                    <el-menu-item index="2-1" v-if="permissions.awayOfficeAll"><p @click="bills(false, 2)">全部</p></el-menu-item>
+                    <el-menu-item index="2-2" v-if="permissions.awayOfficeAudit && !isDingding"><p @click="bills(true, 1)">待审核</p></el-menu-item>
                 </el-submenu>
                 <el-menu-item index="3" @click="bills(false, 2)" v-if="!permissions.awayOfficeAll">
                     <i class="iconfont firerock-iconbaoxiaodan"></i>
@@ -227,7 +227,7 @@
                             </el-popover>
                         </template>
                     </el-table-column>
-                    <el-table-column :label="isAuditList ? '审核' : '操作'" width="180" fixed="right" >
+                    <el-table-column v-if="!isDingding" :label="isAuditList ? '审核' : '操作'" width="180" fixed="right" >
                         <template slot-scope="scope">
                             <div v-if="isAuditList">
                                 <el-button icon="el-icon-check" circle size="mini" @click="approve(scope.row)"></el-button>
@@ -239,6 +239,11 @@
                             </div>
                         </template>
                     </el-table-column>
+                    <el-table-column v-if="isDingding" label="操作" width="180" fixed="right">
+                        <template slot-scope="scope">
+                            <el-button icon="el-icon-edit" circle size="mini" @click="DingdingEditor(scope.row)"></el-button>
+                        </template>
+                    </el-table-column>
                 </el-table>
                 <!-- 页码 -->
                 <div class="poss">
@@ -372,100 +377,100 @@
         <!-- <el-form ref="editItemForm" :model="editItemForm" label-width="80px" :rules="editItemFormRules"> -->
         <el-form ref="editItemForm" :model="editItemForm" label-width="80px" :rules="editItemRules">
             <el-form-item label="出差人员" prop="ownerName"  style="width: 300px;display: inline-block;">
-            <span>{{editItemForm.ownerName}}</span>
-        </el-form-item>
-        <el-form-item label="单程/往返" prop="goBack" style="width: 300px;display: inline-block;">
-            <el-radio-group v-model="editItemForm.goBack">
-                <el-radio :label="0">单程</el-radio>
-                <el-radio :label="1">往返</el-radio>
-            </el-radio-group>
-        </el-form-item>
-        <!-- 交通工具 -->
-        <el-form-item label="交通工具" style="width:100%">
-            <el-radio-group v-model="editItemForm.way">
-                <el-radio :label="0">飞机</el-radio>
-                <el-radio :label="1">火车</el-radio>
-                <el-radio :label="2">汽车</el-radio>
-                <el-radio :label="3">轮船</el-radio>
-                <el-radio :label="4">其他</el-radio>
-            </el-radio-group>
-        </el-form-item>
-        <el-form-item label="投入项目" style="width:300px;margin-right:30px;display:inline-block;" prop="projectId">
-            <el-select style="width:100%" @change="getwuduList(0)" v-model="editItemForm.projectId" filterable clearable placeholder="请选择投入项目" >
-                <el-option
-                v-for="item in projectList"
-                :key="item.id"
-                :label="item.projectName"
-                :value="item.id">
-                </el-option>
-            </el-select>
-        </el-form-item>
-        <el-form-item :label="wuduData.customDegreeName"
-        v-if="editItemForm.projectId != null && wuduData.customDegreeActive == 1"
-        style="width:300px;margin-right:30px;display:inline-block;"
-        prop="degreeName">
-            <el-select style="width:100%" v-model="editItemForm.degreeId" filterable clearable placeholder="请选择" >
-                <el-option
-                v-for="item in wuduList"
-                :key="item.id"
-                :label="item.name"
-                :value="item.id">
-                </el-option>
-            </el-select>
-        </el-form-item>
-        <el-form-item label="出发城市" style="width:300px;margin-right:30px;display: inline-block;" prop="cityFrom">
-            <el-select style="width:100%" v-model="editItemForm.cityFrom" filterable clearable placeholder="请选择出发城市" >
-                <el-option
-                v-for="item in cityList"
-                :key="item.value"
-                :label="item.label"
-                :value="item.label">
-                </el-option>
-            </el-select>
-        </el-form-item>
-        <!-- 目的城市 -->
-        <el-form-item label="目的城市" style="width:300px;display: inline-block;" prop="cityTo">
-            <el-select style="width:100%" v-model="editItemForm.cityTo" filterable clearable placeholder="请选择目的城市">
-                <el-option
-                v-for="item in cityList"
-                :key="item.value"
-                :label="item.label"
-                :value="item.label">
-                </el-option>
-            </el-select>
-        </el-form-item>
-        <el-form-item label="开始时间" style="width:300px;margin-right:30px;display:inline-block;" prop="startDate">
-            <el-date-picker
-            type="date"
-            placeholder="开始日期"
-            value-format="yyyy-MM-dd"
-            v-model="editItemForm.startDate"
-            style="width:100%"
-            @change="datechg2(1)">
-            </el-date-picker>
-        </el-form-item>
-        <!-- 结束时间 -->
-        <el-form-item label="结束时间" style="width:300px;display:inline-block;" prop="endDate">
-            <el-date-picker
-            type="date"
-            placeholder="结束日期"
-            value-format="yyyy-MM-dd"
-            v-model="editItemForm.endDate"
-            style="width:100%"
-            @change="datechg2(0)">
-            </el-date-picker>
-        </el-form-item>
-        <el-form-item label="出差天数" style="width:300px">
-            <el-input type="number" placeholder="自动计算" v-model="editItemForm.dayCount" min="0" style="width:100%"></el-input>
-        </el-form-item>
-        <el-form-item label="备注" style="width: 100%">
-            <el-input type="textarea" v-model="editItemForm.remark" :rows="3" style="width: 62%" maxlength="100" show-word-limit></el-input>
-        </el-form-item>
-    </el-form>
-    <span slot="footer" class="dialog-footer">
-      <el-button @click="editDialog = false">取 消</el-button>
-      <el-button type="primary" @click="determine()">确 定</el-button>
-    </span>
+                <span>{{editItemForm.ownerName}}</span>
+            </el-form-item>
+            <el-form-item label="单程/往返" prop="goBack" style="width: 300px;display: inline-block;">
+                <el-radio-group v-model="editItemForm.goBack">
+                    <el-radio :label="0">单程</el-radio>
+                    <el-radio :label="1">往返</el-radio>
+                </el-radio-group>
+            </el-form-item>
+            <!-- 交通工具 -->
+            <el-form-item label="交通工具" style="width:100%">
+                <el-radio-group v-model="editItemForm.way">
+                    <el-radio :label="0">飞机</el-radio>
+                    <el-radio :label="1">火车</el-radio>
+                    <el-radio :label="2">汽车</el-radio>
+                    <el-radio :label="3">轮船</el-radio>
+                    <el-radio :label="4">其他</el-radio>
+                </el-radio-group>
+            </el-form-item>
+            <el-form-item label="投入项目" style="width:300px;margin-right:30px;display:inline-block;" prop="projectId">
+                <el-select style="width:100%" @change="getwuduList(0)" v-model="editItemForm.projectId" filterable clearable placeholder="请选择投入项目" >
+                    <el-option
+                    v-for="item in projectList"
+                    :key="item.id"
+                    :label="item.projectName"
+                    :value="item.id">
+                    </el-option>
+                </el-select>
+            </el-form-item>
+            <el-form-item :label="wuduData.customDegreeName"
+            v-if="editItemForm.projectId != null && wuduData.customDegreeActive == 1"
+            style="width:300px;margin-right:30px;display:inline-block;"
+            prop="degreeName">
+                <el-select style="width:100%" v-model="editItemForm.degreeId" filterable clearable placeholder="请选择" >
+                    <el-option
+                    v-for="item in wuduList"
+                    :key="item.id"
+                    :label="item.name"
+                    :value="item.id">
+                    </el-option>
+                </el-select>
+            </el-form-item>
+            <el-form-item label="出发城市" style="width:300px;margin-right:30px;display: inline-block;" prop="cityFrom">
+                <el-select style="width:100%" v-model="editItemForm.cityFrom" filterable clearable placeholder="请选择出发城市" >
+                    <el-option
+                    v-for="item in cityList"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.label">
+                    </el-option>
+                </el-select>
+            </el-form-item>
+            <!-- 目的城市 -->
+            <el-form-item label="目的城市" style="width:300px;display: inline-block;" prop="cityTo">
+                <el-select style="width:100%" v-model="editItemForm.cityTo" filterable clearable placeholder="请选择目的城市">
+                    <el-option
+                    v-for="item in cityList"
+                    :key="item.value"
+                    :label="item.label"
+                    :value="item.label">
+                    </el-option>
+                </el-select>
+            </el-form-item>
+            <el-form-item label="开始时间" style="width:300px;margin-right:30px;display:inline-block;" prop="startDate">
+                <el-date-picker
+                type="date"
+                placeholder="开始日期"
+                value-format="yyyy-MM-dd"
+                v-model="editItemForm.startDate"
+                style="width:100%"
+                @change="datechg2(1)">
+                </el-date-picker>
+            </el-form-item>
+            <!-- 结束时间 -->
+            <el-form-item label="结束时间" style="width:300px;display:inline-block;" prop="endDate">
+                <el-date-picker
+                type="date"
+                placeholder="结束日期"
+                value-format="yyyy-MM-dd"
+                v-model="editItemForm.endDate"
+                style="width:100%"
+                @change="datechg2(0)">
+                </el-date-picker>
+            </el-form-item>
+            <el-form-item label="出差天数" style="width:300px">
+                <el-input type="number" placeholder="自动计算" v-model="editItemForm.dayCount" min="0" style="width:100%"></el-input>
+            </el-form-item>
+            <el-form-item label="备注" style="width: 100%">
+                <el-input type="textarea" v-model="editItemForm.remark" :rows="3" style="width: 62%" maxlength="100" show-word-limit></el-input>
+            </el-form-item>
+        </el-form>
+        <span slot="footer" class="dialog-footer">
+            <el-button @click="editDialog = false">取 消</el-button>
+            <el-button type="primary" @click="determine()">确 定</el-button>
+        </span>
     </el-dialog>
 
     <!-- 出差统计查看详情 -->
@@ -515,6 +520,39 @@
             </el-pagination>
         </div>
     </el-dialog>
+
+    <!-- 钉钉环境交互效果切换 -->
+    <el-dialog title="关联项目" :visible.sync="DingdingEditDialog" width="800px">
+        <el-form ref="DingdingForm" label-width="80px" style="margin:40px 0">
+            <el-form-item label="投入项目" style="width:300px;margin-right:30px;display:inline-block;" prop="projectId">
+                <el-select style="width:100%" @change="getwuduList(0)" v-model="DingdingForm.projectId" filterable clearable placeholder="请选择投入项目" >
+                    <el-option
+                    v-for="item in projectList"
+                    :key="item.id"
+                    :label="item.projectName"
+                    :value="item.id">
+                    </el-option>
+                </el-select>
+            </el-form-item>
+            <el-form-item :label="wuduData.customDegreeName"
+            v-if="DingdingForm.projectId != null && wuduData.customDegreeActive == 1"
+            style="width:300px;margin-right:30px;display:inline-block;"
+            prop="degreeName">
+                <el-select style="width:100%" v-model="DingdingForm.degreeId" filterable clearable placeholder="请选择" >
+                    <el-option
+                    v-for="item in wuduList"
+                    :key="item.id"
+                    :label="item.name"
+                    :value="item.id">
+                    </el-option>
+                </el-select>
+            </el-form-item>
+        </el-form>
+        <span slot="footer" class="dialog-footer">
+            <el-button @click="DingdingEditDialog = false">取 消</el-button>
+            <el-button type="primary" @click="DingdingDetermine()">确 定</el-button>
+        </span>
+    </el-dialog>
 </section>
 </template>
 
@@ -540,7 +578,8 @@ export default {
             displayTable: false,
             formloading: false,
             apk: 0,
-            // user: JSON.parse(sessionStorage.getItem("user")),
+            // userdata: JSON.parse(sessionStorage.getItem("user")),
+
             permissions: JSON.parse(sessionStorage.getItem("permissions")),
             addform: {
                 reason: null, //出差事由
@@ -626,6 +665,10 @@ export default {
             isAdd: false,
             susers: [],
 
+            // 钉钉环境交互
+            isDingding: 0,
+            DingdingEditDialog: false,
+            DingdingForm:{}
         }
     },
     created(){
@@ -637,14 +680,68 @@ export default {
         window.onresize = function temp() {
             that.tableHeight = window.innerHeight - 195;
         };
+        this.isDingding = this.wuduData.syncDingding
     },
     mounted(){
         this.getTableList()
         this.getProjectList()
         this.getDepartment()
+        
         // console.log("session",this.wuduData);
     },
     methods: {
+        // 钉钉环境交互
+        DingdingEditor(e){
+            this.DingdingEditDialog = true
+            if(e.degreeId != null){
+                e.degreeId = e.degreeId + ''
+                // console.log("e.degreeId",e.degreeId);
+            }
+            this.DingdingForm = e
+            this.getwuduList(2)
+            console.log('editor',this.DingdingForm);
+        },
+        DingdingDetermine(){
+            let edddd = {
+                id: this.DingdingForm.id,
+                projectId: this.DingdingForm.projectId,  //项目id
+                degreeId:this.DingdingForm.degreeId,     //维度id
+                degreeName: null
+            }
+            for(let i=0; i<this.wuduList.length; i++){
+                if(this.wuduList[i].id == edddd.degreeId){
+                    edddd.degreeName = this.wuduList[i].name
+                }
+            }
+            this.http.post( '/business-trip/modifyProject', edddd,
+                    res => {
+                        if (res.code == "ok") {
+                            this.DingdingForm = {}
+                            this.DingdingEditDialog = false
+                            this.$message({
+                                message: '修改成功',
+                                type: 'success'
+                            })
+                            this.billss()
+                        } else {
+                            this.$message({
+                                message: res.msg,
+                                type: "error"
+                            });
+                        }
+                    },
+                    error => {
+                        this.$message({
+                            message: error,
+                            type: "error"
+                        });
+                    });
+        },
+
+
+
+
+
         staffs(key, keyPath) {
             // console.log("keypath",keyPath)
             if (keyPath[0] == '1') {
@@ -917,7 +1014,7 @@ export default {
         },
         // 操作 - 编辑
         editor(e) {
-            // console.log("编辑",e);
+            console.log("编辑",e);
             this.editDialog = true
             if(e.degreeId != null){
                 e.degreeId = e.degreeId + ''
@@ -929,6 +1026,7 @@ export default {
         // 编辑框确定
         determine(){
             let edddd = {
+                id: this.editItemForm.id,
                 reason: this.editItemForm.reason, //出差事由
                 startDate: this.editItemForm.startDate,  //开始时间
                 endDate: this.editItemForm.endDate,    //结束时间
@@ -939,13 +1037,24 @@ export default {
                 dayCount: this.editItemForm.dayCount,   //出差天数
                 remark: this.editItemForm.remark,  //备注
                 projectId: this.editItemForm.projectId,  //项目id
-                degreeId:this.editItemForm.degreeId      //维度id
+                degreeId:this.editItemForm.degreeId,      //维度id
+                degreeName: null
+            }
+            for(let i=0; i<this.wuduList.length; i++){
+                if(this.wuduList[i].id == edddd.degreeId){
+                    edddd.degreeName = this.wuduList[i].name
+                }
             }
             this.http.post( '/business-trip/add', edddd,
                     res => {
                         if (res.code == "ok") {
                             this.editItemForm = null
                             this.editDialog = false
+                            this.billss()
+                            this.$message({
+                                message: '修改成功',
+                                type: 'success'
+                            })
                         } else {
                             this.$message({
                                 message: res.msg,
@@ -1271,12 +1380,18 @@ export default {
                         return
                     }
                     var pId = this.addform.projectId
-                }else{
+                }else if(e == 0){
                     this.editItemForm.wuduId = null
                     if(this.editItemForm.projectId == '' || this.editItemForm.projectId == null) {
                         return
                     }
                     var pId = this.editItemForm.projectId
+                }else{
+                    this.DingdingForm.wuduId = null
+                    if(this.DingdingForm.projectId == '' || this.DingdingForm.projectId == null){
+                        return
+                    }
+                    var pId = this.DingdingForm.projectId
                 }
                 
                 this.http.post('/project/getDegreeList',{ 

+ 35 - 28
fhKeeper/formulahousekeeper/timesheet/src/views/leave/list.vue

@@ -95,17 +95,19 @@
                     </el-select>
                 </el-form-item>
                 <!-- 电话 -->
-                <el-form-item label="电话" prop="tel">
+                <el-form-item label="电话" prop="tel" style="margin-right:300px">
                     <el-input ref="ipts" v-model="addForm.tel" placeholder="请输入手机号" style="width: 250px"></el-input>
                 </el-form-item>
                 <!-- 单选 -->
-                <el-form-item style="display: block" label="时长单位">
+                <el-form-item style="display: inline-block;width:300px" label="时长单位">
                     <el-radio-group v-model="addForm.timeType" @change="chanRadio()" style="display:inline-block;width:240px">
                         <el-radio label="0">按天请假</el-radio>
                         <el-radio label="1" v-if="addForm.leaveType != 6">按小时请假</el-radio>
                     </el-radio-group>
-                    <span style="margin-left:8px">审批人</span>
-                    <el-select style="display:inline-block;width:250px;margin-left:6px" multiple v-model="addForm.projectAuditorJson" placeholder="请选择">
+                </el-form-item>
+                <!-- 选择审批人 -->
+                <el-form-item label="审批人" style="width:300px" :prop="mustApprover">
+                    <el-select style="display:inline-block;width:250px;" multiple v-model="addForm.projectAuditorJson" placeholder="请选择">
                       <el-option
                       v-for="item in approverList"
                       :key="item.id"
@@ -188,7 +190,7 @@
             </div>
           </div>
             <el-table v-loading="loading" :data="tableData" style="width: 100%" height="90%">
-                <el-table-column prop="ownerName" label="请假人" width="120"></el-table-column>
+                <el-table-column prop="ownerName" label="请假人" width="120" fixed="left"></el-table-column>
                 <el-table-column prop="tel" label="电话" width="120"></el-table-column>
                 <el-table-column prop="leaveType" label="请假类型" width="120">
                   <template slot-scope="scope">
@@ -571,7 +573,7 @@ export default {
         tel: [{required: true, validator: checkTel, trigger: 'blur'}],
         timeDays: [{required: true, validator: checks, trigger: 'blur'}],
         leaveType: [{ required: true, message: "请选择请假类型", trigger: "blur" }],
-        projectAuditorJson: [{ required: true, message: "请选择审批人", trigger: "blur" }]
+        approver: [{ required: true, message: "请选择审批人", trigger: "blur" }]
       },
       user: JSON.parse(sessionStorage.getItem("user")),
       shuz: ['事假填报', '病假填报', '年假填报', '产假填报'],
@@ -706,7 +708,8 @@ export default {
       // ---------
       txselnum: 0,
 
-      approverList: []
+      approverList: [],
+      mustApprover: ''
     };
   },
   computed: {},
@@ -733,6 +736,9 @@ export default {
       },res => {
         if(res.code == 'ok'){
           this.approverList = res.data
+          if(this.approverList.length != 0){
+            this.mustApprover = 'approver'
+          }
           console.log('list',res.data);
         }else {
           this.$message({
@@ -1219,7 +1225,7 @@ export default {
         this.$refs.addForm.validate(valid => {
           this.addForm.endDate = this.buling(this.addForm.endDate)
           this.addForm.startDate = this.buling(this.addForm.startDate)
-          this.addForm.projectAuditorJson = JSON.stringify(this.addForm.projectAuditorJson)
+          // this.addForm.projectAuditorJson = JSON.stringify(this.addForm.projectAuditorJson)
           if (valid) {
             this.http.post('/leave-sheet/add', this.addForm,
             res => {
@@ -1228,26 +1234,27 @@ export default {
                       message: '填报成功',
                       type: "success"
                     });
-                    // this.addForm.timeType = '0'
-                    // this.addForm.startDate = this.getCurrentTime()
-                    // this.addForm.endDate = this.getCurrentTime()
-                    // this.addForm.timeDays = 1
-                    // this.addForm.leaveType = 0
-                    // this.addForm.timeHours = 8
-                    // this.addForm.remark = ''
-                    this.addForm = {
-                      timeType: '0',
-                      startDate: this.getCurrentTime(),
-                      endDate: this.getCurrentTime(),
-                      timeDays: 1,
-                      leaveType: 0,
-                      ownerId: '',
-                      // indate: this.getCurrentTime(),
-                      timeHours: 8,
-                      tel: '',
-                      remark: '',
-                      projectAuditorJson: ''
-                    }
+                    this.addForm.timeType = '0'
+                    this.addForm.startDate = this.getCurrentTime()
+                    this.addForm.endDate = this.getCurrentTime()
+                    this.addForm.timeDays = 1
+                    this.addForm.leaveType = 0
+                    this.addForm.timeHours = 8
+                    this.addForm.remark = ''
+                    this.addForm.projectAuditorJson = ''
+                    // this.addForm = {
+                    //   timeType: '0',
+                    //   startDate: this.getCurrentTime(),
+                    //   endDate: this.getCurrentTime(),
+                    //   timeDays: 1,
+                    //   leaveType: 0,
+                    //   ownerId: '',
+                    //   // indate: this.getCurrentTime(),
+                    //   timeHours: 8,
+                    //   tel: '',
+                    //   remark: '',
+                    //   projectAuditorJson: ''
+                    // }
                     this.flg = true
                 } else {
                     this.$message({

+ 2 - 2
fhKeeper/formulahousekeeper/timesheet/src/views/task/list.vue

@@ -72,8 +72,8 @@
                         </template>
                     </el-table-column>
                     
-                    <el-table-column prop="createDate" label="创建时间" sortable width="180"></el-table-column>
-                    <el-table-column label="截止时间" width="260" fixed="right">
+                    <el-table-column prop="createDate" label="开始时间" sortable width="180"></el-table-column>
+                    <el-table-column prop="endDate" label="截止时间" width="260" fixed="right" sortable>
                         <template slot-scope="scope">
                             <div style="display: flex;justify-content: space-between;padding-right: 40px">
                             <span style="display: inline-block;margin-right: 55px">

+ 3 - 2
fhKeeper/formulahousekeeper/timesheet_h5/src/main.js

@@ -15,13 +15,14 @@ import { Form , Toast , Grid, GridItem , DatetimePicker ,
 Picker , Dialog , NumberKeyboard , Sticky , Skeleton ,
 Panel , Divider , List , pullRefresh , SwipeCell, Checkbox, 
 Search, Slider,Stepper,Tag, Calendar, Row, Col, RadioGroup, Radio, 
-Loading ,DropdownMenu, DropdownItem,Button,ActionSheet} from 'vant';
+Loading ,DropdownMenu, DropdownItem, Button, ActionSheet, PullRefresh} from 'vant';
 
 Vue.use(Form).use(Toast).use(Grid).use(GridItem).use(DatetimePicker)
 .use(Picker).use(Dialog).use(NumberKeyboard).use(Sticky).use(Skeleton)
 .use(Panel).use(Divider).use(List).use(pullRefresh).use(SwipeCell)
 .use(Checkbox).use(Search).use(Slider).use(Stepper).use(Tag).use(Calendar).use(RadioGroup).use(Radio)
-.use(Row).use(Col).use(Loading).use(DropdownMenu).use(DropdownItem).use(Button).use(ActionSheet);
+.use(Row).use(Col).use(Loading).use(DropdownMenu).use(DropdownItem).use(Button).use(ActionSheet)
+.use(PullRefresh);
 
 // rem
 import "amfe-flexible";

+ 130 - 33
fhKeeper/formulahousekeeper/timesheet_h5/src/views/exaLeave/exaLeave.vue

@@ -7,57 +7,153 @@
       fixed
       left-arrow
     />
+    
     <div class="content">
-        <div class="item" v-for="item in list" :key="item.id">
-            <div class="item_text">
-                <div class="text_list">
-                    <div class="text_left">申请人</div>
-                    <div class="text_right">{{item.name}}</div>
+        <van-pull-refresh v-model="refreshLoading" @refresh="onRefresh">
+            <van-list v-model="listLoading" :finished="finished" finished-text="已全部加载完成" @load="touchBottom">
+                <van-cell class="item" v-for="item in showList" :key="item.id">
+                <div class="item_text">
+                    <div class="text_list">
+                        <div class="text_left">申请人</div>
+                        <div class="text_right">{{item.ownerName}}</div>
+                    </div>
+                    <div class="text_list">
+                        <div class="text_left">所在部门</div>
+                        <div class="text_right">{{item.dept}}</div>
+                    </div>
+                    <div class="text_list">
+                        <div class="text_left">请假类型</div>
+                        <div class="text_right">{{qjType[item.leaveType]}}</div>
+                    </div>
+                    <div class="text_list">
+                        <div class="text_left">请假时间</div>
+                        <div class="text_right">{{item.indate[0] + '-' + item.indate[1] + '-' + item.indate[2]}}</div>
+                    </div>
+                    <div class="text_list">
+                        <div class="text_left">请假时长</div>
+                        <div class="text_right">{{item.timeType ? item.timeHours + ' 小时' : item.timeDays + ' 天'}}</div>
+                    </div>
                 </div>
-                <div class="text_list">
-                    <div class="text_left">所在部门</div>
-                    <div class="text_right">{{item.dept}}</div>
+                <div class="item_ope" v-if="item.status == 1">
+                    <van-button type="info" size="small" @click="agreeExa(item)">同意</van-button>
+                    <van-button type="danger" size="small" @click="rejectExa(item)">驳回</van-button>
                 </div>
-                <div class="text_list">
-                    <div class="text_left">请假类型</div>
-                    <div class="text_right">{{item.type}}</div>
+                <div class="item_ope" v-if="item.status != 1">
+                    <span :class="item.status == 0 ? 'ope_agree' : 'ope_reject'">{{item.status == 0 ? "已同意" : "已驳回"}}</span>
                 </div>
-                <div class="text_list">
-                    <div class="text_left">请假时间</div>
-                    <div class="text_right">{{item.date}}</div>
-                </div>
-                <div class="text_list">
-                    <div class="text_left">请假时长</div>
-                    <div class="text_right">{{item.time}}天</div>
-                </div>
-            </div>
-            <div class="item_ope" v-if="item.result == null">
-                <van-button type="info" size="small" @click="opeExa(item,1)">同意</van-button>
-                <van-button type="danger" size="small" @click="opeExa(item,0)">驳回</van-button>
-            </div>
-            <div class="item_ope" v-if="item.result != null">
-                <span :class="item.result ? 'ope_agree' : 'ope_reject'">{{item.result ? "已同意" : "已驳回"}}</span>
-            </div>
-        </div>
+                </van-cell>
+            </van-list>
+            
+        </van-pull-refresh>
+        
     </div>
   </div>
 </template>
 
 <script>
+import { Toast } from 'vant';
 export default {
     data() {
         return {
-            list:[
-                { name:"张辉",dept:'质量部', date:"2022-3-25", time:"1", id:0, result:null, type:'事假' },
-            ]
+            refreshLoading: false,
+            listLoading: false,
+            finished: false,
+            showList:[],
+            pageIndex: 1,
+            qjType: ['事假','病假','年假','产假','婚假','丧假','调休假','陪产假','其他']
         }
     },
+    mounted(){
+        this.getList()
+    },
     methods: {
         back() {
             history.back();
         },
-        opeExa(item,r){
-            item.result = r
+        // 下拉刷新
+        onRefresh(){
+            this.showList = []
+            this.finished = false
+            this.pageIndex = 1
+            setTimeout(() => {
+                Toast('刷新成功')
+                this.refreshLoading = false
+                this.getList()
+            },600)
+        },
+        // 触底加载
+        touchBottom(){
+            this.pageIndex += 1
+            this.getList()
+        },
+        // 同意
+        agreeExa(item){
+            const toast = this.$toast.loading({forbidClick: true, duration: 0});
+            this.$axios.post('/leave-sheet/approve',{
+                id: item.id
+            }).then(res => {
+                if(res.code == 'ok'){
+                    this.$toast.clear()
+                    item.status = 0
+                }else {
+                    this.$toast.clear()
+                    this.$toast.fail('操作失败')
+                }
+            }).catch(err => {
+                this.$toast.clear()
+                this.$toast.fail(err)
+            })
+        },
+        // 驳回
+        rejectExa(item){
+             const toast = this.$toast.loading({forbidClick: true, duration: 0});
+            this.$axios.post('/leave-sheet/deny',{
+                id: item.id
+            }).then(res => {
+                if(res.code == 'ok'){
+                    this.$toast.clear()
+                    item.status = 3
+                }else {
+                    this.$toast.clear()
+                    this.$toast.fail('操作失败')
+                }
+            }).catch(err => {
+                this.$toast.clear()
+                this.$toast.fail(err)
+            })
+        },
+        // 获取待审核列表
+        getList(){
+            const toast = this.$toast.loading({forbidClick: true, duration: 0});
+            this.$axios.post('/leave-sheet/list',{
+                pageIndex: this.pageIndex,
+                pageSize: 10,
+                status: 1,
+                createDate: '',
+                ownereId: '',
+                leaveType: ''
+            }).then(res => {
+                if(res.code == 'ok'){
+                    this.$toast.clear();
+                    this.showList = res.data.records
+                    if(res.data.records.length > 0){
+                        let list = res.data.records
+                        for(let i=0; i<list.length; i++){
+                            this.showList.push(list[i])
+                        }
+                        this.listLoading = false
+                    }else {
+                        this.listLoading = false
+                        this.finished = true
+                    }
+                }else {
+                    this.$toast.clear();
+                    this.$toast.fail('获取失败')
+                }
+            }).catch(err => {
+                this.$toast.clear();
+                this.$toast.fail(err);
+            })
         }
     },
 }
@@ -66,6 +162,7 @@ export default {
 <style lang="less" scoped>
     .content{
         margin-top: 46px;
+        overflow: auto;
         .item{
             margin-bottom: 0.35rem;
             background-color: #fff;

+ 3 - 4
fhKeeper/formulahousekeeper/timesheet_h5/src/views/index/index.vue

@@ -7,7 +7,7 @@
         </van-swipe>
         <van-grid :column-num="3">
             <van-grid-item v-for="(item,index) in routers" :key="index" :icon="item.icon" :text="item.name" 
-            :info="(item.name=='消息记录'&&unreadNum>0|| item.name == '请假审批')?(item.name == '请假审批'?1:unreadNum):''"
+            :info="(item.name=='消息记录'&&unreadNum>0)?unreadNum:''"
             :to="item.url">
             </van-grid-item>
         </van-grid>
@@ -185,14 +185,13 @@
             //                     icon: 'clock-o',
             //                     info: this.unreadNum
             //                 });
-            if (this.user.companyId==634 || this.user.companyId==7 || this.user.companyId==431) {
+            // if (this.user.companyId==634 || this.user.companyId==7 || this.user.companyId==431) {
                 this.routers.push({
                                 name: '请假审批',
                                 url: '/exaLeave',
                                 icon: 'todo-list-o',
-                                info: 1
                             });
-            }
+            // }
             
             this.getMessage();
             this.bindIfNessary();

+ 10 - 10
fhKeeper/formulahousekeeper/timesheet_h5/vue.config.js

@@ -4,17 +4,17 @@ const path = require('path');
 const themePath = path.resolve(__dirname,'src/assets/style/theme.less');
 
 // var ip = '127.0.0.1'
-var ip = '192.168.2.27'
+// var ip = '192.168.2.27'
 // var ip = '47.100.37.243'
-// var os = require('os'), ip = '', ifaces = os.networkInterfaces() // 获取本机ip
-// for (var i in ifaces) {
-//     for (var j in ifaces[i]) {
-//         var val = ifaces[i][j]
-//         if (val.family === 'IPv4' && val.address !== '127.0.0.1') {
-//             ip = val.address
-//         }
-//     }
-// }
+var os = require('os'), ip = '', ifaces = os.networkInterfaces() // 获取本机ip
+for (var i in ifaces) {
+    for (var j in ifaces[i]) {
+        var val = ifaces[i][j]
+        if (val.family === 'IPv4' && val.address !== '127.0.0.1') {
+            ip = val.address
+        }
+    }
+}
 
 module.exports = {
     // 关闭eslint检查