Commit 4ea34b31 authored by beisir's avatar beisir

Merge branch 'feat/group-buy' of git.quantgroup.cn:ui/group-buy-ui into feat/group-buy

parents 7129e4ba 4a2571cb
...@@ -53,12 +53,14 @@ export default { ...@@ -53,12 +53,14 @@ export default {
} }
} }
}, },
$route() { $route(v) {
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.gdShare.shareCloseChange(); //切换页面隐藏分享弹窗 this.$refs.gdShare.shareCloseChange(); //切换页面隐藏分享弹窗
document document.querySelectorAll('.cr-overlay').forEach(e => {
.querySelectorAll('.cr-overlay') !e.parentNode.className.includes('share') &&
.forEach(e => !e.parentNode.className.includes('share') && e.parentNode.removeChild(e)); !v.name == 'payWaiting' &&
e.parentNode.removeChild(e);
});
store.dispatch('change_show_mini_app_guide', { store.dispatch('change_show_mini_app_guide', {
bool: !isApp && !isWxMp && !isWechat ? true : false, bool: !isApp && !isWxMp && !isWechat ? true : false,
pointer: this pointer: this
......
...@@ -84,7 +84,10 @@ export default { ...@@ -84,7 +84,10 @@ export default {
const getCouponList = function(params) { const getCouponList = function(params) {
return request.get(`${talosHost}/api/kdsp/appconfig/pay-succ-page/guide-stream`, { params }); return request.get(`${talosHost}/api/kdsp/appconfig/pay-succ-page/guide-stream`, { params });
}; };
// 获取用户手机号
const getPhoneNumber = function() {
return request.get(`${talosHost}/api/kdsp/user/phone`);
};
export { export {
pay, pay,
prepay, prepay,
...@@ -98,5 +101,6 @@ export { ...@@ -98,5 +101,6 @@ export {
kaGetNextUrl, kaGetNextUrl,
getCouponList, getCouponList,
queryPayStatus, queryPayStatus,
reissueContract reissueContract,
getPhoneNumber
}; };
...@@ -67,12 +67,14 @@ export default { ...@@ -67,12 +67,14 @@ export default {
} }
this.$store.dispatch('change_loading', true); this.$store.dispatch('change_loading', true);
this.type = type; this.type = type;
// 如果shareInfo为data数据则直接创建海报
if (typeof shareInfo === 'object') { if (typeof shareInfo === 'object') {
this.sharePicData = shareInfo; this.sharePicData = shareInfo;
this.handleShareInfo(shareInfo); this.handleShareInfo(shareInfo);
return; return;
} }
// 如果shareInfo为data数据则直接创建海报
this.getGroupShareInfo(shareInfo); this.getGroupShareInfo(shareInfo);
}); });
}, },
......
...@@ -11,13 +11,7 @@ ...@@ -11,13 +11,7 @@
style="width: 94px;height: 94px;margin: 0 21px;" style="width: 94px;height: 94px;margin: 0 21px;"
:class="{ leader: index == 0, normal: index != 0 }" :class="{ leader: index == 0, normal: index != 0 }"
> >
<img <img class="avator" style="width: 94px; height: 94px;" :src="item" alt="" />
class="avator"
style="width: 94px;
height: 94px;"
:src="item"
alt=""
/>
<template v-if="index == 0"> <template v-if="index == 0">
<div <div
class="leaderName" class="leaderName"
...@@ -92,11 +86,7 @@ ...@@ -92,11 +86,7 @@
</div> </div>
</div> </div>
</div> </div>
<div <div class="skuImg" style="width: 984px;height: 984px;">
class="skuImg"
style="width: 984px;
height: 984px;"
>
<!-- 商品图 --> <!-- 商品图 -->
<img :src="sharePicData.skuImg" alt="" /> <img :src="sharePicData.skuImg" alt="" />
<div class="skuInfo" style="height: 134px;"> <div class="skuInfo" style="height: 134px;">
...@@ -154,6 +144,7 @@ export default { ...@@ -154,6 +144,7 @@ export default {
}; };
}, },
methods: { methods: {
// 参团人数小于7时,头像全部显示;大于时展示6个头像...
handleAvator(sharePicData) { handleAvator(sharePicData) {
const openGroupCnt = sharePicData.openGroupCnt || 7; const openGroupCnt = sharePicData.openGroupCnt || 7;
let peoplePhotoList = sharePicData.peoplePhotoList || []; let peoplePhotoList = sharePicData.peoplePhotoList || [];
...@@ -176,29 +167,33 @@ export default { ...@@ -176,29 +167,33 @@ export default {
} }
return n; return n;
}, },
async createAndUploadPic(sharePicData) { async prepare(rawData) {
this.$store.dispatch('change_loading_pic', true); this.sharePicData = rawData;
this.sharePicData = sharePicData;
const endTimeYMD = sharePicData.endTime ? sharePicData.endTime.split(' ')[0] : ''; this.handleAvator(rawData);
const endTimeHMS = sharePicData.endTime ? sharePicData.endTime.split(' ')[1] : '';
if (endTimeYMD) {
this.endTime = `${new Date(endTimeYMD).getMonth() + 1}${new Date(
endTimeYMD
).getDate()}${endTimeHMS}`;
}
this.handleAvator(sharePicData);
const _this = this;
const [qrcodeUrl] = await groupBuyApi.getQrcodeUrl(sharePicData);
this.qrcodeUrl = qrcodeUrl;
const [res] = await qiNiuApi.getQiniuToken();
const token = res.token;
let skuName = '';
// 将每个字符套入行内标签,用于解决canvas fillText的不换行问题 // 将每个字符套入行内标签,用于解决canvas fillText的不换行问题
const originSkuName = sharePicData.skuName || ''; let skuName = '';
const originSkuName = rawData.skuName || '';
for (let i = 0; i < originSkuName.length; i++) { for (let i = 0; i < originSkuName.length; i++) {
skuName += `<span>${originSkuName[i]}</span>`; skuName += `<span>${originSkuName[i]}</span>`;
} }
this.skuName = skuName; this.skuName = skuName;
const [endTimeYMD, endTimeHMS = ''] = (rawData.endTime && rawData.endTime.split(' ')) || [];
if (endTimeYMD) {
const day = new Date(endTimeYMD);
this.endTime = `${day.getMonth() + 1}${day.getDate()}${endTimeHMS}`;
}
const [qrcodeUrl] = await groupBuyApi.getQrcodeUrl(rawData);
this.qrcodeUrl = qrcodeUrl;
},
async createAndUploadPic(sharePicData) {
this.$store.dispatch('change_loading_pic', true);
await this.prepare(sharePicData);
this.$nextTick(() => { this.$nextTick(() => {
html2canvas(this.$refs.sharePic, { html2canvas(this.$refs.sharePic, {
width: 1080, width: 1080,
...@@ -206,30 +201,36 @@ export default { ...@@ -206,30 +201,36 @@ export default {
useCORS: true, useCORS: true,
scale: 1, scale: 1,
allowTaint: false allowTaint: false
}).then(function(canvas) { }).then(canvas => {
canvas.name = `${_this.randomString}`.jpeg; canvas.name = `${this.randomString()}.jpeg`;
canvas.toBlob( canvas.toBlob(blob => this.uploadPic(blob), 'image/jpeg', 0.85);
blob => {
const observable = upload(blob, null, token);
const observer = {
error(err) {
console.log(err);
_this.$store.dispatch('change_loading_pic', false);
},
complete({ hash }) {
const fileLink = config.qiniuHost + hash;
console.log('pic create success', fileLink);
_this.$emit('outputPicUrl', fileLink);
_this.$store.dispatch('change_loading_pic', false);
}
};
observable.subscribe(observer);
},
'image/jpeg',
0.85
);
}); });
}); });
},
// 上传海报到七牛,成功后触发outputPicUr事件,参数是七牛文件地址
async uploadPic(blob) {
console.log('海报生成成功');
const [res] = await qiNiuApi.getQiniuToken();
const token = (res && res.token) || '';
if (!token) {
this.uploadErrorHandler(new Error('七牛token无效'));
return;
}
upload(blob, null, token).subscribe({
complete: this.uploadSuccess,
error: this.uploadError
});
},
uploadSuccess({ hash }) {
const fileLink = config.qiniuHost + hash;
console.log('海报上传成功', fileLink);
this.$store.dispatch('change_loading_pic', false);
this.$emit('outputPicUrl', fileLink);
},
uploadError(err) {
console.error('海报上传失败', err);
this.$store.dispatch('change_loading_pic', false);
} }
} }
}; };
......
...@@ -40,14 +40,13 @@ const http = new HttpRequest( ...@@ -40,14 +40,13 @@ const http = new HttpRequest(
} }
let error = new Error(msg); let error = new Error(msg);
error.response = data; error.response = data;
if ( if (
error?.response?.businessCode === '6049' || error?.response?.businessCode === '6049' ||
error?.response?.businessCode === '401' || error?.response?.businessCode === '401' ||
error?.response?.businessCode === '0401' error?.response?.businessCode === '0401'
) { ) {
localStorage.removeItem('vccToken'); localStorage.remove('vccToken');
sessionStorage.removeItem('vccToken'); sessionStorage.remove('vccToken');
if (isApp) { if (isApp) {
const nativeBridge = new Bridge(); const nativeBridge = new Bridge();
window.xyqbNativeEvent = function(res) { window.xyqbNativeEvent = function(res) {
......
...@@ -13,9 +13,11 @@ export default { ...@@ -13,9 +13,11 @@ export default {
init: router => { init: router => {
router.beforeEach((to, from, next) => { router.beforeEach((to, from, next) => {
Cookies.set('h', 0); Cookies.set('h', 0);
if (!to.query.vccToken) { const query = JSON.parse(JSON.stringify(to.query));
if (Object.keys(query).indexOf('vccToken') == -1) {
to.query.vccToken = sessionStorage.get('vccToken') || ''; to.query.vccToken = sessionStorage.get('vccToken') || '';
} }
// console.log(to.query, 1);
// 所有自定义路由字段在此处理 // 所有自定义路由字段在此处理
const { meta } = to; const { meta } = to;
isWechat && localStorage.set('vccChannel', '159913'); isWechat && localStorage.set('vccChannel', '159913');
......
...@@ -369,14 +369,7 @@ export function setAppTitleColor(bgcolor = '#fff') { ...@@ -369,14 +369,7 @@ export function setAppTitleColor(bgcolor = '#fff') {
export function paramsParentheses(pointer) { export function paramsParentheses(pointer) {
let params = pointer.$route.query; let params = pointer.$route.query;
const path = pointer.$route.path; const path = pointer.$route.path;
params.vccToken && delete params.vccToken; Object.keys(params).indexOf('vccToken') > -1 && delete params.vccToken;
const paramsString = qs.stringify(params); const paramsString = qs.stringify(params);
// for (let key in params) {
// let option = `${key}=${params[key]}`;
// tempString += `$${option}`;
// }
// if (tempString.length) {
// tempString = `${config.localHost}${path}!` + tempString.slice(1);
// }
return `${config.localHost}${path}?` + paramsString; return `${config.localHost}${path}?` + paramsString;
} }
...@@ -107,6 +107,12 @@ const mutations = { ...@@ -107,6 +107,12 @@ const mutations = {
confirmButtonText: '打开微信小程序', confirmButtonText: '打开微信小程序',
onConfirm: () => { onConfirm: () => {
// todo 跳转到小程序 // todo 跳转到小程序
// console.log(JSON.stringify(pointer.$route.query), 2);
// console.log(
// `url=${encodeURIComponent(
// JSON.stringify(paramsParentheses(pointer) + '&vccToken={token}')
// )}`
// );
let getScheme = async function() { let getScheme = async function() {
const [res] = await groupBuy.getScheme({ const [res] = await groupBuy.getScheme({
miniUrl: 'pages/groupbuy/webview', miniUrl: 'pages/groupbuy/webview',
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
<p class="sms-icon"><cr-icon type="cross" color="#999999" @click="closeModal" /></p> <p class="sms-icon"><cr-icon type="cross" color="#999999" @click="closeModal" /></p>
<p class="sms-title">请输入短信验证码</p> <p class="sms-title">请输入短信验证码</p>
<p class="sms-des">为保证您账户安全,此笔交易需要短信验证</p> <p class="sms-des">为保证您账户安全,此笔交易需要短信验证</p>
<p class="phone">已发送至 {{ getPhone() }}</p> <p class="phone">已发送至 {{ phoneNumber }}</p>
<cr-authcode-field <cr-authcode-field
span-size="24px" span-size="24px"
type="number" type="number"
...@@ -29,8 +29,7 @@ ...@@ -29,8 +29,7 @@
</template> </template>
<script> <script>
import localStorage from '@/service/localStorage.service'; import { sendSms as sendSmsApi, getPhoneNumber } from '@/api/pay.api';
import { sendSms as sendSmsApi } from '@/api/pay.api';
export default { export default {
props: { props: {
value: { value: {
...@@ -45,7 +44,8 @@ export default { ...@@ -45,7 +44,8 @@ export default {
return { return {
send: false, send: false,
time: 60, time: 60,
timer: null timer: null,
phoneNumber: ''
}; };
}, },
computed: {}, computed: {},
...@@ -57,9 +57,9 @@ export default { ...@@ -57,9 +57,9 @@ export default {
}, },
errorInfo: function() {} errorInfo: function() {}
}, },
onShow() {}, created() {
onLoad() {}, this.getPhone();
onReady() {}, },
methods: { methods: {
closeModal() { closeModal() {
this.clearTimer(); this.clearTimer();
...@@ -82,10 +82,9 @@ export default { ...@@ -82,10 +82,9 @@ export default {
}, 1000); }, 1000);
} }
}, },
getPhone() { async getPhone() {
const phone = localStorage.get('phoneNo'); const [phoneNumber] = await getPhoneNumber();
const phoneS = `${phone}`.replace(/(\d{3})\d*(\d{4})/, '+86 $1 **** $2'); this.phoneNumber = phoneNumber;
return phoneS;
}, },
clearTimer() { clearTimer() {
clearInterval(this.timer); clearInterval(this.timer);
......
...@@ -28,7 +28,6 @@ import { queryPayStatus } from '@/api/pay.api'; ...@@ -28,7 +28,6 @@ import { queryPayStatus } from '@/api/pay.api';
import cookies from '@/service/cookieStorage.service'; import cookies from '@/service/cookieStorage.service';
import { goUrlExtends } from './extends'; import { goUrlExtends } from './extends';
import { isApp } from '@/service/validation.service'; import { isApp } from '@/service/validation.service';
import localStorage from '@/service/localStorage.service';
export default { export default {
components: {}, components: {},
extends: goUrlExtends, extends: goUrlExtends,
...@@ -52,7 +51,6 @@ export default { ...@@ -52,7 +51,6 @@ export default {
} }
}, },
mounted() { mounted() {
this.getQuery();
this.$dialog({ this.$dialog({
message: '请确认订单已完成支付', message: '请确认订单已完成支付',
confirmButtonText: '已完成支付', confirmButtonText: '已完成支付',
...@@ -74,12 +72,6 @@ export default { ...@@ -74,12 +72,6 @@ export default {
navigateBack() { navigateBack() {
this.$router.replace({ name: 'orderList', params: { status: 0 } }); this.$router.replace({ name: 'orderList', params: { status: 0 } });
}, },
getQuery() {
this.returnUrl = cookies.get('returnUrl') || '';
if (localStorage.get('hideOrder')) {
this.isOrder = false;
}
},
loop() { loop() {
this.query(); this.query();
this.timer = setInterval(() => { this.timer = setInterval(() => {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment