|
@@ -1,356 +1,49 @@
|
|
|
<template>
|
|
|
<div>
|
|
|
- <common @asynCallBack="asynCallBack"></common>
|
|
|
- <top-header :pageTitle="pageTitle"></top-header>
|
|
|
-
|
|
|
-
|
|
|
- <div class="mui-content vongi-wordcard-sp">
|
|
|
-
|
|
|
- <div id="sliderSegmentedControl" class="mui-scroll-wrapper mui-slider-indicator mui-segmented-control mui-segmented-control-inverted">
|
|
|
- <div class="mui-scroll">
|
|
|
- <a @click="reloadList('0')" :class="'mui-control-item '+(listForm.status=='0'?'mui-active':'')">
|
|
|
- <span class="fyy-badge">待处理<span class="mui-badge" v-if="firstRecordsTotal" v-text="firstRecordsTotal"></span></span>
|
|
|
- </a>
|
|
|
- <a @click="reloadList('1')" :class="'mui-control-item '+(listForm.status=='1'?'mui-active':'')">
|
|
|
- 已处理
|
|
|
- </a>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- <NullList :remark="'暂无申请记录'" v-if="!recordList.length"></NullList>
|
|
|
-
|
|
|
- <div id="slider" class="mui-slider mui-fullscreen vongi-over">
|
|
|
-
|
|
|
- <div class="mui-slider-group vongi-cchai">
|
|
|
- <div v-if="listForm.status=='0'" class="mui-slider-item mui-control-content mui-active">
|
|
|
- <div class="mui-scroll-wrapper vongi-over-hei">
|
|
|
- <div class="mui-scroll">
|
|
|
- <form class="mui-input-group fyy-checkbox">
|
|
|
- <div v-for="(item,index) in recordList" class="mui-input-row mui-checkbox mui-left">
|
|
|
- <router-link :to="{name:'MasterExtraWorkVerifyInfo',query:{id:item.id}}">
|
|
|
- <h4>{{item.personName}}的加班申请<span class="mui-h6 mui-pull-right" v-text="item.dateTime.substr(5)"></span></h4>
|
|
|
- <p class='mui-ellipsis'>加班时间:{{item.workOverTime}}</p>
|
|
|
- <p class='mui-ellipsis flew-items flew-sp'>
|
|
|
- 加班时长:{{item.hours}}小时
|
|
|
- <button type="button" class="mui-btn mui-btn-primary mui-btn-outlined" :style="getColor(item.status)"
|
|
|
- v-text="item.statusN"></button>
|
|
|
- </p>
|
|
|
- </router-link>
|
|
|
- <input name="checkbox" v-model="selectIdList" :value="item.id" type="checkbox">
|
|
|
- </div>
|
|
|
- </form>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div v-if="listForm.status=='1'" class="mui-slider-item mui-control-content">
|
|
|
- <div class="mui-scroll-wrapper">
|
|
|
- <div class="mui-scroll">
|
|
|
- <ul class="mui-table-view mui-table-view-chevron">
|
|
|
- <li v-for="(item,index) in recordList" class="mui-table-view-cell mui-media">
|
|
|
- <router-link :to="{name:'MasterExtraWorkVerifyInfo',query:{id:item.id}}">
|
|
|
- <h4>{{item.personName}}的加班申请<span class="mui-h6 mui-pull-right" v-text="item.dateTime.substr(5)"></span></h4>
|
|
|
- <p class='mui-ellipsis'>加班时间:{{item.workOverTime}}</p>
|
|
|
- <p class='mui-ellipsis flew-items flew-sp'>
|
|
|
- 加班时长:{{item.hours}}小时
|
|
|
- <button type="button" class="mui-btn mui-btn-primary mui-btn-outlined" :style="getColor(item.status)"
|
|
|
- v-text="item.statusN"></button>
|
|
|
- </p>
|
|
|
- </router-link>
|
|
|
- </li>
|
|
|
- </ul>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- <div v-show="recordList.length>0 && listForm.status==0" class="vongi-ad-fix" style="z-index:99">
|
|
|
-
|
|
|
- <div class=" vongi-wordcard" v-if="approvalPersonList.length">
|
|
|
- <form class="mui-input-group">
|
|
|
- <div class="mui-input-row">
|
|
|
- <label class="color4fc5f7">下一步审批人</label>
|
|
|
- <div v-if="approvalPersonList.length!=1" class="mui-navigate-right" @click="selectPerson">
|
|
|
- <button id='showUserPicker' class="mui-btn mui-btn-block" type='button'><span v-text="approvalPersonName"></span></button>
|
|
|
- </div>
|
|
|
- <div v-if="approvalPersonList.length==1">
|
|
|
- <button class="mui-btn mui-btn-block" type='button'><span v-text="approvalPersonName"></span></button>
|
|
|
- </div>
|
|
|
-
|
|
|
- </div>
|
|
|
- </form>
|
|
|
- </div>
|
|
|
- <div class="fyy-bindfyy-btn">
|
|
|
- <form class="mui-input-group">
|
|
|
- <div class="mui-input-row mui-checkbox mui-left">
|
|
|
- <label>全选</label>
|
|
|
- <input v-model="allSelect" value="1" type="checkbox" @click="selectAll" :checked="recordList.length==selectIdList.length">
|
|
|
- </div>
|
|
|
- </form>
|
|
|
- <button type="button" class="mui-btn mui-btn-danger" @click="openFrom('2')">拒绝</button>
|
|
|
- <button type="button" class="mui-btn mui-btn-success" @click="openFrom('1')">同意</button>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- <loading :visible="isLoading"></loading>
|
|
|
+ <ListSp formId="5" ></ListSp>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
-<script>
|
|
|
- import * as API_BusinessTravel from '@/apis/Master/business_travel'
|
|
|
- import * as API_ExtraWork from '@/apis/Master/extra_work'
|
|
|
- import Common from '$project/components/Common.vue'
|
|
|
- import Loading from '$project/components/Loading.vue'
|
|
|
- import TopHeader from '$project/components/TopHeader.vue'
|
|
|
- import isReachBottom from '$project/utils/isReachBottom'
|
|
|
- import NullList from '$project/components/NullList.vue'
|
|
|
- import {
|
|
|
- mapGetters,
|
|
|
- mapMutations
|
|
|
- } from 'vuex'
|
|
|
- export default {
|
|
|
- name: 'MasterExtraWorkVerifyList',
|
|
|
- components: {
|
|
|
- Common,
|
|
|
- Loading,
|
|
|
- TopHeader,
|
|
|
- NullList
|
|
|
- },
|
|
|
- data() {
|
|
|
- return {
|
|
|
- pageTitle: '加班审批',
|
|
|
-
|
|
|
- isLoading: false,
|
|
|
-
|
|
|
- listForm: {
|
|
|
- type: '3',
|
|
|
- pageIndex: 1,
|
|
|
- pageSize: 20,
|
|
|
- totalPage: 1,
|
|
|
- status: '0'
|
|
|
- },
|
|
|
- recordList: [],
|
|
|
- approvalPersonList: [],
|
|
|
- approvalPerson: true,
|
|
|
-
|
|
|
- subForm: {
|
|
|
- ids: '',
|
|
|
- approvalContent: '',
|
|
|
- status: '',
|
|
|
- nextApprovalId: '',
|
|
|
- },
|
|
|
- //补卡/加班1,外出2,出差3 ,请假4
|
|
|
- personForm: {
|
|
|
- type: '1'
|
|
|
- },
|
|
|
- selectIdList: [],
|
|
|
- allSelect: [],
|
|
|
- firstRecordsTotal: 0,
|
|
|
- }
|
|
|
- },
|
|
|
- created() {},
|
|
|
- methods: {
|
|
|
- //获取审核人列表
|
|
|
- getBusinessOutApprovalPerson() {
|
|
|
- this.isLoading = true;
|
|
|
- API_BusinessTravel.getBusinessOutApprovalPerson(this.personForm).then(response => {
|
|
|
- this.isLoading = false;
|
|
|
-
|
|
|
- var list = response.data;
|
|
|
- var approvalPersonList = [];
|
|
|
- for (var i = 0; i < list.length; i++) {
|
|
|
- approvalPersonList.push({
|
|
|
- value: list[i]['id'],
|
|
|
- text: list[i]['personName']
|
|
|
- })
|
|
|
- }
|
|
|
- if (approvalPersonList.length) {
|
|
|
- this.subForm.nextApprovalId = approvalPersonList[0]['value'];
|
|
|
- this.approvalPersonName = approvalPersonList[0]['text'];
|
|
|
-
|
|
|
- }
|
|
|
- this.approvalPersonList = approvalPersonList;
|
|
|
-
|
|
|
- this.approvalPerson = true;
|
|
|
- }).catch(error => {
|
|
|
- this.isLoading = false;
|
|
|
- mui.toast(error);
|
|
|
- })
|
|
|
- },
|
|
|
- //选择审核人
|
|
|
- selectPerson() {
|
|
|
- var _this = this;
|
|
|
- var picker = new mui.PopPicker();
|
|
|
- picker.setData(_this.approvalPersonList);
|
|
|
- picker.pickers[0].setSelectedValue(this.subForm.nextApprovalId);
|
|
|
- picker.show(function(selectItems) {
|
|
|
- _this.subForm.nextApprovalId = selectItems[0].value;
|
|
|
- _this.approvalPersonName = selectItems[0].text;
|
|
|
- _this.$forceUpdate()
|
|
|
-
|
|
|
- picker.dispose();
|
|
|
- })
|
|
|
- },
|
|
|
- //获取列表
|
|
|
- getList() {
|
|
|
- this.isLoading = true;
|
|
|
- API_ExtraWork.verifyList(this.listForm).then(response => {
|
|
|
- if (response) {
|
|
|
- if (this.listForm.pageIndex == 1) {
|
|
|
- this.recordList = response.data;
|
|
|
- this.listForm.pageIndex = response.pageNumber;
|
|
|
- this.listForm.totalPage = response.totalPage;
|
|
|
- } else {
|
|
|
- this.recordList = [
|
|
|
- ...this.recordList,
|
|
|
- ...response.data
|
|
|
- ];
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (this.listForm.status == 0) {
|
|
|
- this.firstRecordsTotal = response.recordsTotal;
|
|
|
- }
|
|
|
-
|
|
|
- this.listForm.pageIndex++;
|
|
|
- this.isLoading = false;
|
|
|
- }).catch(error => {
|
|
|
- this.isLoading = false;
|
|
|
- mui.toast(error);
|
|
|
- })
|
|
|
- },
|
|
|
- //下拉事件
|
|
|
- handleScrool() {
|
|
|
- if (isReachBottom()) {
|
|
|
- console.log('到达底部')
|
|
|
- if (this.listForm.pageIndex <= this.listForm.totalPage && this.isLoading == false) {
|
|
|
- this.getList();
|
|
|
- } else {
|
|
|
- return;
|
|
|
- }
|
|
|
- }
|
|
|
- },
|
|
|
- //切换
|
|
|
- reloadList(status) {
|
|
|
- this.listForm.status = status;
|
|
|
- this.listForm.pageIndex = 1;
|
|
|
- this.getList();
|
|
|
- },
|
|
|
- //选择所有
|
|
|
- selectAll() {
|
|
|
- if (this.allSelect.length) {
|
|
|
- this.selectIdList = [];
|
|
|
- } else {
|
|
|
- var selectIdList = [];
|
|
|
- this.recordList.forEach(function(item, index) {
|
|
|
- selectIdList.push(item.id);
|
|
|
- })
|
|
|
- this.selectIdList = selectIdList;
|
|
|
- }
|
|
|
- },
|
|
|
- //显示内容表单
|
|
|
- openFrom(status) {
|
|
|
- if (!this.selectIdList.length) {
|
|
|
- mui.toast('请选择要处理的信息');
|
|
|
- } else {
|
|
|
- this.subForm.status = status;
|
|
|
- this.subForm.approvalContent = status == 1 ? '同意' : '拒绝';
|
|
|
- //this.openFromVisible = true;
|
|
|
- //直接点击处理,不需要弹窗理由框
|
|
|
- this.doAction();
|
|
|
- }
|
|
|
- },
|
|
|
- //检测表单
|
|
|
- checkForm() {
|
|
|
- if (!this.approvalPerson) {
|
|
|
- mui.toast('加载下一级审批人失败,请刷新页面');
|
|
|
- return false;
|
|
|
- } else if (!this.subForm.ids) {
|
|
|
- mui.toast('请选择要处理的信息');
|
|
|
- return false;
|
|
|
- } else {
|
|
|
- return true;
|
|
|
- }
|
|
|
- },
|
|
|
- //同意拒绝
|
|
|
- doAction() {
|
|
|
- this.subForm.ids = this.selectIdList.join(',');
|
|
|
- if (this.checkForm()) {
|
|
|
- this.isLoading = true;
|
|
|
- API_ExtraWork.approvalWorkOver(this.subForm).then(response => {
|
|
|
- this.isLoading = false;
|
|
|
-
|
|
|
- this.openFromVisible = false;
|
|
|
- this.listForm.pageIndex = 1;
|
|
|
- this.getList();
|
|
|
- }).catch(error => {
|
|
|
- this.isLoading = false;
|
|
|
- mui.toast(error);
|
|
|
- })
|
|
|
- }
|
|
|
- },
|
|
|
- //获取状态颜色
|
|
|
- getColor(status) {
|
|
|
- var color = '';
|
|
|
- if (status == '0') {
|
|
|
- color = '#4fc5f7';
|
|
|
- } else if (status == '1') {
|
|
|
- color = '#55f868';
|
|
|
- } else if (status == '2') {
|
|
|
- color = '#fe616c';
|
|
|
- }
|
|
|
- return 'color:' + color + ';border-color:' + color + ';';
|
|
|
- },
|
|
|
- asynCallBack() {
|
|
|
-
|
|
|
- },
|
|
|
- },
|
|
|
- mounted() {
|
|
|
- this.getList();
|
|
|
- //this.getBusinessOutApprovalPerson()
|
|
|
- //监控下拉加载事件
|
|
|
- var _this = this;
|
|
|
- window.addEventListener('scroll', _this.handleScrool);
|
|
|
- },
|
|
|
- destroyed() {
|
|
|
- //销毁监听事件
|
|
|
- var _this = this;
|
|
|
- window.removeEventListener('scroll', _this.handleScrool);
|
|
|
- },
|
|
|
- computed: {
|
|
|
- ...mapGetters({
|
|
|
- openId: 'wx_openid',
|
|
|
- token: 'token',
|
|
|
- })
|
|
|
- },
|
|
|
- //keepalive监控判断
|
|
|
- beforeRouteLeave(to, from, next) {
|
|
|
- if (this.listForm.status == '1') {
|
|
|
- console.log(to.name);
|
|
|
- if (['MasterExtraWorkVerifyInfo'].indexOf(to.name) > -1) {
|
|
|
- this.$store.commit('SET_KEEP_ALIVE_COMPONENTS', ['MasterExtraWorkVerifyList'])
|
|
|
- } else {
|
|
|
- this.$store.commit('SET_KEEP_ALIVE_COMPONENTS', [])
|
|
|
- }
|
|
|
- }
|
|
|
- next()
|
|
|
- },
|
|
|
- }
|
|
|
+
|
|
|
+<script>
|
|
|
+
|
|
|
+
|
|
|
+ import ListSp from '@/components/Approval/ListSp.vue'
|
|
|
+
|
|
|
+
|
|
|
+ import {
|
|
|
+ mapGetters,
|
|
|
+ mapMutations
|
|
|
+ } from 'vuex'
|
|
|
+
|
|
|
+ export default {
|
|
|
+ name: '',
|
|
|
+ components: {
|
|
|
+ ListSp
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return{
|
|
|
+
|
|
|
+ }
|
|
|
+ },
|
|
|
+ created() {
|
|
|
+
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
+
|
|
|
+ },
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
</script>
|
|
|
|
|
|
-<style scoped src="$project/assets/css/xpwyfyy.css"></style>
|
|
|
<style src="$project/assets/css/iconfont.css"></style>
|
|
|
-<style scoped>
|
|
|
- .mui-segmented-control {
|
|
|
- position: fixed;
|
|
|
- top: 44px;
|
|
|
- z-index: 99;
|
|
|
- background-color: #eee;
|
|
|
- }
|
|
|
+<style scoped src="$project/assets/css/xpwyfyy.css"></style>
|
|
|
+<style src="$project/assets/css/xsy.css"></style>
|
|
|
+<style>
|
|
|
+
|
|
|
|
|
|
- .mui-fullscreen {
|
|
|
- position: unset;
|
|
|
- margin-top: 45px;
|
|
|
- }
|
|
|
</style>
|