Browse Source

会员中心

wgl 4 years ago
parent
commit
634782f05e

+ 1 - 1
config/project.js

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

+ 9 - 0
src/apis/user.js

@@ -18,3 +18,12 @@ export function exchangePopedom(params) {
 		method: 'post',
 	})
 }
+
+//退出
+export function logOut() {
+	return request({
+		url: '/mobile/personInfoApi/logOut',
+		data: Qs.stringify({}),
+		method: 'post',
+	})
+}

+ 3 - 0
src/components/Common.vue

@@ -103,6 +103,7 @@
 
 					var person = response ? response.person : '';
 					this.set_person_data(person);
+					this.set_person_temp(person);
 
 					var personPopedom = response ? response.personPopedom : '';
 					this.set_person_popedom(personPopedom);
@@ -127,6 +128,7 @@
 				set_person_data: types.SET_PERSON_DATA,
 				set_person_popedom: types.SET_PERSON_POPEDOM,
 				set_menu_list: types.SET_MENI_LIST,
+				set_person_temp: types.SET_PERSON_TEMP,
 			})
 		},
 		mounted() {},
@@ -137,6 +139,7 @@
 				person_data: 'person_data',
 				person_popedom: 'person_popedom',
 				menu_list: 'menu_list',
+				person_temp: 'person_temp'
 			})
 		}
 	}

+ 12 - 0
src/projects/business/apis/Master/mine.js

@@ -0,0 +1,12 @@
+import request from '@/utils/request'
+import Qs from 'qs';
+
+
+//建议提交
+export function problemFeedback(params) {
+	return request({
+		url: '/mobile/personInfoApi/problemFeedback',
+		data: Qs.stringify(params),
+		method: 'post',
+	})
+}

+ 135 - 142
src/projects/business/views/Master/Mine/Center.vue

@@ -1,153 +1,146 @@
 <template>
-  <div>
-    <common @asynCallBack="asynCallBack"></common>
+	<div>
+		<common @asynCallBack="asynCallBack"></common>
 
-    <div class="mui-content margin49">
-      <div class="vongi-icon-gear">
-        <a id="icon-gear" class="mui-icon mui-icon-gear" href=""></a>
-      </div>
-      <div class="vongi-me">
-        <div class="vongi-me-name">
-          <div class="vongi-me-top">
-            <div class="flew-items">
-              <div class="mui-media-object mui-pull-left">
-                <img :src="person_data.faceImageUrl" />
-              </div>
-              <h2>{{ wellcomme }}{{ person_data.name }}</h2>
-            </div>
-            <h4 v-text="person_data.phone"></h4>
-          </div>
-          <button
-            type="button"
-            class="mui-btn mui-btn-primary mui-btn-outlined"
-            @click="editInfo"
-          >
-            编辑资料
-          </button>
-        </div>
-        <div class="vongi-me-card">
-          <h2 v-text="person_data.position1"></h2>
-          <h4 v-text="person_data.position2"></h4>
-        </div>
-      </div>
-      <div class="vongi-me-list">
-        <ul class="mui-table-view mui-table-view-chevron vongi-news">
-          <li class="mui-table-view-cell">
-            <a href="" class="mui-navigate-right">
-              <img src="~$project/assets/img/cicon32.png" width="18" /> 我的账单
-            </a>
-          </li>
-          <li class="mui-table-view-cell">
-            <a href="" class="mui-navigate-right">
-              <img src="~$project/assets/img/cicon07.png" width="18" /> 我的订单
-            </a>
-          </li>
-        </ul>
-        <ul class="mui-table-view mui-table-view-chevron vongi-news">
-          <li class="mui-table-view-cell">
-            <a href="" class="mui-navigate-right">
-              <img src="~$project/assets/img/set.png" width="18" /> 问题反馈
-            </a>
-          </li>
-          <li class="mui-table-view-cell">
-            <a href="tel:4008899619" class="">
-              <img src="~$project/assets/img/cicon33.png" width="18" /> 客服热线
-              <span>400-8899-619</span>
-              <span class="mui-icon mui-icon-phone"></span>
-            </a>
-          </li>
-        </ul>
-      </div>
-    </div>
+		<div class="mui-content margin49">
+			<div class="vongi-icon-gear">
+				<router-link id="icon-gear" :to="{name:'MasterMineConfig'}" class="mui-icon mui-icon-gear"></router-link>
+			</div>
+			<div class="vongi-me">
+				<div class="vongi-me-name">
+					<div class="vongi-me-top">
+						<div class="flew-items">
+							<div class="mui-media-object mui-pull-left">
+								<img :src="person_data.faceImageUrl" />
+							</div>
+							<h2>{{wellcomme}}{{person_data.name}}</h2>
+						</div>
+						<h4 v-text="person_data.phone"></h4>
+					</div>
+					<button type="button" class="mui-btn mui-btn-primary mui-btn-outlined" @click="editInfo">
+						编辑资料
+					</button>
+				</div>
+				<div class="vongi-me-card">
+					<h2 v-text="person_data.position1"></h2>
+					<h4 v-text="person_data.position2"></h4>
+				</div>
+			</div>
+			<div class="vongi-me-list">
+				<ul class="mui-table-view mui-table-view-chevron vongi-news">
+					<li class="mui-table-view-cell">
+						<a class="mui-navigate-right">
+							<img src="~$project/assets/img/cicon32.png" width="18" /> 我的账单
+						</a>
+					</li>
+					<li class="mui-table-view-cell">
+						<a class="mui-navigate-right">
+							<img src="~$project/assets/img/cicon07.png" width="18" /> 我的订单
+						</a>
+					</li>
+				</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">
+							<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" /> 客服热线
+							<span>400-8899-619</span>
+							<span class="mui-icon mui-icon-phone"></span>
+						</a>
+					</li>
+				</ul>
+			</div>
+		</div>
 
