Compare commits

..

No commits in common. "ae84f20dda2dc048579cd5d3dbd15d53e61b65b2" and "93d23d55248b14f37765bc3eade4fb535b436eb3" have entirely different histories.

7 changed files with 206 additions and 156 deletions

View File

@ -1,13 +1,18 @@
<template> <template>
<view class="default-share-page"> <view class="default-share-page">
<!-- 背景图片替代CSS background --> <!-- 背景图片替代CSS background -->
<img <image
class="share-bg-image" class="share-bg-image"
src="@/static/images/share-bg.jpg" src="/static/images/share-bg.jpg"
mode="scaleToFill"
crossorigin="anonymous" crossorigin="anonymous"
@load="onBackgroundImageLoad" @load="onBackgroundImageLoad"
@error="onBackgroundImageError" @error="onBackgroundImageError"
/> ></image>
<view class="share-wrapper">
<view class="portal-frame" :class="{ 'is-loaded': isLoaded }">
<!-- 二维码样式区域 - 用户自定义样式位置 -->
<view class="qr-code-outer"> <view class="qr-code-outer">
<image <image
class="qr-code" class="qr-code"
@ -19,24 +24,34 @@
<view class="loader"></view> <view class="loader"></view>
</view> </view>
</view> </view>
<view class="member-code-outer">
<!-- 会员编号样式区域 - 用户自定义样式位置 -->
<text <text
class="member-code-text" class="member-code-text"
style=" style="
font-size: 20rpx; font-size: 30rpx;
color: #fff; color: #fff;
font-weight: bold; font-weight: bold;
margin-top: 20rpx; margin-top: 20rpx;
" "
>{{ desensitization(userInfo.memberCode) }}</text >{{ desensitization(userInfo.memberCode) }}</text
> >
<!-- 下载按钮 - 仅在非微信环境显示 -->
<button
v-if="!isWechat && shareButtonShow"
class="share-button"
@click="sharePage"
>
保存图片并分享
</button>
</view>
</view> </view>
</view> </view>
</template> </template>
<script> <script>
import html2canvas from 'html2canvas' import html2canvas from 'html2canvas'
import { snapdom } from '@zumer/snapdom'
export default { export default {
name: 'DefaultSharePage', name: 'DefaultSharePage',
@ -93,7 +108,7 @@ export default {
return return
} }
uni.showLoading({ title: '加载中...' }) uni.showLoading({ title: '加载中...', mask: true })
try { try {
this.shareButtonShow = false this.shareButtonShow = false
@ -130,23 +145,30 @@ export default {
return return
} }
const scale = 3 console.log(
'开始html2canvas截取容器尺寸:',
element.offsetWidth,
'x',
element.offsetHeight
)
html2canvas(element, { html2canvas(element, {
useCORS: true, useCORS: true,
// allowTaint: true, allowTaint: true,
backgroundColor: null, backgroundColor: null,
scale, scale: 2,
// canvas, dpi: 400,
logging: true,
width: element.offsetWidth, width: element.offsetWidth,
height: element.offsetHeight, height: element.offsetHeight,
windowWidth: element.offsetWidth,
windowHeight: element.offsetHeight,
scrollX: 0,
scrollY: 0,
x: 0,
y: 0,
}) })
.then(canvas => { .then(canvas => {
const context = canvas.getContext('2d')
// context.scale(2, 2)
context.mozImageSmoothingEnabled = false
context.webkitImageSmoothingEnabled = false
context.msImageSmoothingEnabled = false
context.imageSmoothingEnabled = false
const dataUrl = canvas.toDataURL('image/jpeg', 1) const dataUrl = canvas.toDataURL('image/jpeg', 1)
this.$emit('share-generated', dataUrl) this.$emit('share-generated', dataUrl)
resolve() resolve()
@ -169,9 +191,8 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
.default-share-page { .default-share-page {
position: relative; position: relative;
width: 600rpx; width: 100%;
height: 1296rpx; height: 100%;
// height: 100%;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
@ -182,9 +203,8 @@ export default {
position: absolute; position: absolute;
top: 0; top: 0;
left: 0; left: 0;
width: 600rpx; width: 100%;
height: 1296rpx; height: 100%;
// height: 100%;
z-index: 1; z-index: 1;
} }
@ -218,8 +238,8 @@ export default {
/* 二维码样式区域 - 用户自定义样式位置 */ /* 二维码样式区域 - 用户自定义样式位置 */
.qr-code-outer { .qr-code-outer {
width: 140rpx; width: 400rpx;
height: 140rpx; height: 400rpx;
background: rgba(255, 255, 255, 0.98); background: rgba(255, 255, 255, 0.98);
border-radius: 20rpx; border-radius: 20rpx;
box-shadow: 0px 8rpx 20rpx rgba(50, 50, 90, 0.06); box-shadow: 0px 8rpx 20rpx rgba(50, 50, 90, 0.06);
@ -229,13 +249,6 @@ export default {
justify-content: center; justify-content: center;
padding: 12rpx; padding: 12rpx;
box-sizing: border-box; box-sizing: border-box;
position: absolute;
// bottom: 460rpx;
left: 374rpx;
top: 708rpx;
// right: 130rpx;
z-index: 10;
} }
.qr-code, .qr-code,
@ -273,16 +286,6 @@ export default {
.member-code-text { .member-code-text {
/* 用户可以在这里自定义会员编号的样式 */ /* 用户可以在这里自定义会员编号的样式 */
} }
.member-code-outer {
position: absolute;
top: 1086rpx;
left: 246rpx;
// width: 300rpx;
text-align: center;
// background: rgb(217, 24, 25);
border-radius: 20rpx;
z-index: 10;
}
/* 下载按钮样式 */ /* 下载按钮样式 */
.share-button { .share-button {

View File

@ -14,56 +14,48 @@
<view class="guide-text"> <view class="guide-text">
<text>尊敬的经销商伙伴们</text> <text>尊敬的经销商伙伴们</text>
<text <text
>保障大家能够顺利快捷地进行提现操作同时积极响应并符合十一后国家法律法规的最新要求现需各位经销商伙伴完成提现绑定操作以下是详细的操作步骤请大家按照顺序依次进行</text >了让大家顺利快捷地提现符合法律法规的要求现需完成提现绑定操作步骤如下按序操作即可</text
> >
</view> </view>
<view class="guide-steps"> <view class="guide-steps">
<view class="step-item"> <view class="step-item">
<text class="step-number">1.</text> <text class="step-number">1.</text>
<text class="step-text" <text class="step-text"
>扫码进入签约页面使用微信扫描指定二维码进入相关操作界面后点击去签约</text >微信扫码后用实际收款人本人手机号登录</text
> >
</view> </view>
<view class="step-item"> <view class="step-item">
<text class="step-number">2.</text> <text class="step-number">2.</text>
<text class="step-text" <text class="step-text"
>在线签约在跳转的页面中找到并点击在线签约选项同意隐私政策仔细阅读隐私政策申明确认无误后点击同意并继续</text >点击 "继续签约"上传本人身份证照片完成实名认证</text
> >
</view> </view>
<view class="step-item"> <view class="step-item">
<text class="step-number">3.</text> <text class="step-number">3.</text>
<text class="step-text" <text class="step-text"
>绑定手机号码输入绑卡人的手机号码获取验证码将收到的验证码准确输入后点击下一步</text >进入合同页面选择 "默认印章"输入收到的验证码完成签约</text
> >
</view> </view>
<view class="step-item"> <view class="step-item">
<text class="step-number">4.</text> <text class="step-number">4.</text>
<text class="step-text" <text class="step-text"
>上传身份证照片可选择现场拍摄身份证正反面照片或从手机相册中选取已保存的身份证正反面照片进行上传上传完成后点击下一步</text >返回首页点击 "提现"若显示 "开户"下拉刷新页面即可</text
> >
</view> </view>
<view class="step-item"> <view class="step-item">
<text class="step-number">5.</text> <text class="step-number">5.</text>
<text class="step-text" <text class="step-text"
>输入银行卡号准确输入银行卡号系统将提示签约成功随后自动跳转到协议页面</text >进入绑卡页面完成银行卡绑定后即可操作提现</text
>
</view>
<view class="step-item">
<text class="step-number">6.</text>
<text class="step-text"
>完成手写签名在协议页面的最下方进行手写签名操作签名完成后即完成整个签约流程</text
> >
</view> </view>
</view> </view>
<view class="guide-footer"> <view class="guide-footer">
<text <text>请大家尽快办理有疑问可随时联系我们感谢配合</text>
>请大家务必尽快办理提现绑定操作以免影响后续的提现业务若在操作过程中遇到任何疑问或困难可随时与我们联系我们将竭诚为大家提供帮助感谢大家的理解与配合</text
>
</view> </view>
<view class="qr-code-section"> <view class="qr-code-section">
<image <image
class="qr-code-image" class="qr-code-image"
src="@/static/images/qr-code.png" src="https://bd-qd.oss-cn-beijing.aliyuncs.com/online_tmp/appletCode.png"
mode="aspectFit" mode="aspectFit"
/> />
</view> </view>
@ -90,9 +82,8 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
.withdrawal-guide-content { .withdrawal-guide-content {
padding: 0rpx 20rpx 20rpx; padding: 0rpx 32rpx 32rpx;
height: 80vh;
overflow-y: auto;
.guide-title { .guide-title {
font-size: 32rpx; font-size: 32rpx;
font-weight: bold; font-weight: bold;

View File

@ -145,10 +145,10 @@
请先绑定默认银行卡 请先绑定默认银行卡
</u-modal> </u-modal>
<!-- 提现引导弹窗 --> <!-- 提现引导弹窗 -->
<WithdrawalGuide <!-- <WithdrawalGuide
:show="showWithdrawalGuide" :show="showWithdrawalGuide"
@confirm="onWithdrawalGuideConfirm" @confirm="onWithdrawalGuideConfirm"
/> /> -->
</view> </view>
</template> </template>
@ -261,23 +261,20 @@ export default {
this.$refs.uForm this.$refs.uForm
.validate() .validate()
.then(res => { .then(res => {
if (!this.dataForm.pkBank) {
return
}
bal.addWithdraw(this.dataForm).then(res => { bal.addWithdraw(this.dataForm).then(res => {
if (res.code == 200) { if (res.code == 200) {
this.$refs.uToast.show({ this.$refs.uToast.show({
message: res.msg || '提现成功', message: res.msg || '提现成功',
type: 'success', type: 'success',
}) })
// setTimeout(() => { setTimeout(() => {
// uni.navigateBack() uni.navigateBack()
// }, 500) }, 500)
// //
setTimeout(() => { // setTimeout(() => {
this.showWithdrawalGuide = true // this.showWithdrawalGuide = true
}, 300) // }, 300)
} }
}) })
}) })
@ -295,6 +292,9 @@ export default {
if (!this.dataForm.cashAmount) { if (!this.dataForm.cashAmount) {
uni.$u.toast('请先输入金额') uni.$u.toast('请先输入金额')
return return
} else if (!this.dataForm.pkAccount) {
uni.$u.toast('请先选择账户')
return
} }
bal bal
.getWidthdrawShow({ .getWidthdrawShow({

View File

@ -28,7 +28,10 @@
/> />
<!-- 微信环境全屏图片显示 --> <!-- 微信环境全屏图片显示 -->
<view class="wechat-fullscreen-overlay" v-show="generatedImageUrl"> <view
class="wechat-fullscreen-overlay"
v-show="(isWechat || userInfo.sharePosterImage) && generatedImageUrl"
>
<img <img
class="fullscreen-image" class="fullscreen-image"
:src="generatedImageUrl" :src="generatedImageUrl"
@ -38,7 +41,6 @@
/> />
</view> </view>
</view> </view>
<view v-show="!generatedImageUrl" class="mask-loading"></view>
<cl-tabbar class="tabbar" :current="2" /> <cl-tabbar class="tabbar" :current="2" />
</view> </view>
</template> </template>
@ -152,7 +154,16 @@ export default {
}) })
uni.hideLoading() uni.hideLoading()
if (this.isWechat) {
//
this.generatedImageUrl = dataUrl this.generatedImageUrl = dataUrl
} else {
//
if (this.isSpecialScene) {
//
this.generatedImageUrl = dataUrl
}
}
}, },
// //
@ -200,6 +211,7 @@ export default {
.fullscreen-image { .fullscreen-image {
width: 100vw; width: 100vw;
height: 100%; height: 100%;
object-fit: cover;
margin: 0; margin: 0;
padding: 0; padding: 0;
border: none; border: none;
@ -228,13 +240,4 @@ export default {
height: 80px !important; height: 80px !important;
} }
} }
.mask-loading {
position: absolute;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
z-index: 1000;
background-color: #fff;
}
</style> </style>

View File

@ -89,16 +89,16 @@ export default {
pkParent: '', pkParent: '',
goodList: [], goodList: [],
placeParent: '', placeParent: '',
activeTab: 43, // activeTab: 41, //
tabs: [ tabs: [
{
label: '商城专区',
value: 43,
},
{ {
label: '精品专区', label: '精品专区',
value: 41, value: 41,
}, },
{
label: '商城专区',
value: 43,
},
], ],
} }
}, },
@ -176,81 +176,54 @@ export default {
flex-direction: column; flex-direction: column;
} }
// Tab - // Tab
.tab-container { .tab-container {
// background: #ffffff; background: #ffffff;
padding: 0; padding: 20rpx 24rpx 0;
position: relative; position: relative;
z-index: 4; z-index: 4;
// 线
&::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 3rpx;
background: linear-gradient(90deg, #667eea 0%, #764ba2 100%);
}
.tab-wrapper { .tab-wrapper {
display: flex; display: flex;
justify-content: center;
position: relative; position: relative;
// background: #ffffff;
// padding: 32rpx 24rpx 24rpx;
.tab-item { .tab-item {
flex: 1; flex: none;
position: relative; position: relative;
cursor: pointer; cursor: pointer;
padding: 24rpx 32rpx; margin: 0 32rpx;
text-align: center; padding: 16rpx 0;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
.tab-text { .tab-text {
font-size: 32rpx; font-size: 30rpx;
font-weight: 500; font-weight: 500;
color: #64748b; color: #9ca3af;
transition: all 0.3s ease; transition: all 0.3s ease;
position: relative;
z-index: 2;
} }
.tab-line { .tab-line {
display: none;
}
//
&:hover:not(.tab-active) {
.tab-text {
color: #475569;
transform: translateY(-1rpx);
}
}
&.tab-active {
background: rgba(102, 126, 234, 0.08);
.tab-text {
color: #667eea;
font-weight: 600;
}
// - 线
&::after {
content: '';
position: absolute; position: absolute;
bottom: 0; bottom: 0;
left: 0; left: 0;
right: 0; right: 0;
height: 3rpx; height: 3rpx;
background: linear-gradient(90deg, #667eea 0%, #764ba2 100%); background: linear-gradient(90deg, #667eea 0%, #764ba2 100%);
border-radius: 2rpx;
animation: slideIn 0.3s ease;
}
&.tab-active {
.tab-text {
color: #1f2937;
font-weight: 600;
} }
} }
&:active { &:active {
transform: scale(0.98); .tab-text {
transform: scale(0.95);
}
} }
} }
} }
@ -634,4 +607,84 @@ export default {
.goodList_i:nth-child(n + 6) { .goodList_i:nth-child(n + 6) {
animation-delay: 0.6s; animation-delay: 0.6s;
} }
//
@media (max-width: 750rpx) {
.tab-container {
padding: 24rpx 16rpx 0;
.tab-wrapper {
.tab-item {
margin: 0 24rpx;
padding: 12rpx 0;
.tab-text {
font-size: 28rpx;
}
}
}
}
.goodList {
.goodList_i {
padding: 24rpx;
.cover {
width: 200rpx;
height: 200rpx;
}
.goodList_ir {
margin-left: 20rpx;
.tit1 {
font-size: 28rpx;
}
.goodList_ib {
.price-container {
.price {
font-size: 32rpx;
}
}
}
.quantity-section {
.quantity-control {
.quantity-btn {
width: 50rpx;
height: 50rpx;
.quantity-icon {
font-size: 28rpx;
}
}
.quantity-display {
min-width: 70rpx;
height: 50rpx;
.quantity-text {
font-size: 24rpx;
}
}
}
}
.toBuy {
padding: 14rpx 20rpx;
font-size: 22rpx;
min-width: 100rpx;
}
.sold-out-section {
.sold-out-btn {
padding: 14rpx 28rpx;
font-size: 22rpx;
}
}
}
}
}
}
</style> </style>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 270 KiB

After

Width:  |  Height:  |  Size: 985 KiB