Browse Source

页面示范

wgl 4 years ago
parent
commit
b2c41d6ed9

+ 1 - 1
.env.development

@@ -2,7 +2,7 @@ NODE_ENV=devlopment
 VUE_APP_NODE_NAME=devlopment
 OUT_PUT_NAME=dev
 VUE_APP_LOCAL_STORAGE_PREFIX=dev
-VUE_APP_BACKEND_URL=http://wisdomhouse.sudaonline.net/
+VUE_APP_BACKEND_URL=https://ykt-test.xiaoxinda.com/jp-housekeeper-server/
 #小鹏管家微信appid
 VUE_APP_WXAPPID=wx7e70eb62a8459869
 VUE_APP_AUTH=

+ 20 - 0
src/apis/weixin.js

@@ -0,0 +1,20 @@
+import request from '$project/utils/request'
+import Qs from 'qs';
+
+//根据code换取openid
+export function getDataByCode(code) {
+	return request({
+		url: '/wechat/findUserInfo/' + code,
+		params: {},
+		method: 'get',
+	})
+}
+
+//获取用户信息
+export function getDataByOpenId(params) {
+	return request({
+		url: '/mobile/personInfoApi/findByOpenId',
+		data: Qs.stringify(params),
+		method: 'post',
+	})
+}

+ 2 - 2
src/assets/css/mui.min.css