-    <nav-menu
-      :router="[
-        { name: 'Master' },
-        { name: 'MasterMineMessage' },
-        { name: 'MasterMineCenter' },
-      ]"
-    ></nav-menu>
+		<nav-menu :router="[{name:'Master'},{name:'MasterMineMessage'},{name:'MasterMineCenter'}]"></nav-menu>
 
-    <loading :visible="isLoading"></loading>
-  </div>
+		<loading :visible="isLoading"></loading>
+	</div>
 </template>
 
 <script>
-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: "MasterMineCenter",
-  components: {
-    Common,
-    Loading,
-    TopHeader,
-    NavMenu,
-  },
-  data() {
-    return {
-      pageTitle: "个人中心",
+	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: "MasterMineCenter",
+		components: {
+			Common,
+			Loading,
+			TopHeader,
+			NavMenu,
+		},
+		data() {
+			return {
+				pageTitle: "个人中心",
 
-      isLoading: false,
-    };
-  },
-  created() {
-    //如果不存在则跳转到注册页面
-    if (!this.person_data) {
-      window.location.href = "../home/#/user/login";
-    }
-  },
-  methods: {
-    //修改个人信息
-    editInfo() {
-      this.$router.push({
-        name: "MasterMineEditInfo",
-        query: {},
-      });
-    },
-    asynCallBack() {},
-  },
-  mounted() {},
-  destroyed() {},
-  computed: {
-    wellcomme: {
-      // getter
-      get: function () {
-        let now = new Date(),
-          hour = now.getHours();
-        if (hour < 6) {
-          return "凌晨好!";
-        } else if (hour < 9) {
-          return "早上好!";
-        } else if (hour < 12) {
-          return "上午好";
-        } else if (hour < 14) {
-          return "中午好!";
-        } else if (hour < 17) {
-          return "下午好!";
-        } else if (hour < 19) {
-          return "傍晚好!";
-        } else if (hour < 22) {
-          return "晚上好!";
-        } else {
-          return "夜里好!";
-        }
-      },
-      // setter
-      set: function (newValue) {
-        console.log(newValue);
-      },
-    },
-    ...mapGetters({
-      openId: "wx_openid",
-      token: "token",
-      person_data: "person_data",
-      person_popedom: "person_popedom",
-    }),
-  },
-};
+				isLoading: false,
+			};
+		},
+		created() {
+			//如果不存在则跳转到注册页面
+			if (!this.person_data) {
+				window.location.href = "../home/#/user/login";
+			}
+		},
+		methods: {
+			//修改个人信息
+			editInfo() {
+				this.$router.push({
+					name: "MasterMineEditInfo",
+					query: {},
+				});
+			},
+			asynCallBack() {},
+		},
+		mounted() {},
+		destroyed() {},
+		computed: {
+			wellcomme: {
+				// getter
+				get: function() {
+					let now = new Date(),
+						hour = now.getHours();
+					if (hour < 6) {
+						return "凌晨好!";
+					} else if (hour < 9) {
+						return "早上好!";
+					} else if (hour < 12) {
+						return "上午好";
+					} else if (hour < 14) {
+						return "中午好!";
+					} else if (hour < 17) {
+						return "下午好!";
+					} else if (hour < 19) {
+						return "傍晚好!";
+					} else if (hour < 22) {
+						return "晚上好!";
+					} else {
+						return "夜里好!";
+					}
+				},
+				// setter
+				set: function(newValue) {
+					console.log(newValue);
+				},
+			},
+			...mapGetters({
+				openId: "wx_openid",
+				token: "token",
+				person_data: "person_data",
+				person_popedom: "person_popedom",
+			}),
+		},
+	};
 </script>
 
 

