Home.vue 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321
  1. <template>
  2. <div>
  3. <common ref="common" @asynCallBack="asynCallBack"></common>
  4. <top-header :pageTitle="pageTitle" headerClass="vongi-bar" :leftShow="false"></top-header>
  5. <div class="mui-content margin49">
  6. <div class="vongi-index">
  7. <div class="vongi-index-top">
  8. <div class="mui-media-object mui-pull-left">
  9. <img :src="person_data?person_data.faceImageUrl:''">
  10. </div>
  11. <div class="mui-media-body">
  12. <h3 v-text="person_data?person_data.name:''"></h3>
  13. <p class='mui-ellipsis' v-text="person_popedom?(person_popedom.job?person_popedom.job:person_popedom.personRoleName):''"></p>
  14. </div>
  15. <a class="mui-pull-right" @click="selectRole">切换身份<span class="mui-icon iconfont icon-jiaohuan"></span></a>
  16. </div>
  17. </div>
  18. <div class="vongi-icons">
  19. <div class="vongi-index">
  20. <ul class="mui-table-view mui-grid-view mui-grid-9 vongi-grid-head">
  21. <li v-for="(item,index) in common_menu_list" :class="'mui-table-view-cell mui-media mui-col-xs-3 '+(item.iconRoute?'':'kfz')">
  22. <router-link :to="{name:item.iconRoute,query:item.iconParam}">
  23. <img :src="requirePic(item.iconCommonPic)" />
  24. <div class="mui-media-body" v-text="item.iconName"></div>
  25. </router-link>
  26. </li>
  27. </ul>
  28. </div>
  29. <ul class="mui-table-view mui-grid-view mui-grid-9">
  30. <li v-for="(item,index) in menu_list" :class="'mui-table-view-cell mui-media mui-col-xs-3 '+(item.iconRoute?'':'kfz')">
  31. <router-link :to="{name:item.iconRoute,query:item.iconParam}">
  32. <img :src="requirePic(item.iconPic)" />
  33. <div class="mui-media-body" v-text="item.iconName"></div>
  34. </router-link>
  35. </li>
  36. <li class="mui-table-view-cell mui-media mui-col-xs-3">
  37. <router-link :to="{name:'MasterAllFun'}">
  38. <img src="~$project/assets/img/cicon30.png" />
  39. <div class="mui-media-body">全部</div>
  40. </router-link>
  41. </li>
  42. </ul>
  43. </div>
  44. <div class="vongi-index-floor">
  45. <h4 class="vongi-floor-title">功能推荐区</h4>
  46. <div class="vongi-index-inter flew-sp">
  47. <div class="mui-col-xs-6">
  48. <router-link :to="{name:'MasterMineEditInfo'}" class="vongi-floor-padded">
  49. <div class="mui-media-body">
  50. <h4 class="mui-ellipsis">关联健康码</h4>
  51. <p class="mui-ellipsis">出行更便捷</p>
  52. </div>
  53. <img class="mui-media-object mui-pull-right" src="~$project/assets/img/cicon15.png" width="54" />
  54. </router-link>
  55. </div>
  56. <div class="mui-col-xs-6">
  57. <router-link :to="{name:'MasterMineFeedback'}" class="vongi-floor-padded">
  58. <div class="mui-media-body">
  59. <h4 class="mui-ellipsis">问题反馈</h4>
  60. <p class="mui-ellipsis">感谢您的发声</p>
  61. </div>
  62. <img class="mui-media-object mui-pull-right" src="~$project/assets/img/cicon18.png" width="54" />
  63. </router-link>
  64. </div>
  65. <div v-if="noticeList.length" class="mui-col-xs-12">
  66. <div class="vongi-floor-padded">
  67. <router-link :to="{name:'CommonNotice',query:{type:1}}" v-for="(item,index) in noticeList" :key="index" :class="'text-list '+(item.readStatus?'':'red-after')">
  68. <h5 class="mui-ellipsis" v-text="item.title"></h5><span v-text="item.date"></span>
  69. </router-link>
  70. </div>
  71. <router-link :to="{name:'CommonNotice',query:{type:1}}" class="vongi-link"><span class="mui-icon mui-icon-forward"></span></router-link>
  72. </div>
  73. <div class="mui-col-xs-12">
  74. <div id="slider" class="mui-slider">
  75. <div class="mui-slider-group">
  76. <!-- 第一张 -->
  77. <div class="mui-slider-item">
  78. <a href="javascript:void(0)">
  79. <img src="~$project/assets/img/02.jpg">
  80. </a>
  81. </div>
  82. <!-- 第二张 -->
  83. <div class="mui-slider-item">
  84. <a href="javascript:void(0)">
  85. <img src="~$project/assets/img/02.jpg">
  86. </a>
  87. </div>
  88. </div>
  89. <div class="mui-slider-indicator">
  90. <div class="mui-indicator mui-active"></div>
  91. <div class="mui-indicator"></div>
  92. </div>
  93. </div>
  94. </div>
  95. </div>
  96. </div>
  97. <div class="vongi-index-floor ">
  98. <h4 class="vongi-floor-title">优品推荐</h4>
  99. <div class="vongi-index-inter flew-sp">
  100. <div class="mui-col-xs-12">
  101. <ul class="mui-table-view mui-grid-view mui-grid-9 vongi-floor-padded">
  102. <li class="mui-table-view-cell mui-media mui-col-xs-6">
  103. <a @click="toPay()" >
  104. <div class="vongi-shop-img"><img src="http://oss.xiaoxinda.com/smart/person/2020/10/18174320745.png" width="100%" /></div>
  105. <div class="mui-media-body">老人智能安全监控手表</div>
  106. <div class="mui-media-body color-yellow">¥0.01</div>
  107. </a>
  108. </li>
  109. </ul>
  110. </div>
  111. </div>
  112. </div>
  113. </div>
  114. <nav-menu :router="[{name:'Master'},{name:'MasterMineMessage'},{name:'MasterMineCenter'}]"></nav-menu>
  115. <loading :visible="isLoading"></loading>
  116. </div>
  117. </template>
  118. <script>
  119. require('$project/assets/js/mui.picker.min.js');
  120. import * as API from '@/apis/Master/live'
  121. import * as API_Notice from '@/apis/Common/notice'
  122. import * as API_User from '$project/apis/user'
  123. import Common from '$project/components/Common.vue'
  124. import Loading from '$project/components/Loading.vue'
  125. import TopHeader from '$project/components/TopHeader.vue'
  126. import NavMenu from '@/components/NavMenu.vue'
  127. import {
  128. mapGetters,
  129. mapMutations
  130. } from 'vuex'
  131. import * as types from '$project/store/mutation-types'
  132. export default {
  133. name: 'Master',
  134. components: {
  135. Common,
  136. Loading,
  137. TopHeader,
  138. NavMenu
  139. },
  140. data() {
  141. return {
  142. isLoading: false,
  143. roleList: [],
  144. noticeList: [],
  145. }
  146. },
  147. created() {},
  148. methods: {
  149. toPay() {
  150. this.isLoading = true;
  151. API.submit({
  152. "personId": this.person_data.id,
  153. "payPersonId": this.person_data.id,
  154. "goodsId":"2",
  155. }).then(data => {
  156. var url = window.location.href.split("#")[0];
  157. var param = JSON.stringify(data).replace("{", "").replace("}", "").replace(/\",\"/g, "&").replace(/,\"/g, "&").replace(
  158. /:/g, "=").replace(/\":\"/g, "=").replace(/\"/g, "");
  159. param = param.replace('=//', '://');
  160. window.location = url + "?#/master/live/pay?" + param;
  161. }).catch(error => {
  162. this.isLoading = false;
  163. mui.toast(error);
  164. })
  165. },
  166. //获取用户角色列表
  167. getRoleList() {
  168. this.isLoading = true;
  169. API_User.getRoleList().then(response => {
  170. this.isLoading = false;
  171. this.roleList = response.list;
  172. }).catch(error => {
  173. this.isLoading = false;
  174. mui.toast(error);
  175. })
  176. },
  177. //选择角色
  178. selectRole() {
  179. var roleList = [];
  180. for (var i = 0; i < this.roleList.length; i++) {
  181. var preName = this.person_popedom.id == this.roleList[i]['id'] ? '(当前)' : '';
  182. roleList.push({
  183. value: this.roleList[i]['id'],
  184. text: preName + this.roleList[i]['companyName'] + ' ' + this.roleList[i]['personRoleName'],
  185. })
  186. }
  187. var _this = this;
  188. var picker = new mui.PopPicker();
  189. picker.setData(roleList);
  190. picker.show(function(selectItems) {
  191. _this.switchRole(selectItems[0].value);
  192. })
  193. },
  194. //切换角色
  195. switchRole(id) {
  196. this.isLoading = true;
  197. API_User.exchangePopedom({
  198. id: id
  199. }).then(response => {
  200. this.isLoading = false;
  201. this.$refs.common.getDataByOpenId();
  202. }).catch(error => {
  203. this.isLoading = false;
  204. mui.toast(error);
  205. })
  206. },
  207. //预读取通知消息
  208. prefetchNotice() {
  209. this.isLoading = true;
  210. API_Notice.prefetch().then(response => {
  211. this.isLoading = false;
  212. this.getLastNotice();
  213. }).catch(error => {
  214. this.isLoading = false;
  215. mui.toast(error);
  216. })
  217. },
  218. //获取最新二条通知消息
  219. getLastNotice() {
  220. this.isLoading = true;
  221. API_Notice.getTopList({
  222. type: 1,
  223. limit: 2,
  224. excludeMessageId: ''
  225. }).then(response => {
  226. this.noticeList = response;
  227. this.isLoading = false;
  228. }).catch(error => {
  229. this.isLoading = false;
  230. mui.toast(error);
  231. })
  232. },
  233. //引入图片
  234. requirePic(file) {
  235. if (file) {
  236. return require('$project/assets/img/' + file);
  237. }
  238. },
  239. //设置判断首页模式
  240. setHomeModel() {
  241. if (!this.persion_home_model) {
  242. this.set_persion_home_model('normal');
  243. }
  244. if (this.persion_home_model != 'normal') {
  245. this.$router.push({
  246. name: 'MasterHomeBigFont'
  247. })
  248. }
  249. },
  250. asynCallBack() {
  251. //获取用户角色列表
  252. this.getRoleList();
  253. //获取最新二条通知消息
  254. this.prefetchNotice();
  255. },
  256. ...mapMutations({
  257. set_persion_home_model: types.SET_PERSION_HOME_MODEL,
  258. })
  259. },
  260. mounted() {
  261. //设置判断首页模式
  262. this.setHomeModel();
  263. var gallery = mui('.mui-slider');
  264. var slider = gallery.slider({
  265. interval: 2000, //自动轮播周期,若为0则不自动播放,默认为0;
  266. bounce: true //是否启用回弹
  267. });
  268. },
  269. destroyed() {
  270. },
  271. computed: {
  272. pageTitle: {
  273. // getter
  274. get: function() {
  275. return this.person_data ? this.person_data.companyName : '小鹏管家';
  276. },
  277. // setter
  278. set: function(newValue) {
  279. console.log(newValue)
  280. }
  281. },
  282. ...mapGetters({
  283. openId: 'wx_openid',
  284. token: 'token',
  285. person_data: 'person_data',
  286. person_popedom: 'person_popedom',
  287. menu_list: 'menu_list',
  288. common_menu_list: 'common_menu_list',
  289. persion_home_model: 'persion_home_model'
  290. })
  291. }
  292. }
  293. </script>
  294. <style scoped src="$project/assets/css/xpgj.css"></style>
  295. <style src="$project/assets/css/iconfont.css"></style>
  296. <style scoped src="$project/assets/css/pension.css"></style>
  297. <style src="$project/assets/css/mui.picker.min.css"></style>
  298. <style scoped>
  299. .red-after:after {
  300. background: red;
  301. }
  302. </style>