303 lines
6.9 KiB
Vue
303 lines
6.9 KiB
Vue
<!-- 首页 -->
|
||
<template>
|
||
<JeepayBackground :bgColorStyle="{}">
|
||
<!-- 导航条 -->
|
||
<JeepayCustomNavbar title="首页" textColor="#fff"
|
||
bgDefaultColor="linear-gradient(270deg, rgba(72, 192, 255, 1) 0%, rgba(51, 157, 255, 1) 100%)" />
|
||
|
||
<!-- 统计 or 快捷扫码 -->
|
||
<Stats ref="statsRef" />
|
||
|
||
<!-- 导航栅格 -->
|
||
<JeepayNavigation :navList="navList" type="grid" />
|
||
<blcok v-for="v in vdata.adList" :key="v.adverId">
|
||
<JeepayBanner :list="v.appContent" :interval="v.changeTime" v-if="v.appPlaceType == 2" />
|
||
<JeepayAdCard :list="v.appContent" v-if="v.appPlaceType == 1" />
|
||
</blcok>
|
||
<view style="height: 20rpx" v-if="vdata.adList.length"></view>
|
||
<!-- 公告消息前几条 , 自定义显示字段。 -->
|
||
<JeepayListview tableTitle="最新公告" :dataList="vdata.noticeList" @click="listviewClickFunc"
|
||
:fields="{ title: 'title', subtitle: 'createdAt' }" />
|
||
</JeepayBackground>
|
||
</template>
|
||
|
||
<script setup>
|
||
import {
|
||
reactive,
|
||
ref,
|
||
onMounted,
|
||
nextTick
|
||
} from 'vue';
|
||
import {
|
||
onShareAppMessage,
|
||
onShareTimeline
|
||
} from '@dcloudio/uni-app';
|
||
import {
|
||
reqLoad,
|
||
API_URL_SYS_ARTICLES,
|
||
$indexStatistics,
|
||
$getSiteInfos
|
||
} from '@/http/apiManager.js';
|
||
import go from '@/commons/utils/go.js';
|
||
import Stats from './components/Stats.vue';
|
||
import registerPush from '@/commons/utils/pushmsg/registerPush.js';
|
||
import pushMsgManage from '@/commons/utils/pushmsg/pushMsgManage.js';
|
||
|
||
import {
|
||
onPullDownRefresh,
|
||
onLoad
|
||
} from '@dcloudio/uni-app';
|
||
import storageManage from '@/commons/utils/storageManage.js';
|
||
import {
|
||
$adList
|
||
} from '@/http/apiManager.js';
|
||
onLoad((options) => {
|
||
//注册 push连接逻辑
|
||
registerPush();
|
||
// 添加语音播报的消息推送
|
||
pushMsgManage.addPushMsgEventListener();
|
||
});
|
||
|
||
// 导航列表
|
||
const navList = [{
|
||
title: '收银',
|
||
icon: '/static/indexImg/icon-cashier.svg',
|
||
pageUrl: 'PAGES_QUICK_PAY',
|
||
},
|
||
{
|
||
title: '商品管理',
|
||
icon: '/static/indexImg/icon-product-control.svg',
|
||
pageUrl: 'PAGES_PRODUCT',
|
||
},
|
||
{
|
||
title: '分类管理',
|
||
icon: '/static/indexImg/icon-category.svg',
|
||
pageUrl: 'PAGES_CATEGORY',
|
||
},
|
||
{
|
||
title: '用户管理',
|
||
icon: '/static/indexImg/icon-user.svg',
|
||
pageUrl: 'PAGES_USER_CONTROL',
|
||
},
|
||
{
|
||
title: '桌台',
|
||
icon: '/static/indexImg/icon-table.svg',
|
||
pageUrl: 'PAGES_TABLE'
|
||
},
|
||
{
|
||
title: '代客下单',
|
||
icon: '/static/indexImg/icon-substitute-ordering.svg',
|
||
pageUrl: 'PAGES_CREATE_ORDER',
|
||
},
|
||
{
|
||
title: '打印机',
|
||
icon: '/static/indexImg/icon-printer.svg',
|
||
pageUrl: 'PAGES_PRINTER_INDEX',
|
||
},
|
||
{
|
||
title: '进销存',
|
||
icon: '/static/indexImg/icon-invoicing.svg',
|
||
pageUrl: 'PAGES_INVOICING_INDEX',
|
||
},
|
||
{
|
||
title: '交班',
|
||
icon: '/static/indexImg/icon-work.svg',
|
||
pageUrl: 'PAGES_WORK_INDEX',
|
||
},
|
||
{
|
||
title: '预定座位',
|
||
icon: '/static/indexImg/icon-yuyue-zuo.svg',
|
||
pageUrl: 'PAGES_RESERVE_SEAT_INDEX',
|
||
},
|
||
{
|
||
title: '预约管理',
|
||
icon: '/static/indexImg/icon-yuyue.svg',
|
||
pageUrl: 'PAGES_BOOKING_INDEX',
|
||
},
|
||
{
|
||
title: '充值管理',
|
||
icon: '/static/indexImg/icon-recharge.svg',
|
||
pageUrl: 'PAGES_RECHARGE_INDEX',
|
||
},
|
||
{
|
||
title: '存酒管理',
|
||
icon: '/static/indexImg/icon-wine.svg',
|
||
pageUrl: 'PAGES_STORING_WINE_INDEX',
|
||
},
|
||
{
|
||
title: '进件管理',
|
||
icon: '/static/indexImg/icon-passage.svg',
|
||
pageUrl: 'PAGES_APPLYMENT',
|
||
entId: 'ENT_MCH_APPLYMENT_LIST'
|
||
},
|
||
{
|
||
title: '商户管理',
|
||
icon: '/static/indexImg/business.svg',
|
||
pageUrl: 'PAGES_APPLYMENT_BUSINESS',
|
||
entId: 'ENT_MCH_APPLYMENT_LIST'
|
||
},
|
||
{
|
||
title: '门店管理',
|
||
icon: '/static/indexImg/icon-store.svg',
|
||
pageUrl: 'PAGES_STORE',
|
||
entId: 'ENT_MCH_STORE'
|
||
},
|
||
{
|
||
title: '设备管理',
|
||
icon: '/static/indexImg/icon-calc.svg',
|
||
pageUrl: 'PAGES_DEVICE_MAIN',
|
||
entId: 'ENT_DEVICE'
|
||
},
|
||
{
|
||
title: '成员管理',
|
||
icon: '/static/indexImg/icon-staff.svg',
|
||
pageUrl: 'PAGES_USER',
|
||
entId: 'ENT_UR_USER_LIST'
|
||
},
|
||
{
|
||
title: '数据中心',
|
||
icon: '/static/indexImg/icon-pro.svg',
|
||
pageUrl: 'PAGES_STAT',
|
||
entId: 'ENT_ORDER_STATISTIC'
|
||
},
|
||
// {
|
||
// title: '商户应用',
|
||
// icon: '/static/indexImg/icon-app.svg',
|
||
// pageUrl: 'PAGES_APP',
|
||
// entId: 'ENT_MCH_APP_LIST'
|
||
// },
|
||
{
|
||
title: '会员中心',
|
||
icon: '/static/indexImg/icon-member.svg',
|
||
pageUrl: 'PAGES_MEMBER_CENTER',
|
||
entId: 'ENT_MCH_MEMBER'
|
||
},
|
||
{
|
||
title: '广告管理',
|
||
icon: '/static/indexImg/icon-ad.svg',
|
||
pageUrl: 'PAGES_AD_LIST',
|
||
entId: 'ENT_ADVERT_CONTROL'
|
||
},
|
||
{
|
||
title: '营销红包',
|
||
icon: '/static/indexImg/red-envelope.svg',
|
||
pageUrl: 'PAGES_RED_INDEX',
|
||
entId: 'ENT_MCH_MEMBER'
|
||
},
|
||
{
|
||
title: '极速开票',
|
||
icon: '/static/indexImg/red-envelope.svg',
|
||
pageUrl: 'PAGES_INVOICE'
|
||
},
|
||
// {
|
||
// title: '优惠券',
|
||
// icon: '/static/indexImg/red-envelope.svg',
|
||
// pageUrl: 'PAGES_COUPON_INDEX'
|
||
// },
|
||
{
|
||
title: '销售汇总',
|
||
icon: '/static/indexImg/PAGE_SALES_SUMMARY.svg',
|
||
pageUrl: 'PAGES_SALES_SUMMARY'
|
||
}
|
||
|
||
];
|
||
// 如果不是超管 删除 刷脸广告菜单
|
||
if (storageManage.userInfo().userType != 1) {
|
||
const index = navList.findIndex((v) => v.entId == 'ENT_ADVERT_CONTROL');
|
||
if (index != -1) {
|
||
navList.splice(index, 1);
|
||
}
|
||
}
|
||
const statsRef = ref();
|
||
|
||
const vdata = reactive({
|
||
noticeList: [], // 公告列表
|
||
adList: [],
|
||
shareImgUrl: '' //分享图片
|
||
});
|
||
|
||
// 公告的点击事件。
|
||
const listviewClickFunc = (isClickMore, record) => {
|
||
if (isClickMore) {
|
||
return go.to('PAGES_NOTICE_LIST');
|
||
}
|
||
|
||
return go.to('PAGES_NOTICE_DETAIL', {
|
||
id: record.articleId
|
||
});
|
||
};
|
||
|
||
// 刷新数据 async 异步函数, 每个查询需要返回promise对象,并标识await
|
||
async function refData() {
|
||
// 查询公告列表
|
||
await reqLoad
|
||
.list(API_URL_SYS_ARTICLES, {
|
||
pageSize: 5,
|
||
articleType: 1
|
||
})
|
||
.then(({
|
||
bizData
|
||
}) => {
|
||
vdata.noticeList = bizData.records;
|
||
});
|
||
|
||
// 调用子组件方法 , 避免组件没有加载完成。
|
||
nextTick(() => statsRef.value.refData());
|
||
|
||
// 停止刷新
|
||
uni.stopPullDownRefresh();
|
||
}
|
||
// 获取 统计数据
|
||
const getIndexStat = (time) => {
|
||
$indexStatistics(time).then(({
|
||
bizData
|
||
}) => {
|
||
vdata.statInfo = bizData.dayCount;
|
||
});
|
||
};
|
||
|
||
// 请求首页广告
|
||
$adList({
|
||
appPlace: 2
|
||
}).then(({
|
||
bizData
|
||
}) => {
|
||
if (!bizData) return false;
|
||
bizData.forEach((v) => {
|
||
v.appContent = JSON.parse(v.appContent);
|
||
});
|
||
vdata.adList = bizData;
|
||
});
|
||
// 启动加载
|
||
onMounted(() => {
|
||
refData();
|
||
});
|
||
// 获取配置信息
|
||
$getSiteInfos().then(({
|
||
bizData
|
||
}) => {
|
||
vdata.shareImgUrl = bizData.shareImgUrl;
|
||
});
|
||
// 微信分享
|
||
onShareAppMessage((res) => {
|
||
if (res.from == 'menu')
|
||
return {
|
||
title: uni.$appName,
|
||
path: '/pages/index/index',
|
||
imageUrl: vdata.shareImgUrl
|
||
};
|
||
});
|
||
// 分享到朋友圈
|
||
onShareTimeline(() => {
|
||
return {
|
||
title: uni.$appName,
|
||
imageUrl: vdata.shareImgUrl
|
||
};
|
||
});
|
||
// 下拉刷新
|
||
onPullDownRefresh(() => {
|
||
refData();
|
||
});
|
||
</script>
|
||
|
||
<style lang="scss" scoped></style> |