Home.vue 9.2 KB

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