+ 88 - 29
src/projects/business/views/Master/Mine/Config.vue

@@ -1,36 +1,95 @@
 <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-me-list vongi-meset-list">
-        <ul class="mui-table-view mui-table-view-chevron vongi-news">
-          <li class="mui-table-view-cell">
-            <a href="" class="mui-navigate-right flew-sp">
-              已绑定手机号
-              <span>155****1111</span>
-            </a>
-          </li>
-          <li class="mui-table-view-cell">
-            <a href="" class="mui-navigate-right flew-sp">
-              字体大小
-              <span>普通模式</span>
-            </a>
-          </li>
-          <li class="mui-table-view-cell">
-            <a href="" class="mui-navigate-right"> 关于小鹏管家 </a>
-          </li>
-        </ul>
-        <a href="" class="vongi-meset">切换身份</a>
-        <a href="" class="vongi-meset">退出帐号</a>
-      </div>
-    </div>
-  </div>
+	<div>
+		<common @asynCallBack="asynCallBack"></common>
+		<top-header :pageTitle="pageTitle"></top-header>
+
+		<div class="mui-content">
+			<div class="vongi-me-list vongi-meset-list">
+				<ul class="mui-table-view mui-table-view-chevron vongi-news">
+					<li class="mui-table-view-cell">
+						<a class="mui-navigate-right flew-sp">
+							已绑定手机号
+							<span v-text="person_data.phone"></span>
+						</a>
+					</li>
+					<li class="mui-table-view-cell">
+						<a class="mui-navigate-right flew-sp">
+							字体大小
+							<span>普通模式</span>
+						</a>
+					</li>
+					<li class="mui-table-view-cell">
+						<a class="mui-navigate-right"> 关于小鹏管家 </a>
+					</li>
+				</ul>
+				<a href="../home/#/role?project=business&exchange=1" class="vongi-meset jump">切换身份</a>
+				<a @click="loginOut" class="vongi-meset">退出帐号</a>
+			</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: 'MasterMineConfig',
+		components: {
+			Common,
+			Loading,
+			TopHeader,
+			NavMenu
+		},
+		data() {
+			return {
+				pageTitle: '设置',
+
+				isLoading: false,
+
+				lastNotice: {}
+			}
+		},
+		created() {
+
+		},
+		methods: {
+			//退出登录
+			loginOut() {
+				this.isLoading = true;
+				API_User.logOut().then(response => {
+					this.isLoading = false;
+
+					window.location.href = '../home/#/';
+
+				}).catch(error => {
+					this.isLoading = false;
+					mui.toast(error);
+				})
+			},
+			asynCallBack() {},
+		},
+		mounted() {
+
+		},
+		destroyed() {
+
+		},
+		computed: {
+			...mapGetters({
+				openId: 'wx_openid',
+				token: 'token',
+				person_data: 'person_data',
+				person_popedom: 'person_popedom',
+			})
+		}
+	}
 </script>
 
 <style scoped src="$project/assets/css/xpgj.css"></style>

