添加:员工添加 - 支持通过二维码邀请员工入驻
This commit is contained in:
parent
46b666b45f
commit
b7e853a34d
|
|
@ -4,6 +4,10 @@ import request from "@/utils/request.js";
|
|||
export function getStaffList(data) {
|
||||
return request.get('staff/staff_list',data);
|
||||
}
|
||||
// 员工管理 - 获取员工列表
|
||||
export function staffInviteQrCode(data) {
|
||||
return request.get('staff/staff_invite_qr_code',data);
|
||||
}
|
||||
// 员工管理 - 员工编辑
|
||||
export function editStaff(data) {
|
||||
return request.get('staff/staff_edit',data);
|
||||
|
|
|
|||
|
|
@ -6,13 +6,13 @@ let VUE_APP_WS_URL = `ws://${location.hostname}?type=user`
|
|||
let openPlantGrass = '-openPlantGrass-'
|
||||
|
||||
// 网络接口修改此字符 小程序域名要求https
|
||||
// let httpApi = 'https://bt.test.cdlfjy.com/' // 开发
|
||||
let httpApi = 'https://mp.scwmbh.cn/' // 生产
|
||||
let httpApi = 'https://bt.test.cdlfjy.com/' // 开发
|
||||
// let httpApi = 'https://mp.scwmbh.cn/' // 生产
|
||||
|
||||
|
||||
// 聊天接口修改此字符 小程序聊天要求wss 例如:
|
||||
// let wsApi = 'wss://bt.test.cdlfjy.com'
|
||||
let wsApi = 'wss://mp.scwmbh.cn'
|
||||
let wsApi = 'wss://bt.test.cdlfjy.com'
|
||||
// let wsApi = 'wss://mp.scwmbh.cn'
|
||||
|
||||
|
||||
module.exports = {
|
||||
|
|
|
|||
|
|
@ -1,18 +1,18 @@
|
|||
<template>
|
||||
<view class="custom-content">
|
||||
<!--标题-->
|
||||
<view class="title">添加员工</view>
|
||||
<view class="title">{{ Number(service_id) > 0 ? '编辑' : '添加' }}员工</view>
|
||||
<!--表单-->
|
||||
<view class="form-content">
|
||||
<view class="line">
|
||||
<view class="line-content">
|
||||
<view class="title">用户</view>
|
||||
<view class="right">
|
||||
<view class="right-btn" @click="showConsumePopup">选择用户</view>
|
||||
<view class="right-btn" v-if="!is_regular" @click="showConsumePopup">选择用户</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="user-content" v-if="consume_info.uid > 0">
|
||||
<image class="image-img-image" :src="info.avatar" mode="widthFix"></image>
|
||||
<image class="image-img-image" :src="consume_info.avatar" mode="widthFix"></image>
|
||||
<view class="user-info">
|
||||
<view class="nickname">{{ consume_info.nickname}}</view>
|
||||
<view class="uid">UID:{{ consume_info.uid}}</view>
|
||||
|
|
@ -61,67 +61,69 @@
|
|||
<input type="password" v-model="info.confirm_pwd" maxlength="20" placeholder="请确认密码" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="line">
|
||||
<view class="line-content">
|
||||
<view class="title">账号状态</view>
|
||||
<switch :checked="info.is_open == 1" @change="changeSwitch($event,'is_open')" color="#437ffd" style="transform:scale(0.8)" />
|
||||
</view>
|
||||
</view>
|
||||
<template v-if="info.is_open == 1">
|
||||
<template v-if="!is_regular">
|
||||
<view class="line">
|
||||
<view class="line-content">
|
||||
<view class="title">客服功能</view>
|
||||
<switch :checked="info.status == 1" @change="changeSwitch($event,'status')" color="#437ffd" style="transform:scale(0.8)" />
|
||||
<view class="title">账号状态</view>
|
||||
<switch :checked="info.is_open == 1" @change="changeSwitch($event,'is_open')" color="#437ffd" style="transform:scale(0.8)" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="line">
|
||||
<view class="line-content">
|
||||
<view class="title">订单管理</view>
|
||||
<switch :checked="info.customer == 1" @change="changeSwitch($event,'customer')" color="#437ffd" style="transform:scale(0.8)" />
|
||||
<template v-if="info.is_open == 1">
|
||||
<view class="line">
|
||||
<view class="line-content">
|
||||
<view class="title">客服功能</view>
|
||||
<switch :checked="info.status == 1" @change="changeSwitch($event,'status')" color="#437ffd" style="transform:scale(0.8)" />
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="line">
|
||||
<view class="line-content">
|
||||
<view class="title">商品管理</view>
|
||||
<switch :checked="info.is_goods == 1" @change="changeSwitch($event,'is_goods')" color="#437ffd" style="transform:scale(0.8)" />
|
||||
<view class="line">
|
||||
<view class="line-content">
|
||||
<view class="title">订单管理</view>
|
||||
<switch :checked="info.customer == 1" @change="changeSwitch($event,'customer')" color="#437ffd" style="transform:scale(0.8)" />
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="line">
|
||||
<view class="line-content">
|
||||
<view class="title">开启核销</view>
|
||||
<switch :checked="info.is_verify == 1" @change="changeSwitch($event,'is_verify')" color="#437ffd" style="transform:scale(0.8)" />
|
||||
<view class="line">
|
||||
<view class="line-content">
|
||||
<view class="title">商品管理</view>
|
||||
<switch :checked="info.is_goods == 1" @change="changeSwitch($event,'is_goods')" color="#437ffd" style="transform:scale(0.8)" />
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="line">
|
||||
<view class="line-content">
|
||||
<view class="title">客户管理</view>
|
||||
<switch :checked="info.is_user == 1" @change="changeSwitch($event,'is_user')" color="#437ffd" style="transform:scale(0.8)" />
|
||||
<view class="line">
|
||||
<view class="line-content">
|
||||
<view class="title">开启核销</view>
|
||||
<switch :checked="info.is_verify == 1" @change="changeSwitch($event,'is_verify')" color="#437ffd" style="transform:scale(0.8)" />
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="line">
|
||||
<view class="line-content">
|
||||
<view class="title">员工管理</view>
|
||||
<switch :checked="info.staff_manage == 1" @change="changeSwitch($event,'staff_manage')" color="#437ffd" style="transform:scale(0.8)" />
|
||||
<view class="line">
|
||||
<view class="line-content">
|
||||
<view class="title">客户管理</view>
|
||||
<switch :checked="info.is_user == 1" @change="changeSwitch($event,'is_user')" color="#437ffd" style="transform:scale(0.8)" />
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="line">
|
||||
<view class="line-content">
|
||||
<view class="title">订单通知</view>
|
||||
<switch :checked="info.notify == 1" @change="changeSwitch($event,'notify')" color="#437ffd" style="transform:scale(0.8)" />
|
||||
<view class="line">
|
||||
<view class="line-content">
|
||||
<view class="title">员工管理</view>
|
||||
<switch :checked="info.staff_manage == 1" @change="changeSwitch($event,'staff_manage')" color="#437ffd" style="transform:scale(0.8)" />
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="line" v-if="info.notify == 1">
|
||||
<view class="line-content">
|
||||
<view class="title">通知电话</view>
|
||||
<input type="text" v-model="info.phone" placeholder="请输入通知电话" />
|
||||
<view class="line">
|
||||
<view class="line-content">
|
||||
<view class="title">订单通知</view>
|
||||
<switch :checked="info.notify == 1" @change="changeSwitch($event,'notify')" color="#437ffd" style="transform:scale(0.8)" />
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="line">
|
||||
<view class="line-content">
|
||||
<view class="title">推广二维码</view>
|
||||
<switch :checked="info.qr_code_show == 1" @change="changeSwitch($event,'qr_code_show')" color="#437ffd" style="transform:scale(0.8)" />
|
||||
<view class="line" v-if="info.notify == 1">
|
||||
<view class="line-content">
|
||||
<view class="title">通知电话</view>
|
||||
<input type="text" v-model="info.phone" placeholder="请输入通知电话" />
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="line">
|
||||
<view class="line-content">
|
||||
<view class="title">推广二维码</view>
|
||||
<switch :checked="info.qr_code_show == 1" @change="changeSwitch($event,'qr_code_show')" color="#437ffd" style="transform:scale(0.8)" />
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
</template>
|
||||
<!--提交按钮-->
|
||||
<view class="group-btn">
|
||||
|
|
@ -156,6 +158,8 @@
|
|||
</uni-popup>
|
||||
<!-- 图片上传 -->
|
||||
<avatar @upload="doUpload" quality="1" ref="avatar" selWidth="250upx" selHeight="250upx"></avatar>
|
||||
<!--授权登录-->
|
||||
<authorize @onLoadFun="onLoadFun" :isAuto="isAuto" :isShowAuth="isShowAuth" @authColse="authColse"></authorize>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
|
|
@ -164,10 +168,14 @@ import avatar from "@/components/yq-avatar/yq-avatar.vue";
|
|||
import { HTTP_REQUEST_URL } from '@/config/app';
|
||||
import {editStaff,getStaffInfo} from "@/api/service";
|
||||
import { getCustomList } from "@/api/user.js";
|
||||
import {mapGetters} from "vuex";
|
||||
import authorize from '@/components/Authorize';
|
||||
|
||||
export default {
|
||||
name: 'custom',
|
||||
components: {
|
||||
avatar
|
||||
avatar,
|
||||
authorize
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
|
@ -182,7 +190,7 @@ export default {
|
|||
account: '',
|
||||
confirm_pwd: '',
|
||||
pwd: '',
|
||||
is_open: 0,
|
||||
is_open: 1,
|
||||
status: 0,
|
||||
customer: 0,
|
||||
is_goods: 0,
|
||||
|
|
@ -201,20 +209,49 @@ export default {
|
|||
nickname: '',
|
||||
default_consume_id: 0,
|
||||
},
|
||||
|
||||
is_regular: false,
|
||||
// 登录相关
|
||||
isAuto: false, //没有授权的不会自动授权
|
||||
isShowAuth: false,//是否隐藏授权
|
||||
}
|
||||
},
|
||||
computed: { },
|
||||
computed: {
|
||||
...mapGetters(['isLogin', 'uid', 'userInfo', 'viewColor'])
|
||||
},
|
||||
onLoad: function(options) {
|
||||
// 判断:是否登录;未登录 授权登录
|
||||
if (!this.isLogin) {
|
||||
this.isAuto = true;
|
||||
this.isShowAuth = true
|
||||
}
|
||||
// 参数处理
|
||||
this.service_id = options.service_id || 0;
|
||||
this.mer_id = options.mer_id || 0;
|
||||
// 二维码参数接收
|
||||
if(options.scene){
|
||||
// console.log("接收参数 - 未转义",options.scene)
|
||||
var scene = this.$util.getUrlParams(decodeURIComponent(options.scene));
|
||||
this.mer_id = scene.mer_id || this.mer_id;
|
||||
// 判断:存在二维码参数,并且mer_id大于0 则固定用户及权限
|
||||
if(Number(scene.mer_id) > 0){
|
||||
this.is_regular = true;
|
||||
this.consume_search.default_consume_id = this.uid;
|
||||
this.showConsumePopup();
|
||||
}
|
||||
}
|
||||
// 设置页面标题
|
||||
uni.setNavigationBarTitle({
|
||||
title: Number(this.service_id) > 0 ? '编辑员工' : '添加员工'
|
||||
})
|
||||
// 判断:不存在mer_id 直接报错
|
||||
if(this.mer_id <= 0){
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '非法访问,参数不明确!',
|
||||
success: function success(res) {
|
||||
uni.navigateBack();
|
||||
uni.switchTab({
|
||||
url: '/pages/user/index',
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
@ -222,6 +259,16 @@ export default {
|
|||
if(this.service_id > 0) this.getStaffInfo();
|
||||
},
|
||||
methods: {
|
||||
// 授权回调
|
||||
onLoadFun() {
|
||||
if(this.isLogin){
|
||||
this.isShowAuth = false;
|
||||
}
|
||||
},
|
||||
// 授权关闭
|
||||
authColse(e) {
|
||||
this.isShowAuth = e
|
||||
},
|
||||
// 图片上传 - 触发上传
|
||||
uploadImage() {
|
||||
let avatar = this.$refs.avatar;
|
||||
|
|
@ -237,7 +284,7 @@ export default {
|
|||
name: 'field',
|
||||
formData: {
|
||||
'filename': rsp.path,
|
||||
'name': _this.imgName
|
||||
'name': ""
|
||||
},
|
||||
header: {
|
||||
// #ifdef MP
|
||||
|
|
@ -247,7 +294,7 @@ export default {
|
|||
},
|
||||
success: (uploadFileRes) => {
|
||||
let imgData = JSON.parse(uploadFileRes.data)
|
||||
console.log('图片上传回调',imgData);
|
||||
// console.log('图片上传回调',imgData);
|
||||
if(imgData.data) _this.info.avatar = imgData.data.path || '';
|
||||
}
|
||||
});
|
||||
|
|
@ -266,6 +313,19 @@ export default {
|
|||
let _this = this;
|
||||
getCustomList(_this.mer_id, _this.consume_search).then(res => {
|
||||
_this.consume_list = res.data.list || {};
|
||||
// 判断:如果固定用户、且用户列表信息为空则报错并且返回个人中心
|
||||
if(_this.is_regular && Number(this.consume_search.default_consume_id) > 0 && Object.values(_this.consume_list).length <= 0){
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '非该商户用户,请先关注商户或者在该商户进行消费!',
|
||||
success: function success(res) {
|
||||
uni.switchTab({
|
||||
url: '/pages/user/index',
|
||||
});
|
||||
}
|
||||
});
|
||||
return false;
|
||||
}
|
||||
// 判断:是否只有一个-是则选中
|
||||
if(Object.values(_this.consume_list).length == 1){
|
||||
_this.selectedConsume(_this.consume_list[0]);
|
||||
|
|
@ -293,12 +353,24 @@ export default {
|
|||
}
|
||||
// 提交信息
|
||||
editStaff(info).then(res => {
|
||||
this.$util.Tips({
|
||||
title: res.message
|
||||
},{
|
||||
tab: 5,
|
||||
url: '/pages/admin/business/staff?mer_id=' + _this.mer_id,
|
||||
});
|
||||
// 判断:如果固定用户则返回个人中心 否则返回员工管理
|
||||
console.log('_this.is_regular:',_this.is_regular)
|
||||
if(_this.is_regular){
|
||||
this.$util.Tips({
|
||||
title: res.message
|
||||
},{
|
||||
tab: 5,
|
||||
url: '/pages/admin/business/index?is_sys=0',
|
||||
});
|
||||
}
|
||||
else{
|
||||
this.$util.Tips({
|
||||
title: res.message
|
||||
},{
|
||||
tab: 5,
|
||||
url: '/pages/admin/business/staff?mer_id=' + _this.mer_id,
|
||||
});
|
||||
}
|
||||
}).catch(err => {
|
||||
this.$util.Tips({
|
||||
title: err
|
||||
|
|
@ -337,7 +409,7 @@ export default {
|
|||
.custom-content{
|
||||
width: 100vw;
|
||||
min-height: 100vh;
|
||||
background: orange;
|
||||
background: #f6f6f6;
|
||||
padding: 0 30rpx 100rpx 30rpx;
|
||||
|
||||
.title{
|
||||
|
|
|
|||
|
|
@ -25,14 +25,28 @@
|
|||
</view>
|
||||
<!--添加按钮-->
|
||||
<view class="group-btn">
|
||||
<view class="add-btn" @click="goToEditPage()">添加员工</view>
|
||||
<view class="add-btn" @click="addStaff()">添加员工</view>
|
||||
</view>
|
||||
<!-- 添加方式弹框 -->
|
||||
<uni-popup ref="addTypeList" type="bottom">
|
||||
<view class="add-type-content">
|
||||
<view class="add-type-box" @click="goToEditPage">手动添加</view>
|
||||
<view class="add-type-box" @click="createQrCode">二维码邀请</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 {mapGetters} from "vuex";
|
||||
import {getStaffList,delStaff} from "@/api/service";
|
||||
import {getStaffList,delStaff,staffInviteQrCode} from "@/api/service";
|
||||
export default {
|
||||
name: 'custom',
|
||||
components: {},
|
||||
|
|
@ -48,7 +62,9 @@ export default {
|
|||
page: 1,
|
||||
limit: 20,
|
||||
keyword: '',
|
||||
}
|
||||
},
|
||||
// 二维码
|
||||
qrCode: '',
|
||||
}
|
||||
},
|
||||
onLoad: function(options) {
|
||||
|
|
@ -115,6 +131,29 @@ export default {
|
|||
}
|
||||
});
|
||||
},
|
||||
// 点击添加员工
|
||||
addStaff(){
|
||||
this.$refs.addTypeList.open('bottom');
|
||||
},
|
||||
// 二维码邀请 - 生成二维码
|
||||
createQrCode(){
|
||||
let _this = this;
|
||||
staffInviteQrCode({ mer_id: _this.mer_id }).then(res => {
|
||||
if (res.status == 200) {
|
||||
_this.qrCode = res.data.qr_code || '';
|
||||
_this.$refs.addTypeList.close();
|
||||
_this.$refs.qrCodePopup.open('center');
|
||||
}
|
||||
}).catch(err => {
|
||||
this.$util.Tips({
|
||||
title: err
|
||||
});
|
||||
});
|
||||
},
|
||||
// 关闭二维码
|
||||
closeQrCode(){
|
||||
this.$refs.qrCodePopup.close();
|
||||
},
|
||||
// 进入员工编辑页面
|
||||
goToEditPage(service_id){
|
||||
let path = '/pages/admin/business/edit_staff?mer_id=' + this.mer_id;
|
||||
|
|
@ -276,5 +315,51 @@ export default {
|
|||
border-radius: 15rpx;
|
||||
}
|
||||
}
|
||||
// 添加员工方式弹框
|
||||
.add-type-content{
|
||||
width: 100%;
|
||||
background: #FFFFFF;
|
||||
padding: 20rpx;
|
||||
display: inline-flex;
|
||||
flex-direction: column;
|
||||
flex-wrap: nowrap;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
.add-type-box{
|
||||
height: 70rpx;
|
||||
line-height: 70rpx;
|
||||
color: #fff;
|
||||
background-color: #409eff;
|
||||
border-color: #409eff;
|
||||
width: 80%;
|
||||
border-radius: 100rpx;
|
||||
font-size: 30rpx;
|
||||
text-align: center;
|
||||
}
|
||||
.add-type-box:first-child{
|
||||
margin-bottom: 20rpx;
|
||||
background-color: #e6a23c!important;
|
||||
border-color: #e6a23c!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>
|
||||
|
|
|
|||
Loading…
Reference in New Issue