Procházet zdrojové kódy

Merge branch 'master' of http://47.92.161.104:10080/wgl/jp-xpgj

zhengkaixin před 4 roky
rodič
revize
ea42b815bc
37 změnil soubory, kde provedl 1383 přidání a 514 odebrání
  1. 1 1
      .env.production
  2. 1 1
      config/project.js
  3. 3 1
      src/assets/css/pension.css
  4. binární
      src/assets/img/icon_watch.png
  5. 18 13
      src/projects/business/main.js
  6. 22 0
      src/projects/business/router/master.js
  7. 7 3
      src/projects/business/views/Common/Health/Cert.vue
  8. 1 1
      src/projects/business/views/Master/AllFun.vue
  9. 4 2
      src/projects/business/views/Master/Attendance/Apply.vue
  10. 167 160
      src/projects/business/views/Master/Attendance/LeaveForm.vue
  11. 71 81
      src/projects/business/views/Master/Attendance/LeaveInfo.vue
  12. 9 9
      src/projects/business/views/Master/Attendance/LeaveList.vue
  13. 21 15
      src/projects/business/views/Master/Attendance/Sign.vue
  14. 232 0
      src/projects/business/views/Master/Attendance/VerifyInfo.vue
  15. 225 0
      src/projects/business/views/Master/Attendance/VerifyLeaveInfo.vue
  16. 14 27
      src/projects/business/views/Master/Attendance/VerifyLeaveList.vue
  17. 12 18
      src/projects/business/views/Master/Attendance/VerifyList.vue
  18. 1 1
      src/projects/business/views/Master/Company/AddPerson.vue
  19. 3 2
      src/projects/business/views/Master/Home.vue
  20. 22 0
      src/projects/pension/apis/Common/device.js
  21. 11 0
      src/projects/pension/apis/Master/health.js
  22. 18 13
      src/projects/pension/main.js
  23. 3 3
      src/projects/pension/router/master.js
  24. 6 7
      src/projects/pension/views/Common/Device/Add.vue
  25. 90 27
      src/projects/pension/views/Common/Device/List.vue
  26. 1 1
      src/projects/pension/views/Master/AllFun.vue
  27. 0 79
      src/projects/pension/views/Master/BigFontHome.vue
  28. 90 26
      src/projects/pension/views/Master/ExchangeRole.vue
  29. 106 13
      src/projects/pension/views/Master/Health/Archives.vue
  30. 22 2
      src/projects/pension/views/Master/Home.vue
  31. 162 0
      src/projects/pension/views/Master/HomeBigFont.vue
  32. 19 2
      src/projects/pension/views/Master/Mine/Center.vue
  33. 3 1
      src/store/getters.js
  34. 2 1
      src/store/mutation-types.js
  35. 8 2
      src/store/mutations.js
  36. 3 1
      src/store/state.js
  37. 5 1
      src/utils/storage.js

+ 1 - 1
.env.production

@@ -2,7 +2,7 @@ NODE_ENV=production
 VUE_APP_NODE_NAME=production
 OUT_PUT_NAME=prod
 VUE_APP_LOCAL_STORAGE_PREFIX=prod
-VUE_APP_BACKEND_URL=http://wisdomhouse.sudaonline.net/
+VUE_APP_BACKEND_URL=http://xpgjapi.xiaoxinda.com/
 #小鹏管家微信appid
 VUE_APP_WXAPPID=wx7e70eb62a8459869
 VUE_APP_AUTH=

+ 1 - 1
config/project.js

@@ -1 +1 @@
-exports.name = 'home'
+exports.name = 'business'

+ 3 - 1
src/assets/css/pension.css

@@ -50,7 +50,9 @@
 	margin: 8px 0;
 	font-weight: bold;
 }
-
+.vongi-color .mui-h1{
+	line-height: 1.2;
+}
 .vongi-color .mui-table-view,
 .vongi-color .mui-table-view:before,
 .vongi-color .mui-table-view:after,

binární
src/assets/img/icon_watch.png


+ 18 - 13
src/projects/business/main.js

@@ -41,20 +41,23 @@ Vue.use(VueDirectiveImagePreviewer, {
 	clickMethod: 'doubleClick'
 })
 