+ 146 - 41
src/projects/business/views/Master/Mine/Feedback.vue

@@ -1,48 +1,153 @@
 <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-meform">
-      <div class="mui-h5">问题和意见</div>
-      <div class="mui-input-row">
-        <textarea
-          id="textarea"
-          rows="5"
-          placeholder="请详细描述您的问题和意见"
-        ></textarea>
-      </div>
-      <div class="vongi-wordcard vongi-meform-pho">
-        <h5>上传图片<span class="mui-h6">(选填,提供问题截图)</span></h5>
-        <div class="fyy-upphoto">
-          <div class="mui-col-xs-3">
-            <img src="~$project/assets/img/zhaop.jpg" />
-          </div>
-          <div class="mui-col-xs-3">
-            <a><span class="mui-icon mui-icon-camera"></span></a>
-          </div>
-        </div>
-      </div>
-      <form class="mui-input-group">
-        <div class="mui-input-row">
-          <label>联系方式</label>
-          <input
-            type="text"
-            class="mui-input-clear"
-            placeholder="选填,方便我们联系您"
-          />
-        </div>
-      </form>
-      <div class="vongi-btn vongi-login-btn">
-        <button class="mui-btn mui-btn-primary">提 交</button>
-      </div>
-    </div>
-  </div>
+	<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-meform">
+			<div class="mui-h5">问题和意见</div>
+			<div class="mui-input-row">
+				<textarea v-model="subForm.content" rows="5" placeholder="请详细描述您的问题和意见"></textarea>
+			</div>
+			<div class="vongi-wordcard vongi-meform-pho">
+				<h5>上传图片<span class="mui-h6">(选填,提供问题截图)</span></h5>
+				<div class="fyy-upphoto">
+					<div v-for="(item,index) in listPic" class="mui-col-xs-3">
+						<img :src="item" />
+					</div>
+					<div class="mui-col-xs-3" @click="chooseImage">
+						<a><span class="mui-icon mui-icon-camera"></span></a>
+					</div>
+				</div>
+			</div>
+			<form class="mui-input-group">
+				<div class="mui-input-row">
+					<label>联系方式</label>
+					<input type="text" v-model="subForm.telephone" class="mui-input-clear" placeholder="选填,方便我们联系您" />
+				</div>
+			</form>
+			<div class="vongi-btn vongi-login-btn">
+				<button class="mui-btn mui-btn-primary" @click="submit">提 交</button>
+			</div>
+		</div>
+	</div>
 </template>
 
 <script>
+	import * as API_Mine from '@/apis/Master/mine'
+	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 WxJsApi from '$project/utils/wxJsApi'
+	export default {
+		name: 'MasterMineFeedback',
+		components: {
+			Common,
+			Loading,
+			TopHeader,
+			NavMenu
+		},
+		data() {
+			return {
+				pageTitle: '消息',
+
+				isLoading: false,
+
+				lastNotice: {},
+
+				imgBase64: '',
+				listPic: [],
+				subForm: {
+					content: '',
+					picUrl: '',
+					telephone: ''
+				}
+			}
+		},
+		created() {
+
+		},
+		methods: {
+			//微信选择图片
+			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.uploadpic();
+				}).catch(error => {
+					mui.toast(error);
+				})
+			},
+			//上传图片
+			uploadpic() {
+				this.isLoading = true;
+				WxJsApi.uploadPic(this.imgBase64).then(response => {
+					this.isLoading = false;
+
+					this.listPic.push(response);
+				}).catch(error => {
+					this.isLoading = false;
+					mui.toast(error);
+				})
+			},
+			//表单检测
+			checkFrom() {
+				if (!this.subForm.content) {
+					mui.toast('请输入内容');
+					return false;
+				} else {
+					return true;
+				}
+			},
+			//提交
+			submit() {
+				if (this.checkFrom()) {
+					this.subForm.picUrl = this.listPic.join(',');
+					this.isLoading = true;
+					API_Mine.problemFeedback(this.subForm).then(response => {
+						this.isLoading = false;
+
+						mui.toast('提交成功');
+						this.$router.push({
+							name: 'MasterMineCenter'
+						})
+
+					}).catch(error => {
+						this.isLoading = false;
+						mui.toast(error);
+					})
+				}
+			},
+			asynCallBack() {},
+		},
+		mounted() {
+			//获取微信配置
+			WxJsApi.getWxConfig();
+		},
+		destroyed() {
+
+		},
+		computed: {
+			...mapGetters({
+				openId: 'wx_openid',
+				token: 'token',
+				person_data: 'person_data',
+				person_popedom: 'person_popedom',
+			})
+		}
+	}
 </script>
 
 <style scoped src="$project/assets/css/xpwyfyy.css"></style>

