first
This commit is contained in:
215
pages/index/components/Stats.vue
Normal file
215
pages/index/components/Stats.vue
Normal file
@@ -0,0 +1,215 @@
|
||||
<template>
|
||||
<view class="index-header" @tap="go.to('PAGES_STAT')">
|
||||
<view class="index-selected">
|
||||
<view class="index-time">
|
||||
<block v-for="v in timeList" :key="v.value">
|
||||
<view class="time-item flex-center" :class="{ 'time-active': vdata.timeSelected == v.value }" @tap.stop="changeTimeFunc(v.value)">
|
||||
{{ v.title }}
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
<view class="index-scan flex-center" @click.stop="scanFunc">
|
||||
<image src="/static/iconImg/icon-scan-index.svg" mode="scaleToFill" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="receipts-money">
|
||||
<text class="money-title">成交金额 (元)</text>
|
||||
<view class="money-num">{{ vdata.payAmount <= -1 ? '--' : cal.cert2Dollar(vdata.payAmount) }}</view>
|
||||
</view>
|
||||
<view class="money-list">
|
||||
<view class="money-item">
|
||||
<text class="money-title">成交笔数</text>
|
||||
<view class="money-num">{{ vdata.payCount <= -1 ? '--' : vdata.payCount }}</view>
|
||||
</view>
|
||||
<view class="money-item">
|
||||
<text class="money-title">退款金额 (元)</text>
|
||||
<view class="money-num">{{ vdata.refundAmount <= -1 ? '--' : cal.cert2Dollar(vdata.refundAmount) }}</view>
|
||||
</view>
|
||||
<view class="money-item">
|
||||
<text class="money-title">退款笔数</text>
|
||||
<view class="money-num">{{ vdata.refundCount <= -1 ? '--' : vdata.refundCount }}</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="money-list" v-if="vdata.memberIsShow">
|
||||
<view class="money-item">
|
||||
<text class="money-title">会员充值(元)</text>
|
||||
<view class="money-num">{{ cal.cert2Dollar(memberData.payAmount) }}</view>
|
||||
</view>
|
||||
<view class="money-item">
|
||||
<text class="money-title">会员消费(元)</text>
|
||||
<view class="money-num">{{ cal.cert2Dollar(Math.abs(memberData.changeAmount)) }}</view>
|
||||
</view>
|
||||
|
||||
<view class="money-item">
|
||||
<text class="money-title">会员消费笔数</text>
|
||||
<view class="money-num">{{ memberData.changeCount }}</view>
|
||||
</view>
|
||||
</view>
|
||||
<view>
|
||||
<!-- <text class="money-title">展开全部</text> -->
|
||||
</view>
|
||||
<!-- <button v-if="ak.ent.has('ENT_C_QUICKCASHIER')" class="quick-money flex-center" @tap.stop="go.to('PAGES_QUICK_PAY')">快捷收银</button> -->
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, reactive, onMounted } from 'vue';
|
||||
import { $indexStatistics, $memberInfoCount } from '@/http/apiManager.js';
|
||||
import cal from '@/commons/utils/cal.js';
|
||||
import go from '@/commons/utils/go.js';
|
||||
import ak from '@/commons/utils/ak.js';
|
||||
import ent from '@/commons/utils/ent.js';
|
||||
import unionScan from '@/commons/utils/unionScan.js';
|
||||
import storageManage from '@/commons/utils/storageManage.js';
|
||||
|
||||
onMounted(() => {
|
||||
vdata.memberIsShow = ent.has('ENT_MCH_MEMBER') && storageManage.userInfo().isHasMemberEnt;
|
||||
if (ent.has('ENT_MCH_MEMBER') && storageManage.userInfo().isHasMemberEnt) {
|
||||
getMemberData();
|
||||
}
|
||||
});
|
||||
const emits = defineEmits(['click']);
|
||||
const timeList = [
|
||||
{ title: '今天', value: 'today' },
|
||||
{ title: '昨天', value: 'yesterday' },
|
||||
{ title: '近7天', value: 'near2now_7' },
|
||||
{ title: '近30天', value: 'near2now_30' }
|
||||
];
|
||||
|
||||
const vdata = reactive({
|
||||
timeSelected: 'today', // 当前时间选择器的
|
||||
payAmount: -1, // 实收金额
|
||||
payCount: -1, // 交易笔数
|
||||
refundAmount: -1, // 退款金额
|
||||
refundCount: -1, // 退款笔数
|
||||
memberIsShow: false //是否开启会员模块
|
||||
});
|
||||
const memberData = reactive({});
|
||||
// 切换 时间卡片
|
||||
function changeTimeFunc(val) {
|
||||
vdata.timeSelected = val;
|
||||
refData();
|
||||
if (vdata.memberIsShow) {
|
||||
getMemberData();
|
||||
}
|
||||
}
|
||||
// 根据选择请求数据
|
||||
function refData() {
|
||||
// 获取 统计数据
|
||||
$indexStatistics(vdata.timeSelected).then(({ bizData }) => {
|
||||
vdata.payAmount = bizData.totalSuccAmt;
|
||||
vdata.payCount = bizData.totalSuccNum;
|
||||
vdata.refundAmount = bizData.totalRefundAmt;
|
||||
vdata.refundCount = bizData.totalRefundNum;
|
||||
});
|
||||
}
|
||||
|
||||
// 扫码动作
|
||||
function scanFunc() {
|
||||
unionScan.scan(true).then((res) => {
|
||||
// 登录类型
|
||||
if (res.type == unionScan.QR_TYPE_LOGIN) {
|
||||
return go.to('PAGES_SCAN_LOGIN', { qrcodeNo: res.originQrVal });
|
||||
}
|
||||
|
||||
// 二维码
|
||||
if (res.type == unionScan.QR_TYPE_QRC) {
|
||||
return go.to('PAGES_APP_CODE_BIND', { qrcId: res.bizValue });
|
||||
}
|
||||
});
|
||||
}
|
||||
const getMemberData = () => {
|
||||
$memberInfoCount({ queryDateRange: vdata.timeSelected }).then(({ bizData }) => {
|
||||
Object.assign(memberData, bizData);
|
||||
});
|
||||
};
|
||||
defineExpose({ refData });
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.index-header {
|
||||
width: 680rpx;
|
||||
margin: 0 auto;
|
||||
transform: translateY(30rpx);
|
||||
margin-bottom: 25rpx;
|
||||
padding: 20rpx;
|
||||
box-sizing: border-box;
|
||||
border-radius: $J-b-r32;
|
||||
background: $jeepay-bg-primary;
|
||||
backdrop-filter: blur(20rpx);
|
||||
box-shadow: 0 50rpx 70rpx -60rpx rgba(0, 65, 164, 0.5);
|
||||
.index-selected {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
.index-time {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
width: 490rpx;
|
||||
height: 90rpx;
|
||||
border-radius: 20rpx;
|
||||
padding: 10rpx;
|
||||
background-color: rgba($color: #fff, $alpha: 0.1);
|
||||
.time-item {
|
||||
flex: 1;
|
||||
// width: 120rpx;
|
||||
height: 100%;
|
||||
font-size: 32rpx;
|
||||
font-weight: 500;
|
||||
color: rgba(255, 255, 255, 0.75);
|
||||
}
|
||||
.time-active {
|
||||
background-color: $J-bg-ff;
|
||||
color: $J-color-t21;
|
||||
border-radius: 12rpx;
|
||||
}
|
||||
}
|
||||
.index-scan {
|
||||
width: 110rpx;
|
||||
height: 110rpx;
|
||||
border-radius: 20rpx;
|
||||
background-color: rgba($color: #fff, $alpha: 0.1);
|
||||
image {
|
||||
width: 41rpx;
|
||||
height: 35rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
.receipts-money {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
margin: 30rpx 0;
|
||||
color: $J-color-tff;
|
||||
.money-num {
|
||||
font-size: 70rpx;
|
||||
font-weight: 500;
|
||||
}
|
||||
}
|
||||
.money-list {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding: 0 72rpx;
|
||||
margin-bottom: 50rpx;
|
||||
text-align: center;
|
||||
color: $J-color-tff;
|
||||
.money-item {
|
||||
.money-num {
|
||||
font-size: 32rpx;
|
||||
font-weight: 500;
|
||||
}
|
||||
}
|
||||
}
|
||||
.money-title {
|
||||
margin-bottom: 10rpx;
|
||||
font-size: 26rpx;
|
||||
font-weight: 400;
|
||||
color: $J-color-tSff;
|
||||
}
|
||||
.quick-money {
|
||||
height: 110rpx;
|
||||
border-radius: 20rpx;
|
||||
color: $J-color-t29;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
293
pages/index/index.vue
Normal file
293
pages/index/index.vue
Normal file
@@ -0,0 +1,293 @@
|
||||
<!-- 首页 -->
|
||||
<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'
|
||||
}
|
||||
|
||||
];
|
||||
// 如果不是超管 删除 刷脸广告菜单
|
||||
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>
|
||||
191
pages/index/indexCopy.vue
Normal file
191
pages/index/indexCopy.vue
Normal file
@@ -0,0 +1,191 @@
|
||||
<!-- 首页 -->
|
||||
<template>
|
||||
<view class="" @click="tologin">
|
||||
<JeepayBackground :bgColorStyle="{}">
|
||||
<!-- 导航条 -->
|
||||
<JeepayCustomNavbar title="首页" textColor="#fff" bgDefaultColor="linear-gradient(270deg, rgba(72, 192, 255, 1) 0%, rgba(51, 157, 255, 1) 100%)" />
|
||||
|
||||
<!-- 统计 or 快捷扫码 -->
|
||||
<view class="code-box">
|
||||
<view class="today-box">
|
||||
<view class="today">
|
||||
<view class="today-title">今天</view>
|
||||
<view class="jing-box">
|
||||
<text>昨天</text>
|
||||
<text>近7天</text>
|
||||
<text>近30天</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="saoma">扫码</view>
|
||||
</view>
|
||||
<view class="" style="display: flex; flex-direction: column; justify-content: space-around; align-items: center; height: 400rpx; color: #fff; font-size: 28rpx">
|
||||
<view class="" style="display: flex; flex-direction: column; align-items: center">
|
||||
<view class="">成交金额(元)</view>
|
||||
<view class="">0.00</view>
|
||||
</view>
|
||||
<view class="" style="display: flex; justify-content: space-around; width: 100%; align-items: center">
|
||||
<view class="" style="display: flex; flex-direction: column; align-items: center">
|
||||
<view class="">成交笔数</view>
|
||||
<view class="">0</view>
|
||||
</view>
|
||||
<view class="" style="display: flex; flex-direction: column; align-items: center">
|
||||
<view class="">退款金额(元)</view>
|
||||
<view class="" style="font-size: 60rpx">0.00</view>
|
||||
</view>
|
||||
<view class="" style="display: flex; flex-direction: column; align-items: center">
|
||||
<view class="">退款笔数</view>
|
||||
<view class="">0</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="" style="width: 100%">
|
||||
<button>快捷收银</button>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 导航栅格 -->
|
||||
<view class="" style="margin-top: 85%; display: flex; flex-wrap: wrap; padding: 0 40rpx; justify-content: space-around">
|
||||
<view class="" v-for="item in navList" style="width: 30%; margin: 10rpx 0; background: #fff; padding: 10rpx 0; border-radius: 30rpx">
|
||||
<view class="" style="display: flex; flex-direction: column; justify-content: center; align-items: center">
|
||||
<image :src="item.icon" mode="" style="width: 100rpx; height: 100rpx"></image>
|
||||
{{ item.title }}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</JeepayBackground>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import storageManage from '@/commons/utils/storageManage.js';
|
||||
// 导航列表
|
||||
const navList = [
|
||||
{
|
||||
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'
|
||||
}
|
||||
];
|
||||
|
||||
// 如果不是超管 删除 刷脸广告菜单
|
||||
if (storageManage.userInfo().userType != 1) {
|
||||
const index = navList.findIndex((v) => v.entId == 'ENT_ADVERT_CONTROL');
|
||||
if (index != -1) {
|
||||
navList.splice(index, 1);
|
||||
}
|
||||
}
|
||||
|
||||
const tologin = () => {
|
||||
uni.redirectTo({
|
||||
url: '/pages/login/index'
|
||||
});
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.code-box {
|
||||
background: #1c72fe;
|
||||
position: fixed;
|
||||
width: 90%;
|
||||
right: 5%;
|
||||
height: 500rpx;
|
||||
border-radius: 20rpx;
|
||||
padding: 20rpx;
|
||||
box-sizing: border-box;
|
||||
top: 15%;
|
||||
|
||||
.today-box {
|
||||
display: flex;
|
||||
color: #fff;
|
||||
.today {
|
||||
display: flex;
|
||||
flex: 1;
|
||||
margin-right: 10rpx;
|
||||
background: #368bfd;
|
||||
padding: 10rpx;
|
||||
border-radius: 10rpx;
|
||||
}
|
||||
|
||||
.today-title {
|
||||
height: 70rpx;
|
||||
background: #fff;
|
||||
width: 100rpx;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
border-radius: 10rpx;
|
||||
color: #1b6dfe;
|
||||
}
|
||||
.saoma {
|
||||
width: 100rpx;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
border-radius: 10rpx;
|
||||
color: #fff;
|
||||
background: #368bfd;
|
||||
}
|
||||
|
||||
.jing-box {
|
||||
display: flex;
|
||||
flex: 1;
|
||||
justify-content: space-around;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
93
pages/index/scan.vue
Normal file
93
pages/index/scan.vue
Normal file
@@ -0,0 +1,93 @@
|
||||
<template>
|
||||
<JeepayCustomNavbar backIcon="closeempty" title="登录取认" backCtrl="back" />
|
||||
<view class="scan-content">
|
||||
<view class="computer">
|
||||
<image src="/static/iconImg/computer.svg" mode=""></image>
|
||||
<text>您正在登录商户管理系统网站</text>
|
||||
</view>
|
||||
<view class="btn confirm" @tap="codeOk('confirmed')" hover-class="touch-button ">确认登录</view>
|
||||
<view class="btn cancel" @tap="codeOk('canceled')" hover-class="touch-hover">取消登录</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, reactive } from 'vue'
|
||||
import { $scanCodeLogin } from '@/http/apiManager.js'
|
||||
import { onLoad } from '@dcloudio/uni-app'
|
||||
import infoBox from '@/commons/utils/infoBox.js'
|
||||
import go from '@/commons/utils/go.js'
|
||||
|
||||
const vdata = reactive({
|
||||
qrcodeNo : ''
|
||||
})
|
||||
|
||||
onLoad((option) => {
|
||||
vdata.qrcodeNo = option.qrcodeNo
|
||||
|
||||
// 已扫
|
||||
$scanCodeLogin(vdata.qrcodeNo, "scaned")
|
||||
|
||||
})
|
||||
|
||||
const codeOk = (val) => {
|
||||
$scanCodeLogin(vdata.qrcodeNo, val).then((res) => {
|
||||
if(val == 'confirmed'){
|
||||
return infoBox.showSuccessToast('登录成功')
|
||||
}else{
|
||||
return infoBox.showToast("已取消")
|
||||
}
|
||||
}).then(() => {
|
||||
go.back()
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.scan-content {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
.computer {
|
||||
margin-top: 260rpx;
|
||||
margin-bottom: 150rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
image {
|
||||
width: 200rpx;
|
||||
height: 200rpx;
|
||||
}
|
||||
text {
|
||||
line-height: 46px;
|
||||
font-size: 33rpx;
|
||||
color: #000000;
|
||||
}
|
||||
}
|
||||
.btn {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 360rpx;
|
||||
height: 110rpx;
|
||||
border-radius: 20rpx;
|
||||
background: #4dab68;
|
||||
font-size: 33rpx;
|
||||
}
|
||||
.confirm {
|
||||
color: #fff;
|
||||
background: $jeepay-bg-primary;
|
||||
}
|
||||
.cancel {
|
||||
margin-top: 35rpx;
|
||||
color: #666;
|
||||
background: transparent;
|
||||
}
|
||||
}
|
||||
.canceled {
|
||||
width: 50rpx;
|
||||
height: 50rpx;
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user