修复分销回显问题,修复部分问题

This commit is contained in:
2026-02-02 09:16:13 +08:00
parent a95d7ebf01
commit 6e2161fc5e
7 changed files with 249 additions and 212 deletions

View File

@@ -1,6 +1,6 @@
// const debug = process.env.NODE_ENV == 'development' ? true : false; // const debug = process.env.NODE_ENV == 'development' ? true : false;
// const debug = false; // false线上 true本地 // const debug = false; // false线上 true本地
const debug = false; // false线上 true本地 const debug = true; // false线上 true本地
let baseUrl = '' let baseUrl = ''
let baseUrlwws = '' let baseUrlwws = ''

View File

@@ -2,7 +2,7 @@
<view> <view>
<up-navbar <up-navbar
bg-color="transparent" bg-color="transparent"
title="分销中心" title="全民股东"
@leftClick="back" @leftClick="back"
:fixed="true" :fixed="true"
></up-navbar> ></up-navbar>

View File

@@ -3,7 +3,8 @@
<view class="w-qrcode"> <view class="w-qrcode">
<w-qrcode :options="codeOptions" :opacity="0" ref="wQrcode" @generate="(e) => qrcodeResult(e)"></w-qrcode> <w-qrcode :options="codeOptions" :opacity="0" ref="wQrcode" @generate="(e) => qrcodeResult(e)"></w-qrcode>
</view> </view>
<up-popup :show="show" bgColor="transparent" :safeAreaInsetBottom="false" :closeOnClickOverlay="true" @close="close" mode="center"> <up-popup :duration="0" :show="show" bgColor="transparent" :safeAreaInsetBottom="false"
:closeOnClickOverlay="true" @close="close" mode="center">
<view class="box"> <view class="box">
<view class="info"> <view class="info">
<view class="u-flex justify-center"> <view class="u-flex justify-center">
@@ -25,12 +26,15 @@
ref="wQrcode" ref="wQrcode"
@generate="(e) => qrcodeResult(e)" @generate="(e) => qrcodeResult(e)"
></w-qrcode> --> ></w-qrcode> -->
<up-image width="322rpx" height="322rpx" :src="code"></up-image> <image :src="code" class="code"></image>
<!-- <up-image width="322rpx" mode="scaleToFill" height="322rpx" :src="code"></up-image> -->
</view> </view>
</view> </view>
<view class="footer-wrap"> <view class="footer-wrap">
<view class="confirm line" @click="save">保存图片</view> <view class="confirm line" @click="save">保存图片</view>
<ymf-share><view class="confirm">微信分享</view></ymf-share> <ymf-share>
<view class="confirm">微信分享</view>
</ymf-share>
</view> </view>
</view> </view>
</up-popup> </up-popup>
@@ -38,27 +42,38 @@
</template> </template>
<script setup> <script setup>
import { shareMixin, handleMixinOnLoad, returnQuery } from '@/utils/share.js'; import {
import ymfShare from '@/components/ymf-components/ymf-share.vue'; shareMixin,
import wQrcode from '@/uni_modules/wmf-code/components/w-qrcode/w-qrcode.vue'; handleMixinOnLoad,
import { desensitizePhone } from '@/utils/util.js'; returnQuery
import { ref, onMounted, nextTick } from 'vue'; } from '@/utils/share.js';
import ymfShare from '@/components/ymf-components/ymf-share.vue';
import wQrcode from '@/uni_modules/wmf-code/components/w-qrcode/w-qrcode.vue';
import {
desensitizePhone
} from '@/utils/util.js';
import {
ref,
onMounted,
nextTick
} from 'vue';
onMounted(async () => { onMounted(async () => {
setTimeout(async () => { setTimeout(async () => {
await nextTick(); await nextTick();
const query = await returnQuery(); const query = await returnQuery();
codeOptions.value.code = `https://cashier.sxczgkj.com/invite?${removeQAndAfter(query)}`; codeOptions.value.code =
`https://cashier.sxczgkj.com/invite?${removeQAndAfter(query)}`;
console.log('codeOptions.value', codeOptions.value); console.log('codeOptions.value', codeOptions.value);
}, 500); }, 500);
}); });
/** /**
* 截取字符串,移除 &q 及后面的所有内容 * 截取字符串,移除 &q 及后面的所有内容
* @param {string} str - 原始字符串 * @param {string} str - 原始字符串
* @returns {string} 处理后的字符串 * @returns {string} 处理后的字符串
*/ */
function removeQAndAfter(str) { function removeQAndAfter(str) {
// 检查是否为空字符串 // 检查是否为空字符串
if (!str || typeof str !== 'string') { if (!str || typeof str !== 'string') {
return str || ''; return str || '';
@@ -69,9 +84,9 @@ function removeQAndAfter(str) {
// 如果找到 &q截取前面的部分否则返回原字符串 // 如果找到 &q截取前面的部分否则返回原字符串
return qIndex !== -1 ? str.slice(0, qIndex) : str; return qIndex !== -1 ? str.slice(0, qIndex) : str;
} }
const props = defineProps({ const props = defineProps({
inviteCode: { inviteCode: {
type: String, type: String,
default: '' default: ''
@@ -80,52 +95,54 @@ const props = defineProps({
type: Object, type: Object,
default: () => {} default: () => {}
} }
}); });
const codeOptions = ref({ const codeOptions = ref({
padding: 10, padding: 10,
size: 200, size: 200,
code: '' code: ''
}); });
function copyCode() { function copyCode() {
uni.setClipboardData({ uni.setClipboardData({
data: props.inviteCode, data: props.inviteCode,
success: function () { success: function() {
console.log('success'); console.log('success');
} }
}); });
} }
const code = ref(''); const code = ref('');
function qrcodeResult(e) { function qrcodeResult(e) {
console.log('qrcodeResult', e); console.log('qrcodeResult', e);
code.value = e.img.tempFilePath; code.value = e.img.tempFilePath;
console.log('code', code.value); console.log('code', code.value);
} }
const show = defineModel({ const show = defineModel({
type: Boolean, type: Boolean,
default: false default: false
}); });
const emits = defineEmits(['cancel', 'confirm']); const emits = defineEmits(['cancel', 'confirm']);
function close() {
function close() {
show.value = false; show.value = false;
emits('cancel'); emits('cancel');
} }
function save() {
function save() {
show.value = false; show.value = false;
// 保存图片到相册 // 保存图片到相册
uni.saveImageToPhotosAlbum({ uni.saveImageToPhotosAlbum({
filePath: code.value, filePath: code.value,
success: function () { success: function() {
uni.showToast({ uni.showToast({
title: '保存成功', title: '保存成功',
icon: 'none' icon: 'none'
}); });
}, },
fail: function (err) { fail: function(err) {
console.log('保存失败原因:', err); console.log('保存失败原因:', err);
// 判断是否为授权拒绝(微信小程序授权拒绝的特征) // 判断是否为授权拒绝(微信小程序授权拒绝的特征)
if (err.errMsg.includes('auth deny') || err.errMsg.includes('authorize fail')) { if (err.errMsg.includes('auth deny') || err.errMsg.includes('authorize fail')) {
@@ -136,13 +153,14 @@ function save() {
showCancel: true, showCancel: true,
cancelText: '取消', cancelText: '取消',
confirmText: '去设置', confirmText: '去设置',
success: function (res) { success: function(res) {
if (res.confirm) { if (res.confirm) {
// 跳转到微信小程序的授权设置页 // 跳转到微信小程序的授权设置页
uni.openSetting({ uni.openSetting({
success: function (settingRes) { success: function(settingRes) {
// 检查用户是否开启了相册授权 // 检查用户是否开启了相册授权
if (settingRes.authSetting['scope.writePhotosAlbum']) { if (settingRes.authSetting[
'scope.writePhotosAlbum']) {
uni.showToast({ uni.showToast({
title: '授权成功,可重新保存', title: '授权成功,可重新保存',
icon: 'none' icon: 'none'
@@ -154,7 +172,7 @@ function save() {
}); });
} }
}, },
fail: function () { fail: function() {
uni.showToast({ uni.showToast({
title: '打开设置失败', title: '打开设置失败',
icon: 'none' icon: 'none'
@@ -175,40 +193,47 @@ function save() {
}); });
emits('confirm', code.value); emits('confirm', code.value);
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
:deep(.info .canvas) { :deep(.info .canvas) {
opacity: 1; opacity: 1;
} }
.border {
.border {
border: 2rpx solid #d9d9d9; border: 2rpx solid #d9d9d9;
padding: 18rpx; padding: 18rpx;
border-radius: 4rpx; border-radius: 4rpx;
} }
.box {
.box {
width: 638rpx; width: 638rpx;
background-color: #fff; background-color: #fff;
border-radius: 16rpx; border-radius: 16rpx;
// overflow: hidden; // overflow: hidden;
position: relative; position: relative;
.title { .title {
color: #000000; color: #000000;
font-size: 32rpx; font-size: 32rpx;
font-weight: 700; font-weight: 700;
} }
.top { .top {
border-bottom: 2rpx solid #ededed; border-bottom: 2rpx solid #ededed;
} }
.info { .info {
padding: 96rpx 40rpx 96rpx 40rpx; padding: 96rpx 40rpx 96rpx 40rpx;
font-size: 28rpx; font-size: 28rpx;
} }
.small-title { .small-title {
min-width: 84rpx; min-width: 84rpx;
text-align: right; text-align: right;
} }
.footer-wrap { .footer-wrap {
width: 100%; width: 100%;
position: absolute; position: absolute;
@@ -217,9 +242,9 @@ function save() {
display: flex; display: flex;
gap: 28upx; gap: 28upx;
} }
} }
.cancel { .cancel {
padding: 14rpx 76rpx; padding: 14rpx 76rpx;
border-radius: 36rpx; border-radius: 36rpx;
border: 2rpx solid #e8ad7b; border: 2rpx solid #e8ad7b;
@@ -228,8 +253,9 @@ function save() {
font-weight: 400; font-weight: 400;
white-space: nowrap; white-space: nowrap;
line-height: 48rpx; line-height: 48rpx;
} }
.confirm {
.confirm {
$color: #e8ad7b; $color: #e8ad7b;
flex: 1; flex: 1;
padding: 14rpx 76rpx; padding: 14rpx 76rpx;
@@ -243,18 +269,25 @@ function save() {
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
&.line { &.line {
background-color: #fff; background-color: #fff;
color: $color; color: $color;
} }
} }
.line-height-54 {
.line-height-54 {
line-height: 54rpx; line-height: 54rpx;
} }
.w-qrcode {
.w-qrcode {
position: fixed; position: fixed;
left: -9999px; left: -9999px;
top: -9999px; top: -9999px;
z-index: -1; z-index: -1;
} }
.code{
width: 322rpx;
height: 322rpx;
}
</style> </style>

View File

@@ -1,6 +1,6 @@
<template> <template>
<view class="min-h-100vh bg-gray"> <view class="min-h-100vh bg-gray">
<up-navbar bg-color="transparent" title="分销中心" @leftClick="back" :fixed="true"></up-navbar> <up-navbar bg-color="transparent" title="全民股东" @leftClick="back" :fixed="true"></up-navbar>
<view class="top"> <view class="top">
<image class="top_bg" src="/distribution/static/top_bg.png" :style="imageStyle"></image> <image class="top_bg" src="/distribution/static/top_bg.png" :style="imageStyle"></image>
<view class="box" :class="{ type1: isActivated }"> <view class="box" :class="{ type1: isActivated }">
@@ -10,10 +10,10 @@
<text class="u-m-l-14 font-14 color-333 font-700">{{ state.shopName }}</text> <text class="u-m-l-14 font-14 color-333 font-700">{{ state.shopName }}</text>
</view> </view>
<view> <view>
<template v-if="state.parentPhone"> <template v-if="state.parentPhone||state.parentName ">
<view class="font-12 color-666">上级{{ state.parentName }}{{ state.parentPhone }}</view> <view class="font-12 color-666">上级{{ state.parentName }}{{ state.parentPhone }}</view>
</template> </template>
<template v-if="!state.parentPhone"> <template v-else>
<view class="bind" @click="showBindShangji = true">绑定上级</view> <view class="bind" @click="showBindShangji = true">绑定上级</view>
</template> </template>
</view> </view>
@@ -499,7 +499,7 @@
totalPage: 0 totalPage: 0
}); });
async function getRecoders() { async function getRecoders() {
if (state.config) return; // if (state.config) return;
const ajaxQuery = { const ajaxQuery = {
...query, ...query,
shopId: options.shopId shopId: options.shopId
@@ -562,6 +562,9 @@
const showInviteCode = computed(() => { const showInviteCode = computed(() => {
if (config.upgradeType == 'invite') { if (config.upgradeType == 'invite') {
if(config.openType=='pay'&&!isActivated.value){
return false
}
return true; return true;
} }
if (config.openType == 'manual' && (!state.distributionUser || !state.distributionUser.level)) { if (config.openType == 'manual' && (!state.distributionUser || !state.distributionUser.level)) {
@@ -576,12 +579,13 @@
if (!state.distributionUser && config.openType == 'manual') { if (!state.distributionUser && config.openType == 'manual') {
return true; return true;
} }
return false; return false;
}); });
//是否已成为分销员 //是否已成为分销员
const isActivated = computed(() => { const isActivated = computed(() => {
return state.distributionUser && state.distributionUser.level; return (state.distributionUser && state.distributionUser.level)?true:false;
}); });
watch( watch(
() => activeTab.value, () => activeTab.value,

View File

@@ -258,7 +258,7 @@
"pages": [{ "pages": [{
"path": "index", "path": "index",
"style": { "style": {
"navigationBarTitleText": "分销中心", "navigationBarTitleText": "全民股东",
"navigationStyle": "custom" "navigationStyle": "custom"
} }
}, },
@@ -278,7 +278,7 @@
{ {
"path": "shop-detail/index", "path": "shop-detail/index",
"style": { "style": {
"navigationBarTitleText": "分销中心", "navigationBarTitleText": "全民股东",
"navigationStyle": "custom" "navigationStyle": "custom"
} }
}, },

View File

@@ -2504,7 +2504,7 @@
console.log('options.initMessage', options.initMessage) console.log('options.initMessage', options.initMessage)
const newTableCode = userStore.getQueryString(res.result, 'code'); const newTableCode = userStore.getQueryString(res.result, 'code');
console.log('newTableCode',newTableCode);
const shopInfoRes = await APIproductqueryShop({ const shopInfoRes = await APIproductqueryShop({
tableCode: newTableCode tableCode: newTableCode
}); });

View File

@@ -232,7 +232,7 @@ const myFunList = ref([
icon: 'https://czg-qr-order.oss-cn-beijing.aliyuncs.com/my/my_coupon.png' icon: 'https://czg-qr-order.oss-cn-beijing.aliyuncs.com/my/my_coupon.png'
}, },
{ {
name: '分销', name: '全民股东',
type: 'fenxiao', type: 'fenxiao',
icon: '/static/icon/fenxiao.svg' icon: '/static/icon/fenxiao.svg'
}, },