Compare commits

...

16 Commits

Author SHA1 Message Date
woody ae84f20dda Merge branch 'dev' of 47.94.45.65:angelo/web-zk-h5 into test 2025-10-13 12:22:11 +08:00
woody a28ae29846 feat(hiList): 专区默认商城 2025-10-13 12:21:58 +08:00
woody de910f7e2f Merge branch 'dev' of 47.94.45.65:angelo/web-zk-h5 into test 2025-10-13 11:53:55 +08:00
woody e17e733c23 feat(share): 更换分享图 2025-10-13 11:53:44 +08:00
woody 7d74af82e9 Merge branch 'dev' of 47.94.45.65:angelo/web-zk-h5 into test 2025-10-13 11:39:44 +08:00
woody d20c3e1f98 feat(hiList): tab栏样式调整 2025-10-13 11:39:18 +08:00
woody efb7d5b7cd Merge branch 'dev' of 47.94.45.65:angelo/web-zk-h5 into test 2025-10-11 17:51:54 +08:00
woody 6776f3a777 feat(withdrawal): 提现需绑定银行卡 2025-10-11 17:51:42 +08:00
woody b7dc97ae38 Merge branch 'dev' of 47.94.45.65:angelo/web-zk-h5 into test 2025-10-11 16:08:00 +08:00
woody a01ad5deb3 feat(withdraw): 提现明细改回灵活用工 2025-10-11 16:07:46 +08:00
woody aef797ebf9 Merge branch 'dev' of 47.94.45.65:angelo/web-zk-h5 into test 2025-10-11 11:46:26 +08:00
woody 216fc2c2c0 feat(share-bg): 分享页面更换背景图 2025-10-11 11:46:12 +08:00
woody 60028a397a Merge branch 'dev' of 47.94.45.65:angelo/web-zk-h5 into test 2025-10-10 16:38:47 +08:00
woody e5c556b414 feat(mine): 分享图样式调整 2025-10-10 16:38:35 +08:00
woody 2dd517193d Merge branch 'dev' of 47.94.45.65:angelo/web-zk-h5 into test 2025-10-10 16:29:42 +08:00
woody 7f27468221 feat(share): 分享图更换 2025-10-10 16:29:28 +08:00
7 changed files with 156 additions and 206 deletions

View File

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

View File

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

View File

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

View File

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

View File

@ -89,16 +89,16 @@ export default {
pkParent: '',
goodList: [],
placeParent: '',
activeTab: 41, //
activeTab: 43, //
tabs: [
{
label: '精品专区',
value: 41,
},
{
label: '商城专区',
value: 43,
},
{
label: '精品专区',
value: 41,
},
],
}
},
@ -176,54 +176,81 @@ export default {
flex-direction: column;
}
// Tab
// Tab -
.tab-container {
background: #ffffff;
padding: 20rpx 24rpx 0;
// background: #ffffff;
padding: 0;
position: relative;
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 {
display: flex;
justify-content: center;
position: relative;
// background: #ffffff;
// padding: 32rpx 24rpx 24rpx;
.tab-item {
flex: none;
flex: 1;
position: relative;
cursor: pointer;
margin: 0 32rpx;
padding: 16rpx 0;
padding: 24rpx 32rpx;
text-align: center;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
.tab-text {
font-size: 30rpx;
font-size: 32rpx;
font-weight: 500;
color: #9ca3af;
color: #64748b;
transition: all 0.3s ease;
position: relative;
z-index: 2;
}
.tab-line {
position: absolute;
bottom: 0;
left: 0;
right: 0;
height: 3rpx;
background: linear-gradient(90deg, #667eea 0%, #764ba2 100%);
border-radius: 2rpx;
animation: slideIn 0.3s ease;
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: #1f2937;
color: #667eea;
font-weight: 600;
}
// - 线
&::after {
content: '';
position: absolute;
bottom: 0;
left: 0;
right: 0;
height: 3rpx;
background: linear-gradient(90deg, #667eea 0%, #764ba2 100%);
}
}
&:active {
.tab-text {
transform: scale(0.95);
}
transform: scale(0.98);
}
}
}
@ -607,84 +634,4 @@ export default {
.goodList_i:nth-child(n + 6) {
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>

BIN
static/images/qr-code.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 985 KiB

After

Width:  |  Height:  |  Size: 270 KiB