123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405 |
- <template>
- <div>
- <common ref="common" @asynCallBack="asynCallBack"></common>
- <top-header :pageTitle="pageTitle" headerClass="vongi-bar" :leftShow="false"></top-header>
- <div class="mui-content margin49">
- <div class="vongi-index flew-sp flew-items">
- <div class="vongi-index-top">
- <div class="mui-media-object mui-pull-left">
- <img :src="person_data?(person_data.faceImageUrl+'?x-oss-process=image/resize,h_50,m_lfit'):''">
- </div>
- <div class="mui-media-body">
- <h3 v-if="person_data">{{person_data.name}}</h3>
- <p class='mui-ellipsis' v-text="person_popedom?(person_popedom.job?person_popedom.job:person_popedom.personRoleName):''"></p>
- </div>
- </div>
- <div class="vongi-index-right flew-items flew-sp">
- <template v-if="person_popedom && person_popedom.sceneId=='1'">
- <span :class="'text-list '+'work-status-color-'+person_data.workStatus" v-text="person_data?person_data.workStatusN:''"></span>
- <span class="line">|</span>
- </template>
- <a class="mui-pull-right" @click="selectRole">切换身份<span class="mui-icon iconfont icon-jiaohuan"></span></a>
- </div>
- </div>
- <div class="vongi-icons">
- <div class="vongi-index">
- <ul class="mui-table-view mui-grid-view mui-grid-9 vongi-grid-head">
- <li v-for="(item,index) in common_menu_list" :class="'mui-table-view-cell mui-media mui-col-xs-3 '+(item.iconRoute?'':'kfz')">
- <a v-if="item.iconUrl" @click="goto(item.iconUrl)">
- <img :src="requirePic(item.iconCommonPic)" />
- <div class="mui-media-body" v-text="item.iconName"></div>
- </a>
- <router-link v-else :to="{name:item.iconRoute,query:item.iconParam}">
- <img :src="requirePic(item.iconCommonPic)" />
- <div class="mui-media-body" v-text="item.iconName"></div>
- </router-link>
- </li>
- </ul>
- </div>
- <ul class="mui-table-view mui-grid-view mui-grid-9">
- <li v-for="(item,index) in menu_list" :class="'mui-table-view-cell mui-media mui-col-xs-3 '+(item.iconRoute?'':'kfz')">
- <a v-if="item.iconUrl" @click="goto(item.iconUrl)">
- <img :src="requirePic(item.iconPic)" />
- <div class="mui-media-body" v-text="item.iconName"></div>
- </a>
- <router-link v-else :to="{name:item.iconRoute,query:item.iconParam}">
- <img :src="requirePic(item.iconPic)" />
- <div class="mui-media-body" v-text="item.iconName"></div>
- </router-link>
- </li>
- <li class="mui-table-view-cell mui-media mui-col-xs-3">
- <router-link :to="{name:'MasterAllFun'}">
- <img src="http://rccs.oss-cn-hangzhou.aliyuncs.com/jp_housekeeper/img/cicon30.png?x-oss-process=image/resize,h_50,m_lfit" />
- <div class="mui-media-body">全部</div>
- </router-link>
- </li>
- </ul>
- </div>
- <div class="vongi-index-floor">
- <h4 class="vongi-floor-title">功能推荐区</h4>
- <div class="vongi-index-inter flew-sp">
- <div class="mui-col-xs-6">
- <router-link :to="{name:'MasterMineEditInfo'}" class="vongi-floor-padded">
- <div class="mui-media-body">
- <h4 class="mui-ellipsis">关联健康码</h4>
- <p class="mui-ellipsis">出行更便捷</p>
- </div>
- <img class="mui-media-object mui-pull-right" src="http://rccs.oss-cn-hangzhou.aliyuncs.com/jp_housekeeper/img/cicon15.png?x-oss-process=image/resize,h_50,m_lfit" width="54" />
- </router-link>
- </div>
- <div class="mui-col-xs-6">
- <a @tap="updateCompany" class="vongi-floor-padded">
- <div class="mui-media-body">
- <h4 class="mui-ellipsis">变更公司</h4>
- <p class="mui-ellipsis">重选所在公司</p>
- </div>
- <img class="mui-media-object mui-pull-right" src="http://rccs.oss-cn-hangzhou.aliyuncs.com/jp_housekeeper/img/cicon35.png?x-oss-process=image/resize,h_50,m_lfit" width="54" />
- </a>
- </div>
- <div v-if="noticeList&¬iceList.length" class="mui-col-xs-12">
- <div class="vongi-floor-padded">
- <router-link :to="{name:'CommonNotice',query:{type:1}}" v-for="(item,index) in noticeList" :key="index" :class="'text-list '+(item.readStatus?'':'red-after')">
- <h5 class="mui-ellipsis" v-text="item.title"></h5><span v-text="item.date"></span>
- </router-link>
- </div>
- <router-link :to="{name:'CommonNotice',query:{type:1}}" class="vongi-link"><span class="mui-icon mui-icon-forward"></span></router-link>
- </div>
- <div class="mui-col-xs-12">
- <div id="slider" class="mui-slider">
- <div class="mui-slider-group">
-
- <!-- 第一张 -->
- <div class="mui-slider-item" v-for="(item,i) in bannerTipsList" :key="i">
- <a @click="showTips(item)" >
- <img :src="item.picUrl">
- </a>
- </div>
-
- </div>
-
- </div>
- </div>
- </div>
- </div>
- <div class="vongi-index-floor">
- <h4 class="vongi-floor-title">优品推荐</h4>
- <div class="vongi-index-inter flew-sp">
- <div class="mui-col-xs-12">
- <ul class="mui-table-view mui-grid-view mui-grid-9 vongi-floor-padded">
- <li class="mui-table-view-cell mui-media mui-col-xs-6">
- <a href="javascript:void(0)">
- <div class="vongi-shop-img"><img src="http://rccs.oss-cn-hangzhou.aliyuncs.com/jp_housekeeper/img/camera02.jpg?x-oss-process=image/resize,h_100,m_lfit" width="100%" /></div>
- <div class="mui-media-body">智能手表</div>
- <div class="mui-media-body color-yellow">¥399.0</div>
- </a>
- </li>
- <li class="mui-table-view-cell mui-media mui-col-xs-6">
- <a href="javascript:void(0)">
- <div class="vongi-shop-img"><img src="http://rccs.oss-cn-hangzhou.aliyuncs.com/jp_housekeeper/img/camera01.jpg?x-oss-process=image/resize,h_100,m_lfit" width="100%" /></div>
- <div class="mui-media-body">看护摄像头</div>
- <div class="mui-media-body color-yellow">¥199.0</div>
- </a>
- </li>
- </ul>
- </div>
- </div>
- </div>
- <Tips :bannerTipsVisible="bannerTipsVisible" :bannerTipsPicUrl="bannerTipsPicUrl" :bannerTipsActivity="bannerTipsActivity"
- @bannerTipsHide="bannerTipsHide"></Tips>
- </div>
- <nav-menu :router="[{name:'Master'},{name:'MasterMineMessage'},{name:'MasterMineCenter'}]"></nav-menu>
- <loading :visible="isLoading"></loading>
- </div>
- </template>
- <script>
- require('$project/assets/js/mui.picker.min.js');
- import * as API_Common from '$project/apis/common'
-
- import * as API_Notice from '@/apis/Common/notice'
- 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 Tips from '$project/components/Tips.vue'
-
- import NavMenu from '@/components/NavMenu.vue'
- import {
- mapGetters,
- mapMutations
- } from 'vuex'
- import {
- hourDistance,
- currentTimeStamp,
- parseUnixTime
- } from '$project/utils'
- import * as types from '$project/store/mutation-types'
- export default {
- name: 'Master',
- components: {
- Common,
- Loading,
- TopHeader,
- NavMenu,Tips
- },
- data() {
- return {
- isLoading: false,
- roleList: [],
- bannerList:[
- {
- img:'Frame 913.png',
- url:"img:Frame 912 (2).png"
- }
- ],
-
- bannerTipsList: [],
- bannerInterval: null,
- //弹窗公告, 有就显示
- bannerTipsVisible: false,
- bannerTipsPicUrl: '',
- bannerTipsId: '',
- bannerTipsActivity: null,
- noticeList: [],
- }
- },
- created() {},
-
- methods: {
- showTips(item){
- this.bannerTipsVisible = true;
-
- this.bannerTipsPicUrl = item.linkUrl;
-
- },
- getBannerTipsInfo() {
-
- var time =parseUnixTime(currentTimeStamp(), '{y}-{m}-{d}');
- var bannerTipsTime= window.localStorage.getItem("xpgj_bannerTipsTime");
- //tips 广告
- API_Common.getBannerInfo("5").then(response => {
- // = response;
- this.bannerTipsList=response;
-
- if(!bannerTipsTime||bannerTipsTime!=time){
-
- if (this.bannerTipsList.length > 0) {
-
- this.bannerTipsVisible = true;
- var x = Math.floor(Math.random() * this.bannerTipsList.length);
- this.bannerTipsPicUrl = this.bannerTipsList[x].linkUrl;
- window.localStorage.setItem("xpgj_bannerTipsTime",time);
-
- }
- }
-
-
- }).catch(error => {
- mui.toast(error);
- })
- },
- bannerTipsHide() {
- this.bannerTipsVisible = false;
- },
- updateCompany(){
- var _this = this;
- var btnArray = ['取消', '确认'];
- mui.confirm('选择新公司后,需要新的公司管理员审核通过后方可正式加入', '确认变更', btnArray, function(e) {
- if (e.index == 1) {
- window.location.href="../home/#/register/business/step2?isupdate=1"
- }
- })
-
- },
- goto(url){
- window.location=url;
- },
- //获取用户角色列表
- getRoleList() {
- //this.isLoading = true;
- API_User.getRoleList().then(response => {
- this.isLoading = false;
- this.roleList = response.list;
- }).catch(error => {
- this.isLoading = false;
- mui.toast(error);
- })
- },
- //选择角色
- selectRole() {
- var roleList = [];
- if(this.roleList.length==0){
- mui.toast("加载中..");
- return
- }
- for (var i = 0; i < this.roleList.length; i++) {
- var preName = this.person_popedom.id == this.roleList[i]['id'] ? '(当前)' : '';
- roleList.push({
- value: this.roleList[i]['id'],
- text: preName + this.roleList[i]['companyName'] + ' ' + this.roleList[i]['personRoleName'],
- })
- }
- var _this = this;
- var picker = new mui.PopPicker();
- picker.setData(roleList);
- picker.pickers[0].setSelectedValue(this.person_popedom.id , 2000);
- picker.show(function(selectItems) {
- _this.switchRole(selectItems[0].value);
- })
- },
- //切换角色
- switchRole(id) {
- this.isLoading = true;
- API_User.exchangePopedom({
- id: id
- }).then(response => {
- this.isLoading = false;
- this.$refs.common.getDataByOpenId();
- }).catch(error => {
- this.isLoading = false;
- mui.toast(error);
- })
- },
- //预读取通知消息
- prefetchNotice() {
- //this.isLoading = true;
- API_Notice.prefetch().then(response => {
- this.isLoading = false;
- this.set_wd_message_num(response);
- this.getLastNotice();
- }).catch(error => {
- this.isLoading = false;
- mui.toast(error);
- })
- },
- //获取最新二条通知消息
- getLastNotice() {
- //this.isLoading = true;
- API_Notice.getTopList({
- type: 1,
- limit: 2,
- excludeMessageId: ''
- }).then(response => {
- this.noticeList = response;
- this.isLoading = false;
- }).catch(error => {
- this.isLoading = false;
- mui.toast(error);
- })
- },
- //引入图片
- requirePic(file) {
- if (file) {
- if (file.indexOf('http') == 0) {
- return file+'?x-oss-process=image/resize,h_40,m_lfit';
- } else {
- return require('$project/assets/img/' + file);
- }
- }
- },
- asynCallBack(bl) {
-
- if(!bl){
- //获取用户角色列表
- this.getRoleList();
- //获取最新二条通知消息
- this.prefetchNotice();
- }else{
- window.location.href = '../home/#/select';
- }
-
- },
- ...mapMutations({
- set_wd_message_num: types.SET_WD_MESSAGE_NUM,
- })
- },
- mounted() {
- var gallery = mui('.mui-slider');
- var slider = gallery.slider({
- interval: 2000, //自动轮播周期,若为0则不自动播放,默认为0;
- bounce: true //是否启用回弹
- });
-
- this.getBannerTipsInfo()
-
-
- },
- destroyed() {
- },
- computed: {
- pageTitle: {
- // getter
- get: function() {
- return this.person_data ? this.person_data.companyName : '小鹏管家';
- },
- // setter
- set: function(newValue) {
- console.log(newValue)
- }
- },
- ...mapGetters({
- openId: 'wx_openid',
- token: 'token',
- person_data: 'person_data',
- person_popedom: 'person_popedom',
- menu_list: 'menu_list',
- common_menu_list: 'common_menu_list',
- })
- }
- }
- </script>
- <style scoped src="$project/assets/css/xpgj.css"></style>
- <style src="$project/assets/css/iconfont.css"></style>
- <style src="$project/assets/css/mui.picker.min.css"></style>
- <style scoped>
- .red-after:after {
- background: red;
- }
- .work-status-color-1::after {
- background-color: #3385FF !important;
- }
- .work-status-color-2::after {
- background-color: #FF8800 !important;
- }
- .work-status-color-3::after {
- background-color: #FF8800 !important;
- }
- .work-status-color-4::after {
- background-color: #8855FF !important;
- }
- </style>
|