Home.vue 9.7 KB

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