new-mshop-view/pages/agent/center.vue

343 lines
9.2 KiB
Vue

<template>
<view class="main-content">
<!-- 顶部信息 -->
<view class="header">
<view class="header-box" @click="changeAgentPopupShow">
<span class='font line1'>{{ getAgentTypeText(agent_info, '暂无代理身份') }}</span>
<template v-if="Object.values(agent_list).length > 1">
<text class="iconfont icon-xiala1 spin"></text>
</template>
</view>
</view>
<!--操作内容-->
<view v-if="Object.values(menu_list).length > 0" class="menu-list">
<view @click="clickMenu(item)" class="listBox" v-for="(item,index) in menu_list">
<text :class="item.icon" class="businessIcon"></text>
<view>{{item.title}}</view>
</view>
</view>
<emptyPage v-else title="暂无任何操作权限~"></emptyPage>
<!--授权登录-->
<authorize @onLoadFun="onLoadFun" :isAuto="isAuto" :isShowAuth="isShowAuth" @authColse="authClose"></authorize>
<!--切换代理身份-->
<uni-popup ref="changeAgent" type="bottom">
<view class="change-agent-content">
<scroll-view scroll-y="true">
<radio-group name="store_name" @change="changeAgent">
<template v-for="(item,index) in agent_list">
<div class="store-list">
<label :key="item.id" class="store-list-item">
<view class="text">{{ getAgentTypeText(item) }}</view>
<radio class="radio" :value="index" :checked="agent_info.id == item.id ? true : false" />
</label>
</div>
</template>
</radio-group>
</scroll-view>
</view>
</uni-popup>
<!--二维码-->
<uni-popup ref="qrCodePopup" type="center">
<view class="qr-code-content">
<image class="image" :src="qrCode"></image>
<view class="close-qr-code" @click="closeQrCode()">关闭</view>
</view>
</uni-popup>
</view>
</template>
<script>
import emptyPage from '@/components/emptyPage.vue'
import {mapGetters} from "vuex";
import authorize from '@/components/Authorize';
import { myAgentList,inviteSupplierJoinQrCode } from "@/api/agent";
export default {
name: 'business',
components: {
authorize,
emptyPage,
},
computed: {
menu_list() {
let menuList = [];
let agentType = this.agent_info.agent_type || 0;
if(Number(agentType) <= 5){
menuList.push({
title: '供应商邀请二维码',
type: 'supplier_qr_code',
url: '',
icon: 'iconfont icon-erweima1',
});
}
return menuList;
},
...mapGetters(['isLogin', 'uid', 'userInfo', 'viewColor'])
},
data() {
return {
// 登录相关
isAuto: false, //没有授权的不会自动授权
isShowAuth: false,//是否隐藏授权
// 代理信息
agent_list: {},
agent_info: {},
// 二维码
qrCode: '',
}
},
onLoad(options) {
// 判断:是否登录
if (!this.isLogin) {
// 未登录 授权登录
this.isAuto = true;
this.isShowAuth = true
}else{
// 已登录 获取信息
this.init();
}
},
methods: {
// 授权回调
onLoadFun() {
if(this.isLogin){
this.isShowAuth = false;
this.init();
}
},
// 授权关闭
authClose(e) {
this.isShowAuth = e
},
// 授权成功 初始化
init () {
this.getMyAgentList();
},
// 代理身份操作 - 获取当前登录用户的代理身份列表
getMyAgentList(){
let _this = this;
let params = {
is_get_self: 1,
not_page: 1
};
myAgentList(params).then(res => {
if (res.status == 200) {
let data = res.data || {};
if(Object.values(data).length <= 0){
this.$util.Tips({
title: '无有效的代理身份!',
},{tab:1,url:'/pages/user/index'});
return false;
}else{
_this.agent_list = res.data;
_this.agent_info = res.data[0] || {};
}
}
}).catch(err => {
this.$util.Tips({title: err});
});
},
// 代理身份操作 - 切换弹框显示
changeAgentPopupShow(){
if(Object.values(this.agent_list).length <= 1) return false;
this.$refs.changeAgent.open('bottom')
},
// 代理身份操作 - 切换弹框关闭
changeAgentPopupClose(){
this.$refs.changeAgent.close();
},
// 代理身份操作 - 切换代理
changeAgent(e){
let index = e.detail.value || e.target.value;
this.agent_info = this.agent_list[index] || {};
this.changeAgentPopupClose();
},
// 渲染类型信息
getAgentTypeText(info, title = '') {
switch (Number(info.agent_type)) {
case 1:
title = '发起人';
break;
case 2:
title = '省公司';
if(info.province_name) title += `(${info.province_name})`;
break;
case 3:
title = '外勤';
if(info.province_name) title += `(${info.province_name})`;
break;
case 4:
title = '内勤';
if(info.province_name) title += `(${info.province_name})`;
break;
case 5:
title = '运营商';
if(info.province_name || info.area_name || info.area_name) title += `(${info.province_name}${info.city_name}${info.area_name})`;
break;
case 6:
title = '合伙人';
if(info.province_name || info.area_name || info.area_name) title += `(${info.province_name}${info.city_name}${info.area_name})`;
break;
case 7:
title = '餐厅';
if(info.mer && info.mer.mer_name) title += `(${info.mer.mer_name})`;
break;
case 8:
title = '配送商';
break;
}
return title;
},
// 点击菜单 进行对应的操作
clickMenu(menu){
let _this = this;
switch (menu.type) {
// 邀请供应商入驻
case 'supplier_qr_code':
inviteSupplierJoinQrCode({agent_id: _this.agent_info.id}).then(res => {
if (res.status == 200) {
_this.qrCode = res.data.qr_code || '';
_this.$refs.qrCodePopup.open('center');
}
}).catch(err => {
this.$util.Tips({title: err});
});
break;
}
},
// 关闭二维码弹框
closeQrCode() {
this.$refs.qrCodePopup.close();
},
}
}
</script>
<style scoped lang="scss">
.main-content{
// 顶部信息
.header {
height: 305rpx;
background: linear-gradient(180deg, #2291F8 0%, rgba(34,145,248,0) 100%);
position: fixed;
width: 100%;
text-align: center;
top: 0;
left: 0;
.header-box {
min-width: 360rpx;
width: max-content;
margin: 33rpx auto 0 auto;
position: relative;
padding: 10rpx;
background-color: rgba(0, 0, 0, .25);
border-radius: 30rpx;
color: #FFFFFF;
.font {
display: inline-block;
margin-left: 10rpx;
line-height: 28rpx;
}
.spin {
display: inline-block;
transform: rotate(180deg);
font-size: 36rpx;
}
}
}
// 操作菜单列表
.menu-list {
width: 100%;
padding: 0 calc((100% - (345rpx * 2)) / 3);
margin-top: 151rpx;
display: inline-flex;
flex-wrap: wrap;
flex-direction: row;
justify-content: space-between;
.listBox {
width: 345rpx;
height: 270rpx;
background: #FFFFFF;
box-shadow: 0rpx 5rpx 15rpx rgba(142, 82, 77, 0.1);
border-radius: 20rpx;
z-index: 1;
margin-bottom: 20rpx;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
image {
width: 66rpx;
height: 66rpx;
background: #F34C20;
}
}
.businessIcon {
color: #2291F8;
font-size: 80rpx;
display: inline-block;
margin-bottom: 29rpx;
}
}
// 切换代理
.change-agent-content{
width: 100vw!important;
min-height: 65vh!important;
background-color: #fff;
border-top-left-radius: 30rpx!important;
border-top-right-radius: 30rpx!important;
padding: 30rpx!important;
.store-list{
width: 100% !important;
height: 120rpx;
line-height: 120rpx;
.store-list-item{
width: 100%;
display: inline-flex;
flex-direction: row;
flex-wrap: nowrap;
justify-content: space-between;
align-items: center;
}
.store-list-item:not(:last-child){
border-bottom: 2rpx solid #f6f6f6;
}
.title{
width: calc(100% - 80rpx) !important;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
/deep/ radio .wx-radio-input.wx-radio-input-checked, /deep/radio .uni-radio-input.uni-radio-input-checked {
border: 1px solid #2291F8 !important;
background-color: #2291F8 !important
}
}
// 二维码弹框
.qr-code-content{
width: 80vw;
.image{
width: 80vw;
height: 80vw;
}
.close-qr-code{
position: fixed;
top: 35rpx;
right: 70rpx;
color: #FFFFFF;
border: 2rpx solid #FFFFFF;
height: 40rpx;
line-height: 36rpx;
padding: 0 20rpx;
border-radius: 50rpx;
}
}
}
</style>