+ 4 - 3
src/projects/home/views/User/Login.vue

@@ -81,9 +81,9 @@
 		},
 		created() {
 			//设置默认值,退出帐号后进入登录页面,输入框中保留上次登录时的姓名和手机号信息;
-			if (this.person_data) {
-				this.subForm.name = this.person_data.name;
-				this.subForm.phone = this.person_data.phone;
+			if (this.person_temp) {
+				this.subForm.name = this.person_temp.name;
+				this.subForm.phone = this.person_temp.phone;
 			}
 		},
 		methods: {
@@ -192,6 +192,7 @@
 				token: 'token',
 				person_data: 'person_data',
 				person_popedom: 'person_popedom',
+				person_temp: 'person_temp'
 			})
 		}
 	}

+ 2 - 0
src/store/getters.js

@@ -9,3 +9,5 @@ export const person_popedom = state => state.person_popedom
 export const add_person_data = state => state.add_person_data
 
 export const menu_list = state => state.menu_list
+
+export const person_temp = state => state.person_temp

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

@@ -5,3 +5,4 @@ export const SET_PERSON_DATA = 'SET_PERSON_DATA'
 export const SET_PERSON_POPEDOM = 'SET_PERSON_POPEDOM'
 export const SET_ADD_PERSON_DATA = 'SET_ADD_PERSON_DATA'
 export const SET_MENI_LIST = 'SET_MENI_LIST'
+export const SET_PERSON_TEMP = 'SET_PERSON_TEMP'

+ 7 - 1
src/store/mutations.js

@@ -4,7 +4,8 @@ import {
 	setToken,
 	setPersonData,
 	setPersonPopedom,
-	setMenuList
+	setMenuList,
+	setPersonTemp
 } from '../utils/storage'
 
 var storage_prefix = process.env.VUE_APP_LOCAL_STORAGE_PREFIX;
@@ -44,6 +45,11 @@ const mutations = {
 		setMenuList(storage_prefix, data)
 		state.menu_list = data
 	},
+	
+	[types.SET_PERSON_TEMP](state, data) {
+		setPersonTemp(storage_prefix, data)
+		state.person_temp = data
+	},
 }
 
 export default mutations

+ 3 - 1
src/store/state.js

@@ -3,7 +3,8 @@ import {
 	getToken,
 	getPersonData,
 	getPersonPopedom,
-	getMenuList
+	getMenuList,
+	getPersonTemp
 } from '../utils/storage'
 
 var storage_prefix = process.env.VUE_APP_LOCAL_STORAGE_PREFIX;
@@ -17,6 +18,7 @@ const state = {
 	control_abnormal_statistics_startTime: '',
 	control_abnormal_statistics_endTime: '',
 	menu_list: getMenuList(storage_prefix),
+	person_temp: getPersonTemp(storage_prefix),
 }
 
 export default state

+ 4 - 0
src/utils/storage.js

@@ -66,6 +66,10 @@ export const setPersonPopedom = (channel, data) => set(channel + '_person_popedo
 
 export const getPersonPopedom = (channel) => get(channel + '_person_popedom')
 
+export const setPersonTemp = (channel, data) => set(channel + '_person_temp', data)
+
+export const getPersonTemp = (channel) => get(channel + '_person_temp')
+
 export const setMenuList = (channel, data) => set(channel + '_menu_list', data)
 
 export const getMenuList = (channel) => get(channel + '_menu_list')