123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356 |
- <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>
- </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: '5'
- },
- 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>
- <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;
- }
- .mui-fullscreen {
- position: unset;
- margin-top: 45px;
- }
- </style>
|