瀏覽代碼

审批流调整

zhengkaixin 4 年之前
父節點
當前提交
9c06619cc3
共有 25 個文件被更改,包括 1119 次插入1733 次删除
  1. 1 1
      .env.production
  2. 1 1
      .env.test
  3. 2 2
      src/components/Common.vue
  4. 15 0
      src/projects/business/apis/Master/attendance.js
  5. 377 0
      src/projects/business/components/Approval/ListSp.vue
  6. 32 0
      src/projects/business/router-xsy/xsy.js
  7. 1 0
      src/projects/business/views-home/User/Login.vue
  8. 3 4
      src/projects/business/views-xsy/ApplyClass/Add.vue
  9. 29 44
      src/projects/business/views-xsy/ApplyClass/Info.vue
  10. 2 2
      src/projects/business/views-xsy/ApplyClass/List.vue
  11. 141 0
      src/projects/business/views-xsy/Approval/Info.vue
  12. 139 0
      src/projects/business/views-xsy/Approval/InfoSp.vue
  13. 12 288
      src/projects/business/views-xsy/ApprovalClass/List.vue
  14. 15 12
      src/projects/business/views/Master/Attendance/Apply.vue
  15. 20 84
      src/projects/business/views/Master/Attendance/Info.vue
  16. 3 5
      src/projects/business/views/Master/Attendance/LeaveForm.vue
  17. 41 53
      src/projects/business/views/Master/Attendance/LeaveInfo.vue
  18. 10 9
      src/projects/business/views/Master/Attendance/List.vue
  19. 12 288
      src/projects/business/views/Master/Attendance/VerifyLeaveList.vue
  20. 39 301
      src/projects/business/views/Master/Attendance/VerifyList.vue
  21. 3 4
      src/projects/business/views/Master/BusinessTravel/Form.vue
  22. 169 0
      src/projects/business/views/Master/BusinessTravel/Info2.vue
  23. 1 1
      src/projects/business/views/Master/BusinessTravel/List.vue
  24. 12 288
      src/projects/business/views/Master/BusinessTravel/VerifyList.vue
  25. 39 346
      src/projects/business/views/Master/ExtraWork/VerifyList.vue

+ 1 - 1
.env.production

@@ -1,7 +1,7 @@
 NODE_ENV=production
 VUE_APP_NODE_NAME=production
 OUT_PUT_NAME=prod
-VUE_APP_LOCAL_STORAGE_PREFIX=xsy_prod
+VUE_APP_LOCAL_STORAGE_PREFIX=prod
 VUE_APP_BACKEND_URL=http://223.75.170.44:6060/shinestar-server
 VUE_APP_MIRROR_BACKEND_URL=https://mirror.xiaoxinda.com/xpgjapi/
 #小鹏管家微信appid

+ 1 - 1
.env.test

@@ -1,7 +1,7 @@
 NODE_ENV=production
 VUE_APP_NODE_NAME=test
 OUT_PUT_NAME=test
-VUE_APP_LOCAL_STORAGE_PREFIX=xsy_test
+VUE_APP_LOCAL_STORAGE_PREFIX=test
 VUE_APP_BACKEND_URL=https://ykt-test.xiaoxinda.com/shinestar-server/
 VUE_APP_MIRROR_BACKEND_URL=https://ykt-test.xiaoxinda.com/shinestar-server/
 #小鹏管家微信appid

+ 2 - 2
src/components/Common.vue

@@ -99,12 +99,12 @@
 									path: decodeURIComponent(redirect)
 								});
 							} else {
-								//window.location.href = document.URL.replace(/\?code=(.*?)&state=STATE/g, '');
+								window.location.href = document.URL.replace(/\?code=(.*?)&state=STATE/g, '');
 							}
 						});
 					} else {
 						//如果存在openid,把链接中code字符去除
-						//window.location.href = document.URL.replace(/\?code=(.*?)&state=STATE/g, '');
+						window.location.href = document.URL.replace(/\?code=(.*?)&state=STATE/g, '');
 					}
 				}
 			},

+ 15 - 0
src/projects/business/apis/Master/attendance.js

@@ -33,6 +33,21 @@ export function postPatchCard(params) {
 	})
 }
 