@@ -843,14 +843,14 @@ p {
 	width: 100%;
 	height: 100%;
 	content: '';
-	background-image: url("data:image/svg+xml;charset=utf-8,<svg viewBox=\'0 0 120 120\' xmlns=\'http://www.w3.org/2000/svg\' xmlns:xlink=\'http://www.w3.org/1999/xlink\'><defs><line id=\'l\' x1=\'60\' x2=\'60\' y1=\'7\' y2=\'27\' stroke=\'%236c6c6c\' stroke-width=\'11\' stroke-linecap=\'round\'/></defs><g><use xlink:href=\'%23l\' opacity=\'.27\'/><use xlink:href=\'%23l\' opacity=\'.27\' transform=\'rotate(30 60,60)\'/><use xlink:href=\'%23l\' opacity=\'.27\' transform=\'rotate(60 60,60)\'/><use xlink:href=\'%23l\' opacity=\'.27\' transform=\'rotate(90 60,60)\'/><use xlink:href=\'%23l\' opacity=\'.27\' transform=\'rotate(120 60,60)\'/><use xlink:href=\'%23l\' opacity=\'.27\' transform=\'rotate(150 60,60)\'/><use xlink:href=\'%23l\' opacity=\'.37\' transform=\'rotate(180 60,60)\'/><use xlink:href=\'%23l\' opacity=\'.46\' transform=\'rotate(210 60,60)\'/><use xlink:href=\'%23l\' opacity=\'.56\' transform=\'rotate(240 60,60)\'/><use xlink:href=\'%23l\' opacity=\'.66\' transform=\'rotate(270 60,60)\'/><use xlink:href=\'%23l\' opacity=\'.75\' transform=\'rotate(300 60,60)\'/><use xlink:href=\'%23l\' opacity=\'.85\' transform=\'rotate(330 60,60)\'/></g></svg>");
+	background-image: url("data:image/svg+xml;charset=utf-8,<svg viewBox='0 0 120 120' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'><defs><line id='l' x1='60' x2='60' y1='7' y2='27' stroke='%236c6c6c' stroke-width='11' stroke-linecap='round'/></defs><g><use xlink:href='%23l' opacity='.27'/><use xlink:href='%23l' opacity='.27' transform='rotate(30 60,60)'/><use xlink:href='%23l' opacity='.27' transform='rotate(60 60,60)'/><use xlink:href='%23l' opacity='.27' transform='rotate(90 60,60)'/><use xlink:href='%23l' opacity='.27' transform='rotate(120 60,60)'/><use xlink:href='%23l' opacity='.27' transform='rotate(150 60,60)'/><use xlink:href='%23l' opacity='.37' transform='rotate(180 60,60)'/><use xlink:href='%23l' opacity='.46' transform='rotate(210 60,60)'/><use xlink:href='%23l' opacity='.56' transform='rotate(240 60,60)'/><use xlink:href='%23l' opacity='.66' transform='rotate(270 60,60)'/><use xlink:href='%23l' opacity='.75' transform='rotate(300 60,60)'/><use xlink:href='%23l' opacity='.85' transform='rotate(330 60,60)'/></g></svg>");
 	background-repeat: no-repeat;
 	background-position: 50%;
 	background-size: 100%
 }
 
 .mui-spinner-white:after {
-	background-image: url("data:image/svg+xml;charset=utf-8,<svg viewBox=\'0 0 120 120\' xmlns=\'http://www.w3.org/2000/svg\' xmlns:xlink=\'http://www.w3.org/1999/xlink\'><defs><line id=\'l\' x1=\'60\' x2=\'60\' y1=\'7\' y2=\'27\' stroke=\'%23fff\' stroke-width=\'11\' stroke-linecap=\'round\'/></defs><g><use xlink:href=\'%23l\' opacity=\'.27\'/><use xlink:href=\'%23l\' opacity=\'.27\' transform=\'rotate(30 60,60)\'/><use xlink:href=\'%23l\' opacity=\'.27\' transform=\'rotate(60 60,60)\'/><use xlink:href=\'%23l\' opacity=\'.27\' transform=\'rotate(90 60,60)\'/><use xlink:href=\'%23l\' opacity=\'.27\' transform=\'rotate(120 60,60)\'/><use xlink:href=\'%23l\' opacity=\'.27\' transform=\'rotate(150 60,60)\'/><use xlink:href=\'%23l\' opacity=\'.37\' transform=\'rotate(180 60,60)\'/><use xlink:href=\'%23l\' opacity=\'.46\' transform=\'rotate(210 60,60)\'/><use xlink:href=\'%23l\' opacity=\'.56\' transform=\'rotate(240 60,60)\'/><use xlink:href=\'%23l\' opacity=\'.66\' transform=\'rotate(270 60,60)\'/><use xlink:href=\'%23l\' opacity=\'.75\' transform=\'rotate(300 60,60)\'/><use xlink:href=\'%23l\' opacity=\'.85\' transform=\'rotate(330 60,60)\'/></g></svg>")
+	background-image: url("data:image/svg+xml;charset=utf-8,<svg viewBox='0 0 120 120' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'><defs><line id='l' x1='60' x2='60' y1='7' y2='27' stroke='%23fff' stroke-width='11' stroke-linecap='round'/></defs><g><use xlink:href='%23l' opacity='.27'/><use xlink:href='%23l' opacity='.27' transform='rotate(30 60,60)'/><use xlink:href='%23l' opacity='.27' transform='rotate(60 60,60)'/><use xlink:href='%23l' opacity='.27' transform='rotate(90 60,60)'/><use xlink:href='%23l' opacity='.27' transform='rotate(120 60,60)'/><use xlink:href='%23l' opacity='.27' transform='rotate(150 60,60)'/><use xlink:href='%23l' opacity='.37' transform='rotate(180 60,60)'/><use xlink:href='%23l' opacity='.46' transform='rotate(210 60,60)'/><use xlink:href='%23l' opacity='.56' transform='rotate(240 60,60)'/><use xlink:href='%23l' opacity='.66' transform='rotate(270 60,60)'/><use xlink:href='%23l' opacity='.75' transform='rotate(300 60,60)'/><use xlink:href='%23l' opacity='.85' transform='rotate(330 60,60)'/></g></svg>")
 }
 
 @-webkit-keyframes spinner-spin {

+ 22 - 232
src/components/Common.vue

@@ -8,24 +8,17 @@
 	 * 三端首页必须先进,公共页面的common组件不要写role,三端专属页面一定要写相应的role
 	 * =============================================================================
 	 */
-	import * as API_WeiXin from '@/apis/weixin'
-	import * as API_Student from '@/apis/student'
-	import * as API_Teacher from '@/apis/teacher'
-	import * as API_Control from '@/apis/control'
-	import * as API_Control_Business from '@/apis/controlBusiness'
-	import * as API_Common from '@/apis/common'
-	import {
-		weixinAppId,
-	} from '@/config'
+	import * as API_WeiXin from '$project/apis/weixin'
 	import {
 		getUrlParam,
-		getWeixinRedirectURI
-	} from '@/utils'
+		getWeixinRedirectURI,
+		isWeiXin
+	} from '$project/utils'
 	import {
 		mapGetters,
 		mapMutations
 	} from 'vuex'