-//获取纯权限路由数组
-let funList = [];
-let fun_list = store.state.fun_list;
-if (fun_list && fun_list.length > 0) {
-	fun_list.forEach(function(item) {
-		item.list.forEach(function(iten) {
-			funList.push(iten.iconRoute);
-			if (iten.iconSubRouteList) {
-				iten.iconSubRouteList.forEach(function(iteb) {
-					funList.push(iteb)
-				})
-			}
+//获取纯权限路由数组,由函数每次获取
+function getFunList() {
+	let funList = [];
+	let fun_list = store.state.fun_list;
+	if (fun_list && fun_list.length > 0) {
+		fun_list.forEach(function(item) {
+			item.list.forEach(function(iten) {
+				funList.push(iten.iconRoute);
+				if (iten.iconSubRouteList) {
+					iten.iconSubRouteList.forEach(function(iteb) {
+						funList.push(iteb)
+					})
+				}
+			})
 		})
-	})
+	}
+	return funList;
 }
 //console.log(funList)
 
@@ -70,6 +73,8 @@ router.beforeEach((to, from, next) => {
 		if (store.state.person_data) {
 
 			if ((to.meta.form != null && to.meta.form) || (to.meta.mode != null && to.meta.mode)) {
+
+				let funList = getFunList();
 				//验证
 				if (funList.indexOf(to.name) > -1) {
 					next();

+ 22 - 0
src/projects/business/router/master.js

@@ -480,6 +480,17 @@ const routesMaster = [
 							mode: true
 						}
 					},
+					//考勤补卡申请详情
+					{
+						path: 'verifyInfo',
+						name: 'MasterAttendanceVerifyInfo',
+						component: () => import('../views/Master/Attendance/VerifyInfo.vue'),
+						meta: {
+							requireAuth: false,
+							role: [],
+							title: '考勤补卡申请详情',
+						}
+					},
 					//请假申请审核列表
 					{
 						path: 'verifyLeaveList',
@@ -492,6 +503,17 @@ const routesMaster = [
 							mode: true
 						}
 					},
+					//请假申请详情
+					{
+						path: 'verifyLeaveInfo',
+						name: 'MasterAttendanceVerifyLeaveInfo',
+						component: () => import('../views/Master/Attendance/VerifyLeaveInfo.vue'),
+						meta: {
+							requireAuth: false,
+							role: [],
+							title: '请假申请详情',
+						}
+					},
 					//请假记录
 					{
 						path: 'leaveList',

+ 7 - 3
src/projects/business/views/Common/Health/Cert.vue

@@ -2,7 +2,7 @@
 	<div>
 		<common @asynCallBack="asynCallBack"></common>
 		<top-header :pageTitle="pageTitle" :rightLink="rightLink" :doRightLink="doRightLink" :headerStyle="'background-color:'+statusTitleColor"></top-header>
-		<green-code ref="greenCode" :personId="subForm.personId"></green-code>
+		<green-code ref="greenCode" :personId="subForm.personId" @callBack="callBack"></green-code>
 
 		<div class="mui-content vongi-jkz-content">
 			<div class="vongi-jkz-content mui-content-padded mui-clearfix">
@@ -21,7 +21,7 @@
 								<div class="fyy-statistics-body">
 									<h2>{{detail.name}}<span :style="'color:'+statusTitleColor">{{statusName}}</span></h2>
 									<a class="mui-navigate-right" @click="showGreenCode">
-										<span class="mui-icon iconfont icon-erweima1" :style="'color: '+statusTitleColor+';margin-right:15px;line-height: 27px'"></span>
+										<span class="mui-icon iconfont icon-erweima1" :style="'color: '+statusTitleColor+';'"></span>
 									</a>
 								</div>
 								<div class="mui-ellipsis mui-h5" v-text="detail.parking"></div>
@@ -363,6 +363,10 @@
 					query: {}
 				})
 			},
+			//更新绿码
+			callBack(obj) {
+				this.getGreenCode();
+			},
 			asynCallBack() {},
 		},
 		mounted() {
@@ -379,7 +383,7 @@
 				openId: 'wx_openid',
 				token: 'token',
 				person_data: 'person_data',
-                person_popedom: 'person_popedom',
+				person_popedom: 'person_popedom',
 			})
 		}
 	}

+ 1 - 1
src/projects/business/views/Master/AllFun.vue

@@ -9,7 +9,7 @@
 					<h4 v-text="iten.name"></h4>
 					<ul class="mui-table-view mui-grid-view mui-grid-9">
 						<li v-for="(item,index) in iten.list" :class="'mui-table-view-cell mui-media mui-col-xs-3 '+(item.iconRoute?'':'kfz')">
-							<router-link :to="{name:item.iconRoute}">
+							<router-link :to="{name:item.iconRoute,query:item.iconParam}">
 								<img :src="requirePic(item.iconPic)" />
 								<div class="mui-media-body" v-text="item.iconName"></div>
 							</router-link>

+ 4 - 2
src/projects/business/views/Master/Attendance/Apply.vue

@@ -33,7 +33,7 @@
 			<div class="mui-content-padded">
 				<h5>上传照片</h5>
 				<div class="fyy-upphoto">
-					<div class="mui-col-xs-3" v-for="(item,index) in picList">
+					<div class="mui-col-xs-3 fyy-upphoto-close" v-for="(item,index) in picList">
 						<img :src="item" />
 						<a class="mui-icon mui-icon-closeempty" @click="delPic(item)"></a>
 					</div>
@@ -84,7 +84,7 @@
 					workAttendanceDate: '',
 					workAttendanceTime: '',
 					type: '2', //外勤打卡/补卡(1/2)
-					content: '',
+					content: '补卡申请',
 					approvalPersonId: '',
 					workAttendanceId: this.$route.query.id,
 					photoFile: '',
@@ -211,6 +211,8 @@
 					this.isLoading = true;
 					API_Attendance.postPatchCard(this.tjForm).then(response => {
 						this.isLoading = false;
+						
+						mui.toast('提交成功');
 						this.$router.push({
 							name: 'Master',
 							query: {}

+ 167 - 160
src/projects/business/views/Master/Attendance/LeaveForm.vue

@@ -1,21 +1,21 @@
 <template>
-<div>
+	<div>
 
-	<common @asynCallBack="asynCallBack"></common>
-	<top-header :pageTitle="pageTitle" :routeName="routeName" ></top-header>
+		<common @asynCallBack="asynCallBack"></common>
+		<top-header :pageTitle="pageTitle"></top-header>
 
-	<div class="mui-content vongi-wordcard">
+		<div class="mui-content vongi-wordcard">
 			<div class="mui-content-padded">
 				<form class="mui-input-group">
 					<div class="mui-input-row">
 						<label><span class="colorfe616c">*</span>请假类型</label>
 						<div class="mui-navigate-right" @click="selectType">
-							<button   class="mui-btn mui-btn-block" type='button' v-text="typeName">请选择</button>
+							<button class="mui-btn mui-btn-block" type='button' v-text="typeName">请选择</button>
 						</div>
 					</div>
 					<div class="mui-input-row">
 						<label><span class="colorfe616c">*</span>审批人</label>
-						<div class="mui-navigate-right"  @click="selectPerson">
+						<div class="mui-navigate-right" @click="selectPerson">
 							<button id='' class="mui-btn mui-btn-block" type='button' v-text="approvalPersonName">请选择</button>
 						</div>
 					</div>
@@ -31,7 +31,7 @@
 					</div>
 					<div class="mui-input-row">
 						<label><span class="colorfe616c">*</span>结束日期</label>
-						<div class="mui-navigate-right"  @click="selectEndTime()">
+						<div class="mui-navigate-right" @click="selectEndTime()">
 							<button class="mui-btn mui-btn-block" type='button' v-text="tjForm.endTime">请选择</button>
 						</div>
 					</div>
@@ -40,15 +40,16 @@
 			<div class="mui-content-padded">
 				<h5><span class="colorfe616c">*</span>请假事由</h5>
 				<div class="mui-input-row">
-					<textarea id="textarea" rows="5"  v-model="tjForm.reason" placeholder="请输入"></textarea>
+					<textarea id="textarea" rows="5" v-model="tjForm.reason" :placeholder="reasonDefault"></textarea>
 				</div>
 			</div>
 
 			<div class="mui-content-padded">
 				<h5>上传照片</h5>
 				<div class="fyy-upphoto">
-					<div class="mui-col-xs-3" v-for="(item,index) in picList">
+					<div class="mui-col-xs-3 fyy-upphoto-close" v-for="(item,index) in picList">
 						<img :src="item" />
+						<a class="mui-icon mui-icon-closeempty" @click="delPic(item)"></a>
 					</div>
 					<div class="mui-col-xs-3" @click="chooseImage">
 						<a><span class="mui-icon mui-icon-plusempty"></span></a>
@@ -63,9 +64,9 @@
 				</button>
 			</div>
 		</div>
-	<loading :visible="isLoading"></loading>
+		<loading :visible="isLoading"></loading>
 
-</div>
+	</div>
 </template>
 
 
@@ -92,8 +93,8 @@
 				pageTitle: '请假',
 
 				isLoading: false,
-				leaveTypeList:[],
-				approvedList:[],
+				leaveTypeList: [],
+				approvedList: [],
 				typeName: '请选择',
 				approvalPersonName: '请选择',
 				tjForm: {
@@ -107,173 +108,179 @@
 
 					approvedId: '',
 					remark: '',
-
 				},
+				reasonDefault: '请假申请',
 				picList: [],
-				routeName: "Master",
-
 			}
 		},
 		created() {
 
 		},
-			methods: {
-				//审批类型
-				getLeaveTypeList() {
-					API_Leave.leaveTypeList().then(response => {
+		methods: {
+			//审批类型
+			getLeaveTypeList() {
+				API_Leave.leaveTypeList().then(response => {
 
-						for(var i in response){
-							var mod=response[i]
-							mod.text=mod.name
-							this.leaveTypeList.push(mod)
-						}
-					}).catch(error => {
-						mui.toast(error);
-					})
-				},
-				//获取审核人列表
-				getPsersonList() {
-					this.isLoading = true;
-					API_Leave.approvedList().then(response => {
+					for (var i in response) {
+						var mod = response[i]
+						mod.text = mod.name
+						this.leaveTypeList.push(mod)
+					}
+				}).catch(error => {
+					mui.toast(error);
+				})
+			},
+			//获取审核人列表
+			getPsersonList() {
+				this.isLoading = true;
+				API_Leave.approvedList().then(response => {
 
-						for(var i in response){
-							var mod=response[i]
-							mod.text=mod.name
-							mod.value=mod.id;
+					for (var i in response) {
+						var mod = response[i]
+						mod.text = mod.name
+						mod.value = mod.id;
 
-							this.approvedList.push(mod)
-						}
+						this.approvedList.push(mod)
+					}
 
-						this.isLoading = false;
-					}).catch(error => {
-						this.isLoading = false;
-						mui.toast(error);
-					})
-				},
-				//微信选择图片
-				chooseImage() {
-					WxJsApi.chooseImage().then(res => {
-						var localData = res.localData;
+					this.isLoading = false;
+				}).catch(error => {
+					this.isLoading = false;
+					mui.toast(error);
+				})
+			},
+			//微信选择图片
+			chooseImage() {
+				WxJsApi.chooseImage().then(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();
-					}).catch(error => {
-						mui.toast(error);
-					})
-				},
-				//上传图片
-				uploadpic() {
+					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();
+				}).catch(error => {
+					mui.toast(error);
+				})
+			},
+			//上传图片
+			uploadpic() {
+				this.isLoading = true;
+				WxJsApi.uploadPic(this.imgBase64).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.approvedList);
+				picker.show(function(selectItems) {
+					_this.tjForm.approvedId = selectItems[0].value;
+					_this.approvalPersonName = selectItems[0].text;
+				})
+			},
+			//选择时间
+			selectStartTime() {
+				var _this = this;
+				var startTime = _this.tjForm.startTime == '请选择' ? new Date() : _this.tjForm.startTime;
+
+				var picker = new mui.DtPicker({
+					"type": "datetime",
+					"beginYear": 2020,
+					"endYear": 2040,
+				});
+				picker.show(function(rs) {
+					_this.tjForm.startTime = rs.text;
+				});
+			},
+			//选择时间
+			selectEndTime() {
+				var _this = this;
+				var picker = new mui.DtPicker({
+					"type": "datetime",
+					"beginYear": 2020,
+					"endYear": 2040,
+					"beginDate": _this.tjForm.startTime,
+				});
+				picker.show(function(rs) {
+					_this.tjForm.endTime = rs.text;
+				});
+			},
+			//类型选择
+			selectType() {
+				var picker = new mui.PopPicker();
+
+				picker.setData(this.leaveTypeList);
+				var _this = this;
+				picker.show(function(selectItems) {
+					_this.tjForm.leaveType = selectItems[0].value;
+					_this.typeName = selectItems[0].text;
+				})
+			},
+			//表单检测
+			checkFrom() {
+				if (!this.tjForm.leaveType) {
+					mui.toast('请选择请假类型');
+					return false;
+				} else if (!this.tjForm.approvedId) {
+					mui.toast('请选择审批人');
+					return false;
+				} else if (!this.tjForm.startTime) {
+					mui.toast('请选择开始日期');
+					return false;
+				} else if (!this.tjForm.endTime) {
+					mui.toast('请选择结束日期');
+					return false;
+				} else if (!this.tjForm.reason) {
+					mui.toast('请输入请假理由');
+					return false;
+				} else {
+					return true;
+				}
+			},
+			//删除图片
+			delPic(item) {
+				let picList = this.picList;
+				let index = picList.indexOf(item);
+				if (index > -1) {
+					picList.splice(index, 1);
+				}
+				this.picList = picList;
+			},
+			//提交
+			submit() {
+				this.tjForm.reason = this.tjForm.reason ? this.tjForm.reason : this.reasonDefault;
+				if (this.checkFrom()) {
+					this.tjForm.imageUrl = this.picList.join(',');
 					this.isLoading = true;
-					WxJsApi.uploadPic(this.imgBase64).then(response => {
+					API_Leave.save(this.tjForm).then(response => {
 						this.isLoading = false;
-
-						this.picList.push(response);
+						mui.toast("提交成功");
+						this.$router.push({
+							name: 'MasterAttendanceLeaveList',
+							query: {}
+						})
 					}).catch(error => {
 						this.isLoading = false;
 						mui.toast(error);
 					})
-				},
-				//选择审核人
-				selectPerson() {
-					var _this = this;
-					var picker = new mui.PopPicker();
-
-					picker.setData(_this.approvedList);
-					picker.show(function(selectItems) {
-						_this.tjForm.approvedId = selectItems[0].value;
-						_this.approvalPersonName = selectItems[0].text;
-					})
-				},
-				//选择时间
-				selectStartTime() {
-					var _this = this;
-					var startTime= _this.tjForm.startTime=='请选择'? new Date():_this.tjForm.startTime;
-
-					var picker = new mui.DtPicker({
-						"type": "datetime",
-						"beginYear": 2020,
-						"endYear": 2040,
-					});
-					picker.show(function(rs) {
-						_this.tjForm.startTime = rs.text;
-					});
-				},
-				//选择时间
-				selectEndTime() {
-					var _this = this;
-					var picker = new mui.DtPicker({
-						"type": "datetime",
-						"beginYear": 2020,
-						"endYear": 2040,
-						"beginDate": _this.tjForm.startTime,
-					});
-					picker.show(function(rs) {
-						_this.tjForm.endTime = rs.text;
-					});
-				},
-				//类型选择
-				selectType() {
-					var picker = new mui.PopPicker();
-
-					picker.setData(this.leaveTypeList);
-					var _this = this;
-					picker.show(function(selectItems) {
-						_this.tjForm.leaveType = selectItems[0].value;
-						_this.typeName = selectItems[0].text;
-					})
-				},
-				//表单检测
-				checkFrom() {
-					if (!this.tjForm.leaveType) {
-						mui.toast('请选择请假类型');
-						return false;
-					} else if (!this.tjForm.approvedId) {
-						mui.toast('请选择审批人');
-						return false;
-					} else if (!this.tjForm.startTime) {
-						mui.toast('请选择开始日期');
-						return false;
-					}else if (!this.tjForm.endTime) {
-						mui.toast('请选择结束日期');
-						return false;
-					}else if (!this.tjForm.reason) {
-						mui.toast('请输入请假理由');
-						return false;
-					} else {
-						return true;
-					}
-
-
-				},
-				//提交
-				submit() {
-					if (this.checkFrom()) {
-						this.tjForm.imageUrl = this.picList.join(',');
-						this.isLoading = true;
-						API_Leave.save(this.tjForm).then(response => {
-							this.isLoading = false;
-							mui.toast("提交成功!");
-							this.$router.push({
-								name: 'MasterAttendanceLeaveList',
-								query: {}
-							})
-						}).catch(error => {
-							this.isLoading = false;
-							mui.toast(error);
-						})
-					}
-				},
-				asynCallBack() {
+				}
+			},
+			asynCallBack() {
 
-				},
 			},
+		},
 		mounted() {
 			//获取微信配置
 			WxJsApi.getWxConfig();

+ 71 - 81
src/projects/business/views/Master/Attendance/LeaveInfo.vue

@@ -1,78 +1,74 @@
 <template>
-<div>
-	<common @asynCallBack="asynCallBack"></common>
-	<top-header :pageTitle="pageTitle"  ></top-header>
-
-	<div class="mui-content vongi-qingjiadt">
-				<div class="vongi-qingjiadt-head flew-sp">
-					<div class="flew-items">
-						<div class="flew"><img :src="detail.picUrl" width="50" /></div>
-						<h4 v-text="detail.name+' 申请请假 '+detail.leaveTypeN">郭麒麟 申请请假 事假</h4>
-					</div>
-					<button class="mui-btn   mui-btn-outlined" :class="statusColor[detail.status]" v-text="status[detail.status]">已批准</button>
-					<!-- <div class="examine-refuse">已拒绝</div> -->
+	<div>
+		<common @asynCallBack="asynCallBack"></common>
+		<top-header :pageTitle="pageTitle"></top-header>
+
+		<div class="mui-content vongi-qingjiadt">
+			<div class="vongi-qingjiadt-head flew-sp">
+				<div class="flew-items">
+					<div class="flew"><img :src="detail.picUrl" width="50" /></div>
+					<h4 v-text="detail.name+' 申请请假 '+detail.leaveTypeN"></h4>
 				</div>
-				<form class="mui-input-group">
-					<div class="mui-input-row">
-						<label>身份证号</label>
-						<span v-text="detail.idCard">420400200002020101</span>
-					</div>
-					<div class="mui-input-row">
-						<label>工号</label>
-						<span v-text="detail.jobNumber">0201022121001</span>
-					</div>
-					<div class="mui-input-row">
-						<label>部门</label>
-						<span v-text="detail.department">信息工程中心</span>
-					</div>
-					<div class="mui-input-row">
-						<label>请假时间</label>
-						<span >自{{detail.startTime}}<br/>至{{detail.endTime}}</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-image-preview />
-
-							</template>
-						</span>
-					</div>
-					<div class="mui-input-row">
-						<label>申请时间</label>
-						<span v-text="detail.createTime">2020-04-27 12:00:00</span>
-					</div>
-				</form>
-				<div class="mui-content-padded">
-					<h5>审核记录</h5>
+				<button class="mui-btn   mui-btn-outlined" :class="statusColor[detail.status]" v-text="status[detail.status]">已批准</button>
+				<!-- <div class="examine-refuse">已拒绝</div> -->
+			</div>
+			<form class="mui-input-group">
+				<div class="mui-input-row">
+					<label>身份证号</label>
+					<span v-text="detail.idCard">420400200002020101</span>
 				</div>
-				<form class="mui-input-group">
-					<div class="mui-input-row">
-						<label>审批人</label>
-						<span>{{detail.approvedName}}</span>
-					</div>
-					<div class="mui-input-row">
-						<label>审核状态</label>
-						<span>{{detail.approvalOpinions}}</span>
-					</div>
-					<div class="mui-input-row">
-						<label>审核意见</label>
-						<span>{{detail.approvalExplain}}</span>
-					</div>
-					<div class="mui-input-row">
-						<label>审核时间</label>
-						<span>{{detail.approvedTime}}</span>
-					</div>
-				</form>
-
+				<div class="mui-input-row">
+					<label>工号</label>
+					<span v-text="detail.jobNumber">0201022121001</span>
+				</div>
+				<div class="mui-input-row">
+					<label>部门</label>
+					<span v-text="detail.department">信息工程中心</span>
+				</div>
+				<div class="mui-input-row">
+					<label>请假时间</label>
+					<span>自{{detail.startTime}}<br />至{{detail.endTime}}</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-image-preview />
+
+						</template>
+					</span>
+				</div>
+				<div class="mui-input-row">
+					<label>申请时间</label>
+					<span v-text="detail.createTime">2020-04-27 12:00:00</span>
+				</div>
+			</form>
+			<div class="mui-content-padded">
+				<h5>审核记录</h5>
 			</div>
-	<loading :visible="isLoading"></loading>
+			<form class="mui-input-group">
+				<div class="mui-input-row">
+					<label>审批人</label>
+					<span>{{detail.approvedName}}</span>
+				</div>
+				<div class="mui-input-row">
+					<label>审核意见</label>
+					<span>{{detail.approvalExplain}}</span>
+				</div>
+				<div class="mui-input-row">
+					<label>审核时间</label>
+					<span>{{detail.approvedTime}}</span>
+				</div>
+			</form>
 
-</div>
+		</div>
+		<loading :visible="isLoading"></loading>
+
+	</div>
 </template>
 
 <script>
@@ -97,13 +93,10 @@
 				pageTitle: '请假详情',
 
 				isLoading: false,
-				id:this.$route.query.id,
-				detail:{},
+				id: this.$route.query.id,
+				detail: {},
 				status: ['待审核', '已批准', '已拒绝'],
 				statusColor: ['', 'mui-btn-success', 'mui-btn-danger'],
-
-
-
 			}
 		},
 		created() {
@@ -114,9 +107,9 @@
 			getDetail() {
 				this.isLoading = true;
 				API_Leave.detail({
-					id:this.id
+					id: this.id
 				}).then(response => {
-					this.detail=response;
+					this.detail = response;
 					this.isLoading = false;
 				}).catch(error => {
 					this.isLoading = false;
@@ -124,8 +117,6 @@
 				})
 			},
 
-
-
 			asynCallBack() {
 
 			},
@@ -134,8 +125,7 @@
 			this.getDetail();
 
 		},
-		destroyed() {
-		},
+		destroyed() {},
 		computed: {
 			computed: {
 				picList: {

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

@@ -1,19 +1,19 @@
 <template>
-<div>
+	<div>
 
-	<common @asynCallBack="asynCallBack"></common>
-	<top-header :pageTitle="pageTitle"  ></top-header>
+		<common @asynCallBack="asynCallBack"></common>
+		<top-header :pageTitle="pageTitle" :routeName="'Master'"></top-header>
 
-	<div class="mui-content">
+		<div class="mui-content">
 			<div class="mui-content-padded vongi-work">
 				<ul class="mui-table-view vongi-qingjia">
 					<li class="mui-table-view-cell" v-for="mod in recordList" @click="detail(mod.id)">
-						<h4 >
+						<h4>
 							{{mod.title}}
 							<span v-text="mod.createTime">12:00</span>
 						</h4>
 						<button type="button" class="mui-btn  mui-btn-outlined" :class="statusColor[mod.status]" v-text="status[mod.status]">
-							 </button>
+						</button>
 					</li>
 
 				</ul>
@@ -22,9 +22,9 @@
 				<div class="bindfyy-btn"><button type="submit" class="mui-btn mui-btn-primary " @click="save()">写请假条</button></div>
 			</div>
 		</div>
-	<loading :visible="isLoading"></loading>
+		<loading :visible="isLoading"></loading>
 
-</div>
+	</div>
 </template>
 
 
@@ -54,7 +54,7 @@
 				listForm: {
 					pageIndex: 1,
 					pageSize: 20,
-				//	token: '',
+					//	token: '',
 					totalPage: 1,
 					result: 0,
 				},

+ 21 - 15
src/projects/business/views/Master/Attendance/Sign.vue

@@ -1,7 +1,7 @@
 <template>
 	<div>
 		<common @asynCallBack="asynCallBack"></common>
-		<top-header :pageTitle="pageTitle"></top-header>
+		<top-header :pageTitle="pageTitle" :rightLink="rightLink" :doRightLink="doRightLink"></top-header>
 
 		<div class="mui-content vongi-wordcard">
 			<div class="mui-content-padded vongi-wordcard-padded">
@@ -23,7 +23,7 @@
 				<button class="vongi-yidi-location">{{tjForm.address}}<span class="mui-icon mui-icon-location"></span></button>
 			</div>
 			<div class="mui-content-padded">
-				<h5>备注</h5>
+				<h5><span class="colorfe616c">*</span>备注</h5>
 				<div class="mui-input-row">
 					<textarea v-model="tjForm.content" rows="5" placeholder="请输入"></textarea>
 				</div>
@@ -31,23 +31,14 @@
 			<div class="mui-content-padded">
 				<h5>上传照片</h5>
 				<div class="fyy-upphoto">
-					<div class="mui-col-xs-3 fyy-upphoto-close">
-						<img src="~$project/assets/img/zhaop.jpg" />
-						<a class="mui-icon mui-icon-closeempty" href=""></a>
-					</div>
-					<div class="mui-col-xs-3">
-						<a><span class="mui-icon mui-icon-plusempty"></span></a>
-					</div>
-				</div>
-				<!-- <div class="fyy-upphoto">
-					<div class="mui-col-xs-3" v-for="(item,index) in picList">
+					<div class="mui-col-xs-3 fyy-upphoto-close" v-for="(item,index) in picList">
 						<img :src="item" />
 						<a class="mui-icon mui-icon-closeempty" @click="delPic(item)"></a>
 					</div>
 					<div class="mui-col-xs-3" @click="chooseImage">
 						<a><span class="mui-icon mui-icon-plusempty"></span></a>
 					</div>
-				</div> -->
+				</div>
 			</div>
 			<div class="vongi-btn">
 				<button class="mui-btn mui-btn-primary" type="button" @click="submit">
@@ -91,18 +82,25 @@
 					workAttendanceDate: '',
 					workAttendanceTime: '',
 					type: '1', //外勤打卡/补卡(1/2)
-					content: '',
+					content: '异地打卡申请',
 					approvalPersonId: '',
 					workAttendanceId: '',
 					photoFile: '',
 					longitude: 112.276527,
 					latitude: 30.306427,
-					address: '',
+					address: '定位中……',
 				},
 				//typeName: '',
 				approvalPersonName: '',
 				personList: [],
 				picList: [],
+
+				rightLink: {
+					show: true,
+					icon: 'icon-shijian',
+					style: 'font-size:14px;color:#000;',
+					title: '考勤记录'
+				},
 			}
 		},
 		created() {
@@ -199,6 +197,8 @@
 					this.isLoading = true;
 					API_Attendance.postPatchCard(this.tjForm).then(response => {
 						this.isLoading = false;
+
+						mui.toast('提交成功');
 						this.$router.push({
 							name: 'Master',
 							query: {}
@@ -255,6 +255,12 @@
 					console.log(error)
 				})
 			},
+			//右上角点击事件
+			doRightLink() {
+				this.$router.push({
+					name: 'MasterAttendanceList'
+				})
+			},
 			asynCallBack() {
 
 			},

+ 232 - 0
src/projects/business/views/Master/Attendance/VerifyInfo.vue

@@ -0,0 +1,232 @@
+<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-image-preview>
+				</div>
+				<div class="mui-media-body">
+					{{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?'status_a':'status_r'):'')">
+					{{detail.status>0?(detail.status==1?'已同意':'已拒绝'):'未审核'}}
+				</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>
+					</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>
+					</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" v-for="(item,index) in picList">
+							<img :src="item" v-image-preview />
+						</div>
+					</li>
+				</ul>
+			</div>
+
+			<div v-if="detail.status=='0'" class="fyy-scon-botton">
+				<div class="examine-btn examine-btn1" @click="openFrom('2')">拒绝</div>
+				<div class="examine-btn examine-btn2" @click="openFrom('1')">通过</div>
+			</div>
+
+			<div v-if="detail.status>0" 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>
+
+		<!-- 审批弹窗 -->
+		<div v-show="openFromVisible" @click="openFromVisible=false" class="mui-backdrop mui-active"></div>
+		<div v-show="openFromVisible" class="mui-card fyy-popup">
+			<div class="mui-card-header mui-h3">审批意见</div>
+			<div class="mui-card-content">
+				<div class="mui-input-row">
+					<textarea v-model="subForm.content" rows="5" placeholder="请输入"></textarea>
+				</div>
+			</div>
+			<div class="vongi-btn">
+				<button class="mui-btn mui-btn-primary" @click="doAction">提交</button>
+			</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: 'MasterAttendanceVerifyInfo',
+		components: {
+			Common,
+			Loading,
+			TopHeader
+		},
+		data() {
+			return {
+				pageTitle: '打卡申请详情',
+
+				isLoading: false,
+
+				id: this.$route.query.id,
+				detail: {},
+
+				//审批内容弹窗显示
+				openFromVisible: false,
+				selectIdList: [],
+				subForm: {
+					ids: '',
+					content: '',
+					status: ''
+				},
+			}
+		},
+		created() {
+
+		},
+		methods: {
+			//获取详情
+			getDetail() {
+				this.isLoading = true;
+				API_Attendance.getApplyInfo({
+					id: this.id
+				}).then(response => {
+
+					this.detail = response;
+
+					this.isLoading = false;
+				}).catch(error => {
+					this.isLoading = false;
+					mui.toast(error);
+				})
+			},
+			//显示内容表单
+			openFrom(status) {
+				this.selectIdList = [this.id];
+				if (!this.selectIdList.length) {
+					mui.toast('请选择要处理的信息');
+				} else {
+					this.subForm.status = status;
+					this.subForm.content = status == 1 ? '同意' : '拒绝';
+					this.openFromVisible = true;
+				}
+			},
+			//检测表单
+			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.getDetail();
+					}).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 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;
+	}
+</style>

+ 225 - 0
src/projects/business/views/Master/Attendance/VerifyLeaveInfo.vue

@@ -0,0 +1,225 @@
+<template>
+	<div>
+		<common @asynCallBack="asynCallBack"></common>
+		<top-header :pageTitle="pageTitle"></top-header>
+
+		<div class="mui-content vongi-qingjiadt">
+			<div class="vongi-qingjiadt-head flew-sp">
+				<div class="flew-items">
+					<div class="flew"><img :src="detail.picUrl" width="50" /></div>
+					<h4 v-text="detail.name+' 申请请假 '+detail.leaveTypeN"></h4>
+				</div>
+				<button class="mui-btn   mui-btn-outlined" :class="statusColor[detail.status]" v-text="status[detail.status]">已批准</button>
+				<!-- <div class="examine-refuse">已拒绝</div> -->
+			</div>
+			<form class="mui-input-group">
+				<div class="mui-input-row">
+					<label>身份证号</label>
+					<span v-text="detail.idCard">420400200002020101</span>
+				</div>
+				<div class="mui-input-row">
+					<label>工号</label>
+					<span v-text="detail.jobNumber">0201022121001</span>
+				</div>
+				<div class="mui-input-row">
+					<label>部门</label>
+					<span v-text="detail.department">信息工程中心</span>
+				</div>
+				<div class="mui-input-row">
+					<label>请假时间</label>
+					<span>自{{detail.startTime}}<br />至{{detail.endTime}}</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-image-preview />
+
+						</template>
+					</span>
+				</div>
+				<div class="mui-input-row">
+					<label>申请时间</label>
+					<span v-text="detail.createTime">2020-04-27 12:00:00</span>
+				</div>
+			</form>
+
+			<div v-if="detail.status==0" class="fyy-scon-botton">
+				<div class="examine-btn examine-btn1" @click="openFrom('2','拒绝')">拒绝</div>
+				<div class="examine-btn examine-btn2" @click="openFrom('1','同意')">通过</div>
+			</div>
+
+			<div v-if="detail.status>0">
+				<div class="mui-content-padded">
+					<h5>审核记录</h5>
+				</div>
+				<form class="mui-input-group">
+					<div class="mui-input-row">
+						<label>审批人</label>
+						<span>{{detail.approvedName}}</span>
+					</div>
+					<div class="mui-input-row">
+						<label>审核意见</label>
+						<span>{{detail.approvalExplain}}</span>
+					</div>
+					<div class="mui-input-row">
+						<label>审核时间</label>
+						<span>{{detail.approvedTime}}</span>
+					</div>
+				</form>
+			</div>
+		</div>
+
+		<!-- 审批弹窗 -->
+		<div v-show="openFromVisible" @click="openFromVisible=false" class="mui-backdrop mui-active"></div>
+		<div v-show="openFromVisible" class="mui-card fyy-popup">
+			<div class="mui-card-header mui-h3">审批意见</div>
+			<div class="mui-card-content">
+				<div class="mui-input-row">
+					<textarea v-model="subForm.approvalExplain" rows="5" placeholder="请输入"></textarea>
+				</div>
+			</div>
+			<div class="vongi-btn">
+				<button class="mui-btn mui-btn-primary" @click="doAction">提交</button>
+			</div>
+		</div>
+
+		<loading :visible="isLoading"></loading>
+	</div>
+</template>
+
+<script>
+	import * as API_Leave from '@/apis/Master/leave'
+	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 {
+		mapGetters,
+		mapMutations
+	} from 'vuex'
+	export default {
+		name: 'MasterAttendanceLeaveInfo',
+		components: {
+			Common,
+			Loading,
+			TopHeader
+		},
+		data() {
+			return {
+				pageTitle: '请假详情',
+
+				isLoading: false,
+				id: this.$route.query.id,
+				detail: {},
+				status: ['待审核', '已批准', '已拒绝'],
+				statusColor: ['', 'mui-btn-success', 'mui-btn-danger'],
+
+				selectIndex: [],
+				//审批内容弹窗显示
+				openFromVisible: false,
+				subForm: {
+					id: 0,
+					status: 0,
+					approvalExplain: '', //说明
+				},
+			}
+		},
+		created() {
+
+		},
+		methods: {
+			//info
+			getDetail() {
+				this.isLoading = true;
+				API_Leave.detail({
+					id: this.id
+				}).then(response => {
+					this.detail = response;
+					this.isLoading = false;
+				}).catch(error => {
+					this.isLoading = false;
+					mui.toast(error);
+				})
+			},
+
+			//显示内容表单
+			openFrom(status, val) {
+				this.selectIndex = [this.id];
+				if (!this.selectIndex.length) {
+					mui.toast('请选择要处理的信息');
+				} else {
+					this.subForm.status = status;
+					this.subForm.approvalExplain = val;
+					this.openFromVisible = true;
+				}
+			},
+			//同意拒绝
+			doAction() {
+				console.log(this.selectIndex)
+				if (this.checkForm()) {
+					this.isLoading = true;
+					this.subForm.id = this.selectIndex.toString();
+					API_Leave.approved(this.subForm).then(response => {
+						this.isLoading = false;
+
+						this.openFromVisible = false;
+						this.getDetail();
+					}).catch(error => {
+						this.isLoading = false;
+						mui.toast(error);
+					})
+				}
+			},
+			//检测表单
+			checkForm() {
+				if (!this.subForm.approvalExplain) {
+					mui.toast('请填写审核意见');
+					return false;
+				} else {
+					return true;
+				}
+			},
+
+			asynCallBack() {
+
+			},
+		},
+		mounted() {
+			this.getDetail();
+
+		},
+		destroyed() {},
+		computed: {
+			computed: {
+				picList: {
+					// getter
+					get: function() {
+						if (this.detail && this.detail.imageUrl) {
+							return this.detail.imageUrl.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>
+</style>

+ 14 - 27
src/projects/business/views/Master/Attendance/VerifyLeaveList.vue

@@ -22,7 +22,7 @@
 							<div class="mui-scroll">
 								<ul class="mui-table-view mui-table-view-chevron" v-if="listForm.type==1">
 									<li class="mui-table-view-cell mui-media" v-for="mod in recordList">
-										<router-link class="mui-navigate-right" :to="{name: 'MasterAttendanceLeaveInfo', query: {id:mod.id}}">
+										<router-link class="mui-navigate-right" :to="{name: 'MasterAttendanceVerifyLeaveInfo', query: {id:mod.id}}">
 											<div class="mui-media-object mui-pull-left">
 												<img :src="mod.picUrl"></div>
 											<div class="mui-media-body">
@@ -37,9 +37,7 @@
 								<form class="mui-input-group fyy-checkbox" v-if="listForm.type==0">
 									<div class="mui-input-row mui-checkbox mui-left" v-for="mod in recordList">
 
-										<router-link class="mui-navigate-right" :to="{name: 'MasterAttendanceLeaveInfo', query: {id:mod.id}}">
-
-
+										<router-link class="mui-navigate-right" :to="{name: 'MasterAttendanceVerifyLeaveInfo', query: {id:mod.id}}">
 											<div class="mui-media-object mui-pull-left">
 												<img :src="mod.picUrl"></div>
 											<div class="mui-media-body">
@@ -131,7 +129,6 @@
 				subForm: {
 					id: 0,
 					status: 0,
-					approvalOpinions: '', //意见
 					approvalExplain: '', //说明
 				},
 				allclick: false
@@ -144,30 +141,20 @@
 		methods: {
 			//同意拒绝
 			doAction() {
-
 				console.log(this.selectIndex)
 				if (this.checkForm()) {
-					var btnArray = ['否', '是'];
-					var _this = this;
-					mui.confirm('确认当操作?', '提示', btnArray, function(e) {
-						if (e.index == 1) {
-							_this.isLoading = true;
-
+					this.isLoading = true;
+					this.subForm.id = this.selectIndex.toString();
+					API_Leave.approved(this.subForm).then(response => {
+						this.isLoading = false;
 
-							_this.subForm.id = _this.selectIndex.toString();
-
-							API_Leave.approved(_this.subForm).then(response => {
-								_this.isLoading = false;
-
-								_this.openFromVisible = false;
-								_this.listForm.pageIndex = 1;
-								_this.getList();
-							}).catch(error => {
-								_this.isLoading = false;
-								mui.toast(error);
-							})
-						}
-					});
+						this.openFromVisible = false;
+						this.listForm.pageIndex = 1;
+						this.getList();
+					}).catch(error => {
+						this.isLoading = false;
+						mui.toast(error);
+					})
 				}
 			},
 			//检测表单
@@ -203,7 +190,7 @@
 					mui.toast('请选择要处理的信息');
 				} else {
 					this.subForm.status = status;
-					this.subForm.approvalOpinions = val;
+					this.subForm.approvalExplain = val;
 					this.openFromVisible = true;
 				}
 			},

+ 12 - 18
src/projects/business/views/Master/Attendance/VerifyList.vue

@@ -22,7 +22,7 @@
 							<div class="mui-scroll">
 								<form class="mui-input-group fyy-checkbox">
 									<div v-for="(item,index) in recordList" :key="item.id" class="mui-input-row mui-checkbox mui-left">
-										<router-link :to="{name:'MasterAttendanceInfo',query:{id:item.id}}" class="mui-navigate-right">
+										<router-link :to="{name:'MasterAttendanceVerifyInfo',query:{id:item.id}}" class="mui-navigate-right">
 											<div class="mui-media-object mui-pull-left"><img :src="item.faceImageUrl"></div>
 											<div class="mui-media-body">
 												{{item.personName}}
@@ -51,7 +51,7 @@
 							<div class="mui-scroll">
 								<ul class="mui-table-view mui-table-view-chevron">
 									<li v-for="(item,index) in recordList" :key="item.id" class="mui-table-view-cell mui-media">
-										<router-link :to="{name:'MasterAttendanceInfo',query:{id:item.id}}" class="mui-navigate-right">
+										<router-link :to="{name:'MasterAttendanceVerifyInfo',query:{id:item.id}}" class="mui-navigate-right">
 											<div class="mui-media-object mui-pull-left"><img :src="item.faceImageUrl"></div>
 											<div class="mui-media-body">
 												{{item.personName}}
@@ -215,23 +215,17 @@
 			doAction() {
 				this.subForm.ids = this.selectIdList.join(',');
 				if (this.checkForm()) {
-					var btnArray = ['否', '是'];
-					var _this = this;
-					mui.confirm('确认当操作?', '提示', btnArray, function(e) {
-						if (e.index == 1) {
-							_this.isLoading = true;
-							API_Attendance.doVerify(_this.subForm).then(response => {
-								_this.isLoading = false;
+					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);
-							})
-						}
-					});
+						this.openFromVisible = false;
+						this.listForm.pageIndex = 1;
+						this.getList();
+					}).catch(error => {
+						this.isLoading = false;
+						mui.toast(error);
+					})
 				}
 			},
 			asynCallBack() {

+ 1 - 1
src/projects/business/views/Master/Company/AddPerson.vue

@@ -65,7 +65,7 @@
 		},
 		data() {
 			return {
-				pageTitle: '用户注册',
+				pageTitle: '添加人员',
 
 				isLoading: false,
 

+ 3 - 2
src/projects/business/views/Master/Home.vue

@@ -47,7 +47,7 @@
 				</div>
 				<ul class="mui-table-view mui-grid-view mui-grid-9">
 					<li v-for="(item,index) in menu_list" :class="'mui-table-view-cell mui-media mui-col-xs-3 '+(item.iconRoute?'':'kfz')">
-						<router-link :to="{name:item.iconRoute}">
+						<router-link :to="{name:item.iconRoute,query:item.iconParam}">
 							<img :src="requirePic(item.iconPic)" />
 							<div class="mui-media-body" v-text="item.iconName"></div>
 						</router-link>
@@ -198,9 +198,10 @@
 			selectRole() {
 				var roleList = [];
 				for (var i = 0; i < this.roleList.length; i++) {
+					var preName = this.person_popedom.personRoleName == this.roleList[i]['personRoleName'] ? '(当前)' : '';
 					roleList.push({
 						value: this.roleList[i]['id'],
-						text: this.roleList[i]['companyName'] + ' ' + this.roleList[i]['personRoleName'],
+						text: preName + this.roleList[i]['companyName'] + ' ' + this.roleList[i]['personRoleName'],
 					})
 				}
 				var _this = this;

+ 22 - 0
src/projects/pension/apis/Common/device.js

@@ -0,0 +1,22 @@
+import request from '@/utils/request'
+import Qs from 'qs';
+
+//获取手环设备列表
+export function getWatchList() {
+	return request({
+		url: '/mobile/watchApi/getWatchList',
+		data: Qs.stringify({}),
+		method: 'post',
+	})
+}
+
+//设置默认手环设备
+export function setDefaultWatch(deviceNo) {
+	return request({
+		url: '/mobile/watchApi/setDefaultWatch',
+		data: Qs.stringify({
+			deviceNo: deviceNo
+		}),
+		method: 'post',
+	})
+}

+ 11 - 0
src/projects/pension/apis/Master/health.js

@@ -0,0 +1,11 @@
+import request from '@/utils/request'
+import Qs from 'qs';
+
+//获取健康数据
+export function getHeathData() {
+	return request({
+		url: '/mobile/watchApi/getWatchNewData',
+		data: Qs.stringify({}),
+		method: 'post',
+	})
+}

+ 18 - 13
src/projects/pension/main.js

@@ -41,20 +41,23 @@ Vue.use(VueDirectiveImagePreviewer, {
 	clickMethod: 'doubleClick'
 })
 
-//获取纯权限路由数组
-let funList = [];
-let fun_list = store.state.fun_list;
-if (fun_list && fun_list.length > 0) {
-	fun_list.forEach(function(item) {
-		item.list.forEach(function(iten) {
-			funList.push(iten.iconRoute);
-			if (iten.iconSubRouteList) {
-				iten.iconSubRouteList.forEach(function(iteb) {
-					funList.push(iteb)
-				})
-			}
+//获取纯权限路由数组,由函数每次获取
+function getFunList() {
+	let funList = [];
+	let fun_list = store.state.fun_list;
+	if (fun_list && fun_list.length > 0) {
+		fun_list.forEach(function(item) {
+			item.list.forEach(function(iten) {
+				funList.push(iten.iconRoute);
+				if (iten.iconSubRouteList) {
+					iten.iconSubRouteList.forEach(function(iteb) {
+						funList.push(iteb)
+					})
+				}
+			})
 		})
-	})
+	}
+	return funList;
 }
 //console.log(funList)
 
@@ -70,6 +73,8 @@ router.beforeEach((to, from, next) => {
 		if (store.state.person_data) {
 
 			if ((to.meta.form != null && to.meta.form) || (to.meta.mode != null && to.meta.mode)) {
+
+				let funList = getFunList();
 				//验证
 				if (funList.indexOf(to.name) > -1) {
 					next();

+ 3 - 3
src/projects/pension/router/master.js

@@ -33,9 +33,9 @@ const routesMaster = [
 			},
 			//主页长者模式
 			{
-				path: 'bigFontHome',
-				name: 'MasterBigFontHome',
-				component: () => import('../views/Master/BigFontHome.vue'),
+				path: 'homeBigFont',
+				name: 'MasterHomeBigFont',
+				component: () => import('../views/Master/HomeBigFont.vue'),
 				meta: {
 					requireAuth: false,
 					role: [],

+ 6 - 7
src/projects/pension/views/Common/Device/Add.vue

@@ -1,11 +1,11 @@
 <template>
-<div>
-    <header class="mui-bar mui-bar-nav">
+	<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 class="mui-content">
-			
+
 			<div class="mui-content-padded vongi-qingjiadt vongi-editme">
 				<form class="mui-input-group">
 					<div class="mui-input-row">
@@ -25,11 +25,11 @@
 			</div>
 			<div class="vongi-btn vongi-login-btn">
 				<button class="mui-btn mui-btn-pink">
-						 
-					</button>
+					保 存
+				</button>
 			</div>
 		</div>
-</div>
+	</div>
 </template>
 
 <script>
@@ -40,4 +40,3 @@
 <style src="$project/assets/css/iconfont.css"></style>
 <style>
 </style>
-

+ 90 - 27
src/projects/pension/views/Common/Device/List.vue

@@ -1,45 +1,108 @@
 <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 ref="common" @asynCallBack="asynCallBack"></common>
+		<top-header :pageTitle="pageTitle"></top-header>
+
 		<div class="mui-content vongi-qqhm vongi-sblist">
 			<ul class="mui-table-view">
-				<li class="mui-table-view-cell">
-					<a href="#" class="mui-radio">
-						<div class="mui-col-xs-10  mui-pull-left ">
-							<div class="mui-media-object mui-pull-left "><img src="~$project/assets/img/02.jpg" width="50" /></div>
-							<div class="mui-media-body">
-								<h3 class='mui-ellipsis'>父亲的智能手表</h3>
-								<p class='mui-ellipsis mui-h3'>JP01351704</p>
-							</div>
-						</div>
-						<input name="radio1" type="radio" checked>
-					</a>
-				</li>
-				<li class="mui-table-view-cell">
-					<a href="#" class="mui-radio">
+				<li v-for="(item,index) in watchList" class="mui-table-view-cell">
+					<a @click="defaultWatch(item.deviceNo)" class="mui-radio">
 						<div class="mui-col-xs-10  mui-pull-left ">
-							<div class="mui-media-object mui-pull-left "><img src="~$project/assets/img/02.jpg" width="50" /></div>
+							<div class="mui-media-object mui-pull-left "><img src="~$project/assets/img/icon_watch.png" width="50" /></div>
 							<div class="mui-media-body">
-								<h3 class='mui-ellipsis'>父亲的智能手表父亲的智能手表父亲的智能手表父亲的智能手表父亲的智能手表</h3>
-								<p class='mui-ellipsis mui-h3'>JP01351704</p>
+								<h3 class='mui-ellipsis' v-text="item.aliasName"></h3>
+								<p class='mui-ellipsis mui-h3' v-text="item.deviceNo"></p>
 							</div>
 						</div>
-						<input name="radio1" type="radio" checked>
+						<input name="radio1" type="radio" :checked="item.isDefault" readonly="readonly">
 					</a>
 				</li>
 			</ul>
-			
 		</div>
-		<div class="fyy-footer">
+		<!-- <div class="fyy-footer">
 			<div class="bindfyy-btn"><button type="submit" class="mui-btn mui-btn-pink ">关联新设备</button></div>
-		</div>
-</div>
+		</div> -->
+	</div>
 </template>
 
 <script>
+	import * as API_Device from '@/apis/Common/device'
+	import Common from '$project/components/Common.vue'
+	import Loading from '$project/components/Loading.vue'
+	import TopHeader from '$project/components/TopHeader.vue'
+	import NavMenu from '@/components/NavMenu.vue'
+	import {
+		mapGetters,
+		mapMutations
+	} from 'vuex'
+	export default {
+		name: 'CommonDeviceList',
+		components: {
+			Common,
+			Loading,
+			TopHeader,
+			NavMenu
+		},
+		data() {
+			return {
+				isLoading: false,
+
+				watchList: [],
+
+				pageTitle: '设备列表',
+			}
+		},
+		created() {},
+		methods: {
+			//获取手环列表
+			getWatchList() {
+				this.isLoading = true;
+				API_Device.getWatchList().then(response => {
+					this.isLoading = false;
+
+					this.watchList = response;
+				}).catch(error => {
+					this.isLoading = false;
+					mui.toast(error);
+				})
+			},
+			//切换默认手环
+			defaultWatch(deviceNo) {
+				this.isLoading = true;
+				API_Device.setDefaultWatch(deviceNo).then(response => {
+					this.isLoading = false;
+
+					this.getWatchList();
+					this.$router.push({
+						name: 'Master'
+					})
+				}).catch(error => {
+					this.isLoading = false;
+					mui.toast(error);
+				})
+			},
+
+			asynCallBack() {},
+		},
+		mounted() {
+			//获取手环列表
+			this.getWatchList();
+		},
+		destroyed() {
+
+		},
+		computed: {
+			...mapGetters({
+				openId: 'wx_openid',
+				token: 'token',
+				person_data: 'person_data',
+				person_popedom: 'person_popedom',
+				menu_list: 'menu_list',
+				common_menu_list: 'common_menu_list',
+				persion_home_model: 'persion_home_model'
+			})
+		}
+	}
 </script>
 
 <style scoped src="$project/assets/css/pension.css"></style>

+ 1 - 1
src/projects/pension/views/Master/AllFun.vue

@@ -9,7 +9,7 @@
 					<h4 v-text="iten.name"></h4>
 					<ul class="mui-table-view mui-grid-view mui-grid-9">
 						<li v-for="(item,index) in iten.list" :class="'mui-table-view-cell mui-media mui-col-xs-3 '+(item.iconRoute?'':'kfz')">
-							<router-link :to="{name:item.iconRoute}">
+							<router-link :to="{name:item.iconRoute,query:item.iconParam}">
 								<img :src="requirePic(item.iconPic)" />
 								<div class="mui-media-body" v-text="item.iconName"></div>
 							</router-link>

+ 0 - 79
src/projects/pension/views/Master/BigFontHome.vue

@@ -1,79 +0,0 @@
-<template>
-<div>
-    <div class="mui-content vongi-color vongi-ylindex">
-			<ul class="mui-table-view vongi-ylfuwu">
-				<li class="mui-table-view-cell mui-col-xs-6">
-					<div class="vongi-color-block block-green">
-						<div class="mui-h1 iconfont icon-weibiaoti--"></div>
-						<div class="mui-media-body">健康档案</div>
-					</div>
-				</li>
-				<li class="mui-table-view-cell mui-col-xs-6">
-					<div class="vongi-color-block block-blue">
-						<div class="mui-h1 iconfont icon-dingwei1"></div>
-						<div class="mui-media-body">行动轨迹</div>
-					</div>
-				</li>
-				<li class="mui-table-view-cell mui-col-xs-6">
-					<div class="vongi-color-block block-yellow">
-						<div class="mui-h1 iconfont icon-xin1"></div>
-						<div class="mui-media-body">养老服务</div>
-					</div>
-				</li>
-				<li class="mui-table-view-cell mui-col-xs-6">
-					<div class="vongi-color-block block-light">
-						<div class="mui-h1 iconfont icon-dianhua2"></div>
-						<div class="mui-media-body">亲情号码</div>
-					</div>
-				</li>
-				<li class="mui-table-view-cell mui-col-xs-6">
-					<div class="vongi-color-block block-blue">
-						<div class="mui-h1 iconfont icon-jiankong_o"></div>
-						<div class="mui-media-body">视频看护</div>
-					</div>
-				</li>
-				<li class="mui-table-view-cell mui-col-xs-6">
-					<div class="vongi-color-block block-violet">
-						<div class="mui-h1 iconfont icon-icon-"></div>
-						<div class="mui-media-body">我的二维码</div>
-					</div>
-				</li>
-				<li class="mui-table-view-cell mui-col-xs-6">
-					<div class="vongi-color-block block-pink">
-						<div class="mui-h1 iconfont icon-yao"></div>
-						<div class="mui-media-body">吃药提醒</div>
-					</div>
-				</li>
-				<li class="mui-table-view-cell mui-col-xs-6">
-					<div class="vongi-color-block block-greene">
-						<div class="mui-h1 iconfont icon-medical-treatment"></div>
-						<div class="mui-media-body">医疗记录</div>
-					</div>
-				</li>
-				
-				<li class="mui-table-view-cell mui-col-xs-6">
-					<div class="vongi-color-block block-yellowe">
-						<div class="mui-h1 iconfont icon-B"></div>
-						<div class="mui-media-body">切换身份</div>
-					</div>
-				</li>
-				<li class="mui-table-view-cell mui-col-xs-6">
-					<div class="vongi-color-block block-grew">
-						<div class="mui-h1 iconfont icon-tuichu2"></div>
-						<div class="mui-media-body">退出长者模式</div>
-					</div>
-				</li>
-			</ul>
-		</div>
-</div>
-</template>
-
-<script>
-</script>
-
-<style scoped src="$project/assets/css/pension.css"></style>
-<style scoped src="$project/assets/css/xpwyfyy.css"></style>
-<style src="$project/assets/css/iconfont.css"></style>
-<style>
-</style>
-

+ 90 - 26
src/projects/pension/views/Master/ExchangeRole.vue

@@ -1,45 +1,109 @@
 <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 class="mui-content vongi-qqhm vongi-ylqhsf">
+	<div>
+		<common ref="common" @asynCallBack="asynCallBack"></common>
+		<top-header :pageTitle="pageTitle"></top-header>
+
+		<div class="mui-content vongi-qqhm vongi-fklist vongi-ylqhsf">
 			<ul class="mui-table-view openfyy-list ">
-				<li class="mui-table-view-cell">
-					<a href="#" class="mui-radio">
-						<div class="mui-col-xs-10  mui-pull-left">
-							<div class="mui-media-object mui-pull-left "><img src="~$project/assets/img/02.jpg" width="50" /></div>
-							<div class="mui-media-body">
-								<h1 class='mui-ellipsis'>赵大宝</h1>
-								<p class='mui-ellipsis mui-h3'>长者  居家养老</p>
-							</div>
-						</div>
-						<input name="radio1" type="radio" checked>
-					</a>
-				</li>
-				<li class="mui-table-view-cell">
-					<a href="#" class="mui-radio">
-						<div class="mui-col-xs-10  mui-pull-left">
+				<li v-for="(item,index) in roleList" class="mui-table-view-cell">
+					<a @click="switchRole(item.id)" class="mui-radio">
+						<div class="mui-col-xs-10  mui-pull-left flew-items">
 							<div class="mui-media-object mui-pull-left "><img src="~$project/assets/img/02.jpg" width="50" /></div>
 							<div class="mui-media-body">
-								<h1 class='mui-ellipsis'>父亲的智能手表</h1>
-								<p class='mui-ellipsis mui-h3'>JP01351704</p>
+								<h1 v-text="item.companyName"></h1>
+								<p class='mui-ellipsis mui-h3' v-text="item.personRoleName"></p>
 							</div>
 						</div>
 						<input name="radio1" type="radio" checked>
 					</a>
 				</li>
-			</ul>	
+			</ul>
 		</div>
-</div>
+	</div>
 </template>
 
 <script>
+	import * as API_User from '$project/apis/user'
+	import Common from '$project/components/Common.vue'
+	import Loading from '$project/components/Loading.vue'
+	import TopHeader from '$project/components/TopHeader.vue'
+	import NavMenu from '@/components/NavMenu.vue'
+	import {
+		mapGetters,
+		mapMutations
+	} from 'vuex'
+	export default {
+		name: 'MasterExchangeRole',
+		components: {
+			Common,
+			Loading,
+			TopHeader,
+			NavMenu
+		},
+		data() {
+			return {
+				isLoading: false,
+
+				roleList: [],
+
+				pageTitle: '切换身份',
+			}
+		},
+		created() {},
+		methods: {
+			//获取用户角色列表
+			getRoleList() {
+				this.isLoading = true;
+				API_User.getRoleList().then(response => {
+					this.isLoading = false;
+
+					this.roleList = response.list;
+				}).catch(error => {
+					this.isLoading = false;
+					mui.toast(error);
+				})
+			},
+			//切换角色
+			switchRole(id) {
+				this.isLoading = true;
+				API_User.exchangePopedom({
+					id: id
+				}).then(response => {
+					this.isLoading = false;
+
+					this.$refs.common.getDataByOpenId();
+				}).catch(error => {
+					this.isLoading = false;
+					mui.toast(error);
+				})
+			},
+
+			asynCallBack() {
+				//获取用户角色列表
+				this.getRoleList();
+
+			},
+		},
+		mounted() {},
+		destroyed() {
+
+		},
+		computed: {
+			...mapGetters({
+				openId: 'wx_openid',
+				token: 'token',
+				person_data: 'person_data',
+				person_popedom: 'person_popedom',
+				menu_list: 'menu_list',
+				common_menu_list: 'common_menu_list',
+				persion_home_model: 'persion_home_model'
+			})
+		}
+	}
 </script>
 
 <style scoped src="$project/assets/css/pension.css"></style>
 <style scoped src="$project/assets/css/xpwyfyy.css"></style>
 <style src="$project/assets/css/iconfont.css"></style>
 <style>
-</style>
+</style>

+ 106 - 13
src/projects/pension/views/Master/Health/Archives.vue

@@ -1,68 +1,161 @@
 <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 ref="common" @asynCallBack="asynCallBack"></common>
+		<top-header :pageTitle="pageTitle"></top-header>
+
 		<div class="mui-content vongi-color">
 			<ul class="mui-table-view">
 				<li class="mui-table-view-cell mui-col-xs-4">
 					<div class="vongi-color-block block-yellow">
 						<span class="vongi-color-unit">mmHg</span>
-						<div class="mui-h1">140/78</div>
+						<div class="mui-h1" v-text="healthData.diastolic+'/'+healthData.systolic"></div>
 						<div class="mui-media-body">血压</div>
 					</div>
 				</li>
 				<li class="mui-table-view-cell mui-col-xs-8">
 					<div class="vongi-color-block block-red">
 						<span class="vongi-color-unit">次/分</span>
-						<div class="mui-h1">94</div>
+						<div class="mui-h1" v-text="healthData.heart"></div>
 						<div class="mui-media-body">心率</div>
 					</div>
 				</li>
 				<li class="mui-table-view-cell mui-col-xs-4">
 					<div class="vongi-color-block block-green">
 						<span class="vongi-color-unit">浓度</span>
-						<div class="mui-h1">98</div>
+						<div class="mui-h1" v-text="healthData.oxygen"></div>
 						<div class="mui-media-body">血氧</div>
 					</div>
 				</li>
 				<li class="mui-table-view-cell mui-col-xs-8">
 					<div class="vongi-color-block block-green">
 						<span class="vongi-color-unit">摄氏度</span>
-						<div class="mui-h1">36.3℃</div>
+						<div class="mui-h1">{{healthData.temperature}}℃</div>
 						<div class="mui-media-body">体温</div>
 					</div>
 				</li>
 				<li class="mui-table-view-cell mui-col-xs-4">
 					<div class="vongi-color-block block-blue">
 						<span class="vongi-color-unit"></span>
-						<div class="mui-h1">68%</div>
+						<div class="mui-h1">{{healthData.power}}%</div>
 						<div class="mui-media-body">电量</div>
 					</div>
 				</li>
 				<li class="mui-table-view-cell mui-col-xs-8">
 					<div class="vongi-color-block block-yellowe">
 						<span class="vongi-color-unit"></span>
-						<div class="mui-h1"></div>
+						<div class="mui-h1" v-text="healthData.step"></div>
 						<div class="mui-media-body">运动</div>
 					</div>
 				</li>
 				<li class="mui-table-view-cell mui-col-xs-12">
 					<div class="vongi-color-block block-green">
 						<span class="vongi-color-unit"></span>
-						<div class="mui-h1">湖北省荆州市沙市</div>
+						<div class="mui-h1" v-text="address"></div>
 						<div class="mui-media-body">定位</div>
 					</div>
 				</li>
 			</ul>
 		</div>
-</div>
+	</div>
 </template>
 
 <script>
+	import * as API_Health from '@/apis/Master/health'
+	import Common from '$project/components/Common.vue'
+	import Loading from '$project/components/Loading.vue'
+	import TopHeader from '$project/components/TopHeader.vue'
+	import NavMenu from '@/components/NavMenu.vue'
+	import {
+		mapGetters,
+		mapMutations
+	} from 'vuex'
+	import MapLoader from '$project/utils/AMap'
+	export default {
+		name: 'MasterHealthArchives',
+		components: {
+			Common,
+			Loading,
+			TopHeader,
+			NavMenu
+		},
+		data() {
+			return {
+				isLoading: false,
+
+				pageTitle: '健康档案',
+
+				healthData: [],
+
+				address: '……',
+			}
+		},
+		created() {},
+		methods: {
+			//获取手环数据
+			getHeathData() {
+				this.isLoading = true;
+				API_Health.getHeathData().then(response => {
+					this.isLoading = false;
+
+					this.healthData = response;
+					if (response.lbs) {
+						let lbsArr = response.lbs.split(',');
+						//获取定位地址
+						this.getPositionByLonLats(lbsArr[0], lbsArr[1]);
+					}
+				}).catch(error => {
+					this.isLoading = false;
+					mui.toast(error);
+				})
+			},
+			//获取定位地址
+			getPositionByLonLats(longitude, latitude) {
+				var _this = this;
+				MapLoader().then(AMap => {
+					var lnglatXY = [longitude, latitude];
+					AMap.service('AMap.Geocoder', function() {
+						let geocoder = new AMap.Geocoder({});
+						geocoder.getAddress(lnglatXY, function(status, result) {
+							console.log(lnglatXY);
+							console.log(status, result);
+							if (status === 'complete' && result.info === 'OK') {
+								var address = result.regeocode.formattedAddress;
+								console.log(address);
+								_this.address = address;
+							} else {
+								_this.address = '无法获取定位';
+							}
+						});
+					});
+				}).catch(error => {
+					console.log(error)
+				})
+			},
+
+			asynCallBack() {},
+		},
+		mounted() {
+			//获取手环数据
+			this.getHeathData();
+		},
+		destroyed() {
+
+		},
+		computed: {
+			...mapGetters({
+				openId: 'wx_openid',
+				token: 'token',
+				person_data: 'person_data',
+				person_popedom: 'person_popedom',
+				menu_list: 'menu_list',
+				common_menu_list: 'common_menu_list',
+				persion_home_model: 'persion_home_model'
+			})
+		}
+	}
 </script>
 
+
 <style scoped src="$project/assets/css/pension.css"></style>
 <style scoped src="$project/assets/css/xpwyfyy.css"></style>
 <style src="$project/assets/css/iconfont.css"></style>

+ 22 - 2
src/projects/pension/views/Master/Home.vue

@@ -47,7 +47,7 @@
 				</div>
 				<ul class="mui-table-view mui-grid-view mui-grid-9">
 					<li v-for="(item,index) in menu_list" :class="'mui-table-view-cell mui-media mui-col-xs-3 '+(item.iconRoute?'':'kfz')">
-						<router-link :to="{name:item.iconRoute}">
+						<router-link :to="{name:item.iconRoute,query:item.iconParam}">
 							<img :src="requirePic(item.iconPic)" />
 							<div class="mui-media-body" v-text="item.iconName"></div>
 						</router-link>
@@ -163,6 +163,7 @@
 		mapGetters,
 		mapMutations
 	} from 'vuex'
+	import * as types from '$project/store/mutation-types'
 	export default {
 		name: 'Master',
 		components: {
@@ -198,9 +199,10 @@
 			selectRole() {
 				var roleList = [];
 				for (var i = 0; i < this.roleList.length; i++) {
+					var preName = this.person_popedom.personRoleName == this.roleList[i]['personRoleName'] ? '(当前)' : '';
 					roleList.push({
 						value: this.roleList[i]['id'],
-						text: this.roleList[i]['companyName'] + ' ' + this.roleList[i]['personRoleName'],
+						text: preName + this.roleList[i]['companyName'] + ' ' + this.roleList[i]['personRoleName'],
 					})
 				}
 				var _this = this;
@@ -255,6 +257,17 @@
 			requirePic(file) {
 				return require('$project/assets/img/' + file);
 			},
+			//设置判断首页模式
+			setHomeModel() {
+				if (!this.persion_home_model) {
+					this.set_persion_home_model('normal');
+				}
+				if (this.persion_home_model != 'normal') {
+					this.$router.push({
+						name: 'MasterHomeBigFont'
+					})
+				}
+			},
 			asynCallBack() {
 				//获取用户角色列表
 				this.getRoleList();
@@ -262,8 +275,14 @@
 				this.prefetchNotice();
 
 			},
+			...mapMutations({
+				set_persion_home_model: types.SET_PERSION_HOME_MODEL,
+			})
 		},
 		mounted() {
+			//设置判断首页模式
+			this.setHomeModel();
+
 			var gallery = mui('.mui-slider');
 			var slider = gallery.slider({
 				interval: 2000, //自动轮播周期,若为0则不自动播放,默认为0;
@@ -291,6 +310,7 @@
 				person_popedom: 'person_popedom',
 				menu_list: 'menu_list',
 				common_menu_list: 'common_menu_list',
+				persion_home_model: 'persion_home_model'
 			})
 		}
 	}

+ 162 - 0
src/projects/pension/views/Master/HomeBigFont.vue

@@ -0,0 +1,162 @@
+<template>
+	<div>
+		<div class="mui-content vongi-color vongi-ylindex">
+			<ul class="mui-table-view vongi-ylfuwu">
+				<li class="mui-table-view-cell mui-col-xs-6">
+					<div class="vongi-color-block block-green">
+						<router-link :to="{name:'MasterHealthArchives'}">
+							<div class="mui-h1 iconfont icon-weibiaoti--"></div>
+							<div class="mui-media-body">健康档案</div>
+						</router-link>
+					</div>
+				</li>
+				<li class="mui-table-view-cell mui-col-xs-6 kfz">
+					<div class="vongi-color-block block-blue">
+						<a>
+							<div class="mui-h1 iconfont icon-dingwei1"></div>
+							<div class="mui-media-body">行动轨迹</div>
+						</a>
+					</div>
+				</li>
+				<li class="mui-table-view-cell mui-col-xs-6 kfz">
+					<div class="vongi-color-block block-yellow">
+						<a>
+							<div class="mui-h1 iconfont icon-xin1"></div>
+							<div class="mui-media-body">养老服务</div>
+						</a>
+					</div>
+				</li>
+				<li class="mui-table-view-cell mui-col-xs-6 kfz">
+					<div class="vongi-color-block block-light">
+						<a>
+							<div class="mui-h1 iconfont icon-dianhua2"></div>
+							<div class="mui-media-body">亲情号码</div>
+						</a>
+					</div>
+				</li>
+				<li class="mui-table-view-cell mui-col-xs-6 kfz">
+					<div class="vongi-color-block block-blue">
+						<a>
+							<div class="mui-h1 iconfont icon-jiankong_o"></div>
+							<div class="mui-media-body">视频看护</div>
+						</a>
+					</div>
+				</li>
+				<li class="mui-table-view-cell mui-col-xs-6 kfz">
+					<div class="vongi-color-block block-violet">
+						<a>
+							<div class="mui-h1 iconfont icon-icon-"></div>
+							<div class="mui-media-body">我的二维码</div>
+						</a>
+					</div>
+				</li>
+				<li class="mui-table-view-cell mui-col-xs-6 kfz">
+					<div class="vongi-color-block block-pink">
+						<a>
+							<div class="mui-h1 iconfont icon-yao"></div>
+							<div class="mui-media-body">吃药提醒</div>
+						</a>
+					</div>
+				</li>
+				<li class="mui-table-view-cell mui-col-xs-6 kfz">
+					<div class="vongi-color-block block-greene">
+						<a>
+							<div class="mui-h1 iconfont icon-medical-treatment"></div>
+							<div class="mui-media-body">医疗记录</div>
+						</a>
+					</div>
+				</li>
+
+				<li class="mui-table-view-cell mui-col-xs-6">
+					<div class="vongi-color-block block-yellowe">
+						<router-link :to="{name:'MasterExchangeRole'}">
+							<div class="mui-h1 iconfont icon-B"></div>
+							<div class="mui-media-body">切换身份</div>
+						</router-link>
+					</div>
+				</li>
+				<li class="mui-table-view-cell mui-col-xs-6">
+					<div class="vongi-color-block block-grew">
+						<a @click="outModel">
+							<div class="mui-h1 iconfont icon-tuichu2"></div>
+							<div class="mui-media-body">退出长者模式</div>
+						</a>
+					</div>
+				</li>
+			</ul>
+		</div>
+	</div>
+</template>
+
+<script>
+	require('$project/assets/js/mui.picker.min.js');
+	import Common from '$project/components/Common.vue'
+	import Loading from '$project/components/Loading.vue'
+	import TopHeader from '$project/components/TopHeader.vue'
+	import NavMenu from '@/components/NavMenu.vue'
+	import {
+		mapGetters,
+		mapMutations
+	} from 'vuex'
+	import * as types from '$project/store/mutation-types'
+	export default {
+		name: 'MasterHomeBigFont',
+		components: {
+			Common,
+			Loading,
+			TopHeader,
+			NavMenu
+		},
+		data() {
+			return {
+				isLoading: false,
+			}
+		},
+		created() {},
+		methods: {
+			//退出当前模式
+			outModel() {
+				this.set_persion_home_model('normal');
+				this.$router.push({
+					name: 'Master'
+				})
+			},
+			asynCallBack() {
+
+			},
+			...mapMutations({
+				set_persion_home_model: types.SET_PERSION_HOME_MODEL,
+			})
+		},
+		mounted() {
+			var gallery = mui('.mui-slider');
+			var slider = gallery.slider({
+				interval: 2000, //自动轮播周期,若为0则不自动播放,默认为0;
+				bounce: true //是否启用回弹
+			});
+		},
+		destroyed() {
+
+		},
+		computed: {
+			...mapGetters({
+				openId: 'wx_openid',
+				token: 'token',
+				person_data: 'person_data',
+				person_popedom: 'person_popedom',
+				menu_list: 'menu_list',
+				common_menu_list: 'common_menu_list',
+				persion_home_model: 'persion_home_model'
+			})
+		}
+	}
+</script>
+
+<style scoped src="$project/assets/css/pension.css"></style>
+<style scoped src="$project/assets/css/xpwyfyy.css"></style>
+<style src="$project/assets/css/iconfont.css"></style>
+<style scoped>
+	.vongi-ylfuwu a {
+		color: #fff;
+	}
+</style>

+ 19 - 2
src/projects/pension/views/Master/Mine/Center.vue

@@ -41,10 +41,15 @@
 				</ul>
 				<ul class="mui-table-view mui-table-view-chevron vongi-news">
 					<li class="mui-table-view-cell">
-						<router-link :to="{name:'MasterMineFeedback'}" class="mui-navigate-right">
+						<a @click="exchangeModel" class="mui-navigate-right">
 							<img src="~$project/assets/img/change.png" width="18" /> 切换为长者模式
-						</router-link>
+						</a>
 					</li>
+					<!-- <li class="mui-table-view-cell">
+						<router-link :to="{name:'MasterMineFeedback'}" class="mui-navigate-right">
+							<img src="~$project/assets/img/set.png" width="18" /> 问题反馈
+						</router-link>
+					</li> -->
 					<li class="mui-table-view-cell">
 						<a href="tel:4008899619" class="">
 							<img src="~$project/assets/img/cicon33.png" width="18" /> 客服热线
@@ -71,6 +76,7 @@
 		mapGetters,
 		mapMutations
 	} from "vuex";
+	import * as types from '$project/store/mutation-types'
 	export default {
 		name: "MasterMineCenter",
 		components: {
@@ -100,7 +106,17 @@
 					query: {},
 				});
 			},
+			//切换长者模式
+			exchangeModel() {
+				this.set_persion_home_model('big');
+				this.$router.push({
+					name: "MasterHomeBigFont"
+				});
+			},
 			asynCallBack() {},
+			...mapMutations({
+				set_persion_home_model: types.SET_PERSION_HOME_MODEL,
+			})
 		},
 		mounted() {},
 		destroyed() {},
@@ -138,6 +154,7 @@
 				token: "token",
 				person_data: "person_data",
 				person_popedom: "person_popedom",
+				persion_home_model: 'persion_home_model'
 			}),
 		},
 	};

+ 3 - 1
src/store/getters.js

@@ -18,4 +18,6 @@ export const register_form_data = state => state.register_form_data
 
 export const app_version = state => state.app_version
 
-export const common_menu_list = state => state.common_menu_list
+export const common_menu_list = state => state.common_menu_list
+
+export const persion_home_model = state => state.persion_home_model

+ 2 - 1
src/store/mutation-types.js

@@ -9,4 +9,5 @@ export const SET_PERSON_TEMP = 'SET_PERSON_TEMP'
 export const SET_FUN_LIST = 'SET_FUN_LIST'
 export const SET_REGISTER_FORM_DATA = 'SET_REGISTER_FORM_DATA'
 export const SET_APP_VERSION = 'SET_APP_VERSION'
-export const SET_COMMON_MENU_LIST = 'SET_COMMON_MENU_LIST'
+export const SET_COMMON_MENU_LIST = 'SET_COMMON_MENU_LIST'
+export const SET_PERSION_HOME_MODEL = 'SET_PERSION_HOME_MODEL'

+ 8 - 2
src/store/mutations.js

@@ -9,7 +9,8 @@ import {
 	setPersonTemp,
 	setFunList,
 	setRegisterFormData,
-	setAppVersion
+	setAppVersion,
+	setPersionHomeModel
 } from '../utils/storage'
 
 var storage_prefix = process.env.VUE_APP_LOCAL_STORAGE_PREFIX;
@@ -49,7 +50,7 @@ const mutations = {
 		setMenuList(storage_prefix, data)
 		state.menu_list = data
 	},
-	
+
 	[types.SET_COMMON_MENU_LIST](state, data) {
 		setCommonMenuList(storage_prefix, data)
 		state.common_menu_list = data
@@ -74,6 +75,11 @@ const mutations = {
 		setAppVersion(storage_prefix, data)
 		state.app_version = data
 	},
+
+	[types.SET_PERSION_HOME_MODEL](state, data) {
+		setPersionHomeModel(storage_prefix, data)
+		state.persion_home_model = data
+	},
 }
 
 export default mutations

+ 3 - 1
src/store/state.js

@@ -8,7 +8,8 @@ import {
 	getPersonTemp,
 	getFunList,
 	getRegisterFormData,
-	getAppVersion
+	getAppVersion,
+	getPersionHomeModel
 } from '../utils/storage'
 
 var storage_prefix = process.env.VUE_APP_LOCAL_STORAGE_PREFIX;
@@ -27,6 +28,7 @@ const state = {
 	fun_list: getFunList(storage_prefix),
 	register_form_data: getRegisterFormData(storage_prefix),
 	app_version: getAppVersion(storage_prefix),
+	persion_home_model: getPersionHomeModel(storage_prefix),
 }
 
 export default state

+ 5 - 1
src/utils/storage.js

@@ -88,4 +88,8 @@ export const getRegisterFormData = (channel) => get(channel + '_register_form_da
 
 export const setAppVersion = (channel, data) => set(channel + '_app_vesion', data)
 
-export const getAppVersion = (channel) => get(channel + '_app_vesion')
+export const getAppVersion = (channel) => get(channel + '_app_vesion')
+
+export const setPersionHomeModel = (channel, data) => set(channel + '_persion_home_model', data)
+
+export const getPersionHomeModel = (channel) => get(channel + '_persion_home_model')