Merge remote-tracking branch 'origin/feature/mall_product' into feature/mall_product
|
@ -5,8 +5,8 @@ ENV = 'development'
|
||||||
VUE_APP_TITLE = 创盈商户管理系统
|
VUE_APP_TITLE = 创盈商户管理系统
|
||||||
|
|
||||||
# 芋道管理系统/开发环境
|
# 芋道管理系统/开发环境
|
||||||
VUE_APP_BASE_API = 'https://cmx.bskies.cc:8000/cyywl-api'
|
#VUE_APP_BASE_API = 'https://cmx.bskies.cc:8000/cyywl-api'
|
||||||
#VUE_APP_BASE_API = 'http://192.168.1.147:48080'
|
VUE_APP_BASE_API = 'http://192.168.1.147:48080'
|
||||||
|
|
||||||
# 路由懒加载
|
# 路由懒加载
|
||||||
VUE_CLI_BABEL_TRANSPILE_MODULES = true
|
VUE_CLI_BABEL_TRANSPILE_MODULES = true
|
||||||
|
|
|
@ -83,7 +83,7 @@
|
||||||
trigger="click"
|
trigger="click"
|
||||||
popper-class="qrcode-wrap"
|
popper-class="qrcode-wrap"
|
||||||
>
|
>
|
||||||
<canvas :id="`id-${scope.row.id}`"></canvas>
|
<canvas :id="`id-${scope.row.id}`" width="120" height="120"></canvas>
|
||||||
<el-button slot="reference" size="mini" type="text" @click="handleQRCode(scope.row)"
|
<el-button slot="reference" size="mini" type="text" @click="handleQRCode(scope.row)"
|
||||||
v-hasPermi="['system:tenant:delete']">推广码
|
v-hasPermi="['system:tenant:delete']">推广码
|
||||||
</el-button>
|
</el-button>
|
||||||
|
@ -345,9 +345,11 @@ export default {
|
||||||
this.resetForm('form');
|
this.resetForm('form');
|
||||||
},
|
},
|
||||||
handleQRCode(row) {
|
handleQRCode(row) {
|
||||||
const url =`https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx7e503d9cded34c07&redirect_uri=
|
const baseUrl = 'http://yuxy.perrymake.com'
|
||||||
http://192.168.1.149:8080?tenantId=${row.id}&response_type=code&scope=snsapi_base&state=123#wechat_redirect`
|
const url =`${baseUrl}/pages/index/index?redirectUrl=${baseUrl}&tenantId=${row.id}`
|
||||||
QRCode.toCanvas(document.getElementById(`id-${row.id}`), url, function (error) {
|
QRCode.toCanvas(document.getElementById(`id-${row.id}`), url, {
|
||||||
|
scale: 2
|
||||||
|
}, function (error) {
|
||||||
if (error) console.error(error)
|
if (error) console.error(error)
|
||||||
console.log('success!');
|
console.log('success!');
|
||||||
})
|
})
|
||||||
|
|
|
@ -4,7 +4,8 @@
|
||||||
} from "./libs/login";
|
} from "./libs/login";
|
||||||
import {
|
import {
|
||||||
refreshToken,
|
refreshToken,
|
||||||
getWeChatOpenId
|
getWeChatOpenId,
|
||||||
|
fetchTenantInfo
|
||||||
} from "@/api/api";
|
} from "@/api/api";
|
||||||
import {
|
import {
|
||||||
HTTP_REQUEST_URL
|
HTTP_REQUEST_URL
|
||||||
|
@ -13,7 +14,8 @@
|
||||||
import Routine from './libs/routine.js';
|
import Routine from './libs/routine.js';
|
||||||
import Apps from './libs/apps.js';
|
import Apps from './libs/apps.js';
|
||||||
import {
|
import {
|
||||||
mapActions
|
mapActions,
|
||||||
|
mapGetters
|
||||||
} from 'vuex'
|
} from 'vuex'
|
||||||
import {
|
import {
|
||||||
memberGradeInfo
|
memberGradeInfo
|
||||||
|
@ -30,7 +32,7 @@
|
||||||
},
|
},
|
||||||
onLaunch: function(option) {
|
onLaunch: function(option) {
|
||||||
const res = memberGradeInfo().then((res) =>{
|
const res = memberGradeInfo().then((res) =>{
|
||||||
if(res.data.some((item) => !!!parseInt(item.isExist))){
|
if(res.data.some((item) => !!parseInt(item.isExist))){
|
||||||
uni.setTabBarItem({
|
uni.setTabBarItem({
|
||||||
index: 2,
|
index: 2,
|
||||||
text: 'text',
|
text: 'text',
|
||||||
|
@ -171,16 +173,21 @@
|
||||||
}
|
}
|
||||||
// #endif
|
// #endif
|
||||||
},
|
},
|
||||||
|
computed: mapGetters(['tenantId']),
|
||||||
async mounted() {
|
async mounted() {
|
||||||
|
this.isQRCode()
|
||||||
if (this.$store.getters.isLogin && !this.$Cache.get('USER_INFO')) {
|
if (this.$store.getters.isLogin && !this.$Cache.get('USER_INFO')) {
|
||||||
await this.$store.dispatch('USERINFO');
|
await this.$store.dispatch('USERINFO');
|
||||||
}
|
}
|
||||||
if (!this.$Cache.get('TENANT_ID') || this.$route.query.tenantId) {
|
if (!this.$Cache.get('TENANT_ID') || this.$route.query.tenantId) {
|
||||||
this.getTenantId()
|
this.getTenantId()
|
||||||
|
} else {
|
||||||
|
this.getTenantInfo()
|
||||||
}
|
}
|
||||||
if (!this.$Cache.get('OPEN_ID') && this.$route.query.code) {
|
if (!this.$Cache.get('OPEN_ID') && this.$route.query.code) {
|
||||||
this.getWxChatCode()
|
this.getWxChatCode()
|
||||||
}
|
}
|
||||||
|
this.setSpreadId()
|
||||||
setInterval(() => {
|
setInterval(() => {
|
||||||
if (this.$store.getters.isLogin) {
|
if (this.$store.getters.isLogin) {
|
||||||
this.setRefreshToken()
|
this.setRefreshToken()
|
||||||
|
@ -188,11 +195,28 @@
|
||||||
}, 60000)
|
}, 60000)
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
// 是否扫码跳转
|
||||||
|
isQRCode() {
|
||||||
|
const redirectUrl = this.$route.query.redirectUrl || ''
|
||||||
|
if (redirectUrl) {
|
||||||
|
const tenantId = this.$route.query.tenantId || ''
|
||||||
|
const spreadId = this.$route.query.spreadId || ''
|
||||||
|
const wechatUrl = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx7e503d9cded34c07'
|
||||||
|
location.href =`${wechatUrl}&redirect_uri=${redirectUrl}/pages/member_application/index?tenantId=${tenantId}&spreadId=${spreadId}&response_type=code&scope=snsapi_base#wechat_redirect`
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 获取租户信息
|
||||||
|
getTenantInfo() {
|
||||||
|
fetchTenantInfo(this.tenantId).then(res => {
|
||||||
|
this.$store.commit("SET_TENANT_INFO", res.data);
|
||||||
|
})
|
||||||
|
},
|
||||||
// 获取租户ID
|
// 获取租户ID
|
||||||
getTenantId() {
|
getTenantId() {
|
||||||
const tenantId = this.$route.query.tenantId
|
const tenantId = this.$route.query.tenantId || ''
|
||||||
if (tenantId) {
|
if (tenantId) {
|
||||||
this.$store.commit("SET_TENANTID", tenantId);
|
this.$store.commit("SET_TENANTID", tenantId);
|
||||||
|
this.getTenantInfo()
|
||||||
} else {
|
} else {
|
||||||
this.$util.Tips({
|
this.$util.Tips({
|
||||||
title: '请扫码物业公司二维码访问'
|
title: '请扫码物业公司二维码访问'
|
||||||
|
@ -201,8 +225,8 @@
|
||||||
},
|
},
|
||||||
// 获取推广员ID
|
// 获取推广员ID
|
||||||
setSpreadId() {
|
setSpreadId() {
|
||||||
const spreadId = this.$route.query.spreadId
|
const spreadId = this.$route.query.spreadId || ''
|
||||||
if (tenantId) {
|
if (spreadId) {
|
||||||
this.$store.commit("SET_SPREADID", spreadId);
|
this.$store.commit("SET_SPREADID", spreadId);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -8,29 +8,38 @@ import request from "@/utils/request.js";
|
||||||
* 获取主页数据 无需授权
|
* 获取主页数据 无需授权
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
export function getIndexData()
|
export function getIndexData() {
|
||||||
{
|
return request.get("index", {}, {
|
||||||
return request.get("index",{},{ noAuth : true});
|
noAuth: true
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取登录授权login
|
* 获取登录授权login
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
export function getLogo()
|
export function getLogo() {
|
||||||
{
|
return request.get('wechat/getLogo', {}, {
|
||||||
return request.get('wechat/getLogo', {}, { noAuth : true});
|
noAuth: true
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export function refreshToken(token)
|
export function refreshToken(token) {
|
||||||
{
|
return request.post('member/auth/refresh-token?refreshToken=' + token, {}, {
|
||||||
return request.post('member/auth/refresh-token?refreshToken=' + token, {}, { noAuth : true});
|
noAuth: true
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取微信OpenId
|
// 获取微信OpenId
|
||||||
export function getWeChatOpenId(code)
|
export function getWeChatOpenId(code) {
|
||||||
{
|
return request.get('api/order/member/getOpenId?code=' + code, {}, {
|
||||||
return request.get('api/order/member/getOpenId?code=' + code, {}, { noAuth : true});
|
noAuth: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取租户信息
|
||||||
|
export function fetchTenantInfo(id) {
|
||||||
|
return request.get('tenant/get?id=' + id, {});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -38,7 +47,9 @@ export function getWeChatOpenId(code)
|
||||||
* @param string formId
|
* @param string formId
|
||||||
*/
|
*/
|
||||||
export function setFormId(formId) {
|
export function setFormId(formId) {
|
||||||
return request.post("wechat/set_form_id", { formId: formId});
|
return request.post("wechat/set_form_id", {
|
||||||
|
formId: formId
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -47,14 +58,18 @@ export function setFormId(formId) {
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
export function setCouponReceive(couponId) {
|
export function setCouponReceive(couponId) {
|
||||||
return request.post('coupon/receive', { couponId: couponId});
|
return request.post('coupon/receive', {
|
||||||
|
couponId: couponId
|
||||||
|
});
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* 优惠券列表
|
* 优惠券列表
|
||||||
* @param object data
|
* @param object data
|
||||||
*/
|
*/
|
||||||
export function getCoupons(data) {
|
export function getCoupons(data) {
|
||||||
return request.get('coupons',data,{noAuth:true})
|
return request.get('coupons', data, {
|
||||||
|
noAuth: true
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -70,7 +85,9 @@ export function getUserCoupons(data){
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
export function getArticleCategoryList() {
|
export function getArticleCategoryList() {
|
||||||
return request.get('article/category/list',{},{noAuth:true})
|
return request.get('article/category/list', {}, {
|
||||||
|
noAuth: true
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -79,7 +96,9 @@ export function getArticleCategoryList(){
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
export function getArticleList(cid, data) {
|
export function getArticleList(cid, data) {
|
||||||
return request.get('article/list/' + cid, data,{noAuth:true})
|
return request.get('article/list/' + cid, data, {
|
||||||
|
noAuth: true
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -87,7 +106,9 @@ export function getArticleList(cid,data){
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
export function getArticleHotList() {
|
export function getArticleHotList() {
|
||||||
return request.get('article/hot/list',{},{noAuth:true});
|
return request.get('article/hot/list', {}, {
|
||||||
|
noAuth: true
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -95,7 +116,9 @@ export function getArticleHotList(){
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
export function getArticleBannerList() {
|
export function getArticleBannerList() {
|
||||||
return request.get('article/banner/list',{},{noAuth:true})
|
return request.get('article/banner/list', {}, {
|
||||||
|
noAuth: true
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -104,7 +127,9 @@ export function getArticleBannerList(){
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
export function getArticleDetails(id) {
|
export function getArticleDetails(id) {
|
||||||
return request.get('article/info',id,{noAuth:true});
|
return request.get('article/info', id, {
|
||||||
|
noAuth: true
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -112,7 +137,9 @@ export function getArticleDetails(id){
|
||||||
* @param object data
|
* @param object data
|
||||||
*/
|
*/
|
||||||
export function loginMobile(data) {
|
export function loginMobile(data) {
|
||||||
return request.post('login/mobile',data,{noAuth:true})
|
return request.post('login/mobile', data, {
|
||||||
|
noAuth: true
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -120,7 +147,9 @@ export function loginMobile(data){
|
||||||
* @param object phone
|
* @param object phone
|
||||||
*/
|
*/
|
||||||
export function verifyCode() {
|
export function verifyCode() {
|
||||||
return request.get('verify_code', {},{noAuth:true})
|
return request.get('verify_code', {}, {
|
||||||
|
noAuth: true
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -128,7 +157,11 @@ export function verifyCode(){
|
||||||
* @param object phone
|
* @param object phone
|
||||||
*/
|
*/
|
||||||
export function registerVerify(phone) {
|
export function registerVerify(phone) {
|
||||||
return request.post('sendCode', { phone: phone },{noAuth:true},1)
|
return request.post('sendCode', {
|
||||||
|
phone: phone
|
||||||
|
}, {
|
||||||
|
noAuth: true
|
||||||
|
}, 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -137,7 +170,9 @@ export function registerVerify(phone){
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
export function phoneRegister(data) {
|
export function phoneRegister(data) {
|
||||||
return request.post('register',data,{noAuth:true});
|
return request.post('register', data, {
|
||||||
|
noAuth: true
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -146,7 +181,9 @@ export function phoneRegister(data){
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
export function phoneRegisterReset(data) {
|
export function phoneRegisterReset(data) {
|
||||||
return request.post('register/reset',data,{noAuth:true})
|
return request.post('register/reset', data, {
|
||||||
|
noAuth: true
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -155,7 +192,9 @@ export function phoneRegisterReset(data){
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
export function phoneLogin(data) {
|
export function phoneLogin(data) {
|
||||||
return request.post('login',data,{noAuth:true})
|
return request.post('login', data, {
|
||||||
|
noAuth: true
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -164,7 +203,9 @@ export function phoneLogin(data){
|
||||||
*/
|
*/
|
||||||
// #ifdef MP
|
// #ifdef MP
|
||||||
export function switchH5Login() {
|
export function switchH5Login() {
|
||||||
return request.post('switch_h5', { 'from':'routine'});
|
return request.post('switch_h5', {
|
||||||
|
'from': 'routine'
|
||||||
|
});
|
||||||
}
|
}
|
||||||
// #endif
|
// #endif
|
||||||
|
|
||||||
|
@ -173,7 +214,9 @@ export function switchH5Login(){
|
||||||
* */
|
* */
|
||||||
// #ifdef H5
|
// #ifdef H5
|
||||||
export function switchH5Login() {
|
export function switchH5Login() {
|
||||||
return request.post("switch_h5", { 'from': "wechat" });
|
return request.post("switch_h5", {
|
||||||
|
'from': "wechat"
|
||||||
|
});
|
||||||
}
|
}
|
||||||
// #endif
|
// #endif
|
||||||
|
|
||||||
|
@ -204,36 +247,47 @@ export function logout(){
|
||||||
/**
|
/**
|
||||||
* 获取订阅消息id
|
* 获取订阅消息id
|
||||||
*/
|
*/
|
||||||
export function getTemlIds(data)
|
export function getTemlIds(data) {
|
||||||
{
|
return request.get('wechat/program/my/temp/list', data, {
|
||||||
return request.get('wechat/program/my/temp/list', data , { noAuth:true});
|
noAuth: true
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 首页拼团数据
|
* 首页拼团数据
|
||||||
*/
|
*/
|
||||||
export function pink()
|
export function pink() {
|
||||||
{
|
return request.get('pink', {}, {
|
||||||
return request.get('pink', {}, { noAuth:true});
|
noAuth: true
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取城市信息
|
* 获取城市信息
|
||||||
*/
|
*/
|
||||||
export function getCity() {
|
export function getCity() {
|
||||||
return request.get('area/tree', { }, { noAuth: true });
|
return request.get('area/tree', {}, {
|
||||||
|
noAuth: true
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取小程序直播列表
|
* 获取小程序直播列表
|
||||||
*/
|
*/
|
||||||
export function getLiveList(page, limit) {
|
export function getLiveList(page, limit) {
|
||||||
return request.get('wechat/live', { page, limit}, { noAuth: true });
|
return request.get('wechat/live', {
|
||||||
|
page,
|
||||||
|
limit
|
||||||
|
}, {
|
||||||
|
noAuth: true
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取小程序二维码
|
* 获取小程序二维码
|
||||||
*/
|
*/
|
||||||
export function getQrcode(data) {
|
export function getQrcode(data) {
|
||||||
return request.post('qrcode/get',data,{ noAuth: true });
|
return request.post('qrcode/get', data, {
|
||||||
|
noAuth: true
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,19 +5,26 @@ import request from "@/utils/request.js";
|
||||||
* 查询会员档次信息
|
* 查询会员档次信息
|
||||||
*/
|
*/
|
||||||
export function memberGradeInfo(){
|
export function memberGradeInfo(){
|
||||||
return request.get('api/order/member/memberGradeInfo', {},{noAuth:true})
|
return request.get('api/order/member/memberGradeInfo', {})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取当前登录账号的充值记录
|
* 获取当前登录账号的充值记录
|
||||||
*/
|
*/
|
||||||
export function memberOrderInfo(){
|
export function memberOrderInfo(){
|
||||||
return request.get('api/order/member/memberOrderInfo', {},{noAuth:true})
|
return request.get('api/order/member/memberOrderInfo', {})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 会员充值
|
* 会员充值
|
||||||
*/
|
*/
|
||||||
export function memberTopUp(data) {
|
export function memberTopUp(data) {
|
||||||
return request.post('api/order/member/memberTopUp',data,{ noAuth: true });
|
return request.post('api/order/member/memberTopUp',data);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 申请退款
|
||||||
|
*/
|
||||||
|
export function memberApplyRefund(data) {
|
||||||
|
return request.post('api/order/member/memberApplyRefund',data);
|
||||||
}
|
}
|
|
@ -88,8 +88,9 @@
|
||||||
},
|
},
|
||||||
function(res) {
|
function(res) {
|
||||||
if (res.err_msg == "get_brand_wcpay_request:ok") {
|
if (res.err_msg == "get_brand_wcpay_request:ok") {
|
||||||
// 使用以上方式判断前端返回,微信团队郑重提示:
|
uni.switchTab({
|
||||||
//res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
|
url: '/pages/member_application/index'
|
||||||
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -110,7 +111,8 @@
|
||||||
title: '请选择要支付的订单'
|
title: '请选择要支付的订单'
|
||||||
});
|
});
|
||||||
uni.showLoading({
|
uni.showLoading({
|
||||||
title: '支付中'
|
title: '支付中',
|
||||||
|
mask: true
|
||||||
});
|
});
|
||||||
if(paytype === 'WXPAY' && !that.openId) {
|
if(paytype === 'WXPAY' && !that.openId) {
|
||||||
return that.$util.Tips({
|
return that.$util.Tips({
|
||||||
|
|
|
@ -10,6 +10,8 @@ module.exports = {
|
||||||
OPEN_ID: 'OPEN_ID',
|
OPEN_ID: 'OPEN_ID',
|
||||||
//用户信息
|
//用户信息
|
||||||
USER_INFO: 'USER_INFO',
|
USER_INFO: 'USER_INFO',
|
||||||
|
//租户信息
|
||||||
|
TENANT_INFO: 'TENANT_INFO',
|
||||||
//token 过期时间
|
//token 过期时间
|
||||||
EXPIRES_TIME: 'EXPIRES_TIME',
|
EXPIRES_TIME: 'EXPIRES_TIME',
|
||||||
//微信授权
|
//微信授权
|
||||||
|
|
|
@ -443,6 +443,13 @@
|
||||||
"navigationBarTitleText": "注册",
|
"navigationBarTitleText": "注册",
|
||||||
"navigationStyle": "custom"
|
"navigationStyle": "custom"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "register/success",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "注册成功",
|
||||||
|
"navigationStyle": "custom"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -562,37 +569,31 @@
|
||||||
"backgroundColor": "#ffffff",
|
"backgroundColor": "#ffffff",
|
||||||
"list": [{
|
"list": [{
|
||||||
"pagePath": "pages/index/index",
|
"pagePath": "pages/index/index",
|
||||||
"iconPath": "static/images/1-001.png",
|
"iconPath": "static/images/tabbar/nav_icon_shop.png",
|
||||||
"selectedIconPath": "static/images/1-002.png",
|
"selectedIconPath": "static/images/1-002.png",
|
||||||
"text": "首页"
|
"text": "商城"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"pagePath": "pages/goods_cate/goods_cate",
|
"pagePath": "pages/goods_cate/goods_cate",
|
||||||
"iconPath": "static/images/2-001.png",
|
"iconPath": "static/images/tabbar/nav_icon_sort.png",
|
||||||
"selectedIconPath": "static/images/2-002.png",
|
"selectedIconPath": "static/images/2-002.png",
|
||||||
"text": "分类"
|
"text": "分类"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"pagePath": "pages/member_application/index",
|
"pagePath": "pages/member_application/index",
|
||||||
"iconPath": "static/images/2-001.png",
|
"iconPath": "static/images/2-001.png",
|
||||||
"selectedIconPath": "static/images/2-002.png",
|
"selectedIconPath": "static/images/tabbar/nav_icon_member_active.png",
|
||||||
"text": "会员申请"
|
"text": "会员申请"
|
||||||
},
|
},
|
||||||
// {
|
|
||||||
// "pagePath": "pages/member_application/index",
|
|
||||||
// "iconPath": "static/images/2-001.png",
|
|
||||||
// "selectedIconPath": "static/images/2-002.png",
|
|
||||||
// "text": "会员申请"
|
|
||||||
// },
|
|
||||||
{
|
{
|
||||||
"pagePath": "pages/order_addcart/order_addcart",
|
"pagePath": "pages/order_addcart/order_addcart",
|
||||||
"iconPath": "static/images/3-001.png",
|
"iconPath": "static/images/tabbar/nav_icon_cart.png",
|
||||||
"selectedIconPath": "static/images/3-002.png",
|
"selectedIconPath": "static/images/3-002.png",
|
||||||
"text": "购物车"
|
"text": "购物车"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"pagePath": "pages/user/index",
|
"pagePath": "pages/user/index",
|
||||||
"iconPath": "static/images/4-001.png",
|
"iconPath": "static/images/tabbar/nav_icon_my.png",
|
||||||
"selectedIconPath": "static/images/4-002.png",
|
"selectedIconPath": "static/images/4-002.png",
|
||||||
"text": "我的"
|
"text": "我的"
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,6 +38,12 @@
|
||||||
<paymentMember :payMode='payMode' :pay_close="pay_close" @onChangeFun='onChangeFun' :payInfo="payInfo">
|
<paymentMember :payMode='payMode' :pay_close="pay_close" @onChangeFun='onChangeFun' :payInfo="payInfo">
|
||||||
</paymentMember>
|
</paymentMember>
|
||||||
<button class="box-submit" @click="goPay">立即充值</button>
|
<button class="box-submit" @click="goPay">立即充值</button>
|
||||||
|
<u-navbar leftIcon="" title="会员申请">
|
||||||
|
<view class="u-nav-slot" slot="right">
|
||||||
|
<u-icon name="more-dot-fill" size="50" @click="show = true"></u-icon>
|
||||||
|
<u-action-sheet @select="handleSelect" :actions="list" :title="title" :show="show" :closeOnClickOverlay="true" :closeOnClickAction="true" @close="show=false" :safeAreaInsetBottom="true"></u-action-sheet>
|
||||||
|
</view>
|
||||||
|
</u-navbar>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -54,6 +60,18 @@
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
title:'管理',
|
||||||
|
list: [
|
||||||
|
{
|
||||||
|
name:'购买记录',
|
||||||
|
fontSize:'28'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name:'为他人充值',
|
||||||
|
fontSize:'28'
|
||||||
|
},
|
||||||
|
],
|
||||||
|
show: false,
|
||||||
memberData: [],
|
memberData: [],
|
||||||
payInfo: {
|
payInfo: {
|
||||||
userPhone: '',
|
userPhone: '',
|
||||||
|
@ -82,18 +100,27 @@
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
async onLoad() {
|
async onLoad() {
|
||||||
// uni.setTabBarItem({
|
|
||||||
// index: 2,
|
|
||||||
// text: 'text',
|
|
||||||
// pagePath: '/pages/member_equity/index'
|
|
||||||
// })
|
|
||||||
// uni.switchTab({
|
|
||||||
// url:'/pages/member_equity/index'
|
|
||||||
// })
|
|
||||||
const res = await memberGradeInfo()
|
const res = await memberGradeInfo()
|
||||||
this.memberData = res.data
|
this.memberData = res.data
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
handleSelect(value){
|
||||||
|
switch (value.name){
|
||||||
|
case "购买记录":
|
||||||
|
uni.navigateTo({
|
||||||
|
url:'/pages/member_record/index'
|
||||||
|
})
|
||||||
|
break;
|
||||||
|
case "为他人充值":
|
||||||
|
console.log(123)
|
||||||
|
uni.navigateTo({
|
||||||
|
url:'/pages/member_others/index'
|
||||||
|
})
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
},
|
||||||
handleMember(value, index) {
|
handleMember(value, index) {
|
||||||
if (!!parseInt(value.isExist)) return
|
if (!!parseInt(value.isExist)) return
|
||||||
if (this.activeIndex.includes(index)) {
|
if (this.activeIndex.includes(index)) {
|
||||||
|
@ -119,6 +146,10 @@
|
||||||
userPhone: store.state.app.userInfo.mobile,
|
userPhone: store.state.app.userInfo.mobile,
|
||||||
orderInfos
|
orderInfos
|
||||||
}
|
}
|
||||||
|
}else{
|
||||||
|
this.$util.Tips({
|
||||||
|
title: '请选择档次套餐'
|
||||||
|
})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
|
@ -168,6 +199,7 @@
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.box {
|
.box {
|
||||||
|
margin-top: 10%;
|
||||||
position: relative;
|
position: relative;
|
||||||
padding: 207rpx 40rpx 30rpx 40rpx;
|
padding: 207rpx 40rpx 30rpx 40rpx;
|
||||||
min-height: 100vh;
|
min-height: 100vh;
|
||||||
|
@ -176,6 +208,10 @@
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
background-attachment: fixed;
|
background-attachment: fixed;
|
||||||
|
|
||||||
|
::v-deep .u-popup__content{
|
||||||
|
margin-bottom: 11%;
|
||||||
|
}
|
||||||
|
|
||||||
.phone-money {
|
.phone-money {
|
||||||
width: 604rpx;
|
width: 604rpx;
|
||||||
height: 140rpx;
|
height: 140rpx;
|
||||||
|
|
|
@ -48,6 +48,12 @@
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
<u-navbar leftIcon="" title="会员申请">
|
||||||
|
<view class="u-nav-slot" slot="right">
|
||||||
|
<u-icon name="more-dot-fill" size="50" @click="show = true"></u-icon>
|
||||||
|
<u-action-sheet @select="handleSelect" :actions="list" :title="title" :show="show" :closeOnClickOverlay="true" :closeOnClickAction="true" @close="show=false" :safeAreaInsetBottom="true"></u-action-sheet>
|
||||||
|
</view>
|
||||||
|
</u-navbar>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -56,12 +62,23 @@
|
||||||
name: "member_application",
|
name: "member_application",
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
title:'管理',
|
||||||
|
list: [
|
||||||
|
{
|
||||||
|
name:'购买记录',
|
||||||
|
fontSize:'28'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name:'为他人充值',
|
||||||
|
fontSize:'28'
|
||||||
|
},
|
||||||
|
],
|
||||||
|
show: false,
|
||||||
form: {
|
form: {
|
||||||
phone: ''
|
phone: ''
|
||||||
},
|
},
|
||||||
rules: {
|
rules: {
|
||||||
phone: [
|
phone: [{
|
||||||
{
|
|
||||||
pattern: /^[0-9a-zA-Z]*$/g,
|
pattern: /^[0-9a-zA-Z]*$/g,
|
||||||
// 正则检验前先将值转为字符串
|
// 正则检验前先将值转为字符串
|
||||||
transform(value) {
|
transform(value) {
|
||||||
|
@ -85,6 +102,23 @@
|
||||||
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
handleSelect(value){
|
||||||
|
switch (value.name){
|
||||||
|
case "购买记录":
|
||||||
|
uni.navigateTo({
|
||||||
|
url:'/pages/member_record/index'
|
||||||
|
})
|
||||||
|
break;
|
||||||
|
case "为他人充值":
|
||||||
|
console.log(123)
|
||||||
|
uni.navigateTo({
|
||||||
|
url:'/pages/member_others/index'
|
||||||
|
})
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
},
|
||||||
submit() {
|
submit() {
|
||||||
|
|
||||||
this.$refs.uForm.validate().then(res => {
|
this.$refs.uForm.validate().then(res => {
|
||||||
|
@ -99,12 +133,16 @@
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.box {
|
.box {
|
||||||
|
margin-top: 10%;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
height: 100vh;
|
height: 100vh;
|
||||||
background: url(../../static/images/memberBg.png);
|
background: url(../../static/images/memberBg.png);
|
||||||
background-size: cover;
|
background-size: cover;
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
background-attachment: fixed;
|
background-attachment: fixed;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.box-member {
|
.box-member {
|
||||||
padding: 36rpx 40rpx;
|
padding: 36rpx 40rpx;
|
||||||
border-radius: 20rpx;
|
border-radius: 20rpx;
|
||||||
|
@ -112,6 +150,7 @@
|
||||||
// padding: 20rpx 20rpx 30rpx 20rpx;
|
// padding: 20rpx 20rpx 30rpx 20rpx;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
|
|
||||||
.member-left {
|
.member-left {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
@ -121,17 +160,20 @@
|
||||||
font-family: PingFang SC;
|
font-family: PingFang SC;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
color: #000000;
|
color: #000000;
|
||||||
|
|
||||||
.left-title {
|
.left-title {
|
||||||
font-size: 35rpx;
|
font-size: 35rpx;
|
||||||
font-family: PingFang SC;
|
font-family: PingFang SC;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
color: #000000;
|
color: #000000;
|
||||||
}
|
}
|
||||||
|
|
||||||
.left-info {
|
.left-info {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.member-right {
|
.member-right {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
@ -142,6 +184,7 @@
|
||||||
font-family: PingFang SC;
|
font-family: PingFang SC;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
color: #000000;
|
color: #000000;
|
||||||
|
|
||||||
image {
|
image {
|
||||||
width: 100rpx;
|
width: 100rpx;
|
||||||
height: 100rpx;
|
height: 100rpx;
|
||||||
|
@ -179,6 +222,7 @@
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
height: 10%;
|
height: 10%;
|
||||||
|
|
||||||
.equity-member {
|
.equity-member {
|
||||||
margin: 0 10%;
|
margin: 0 10%;
|
||||||
font-size: 30rpx;
|
font-size: 30rpx;
|
||||||
|
@ -194,6 +238,7 @@
|
||||||
color: #FF4922;
|
color: #FF4922;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.equity-item {
|
.equity-item {
|
||||||
background: #fff;
|
background: #fff;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
@ -201,6 +246,7 @@
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
border-radius: 20rpx;
|
border-radius: 20rpx;
|
||||||
margin: 0 20rpx 20rpx 20rpx;
|
margin: 0 20rpx 20rpx 20rpx;
|
||||||
|
|
||||||
// padding: 30rpx 24rpx;
|
// padding: 30rpx 24rpx;
|
||||||
.equity-grade {
|
.equity-grade {
|
||||||
border-radius: 10rpx 10rpx;
|
border-radius: 10rpx 10rpx;
|
||||||
|
@ -208,10 +254,12 @@
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
}
|
}
|
||||||
|
|
||||||
.equity-money {
|
.equity-money {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-around;
|
justify-content: space-around;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
|
|
||||||
.money-box {
|
.money-box {
|
||||||
width: 46%;
|
width: 46%;
|
||||||
padding: 24rpx 25rpx;
|
padding: 24rpx 25rpx;
|
||||||
|
@ -224,6 +272,7 @@
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
color: #000000;
|
color: #000000;
|
||||||
margin-bottom: 18rpx;
|
margin-bottom: 18rpx;
|
||||||
|
|
||||||
.money-text {
|
.money-text {
|
||||||
font-size: 30rpx;
|
font-size: 30rpx;
|
||||||
font-family: PingFang SC;
|
font-family: PingFang SC;
|
||||||
|
@ -231,12 +280,15 @@
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.money-completed {
|
.money-completed {
|
||||||
background: #FFF2F2;
|
background: #FFF2F2;
|
||||||
border: 1px solid #F22E60;
|
border: 1px solid #F22E60;
|
||||||
|
|
||||||
.money-text {
|
.money-text {
|
||||||
color: #F91F57;
|
color: #F91F57;
|
||||||
}
|
}
|
||||||
|
|
||||||
view {
|
view {
|
||||||
margin-top: 26rpx;
|
margin-top: 26rpx;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
@ -252,22 +304,27 @@
|
||||||
.money-treat {
|
.money-treat {
|
||||||
background: #FFFDF1;
|
background: #FFFDF1;
|
||||||
border: 1px solid #FF962F;
|
border: 1px solid #FF962F;
|
||||||
|
|
||||||
.money-text {
|
.money-text {
|
||||||
margin-top: 26rpx;
|
margin-top: 26rpx;
|
||||||
color: #EBAF00;
|
color: #EBAF00;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.money-term {
|
.money-term {
|
||||||
background: #F8FFF8;
|
background: #F8FFF8;
|
||||||
border: 1px solid #38A74F;
|
border: 1px solid #38A74F;
|
||||||
|
|
||||||
.money-text {
|
.money-text {
|
||||||
margin-top: 26rpx;
|
margin-top: 26rpx;
|
||||||
color: #2C9E2C;
|
color: #2C9E2C;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.money-time {
|
.money-time {
|
||||||
background: #F0FDFC;
|
background: #F0FDFC;
|
||||||
border: 1px solid #5CA4E8;
|
border: 1px solid #5CA4E8;
|
||||||
|
|
||||||
.money-text {
|
.money-text {
|
||||||
margin-top: 26rpx;
|
margin-top: 26rpx;
|
||||||
color: #2D7AC9;
|
color: #2D7AC9;
|
||||||
|
|
|
@ -37,6 +37,7 @@
|
||||||
<paymentMember :payMode='payMode' :pay_close="pay_close" @onChangeFun='onChangeFun' :payInfo="payInfo">
|
<paymentMember :payMode='payMode' :pay_close="pay_close" @onChangeFun='onChangeFun' :payInfo="payInfo">
|
||||||
</paymentMember>
|
</paymentMember>
|
||||||
<button class="box-submit" @click="goPay">立即充值</button>
|
<button class="box-submit" @click="goPay">立即充值</button>
|
||||||
|
<u-navbar autoBack title="为他人充值"></u-navbar>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -144,6 +145,10 @@
|
||||||
confirmPhone: this.form.confirmPhone,
|
confirmPhone: this.form.confirmPhone,
|
||||||
orderInfos
|
orderInfos
|
||||||
}
|
}
|
||||||
|
}else{
|
||||||
|
this.$util.Tips({
|
||||||
|
title: '请选择档次套餐'
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}).catch(errors => {
|
}).catch(errors => {
|
||||||
uni.$u.toast('校验失败')
|
uni.$u.toast('校验失败')
|
||||||
|
@ -196,6 +201,7 @@
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.box {
|
.box {
|
||||||
|
margin-top: 10%;
|
||||||
position: relative;
|
position: relative;
|
||||||
padding: 8% 40rpx 30rpx 40rpx;
|
padding: 8% 40rpx 30rpx 40rpx;
|
||||||
min-height: 100vh;
|
min-height: 100vh;
|
||||||
|
|
|
@ -1,22 +1,28 @@
|
||||||
<template>
|
<template>
|
||||||
<view class="box">
|
<view class="box">
|
||||||
|
<view class="box-seach">
|
||||||
<u-search placeholder="按手机号搜索查询" v-model="keyword" border-color="#F94B78" height="70" margin="0 0 35rpx 0" placeholder-color="#9C9C9C" bg-color="#fff" :show-action="false"></u-search>
|
<u-search placeholder="按手机号搜索查询" v-model="keyword" border-color="#F94B78" height="70" margin="0 0 35rpx 0" placeholder-color="#9C9C9C" bg-color="#fff" :show-action="false"></u-search>
|
||||||
|
</view>
|
||||||
<view class="list-item" v-for="(item,index) in memberData" :key="index">
|
<view class="list-item" v-for="(item,index) in memberData" :key="index">
|
||||||
|
<view class="item-title">
|
||||||
<view class="item-phone">
|
<view class="item-phone">
|
||||||
<view></view>
|
<view></view>
|
||||||
<text>充值号码:{{item.userPhone}}</text>
|
<text>充值号码:{{item.userPhone}}</text>
|
||||||
|
</view>
|
||||||
|
<button v-show="item.bool" @click="handleService(item.orderId)">申请退款</button>
|
||||||
</view>
|
</view>
|
||||||
<view class="item-text">
|
<view class="item-text">
|
||||||
<text>充值档次:{{item.grade}}</text>
|
<text>充值档次:{{item.grade}}</text>
|
||||||
<text>日期:{{item.stringCreateTime}}</text>
|
<text>日期:{{item.stringCreateTime}}</text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
<u-navbar autoBack title="购买纪录"></u-navbar>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import {
|
import {
|
||||||
memberOrderInfo
|
memberOrderInfo,memberApplyRefund
|
||||||
} from '@/api/member.js';
|
} from '@/api/member.js';
|
||||||
import { Debounce } from '@/utils/validate.js'
|
import { Debounce } from '@/utils/validate.js'
|
||||||
export default {
|
export default {
|
||||||
|
@ -28,8 +34,17 @@
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
async onLoad() {
|
async onLoad() {
|
||||||
|
let milliseconds = 2 * 3600 * 1000 // 7200000 毫秒
|
||||||
|
let timestamp = new Date().getTime()
|
||||||
const res = await memberOrderInfo()
|
const res = await memberOrderInfo()
|
||||||
this.memberData = res.data
|
const arr = res.data.map((item) => {
|
||||||
|
return {
|
||||||
|
...item,
|
||||||
|
bool:item.createTime+milliseconds>timestamp
|
||||||
|
}
|
||||||
|
})
|
||||||
|
this.memberData = arr
|
||||||
|
console.log(this.memberData)
|
||||||
},
|
},
|
||||||
watch:{
|
watch:{
|
||||||
keyword :Debounce (function (){
|
keyword :Debounce (function (){
|
||||||
|
@ -50,14 +65,24 @@
|
||||||
},1000)
|
},1000)
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
async handleService(orderId){
|
||||||
|
await memberApplyRefund({orderId})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.box {
|
.box {
|
||||||
padding: 45rpx 40rpx;
|
margin-top: 10%;
|
||||||
|
padding: 20% 40rpx;
|
||||||
|
.box-seach{
|
||||||
|
padding: 10% 40rpx;
|
||||||
|
width: 100%;
|
||||||
|
position: fixed;
|
||||||
|
top: 3%;
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
.list-item{
|
.list-item{
|
||||||
margin-bottom: 26rpx;
|
margin-bottom: 26rpx;
|
||||||
padding: 30rpx 16rpx 25rpx 16rpx;
|
padding: 30rpx 16rpx 25rpx 16rpx;
|
||||||
|
@ -66,6 +91,9 @@
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
|
.item-title{
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
.item-phone{
|
.item-phone{
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
@ -79,6 +107,14 @@
|
||||||
background: #E91D51;
|
background: #E91D51;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
button{
|
||||||
|
padding: 6rpx ;
|
||||||
|
font-size: 26rpx;
|
||||||
|
background: rgb(22,155,213);
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.item-text{
|
.item-text{
|
||||||
padding: 34rpx 12rpx;
|
padding: 34rpx 12rpx;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
|
|
|
@ -125,6 +125,10 @@ import store from '@/store/index';
|
||||||
userPhone: store.state.app.userInfo.mobile,
|
userPhone: store.state.app.userInfo.mobile,
|
||||||
orderInfos
|
orderInfos
|
||||||
}
|
}
|
||||||
|
}else{
|
||||||
|
this.$util.Tips({
|
||||||
|
title: '请选择档次套餐'
|
||||||
|
})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -6,11 +6,10 @@
|
||||||
<view class="head pad30">
|
<view class="head pad30">
|
||||||
<view class="user-card">
|
<view class="user-card">
|
||||||
<view class="user-info">
|
<view class="user-info">
|
||||||
<image class="avatar" :src='userInfo.avatar' v-if="userInfo.avatar && uid"
|
<image class="avatar" :src='userInfo.avatar' v-if="userInfo.avatar && uid" @click="goEdit()"></image>
|
||||||
@click="goEdit()"></image>
|
|
||||||
<image v-else class="avatar" src="/static/images/f.png" mode="" @click="goEdit()"></image>
|
<image v-else class="avatar" src="/static/images/f.png" mode="" @click="goEdit()"></image>
|
||||||
<view class="info">
|
<view class="info">
|
||||||
<view class="name" v-if="!uid" @tap="openAuto">
|
<view class="name" v-if="!uid" @click="openAuto">
|
||||||
请点击登录
|
请点击登录
|
||||||
</view>
|
</view>
|
||||||
<view class="name" v-if="uid">
|
<view class="name" v-if="uid">
|
||||||
|
@ -23,8 +22,8 @@
|
||||||
</view>
|
</view>
|
||||||
<view class="num" v-if="userInfo.mobile && uid" @click="goEdit()">
|
<view class="num" v-if="userInfo.mobile && uid" @click="goEdit()">
|
||||||
<view class="num-txt">{{userInfo.mobile}}</view>
|
<view class="num-txt">{{userInfo.mobile}}</view>
|
||||||
<view class="icon">
|
<view class="icon-setting">
|
||||||
<image src="/static/images/edit.png" mode=""></image>
|
<u-icon name="setting" color="#000" size="36"></u-icon>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="phone" v-if="!userInfo.mobile && isLogin" @tap="bindPhone">绑定手机号</view>
|
<view class="phone" v-if="!userInfo.mobile && isLogin" @tap="bindPhone">绑定手机号</view>
|
||||||
|
@ -36,10 +35,10 @@
|
||||||
class="num">{{userInfo.nowMoney && uid ?Number(userInfo.nowMoney).toFixed(2):0}}</text>
|
class="num">{{userInfo.nowMoney && uid ?Number(userInfo.nowMoney).toFixed(2):0}}</text>
|
||||||
<view class="txt">余额</view>
|
<view class="txt">余额</view>
|
||||||
</view> -->
|
</view> -->
|
||||||
<view class="num-item" @click="goMenuPage('/pages/users/user_integral/index')">
|
<!-- <view class="num-item" @click="goMenuPage('/pages/users/user_integral/index')">
|
||||||
<text class="num">{{userInfo.integral && uid ? userInfo.integral: 0}}</text>
|
<text class="num">{{userInfo.integral && uid ? userInfo.integral: 0}}</text>
|
||||||
<view class="txt">积分</view>
|
<view class="txt">积分</view>
|
||||||
</view>
|
</view> -->
|
||||||
<!-- <view class="num-item" @click="goMenuPage('/pages/users/user_coupon/index')">
|
<!-- <view class="num-item" @click="goMenuPage('/pages/users/user_coupon/index')">
|
||||||
<text class="num">{{userInfo.couponCount && uid ? userInfo.couponCount : 0}}</text>
|
<text class="num">{{userInfo.couponCount && uid ? userInfo.couponCount : 0}}</text>
|
||||||
<view class="txt">优惠券</view>
|
<view class="txt">优惠券</view>
|
||||||
|
@ -53,10 +52,9 @@
|
||||||
</view>
|
</view>
|
||||||
<view class="order-wrapper">
|
<view class="order-wrapper">
|
||||||
<view class="order-hd flex">
|
<view class="order-hd flex">
|
||||||
<view class="left">订单中心</view>
|
<view class="left">我的商品订单</view>
|
||||||
<navigator class="right flex" hover-class="none" url="/pages/users/order_list/index"
|
<navigator class="right flex" hover-class="none" url="/pages/users/order_list/index" open-type="navigate">
|
||||||
open-type="navigate">
|
全部订单
|
||||||
查看全部
|
|
||||||
<text class="iconfont icon-xiangyou"></text>
|
<text class="iconfont icon-xiangyou"></text>
|
||||||
</navigator>
|
</navigator>
|
||||||
</view>
|
</view>
|
||||||
|
@ -88,36 +86,23 @@
|
||||||
|
|
||||||
<!-- 会员菜单 -->
|
<!-- 会员菜单 -->
|
||||||
<view class="user-menus" style="margin-top: 20rpx;">
|
<view class="user-menus" style="margin-top: 20rpx;">
|
||||||
<view class="menu-title">我的服务</view>
|
<!-- <view class="menu-title">我的服务</view> -->
|
||||||
<view class="list-box">
|
<u-cell-group>
|
||||||
<block v-for="(item,index) in MyMenus" :key="index">
|
<u-cell title="收货地址" isLink @click="jumpPage('/pages/users/user_address_list/index')">
|
||||||
<!-- <navigator class="item" :url="item.url" hover-class="none"
|
<u-icon slot="icon" size="32" name="map"></u-icon>
|
||||||
v-if="!(item.url =='/pages/service/index' || (item.url =='/pages/users/user_spread_user/index' && !userInfo.isPromoter))">
|
</u-cell>
|
||||||
<image :src="item.pic"></image>
|
<u-cell title="分销中心" v-if="userInfo.userType === 'PROMOTER'" isLink
|
||||||
<text>{{item.name}}</text>
|
@click="jumpPage('/pages/users/user_spread_user/index')">
|
||||||
</navigator> -->
|
<u-icon slot="icon" size="32" name="map"></u-icon>
|
||||||
<navigator class="item" :url="item.url" hover-class="none"
|
</u-cell>
|
||||||
v-if="!(item.url =='/pages/users/user_spread_user/index' && userInfo.userType !== 'PROMOTER')"
|
<u-cell title="热线电话" value="023-12948338" :value="tenantInfo.serviceMobile" isLink>
|
||||||
>
|
<u-icon slot="icon" size="32" name="phone"></u-icon>
|
||||||
<image :src="item.pic"></image>
|
</u-cell>
|
||||||
<text>{{item.name}}</text>
|
<u-cell title="在线客服" value="8:30-17:30" :value="tenantInfo.serviceTime" isLink @click="kefuClick">
|
||||||
</navigator>
|
<u-icon slot="icon" size="32" name="kefu-ermai"></u-icon>
|
||||||
</block>
|
</u-cell>
|
||||||
<!-- #ifndef MP -->
|
</u-cell-group>
|
||||||
<view class="item" @click="kefuClick">
|
|
||||||
<image :src="servicePic"></image>
|
|
||||||
<text>联系客服</text>
|
|
||||||
</view>
|
</view>
|
||||||
<!-- #endif -->
|
|
||||||
<!-- #ifdef MP -->
|
|
||||||
<button class="item" open-type='contact' hover-class='none'>
|
|
||||||
<image :src="servicePic"></image>
|
|
||||||
<text>联系客服</text>
|
|
||||||
</button>
|
|
||||||
<!-- #endif -->
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<image src="/static/images/support.png" alt="" class='support'>
|
|
||||||
<view class="uni-p-b-98"></view>
|
<view class="uni-p-b-98"></view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
|
@ -131,12 +116,24 @@
|
||||||
<script>
|
<script>
|
||||||
let sysHeight = uni.getSystemInfoSync().statusBarHeight + 'px';
|
let sysHeight = uni.getSystemInfoSync().statusBarHeight + 'px';
|
||||||
import Cache from '@/utils/cache';
|
import Cache from '@/utils/cache';
|
||||||
import {BACK_URL} from '@/config/cache';
|
import {
|
||||||
import {getMenuList} from '@/api/user.js';
|
BACK_URL
|
||||||
import {orderData} from '@/api/order.js';
|
} from '@/config/cache';
|
||||||
import {toLogin} from '@/libs/login.js';
|
import {
|
||||||
import {getCity} from '@/api/api.js';
|
getMenuList
|
||||||
import {mapGetters} from "vuex";
|
} from '@/api/user.js';
|
||||||
|
import {
|
||||||
|
orderData
|
||||||
|
} from '@/api/order.js';
|
||||||
|
import {
|
||||||
|
toLogin
|
||||||
|
} from '@/libs/login.js';
|
||||||
|
import {
|
||||||
|
getCity
|
||||||
|
} from '@/api/api.js';
|
||||||
|
import {
|
||||||
|
mapGetters
|
||||||
|
} from "vuex";
|
||||||
// #ifdef H5
|
// #ifdef H5
|
||||||
import Auth from '@/libs/wechat';
|
import Auth from '@/libs/wechat';
|
||||||
// #endif
|
// #endif
|
||||||
|
@ -150,7 +147,7 @@
|
||||||
authorize
|
authorize
|
||||||
// #endif
|
// #endif
|
||||||
},
|
},
|
||||||
computed: mapGetters(['isLogin', 'chatUrl', 'userInfo', 'uid']),
|
computed: mapGetters(['isLogin', 'chatUrl', 'userInfo', 'uid', 'tenantInfo']),
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
orderMenu: [{
|
orderMenu: [{
|
||||||
|
@ -173,7 +170,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
img: '/static/images/order4.png',
|
img: '/static/images/order4.png',
|
||||||
title: '待评价',
|
title: '已完成',
|
||||||
url: '/pages/users/order_list/index?status=3',
|
url: '/pages/users/order_list/index?status=3',
|
||||||
num: 0
|
num: 0
|
||||||
},
|
},
|
||||||
|
@ -193,8 +190,7 @@
|
||||||
isAuto: false, //没有授权的不会自动授权
|
isAuto: false, //没有授权的不会自动授权
|
||||||
isShowAuth: false, //是否隐藏授权
|
isShowAuth: false, //是否隐藏授权
|
||||||
orderStatusNum: {},
|
orderStatusNum: {},
|
||||||
MyMenus: [
|
MyMenus: [{
|
||||||
{
|
|
||||||
pic: '/static/images/address.png',
|
pic: '/static/images/address.png',
|
||||||
url: '/pages/users/user_address_list/index',
|
url: '/pages/users/user_address_list/index',
|
||||||
name: '收货地址'
|
name: '收货地址'
|
||||||
|
@ -250,17 +246,18 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
// 记录会员访问
|
|
||||||
// setVisit(){
|
|
||||||
// setVisit({
|
|
||||||
// url:'/pages/user/index'
|
|
||||||
// }).then(res=>{})
|
|
||||||
// },
|
|
||||||
navito(e) {
|
navito(e) {
|
||||||
window.location.href = 'https://' + e;
|
window.location.href = 'https://' + e;
|
||||||
},
|
},
|
||||||
|
jumpPage(url) {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: url
|
||||||
|
})
|
||||||
|
},
|
||||||
kefuClick() {
|
kefuClick() {
|
||||||
location.href = this.chatUrl;
|
if (tenantInfo.wxKfUrl) {
|
||||||
|
location.href = tenantInfo.wxKfUrl
|
||||||
|
}
|
||||||
},
|
},
|
||||||
getOrderData() {
|
getOrderData() {
|
||||||
let that = this;
|
let that = this;
|
||||||
|
@ -289,8 +286,10 @@
|
||||||
},
|
},
|
||||||
// 打开授权
|
// 打开授权
|
||||||
openAuto() {
|
openAuto() {
|
||||||
Cache.set(BACK_URL, '')
|
// Cache.set(BACK_URL, '')
|
||||||
toLogin();
|
uni.navigateTo({
|
||||||
|
url: '/pages/users/login/index'
|
||||||
|
})
|
||||||
},
|
},
|
||||||
// 授权回调
|
// 授权回调
|
||||||
onLoadFun() {
|
onLoadFun() {
|
||||||
|
@ -370,12 +369,15 @@
|
||||||
left: 0;
|
left: 0;
|
||||||
top: 0;
|
top: 0;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 420rpx;
|
height: 616rpx;
|
||||||
background-image: url('~@/static/images/user_bg.png');
|
background: linear-gradient(0deg, #F94B78 0%, #FFD35C 100%);
|
||||||
background-repeat: no-repeat;
|
opacity: 0.18;
|
||||||
background-size: 100% 100%;
|
z-index: 0
|
||||||
}
|
}
|
||||||
|
|
||||||
.contenBox {
|
.contenBox {
|
||||||
|
position: relative;
|
||||||
|
z-index: 9;
|
||||||
padding: 0 30rpx;
|
padding: 0 30rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -408,7 +410,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.head {
|
.head {
|
||||||
background: linear-gradient(360deg, rgba(255, 121, 49, 0) 0%, rgba(248, 74, 29, 0.82) 39%, #E93323 100%);
|
// background: linear-gradient(360deg, rgba(255, 121, 49, 0) 0%, rgba(248, 74, 29, 0.82) 39%, #E93323 100%);
|
||||||
// padding: 0 30rpx;
|
// padding: 0 30rpx;
|
||||||
|
|
||||||
.user-card {
|
.user-card {
|
||||||
|
@ -416,6 +418,7 @@
|
||||||
width: 100%;
|
width: 100%;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
padding: 35rpx 0 30rpx 0;
|
padding: 35rpx 0 30rpx 0;
|
||||||
|
|
||||||
.user-info {
|
.user-info {
|
||||||
z-index: 20;
|
z-index: 20;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
@ -425,6 +428,7 @@
|
||||||
width: 120rpx;
|
width: 120rpx;
|
||||||
height: 120rpx;
|
height: 120rpx;
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
|
border: 2px solid #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
.info {
|
.info {
|
||||||
|
@ -438,8 +442,8 @@
|
||||||
.name {
|
.name {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
color: #fff;
|
color: #000;
|
||||||
font-size: 31rpx;
|
font-size: 35rpx;
|
||||||
|
|
||||||
.vip {
|
.vip {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
@ -461,7 +465,13 @@
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
font-size: 26rpx;
|
font-size: 26rpx;
|
||||||
color: rgba(255, 255, 255, 0.6);
|
color: #000;
|
||||||
|
|
||||||
|
.icon-setting {
|
||||||
|
position: absolute;
|
||||||
|
top: 44rpx;
|
||||||
|
right: 28rpx;
|
||||||
|
}
|
||||||
|
|
||||||
image {
|
image {
|
||||||
width: 22rpx;
|
width: 22rpx;
|
||||||
|
|
|
@ -8,20 +8,24 @@
|
||||||
<div class="list">
|
<div class="list">
|
||||||
<form @submit.prevent="submit">
|
<form @submit.prevent="submit">
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="acea-row row-middle">
|
<div class="acea-row row-middle" v-if="current === 0">
|
||||||
<image src="/static/images/phone_1.png" style="width: 37rpx; height: 42rpx;"></image>
|
<image src="/static/images/user_1.png" style="width: 40rpx; height: 40rpx;"></image>
|
||||||
<input type="text" class="texts" placeholder="输入您手机号码" v-model="mobile" required />
|
<input type="text" class="texts" placeholder="请输入您的账号" v-model="mobile" required />
|
||||||
|
</div>
|
||||||
|
<div class="acea-row row-middle" v-else>
|
||||||
|
<image src="/static/images/phone_2.png" style="width: 40rpx; height: 40rpx;"></image>
|
||||||
|
<input type="text" class="texts" placeholder="请输入您的手机号" v-model="mobile" required />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="item" v-if="current === 0">
|
<div class="item" v-if="current === 0">
|
||||||
<div class="acea-row row-middle">
|
<div class="acea-row row-middle">
|
||||||
<image src="/static/images/code_2.png" style="width: 28rpx; height: 32rpx;"></image>
|
<image src="/static/images/code_3.png" style="width: 40rpx; height: 40rpx;"></image>
|
||||||
<input type="password" class="texts" placeholder="填写登录密码" v-model="password" required />
|
<input type="password" class="texts" placeholder="填写登录密码" v-model="password" required />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="item" v-else>
|
<div class="item" v-else>
|
||||||
<div class="acea-row row-middle">
|
<div class="acea-row row-middle">
|
||||||
<image src="/static/images/code_2.png" style="width: 28rpx; height: 32rpx;"></image>
|
<image src="/static/images/code_4.png" style="width: 40rpx; height: 40rpx;"></image>
|
||||||
<input type="text" placeholder="请输入您的验证码" class="texts" v-model="captcha" />
|
<input type="text" placeholder="请输入您的验证码" class="texts" v-model="captcha" />
|
||||||
</div>
|
</div>
|
||||||
<button class="code" :disabled="disabled" :class="disabled === true ? 'on' : ''" @click="code">
|
<button class="code" :disabled="disabled" :class="disabled === true ? 'on' : ''" @click="code">
|
||||||
|
@ -369,6 +373,8 @@
|
||||||
|
|
||||||
.login-wrapper {
|
.login-wrapper {
|
||||||
padding: 30rpx 52rpx;
|
padding: 30rpx 52rpx;
|
||||||
|
background: url('@/static/images/bg-linear.png') center 0 no-repeat;
|
||||||
|
background-size:100% 672rpx;
|
||||||
|
|
||||||
.logo-wrap {
|
.logo-wrap {
|
||||||
margin: 285rpx 0 85rpx 0;
|
margin: 285rpx 0 85rpx 0;
|
||||||
|
@ -465,7 +471,7 @@
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 87rpx;
|
height: 87rpx;
|
||||||
margin-top: 237rpx;
|
margin-top: 137rpx;
|
||||||
color: #FFFFFF;
|
color: #FFFFFF;
|
||||||
font-size: 32rpx;
|
font-size: 32rpx;
|
||||||
background: linear-gradient(0deg, #E63163 0%, #FF819F 100%);
|
background: linear-gradient(0deg, #E63163 0%, #FF819F 100%);
|
||||||
|
|
|
@ -1,37 +1,42 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="login-wrapper">
|
<div class="login-wrapper">
|
||||||
<div class="shading">
|
<div class="logo-wrap">
|
||||||
<!-- <image :src="logoUrl"/> -->
|
<img src="/static/images/logo.png" style="width:127rpx;height:45rpx;"></image>
|
||||||
<image :src="logoUrl" />
|
|
||||||
<!-- <image src="/static/images/logo2.png" v-if="!logoUrl" /> -->
|
|
||||||
</div>
|
</div>
|
||||||
|
<view class="title">注册账号</view>
|
||||||
<div class="whiteBg">
|
<div class="whiteBg">
|
||||||
<div class="list">
|
<div class="list">
|
||||||
<form @submit.prevent="submit">
|
<form @submit.prevent="submit">
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="acea-row row-middle">
|
<div class="acea-row row-middle">
|
||||||
<image src="/static/images/phone_1.png" style="width: 24rpx; height: 34rpx;"></image>
|
<image src="/static/images/user_1.png" style="width: 40rpx; height: 40rpx;"></image>
|
||||||
<input type="text" class="texts" placeholder="请输入姓名" v-model="registerForm.realName" required />
|
<input type="text" class="texts" placeholder="请输入姓名" v-model="registerForm.realName" required />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="acea-row row-middle">
|
<div class="acea-row row-middle">
|
||||||
<image src="/static/images/phone_1.png" style="width: 28rpx; height: 32rpx;"></image>
|
<image src="/static/images/phone_2.png" style="width: 40rpx; height: 40rpx;"></image>
|
||||||
<input type="text" class="texts" placeholder="请输入手机号" v-model="registerForm.mobile" required />
|
<input type="text" class="texts" placeholder="请输入手机号" v-model="registerForm.mobile" required />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="acea-row row-middle">
|
<div class="acea-row row-middle">
|
||||||
<image src="/static/images/code_2.png" style="width: 28rpx; height: 32rpx;"></image>
|
<image src="/static/images/code_3.png" style="width: 40rpx; height: 40rpx;"></image>
|
||||||
<input type="text" placeholder="填写验证码" class="codeIput" v-model="registerForm.code" />
|
<input type="text" placeholder="填写验证码" class="texts" v-model="registerForm.code" />
|
||||||
|
</div>
|
||||||
<button class="code" :disabled="disabled" :class="disabled === true ? 'on' : ''" @click="code">
|
<button class="code" :disabled="disabled" :class="disabled === true ? 'on' : ''" @click="code">
|
||||||
{{ text }}
|
{{ text }}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<button class="logon" @click="onRegister" :disabled="loading" :loading="loading">注册</button>
|
<button class="logon" @click="onRegister" :disabled="loading" :loading="loading">注册</button>
|
||||||
|
<div class="protocol-wrap">
|
||||||
|
<u-checkbox-group v-model="checked">
|
||||||
|
<u-checkbox size="30" shape="circle" activeColor="#F35981" name="同意"></u-checkbox>
|
||||||
|
</u-checkbox-group>
|
||||||
|
<view class="text">我已阅读并同意 <span class="link">《创盈商城用户协议》</span></view>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="bottom"></div>
|
<div class="bottom"></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -51,6 +56,7 @@
|
||||||
return {
|
return {
|
||||||
logoUrl: '',
|
logoUrl: '',
|
||||||
loading: false,
|
loading: false,
|
||||||
|
checked: [],
|
||||||
registerForm: {
|
registerForm: {
|
||||||
realName: '',
|
realName: '',
|
||||||
mobile: '',
|
mobile: '',
|
||||||
|
@ -67,7 +73,7 @@
|
||||||
const res = await register(this.registerForm)
|
const res = await register(this.registerForm)
|
||||||
this.$util.Tips({
|
this.$util.Tips({
|
||||||
title: res.code === 0 ? '注册成功' : res.msg
|
title: res.code === 0 ? '注册成功' : res.msg
|
||||||
}, '/pages/users/login/index')
|
}, '/pages/users/register/success')
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
//TODO handle the exception
|
//TODO handle the exception
|
||||||
this.$util.Tips({
|
this.$util.Tips({
|
||||||
|
@ -84,6 +90,9 @@
|
||||||
if (!/^1(3|4|5|7|8|9|6)\d{9}$/i.test(this.registerForm.mobile)) return this.$util.Tips({
|
if (!/^1(3|4|5|7|8|9|6)\d{9}$/i.test(this.registerForm.mobile)) return this.$util.Tips({
|
||||||
title: '请输入正确的手机号码'
|
title: '请输入正确的手机号码'
|
||||||
});
|
});
|
||||||
|
if(this.checked.length === 0) return this.$util.Tips({
|
||||||
|
title: '请勾选同意用户协议'
|
||||||
|
});
|
||||||
await registerVerify(this.registerForm.mobile, 4)
|
await registerVerify(this.registerForm.mobile, 4)
|
||||||
.then(res => {
|
.then(res => {
|
||||||
this.$util.Tips({
|
this.$util.Tips({
|
||||||
|
@ -191,7 +200,19 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.login-wrapper {
|
.login-wrapper {
|
||||||
padding: 30rpx;
|
padding: 30rpx 52rpx;
|
||||||
|
background: url('@/static/images/bg-linear.png') center 0 no-repeat;
|
||||||
|
background-size:100% 672rpx;
|
||||||
|
|
||||||
|
.logo-wrap {
|
||||||
|
margin: 285rpx 0 85rpx 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title {
|
||||||
|
font-size: 40rpx;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
|
||||||
.shading {
|
.shading {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
@ -215,25 +236,45 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.whiteBg {
|
.whiteBg {
|
||||||
margin-top: 100rpx;
|
margin-top: 46rpx;
|
||||||
|
|
||||||
.list {
|
.list {
|
||||||
border-radius: 16rpx;
|
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
|
||||||
.item {
|
.item {
|
||||||
border-bottom: 1px solid #F0F0F0;
|
margin-bottom: 38rpx;
|
||||||
background: #fff;
|
height: 98rpx;
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.code {
|
||||||
|
width: 197rpx;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 96rpx;
|
||||||
|
background: #FFF3F6;
|
||||||
|
border: 1px solid #F54275;
|
||||||
|
border-radius: 15rpx;
|
||||||
|
font-size: 28rpx;
|
||||||
|
color: #F03A76;
|
||||||
|
margin-left: 19rpx;
|
||||||
|
}
|
||||||
|
|
||||||
.row-middle {
|
.row-middle {
|
||||||
position: relative;
|
position: relative;
|
||||||
padding: 16rpx 45rpx;
|
padding: 28rpx;
|
||||||
|
background: #fff;
|
||||||
|
border: 1px solid #BFBFBF;
|
||||||
|
border-radius: 15rpx;
|
||||||
|
flex: 1;
|
||||||
|
|
||||||
.texts {
|
.texts {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
font-size: 28rpx;
|
font-size: 28rpx;
|
||||||
height: 80rpx;
|
height: 42rpx;
|
||||||
line-height: 80rpx;
|
line-height: 42rpx;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
@ -249,14 +290,6 @@
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.code {
|
|
||||||
position: absolute;
|
|
||||||
right: 30rpx;
|
|
||||||
top: 50%;
|
|
||||||
color: $theme-color;
|
|
||||||
font-size: 26rpx;
|
|
||||||
transform: translateY(-50%);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -266,18 +299,36 @@
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 86rpx;
|
height: 87rpx;
|
||||||
margin-top: 80rpx;
|
margin-top: 99rpx;
|
||||||
background-color: $theme-color;
|
|
||||||
border-radius: 120rpx;
|
|
||||||
color: #FFFFFF;
|
color: #FFFFFF;
|
||||||
|
font-size: 32rpx;
|
||||||
|
background: linear-gradient(0deg, #E63163 0%, #FF819F 100%);
|
||||||
|
border-radius: 44rpx;
|
||||||
font-size: 30rpx;
|
font-size: 30rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tips {
|
.tips {
|
||||||
margin: 30rpx;
|
margin: 125rpx 20rpx 0 20rpx;
|
||||||
text-align: center;
|
font-size: 24rpx;
|
||||||
color: #999;
|
color: #000;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
|
||||||
|
.protocol-wrap {
|
||||||
|
margin: 131rpx 0 80rpx 0;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
|
||||||
|
.text {
|
||||||
|
font-size: 24rpx;
|
||||||
|
color: #000;
|
||||||
|
|
||||||
|
.link {
|
||||||
|
color: #F35981;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,56 @@
|
||||||
|
<template>
|
||||||
|
<view class="register-success-wrap">
|
||||||
|
<image src="@/static/images/logo.png" class="icon"></image>
|
||||||
|
<view class="text">恭喜您,注册成功</view>
|
||||||
|
<u-button class="logon" @click="onBackLogin">返回登录</u-button>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
onBackLogin() {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: '/pages/users/login/index'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.register-success-wrap {
|
||||||
|
padding: 0 50rpx;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
.icon {
|
||||||
|
margin: 428rpx auto 56rpx;
|
||||||
|
width: 98rpx;
|
||||||
|
height: 98rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.text {
|
||||||
|
text-align: center;
|
||||||
|
font-size: 40rpx;
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logon {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
width: 100%;
|
||||||
|
height: 87rpx;
|
||||||
|
margin-top: 237rpx;
|
||||||
|
color: #FFFFFF;
|
||||||
|
font-size: 32rpx;
|
||||||
|
background: linear-gradient(0deg, #E63163 0%, #FF819F 100%);
|
||||||
|
border-radius: 44rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -1,33 +1,30 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="register absolute">
|
<div class="login-wrapper">
|
||||||
<div class="shading">
|
<div class="logo-wrap">
|
||||||
<div class="pictrue acea-row row-center-wrapper">
|
<img src="/static/images/logo.png" style="width:127rpx;height:45rpx;"></image>
|
||||||
<image src="../../../static/images/logo2.png" />
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
<view class="title">找回密码</view>
|
||||||
<div class="whiteBg">
|
<div class="whiteBg">
|
||||||
<div class="title">找回密码</div>
|
|
||||||
<div class="list">
|
<div class="list">
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="acea-row row-middle">
|
<div class="acea-row row-middle">
|
||||||
<image src="/static/images/phone_1.png"></image>
|
<image src="/static/images/phone_1.png" style="width: 40rpx; height: 40rpx;"></image>
|
||||||
<input type="text" placeholder="输入手机号码" v-model="account" />
|
<input type="text" class="texts" placeholder="输入手机号码" v-model="account" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="item">
|
<div class="item">
|
||||||
|
|
||||||
<div class="acea-row row-middle">
|
<div class="acea-row row-middle">
|
||||||
<image src="/static/images/code_2.png"></image>
|
<image src="/static/images/code_2.png" style="width: 40rpx; height: 40rpx;"></image>
|
||||||
<input type="text" placeholder="填写验证码" class="codeIput" v-model="captcha" />
|
<input type="text" class="texts" placeholder="填写验证码" v-model="captcha" />
|
||||||
|
</div>
|
||||||
<button class="code" :disabled="disabled" :class="disabled === true ? 'on' : ''" @click="code">
|
<button class="code" :disabled="disabled" :class="disabled === true ? 'on' : ''" @click="code">
|
||||||
{{ text }}
|
{{ text }}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div class="acea-row row-middle">
|
<div class="acea-row row-middle">
|
||||||
<image src="/static/images/code_2.png"></image>
|
<image src="/static/images/code_2.png" style="width: 40rpx; height: 40rpx;"></image>
|
||||||
<input type="password" placeholder="填写您的新密码" v-model="password" />
|
<input type="password" class="texts" placeholder="填写您的新密码" v-model="password" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="item" v-if="isShowCode">
|
<div class="item" v-if="isShowCode">
|
||||||
|
@ -38,8 +35,8 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="logon" @click="registerReset">确认</div>
|
<div class="logon" @click="registerReset">确认</div>
|
||||||
<div class="tip">
|
<div class="tips">
|
||||||
<span class="font-color-red" @click="back">立即登录</span>
|
<span @click="back">立即登录</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="bottom"></div>
|
<div class="bottom"></div>
|
||||||
|
@ -137,9 +134,113 @@
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<style scoped>
|
<style lang="scss" scoped>
|
||||||
.code img {
|
.code img {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.acea-row.row-middle {
|
||||||
|
input {
|
||||||
|
margin-left: 20rpx;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.login-wrapper {
|
||||||
|
padding: 30rpx 52rpx;
|
||||||
|
background: url('@/static/images/bg-linear.png') center 0 no-repeat;
|
||||||
|
background-size: 100% 672rpx;
|
||||||
|
|
||||||
|
.logo-wrap {
|
||||||
|
margin: 285rpx 0 85rpx 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title {
|
||||||
|
font-size: 40rpx;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.whiteBg {
|
||||||
|
|
||||||
|
margin-top: 46rpx;
|
||||||
|
|
||||||
|
.list {
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
.item {
|
||||||
|
margin-bottom: 38rpx;
|
||||||
|
height: 98rpx;
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.code {
|
||||||
|
width: 197rpx;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 96rpx;
|
||||||
|
background: #FFF3F6;
|
||||||
|
border: 1px solid #F54275;
|
||||||
|
border-radius: 15rpx;
|
||||||
|
font-size: 28rpx;
|
||||||
|
color: #F03A76;
|
||||||
|
margin-left: 19rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.row-middle {
|
||||||
|
position: relative;
|
||||||
|
padding: 28rpx;
|
||||||
|
background: #fff;
|
||||||
|
border: 1px solid #BFBFBF;
|
||||||
|
border-radius: 15rpx;
|
||||||
|
flex: 1;
|
||||||
|
|
||||||
|
.texts {
|
||||||
|
flex: 1;
|
||||||
|
font-size: 28rpx;
|
||||||
|
height: 42rpx;
|
||||||
|
line-height: 42rpx;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
input {
|
||||||
|
flex: 1;
|
||||||
|
font-size: 28rpx;
|
||||||
|
height: 80rpx;
|
||||||
|
line-height: 80rpx;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.logon {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
width: 100%;
|
||||||
|
height: 87rpx;
|
||||||
|
margin-top: 80rpx;
|
||||||
|
color: #FFFFFF;
|
||||||
|
font-size: 32rpx;
|
||||||
|
background: linear-gradient(0deg, #E63163 0%, #FF819F 100%);
|
||||||
|
border-radius: 44rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tips {
|
||||||
|
margin-top: 50rpx;
|
||||||
|
font-size: 24rpx;
|
||||||
|
color: #000;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -78,13 +78,13 @@
|
||||||
poster: '',
|
poster: '',
|
||||||
isAuto: false, //没有授权的不会自动授权
|
isAuto: false, //没有授权的不会自动授权
|
||||||
isShowAuth: false, //是否隐藏授权
|
isShowAuth: false, //是否隐藏授权
|
||||||
qrcodeSize: 1000,
|
qrcodeSize: 3000,
|
||||||
PromotionCode: '',
|
PromotionCode: '',
|
||||||
base64List: [],
|
base64List: [],
|
||||||
canvasStatus: true //海报绘图标签
|
canvasStatus: true //海报绘图标签
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: mapGetters(['isLogin', 'uid', 'userInfo']),
|
computed: mapGetters(['isLogin', 'uid', 'userInfo','tenantId']),
|
||||||
watch: {
|
watch: {
|
||||||
isLogin: {
|
isLogin: {
|
||||||
handler: function(newV, oldV) {
|
handler: function(newV, oldV) {
|
||||||
|
@ -202,15 +202,17 @@
|
||||||
make() {
|
make() {
|
||||||
let that = this;
|
let that = this;
|
||||||
let href = '';
|
let href = '';
|
||||||
// #ifdef H5
|
// href = window.location.href.split('/pages')[0];
|
||||||
href = window.location.href.split('/pages')[0];
|
const baseUrl = 'http://yuxy.perrymake.com';
|
||||||
// #endif
|
const url =`${baseUrl}/pages/index/index?redirectUrl=${baseUrl}&tenantId=${that.tenantId}&spreadId=${that.uid}`
|
||||||
uQRCode.make({
|
uQRCode.make({
|
||||||
canvasId: 'qrcode',
|
canvasId: 'qrcode',
|
||||||
text: href + '/pages/index/index?spreadId=' + that.uid,
|
// text: href + '/pages/index/index?spreadId=' + that.uid,
|
||||||
|
text: url,
|
||||||
size: this.qrcodeSize,
|
size: this.qrcodeSize,
|
||||||
margin: 10,
|
margin: 10,
|
||||||
success: res => {
|
success: res => {
|
||||||
|
console.log('res', res)
|
||||||
that.PromotionCode = res;
|
that.PromotionCode = res;
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
that.PosterCanvas(this.base64List[0], that.PromotionCode, that.userInfo
|
that.PosterCanvas(this.base64List[0], that.PromotionCode, that.userInfo
|
||||||
|
|
After Width: | Height: | Size: 272 KiB |
After Width: | Height: | Size: 3.0 KiB |
After Width: | Height: | Size: 4.2 KiB |
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 5.0 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 4.9 KiB |
After Width: | Height: | Size: 4.9 KiB |
After Width: | Height: | Size: 5.2 KiB |
After Width: | Height: | Size: 5.5 KiB |
|
@ -3,6 +3,7 @@ export default {
|
||||||
isLogin: state => !!state.app.token,
|
isLogin: state => !!state.app.token,
|
||||||
backgroundColor: state => state.app.backgroundColor,
|
backgroundColor: state => state.app.backgroundColor,
|
||||||
userInfo: state => state.app.userInfo || {},
|
userInfo: state => state.app.userInfo || {},
|
||||||
|
tenantInfo: state => state.app.tenantInfo || {},
|
||||||
uid: state => state.app.uid,
|
uid: state => state.app.uid,
|
||||||
tenantId: state => state.app.tenantId,
|
tenantId: state => state.app.tenantId,
|
||||||
openId: state => state.app.openId,
|
openId: state => state.app.openId,
|
||||||
|
|
|
@ -11,7 +11,8 @@ import {
|
||||||
} from '../../config/cache';
|
} from '../../config/cache';
|
||||||
import Cache from '../../utils/cache';
|
import Cache from '../../utils/cache';
|
||||||
import {
|
import {
|
||||||
USER_INFO
|
USER_INFO,
|
||||||
|
TENANT_INFO
|
||||||
} from '../../config/cache';
|
} from '../../config/cache';
|
||||||
|
|
||||||
const state = {
|
const state = {
|
||||||
|
@ -19,6 +20,7 @@ const state = {
|
||||||
refreshToken: Cache.get(REFRESH_TOKEN) || '',
|
refreshToken: Cache.get(REFRESH_TOKEN) || '',
|
||||||
backgroundColor: "#fff",
|
backgroundColor: "#fff",
|
||||||
userInfo: Cache.get(USER_INFO)?JSON.parse(Cache.get(USER_INFO)):null,
|
userInfo: Cache.get(USER_INFO)?JSON.parse(Cache.get(USER_INFO)):null,
|
||||||
|
tenantInfo: Cache.get(TENANT_INFO)?JSON.parse(Cache.get(TENANT_INFO)):null,
|
||||||
uid: Cache.get(UID) || null,
|
uid: Cache.get(UID) || null,
|
||||||
tenantId: Cache.get(TENANT_ID) || '',
|
tenantId: Cache.get(TENANT_ID) || '',
|
||||||
spreadId: '',
|
spreadId: '',
|
||||||
|
@ -36,6 +38,10 @@ const mutations = {
|
||||||
Cache.set(LOGIN_STATUS, opt.token);
|
Cache.set(LOGIN_STATUS, opt.token);
|
||||||
Cache.set(REFRESH_TOKEN, opt.refreshToken);
|
Cache.set(REFRESH_TOKEN, opt.refreshToken);
|
||||||
},
|
},
|
||||||
|
SET_TENANT_INFO(state,val){
|
||||||
|
state.tenantInfo = val
|
||||||
|
Cache.set(TENANT_INFO, val);
|
||||||
|
},
|
||||||
SETUID(state,val){
|
SETUID(state,val){
|
||||||
state.uid = val;
|
state.uid = val;
|
||||||
Cache.set(UID, val);
|
Cache.set(UID, val);
|
||||||
|
|