Sfoglia il codice sorgente

完善请假审批流

seyason 2 anni fa
parent
commit
6aeb2379d1

BIN
fhKeeper/formulahousekeeper/management-platform/chi_sim.traineddata


+ 16 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/LeaveAuditLogController.java

@@ -1,10 +1,17 @@
 package com.management.platform.controller;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.management.platform.entity.LeaveAuditLog;
+import com.management.platform.mapper.LeaveAuditLogMapper;
+import com.management.platform.util.HttpRespMsg;
 import org.springframework.web.bind.annotation.RequestMapping;
 
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.annotation.Resource;
+import java.util.List;
+
 /**
  * <p>
  *  前端控制器
@@ -16,6 +23,15 @@ import org.springframework.web.bind.annotation.RestController;
 @RestController
 @RequestMapping("/leave-audit-log")
 public class LeaveAuditLogController {
+    @Resource
+    LeaveAuditLogMapper leaveAuditLogMapper;
 
+    @RequestMapping("/getBySheetId")
+    public HttpRespMsg getBySheetId(int sheetId) {
+        List<LeaveAuditLog> list = leaveAuditLogMapper.selectList(new QueryWrapper<LeaveAuditLog>().eq("sheet_id", sheetId));
+        HttpRespMsg msg = new HttpRespMsg();
+        msg.data = list;
+        return msg;
+    }
 }
 

+ 5 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/LeaveAuditLog.java

@@ -6,9 +6,12 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import java.time.LocalDateTime;
 import com.baomidou.mybatisplus.annotation.TableField;
 import java.io.Serializable;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
 
 /**
  * <p>
@@ -53,6 +56,8 @@ public class LeaveAuditLog extends Model<LeaveAuditLog> {
     private Integer isPass;
 
     @TableField("indate")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime indate;
 
     @TableField("deny_reason")

+ 2 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/LeaveSheet.java

@@ -106,6 +106,8 @@ public class LeaveSheet extends Model<LeaveSheet> {
      * 时间
      */
     @TableField("indate")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime indate;
 
     /**

+ 167 - 5
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/LeaveSheetServiceImpl.java

@@ -24,6 +24,7 @@ import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.xml.transform.Source;
 import java.time.LocalDate;
+import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -40,6 +41,7 @@ import java.util.stream.Collectors;
 @Transactional
 public class LeaveSheetServiceImpl extends ServiceImpl<LeaveSheetMapper, LeaveSheet> implements LeaveSheetService {
     public static final Integer exLeaveDay = 6;
+    public static final String[] LEAVE_TYPES = new String[]{"事假","病假","年假","产假","婚假","丧假","调休假","陪产假","其他"};
     @Resource
     private UserMapper userMapper;
     @Resource
@@ -55,10 +57,6 @@ public class LeaveSheetServiceImpl extends ServiceImpl<LeaveSheetMapper, LeaveSh
     @Resource
     private DepartmentMapper departmentMapper;
     @Resource
-    private LeavePmauditService leavePmauditService;
-    @Resource
-    private UserYearleaveSettingMapper userYearleaveSettingMapper;
-    @Resource
     private HttpServletRequest request;
     @Resource
     SysFunctionMapper sysFunctionMapper;
@@ -70,6 +68,11 @@ public class LeaveSheetServiceImpl extends ServiceImpl<LeaveSheetMapper, LeaveSh
     ExcelExportService excelExportService;
     @Resource
     LeaveAuditLogMapper leaveAuditLogMapper;
+    @Resource
+    WxCorpInfoService wxCorpInfoService;
+    @Resource
+    InformationMapper informationMapper;
+
     @Value(value = "${upload.path}")
     private String path;
 
@@ -128,6 +131,7 @@ public class LeaveSheetServiceImpl extends ServiceImpl<LeaveSheetMapper, LeaveSh
                     sheet.setAuditorId(workflowNode.getUserId());
                     sheet.setAuditorName(workflowNode.getUserName());
                 }
+                sheet.setCurAuditSettingId(workflowNode.getId());
             }
         }
 
@@ -136,10 +140,138 @@ public class LeaveSheetServiceImpl extends ServiceImpl<LeaveSheetMapper, LeaveSh
         } else {
             //编辑修改
             leaveSheetMapper.updateById(sheet);
+            //之前的审批流程要删除
+            leaveAuditLogMapper.delete(new QueryWrapper<LeaveAuditLog>().eq("sheet_id", sheet.getId()));
+        }
+        sheet = leaveSheetMapper.selectById(sheet.getId());
+        saveNotifyToAuditor(sheet);
+        WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", user.getCompanyId()));
+        if (wxCorpInfo != null) {
+            sendAuditNotifyMsg(wxCorpInfo, user, sheet);
         }
         return msg;
     }
 
+    //发送审核结果消息提醒
+    private void sendAuditResult(WxCorpInfo wxCorpInfo, User auditor, LeaveSheet sheet, String denyReason) {
+        //推送到企业微信
+        JSONObject json=new JSONObject();
+        JSONArray dataJson=new JSONArray();
+        JSONObject jsonObj=new JSONObject();
+        jsonObj.put("key", "审核结果");
+        jsonObj.put("value",sheet.getStatus() == 0?"通过":"驳回");
+//        jsonObj.put("value",("$userName="+applier.getCorpwxUserid()+"$"));
+        JSONObject jsonObj1=new JSONObject();
+        jsonObj1.put("key", "审核人");
+        jsonObj1.put("value",("$userName="+auditor.getCorpwxUserid()+"$"));
+        String applyTimeDesc = "";
+        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("MM/dd");
+        if (sheet.getStartDate().isEqual(sheet.getEndDate())) {
+            applyTimeDesc = dateTimeFormatter.format(sheet.getStartDate()) + ", "+sheet.getTimeHours()+"小时";
+        } else {
+            applyTimeDesc = dateTimeFormatter.format(sheet.getStartDate()) +"至" + dateTimeFormatter.format(sheet.getEndDate()) + ", "+sheet.getTimeHours()+"小时";
+        }
+
+        JSONObject jsonObj2=new JSONObject();
+        jsonObj2.put("key", "请假时间");
+        jsonObj2.put("value",applyTimeDesc);
+        JSONObject jsonObj4=new JSONObject();
+        jsonObj4.put("key", "备注");
+        jsonObj4.put("value",sheet.getStatus()==2?("原因:"+denyReason):"请假申请通过了");
+        dataJson.add(jsonObj);
+        dataJson.add(jsonObj1);
+        dataJson.add(jsonObj2);
+        dataJson.add(jsonObj4);
+        json.put("template_id","tty9TkCAAARfwRKiqfj47qNE70KvGhqg");
+        json.put("url","https://open.weixin.qq.com/connect/oauth2/authorize?appid=ww4e237fd6abb635af&redirect_uri=http://worktime.ttkuaiban.com/api/corpWXAuth&response_type=code&scope=snsapi_base&state=leave#wechat_redirect");
+        json.put("content_item",dataJson);
+        String ownerId = sheet.getOwnerId();
+        User owner = userMapper.selectById(ownerId);
+        wxCorpInfoService.sendWXCorpTemplateMsg(wxCorpInfo,owner.getCorpwxUserid(), json);
+
+        //系统内消息
+        Information information=new Information();
+        information.setUserId(owner.getId());
+        information.setTime(LocalDateTime.now());
+        information.setMsg("您"+applyTimeDesc + "请假申请审核"+(sheet.getStatus() == 1?"已通过":"已驳回")+", 审核人:"+("$userName="+auditor.getCorpwxUserid()+"$"));
+        information.setType(4);
+        information.setContent(sheet.getId()+"");
+        information.setMsg(applyTimeDesc);
+        informationMapper.insert(information);
+    }
+
+    private void saveNotifyToApplier(LeaveSheet sheet) {
+        //推送到企业微信
+        String applyTimeDesc = "";
+        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("MM/dd");
+        if (sheet.getStartDate().isEqual(sheet.getEndDate())) {
+            applyTimeDesc = dateTimeFormatter.format(sheet.getStartDate()) + ", "+sheet.getTimeHours()+"小时";
+        } else {
+            applyTimeDesc = dateTimeFormatter.format(sheet.getStartDate()) +"至" + dateTimeFormatter.format(sheet.getEndDate()) + ", "+sheet.getTimeHours()+"小时";
+        }
+        String ownerId = sheet.getOwnerId();
+        User owner = userMapper.selectById(ownerId);
+        User auditor = userMapper.selectById(sheet.getAuditorId());
+        //系统内消息
+        Information information=new Information();
+        information.setUserId(owner.getId());
+        information.setTime(LocalDateTime.now());
+        information.setMsg("您"+applyTimeDesc + "请假申请审核"+(sheet.getStatus() == 1?"已通过":"已驳回")+", 审核人:"
+                +(auditor.getCorpwxUserid() != null ? ("$userName="+auditor.getCorpwxUserid()+"$"):auditor.getName()));
+        information.setType(4);
+        information.setContent(sheet.getId()+"");
+        informationMapper.insert(information);
+    }
+
+    private void saveNotifyToAuditor(LeaveSheet sheet) {
+        //系统内消息
+        Information information=new Information();
+        information.setUserId(sheet.getAuditorId());
+        information.setTime(LocalDateTime.now());
+        User owner = userMapper.selectById(sheet.getOwnerId());
+        information.setMsg("请假待审核, 请假人:" + (owner.getCorpwxUserid() != null?("$userName="+owner.getCorpwxUserid()+"$"):owner.getName()));
+        information.setType(4);
+        information.setContent(sheet.getId()+"");
+        informationMapper.insert(information);
+    }
+
+    //发送待审核提醒
+    private void sendAuditNotifyMsg(WxCorpInfo wxCorpInfo, User applier, LeaveSheet sheet) {
+        //推送到企业微信
+        JSONObject json=new JSONObject();
+        JSONArray dataJson=new JSONArray();
+        JSONObject jsonObj=new JSONObject();
+        jsonObj.put("key", "请假人");
+        jsonObj.put("value",("$userName="+applier.getCorpwxUserid()+"$"));
+        JSONObject jsonObj1=new JSONObject();
+        jsonObj1.put("key", "请假类型");
+        jsonObj1.put("value",LEAVE_TYPES[sheet.getLeaveType()]);
+        String applyTimeDesc = "";
+        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("MM/dd");
+        if (sheet.getStartDate().isEqual(sheet.getEndDate())) {
+            applyTimeDesc = dateTimeFormatter.format(sheet.getStartDate()) + ", "+sheet.getTimeHours()+"小时";
+        } else {
+            applyTimeDesc = dateTimeFormatter.format(sheet.getStartDate()) +"至" + dateTimeFormatter.format(sheet.getEndDate()) + ", "+sheet.getTimeHours()+"小时";
+        }
+
+        JSONObject jsonObj2=new JSONObject();
+        jsonObj2.put("key", "请假时间");
+        jsonObj2.put("value",applyTimeDesc);
+        JSONObject jsonObj4=new JSONObject();
+        jsonObj4.put("key", "备注");
+        jsonObj4.put("value",sheet.getRemark()==null?"":sheet.getRemark());
+        dataJson.add(jsonObj);
+        dataJson.add(jsonObj1);
+        dataJson.add(jsonObj2);
+        dataJson.add(jsonObj4);
+        json.put("template_id","tty9TkCAAA4WvYmTnsAVoUmdYxHdSG9A");
+        json.put("url","https://open.weixin.qq.com/connect/oauth2/authorize?appid=ww4e237fd6abb635af&redirect_uri=http://worktime.ttkuaiban.com/api/corpWXAuth&response_type=code&scope=snsapi_base&state=leave#wechat_redirect");
+        json.put("content_item",dataJson);
+        String auditorId = sheet.getAuditorId();
+        User auditor = userMapper.selectById(auditorId);
+        wxCorpInfoService.sendWXCorpTemplateMsg(wxCorpInfo,auditor.getCorpwxUserid(), json);
+    }
+
     @Override
     public HttpRespMsg delete(Integer id) {
         leaveSheetMapper.deleteById(id);
@@ -251,14 +383,38 @@ public class LeaveSheetServiceImpl extends ServiceImpl<LeaveSheetMapper, LeaveSh
                                 sheet.setAuditorType(nextAuditNode.getAuditorType());
                             }
                         }
+                    } else if (nextAuditNode.getAuditorType() == 2){
+                        //指定人员审核
+                        sheet.setCurAuditSettingId(nextAuditNode.getId());
+                        sheet.setAuditorId(nextAuditNode.getUserId());
+                        sheet.setAuditorName(nextAuditNode.getUserName());
+                        sheet.setAuditorType(nextAuditNode.getAuditorType());
                     }
                 }
             }
             leaveSheetMapper.updateById(sheet);
             //保存审核记录
             saveAgreeLog(id, auditWorkflowSetting, user);
+            //最终审核通过,发送通过消息
+            sheet = leaveSheetMapper.selectById(id);
+            WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", user.getCompanyId()));
+            if (wxCorpInfo != null) {
+                if (sheet.getStatus() == 0) {
+                    //最终通过
+                    sendAuditResult(wxCorpInfo, user, sheet, null);
+                } else {
+                    //通知下个节点的审核人去审核
+                    sendAuditNotifyMsg(wxCorpInfo, user, sheet);
+                }
+            }
+            if (sheet.getStatus() == 0) {
+                //最终通过
+                saveNotifyToApplier(sheet);
+            } else {
+                //通知下个节点的审核人去审核
+                saveNotifyToAuditor(sheet);
+            }
         }
-
         return httpRespMsg;
     }
 
@@ -302,6 +458,12 @@ public class LeaveSheetServiceImpl extends ServiceImpl<LeaveSheetMapper, LeaveSh
             sheet.setStatus(2);
             leaveSheetMapper.updateById(sheet);
             saveDenyLog(id, auditWorkflowSetting, user, reason);
+            sheet = leaveSheetMapper.selectById(id);
+            WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", user.getCompanyId()));
+            if (wxCorpInfo != null) {
+                sendAuditResult(wxCorpInfo, user, sheet, reason);
+            }
+            saveNotifyToApplier(sheet);
         }
 
         return httpRespMsg;

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/application.yml

@@ -15,7 +15,7 @@ spring:
       location: C:/upload/
   datasource:
     driver-class-name: com.mysql.cj.jdbc.Driver
-    url: jdbc:mysql://47.101.180.183:3306/man_mld?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&useSSL=false
+    url: jdbc:mysql://47.101.180.183:3306/man_dev?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&useSSL=false
     username: root
     password: HuoshiDB@2022
     hikari:

BIN
fhKeeper/formulahousekeeper/management-platform/项目导入模板.xlsx


BIN
fhKeeper/formulahousekeeper/timesheet/src/assets/image/qwcode.png


+ 9 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/Home.vue

@@ -48,7 +48,7 @@
                             <div v-if="isCorpWX">
                                 <div>扫码添加企业微信客服</div>
                                 <img
-                                style="width: 120px; height: 120px"
+                                style="width: 153px; height: 153px"
                                 src="../assets/image/qwcode.png" />
                             </div>
                             <div>
@@ -516,6 +516,14 @@
                             //2- 任务有新进展
                             this.$router.push("/projectInside/"+date);
                             this.drawer = false;
+                        } else if (type == 3) {
+                            //3- 费用报销
+                            this.$router.push("/expense");
+                            this.drawer = false;
+                        } else if (type == 4) {
+                            //4- 任务有新进展
+                            this.$router.push("/leave");
+                            this.drawer = false;
                         }
                         
                     } else {

+ 63 - 30
fhKeeper/formulahousekeeper/timesheet/src/views/leave/list.vue

@@ -226,7 +226,7 @@
                 <el-date-picker v-model="createDate" type="daterange" :range-separator="$t('other.to')" :start-placeholder="$t('time.startDate')" :end-placeholder="$t('time.endDate')" @change="chufas()" value-format="yyyy-MM-dd" :placeholder="$t('optiondate')" size="small" clearable style="width:250px"></el-date-picker>
             </div>
             <div>
-              <el-button type="primary" size="small" style="margin-left:20px" @click="exportLeave()">{{ $t('dao-chu-qing-jia-dan') }}</el-button>
+              <el-button type="primary" v-if="!isAuditList" size="small" style="margin-left:20px" @click="exportLeave()">{{ $t('dao-chu-qing-jia-dan') }}</el-button>
             </div>
           </div>
             <el-table v-loading="loading" :data="tableData" style="width: 100%" height="94%">
@@ -273,7 +273,7 @@
                           <ww-open-data type='userName' :openid='scope.row.auditorName'></ww-open-data>
                         </span>
                       </div>
-                      <div v-if="scope.row.status == 2" style="color: red">{{ $t('btn.rejected') }}</div>
+                      <div v-if="scope.row.status == 2" style="color: red">{{ $t('btn.rejected') }}<el-link style="margin-left:5px;" @click="showDenyReason(scope.row.id)">查看原因</el-link></div>
                       <div v-if="scope.row.status == 3" style="color: #666666">已撤回</div>
                     </div>
                     <div v-else>
@@ -300,27 +300,14 @@
                 <el-table-column :label="$t('operation')" min-width="180" fixed="right" v-if="!isAuditList && !isSyncData">
                     <template slot-scope="scope">
                       <div v-if="(scope.row.status != 0 && scope.row.ownerId == user.id) || permissions.leaveAll">
-                        <el-button size="mini" v-if="scope.row.status == 3" @click.stop.native="deletes(scope.row)" >删除</el-button>
+                        <el-button size="mini" v-if="scope.row.status == 3 ||scope.row.status == 2" @click.stop.native="deletes(scope.row)" >删除</el-button>
                         <el-button size="mini" v-if="scope.row.status == 1" @click.stop.native="cancel(scope.row)">撤回</el-button>
-                        <el-button size="mini" v-if="scope.row.status == 3" type="primary" @click.stop.native="editor(scope.row)">重新提交</el-button>
+                        <el-button size="mini" v-if="scope.row.status == 3 ||scope.row.status == 2 " type="primary" @click.stop.native="editor(scope.row)">重新提交</el-button>
                       </div>
-                      <!-- <div>
-                        <el-button icon="el-icon-delete" circle size="mini"  @click.stop.native="deletes(scope.row)"></el-button>
-                        <el-button icon="el-icon-edit" circle size="mini" @click.stop.native="editor(scope.row)"></el-button>
-                      </div> -->
                     </template>
                 </el-table-column>
             </el-table>
             <div class="poss">
-                <!-- <el-pagination
-                  @size-change="handleSizeChange"
-                  @current-change="handleCurrentChange"
-                  :current-page="currentPage4"
-                  :page-sizes="[20, 50, 100, 200]"
-                  :page-size="20"
-                  layout="total, sizes, prev, pager, next"
-                  :total="total">
-                </el-pagination> -->
                 <el-pagination
                   @size-change="handleSizeChange"
                   @current-change="handleCurrentChange"
@@ -722,14 +709,38 @@
     </span>
   </el-dialog>
   <el-dialog :title="$t('defaultText.pleaseEnterTheReason')"  v-if="denyDialogV" :visible.sync="denyDialogV" :close-on-click-modal="false" customClass="customWidth" width="500px">
-            <div>
-                <el-input type="textarea" v-model="denyInfo.denyReason" rows="2" :placeholder="$t('reasonforyourdecisiontoreject')" />
-            </div>
-            <div slot="footer" class="dialog-footer">
-                <el-button  @click="denyDialogV = false" >{{ $t('btn.cancel') }}</el-button>
-                <el-button type="primary" @click="submitDeny()" >{{ $t('btn.determine') }}</el-button>
-            </div>
-        </el-dialog>
+        <div>
+            <el-input type="textarea" v-model="denyInfo.reason" rows="2" :placeholder="$t('reasonforyourdecisiontoreject')" />
+        </div>
+        <div slot="footer" class="dialog-footer">
+            <el-button  @click="denyDialogV = false" >{{ $t('btn.cancel') }}</el-button>
+            <el-button type="primary" @click="submitDeny()" >{{ $t('btn.determine') }}</el-button>
+        </div>
+    </el-dialog>
+    
+    <el-dialog :title="$t('title.reviewProcess')" v-if="denyReasonVisible" :visible.sync="denyReasonVisible" customClass="customWidth" width="400px">
+        <div style="padding:20px 40px 20px 0">
+            <el-timeline :reverse="false">
+                <el-timeline-item v-for="item in auditLogList" :key="item.id" :timestamp="item.indate">
+                  <span v-if="user.userNameNeedTranslate == 1"><ww-open-data type='userName' :openid='item.auditorName'></ww-open-data> </span>
+                  <span v-if="user.userNameNeedTranslate == 0">{{item.auditorName}}</span>
+                  <span> {{item.isPass==0?"驳回了请假申请。":"审核通过。"}}</span>
+                  <span v-if="item.isPass == 0">原因:{{item.denyReason}}</span>
+                  </el-timeline-item>
+            </el-timeline>
+        </div>
+    </el-dialog>
+    <!-- <el-dialog title="审批流程" v-if="denyReasonVisible" :visible.sync="denyReasonVisible" :close-on-click-modal="false" customClass="customWidth" width="500px">
+        <div>
+          <el-steps direction="vertical" >
+            <el-step v-for="item in auditLogList" :title="item.auditorName" description="这是一段很长很长很长的描述性文字"></el-step>
+          </el-steps>
+          
+        </div>
+        <div slot="footer" class="dialog-footer">
+            <el-button  @click="denyReasonVisible = false" >{{ $t('btn.cancel') }}</el-button>
+        </div>
+    </el-dialog> -->
   </section>
 </template>
 
@@ -911,7 +922,9 @@ export default {
       vueIAlDataSItems: undefined, // 仿数据
       exporLoading: false,
       addNodeObj: {},
-      curWorkflowList:{}
+      curWorkflowList:{},
+      denyReasonVisible : false,
+      auditLogList:[],
     };
   },
   computed: {},
@@ -945,7 +958,26 @@ export default {
   },
   filters: {},
   methods: {
-    
+    showDenyReason(sheetId) {
+      this.denyReasonVisible = true;
+      this.auditLogList = [];
+      this.http.post('/leave-audit-log/getBySheetId',{sheetId: sheetId},
+        res => {
+          if(res.code == 'ok'){
+            this.auditLogList = res.data;
+          }else{
+            this.$message({
+              message: res.msg,
+              type: 'error'
+            })
+          }
+        },err => {
+          this.$message({
+            message: err,
+            type: 'error'
+          })
+        })
+    },
     //获取添加请假单时的审批流
     getAuditWorkflow() {
       this.http.post('/audit-workflow-setting/get',{deptId: this.user.departmentId, type: 1},
@@ -1499,7 +1531,7 @@ export default {
         },
         res => {
             if (res.code == "ok") {
-                this.bills(true);
+                this.auditList();
             } else {
                 this.$message({
                 message: res.msg,
@@ -1524,7 +1556,7 @@ export default {
       this.http.post('/leave-sheet/deny', this.denyInfo,
         res => {
             if (res.code == "ok") {
-                this.bills(true);
+                this.auditList();
                 this.denyDialogV = false;
             } else {
                 this.$message({
@@ -1582,7 +1614,8 @@ export default {
       // console.log("keypath",key,keyPath)
       if (keyPath[0] == '1') {
         this.displayTable = false;
-        this.apk = false
+        this.apk = false;
+        this.getAuditWorkflow();
       } else if(keyPath[0] == '2' || keyPath[0] == '3') {
         this.displayTable = true;
         this.apk = false