+export function supplementWorkDetail(params) {
+	return request({
+		url: '/mobile/workAttendance/supplementWorkDetail',
+		data: Qs.stringify(params),
+		method: 'post',
+	})
+}
+export function supplementWorkSubmit(params) {
+	return request({
+		url: '/mobile/workAttendance/supplementWorkSubmit',
+		data: Qs.stringify(params),
+		method: 'post',
+	})
+}
+
 //获取时间段
 export function patchCard(params) {
 	return request({

+ 377 - 0
src/projects/business/components/Approval/ListSp.vue

@@ -0,0 +1,377 @@
+<template>
+<div>
+		<common @asynCallBack="asynCallBack"></common>
+	<loading :visible="isLoading"></loading>
+    <header class="mui-bar mui-bar-nav">
+			<h1 class="mui-title">{{mymod.title}}</h1>
+			<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
+		</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 class="mui-control-item " @click="mySwitchTab(true)" :class="{'mui-active':switchTab}" >
+						<span class="fyy-badge">待处理<span class="mui-badge" v-show="mybadge">{{mybadge}}</span></span>
+					</a>
+					<a class="mui-control-item"  @click="mySwitchTab(false)" :class="{'mui-active':!switchTab}"   >
+						已处理
+					</a>
+				</div>
+			</div>
+			<div id="slider" class="mui-slider mui-fullscreen vongi-over">
+				
+				<div class="mui-slider-group">
+					
+					<div  class="mui-slider-item mui-control-content " v-show="switchTab">
+						<div  class="mui-scroll-wrapper vongi-over-hei" >
+							<div class="mui-scroll">
+								<div class="mui-input-group fyy-checkbox">
+									
+									<div class="mui-input-row mui-checkbox mui-left" v-for="item,i in recordList">
+										
+											<router-link :to="{name:'XsyApprovalInfoSp',query:{id:item.id,procinstActUserId:item.procinstActUserId,formId:mymod.formId}}" class="mui-media-body">
+											
+											<h4 class="flew-sp margin10">{{item.name}}的{{mymod.text}}申请<span class="color999 mui-h5">{{item.createTime}}</span></h4>
+											<h5 class='mui-ellipsis color999'>{{mymod.text}}日期:{{item[mymod.param]}}</h5>
+										</router-link>
+										<input name="checkbox" v-model="ids" :value="item.procinstActUserId" type="checkbox" >
+									</div>
+									<NullList :remark="'暂无申请记录'" v-if="!recordList.length"></NullList>
+									 
+								</div>
+							</div>
+						</div>
+					</div>
+					<div  class="mui-slider-item mui-control-content" v-show="!switchTab">
+						<div class="mui-scroll-wrapper">
+							<div class="mui-scroll">
+								<ul class="mui-table-view mui-table-view-chevron">
+									<li class="mui-table-view-cell mui-media" v-for="item,i in recordList2">
+										<router-link :to="{name:'XsyApprovalInfo',query:{id:item.id,formId:mymod.formId}}" class="mui-media-body">
+										
+											<h4 class="flew-sp margin10">{{item.name}}的{{mymod.text}}申请<span class="color999 mui-h5">{{item.createTime}}</span></h4>
+											<h5 class='mui-ellipsis color999 flew-sp flew-items'>{{mymod.text}}日期:{{item[mymod.param]}}
+											<button class="mui-btn   mui-btn-outlined" :class="{'mui-btn-primary':item.action==0,
+											'mui-btn-danger':item.action==2||item.action==3,
+											'mui-btn-success':item.action==1||item.action==4}"   >{{item.actionName}}</button>
+															
+										 
+											
+											</h5>
+										</router-link>
+									</li>
+									
+								</ul>
+								<NullList :remark="'暂无已处理记录'" v-if="!recordList2.length"></NullList>
+								
+							</div>
+						</div>
+					</div>
+				</div>
+			</div>
+			<div class="fyy-bindfyy-btn" v-show="switchTab">
+				<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==ids.length">
+						
+					</div>
+				</form>
+				<button type="button" class="mui-btn mui-btn-danger" @click="openFrom('3')">拒绝</button>
+				<button type="button" class="mui-btn mui-btn-success" @click="openFrom('1')">同意</button>
+			</div>
+		</div>
+		<!--弹窗-->
+		<div class="mui-popup mui-popup-in vongi-mui-pop"  v-show="showApprovalBl">
+			<div class="mui-popup-inner vongi-pop-inner">
+				<div class="mui-popup-title">审核意见</div>
+				<div class="mui-popup-input">
+					<textarea id="textarea" rows="3" v-model="subForm.content" placeholder="可输入审核意见"></textarea>
+				</div>
+			</div>
+			<div class="mui-popup-buttons">
+				<span class="mui-popup-button"  @click="showApprovalBl=false">取消</span>
+			<span class="mui-popup-button mui-popup-button-bold" @click="doAction">提交</span></div>
+		</div>
+		<div class="mui-popup-backdrop mui-active" v-show="showApprovalBl"></div>
+</div>
+</template>
+
+
+<script>
+	
+	import * as API from '@/apis-xsy/applyclass'
+	import * as API_sp from '@/apis-xsy/xsy'
+
+	import  Common from '$project/components/Common.vue'
+ 	import Loading from '$project/components/Loading.vue'
+	import TopHeader from '$project/components/TopHeader.vue'
+	import NullList from '$project/components/NullList.vue'
+	import isReachBottom from '$project/utils/isReachBottom'
+	
+	import {
+		mapGetters,
+		mapMutations
+	} from 'vuex'
+
+	export default {
+		name: '',
+		components: {
+			Common,
+			Loading,
+			TopHeader,NullList
+		},
+		props: {
+			formId: {
+				require: true,
+				default: '',
+			},
+		},
+		data() {
+			return {
+				mymod:{},
+				listmod:[{},{
+					title:"调班审核",
+					text:"调班",
+					formId:"exchangeWork",
+					param:"adjustDate"
+				},{
+					title:"请假审核",
+					text:"请假",
+					formId:"leaveWork",
+					param:"adjustDate"
+				},{
+					title:"出差审核",
+					text:"出差",
+					formId:"travelWork",
+					param:"startTime"
+				},{
+					title:"补卡审核",
+					text:"补卡",
+					formId:"applyWork",
+					param:"supplementDate"
+				}],
+				allSelect:[],
+				ids:[],
+				switchTab:true,
+				mybadge:0,
+				pageTitle: '调班审核',
+				showApprovalBl:false,
+				isLoading: false,
+							
+				listForm: {
+					procinstType:1,
+					pageIndex: 1,
+					pageSize: 10,
+					totalPage: 1,
+				},
+				recordList: [],
+				
+				listForm2: {
+					procinstType:1,
+					pageIndex: 1,
+					pageSize: 20,
+					totalPage: 1,
+				},
+				recordList2: [],
+				subForm: {
+					
+					procinstActUserIds: '',
+					content: '',
+					status: ''
+				},
+			}
+		},
+		created() {
+			 this.listForm.procinstType=this.formId;
+			 this.listForm2.procinstType=this.formId;
+			
+		},
+		methods: {
+			leaveItem(detail){
+				if(this.formId=="2"){
+					if(detail.startTime==detail.endTime&&detail.startTimeQuantum=='0'&&detail.endTimeQuantum=='1'){
+						detail.adjustDate="自"+detail.startTime;
+					}else if(detail.startTime==detail.endTime){
+						detail.adjustDate="自"+detail.startTime+(detail.startTimeQuantum!=''?(detail.startTimeQuantum=='1'?'下午':'上午'):'');
+					}else{
+							detail.adjustDate="自"+detail.startTime+(detail.startTimeQuantum!=''?(detail.startTimeQuantum=='1'?'下午':'上午'):'');
+						detail.adjustDate+="至"+detail.endTime+(detail.endTimeQuantum!=''?(detail.endTimeQuantum=='1'?'下午':'上午'):'');
+					}
+				}
+				
+			},
+			mySwitchTab(bl){
+				this.switchTab=bl;
+				if(bl){
+					if(this.recordList.length==0){
+						this.getList()
+					}
+				}else{
+					if(this.recordList2.length==0){
+						this.getList2()
+					}
+				}
+			},
+			//检测表单
+			checkForm() {
+				if (false) {
+					mui.toast('请选择要处理的信息');
+					return false;
+				} else {
+					return true;
+				}
+			},
+			//同意拒绝
+			doAction() {
+				this.subForm.procinstActUserIds = this.ids.join(',');
+				if (this.checkForm()) {
+					this.isLoading = true;
+					API.examineSubmit(this.subForm).then(response => {
+						this.isLoading = false;
+			
+						this.showApprovalBl = false;
+						this.listForm.pageIndex = 1;
+						this.recordList2=[];
+						mui.toast("操作成功");
+						this.getList();
+					}).catch(error => {
+						this.isLoading = false;
+						mui.toast(error);
+					})
+				}
+			},
+			//显示内容表单
+			openFrom(status) {
+				if (!this.ids.length) {
+					mui.toast('请选择要处理的信息');
+				} else {
+					this.subForm.status = status;
+					this.subForm.content = status == 1 ? '同意' : '拒绝';
+					this.showApprovalBl = true;
+					//直接点击处理,不需要弹窗理由框,又需要弹窗理由框了
+					//this.doAction();
+				}
+			},
+			//选择所有
+			selectAll() {
+				
+				if (this.allSelect.length) {
+					this.ids = [];
+				} else {
+					var selectIdList = [];
+					this.recordList.forEach(function(item, index) {
+						selectIdList.push(item.procinstActUserId);
+					})
+					this.ids = selectIdList;
+				}
+			},
+			//获取列表
+			getList2() {
+				this.isLoading = true;
+				API.alreadyExamineShiftList(this.listForm2).then(response => {
+					if (response) {
+						for(var i in response.data){
+							this.leaveItem(response.data[i])
+						}
+						if (this.listForm2.pageIndex == 1) {
+							this.recordList2 = response.data;
+							this.listForm2.pageIndex = response.pageNumber;
+							this.listForm2.totalPage = response.totalPage;
+							
+						} else {
+							this.recordList2 = [
+								...this.recordList2,
+								...response.data
+							];
+						}
+						
+					}
+					
+					this.listForm2.pageIndex++;
+					this.isLoading = false;
+				}).catch(error => {
+					this.isLoading = false;
+					mui.toast(error);
+				})
+			},
+			 //获取列表
+			 getList() {
+			 	this.isLoading = true;
+			 	API.waitExamineShiftList(this.listForm).then(response => {
+			 		if (response) {
+						for(var i in response.data){
+							this.leaveItem(response.data[i])
+						}
+			 			if (this.listForm.pageIndex == 1) {
+			 				this.recordList = response.data;
+			 				this.listForm.pageIndex = response.pageNumber;
+			 				this.listForm.totalPage = response.totalPage;
+							this.mybadge=response.recordsTotal
+			 			} else {
+			 				this.recordList = [
+			 					...this.recordList,
+			 					...response.data
+			 				];
+			 			}
+			 		}
+			 		this.listForm.pageIndex++;
+			 		this.isLoading = false;
+			 	}).catch(error => {
+			 		this.isLoading = false;
+			 		mui.toast(error);
+			 	})
+			 },
+			 //下拉事件
+			 handleScrool() {
+				 
+			 	if (isReachBottom()) {
+			 		console.log('到达底部')
+					if(this.switchTab){
+						if (this.listForm.pageIndex <= this.listForm.totalPage && this.isLoading == false) {
+							this.getList();
+						} else {
+							return;
+						}
+					}else{
+						if (this.listForm2.pageIndex <= this.listForm2.totalPage && this.isLoading == false) {
+							this.getList2();
+						} else {
+							return;
+						}
+					}
+			 		
+			 	}
+			 },
+		 
+			asynCallBack() {
+
+			},
+		
+		},
+	mounted() {
+		 this.mymod=this.listmod[this.formId];
+		if(this.switchTab){
+			this.getList();
+		}else{
+			this.getList2();
+		}
+		
+		//监控下拉加载事件
+		var _this = this;
+		window.addEventListener('scroll', _this.handleScrool);
+	},
+	destroyed() {
+		//销毁监听事件
+		//var _this = this;
+		//window.removeEventListener('scroll', _this.handleScrool);
+	},
+	
+	}
+</script>
+
+<style src="$project/assets/css/iconfont.css"></style>
+<style scoped src="$project/assets/css/xpwyfyy.css"></style>
+<style src="$project/assets/css/xsy.css"></style>
+<style>
+	
+</style>

+ 32 - 0
src/projects/business/router-xsy/xsy.js

@@ -9,6 +9,38 @@ const routesXsy = [
 		path: '/xsy',
 		component: () => import('../views-xsy/Layout.vue'),
 		children: [
+			//审批
+			{
+				path: 'approval',
+				component: () => import('../views-xsy/Layout.vue'),
+				children: [
+					 
+					//审批-个人
+					{
+						path: 'info',
+						name: 'XsyApprovalInfo',
+						component: () => import('../views-xsy/Approval/Info.vue'),
+						meta: {
+							requireAuth: false,
+							role: [],
+							title: '申请详情',
+						}
+					},
+					//审批-领导
+					{
+						path: 'infosp',
+						name: 'XsyApprovalInfoSp',
+						component: () => import('../views-xsy/Approval/InfoSp.vue'),
+						meta: {
+							requireAuth: false,
+							role: [],
+							title: '申请详情',
+						}
+					},
+					
+				]
+			},
+			
 			//申请调班
 			{
 				path: 'applyClass',

+ 1 - 0
src/projects/business/views-home/User/Login.vue

@@ -167,6 +167,7 @@
 					}
 					
 					if(!openid){
+						mui.toast('openid为空');
 						return
 					}
 					API_Person.validateCode({

+ 3 - 4
src/projects/business/views-xsy/ApplyClass/Add.vue

@@ -174,10 +174,9 @@
 						
 						mui.toast('提交成功');
 						this.$router.replace({
-						    name: "XsyApplyClassInfo",
-						    query: {
-								id:response.id
-							}
+						    
+							name: "XsyApprovalInfo",
+							query:{id:response.id,formId:'exchangeWork'}
 						})
 					}).catch(error => {
 						this.subForm.date=obj;

+ 29 - 44
src/projects/business/views-xsy/ApplyClass/Info.vue

@@ -1,48 +1,27 @@
 <template>
 	<div>
-		<loading :visible="isLoading"></loading>
-		<header class="mui-bar mui-bar-nav">
-			<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left" v-if="!$route.query.token"></a>
-			<h1 class="mui-title">申请调班详情</h1>
-		</header>
-		<div class="mui-content vongi-qingjiadt">
-			<div class="vongi-qingjiadt-head flew-sp">
-				<div class="flew-items">
-					<div class="flew"><img :src="adjustShiftDetail.faceImageUrl+'?x-oss-process=image/resize,h_800,m_lfit'" width="50" /></div>
-					<h4>{{adjustShiftDetail.name}} {{adjustShiftDetail.status==4?'安排':'申请'}}调班</h4>
-				</div>
-				<button class="mui-btn   mui-btn-outlined" :class="{'mui-btn-primary':adjustShiftDetail.status==0,
-					'mui-btn-danger':adjustShiftDetail.status==2||adjustShiftDetail.status==3,
-					'mui-btn-success':adjustShiftDetail.status==1||adjustShiftDetail.status==4}">{{adjustShiftDetail.statusName}}</button>
-
-			</div>
-			<form class="mui-input-group">
-				<div class="mui-input-row">
-					<label>调班日期</label>
-					<span>{{adjustShiftDetail.adjustDate}}</span>
-				</div>
-				<div class="mui-input-row">
-					<label>原班次</label>
-					<span>{{adjustShiftDetail.oldShift}}</span>
-				</div>
-				<div class="mui-input-row">
-					<label>调整为</label>
-					<span>{{adjustShiftDetail.newShift}}</span>
-				</div>
-				<div class="mui-input-row">
-					<label>备注</label>
-					<span>{{adjustShiftDetail.remark}}</span>
-				</div>
-				<div class="mui-input-row">
-					<label>申请时间</label>
-					<span>{{adjustShiftDetail.createTime}}</span>
-				</div>
-			</form>
-			
-			<examineDetail @allowExamine="allowExamine" :id="id" v-if="adjustShiftDetail.sp&&adjustShiftDetail.status!=4"></examineDetail>
-			
-			 
-		</div>
+		<form class="mui-input-group">
+			<div class="mui-input-row">
+				<label>调班日期</label>
+				<span>{{adjustShiftDetail.adjustDate}}</span>
+			</div>
+			<div class="mui-input-row">
+				<label>原班次</label>
+				<span>{{adjustShiftDetail.oldShift}}</span>
+			</div>
+			<div class="mui-input-row">
+				<label>调整为</label>
+				<span>{{adjustShiftDetail.newShift}}</span>
+			</div>
+			<div class="mui-input-row">
+				<label>备注</label>
+				<span>{{adjustShiftDetail.remark}}</span>
+			</div>
+			<div class="mui-input-row">
+				<label>申请时间</label>
+				<span>{{adjustShiftDetail.createTime}}</span>
+			</div>
+		</form>
 	</div>
 </template>
 
@@ -120,7 +99,13 @@ import ExamineDetail from '$project/components/ExamineDetail.vue'
 					this.adjustShiftDetail = response;
 					this.adjustShiftDetail.sp=true;
 					this.isLoading = false;
-					 
+					
+					if(this.adjustShiftDetail.status==4){
+						this.adjustShiftDetail.text="安排调班"
+					}else{
+						this.adjustShiftDetail.text="申请调班"
+					}
+					 this.$emit('getInfo',this.adjustShiftDetail);
 					
 				}).catch(error => {
 					this.isLoading = false;

+ 2 - 2
src/projects/business/views-xsy/ApplyClass/List.vue

@@ -85,8 +85,8 @@
 		methods: {
 			gotoItem(item){
 				this.$router.push({
-				    name: "XsyApplyClassInfo",
-					query:{id:item.id}
+				    name: "XsyApprovalInfo",
+					query:{id:item.id,formId:'exchangeWork'}
 				})
 			},
 			gotoUrl(){

+ 141 - 0
src/projects/business/views-xsy/Approval/Info.vue

@@ -0,0 +1,141 @@
+<template>
+	<div>
+		<loading :visible="isLoading"></loading>
+		<header class="mui-bar mui-bar-nav">
+			<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left" v-if="!$route.query.token"></a>
+			<h1 class="mui-title">{{info.text}}详情</h1>
+		</header>
+		<div class="mui-content vongi-qingjiadt">
+			<div class="vongi-qingjiadt-head flew-sp">
+				<div class="flew-items">
+					<div class="flew"><img :src="info.faceImageUrl+'?x-oss-process=image/resize,h_800,m_lfit'" width="50" /></div>
+					<h4>{{info.name}} {{info.text}}</h4>
+				</div>
+				<button class="mui-btn   mui-btn-outlined" :class="{'mui-btn-primary':info.status==0,
+					'mui-btn-danger':info.status==2||info.status==3,
+					'mui-btn-success':info.status==1||info.status==4}">{{info.statusName}}</button>
+
+			</div>
+			<Info1 v-if="sp&&formId=='exchangeWork'" @getInfo="getInfo"></Info1>
+			 <Info2 v-if="sp&&formId=='leaveWork'" @getInfo="getInfo"></Info2>
+			 <Info3 v-if="sp&&formId=='travelWork'" @getInfo="getInfo"></Info3>
+			 <Info4 v-if="sp&&formId=='applyWork'" @getInfo="getInfo"></Info4>
+			<examineDetail @allowExamine="allowExamine" :id="id" v-if="info.sp&&info.status!=4"></examineDetail>
+			
+			 
+		</div>
+	</div>
+</template>
+
+
+<script>
+	 
+	import Info1 from '@/views-xsy/ApplyClass/Info.vue'
+	import Info2 from '@/views/Master/Attendance/LeaveInfo.vue'
+	import Info3 from '@/views/Master/BusinessTravel/Info2.vue'
+	import Info4 from '@/views/Master/Attendance/Info.vue'
+	
+	
+	import * as API_sp from '@/apis-xsy/xsy'
+	import ExamineDetail from '$project/components/ExamineDetail.vue'
+
+	import Common from '$project/components/Common.vue'
+	import Loading from '$project/components/Loading.vue'
+	import TopHeader from '$project/components/TopHeader.vue'
+	import {
+		mapGetters,
+		mapMutations
+	} from 'vuex'
+
+	export default {
+		name: '',
+		components: {
+			Common,
+			Loading,
+			TopHeader,ExamineDetail,Info1,Info2,Info3,Info4
+		},
+		data() {
+			return {
+				pageTitle: '申请调班详情',
+				formId:this.$route.query.formId,
+				sp:true,
+				isLoading: false,
+				id: '',
+				info: {},
+				examineDetail: {},
+				only: "test"
+
+			}
+		},
+		created() {
+			this.id = this.$route.query.id;
+		},
+		methods: {
+			getInfo(op){
+				this.info=op;
+				this.info.sp=true;
+			},
+			allowExamine(op){
+				this.$emit('allowExamine',op);
+				
+			},
+			getClass(ac, i) {
+				var reclass = ""
+				
+				if (ac.action == "0") {
+					if (this.only == "test") {
+
+						this.only = i;
+					}
+					if (this.only == i) {
+						return "color3385FF"
+					} else {
+						return "mui-hidden"
+					}
+
+				}
+
+				if (ac.action == "3" || ac.action == "2") {
+					return "colorfe616c"
+				}
+
+				if (ac.action == "1" || ac.action == "4") {
+					return "color389E0D"
+				}
+				return reclass
+			},
+			
+		
+			asynCallBack() {
+
+			},
+			update(bl) {
+				 
+				this.sp=bl;
+				if(!bl){
+					this.info.sp=false;
+				}
+				
+			}
+		},
+		mounted() {
+			 
+			
+		},
+		destroyed() {},
+
+	}
+</script>
+
+<style src="$project/assets/css/iconfont.css"></style>
+<style scoped src="$project/assets/css/xpwyfyy.css"></style>
+<style src="$project/assets/css/xsy.css"></style>
+<style scoped>
+	.color3385FF {
+		color: #3385FF
+	}
+
+	.color389E0D {
+		color: #389E0D
+	}
+</style>

+ 139 - 0
src/projects/business/views-xsy/Approval/InfoSp.vue

@@ -0,0 +1,139 @@
+<template>
+<div>
+		<Info @allowExamine="allowExamine" ref="myinfo"></Info>
+		<div class="mui-content vongi-qingjiadt">
+			 
+			<div class="fyy-scon-botton" v-if="allowExamineBl">
+				<div class="examine-btn examine-btn1" @click="openFrom('3')">拒绝</div>
+				<div class="examine-btn examine-btn2" @click="openFrom('1')">通过</div>
+			</div>
+		</div>
+		<!--弹窗-->
+		<div class="mui-popup mui-popup-in vongi-mui-pop"  v-show="showApprovalBl">
+			<div class="mui-popup-inner vongi-pop-inner">
+				<div class="mui-popup-title">审核意见</div>
+				<div class="mui-popup-input">
+					<textarea id="textarea" rows="3" v-model="subForm.content" placeholder="可输入审核意见"></textarea>
+				</div>
+			</div>
+			<div class="mui-popup-buttons">
+				<span class="mui-popup-button"  @click="showApprovalBl=false">取消</span>
+			<span class="mui-popup-button mui-popup-button-bold" @click="doAction">提交</span></div>
+		</div>
+		<div class="mui-popup-backdrop mui-active" v-show="showApprovalBl"></div>
+		<loading :visible="isLoading"></loading>
+</div>
+</template>
+
+<script>
+	import Info from './Info.vue'
+	
+	import * as API from '@/apis-xsy/applyclass'
+	import * as API_sp from '@/apis-xsy/xsy'
+
+	import  Common from '$project/components/Common.vue'
+	 
+	import Loading from '$project/components/Loading.vue'
+	import TopHeader from '$project/components/TopHeader.vue'
+	import {
+		mapGetters,
+		mapMutations
+	} from 'vuex'
+	
+	export default {
+		name: '',
+		components: {
+			Common,
+			Loading,
+			TopHeader,Info
+		},
+		data() {
+			return {
+				pageTitle: '申请调班详情',
+				showApprovalBl:false,
+				allowExamineBl:false,
+				isLoading: false,
+				subForm: {
+					procinstActUserIds: '',
+					content: '',
+					status: ''
+				},
+			}
+		},
+		created() {
+			
+	
+		},
+		methods: { 
+			allowExamine(bl){
+				 
+				if(bl==""){
+					 this.allowExamineBl=false;
+					return
+				}
+				 if(bl==this.$route.query.procinstActUserId){
+					 this.allowExamineBl=true;
+				 }else{
+					 this.allowExamineBl=false;
+				 }
+			
+			},
+			//同意拒绝
+			doAction() {
+				this.$refs.myinfo.update(false);
+				
+				this.allowExamineBl=false;
+				this.subForm.procinstActUserIds =this.$route.query.procinstActUserId;
+				if (this.checkForm()) {
+					this.isLoading = true;
+					API.examineSubmit(this.subForm).then(response => {
+						this.isLoading = false;
+			
+						this.showApprovalBl = false;
+						this.$refs.myinfo.update(true);
+						mui.toast("操作成功");
+						 
+					}).catch(error => {
+						this.isLoading = false;
+						mui.toast(error);
+					})
+				}
+			},
+			//检测表单
+			checkForm() {
+				if (false) {
+					mui.toast('请选择要处理的信息');
+					return false;
+				} else {
+					return true;
+				}
+			},
+		    openFrom(status) {
+		    	if (false) {
+		    		mui.toast('请选择要处理的信息');
+		    	} else {
+		    		this.subForm.status = status;
+		    		this.subForm.content = status == 1 ? '同意' : '拒绝';
+		    		this.showApprovalBl = true;
+		    		//直接点击处理,不需要弹窗理由框,又需要弹窗理由框了
+		    		//this.doAction();
+		    	}
+		    },
+			asynCallBack() {
+	
+			},
+		
+		},
+		mounted() {
+		
+		},
+		destroyed() {},
+	
+	}
+</script>
+
+<style src="$project/assets/css/iconfont.css"></style>
+<style scoped src="$project/assets/css/xpwyfyy.css"></style>
+<style src="$project/assets/css/xsy.css"></style>
+<style>
+</style>

+ 12 - 288
src/projects/business/views-xsy/ApprovalClass/List.vue

@@ -1,112 +1,15 @@
 <template>
-<div>
-		<common @asynCallBack="asynCallBack"></common>
-	<loading :visible="isLoading"></loading>
-    <header class="mui-bar mui-bar-nav">
-			<h1 class="mui-title">调班审核</h1>
-			<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
-		</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 class="mui-control-item " @click="mySwitchTab(true)" :class="{'mui-active':switchTab}" >
-						<span class="fyy-badge">待处理<span class="mui-badge" v-show="mybadge">{{mybadge}}</span></span>
-					</a>
-					<a class="mui-control-item"  @click="mySwitchTab(false)" :class="{'mui-active':!switchTab}"   >
-						已处理
-					</a>
-				</div>
-			</div>
-			<div id="slider" class="mui-slider mui-fullscreen vongi-over">
-				
-				<div class="mui-slider-group">
-					
-					<div  class="mui-slider-item mui-control-content " v-show="switchTab">
-						<div  class="mui-scroll-wrapper vongi-over-hei" >
-							<div class="mui-scroll">
-								<div class="mui-input-group fyy-checkbox">
-									
-									<div class="mui-input-row mui-checkbox mui-left" v-for="item,i in recordList">
-										
-											<router-link :to="{name:'XsyApprovalClassInfo',query:{id:item.id,procinstActUserId:item.procinstActUserId}}" class="mui-media-body">
-											
-											<h4 class="flew-sp margin10">{{item.name}}的调班申请<span class="color999 mui-h5">{{item.createTime}}</span></h4>
-											<h5 class='mui-ellipsis color999'>调班日期:{{item.adjustDate}}</h5>
-										</router-link>
-										<input name="checkbox" v-model="ids" :value="item.procinstActUserId" type="checkbox" >
-									</div>
-									<NullList :remark="'暂无调班申请记录'" v-if="!recordList.length"></NullList>
-									 
-								</div>
-							</div>
-						</div>
-					</div>
-					<div  class="mui-slider-item mui-control-content" v-show="!switchTab">
-						<div class="mui-scroll-wrapper">
-							<div class="mui-scroll">
-								<ul class="mui-table-view mui-table-view-chevron">
-									<li class="mui-table-view-cell mui-media" v-for="item,i in recordList2">
-										<router-link :to="{name:'XsyApprovalClassInfo',query:{id:item.id}}" class="mui-media-body">
-										
-											<h4 class="flew-sp margin10">{{item.name}}的调班申请<span class="color999 mui-h5">{{item.createTime}}</span></h4>
-											<h5 class='mui-ellipsis color999 flew-sp flew-items'>调班日期:{{item.adjustDate}}
-											<button class="mui-btn   mui-btn-outlined" :class="{'mui-btn-primary':item.action==0,
-											'mui-btn-danger':item.action==2||item.action==3,
-											'mui-btn-success':item.action==1||item.action==4}"   >{{item.actionName}}</button>
-															
-										 
-											
-											</h5>
-										</router-link>
-									</li>
-									
-								</ul>
-								<NullList :remark="'暂无已处理记录'" v-if="!recordList2.length"></NullList>
-								
-							</div>
-						</div>
-					</div>
-				</div>
-			</div>
-			<div class="fyy-bindfyy-btn" v-show="switchTab">
-				<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==ids.length">
-						
-					</div>
-				</form>
-				<button type="button" class="mui-btn mui-btn-danger" @click="openFrom('3')">拒绝</button>
-				<button type="button" class="mui-btn mui-btn-success" @click="openFrom('1')">同意</button>
-			</div>
-		</div>
-		<!--弹窗-->
-		<div class="mui-popup mui-popup-in vongi-mui-pop"  v-show="showApprovalBl">
-			<div class="mui-popup-inner vongi-pop-inner">
-				<div class="mui-popup-title">审核意见</div>
-				<div class="mui-popup-input">
-					<textarea id="textarea" rows="3" v-model="subForm.content" placeholder="可输入审核意见"></textarea>
-				</div>
-			</div>
-			<div class="mui-popup-buttons">
-				<span class="mui-popup-button"  @click="showApprovalBl=false">取消</span>
-			<span class="mui-popup-button mui-popup-button-bold" @click="doAction">提交</span></div>
-		</div>
-		<div class="mui-popup-backdrop mui-active" v-show="showApprovalBl"></div>
-</div>
+	<div>
+			 <ListSp formId="1" ></ListSp>
+	</div>
 </template>
 
 
 <script>
 	
-	import * as API from '@/apis-xsy/applyclass'
-	import * as API_sp from '@/apis-xsy/xsy'
-
-	import  Common from '$project/components/Common.vue'
- 	import Loading from '$project/components/Loading.vue'
-	import TopHeader from '$project/components/TopHeader.vue'
-	import NullList from '$project/components/NullList.vue'
-	import isReachBottom from '$project/utils/isReachBottom'
+	
+	 import  ListSp from '@/components/Approval/ListSp.vue'
+	 
 	
 	import {
 		mapGetters,
@@ -116,202 +19,23 @@
 	export default {
 		name: '',
 		components: {
-			Common,
-			Loading,
-			TopHeader,NullList
+			ListSp
 		},
-		data() {
-			return {
-				allSelect:[],
-				ids:[],
-				switchTab:true,
-				mybadge:0,
-				pageTitle: '调班审核',
-				showApprovalBl:false,
-				isLoading: false,			
-				listForm: {
-					procinstType:1,
-					pageIndex: 1,
-					pageSize: 10,
-					totalPage: 1,
-				},
-				recordList: [],
+		data() { 
+			return{
 				
-				listForm2: {
-						procinstType:1,
-					pageIndex: 1,
-					pageSize: 20,
-					totalPage: 1,
-				},
-				recordList2: [],
-				subForm: {
-					
-					procinstActUserIds: '',
-					content: '',
-					status: ''
-				},
 			}
 		},
 		created() {
 			 
 		},
-		methods: {
-			mySwitchTab(bl){
-				this.switchTab=bl;
-				if(bl){
-					if(this.recordList.length==0){
-						this.getList()
-					}
-				}else{
-					if(this.recordList2.length==0){
-						this.getList2()
-					}
-				}
-			},
-			//检测表单
-			checkForm() {
-				if (false) {
-					mui.toast('请选择要处理的信息');
-					return false;
-				} else {
-					return true;
-				}
-			},
-			//同意拒绝
-			doAction() {
-				this.subForm.procinstActUserIds = this.ids.join(',');
-				if (this.checkForm()) {
-					this.isLoading = true;
-					API.examineSubmit(this.subForm).then(response => {
-						this.isLoading = false;
-			
-						this.showApprovalBl = false;
-						this.listForm.pageIndex = 1;
-						this.recordList2=[];
-						mui.toast("操作成功");
-						this.getList();
-					}).catch(error => {
-						this.isLoading = false;
-						mui.toast(error);
-					})
-				}
-			},
-			//显示内容表单
-			openFrom(status) {
-				if (!this.ids.length) {
-					mui.toast('请选择要处理的信息');
-				} else {
-					this.subForm.status = status;
-					this.subForm.content = status == 1 ? '同意' : '拒绝';
-					this.showApprovalBl = true;
-					//直接点击处理,不需要弹窗理由框,又需要弹窗理由框了
-					//this.doAction();
-				}
-			},
-			//选择所有
-			selectAll() {
-				
-				if (this.allSelect.length) {
-					this.ids = [];
-				} else {
-					var selectIdList = [];
-					this.recordList.forEach(function(item, index) {
-						selectIdList.push(item.procinstActUserId);
-					})
-					this.ids = selectIdList;
-				}
-			},
-			//获取列表
-			getList2() {
-				this.isLoading = true;
-				API.alreadyExamineShiftList(this.listForm2).then(response => {
-					if (response) {
-						if (this.listForm2.pageIndex == 1) {
-							this.recordList2 = response.data;
-							this.listForm2.pageIndex = response.pageNumber;
-							this.listForm2.totalPage = response.totalPage;
-							
-						} else {
-							this.recordList2 = [
-								...this.recordList2,
-								...response.data
-							];
-						}
-					}
-					this.listForm2.pageIndex++;
-					this.isLoading = false;
-				}).catch(error => {
-					this.isLoading = false;
-					mui.toast(error);
-				})
-			},
-			 //获取列表
-			 getList() {
-			 	this.isLoading = true;
-			 	API.waitExamineShiftList(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;
-							this.mybadge=response.recordsTotal
-			 			} else {
-			 				this.recordList = [
-			 					...this.recordList,
-			 					...response.data
-			 				];
-			 			}
-			 		}
-			 		this.listForm.pageIndex++;
-			 		this.isLoading = false;
-			 	}).catch(error => {
-			 		this.isLoading = false;
-			 		mui.toast(error);
-			 	})
-			 },
-			 //下拉事件
-			 handleScrool() {
-				 
-			 	if (isReachBottom()) {
-			 		console.log('到达底部')
-					if(this.switchTab){
-						if (this.listForm.pageIndex <= this.listForm.totalPage && this.isLoading == false) {
-							this.getList();
-						} else {
-							return;
-						}
-					}else{
-						if (this.listForm2.pageIndex <= this.listForm2.totalPage && this.isLoading == false) {
-							this.getList2();
-						} else {
-							return;
-						}
-					}
-			 		
-			 	}
-			 },
-		 
-			asynCallBack() {
-
-			},
+		methods: {  
 		
 		},
 	mounted() {
-		if(this.switchTab){
-			this.getList();
-		}else{
-			this.getList2();
-		}
-		
-		//监控下拉加载事件
-		var _this = this;
-		window.addEventListener('scroll', _this.handleScrool);
+		 
 	},
-	destroyed() {
-		//销毁监听事件
-		var _this = this;
-		window.removeEventListener('scroll', _this.handleScrool);
-	},
+
 	
 	}
 </script>

+ 15 - 12
src/projects/business/views/Master/Attendance/Apply.vue

@@ -27,7 +27,7 @@
 			<div class="mui-content-padded">
 				<h5><span class="colorfe616c">*</span>申请理由</h5>
 				<div class="mui-input-row">
-					<textarea v-model="tjForm.content" rows="5" placeholder="请输入"></textarea>
+					<textarea v-model="tjForm.reason" rows="5" placeholder="请输入"></textarea>
 				</div>
 			</div>
 			<div class="mui-content-padded">
@@ -89,14 +89,14 @@
 				},
 				tjForm: {
 					workAttendanceDate: '',
-					workAttendanceTime: '',
+					workAttendanceTime: this.$route.query.time,
 					type: '2', //外勤打卡/补卡(1/2)
-					content: '补卡申请',
-					approvalPersonId: '',
-					workAttendanceId: this.$route.query.id,
-					photoFile: '',
+					reason: '补卡申请',
+					id: this.$route.query.id,
+					imageUrl: '',
 					longitude: '',
 					latitude: '',
+					formId: "applyWork",
 				},
 				//typeName: '',
 				approvalPersonName: '刘攀',
@@ -221,10 +221,10 @@
 				if (!this.tjForm.type) {
 					mui.toast('请选择打卡类型');
 					return false;
-				} else if (!this.tjForm.approvalPersonId) {
+				} else if (false) {
 					mui.toast('请选择审批人');
 					return false;
-				} else if (!this.tjForm.content) {
+				} else if (!this.tjForm.reason) {
 					mui.toast('请输入申请内容');
 					return false;
 				} else {
@@ -236,14 +236,17 @@
 				if(!this.examinePerson.name){
 					return;
 				}
-				this.tjForm.photoFile = this.picList.join(',');
+				this.tjForm.imageUrl = this.picList.join(',');
 				if (this.checkFrom()) {
 					this.isLoading = true;
-					API_Attendance.postPatchCard(this.tjForm).then(response => {
+					API_Attendance.supplementWorkSubmit(this.tjForm).then(response => {
 						this.isLoading = false;
 
 						mui.toast('提交成功');
-						this.$router.go(-1);
+						this.$router.replace({
+							name: "XsyApprovalInfo",
+							query:{id:response.id,formId:'applyWork'}
+						})
 					}).catch(error => {
 						this.isLoading = false;
 						mui.toast(error);
@@ -277,7 +280,7 @@
 		mounted() {
 			//获取微信配置
 			WxJsApi.getWxConfig();
-			this.getTime();
+			//this.getTime();
 			this.getExaminePerson();
 		},
 		destroyed() {},

+ 20 - 84
src/projects/business/views/Master/Attendance/Info.vue

@@ -1,52 +1,25 @@
 <template>
 	<div>
-		<common @asynCallBack="asynCallBack"></common>
-		<top-header :pageTitle="pageTitle"></top-header>
-
+		
 		<div class="mui-content vongi-wordcard">
-			<div class="mui-content-padded vongi-wordcard-top">
-				<div class="mui-media-object mui-pull-left">
-					<img :src="detail.faceImageUrl" v-viewer>
-				</div>
-				<div class="mui-media-body">
-					{{detail.personName}}
-					<p class='mui-ellipsis'><span class="colorfe616c">{{detail.typeN}}</span>申请</p>
-				</div>
-				<!--补卡-->
-				<button v-if="detail.type=='2'" type="button" :class="'mui-btn mui-btn-success mui-btn-outlined '+(detail.status>0?(detail.status==1?'status_a':'status_r'):'')">
-					{{detail.status>0?(detail.status==1?'已同意':'已拒绝'):'未审核'}}
-				</button>
-				<!--外勤打卡-->
-				<button v-if="detail.type=='1'" type="button" :class="'mui-btn mui-btn-success mui-btn-outlined '+(detail.remark?'status_a':'status_r')">
-					{{detail.remark?'已审查':'未审查'}}
-				</button>
-			</div>
+			 
 
 			<div class="mui-content-padded vongi-wordcard-center">
 				<ul class="mui-table-view">
-					<li class="mui-table-view-cell mui-media">
-						<div class="mui-media-body">申请类型</div>
-						<span v-text="detail.typeN"></span>
-					</li>
-					<li class="mui-table-view-cell mui-media">
-						<div class="mui-media-body">所在部门</div>
-						<span v-text="detail.companyName"></span>
-					</li>
+					 
+					 
 					<li class="mui-table-view-cell mui-media">
 						<div class="mui-media-body">申请班次</div>
-						<span class="colorf6f448" v-text="detail.fillAttendanceDayAndTime"></span>
-					</li>
-					<li v-if="detail.address" class="mui-table-view-cell mui-media">
-						<div class="mui-media-body">打卡地点</div>
-						<span v-text="detail.address"></span>
+						<span class="colorf6f448" v-text="detail.attendanceDate"></span>
 					</li>
+				 
 					<li class="mui-table-view-cell mui-media">
 						<div class="mui-media-body">申请时间</div>
 						<span v-text="detail.createTime"></span>
 					</li>
 					<li class="mui-table-view-cell mui-media">
 						<div class="mui-media-body">申请理由</div>
-						<span class="colorf8b155" v-text="detail.content"></span>
+						<span class="colorf8b155" v-text="detail.reason"></span>
 					</li>
 					<li class="mui-table-view-cell mui-media">
 						<div class="mui-media-body">相关照片</div>
@@ -59,59 +32,21 @@
 
 				</ul>
 			</div>
-            <div class="vongi-slot mui-content-padded vongi-wordcard-top">
-                <div v-for="(item,index) in detail.list" class="vongi-slot-block">
-                    <div class="vongi-slot-img"><img :src="item.faceImageUrl"></div>
-                    <div class="vongi-slot-content">
-                        <h4>审批人{{index+1}}<span class="mui-pull-right mui-h5 color999" v-text="item.time"></span></h4>
-                        <p>{{item.name}} <span class="color55f868" :style="getColor(item.status)" v-text="item.statusN"></span></p>
-						<p v-if="item.approvalContent" v-text="item.approvalContent"></p>
-					</div>
-                </div>
-            </div>
-			<!--
-			<div class="mui-content-padded vongi-wordcard-center">
-				<h5>审批意见</h5>
-				<ul class="mui-table-view">
-					<li class="mui-table-view-cell mui-media">
-						审批人:
-						<span v-text="detail.approvalPersonName"></span>
-					</li>
-					<li class="mui-table-view-cell mui-media">
-						审批编号:
-						<span v-text="detail.approvalNo"></span>
-					</li>
-					<li class="mui-table-view-cell mui-media">
-						<span class="colorf8b155" v-text="detail.approvalContent"></span>
-					</li>
-				</ul>
-			</div>
-			-->
+            
 			
-			<div v-if="detail.status && detail.status=='2' && detail.personId==person_data.id" class="fyy-scon-botton">
+			<!-- <div v-if="detail.status && detail.status=='2' && detail.personId==person_data.id" class="fyy-scon-botton">
 				<div class="examine-btn examine-btn1-blue" @click="resetApply">重新申请</div>
-			</div>
+			</div> -->
 
-			<div v-if="can_remark" class="fyy-scon-botton">
+			<!-- <div v-if="can_remark" class="fyy-scon-botton">
 				<div class="examine-btn examine-btn1-blue" @click="openFromVisible=true">填写意见</div>
-			</div>
+			</div> -->
 		</div>
 
-		<!-- 审批弹窗 -->
-		<div v-show="openFromVisible" class="mui-popup mui-popup-in vongi-mui-pop">
-			<div class="mui-popup-inner vongi-pop-inner">
-				<div class="mui-popup-title">填写意见</div>
-				<div class="mui-popup-input">
-					<textarea  v-model="remarkForm.remark" rows="3" placeholder="请输入"></textarea>
-				</div>
-			</div>
-			<div class="mui-popup-buttons"><span class="mui-popup-button mui-popup-button-bold" @click="addRemark">提交</span></div>
-		</div>
-		<div v-show="openFromVisible" @click="openFromVisible=false"  class="mui-popup-backdrop mui-active"></div>
-		
+	 
+ 		
 
-		<loading :visible="isLoading"></loading>
-	</div>
+ 	</div>
 </template>
 
 <script>
@@ -177,12 +112,13 @@
 			//获取详情
 			getDetail() {
 				this.isLoading = true;
-				API_Attendance.getApplyInfo(this.subForm).then(response => {
+				API_Attendance.supplementWorkDetail(this.subForm).then(response => {
 
 					this.detail = response;
 
 					this.remarkForm.remark = response.remark;
-
+					this.detail.text="补卡申请"
+					this.$emit('getInfo',this.detail);
 					this.isLoading = false;
 				}).catch(error => {
 					this.isLoading = false;
@@ -220,8 +156,8 @@
 			picList: {
 				// getter
 				get: function() {
-					if (this.detail && this.detail.fillAttendanceFilesUrl) {
-						return this.detail.fillAttendanceFilesUrl.split(',');
+					if (this.detail && this.detail.imageUrl) {
+						return this.detail.imageUrl.split(',');
 					} else {
 						return [];
 					}

+ 3 - 5
src/projects/business/views/Master/Attendance/LeaveForm.vue

@@ -354,12 +354,10 @@
 					API_Leave.save(this.tjForm).then(response => {
 						this.isLoading = false;
 						mui.toast("提交成功");
-						
+										 
 						this.$router.replace({
-						    name: "MasterAttendanceLeaveInfo",
-						    query: {
-								id:response.id
-							}
+							name: "XsyApprovalInfo",
+							query:{id:response.id,formId:'leaveWork'}
 						})
 					}).catch(error => {
 						this.tjForm.startTime=startTime;

+ 41 - 53
src/projects/business/views/Master/Attendance/LeaveInfo.vue

@@ -1,63 +1,48 @@
 <template>
 <div>
-    <common @asynCallBack="asynCallBack"></common>
-   
+    
 	<header class="mui-bar mui-bar-nav">
 			<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left" v-if="!$route.query.token"></a>
 			<h1 class="mui-title">{{pageTitle}}</h1>
 		</header>
 		
-    <div class="mui-content vongi-qingjiadt ">
-        <div class="vongi-qingjiadt-head flew-sp">
-            <div class="flew-items">
-                <div class="flew"><img :src="detail.faceImageUrl" width="50" /></div>
-                <h4 v-text="detail.name+' 申请请假 '+detail.typeName"></h4>
-            </div>
-       <button class="mui-btn   mui-btn-outlined" :class="{'mui-btn-primary':detail.status==0,
-       	'mui-btn-danger':detail.status==2||detail.status==3,
-       	'mui-btn-success':detail.status==1||detail.status==4}">{{detail.statusName}}</button>
-            <!-- <div class="examine-refuse">已拒绝</div> -->
-        </div>
-        <form class="mui-input-group margin10">
-            <!--<div class="mui-input-row">-->
-                <!--<label>身份证号</label>-->
-                <!--<span v-text="detail.idCard">420400200002020101</span>-->
-            <!--</div>-->
-
-            <div class="mui-input-row">
-                <label>请假时间</label>
-
-                <span v-if="detail.startTime==detail.endTime&&detail.startTimeQuantum=='0'&&detail.endTimeQuantum=='1'">自{{detail.startTime}}</span>
-                <span v-else-if="detail.startTime==detail.endTime">自{{detail.startTime}}{{(detail.startTimeQuantum!=''?(detail.startTimeQuantum=='1'?'下午':'上午'):'')}}</span>
-                <span  v-else >自{{detail.startTime}}{{(detail.startTimeQuantum!=''?(detail.startTimeQuantum=='1'?'下午':'上午'):'')}}
-                    <br />至{{detail.endTime}}{{(detail.endTimeQuantum!=''?(detail.endTimeQuantum=='1'?'下午':'上午'):'')}}</span>
-            </div>
-            <div class="mui-input-row">
-                <label>请假时长</label>
-                <span v-text="daytime"></span>
-            </div>
-            <div class="mui-input-row">
-                <label>请假事由</label>
-                <span v-text="detail.reason">家中有事,需要会老家一趟家中有事,需要会老家一趟家中有事,需要会老家一趟家中有事,需要会老家一趟。</span>
-            </div>
-            <div class="mui-input-row">
-                <label>上传图片</label>
-                <span class="vongi-qingjiadt-photo">
-                    <template v-for="(item,index) in picList">
-                        <img :src="item" v-viewer />
-                    </template>
-                </span>
-            </div>
-            <div class="mui-input-row">
-                <label>申请时间</label>
-                <span v-text="detail.createTime">2020-04-27 12:00:00</span>
-            </div>
-
-
-        </form>
-		<examineDetail :id="id" @allowExamine="allowExamine" v-if="detail.sp&&detail.status!=4"></examineDetail>
-		
-    </div>
+   <form class="mui-input-group margin10">
+       <!--<div class="mui-input-row">-->
+           <!--<label>身份证号</label>-->
+           <!--<span v-text="detail.idCard">420400200002020101</span>-->
+       <!--</div>-->
+   
+       <div class="mui-input-row">
+           <label>请假时间</label>
+   
+           <span v-if="detail.startTime==detail.endTime&&detail.startTimeQuantum=='0'&&detail.endTimeQuantum=='1'">自{{detail.startTime}}</span>
+           <span v-else-if="detail.startTime==detail.endTime">自{{detail.startTime}}{{(detail.startTimeQuantum!=''?(detail.startTimeQuantum=='1'?'下午':'上午'):'')}}</span>
+           <span  v-else >自{{detail.startTime}}{{(detail.startTimeQuantum!=''?(detail.startTimeQuantum=='1'?'下午':'上午'):'')}}
+               <br />至{{detail.endTime}}{{(detail.endTimeQuantum!=''?(detail.endTimeQuantum=='1'?'下午':'上午'):'')}}</span>
+       </div>
+       <div class="mui-input-row">
+           <label>请假时长</label>
+           <span v-text="daytime"></span>
+       </div>
+       <div class="mui-input-row">
+           <label>请假事由</label>
+           <span v-text="detail.reason">家中有事,需要会老家一趟家中有事,需要会老家一趟家中有事,需要会老家一趟家中有事,需要会老家一趟。</span>
+       </div>
+       <div class="mui-input-row">
+           <label>上传图片</label>
+           <span class="vongi-qingjiadt-photo">
+               <template v-for="(item,index) in picList">
+                   <img :src="item" v-viewer />
+               </template>
+           </span>
+       </div>
+       <div class="mui-input-row">
+           <label>申请时间</label>
+           <span v-text="detail.createTime">2020-04-27 12:00:00</span>
+       </div>
+   
+   
+   </form>
 
 
     <loading :visible="isLoading"></loading>
@@ -130,6 +115,9 @@ export default {
                 var day=i+(this.detail.endTimeQuantum-this.detail.startTimeQuantum)*0.5+0.5
                 this.daytime=day+'天';
 				this.detail.sp=true
+				this.detail.text=this.detail.typeName+"申请"
+				this.$emit('getInfo',this.detail);
+				
                 this.isLoading = false;
             }).catch(error => {
                 this.isLoading = false;

+ 10 - 9
src/projects/business/views/Master/Attendance/List.vue

@@ -10,10 +10,10 @@
 					<li v-for="(item,index) in recordList" class="mui-table-view-cell">
 						{{item.recordTime}}
 						<div class="mui-media-body">
-							<button type="button" class="mui-btn mui-btn-primary" v-if="item.result=='1' && item.status=='1'" @click="goToInfo(item.fillAttendanceId,item.id)">{{item.type=='1'?'已外勤打卡':'已补卡'}}</button>
-							<button type="button" class="mui-btn mui-btn-primary" v-if="item.result=='0' && item.status=='2'" @click="goToInfo(item.fillAttendanceId,item.id)">已拒绝</button>
-							<button type="button" class="mui-btn mui-btn-primary" v-if="item.result=='0' && item.status=='0'" @click="goToInfo(item.fillAttendanceId,item.id)">审核中</button>
-							<button type="button" class="mui-btn mui-btn-primary" v-if="item.result=='0' && item.status===null" @click="applybk(item.id)">申请补卡</button>
+							<button type="button" class="mui-btn mui-btn-primary" v-if="item.result=='1' && item.status=='1'" @click="goToInfo(item.supplementWorkId)">{{item.type=='1'?'已外勤打卡':'已补卡'}}</button>
+							<button type="button" class="mui-btn mui-btn-primary" v-if="item.result=='0' && item.status=='3'" @click="goToInfo(item.supplementWorkId)">已拒绝</button>
+							<button type="button" class="mui-btn mui-btn-primary" v-if="item.result=='0' && item.status=='0'" @click="goToInfo(item.supplementWorkId)">审核中</button>
+							<button type="button" class="mui-btn mui-btn-primary" v-if="item.result=='0' && item.status===null" @click="applybk(item.id,item.recordTime)">申请补卡</button>
 							<span :style="'color:'+statusColor[item.result]" v-text="status[item.result]">缺卡</span>
 						</div>
 					</li>
@@ -76,21 +76,22 @@
 		},
 		methods: {
 			//申请补卡
-			applybk(id) {
+			applybk(id,time) {
 				this.$router.push({
 					name: 'MasterAttendanceApply',
 					query: {
-						id: id
+						id: id,
+						time:time
 					}
 				})
 			},
 			//跳转申请补卡详情
-			goToInfo(id, applyId) {
+			goToInfo(id) {
 				this.$router.push({
-					name: 'MasterAttendanceInfo',
+					name: 'XsyApprovalInfo',
 					query: {
 						id: id,
-						applyId: applyId
+						formId:'applyWork'
 					}
 				})
 			},

+ 12 - 288
src/projects/business/views/Master/Attendance/VerifyLeaveList.vue

@@ -1,112 +1,15 @@
 <template>
-<div>
-		<common @asynCallBack="asynCallBack"></common>
-	<loading :visible="isLoading"></loading>
-    <header class="mui-bar mui-bar-nav">
-			<h1 class="mui-title">请假申请审核列表</h1>
-			<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
-		</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 class="mui-control-item " @click="mySwitchTab(true)" :class="{'mui-active':switchTab}" >
-						<span class="fyy-badge">待处理<span class="mui-badge" v-show="mybadge">{{mybadge}}</span></span>
-					</a>
-					<a class="mui-control-item"  @click="mySwitchTab(false)" :class="{'mui-active':!switchTab}"   >
-						已处理
-					</a>
-				</div>
-			</div>
-			<div id="slider" class="mui-slider mui-fullscreen vongi-over">
-				
-				<div class="mui-slider-group">
-					
-					<div  class="mui-slider-item mui-control-content " v-show="switchTab">
-						<div  class="mui-scroll-wrapper vongi-over-hei" >
-							<div class="mui-scroll">
-								<div class="mui-input-group fyy-checkbox">
-									
-									<div class="mui-input-row mui-checkbox mui-left" v-for="item,i in recordList">
-										
-											<router-link :to="{name:'MasterAttendanceVerifyLeaveInfo',query:{id:item.id,procinstActUserId:item.procinstActUserId}}" class="mui-media-body">
-											
-											<h4 class="flew-sp margin10">{{item.name}}的{{item.typeN}}申请<span class="color999 mui-h5"></span></h4>
-											<h5 class='mui-ellipsis color999'>申请日期:{{item.createTime}}</h5>
-										</router-link>
-										<input name="checkbox" v-model="ids" :value="item.procinstActUserId" type="checkbox" >
-									</div>
-									<NullList :remark="'暂无请假申请记录'" v-if="!recordList.length"></NullList>
-									 
-								</div>
-							</div>
-						</div>
-					</div>
-					<div  class="mui-slider-item mui-control-content" v-show="!switchTab">
-						<div class="mui-scroll-wrapper">
-							<div class="mui-scroll">
-								<ul class="mui-table-view mui-table-view-chevron">
-									<li class="mui-table-view-cell mui-media" v-for="item,i in recordList2">
-										<router-link :to="{name:'MasterAttendanceVerifyLeaveInfo',query:{id:item.id}}" class="mui-media-body">
-										
-											<h4 class="flew-sp margin10">{{item.name}}的申请<span class="color999 mui-h5"></span></h4>
-											<h5 class='mui-ellipsis color999 flew-sp flew-items'>申请日期:{{item.createTime}}
-											<button class="mui-btn   mui-btn-outlined" :class="{'mui-btn-primary':item.action==0,
-											'mui-btn-danger':item.action==2||item.action==3,
-											'mui-btn-success':item.action==1||item.action==4}"   >{{item.actionName}}</button>
-															
-										 
-											
-											</h5>
-										</router-link>
-									</li>
-									
-								</ul>
-								<NullList :remark="'暂无已处理记录'" v-if="!recordList2.length"></NullList>
-								
-							</div>
-						</div>
-					</div>
-				</div>
-			</div>
-			<div class="fyy-bindfyy-btn" v-show="switchTab">
-				<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==ids.length">
-						
-					</div>
-				</form>
-				<button type="button" class="mui-btn mui-btn-danger" @click="openFrom('3')">拒绝</button>
-				<button type="button" class="mui-btn mui-btn-success" @click="openFrom('1')">同意</button>
-			</div>
-		</div>
-		<!--弹窗-->
-		<div class="mui-popup mui-popup-in vongi-mui-pop"  v-show="showApprovalBl">
-			<div class="mui-popup-inner vongi-pop-inner">
-				<div class="mui-popup-title">审核意见</div>
-				<div class="mui-popup-input">
-					<textarea id="textarea" rows="3" v-model="subForm.content" placeholder="可输入审核意见"></textarea>
-				</div>
-			</div>
-			<div class="mui-popup-buttons">
-				<span class="mui-popup-button"  @click="showApprovalBl=false">取消</span>
-			<span class="mui-popup-button mui-popup-button-bold" @click="doAction">提交</span></div>
-		</div>
-		<div class="mui-popup-backdrop mui-active" v-show="showApprovalBl"></div>
-</div>
+	<div>
+			 <ListSp formId="2" ></ListSp>
+	</div>
 </template>
 
 
 <script>
 	
-	import * as API from '@/apis-xsy/applyclass'
-	import * as API_sp from '@/apis-xsy/xsy'
-
-	import  Common from '$project/components/Common.vue'
- 	import Loading from '$project/components/Loading.vue'
-	import TopHeader from '$project/components/TopHeader.vue'
-	import NullList from '$project/components/NullList.vue'
-	import isReachBottom from '$project/utils/isReachBottom'
+	
+	 import  ListSp from '@/components/Approval/ListSp.vue'
+	 
 	
 	import {
 		mapGetters,
@@ -116,202 +19,23 @@
 	export default {
 		name: '',
 		components: {
-			Common,
-			Loading,
-			TopHeader,NullList
+			ListSp
 		},
-		data() {
-			return {
-				allSelect:[],
-				ids:[],
-				switchTab:true,
-				mybadge:0,
-				pageTitle: '请假申请审核列表',
-				showApprovalBl:false,
-				isLoading: false,			
-				listForm: {
-					procinstType:2,
-					pageIndex: 1,
-					pageSize: 10,
-					totalPage: 1,
-				},
-				recordList: [],
+		data() { 
+			return{
 				
-				listForm2: {
-					procinstType:2,
-					pageIndex: 1,
-					pageSize: 20,
-					totalPage: 1,
-				},
-				recordList2: [],
-				subForm: {
-					
-					procinstActUserIds: '',
-					content: '',
-					status: ''
-				},
 			}
 		},
 		created() {
 			 
 		},
-		methods: {
-			mySwitchTab(bl){
-				this.switchTab=bl;
-				if(bl){
-					if(this.recordList.length==0){
-						this.getList()
-					}
-				}else{
-					if(this.recordList2.length==0){
-						this.getList2()
-					}
-				}
-			},
-			//检测表单
-			checkForm() {
-				if (false) {
-					mui.toast('请选择要处理的信息');
-					return false;
-				} else {
-					return true;
-				}
-			},
-			//同意拒绝
-			doAction() {
-				this.subForm.procinstActUserIds = this.ids.join(',');
-				if (this.checkForm()) {
-					this.isLoading = true;
-					API.examineSubmit(this.subForm).then(response => {
-						this.isLoading = false;
-			
-						this.showApprovalBl = false;
-						this.listForm.pageIndex = 1;
-						this.recordList2=[];
-						mui.toast("操作成功");
-						this.getList();
-					}).catch(error => {
-						this.isLoading = false;
-						mui.toast(error);
-					})
-				}
-			},
-			//显示内容表单
-			openFrom(status) {
-				if (!this.ids.length) {
-					mui.toast('请选择要处理的信息');
-				} else {
-					this.subForm.status = status;
-					this.subForm.content = status == 1 ? '同意' : '拒绝';
-					this.showApprovalBl = true;
-					//直接点击处理,不需要弹窗理由框,又需要弹窗理由框了
-					//this.doAction();
-				}
-			},
-			//选择所有
-			selectAll() {
-				
-				if (this.allSelect.length) {
-					this.ids = [];
-				} else {
-					var selectIdList = [];
-					this.recordList.forEach(function(item, index) {
-						selectIdList.push(item.procinstActUserId);
-					})
-					this.ids = selectIdList;
-				}
-			},
-			//获取列表
-			getList2() {
-				this.isLoading = true;
-				API.alreadyExamineShiftList(this.listForm2).then(response => {
-					if (response) {
-						if (this.listForm2.pageIndex == 1) {
-							this.recordList2 = response.data;
-							this.listForm2.pageIndex = response.pageNumber;
-							this.listForm2.totalPage = response.totalPage;
-							
-						} else {
-							this.recordList2 = [
-								...this.recordList2,
-								...response.data
-							];
-						}
-					}
-					this.listForm2.pageIndex++;
-					this.isLoading = false;
-				}).catch(error => {
-					this.isLoading = false;
-					mui.toast(error);
-				})
-			},
-			 //获取列表
-			 getList() {
-			 	this.isLoading = true;
-			 	API.waitExamineShiftList(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;
-							this.mybadge=response.recordsTotal
-			 			} else {
-			 				this.recordList = [
-			 					...this.recordList,
-			 					...response.data
-			 				];
-			 			}
-			 		}
-			 		this.listForm.pageIndex++;
-			 		this.isLoading = false;
-			 	}).catch(error => {
-			 		this.isLoading = false;
-			 		mui.toast(error);
-			 	})
-			 },
-			 //下拉事件
-			 handleScrool() {
-				 
-			 	if (isReachBottom()) {
-			 		console.log('到达底部')
-					if(this.switchTab){
-						if (this.listForm.pageIndex <= this.listForm.totalPage && this.isLoading == false) {
-							this.getList();
-						} else {
-							return;
-						}
-					}else{
-						if (this.listForm2.pageIndex <= this.listForm2.totalPage && this.isLoading == false) {
-							this.getList2();
-						} else {
-							return;
-						}
-					}
-			 		
-			 	}
-			 },
-		 
-			asynCallBack() {
-
-			},
+		methods: {  
 		
 		},
 	mounted() {
-		if(this.switchTab){
-			this.getList();
-		}else{
-			this.getList2();
-		}
-		
-		//监控下拉加载事件
-		var _this = this;
-		window.addEventListener('scroll', _this.handleScrool);
+		 
 	},
-	destroyed() {
-		//销毁监听事件
-		var _this = this;
-		window.removeEventListener('scroll', _this.handleScrool);
-	},
+
 	
 	}
 </script>

+ 39 - 301
src/projects/business/views/Master/Attendance/VerifyList.vue

@@ -1,311 +1,49 @@
 <template>
 	<div>
-		<common @asynCallBack="asynCallBack"></common>
-		<top-header :pageTitle="pageTitle" :routeName="'Master'"></top-header>
-
-		<div class="mui-content vongi-wordcard-sp">
-			<div 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('3')" :class="'mui-control-item '+(listForm.status==3?'mui-active':'')">
-						已处理
-					</a>
-				</div>
-			</div>
-
-			<NullList :remark="'暂无审批记录'" v-if="!recordList.length"></NullList>
-
-			<div v-if="recordList.length" id="slider" class="mui-slider mui-fullscreen vongi-over">
-
-				<div class="mui-slider-group">
-
-					<div v-if="listForm.status==0" class="mui-slider-item mui-control-content">
-						<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" :key="'s0_'+item.id" class="mui-input-row mui-checkbox mui-left">
-										<router-link :to="{name:'MasterAttendanceVerifyInfo',query:{id:item.id}}" class="mui-navigate-right">
-											<div class="mui-media-object mui-pull-left vongi-buka"><img :src="item.faceImageUrl"></div>
-											<div class="mui-media-body">
-												{{item.personName}}
-												<p class='mui-ellipsis'><span class="colorfe616c" v-text="item.typeN"></span>申请</p>
-												<p class='mui-ellipsis' v-if="item.type=='1' && item.address">打卡位置:{{item.address}}</p>
-												<p class='mui-ellipsis' v-if="item.type=='2' && item.content">申请理由:{{item.content}}</p>
-												<h5 class="vongi-bksp-time" v-text="item.createTime.substr(5)"></h5>
-											</div>
-										</router-link>
-										<input name="checkbox" v-model="selectIdList" :value="item.id" type="checkbox">
-									</div>
-								</form>
-							</div>
-
-						</div>
-					</div>
-
-					<div v-if="listForm.status==3" 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" :key="'s3_'+item.id" class="mui-table-view-cell mui-media">
-										<router-link :to="{name:'MasterAttendanceVerifyInfo',query:{id:item.id}}" class="mui-navigate-right">
-											<div class="mui-media-object mui-pull-left vongi-buka"><img :src="item.faceImageUrl"></div>
-											<div class="mui-media-body">
-												{{item.personName}}
-												<span class="mui-pull-right mui-h6" v-if="item.approvalTime" v-text="item.approvalTime.substr(5)"></span>
-												<p class='mui-ellipsis'>
-													<span class="colorfe616c" v-text="item.typeN"></span>申请
-													<button type="button" :class="'mui-btn mui-btn-success mui-btn-outlined mui-pull-right '+(item.status>0?(item.status==1?'status_a':'status_r'):'')"
-													 v-text="item.statusN"></button>
-												</p>
-												<p class='mui-ellipsis' v-if="item.type=='1' && item.address">打卡位置:{{item.address}}</p>
-												<p class='mui-ellipsis' v-if="item.type=='2' && item.content">申请理由:{{item.content}}</p>
-											</div>
-										</router-link>
-									</li>
-								</ul>
-							</div>
-						</div>
-					</div>
-
-				</div>
-			</div>
-
-			<div v-show="recordList.length>0 && listForm.status==0" 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 v-show="openFromVisible" class="mui-popup mui-popup-in vongi-mui-pop">
-			<div class="mui-popup-inner vongi-pop-inner">
-				<div class="mui-popup-title">填写意见</div>
-				<div class="mui-popup-input">
-					<textarea  v-model="subForm.content" rows="3" placeholder="请输入"></textarea>
-				</div>
-			</div>
-			<div class="mui-popup-buttons"><span class="mui-popup-button mui-popup-button-bold" @click="doAction">提交</span></div>
-		</div>
-		<div v-show="openFromVisible" @click="openFromVisible=false"  class="mui-popup-backdrop mui-active"></div>
-
-		<loading :visible="isLoading"></loading>
+			 <ListSp formId="4" ></ListSp>
 	</div>
 </template>
 
-<script>
-	import * as API_Attendance from '@/apis/Master/attendance'
-	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: 'MasterAttendanceVerifyList',
-		components: {
-			Common,
-			Loading,
-			TopHeader,
-			NullList
-		},
-		data() {
-			return {
-				pageTitle: '考勤审批',
-
-				isLoading: false,
-
-				listForm: {
-					pageIndex: 1,
-					pageSize: 20,
-					totalPage: 1,
-					status: this.$route.query.status ? this.$route.query.status : 0,
-				},
-				recordList: [],
-				selectIdList: [],
-				allSelect: [],
-				subForm: {
-					ids: '',
-					content: '',
-					status: ''
-				},
-				//审批内容弹窗显示
-				openFromVisible: false,
-				firstRecordsTotal: 0,
-
-			}
-		},
-		created() {
-
-		},
-		methods: {
-			//获取列表
-			getList() {
-				this.isLoading = true;
-				API_Attendance.getVerifyList(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.content = status == 1 ? '同意' : '拒绝';
-					this.openFromVisible = true;
-					//直接点击处理,不需要弹窗理由框,又需要弹窗理由框了
-					//this.doAction();
-				}
-			},
-			//检测表单
-			checkForm() {
-				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_Attendance.doVerify(this.subForm).then(response => {
-						this.isLoading = false;
-
-						this.openFromVisible = false;
-						this.listForm.pageIndex = 1;
-						this.getList();
-					}).catch(error => {
-						this.isLoading = false;
-						mui.toast(error);
-					})
-				}
-			},
-			asynCallBack() {
-
-			},
-		},
-		mounted() {
-			this.getList();
-			//监控下拉加载事件
-			var _this = this;
-			window.addEventListener('scroll', _this.handleScrool);
-		},
-		destroyed() {
-			//销毁监听事件
-			var _this = this;
-			window.removeEventListener('scroll', _this.handleScrool);
-		},
-		computed: {
-			...mapGetters({
-				openId: 'wx_openid',
-				token: 'token',
-			})
-		},
-		watch: {
-			//本页面监听到路由(参数)改变
-			/* '$route': function(to, from) {
-				this.reloadList(to.query.status ? to.query.status : 0)
-			} */
-		},
-		//keepalive监控判断
-		beforeRouteLeave(to, from, next) {
-			console.log(to.name);
-			if (['MasterAttendanceVerifyInfo'].indexOf(to.name) > -1) {
-				this.$store.commit('SET_KEEP_ALIVE_COMPONENTS', ['MasterAttendanceVerifyList'])
-			} 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>
-	.status_r {
-		color: #fe616c !important;
-		border: 1px solid #fe616c !important;
-	}
-
-	.status_a {
-		color: #05c8af !important;
-		border: 1px solid #05c8af !important;
-	}
-
-	.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>

+ 3 - 4
src/projects/business/views/Master/BusinessTravel/Form.vue

@@ -155,11 +155,10 @@
 						this.isLoading = false;
 
 						mui.toast('提交成功');
+						 
 						this.$router.replace({
-							name: 'MasterBusinessTravelInfo',
-							query: {
-								id: response.id
-							}
+							name: "XsyApprovalInfo",
+							query:{id:response.id,formId:'travelWork'}
 						})
 					}).catch(error => {
 						this.isLoading = false;

+ 169 - 0
src/projects/business/views/Master/BusinessTravel/Info2.vue

@@ -0,0 +1,169 @@
+<template>
+	<div>
+		 
+			<form class="mui-input-group margin10">
+				<div class="mui-input-row">
+					<label>所属部门</label>
+					<span v-text="detail.companyName"></span>
+				</div>
+				<div class="mui-input-row">
+					<label>出差地点</label>
+					<span v-text="detail.destination"></span>
+				</div>
+				<div class="mui-input-row">
+					<label>出差时间</label>
+					<span v-text="detail.startTime"></span>
+				</div>
+				<div class="mui-input-row">
+					<label>预估天数</label>
+					<span v-text="detail.estimatedTime+'天'"></span>
+				</div>
+				<div class="mui-input-row">
+					<label>出差事由</label>
+					<span v-text="detail.content"></span>
+				</div>
+				
+				<div class="mui-input-row">
+					<label>申请时间</label>
+					<span v-text="detail.createTime"></span>
+				</div>
+				<div v-if="detail.endTime || closeFrom.time" class="mui-input-row">
+					<label>返回时间</label>
+					<span v-text="detail.endTime?detail.endTime:closeFrom.time"></span>
+				</div>
+			</form>
+ 			 
+		
+		<div v-if="false" class="fyy-footer">
+			<div class="bindfyy-btn"><button type="button" @click="closeActoin" class="mui-btn mui-btn-danger">结束出差</button></div>
+	
+		</div>
+ 		
+			
+ 	</div>
+</template>
+
+<script>
+	import * as API_BusinessTravel from '@/apis/Master/business_travel'
+	import Common from '$project/components/Common.vue'
+	import Loading from '$project/components/Loading.vue'
+	import ExamineDetail from '$project/components/ExamineDetail.vue'
+	
+	import TopHeader from '$project/components/TopHeader.vue'
+	import {
+		mapGetters,
+		mapMutations
+	} from 'vuex'
+	export default {
+		name: 'MasterBusinessTravelInfo',
+		components: {
+			Common,
+			Loading,
+			TopHeader,ExamineDetail
+		},
+		data() {
+			return {
+				pageTitle: '出差申请详情',
+
+				isLoading: false,
+
+				id: this.$route.query.id,
+				detail: {
+					list: [],
+				},
+
+				//微信模板消息过来的
+				wm: this.$route.query.wm,
+
+				closeFrom: {
+					id: this.$route.query.id,
+					//来源于微信模板消息
+					time: this.$route.query.time,
+				}
+			}
+		},
+		created() {},
+		methods: {
+			allowExamine(op){
+				this.$emit('allowExamine',op);	
+			},
+			//获取详情
+			getInfo() {
+				this.isLoading = true;
+				API_BusinessTravel.businessOutDetail(this.id).then(response => {
+					this.isLoading = false;
+
+					this.detail = response;
+					this.detail.sp=true
+					this.detail.statusName=this.detail.statusN
+					this.detail.name=this.detail.personName
+					this.detail.text=this.detail.typeN+"申请"
+					
+					this.$emit('getInfo',this.detail);
+					
+				}).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 + ';';
+			},
+			//结束状态
+			closeActoin() {
+				var _this = this;
+				var btnArray = ['否', '是'];
+				mui.confirm('是否立即结束出差?', '确认', btnArray, function(e) {
+					if (e.index == 1) {
+						_this.outEnd();
+					}
+				})
+			},
+			//结束状态
+			outEnd() {
+				this.isLoading = true;
+				API_BusinessTravel.businessOutEnd(this.closeFrom).then(response => {
+					this.isLoading = false;
+
+					mui.toast('处理成功');
+					this.getInfo();
+				}).catch(error => {
+					this.isLoading = false;
+					mui.toast(error);
+				})
+			},
+			  
+			update() {
+				this.detail.sp=false;
+				this.getInfo();
+			 
+			}
+		},
+		mounted() {
+			
+			this.isLoading = true;
+			this.getInfo();
+		},
+		destroyed() {},
+		computed: {
+			...mapGetters({
+				openId: 'wx_openid',
+				token: 'token',
+			})
+		},
+	}
+</script>
+
+<style scoped src="$project/assets/css/xpwyfyy.css"></style>
+<style src="$project/assets/css/iconfont.css"></style>
+<style>
+</style>

+ 1 - 1
src/projects/business/views/Master/BusinessTravel/List.vue

@@ -8,7 +8,7 @@
 			<div class="mui-slider-group">
 				<ul class="mui-table-view">
 					<li v-for="(item,index) in recordList" class="mui-table-view-cell">
-						<router-link :to="{name:'MasterBusinessTravelInfo',query:{id:item.id}}">
+						<router-link :to="{name:'XsyApprovalInfo',query:{id:item.id,formId:'travelWork'}}">
 							<div class="mui-media-body flew-sp">
 								出差地点:{{item.destination}}
 								<span class='mui-ellipsis mui-h6' v-text="item.startTime.substr(5)"></span>

+ 12 - 288
src/projects/business/views/Master/BusinessTravel/VerifyList.vue

@@ -1,112 +1,15 @@
 <template>
-<div>
-		<common @asynCallBack="asynCallBack"></common>
-	<loading :visible="isLoading"></loading>
-    <header class="mui-bar mui-bar-nav">
-			<h1 class="mui-title">出差申请审核列表</h1>
-			<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
-		</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 class="mui-control-item " @click="mySwitchTab(true)" :class="{'mui-active':switchTab}" >
-						<span class="fyy-badge">待处理<span class="mui-badge" v-show="mybadge">{{mybadge}}</span></span>
-					</a>
-					<a class="mui-control-item"  @click="mySwitchTab(false)" :class="{'mui-active':!switchTab}"   >
-						已处理
-					</a>
-				</div>
-			</div>
-			<div id="slider" class="mui-slider mui-fullscreen vongi-over">
-				
-				<div class="mui-slider-group">
-					
-					<div  class="mui-slider-item mui-control-content " v-show="switchTab">
-						<div  class="mui-scroll-wrapper vongi-over-hei" >
-							<div class="mui-scroll">
-								<div class="mui-input-group fyy-checkbox">
-									
-									<div class="mui-input-row mui-checkbox mui-left" v-for="item,i in recordList">
-										
-											<router-link :to="{name:'MasterBusinessTravelVerifyInfo',query:{id:item.id,procinstActUserId:item.procinstActUserId}}" class="mui-media-body">
-											
-											<h4 class="flew-sp margin10">{{item.name}}的出差申请<span class="color999 mui-h5">{{item.createTime}}</span></h4>
-											<h5 class='mui-ellipsis color999'>出差日期:{{item.startTime}}</h5>
-										</router-link>
-										<input name="checkbox" v-model="ids" :value="item.procinstActUserId" type="checkbox" >
-									</div>
-									<NullList :remark="'暂无出差申请记录'" v-if="!recordList.length"></NullList>
-									 
-								</div>
-							</div>
-						</div>
-					</div>
-					<div  class="mui-slider-item mui-control-content" v-show="!switchTab">
-						<div class="mui-scroll-wrapper">
-							<div class="mui-scroll">
-								<ul class="mui-table-view mui-table-view-chevron">
-									<li class="mui-table-view-cell mui-media" v-for="item,i in recordList2">
-										<router-link :to="{name:'MasterBusinessTravelVerifyInfo',query:{id:item.id}}" class="mui-media-body">
-										
-											<h4 class="flew-sp margin10">{{item.name}}的出差申请<span class="color999 mui-h5">{{item.createTime}}</span></h4>
-											<h5 class='mui-ellipsis color999 flew-sp flew-items'>出差日期:{{item.startTime}}
-											<button class="mui-btn   mui-btn-outlined" :class="{'mui-btn-primary':item.action==0,
-											'mui-btn-danger':item.action==2||item.action==3,
-											'mui-btn-success':item.action==1||item.action==4}"   >{{item.actionName}}</button>
-															
-										 
-											
-											</h5>
-										</router-link>
-									</li>
-									
-								</ul>
-								<NullList :remark="'暂无已处理记录'" v-if="!recordList2.length"></NullList>
-								
-							</div>
-						</div>
-					</div>
-				</div>
-			</div>
-			<div class="fyy-bindfyy-btn" v-show="switchTab">
-				<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==ids.length">
-						
-					</div>
-				</form>
-				<button type="button" class="mui-btn mui-btn-danger" @click="openFrom('3')">拒绝</button>
-				<button type="button" class="mui-btn mui-btn-success" @click="openFrom('1')">同意</button>
-			</div>
-		</div>
-		<!--弹窗-->
-		<div class="mui-popup mui-popup-in vongi-mui-pop"  v-show="showApprovalBl">
-			<div class="mui-popup-inner vongi-pop-inner">
-				<div class="mui-popup-title">审核意见</div>
-				<div class="mui-popup-input">
-					<textarea id="textarea" rows="3" v-model="subForm.content" placeholder="可输入审核意见"></textarea>
-				</div>
-			</div>
-			<div class="mui-popup-buttons">
-				<span class="mui-popup-button"  @click="showApprovalBl=false">取消</span>
-			<span class="mui-popup-button mui-popup-button-bold" @click="doAction">提交</span></div>
-		</div>
-		<div class="mui-popup-backdrop mui-active" v-show="showApprovalBl"></div>
-</div>
+	<div>
+			 <ListSp formId="3" ></ListSp>
+	</div>
 </template>
 
 
 <script>
 	
-	import * as API from '@/apis-xsy/applyclass'
-	import * as API_sp from '@/apis-xsy/xsy'
-
-	import  Common from '$project/components/Common.vue'
- 	import Loading from '$project/components/Loading.vue'
-	import TopHeader from '$project/components/TopHeader.vue'
-	import NullList from '$project/components/NullList.vue'
-	import isReachBottom from '$project/utils/isReachBottom'
+	
+	 import  ListSp from '@/components/Approval/ListSp.vue'
+	 
 	
 	import {
 		mapGetters,
@@ -116,202 +19,23 @@
 	export default {
 		name: '',
 		components: {
-			Common,
-			Loading,
-			TopHeader,NullList
+			ListSp
 		},
-		data() {
-			return {
-				allSelect:[],
-				ids:[],
-				switchTab:true,
-				mybadge:0,
-				pageTitle: '出差申请审核列表',
-				showApprovalBl:false,
-				isLoading: false,			
-				listForm: {
-					procinstType:3,
-					pageIndex: 1,
-					pageSize: 10,
-					totalPage: 1,
-				},
-				recordList: [],
+		data() { 
+			return{
 				
-				listForm2: {
-					procinstType:3,
-					pageIndex: 1,
-					pageSize: 20,
-					totalPage: 1,
-				},
-				recordList2: [],
-				subForm: {
-					
-					procinstActUserIds: '',
-					content: '',
-					status: ''
-				},
 			}
 		},
 		created() {
 			 
 		},
-		methods: {
-			mySwitchTab(bl){
-				this.switchTab=bl;
-				if(bl){
-					if(this.recordList.length==0){
-						this.getList()
-					}
-				}else{
-					if(this.recordList2.length==0){
-						this.getList2()
-					}
-				}
-			},
-			//检测表单
-			checkForm() {
-				if (false) {
-					mui.toast('请选择要处理的信息');
-					return false;
-				} else {
-					return true;
-				}
-			},
-			//同意拒绝
-			doAction() {
-				this.subForm.procinstActUserIds = this.ids.join(',');
-				if (this.checkForm()) {
-					this.isLoading = true;
-					API.examineSubmit(this.subForm).then(response => {
-						this.isLoading = false;
-			
-						this.showApprovalBl = false;
-						this.listForm.pageIndex = 1;
-						this.recordList2=[];
-						mui.toast("操作成功");
-						this.getList();
-					}).catch(error => {
-						this.isLoading = false;
-						mui.toast(error);
-					})
-				}
-			},
-			//显示内容表单
-			openFrom(status) {
-				if (!this.ids.length) {
-					mui.toast('请选择要处理的信息');
-				} else {
-					this.subForm.status = status;
-					this.subForm.content = status == 1 ? '同意' : '拒绝';
-					this.showApprovalBl = true;
-					//直接点击处理,不需要弹窗理由框,又需要弹窗理由框了
-					//this.doAction();
-				}
-			},
-			//选择所有
-			selectAll() {
-				
-				if (this.allSelect.length) {
-					this.ids = [];
-				} else {
-					var selectIdList = [];
-					this.recordList.forEach(function(item, index) {
-						selectIdList.push(item.procinstActUserId);
-					})
-					this.ids = selectIdList;
-				}
-			},
-			//获取列表
-			getList2() {
-				this.isLoading = true;
-				API.alreadyExamineShiftList(this.listForm2).then(response => {
-					if (response) {
-						if (this.listForm2.pageIndex == 1) {
-							this.recordList2 = response.data;
-							this.listForm2.pageIndex = response.pageNumber;
-							this.listForm2.totalPage = response.totalPage;
-							
-						} else {
-							this.recordList2 = [
-								...this.recordList2,
-								...response.data
-							];
-						}
-					}
-					this.listForm2.pageIndex++;
-					this.isLoading = false;
-				}).catch(error => {
-					this.isLoading = false;
-					mui.toast(error);
-				})
-			},
-			 //获取列表
-			 getList() {
-			 	this.isLoading = true;
-			 	API.waitExamineShiftList(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;
-							this.mybadge=response.recordsTotal
-			 			} else {
-			 				this.recordList = [
-			 					...this.recordList,
-			 					...response.data
-			 				];
-			 			}
-			 		}
-			 		this.listForm.pageIndex++;
-			 		this.isLoading = false;
-			 	}).catch(error => {
-			 		this.isLoading = false;
-			 		mui.toast(error);
-			 	})
-			 },
-			 //下拉事件
-			 handleScrool() {
-				 
-			 	if (isReachBottom()) {
-			 		console.log('到达底部')
-					if(this.switchTab){
-						if (this.listForm.pageIndex <= this.listForm.totalPage && this.isLoading == false) {
-							this.getList();
-						} else {
-							return;
-						}
-					}else{
-						if (this.listForm2.pageIndex <= this.listForm2.totalPage && this.isLoading == false) {
-							this.getList2();
-						} else {
-							return;
-						}
-					}
-			 		
-			 	}
-			 },
-		 
-			asynCallBack() {
-
-			},
+		methods: {  
 		
 		},
 	mounted() {
-		if(this.switchTab){
-			this.getList();
-		}else{
-			this.getList2();
-		}
-		
-		//监控下拉加载事件
-		var _this = this;
-		window.addEventListener('scroll', _this.handleScrool);
+		 
 	},
-	destroyed() {
-		//销毁监听事件
-		var _this = this;
-		window.removeEventListener('scroll', _this.handleScrool);
-	},
+
 	
 	}
 </script>

+ 39 - 346
src/projects/business/views/Master/ExtraWork/VerifyList.vue

@@ -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>