-	import * as types from '@/store/mutation-types'
+	import * as types from '$project/store/mutation-types'
 	export default {
 		name: 'Common',
 		components: {},
@@ -42,13 +35,11 @@
 			}
 		},
 		data() {
-			return {
-				//isLoading: true,
-			}
+			return {}
 		},
 		created() {
 			//公共组件的执行方法放在created中执行,父组件的create放在motuned中执行
-			if (global.IS_WEIXIN) {
+			if (isWeiXin()) {
 				if (this.checkOpenId) {
 					if (!this.openId) {
 						this.getOpenid();
@@ -58,10 +49,9 @@
 				}
 			} else {
 				if (this.checkOpenId) {
-					this.mui.alert('请使用微信浏览打开!', '提示', function() {
+					mui.alert('请使用微信浏览打开!', '提示', function() {
 						//info.innerText = '你刚关闭了警告框';
 					});
-					//this.mui.toast('请使用微信浏览打开');
 				}
 			}
 		},
@@ -70,7 +60,7 @@
 			getOpenid() {
 				const code = getUrlParam('code');
 				if (!code) {
-					window.location.href = getWeixinRedirectURI(weixinAppId, document.URL);
+					window.location.href = getWeixinRedirectURI(process.env.VUE_APP_WXAPPID, document.URL);
 				} else {
 					console.log(code);
 
@@ -105,248 +95,48 @@
 			},
 			//角色判定调用不同的信息获取详情
 			getDataByOpenId() {
-				if (this.role == 'student') {
-					this.set_now_role('student');
-					this.getStudentByOpenId();
-				} else if (this.role == 'teacher') {
-					this.set_now_role('teacher');
-					this.getTeacherByOpenId();
-				} else if (this.role == 'control') {
-					this.set_now_role('control');
-					this.getControlByOpenId();
-				} else if (this.role == 'control_merchant') {
-					this.set_now_role('control_merchant');
-					this.getControlBusinessByOpenId();
-				} else {
-					//this.mui.toast('角色不存在');
-					//异步回调父组件的方法-无角色的时候仍要操作保证获取到了openid
-					this.asynCallBack();
-				}
-			},
-			//获取学生用户详情,初始用户没有这些信息会在添加学生信息成功时返回
-			getStudentByOpenId(type) {
-				var type = type || '';
-				API_Student.getDataByOpenId(this.openId).then(response => {
-					//console.log(response)
-
-					var token = response ? response.token : '';
-					//if (response.token !== undefined) {
-					this.set_token(token);
-					//}
-					//如果有当前用户则去获取未读系统消息数
-					if (type != 'scene') {
-						if (token) {
-							this.getSystemMessageNum();
-						} else {
-							//异步回调父组件的方法
-							this.asynCallBack();
-						}
-					}
-
-
-					var personInfo = response ? response.personInfo : '';
-					//if (response.personInfo !== undefined) {
-					this.set_student_person_data(personInfo);
-					//}
-
-					var parentId = response ? response.parentId : '';
-					//if (response.parentId !== undefined) {
-					this.set_student_parent_id(parentId);
-					//}
-
-					var currentInfo = response ? response.currentInfo : '';
-					//if (response.currentInfo !== undefined) {
-					this.set_student_current_info(currentInfo);
-					//}
-
-					if (type == 'scene') {
-						this.$emit('callBack');
-					}
-
-				}).catch(error => {
-					this.mui.toast(error);
-				})
+				this.getUserInfoByOpenId();
 			},
-			//获取老师用户详情,
-			getTeacherByOpenId(type) {
+			//获取用户详情
+			getUserInfoByOpenId() {
 				var type = type || '';
-				API_Teacher.getDataByOpenId(this.openId).then(response => {
+				API_WeiXin.getDataByOpenId(this.openId).then(response => {
 					//console.log(response)
 
 					var token = response ? response.token : '';
-					//if (response.token !== undefined) {
 					this.set_token(token);
-					//}
-					//如果有当前用户则去获取未读系统消息数
-					if (type != 'scene') {
-						if (token) {
-							this.getSystemMessageNum();
-						} else {
-							//异步回调父组件的方法
-							this.asynCallBack();
-						}
-					}
 
 					var person = response ? response.person : '';
-					//if (response.person !== undefined) {
-					this.set_teacher_person_data(person);
-					//}
+					this.set_person_data(person);
 
 					var company = response ? response.company : '';
-					//if (response.company !== undefined) {
-					this.set_teacher_company_data(company);
-					//}
-
-					var role = response ? response.identityList : [];
-					this.set_teacher_role(role);
-					//如果有一个角色,则设置默认当前角色
-					if (role.length == 1) {
-						this.set_now_teacher_role(role[0]);
-					}
-
-					if (type == 'scene') {
-						this.$emit('callBack');
-					}
-
-				}).catch(error => {
-					this.mui.toast(error);
-				})
-			},
-			//获取监管端用户详情,
-			getControlByOpenId() {
-				API_Control.getDataByOpenId(this.openId).then(response => {
-					//console.log(response)
-
-					var token = response ? response.token : '';
-					this.set_token(token);
-
-
-					//类型1学校2商户
-					var type = response ? response.type : '';
-					this.set_control_type_data(type);
+					this.set_company_data(company);
 
-
-					//如果有当前用户则去获取未读系统消息数
-					if (token) {
-						if (type == '1') {
-							this.getSystemMessageNum();
-						} else {
-							//异步回调父组件的方法
-							this.asynCallBack();
-						}
-					} else {
-						//异步回调父组件的方法
-						this.asynCallBack();
-					}
-
-
-
-					var person = response ? (response.hasOwnProperty('person') ? response.person : '') : '';
-					this.set_control_person_data(person);
-
-					var company = response ? (response.hasOwnProperty('company') ? response.company : '') : '';
-					this.set_control_company_data(company);
-
-					var merchant = response ? (response.hasOwnProperty('merchant') ? response.merchant : '') : '';
-					this.set_control_merchant_data(merchant);
-
-				}).catch(error => {
-					this.mui.toast(error);
-				})
-			},
-			//获取监管端商户详情,
-			getControlBusinessByOpenId() {
-				API_Control_Business.getDataByOpenId(this.openId).then(response => {
-					//console.log(response)
-
-					var token = response ? response.token : '';
-					this.set_token(token);
-
-
-					//类型1学校2商户
-					var type = response ? response.type : '';
-					this.set_control_type_data(type);
-
-
-					//如果有当前用户则去获取未读系统消息数
-					if (token) {
-						if (type == '1') {
-							this.getSystemMessageNum();
-						} else {
-							//异步回调父组件的方法
-							this.asynCallBack();
-						}
-					} else {
-						//异步回调父组件的方法
-						this.asynCallBack();
-					}
-
-
-
-					var person = response ? (response.hasOwnProperty('person') ? response.person : '') : '';
-					this.set_control_person_data(person);
-
-					var company = response ? (response.hasOwnProperty('company') ? response.company : '') : '';
-					this.set_control_company_data(company);
-
-					var merchant = response ? (response.hasOwnProperty('merchant') ? response.merchant : '') : '';
-					this.set_control_merchant_data(merchant);
-
-				}).catch(error => {
-					this.mui.toast(error);
-				})
-			},
-			//获取当前用户系统通知数量,未登录用户则置为0
-			getSystemMessageNum() {
-				API_Common.getSystemMessageNum().then(response => {
-
-					this.set_system_message_num(response);
-
-					//异步回调父组件的方法
 					this.asynCallBack();
 
 				}).catch(error => {
-					//this.mui.toast(error);
-					this.set_system_message_num(0)
+					mui.toast(error);
 				})
 			},
+
 			//异步回调父组件的方法
 			asynCallBack() {
-
-				//加载完成后隐藏加载中
-				//this.isLoading = false;
-
 				this.$emit('asynCallBack');
 			},
 			...mapMutations({
 				set_openid: types.SET_WEIXIN_OPENID,
 				set_token: types.SET_TOKEN,
-				set_student_person_data: types.SET_STUDENT_PERSON_DATA,
-				set_student_parent_id: types.SET_STUDENT_PARENT_ID,
-				set_student_current_info: types.SET_STUDENT_CURRENT_INFO,
-				set_teacher_person_data: types.SET_TEACHER_PERSON_DATA,
-				set_teacher_company_data: types.SET_TEACHER_COMANY_DATA,
-				set_now_role: types.SET_NOW_ROLE,
-				set_system_message_num: types.SET_SYSTEM_MESSAGE_NUM,
-				set_control_person_data: types.SET_CONTROL_PERSON_DATA,
-				set_control_company_data: types.SET_CONTROL_COMPANY_DATA,
-				set_control_merchant_data: types.SET_CONTROL_MERCHANT_DATA,
-				set_control_type_data: types.SET_CONTROL_TYPE_DATA,
-				set_teacher_role: types.SET_TEACHER_ROLE,
-				set_now_teacher_role: types.SET_NOW_TEACHER_ROLE,
+				set_person_data: types.SET_PERSON_DATA,
+				set_company_data: types.SET_COMPANY_DATA,
 			})
 		},
 		mounted() {},
 		computed: {
 			...mapGetters({
-				openId: 'weixin_openid',
+				openId: 'wx_openid',
 				token: 'token',
-				student_person_data: 'student_person_data',
-				student_parent_id: 'student_parent_id',
-				student_current_info: 'student_current_info',
-				now_role: 'now_role',
-				teacher_role: 'teacher_role',
-				now_teacher_role: 'now_teacher_role',
+				person_data: 'person_data',
+				company_data: 'company_data',
 			})
 		}
 	}

+ 31 - 11
src/projects/business/utils/request.js

@@ -2,9 +2,11 @@ import axios from 'axios';
 import store from '$project/store';
 import router from '@/router';
 import Vue from 'vue';
+import Qs from 'qs';
 
 import {
-	getToken
+	getToken,
+	getOpenId
 } from '$project/utils/storage'
 
 axios.defaults.headers['Content-Type'] = 'application/x-www-form-urlencoded'
@@ -22,18 +24,36 @@ const service = axios.create({
 
 //request拦截器
 service.interceptors.request.use(config => {
+	let Authorization = getToken() ? getToken() : '';
+	config.headers['Authorization'] = Authorization;
 
-	// if (process.env.NODE_ENV == 'devlopment') {
-	// 	var Authorization = process.env.VUE_APP_AUTH;
-	// } else {
-	var Authorization = getToken() ? getToken() : '';
-	// }
+	//传递公共参数
+	if (config.method == 'post') {
+		if (typeof(config.data) == 'string') {
+			config.data = Qs.stringify({
+				...Qs.parse(config.data),
+				openId: getOpenId(),
+			})
+		} else {
+			config.data = {
+				...config.data,
+				openId: getOpenId(),
+			}
+		}
+	} else if (config.method == 'get') {
+		if (typeof(config.data) == 'string') {
+			config.params = Qs.stringify({
+				openId: getOpenId(),
+				...Qs.parse(config.params)
+			})
+		} else {
+			config.params = {
+				openId: getOpenId(),
+				...config.params
+			}
+		}
+	}
 
-	// 获取token
-	//const token = store.state.token;
-	//if (token) {
-	config.headers['Authorization'] = Authorization;
-	//}
 	return config;
 }, error => {
 	//对请求错误处理

+ 17 - 27
src/projects/business/views/Common/Notice/Home.vue

@@ -1,35 +1,18 @@
 <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>
+		<common @asynCallBack="asynCallBack"></common>
+		<top-header :pageTitle="pageTitle"></top-header>
+
 		<div class="mui-content">
 			<div class="mui-content-padded">
 				<ul class="mui-table-view openfyy-list">
-					<li class="mui-table-view-cell mui-media">
-						<a href="javascript:;" class="mui-navigate-right">
-							<div class="mui-media-body">
-								荆州市新型冠状病毒感染的通告状病毒感染的通告
-								<p class="mui-ellipsis">2020-03-21</p>
-							</div>
-						</a>
-					</li>
-					<li class="mui-table-view-cell mui-media">
-						<a href="javascript:;" class="mui-navigate-right">
+					<li class="mui-table-view-cell mui-media" v-for="(item,index) in recordList">
+						<router-link :to="{name:'CommonNoticeInfo',query:{id:item.id}}" class="mui-navigate-right">
 							<div class="mui-media-body">
-								关于发现疫情的处理办法
-								<p class="mui-ellipsis">2020-03-20</p>
+								{{item.title}}
+								<p class="mui-ellipsis" v-text="item.createTime"></p>
 							</div>
-						</a>
-					</li>
-					<li class="mui-table-view-cell mui-media">
-						<a href="javascript:;" class="mui-navigate-right">
-							<div class="mui-media-body mui-ellipsis">
-								3月17日起荆州再开通14条公交线路
-								<p class="mui-ellipsis">2020-03-16</p>
-							</div>
-						</a>
+						</router-link>
 					</li>
 				</ul>
 			</div>
@@ -41,8 +24,10 @@
 
 <script>
 	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,
 		mapMutations
@@ -50,7 +35,9 @@
 	export default {
 		name: 'CommonNotice',
 		components: {
-			Loading
+			Common,
+			Loading,
+			TopHeader
 		},
 		data() {
 			return {
@@ -104,6 +91,9 @@
 					}
 				}
 			},
+			asynCallBack() {
+
+			},
 		},
 		mounted() {
 			this.getList();
@@ -118,7 +108,7 @@
 		},
 		computed: {
 			...mapGetters({
-				openId: 'weixin_openid',
+				openId: 'wx_openid',
 				token: 'token',
 			})
 		}

+ 86 - 35
src/projects/business/views/Common/Notice/Info.vue

@@ -1,42 +1,93 @@
 <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">
-      <div class="vongi-notice">
-        <div class="mui-h3">
-          荆州市新型冠状病毒感染的肺炎疫情防控指挥部通告
-          <h6>2020-03-17 12:40</h6>
-        </div>
-        <p>
-          为切实防范外来新冠肺炎输入性风险,进一步做好境外入荆(返荆)人员服务工作,现就有关事项通告如下:
-        </p>
-        <p>
-          对所有境外入荆(返荆)人员实施申报管理,统一接送至集中隔离点,进行14天的医学隔离观察(入荆、返荆前已在境内隔离,且提供县级以上疾控部门证明的除外)。
-        </p>
-        <p>
-          凡是境外入荆(返荆)人员不按规定申报,或隐瞒旅居史、接触史等情况的,经查实后,尚在医学观察期内的,一律集中隔离,费用由本人自理;感染新冠肺炎的,治疗费用由其个人承担,导致疫病传播扩散的,将依法严肃追究法律责任。广大市民对发现的可能违反疫情管理规定的境外入荆(返荆)人员,鼓励积极向当地防控指挥部、公安机关或外办举办,对查实的首位举报人,给予奖励2000元。
-        </p>
-      </div>
-      <div class="vongi-notice-img">
-        <img src="~$project/assets/img/02.jpg" />
-      </div>
-      <div class="vongi-notice-list">
-        <h3><img src="~$project/assets/img/text.png" width="12" />相关内容</h3>
-        <div class="vongi-floor-padded">
-          <a href="" class="mui-ellipsis"> 关联新闻内容1 </a>
-          <a href="" class="mui-ellipsis">
-            9月园区活动通知9月园区活动通知9月园区活动通知9月园区活动通知9月园区活动通知
-          </a>
-        </div>
-      </div>
-    </div>
-  </div>
+	<div>
+		<common @asynCallBack="asynCallBack"></common>
+		<top-header :pageTitle="pageTitle"></top-header>
+
+		<div class="mui-content">
+			<div class="vongi-notice">
+				<div class="mui-h3">
+					{{detail.title}}
+					<h6 v-text="detail.createTime"></h6>
+				</div>
+				<p v-html="detail.content"></p>
+			</div>
+			<!-- <div class="vongi-notice-list">
+				<h3><img src="~$project/assets/img/text.png" width="12" />相关内容</h3>
+				<div class="vongi-floor-padded">
+					<a href="" class="mui-ellipsis"> 关联新闻内容1 </a>
+					<a href="" class="mui-ellipsis">
+						9月园区活动通知9月园区活动通知9月园区活动通知9月园区活动通知9月园区活动通知
+					</a>
+				</div>
+			</div> -->
+		</div>
+
+		<loading :visible="isLoading"></loading>
+	</div>
 </template>
 
 <script>
+	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,
+		mapMutations
+	} from 'vuex'
+	export default {
+		name: 'CommonNoticeInfo',
+		components: {
+			Common,
+			Loading,
+			TopHeader
+		},
+		data() {
+			return {
+				pageTitle: '通知公告',
+
+				isLoading: false,
+
+				subForm: {
+					id: this.$route.query.id
+				},
+				detail: [],
+			}
+		},
+		created() {
+
+		},
+		methods: {
+			//获取详情
+			getDetail() {
+				this.isLoading = true;
+				API_Notice.getNoticeInfo(this.subForm).then(response => {
+
+					this.detail = response;
+
+					this.isLoading = false;
+				}).catch(error => {
+					this.isLoading = false;
+					this.mui.toast(error);
+				})
+			},
+			asynCallBack() {
+
+			},
+		},
+		mounted() {
+			//获取详情
+			this.getDetail();
+		},
+		destroyed() {},
+		computed: {
+			...mapGetters({
+				openId: 'wx_openid',
+				token: 'token',
+			})
+		}
+	}
 </script>
 
 <style src="$project/assets/css/xpwyfyy.css"></style>

+ 5 - 1
src/store/getters.js

@@ -1,3 +1,7 @@
 export const token = state => state.token
 
-export const weixin_openid = state => state.weixin_openid
+export const wx_openid = state => state.wx_openid
+
+export const person_data = state => state.person_data
+
+export const company_data = state => state.company_data

+ 3 - 0
src/store/mutation-types.js

@@ -1,2 +1,5 @@
 export const SET_TOKEN = 'SET_TOKEN'
 export const SET_WEIXIN_OPENID = 'SET_WEIXIN_OPEN_ID'
+
+export const SET_PERSON_DATA = 'SET_PERSON_DATA'
+export const SET_COMPANY_DATA = 'SET_COMPANY_DATA'

+ 13 - 1
src/store/mutations.js

@@ -2,6 +2,8 @@ import * as types from './mutation-types'
 import {
 	setOpenId,
 	setToken,
+	setPersonData,
+	setCompanyData
 } from '../utils/storage'
 
 var storage_prefix = process.env.VUE_APP_LOCAL_STORAGE_PREFIX;
@@ -13,9 +15,19 @@ const mutations = {
 	},
 
 	[types.SET_TOKEN](state, data) {
-		setToken(storage_prefix, data)
+		setToken(data)
 		state.token = data
 	},
+
+	[types.SET_PERSON_DATA](state, data) {
+		setPersonData(storage_prefix, data)
+		state.person_data = data
+	},
+
+	[types.SET_COMPANY_DATA](state, data) {
+		setCompanyData(storage_prefix, data)
+		state.company_data = data
+	},
 }
 
 export default mutations

+ 7 - 3
src/store/state.js

@@ -1,13 +1,17 @@
 import {
 	getOpenId,
-	getToken
+	getToken,
+	getPersonData,
+	getCompanyData
 } from '../utils/storage'
 
 var storage_prefix = process.env.VUE_APP_LOCAL_STORAGE_PREFIX;
 
 const state = {
-	weixin_openid: getOpenId(),
-	token: getToken(storage_prefix),
+	wx_openid: getOpenId(),
+	token: getToken(),
+	person_data: getPersonData(storage_prefix),
+	company_data: getCompanyData(storage_prefix)
 }
 
 export default state

+ 1 - 1
src/utils/index.js

@@ -224,6 +224,6 @@ export const isWeiXin = () => {
 }
 
 //获取当前根链接
-export const isWeiXin = () => {
+export const getBaseUrl = () => {
 	return window.location.href.split("#")[0]
 }

+ 111 - 0
src/utils/request.js

@@ -0,0 +1,111 @@
+import axios from 'axios';
+import store from '$project/store';
+import router from '@/router';
+import Vue from 'vue';
+import Qs from 'qs';
+
+import {
+	getToken,
+	getOpenId
+} from '$project/utils/storage'
+
+axios.defaults.headers['Content-Type'] = 'application/x-www-form-urlencoded'
+
+// 创建axios实例
+const service = axios.create({
+	baseURL: process.env.VUE_APP_BACKEND_URL,
+	timeout: 20000,
+	// 请求头信息
+	headers: {
+		'Content-Type': 'application/x-www-form-urlencoded',
+		'X-Requested-With': 'XMLHttpRequest',
+	},
+});
+
+//request拦截器
+service.interceptors.request.use(config => {
+	let Authorization = getToken() ? getToken() : '';
+	config.headers['Authorization'] = Authorization;
+
+	//传递公共参数
+	if (config.method == 'post') {
+		if (typeof(config.data) == 'string') {
+			config.data = Qs.stringify({
+				...Qs.parse(config.data),
+				openId: getOpenId(),
+			})
+		} else {
+			config.data = {
+				...config.data,
+				openId: getOpenId(),
+			}
+		}
+	} else if (config.method == 'get') {
+		if (typeof(config.data) == 'string') {
+			config.params = Qs.stringify({
+				openId: getOpenId(),
+				...Qs.parse(config.params)
+			})
+		} else {
+			config.params = {
+				openId: getOpenId(),
+				...config.params
+			}
+		}
+	}
+
+	return config;
+}, error => {
+	//对请求错误处理
+	return Promise.reject(error);
+});
+
+// response拦截器
+service.interceptors.response.use(
+	response => {
+		if (response.data.code === 200) {
+			if (response.data.result) {
+				return Promise.resolve(response.data.data);
+			} else {
+				return Promise.reject(response.data.message);
+			}
+		} else if (response.data.code === 415) {
+			//这里不执行,token过期
+		} else {
+			//无code的情况
+			if (response.data.result) {
+				return Promise.resolve(response.data.data);
+			} else {
+				return Promise.reject(response.data.message);
+			}
+
+			// todo 根据返回值判定去向,比如token过期,未登录等等
+
+			// 403 接口需要登录
+			/* if (response.data.code === 403) {
+				store.dispatch('clearToken');
+				router.replace({
+					name: 'Login',
+					query: {
+						redirect: router.currentRoute.fullPath
+					}
+				});
+			} */
+
+			return Promise.reject(response.data.message);
+		}
+	},
+	error => {
+		// alert('网络超时!请重新加载!');
+		//console.error(error);
+		// 判断请求异常信息中是否含有超时timeout字符串
+		if (error.message.includes('timeout')) {
+			return Promise.reject('请求超时,请稍后再试');
+		} else if (error.message.includes('NetworkError')) {
+			return Promise.reject('网络错误,请稍后再试');
+		}
+		return Promise.reject(error);
+	}
+);
+
+export default service;

+ 11 - 6
src/utils/storage.js

@@ -50,13 +50,18 @@ export const remove = key => engine.removeItem(prefix + key)
 
 export const clear = () => engine.clear()
 
-export const getOpenId = () => get('openid')
+export const getOpenId = () => get('wx_openid')
 
-export const setOpenId = (data) => set('openid', data)
+export const setOpenId = (data) => set('wx_openid', data)
 
-export const setToken = (channel, token) => set(channel + '_token', token)
+export const setToken = (token) => set('token', token)
 
-export const getToken = (channel) => get(channel + '_token')
+export const getToken = () => get('token')
 
-//其他项目数据在不同环境中用前缀区分开
-//export const setOpenId = (channel, data) => set(channel + '_openid', data)
+export const setPersonData = (channel, data) => set(channel + '_person_data', data)
+
+export const getPersonData = (channel) => get(channel + '_person_data')
+
+export const setCompanyData = (channel, data) => set(channel + '_company_data', data)
+
+export const getCompanyData = (channel) => get(channel + '_company_data')