wgl 4 лет назад
Родитель
Сommit
a1f614232c

Разница между файлами не показана из-за своего большого размера
+ 6 - 0
src/assets/css/mui.picker.min.css


+ 19 - 1
src/projects/business/apis/Master/attendance.js

@@ -15,7 +15,16 @@ export function pageList(params) {
 	})
 }
 
-//提交
+//获取申请补卡详情
+export function getApplyInfo(params) {
+	return request({
+		url: '/mobile/workAttendance/detailPatchCard',
+		data: Qs.stringify(params),
+		method: 'post',
+	})
+}
+
+//申请补卡提交
 export function postPatchCard(params) {
 	return request({
 		url: '/mobile/workAttendance/postPatchCard',
@@ -32,3 +41,12 @@ export function patchCard(params) {
 		method: 'post',
 	})
 }
+
+//获取审核人列表
+export function getApprovalList(params) {
+	return request({
+		url: '/mobile/workAttendance/approvalList',
+		data: Qs.stringify(params),
+		method: 'post',
+	})
+}

+ 0 - 1
src/projects/business/views/Common/Notice/Info.vue

@@ -30,7 +30,6 @@
 	import * as API_Notice from '@/apis/Common/notice'
 	import Common from '$project/components/Common.vue'
 	import Loading from '$project/components/Loading.vue'
-	import isReachBottom from '$project/utils/isReachBottom'
 	import TopHeader from '$project/components/TopHeader.vue'
 	import {
 		mapGetters,

+ 225 - 14
src/projects/business/views/Master/Attendance/Apply.vue

@@ -1,9 +1,8 @@
 <template>
-<div>
-    <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>
+		<common @asynCallBack="asynCallBack"></common>
+		<top-header :pageTitle="pageTitle"></top-header>
+
 		<div class="mui-content vongi-wordcard">
 			<div class="mui-content-padded vongi-wordcard-padded">
 				<h5>当前打卡班次</h5>
@@ -13,14 +12,14 @@
 				<form class="mui-input-group">
 					<div class="mui-input-row">
 						<label><span class="colorfe616c">*</span>选择审批人</label>
-						<div class="mui-navigate-right">
-							<button id='showUserPicker' class="mui-btn mui-btn-block" type='button'>郑强</button>
+						<div class="mui-navigate-right" @click="selectPerson">
+							<button class="mui-btn mui-btn-block" type='button' v-text="tjForm.approvalPersonName">郑强</button>
 						</div>
 					</div>
 					<div class="mui-input-row">
 						<label><span class="colorfe616c">*</span>选择补卡类型</label>
-						<div class="mui-navigate-right">
-							<button id='showUserPicker' class="mui-btn mui-btn-block" type='button'>外勤</button>
+						<div class="mui-navigate-right" @click="selectType">
+							<button class="mui-btn mui-btn-block" type='button' v-text="tjForm.typeName"></button>
 						</div>
 					</div>
 				</form>
@@ -37,24 +36,236 @@
 					<div class="mui-col-xs-3">
 						<img src="~$project/assets/img/zhaop.jpg" />
 					</div>
-					<div class="mui-col-xs-3">
+					<div class="mui-col-xs-3" @click="chooseImage">
 						<a><span class="mui-icon mui-icon-plusempty"></span></a>
 					</div>
 				</div>
 			</div>
 			<div class="vongi-btn">
 				<button class="mui-btn mui-btn-primary " type="submit">
-				提交
-			</button>
+					提交
+				</button>
 			</div>
 		</div>
-</div>
+
+		<loading :visible="isLoading"></loading>
+	</div>
 </template>
 
 <script>
+	require('$project/assets/js/mui.picker.min.js');
+	import * as API_WeiXin from '$project/apis/weixin'
+	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 {
+		mapGetters,
+		mapMutations
+	} from 'vuex'
+	import wx from 'weixin-js-sdk'
+	export default {
+		name: 'MasterAttendanceApply',
+		components: {
+			Common,
+			Loading,
+			TopHeader
+		},
+		data() {
+			return {
+				pageTitle: '补卡申请',
+
+				isLoading: false,
+
+				subForm: {
+					workAttendanceId: this.$route.query.id
+				},
+				tjForm: {
+					workAttendanceDate: '',
+					workAttendanceTime: '',
+					type: '2', //外勤打卡/补卡(1/2)
+					content: '',
+					approvalPersonId: '',
+					workAttendanceId: this.$route.query.id,
+					photoFile: '',
+					longitude: '',
+					latitude: '',
+				},
+				personList: [],
+				picList: [],
+			}
+		},
+		created() {
+
+		},
+		methods: {
+			//获取详情
+			getTime() {
+				this.isLoading = true;
+				API_Attendance.patchCard(this.subForm).then(response => {
+
+					this.tjForm.workAttendanceDate = response.workAttendanceDate;
+					this.tjForm.workAttendanceTime = response.workAttendanceTime;
+
+					this.isLoading = false;
+				}).catch(error => {
+					this.isLoading = false;
+					mui.toast(error);
+				})
+			},
+			//获取审核人列表
+			getPsersonList() {
+				this.isLoading = true;
+				API_Attendance.getApprovalList().then(response => {
+
+					this.personList = response.data;
+
+					this.isLoading = false;
+				}).catch(error => {
+					this.isLoading = false;
+					mui.toast(error);
+				})
+			},
+			//获取微信配置
+			getWxConfig() {
+				this.isLoading = true;
+				API_WeiXin.getConfig().then(response => {
+					var wxconfig = response.wxConfig;
+					console.log(wxconfig.nonceStr)
+					this.wxConfig = wxconfig;
+					wx.config({
+						debug: false, // 开启调试模式,
+						appId: wxconfig.appId, // 必填,企业号的唯一标识,此处填写企业号corpid
+						timestamp: wxconfig.timestamp, // 必填,生成签名的时间戳
+						nonceStr: wxconfig.nonceStr, // 必填,生成签名的随机串
+						signature: wxconfig.signature, // 必填,签名,见附录1
+						jsApiList: ['chooseImage', 'getLocalImgData'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
+					});
+
+					this.isLoading = false;
+				}).catch(error => {
+					this.isLoading = false;
+					mui.toast(error);
+				})
+			},
+			//微信选择图片
+			chooseImage() {
+				var _this = this;
+				wx.chooseImage({
+					count: 1,
+					sizeType: ['compressed'],
+					sourceType: ['album', 'camera'],
+					success: function(res) {
+						var localIds = res.localIds;
+						console.log(localIds);
+						wx.getLocalImgData({
+							localId: localIds[0],
+							success: function(res) {
+								var localData = res.localData;
+
+								if (localData.indexOf('data:image') != 0) {
+									//判断是否有这样的头部
+									localData = 'data:image/jpeg;base64,' + localData
+								}
+								localData = localData.replace(/\r|\n/g, '').replace('data:image/jgp', 'data:image/jpeg')
+								_this.imgBase64 = localData;
+								//显示裁剪图片
+								//_this.showCropper(field);
+								_this.uploadpic();
+							}
+						});
+					}
+				});
+			},
+			//上传图片
+			uploadpic() {
+				this.isLoading = true;
+				var _this = this;
+				var formData = new FormData();
+				formData.append('photoName', '1.jpg');
+				formData.append('photoBase64Data', this.imgBase64);
+
+				console.log(formData);
+				console.log(typeof formData);
+
+				API_Common.uploadBase64(formData).then(response => {
+					this.isLoading = false;
+
+					this.picList.push(response);
+				}).catch(error => {
+					this.isLoading = false;
+					mui.toast(error);
+				})
+			},
+			//选择审核人
+			selectPerson() {
+				var _this = this;
+				var picker = new mui.PopPicker();
+				picker.setData(_this.syPersonList);
+				picker.show(function(selectItems) {
+					_this.tjForm.approvalPersonId = selectItems[0].value;
+					_this.tjForm.approvalPersonName = selectItems[0].text;
+				})
+			},
+			//类型选择
+			selectType() {
+				var picker = new mui.PopPicker();
+				if (this.tjForm.type = 2) {
+					var data = [{
+						value: '2',
+						text: '补卡'
+					}]
+				} else {
+					var data = [{
+						value: '1',
+						text: '外勤打卡'
+					}]
+				}
+				picker.setData(data);
+				var _this = this;
+				picker.show(function(selectItems) {
+					_this.tjForm.type = selectItems[0].value;
+					_this.tjForm.typeName = selectItems[0].text;
+				})
+			},
+			asynCallBack() {
+
+			},
+		},
+		mounted() {
+			this.getTime();
+			this.getPsersonList();
+			this.getWxConfig();
+		},
+		destroyed() {},
+		computed: {
+			syPersonList: {
+				// getter
+				get: function() {
+					let list = [];
+					this.personList.forEach(function(item, index) {
+						list.push({
+							value: item.id,
+							text: item.name
+						});
+					})
+					return list;
+				},
+				// setter
+				set: function(newValue) {
+					console.log(newValue)
+				}
+			},
+			...mapGetters({
+				openId: 'wx_openid',
+				token: 'token',
+			})
+		}
+	}
 </script>
 
 <style scoped src="$project/assets/css/xpwyfyy.css"></style>
 <style scoped src="$project/assets/css/iconfont.css"></style>
-<style>
+<style scoped src="$project/assets/css/mui.picker.min.css"></style>
+<style scoped>
 </style>

+ 96 - 31
src/projects/business/views/Master/Attendance/Info.vue

@@ -1,20 +1,19 @@
 <template>
-<div>
-    <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>
+		<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="~$project/assets/img/zhaop1.jpg">
+					<img :src="detail.faceImageUrl">
 				</div>
 				<div class="mui-media-body">
-					冯银银
-					<p class='mui-ellipsis'><span class="colorfe616c">缺勤</span>补卡申请</p>
+					{{detail.personName}}
+					<p class='mui-ellipsis'><span class="colorfe616c">{{detail.typeN}}</span>申请</p>
 				</div>
 				<button type="button" class="mui-btn mui-btn-success mui-btn-outlined">
-					已补卡
+					{{detail.status>0?(detail.status==1?'已同意':'已拒绝'):'未审核'}}
 				</button>
 			</div>
 
@@ -22,40 +21,30 @@
 				<ul class="mui-table-view">
 					<li class="mui-table-view-cell mui-media">
 						<div class="mui-media-body">申请类型</div>
-						<span>补卡</span>
+						<span v-text="detail.typeN"></span>
 					</li>
 					<li class="mui-table-view-cell mui-media">
 						<div class="mui-media-body">所在部门</div>
-						<span>信息工程中心</span>
+						<span v-text="detail.companyName"></span>
 					</li>
 					<li class="mui-table-view-cell mui-media">
 						<div class="mui-media-body">申请班次</div>
-						<span class="colorf6f448">2020-04-19 07:30-09:00</span>
+						<span class="colorf6f448" v-text="detail.fillAttendanceDayAndTime"></span>
 					</li>
 					<li class="mui-table-view-cell mui-media">
 						<div class="mui-media-body">申请时间</div>
-						<span>2020-04-19 07:30:56</span>
+						<span v-text="detail.createTime"></span>
 					</li>
 					<li class="mui-table-view-cell mui-media">
 						<div class="mui-media-body">申请理由</div>
-						<span class="colorf8b155">努力加班忘记了打卡,申请补卡!</span>
+						<span class="colorf8b155" v-text="detail.content"></span>
 					</li>
 					<li class="mui-table-view-cell mui-media">
 						<div class="mui-media-body">相关照片</div>
-
 					</li>
 					<li class="mui-table-view-cell mui-media fyy-upphoto">
-						<div class="mui-col-xs-3">
-							<img src="~$project/assets/img/zhaop1.jpg" />
-						</div>
-						<div class="mui-col-xs-3">
-							<img src="~$project/assets/img/zhaop1.jpg" />
-						</div>
-						<div class="mui-col-xs-3">
-							<img src="~$project/assets/img/zhaop1.jpg" />
-						</div>
-						<div class="mui-col-xs-3">
-							<img src="~$project/assets/img/zhaop1.jpg" />
+						<div class="mui-col-xs-3" v-for="(item,index) in picList">
+							<img :src="item" />
 						</div>
 					</li>
 				</ul>
@@ -65,25 +54,101 @@
 				<ul class="mui-table-view">
 					<li class="mui-table-view-cell mui-media">
 						审批人:
-						<span>郑强</span>
+						<span v-text="detail.approvalPersonName"></span>
 					</li>
 					<li class="mui-table-view-cell mui-media">
 						审批编号:
-						<span>20200419115613532321135</span>
+						<span v-text="detail.approvalNo"></span>
 					</li>
 					<li class="mui-table-view-cell mui-media">
-						<span class="colorf8b155">努力加班也别忘记了打卡。</span>
+						<span class="colorf8b155" v-text="detail.approvalContent"></span>
 					</li>
 				</ul>
 			</div>
 		</div>
-</div>
+
+		<loading :visible="isLoading"></loading>
+	</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 {
+		mapGetters,
+		mapMutations
+	} from 'vuex'
+	export default {
+		name: 'MasterAttendanceInfo',
+		components: {
+			Common,
+			Loading,
+			TopHeader
+		},
+		data() {
+			return {
+				pageTitle: '补卡详情',
+
+				isLoading: false,
+
+				subForm: {
+					id: this.$route.query.id
+				},
+				detail: {},
+			}
+		},
+		created() {
+
+		},
+		methods: {
+			//获取详情
+			getDetail() {
+				this.isLoading = true;
+				API_Attendance.getApplyInfo(this.subForm).then(response => {
+
+					this.detail = response;
+
+					this.isLoading = false;
+				}).catch(error => {
+					this.isLoading = false;
+					mui.toast(error);
+				})
+			},
+			asynCallBack() {
+
+			},
+		},
+		mounted() {
+			//获取详情
+			this.getDetail();
+		},
+		destroyed() {},
+		computed: {
+			picList: {
+				// getter
+				get: function() {
+					if (this.detail && this.detail.fillAttendanceFilesUrl) {
+						return this.detail.fillAttendanceFilesUrl.split(',');
+					} else {
+						return [];
+					}
+				},
+				// setter
+				set: function(newValue) {
+					console.log(newValue)
+				}
+			},
+			...mapGetters({
+				openId: 'wx_openid',
+				token: 'token',
+			})
+		}
+	}
 </script>
 
 <style scoped src="$project/assets/css/xpwyfyy.css"></style>
 <style scoped src="$project/assets/css/iconfont.css"></style>
-<style>
+<style scoped>
 </style>

Некоторые файлы не были показаны из-за большого количества измененных файлов