Commit 0d780955 by yuzhenWang

Merge branch 'feature-20250731wyz-修改bug' into 'uat'

我的团队和提现记录发布生产合并代码

See merge request !69
parents f2e3b509 7522ff80
import request from "../util/request";
import {baseURL,apiURL,cffpURL,sfpUrl} from "../environments/environment";
import {baseURL,apiURL,cffpURL,sfpUrl,imgUrl} from "../environments/environment";
export default {
//查看token是否已经失效
......@@ -416,4 +416,12 @@ export default {
pocessTracking(params) {
return request(`${sfpUrl}/sfp/sfpMain/pocessTracking`, 'POST', params)
},
//修改备注
editRemarkName(params) {
return request(`${cffpURL}/orgInfo/editRemarkName`, 'POST', params)
},
//提现记录
withdrawalList(params) {
return request(`${imgUrl}/scrm-api/agCffpUserFortune/withdrawal/list`, 'POST', params)
},
}
<template>
<view class="multi-select-dropdown">
<!-- 触发按钮 -->
<view class="dropdown-trigger" @click.stop="toggleDropdown">
<slot name="trigger" :selectedItems="selectedItems">
<text class="trigger-text">{{ displayText }}</text>
<text class="iconfont icon-arrow-down" :class="{ 'rotate': isOpen }"></text>
</slot>
</view>
<!-- 遮罩层 -->
<view class="dropdown-mask" v-show="isOpen" @click.stop="closeDropdown"></view>
<!-- 下拉内容 - 修改为底部弹出 -->
<view class="dropdown-content bottom-popup" v-show="isOpen">
<!-- 搜索框(可选) -->
<view class="search-box" v-if="searchable">
<input
class="search-input"
placeholder="搜索"
v-model="searchText"
@input="handleSearch"
/>
</view>
<!-- 选项列表 -->
<scroll-view scroll-y class="options-list">
<view
class="option-item"
v-for="item in filteredOptions"
:key="item[valueKey]"
@click.stop="toggleOption(item)"
>
<view class="checkbox" :class="{ 'checked': isSelected(item) }"></view>
<text class="option-label">{{ item[labelKey] }}</text>
</view>
</scroll-view>
<!-- 操作按钮 -->
<view class="action-buttons">
<view class="button reset" @click.stop="closeDropdown">取消</view>
<view class="button confirm" @click.stop="confirmSelection">确定</view>
</view>
</view>
</view>
</template>
<script>
export default {
name: 'MultiSelectDropdown',
props: {
// 选项列表
options: {
type: Array,
default: () => []
},
// 已选中的值
value: {
type: Array,
default: () => []
},
// 选项文本的key
labelKey: {
type: String,
default: 'label'
},
// 选项值的key
valueKey: {
type: String,
default: 'value'
},
// 占位文本
placeholder: {
type: String,
default: '请选择'
},
// 是否可搜索
searchable: {
type: Boolean,
default: false
},
// 最大选择数量
maxSelect: {
type: Number,
default: null
}
},
data() {
return {
isOpen: false,
selectedItems: [...this.value],
searchText: '',
filteredOptions: []
}
},
computed: {
displayText() {
if (this.selectedItems.length === 0) {
return this.placeholder
}
if (this.selectedItems.length === this.options.length) {
return '已选择全部'
}
// 显示选中的前2项,超过则显示数量
const selectedLabels = this.options
.filter(option => this.selectedItems.includes(option[this.valueKey]))
.map(option => option[this.labelKey])
if (selectedLabels.length <= 2) {
return selectedLabels.join('、')
} else {
return `已选择${selectedLabels.length}项`
}
}
},
watch: {
options: {
immediate: true,
handler(newVal) {
this.filteredOptions = [...newVal]
}
},
value(newVal) {
this.selectedItems = [...newVal]
console.log('this.selectedItems',this.selectedItems);
}
},
methods: {
toggleDropdown() {
if (this.isOpen) {
this.closeDropdown()
} else {
this.openDropdown()
}
},
openDropdown() {
this.isOpen = true
this.selectedItems = [...this.value]
// 禁止页面滚动
document.body.style.overflow = 'hidden'
},
closeDropdown() {
console.log('this.selectedItems',this.selectedItems);
this.isOpen = false
this.searchText = ''
this.filteredOptions = [...this.options]
// if(this.selectedItems.includes('-1')){
// this.selectedItems = []
// console.log(' this.selectedItems', this.selectedItems);
// }
// 恢复页面滚动
document.body.style.overflow = ''
},
toggleOption(item) {
const value = item[this.valueKey]
const index = this.selectedItems.indexOf(value)
if (value === '-1') { // 处理"全部"选项
if (index === -1) {
// 选中全部
this.selectedItems = this.options.map(option => option[this.valueKey])
} else {
// 取消选中全部
this.selectedItems = []
}
return
}
if (index === -1) {
// 检查是否超过最大选择数量
if (this.maxSelect && this.selectedItems.length >= this.maxSelect) {
uni.showToast({
title: `最多选择${this.maxSelect}项`,
icon: 'none'
})
return
}
this.selectedItems.push(value)
// 如果选中了所有非"全部"选项,自动选中"全部"
const allNonAllOptions = this.options
.filter(option => option[this.valueKey] !== '-1')
.map(option => option[this.valueKey])
const allSelected = allNonAllOptions.every(val => this.selectedItems.includes(val))
if (allSelected && this.options.some(opt => opt[this.valueKey] === '-1')) {
this.selectedItems.push('-1')
}
} else {
this.selectedItems.splice(index, 1)
// 如果取消选中了任意选项,确保取消选中"全部"
const allIndex = this.selectedItems.indexOf('-1')
if (allIndex !== -1) {
this.selectedItems.splice(allIndex, 1)
}
}
},
isSelected(item) {
if (item[this.valueKey] === '-1') {
// 对于"全部"选项,检查是否所有非"全部"选项都被选中
const allNonAllOptions = this.options
.filter(option => option[this.valueKey] !== '-1')
.map(option => option[this.valueKey])
return allNonAllOptions.length > 0 &&
allNonAllOptions.every(val => this.selectedItems.includes(val))
}
return this.selectedItems.includes(item[this.valueKey])
},
handleSearch() {
if (!this.searchText) {
this.filteredOptions = [...this.options]
return
}
this.filteredOptions = this.options.filter(option =>
option[this.labelKey].toLowerCase().includes(this.searchText.toLowerCase())
)
},
resetSelection() {
this.selectedItems = []
// this.closeDropdown()
},
confirmSelection() {
this.$emit('input', [...this.selectedItems])
this.$emit('change', [...this.selectedItems])
this.closeDropdown()
}
}
}
</script>
<style lang="scss" scoped>
.multi-select-dropdown {
position: relative;
display: inline-block;
.dropdown-trigger {
display: flex;
align-items: center;
padding: 0 20rpx;
height: 60rpx;
border-radius: 8rpx;
box-sizing: border-box;
.trigger-text {
font-size: 28rpx;
color: #333;
margin-right: 10rpx;
max-width: 200rpx;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.icon-arrow-down {
font-size: 24rpx;
color: #666;
transition: transform 0.3s;
&.rotate {
transform: rotate(180deg);
}
}
}
.dropdown-content {
position: fixed;
left: 0;
right: 0;
bottom: 0;
background-color: #fff;
border-radius: 16rpx 16rpx 0 0;
box-shadow: 0 -4rpx 20rpx rgba(0, 0, 0, 0.1);
z-index: 110;
transform: translateY(100%);
transition: transform 0.3s ease;
&.bottom-popup {
transform: translateY(0);
}
.search-box {
padding: 20rpx;
border-bottom: 1rpx solid #eee;
.search-input {
width: 100%;
height: 60rpx;
padding: 0 20rpx;
background-color: #f5f5f5;
border-radius: 8rpx;
font-size: 26rpx;
}
}
.options-list {
max-height: 60vh;
padding: 10rpx 0;
.option-item {
display: flex;
align-items: center;
padding: 20rpx;
&:active {
background-color: #f5f5f5;
}
.checkbox {
width: 30rpx;
height: 30rpx;
border: 2rpx solid #ccc;
border-radius: 4rpx;
margin-right: 15rpx;
position: relative;
&.checked {
background-color: #2A36AD;
border-color: #2A36AD;
&::after {
content: '';
position: absolute;
left: 8rpx;
top: 3rpx;
width: 12rpx;
height: 18rpx;
border: solid white;
border-width: 0 2rpx 2rpx 0;
transform: rotate(45deg);
}
}
}
.option-label {
font-size: 28rpx;
color: #333;
}
}
}
.action-buttons {
display: flex;
justify-content: space-between;
padding: 20rpx;
border-top: 1rpx solid #eee;
.button {
width: 30%;
height: 60rpx;
line-height: 60rpx;
text-align: center;
border-radius: 60rpx;
font-size: 28rpx;
padding: 20rpx ;
&.reset {
// margin-right: 20rpx;
color: #666;
border: 1rpx solid #666;
}
&.confirm {
background-color: #2A36AD;
color: #fff;
}
}
}
}
.dropdown-mask {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(0, 0, 0, 0.5);
z-index: 100;
}
}
</style>
\ No newline at end of file
......@@ -62,11 +62,8 @@
}
});
} else if (item.isJump) {
console.log('333333',item)
this.$refs.restrictedOrCanelTip.open()
// uni.navigateTo({
// url: item.link
// });
return
}else if (item.link != null) {
uni.navigateTo({
......
......@@ -57,13 +57,13 @@
<view
:class="{'grey':disabledSendBtn}"
@click="sendMessage()"
v-if="loginType=== 'visitor'"
v-if="showVerificationCode"
>
{{sendCodeHtml}}
</view>
</view>
</view>
<view class="inputBox" v-if="loginType=== 'visitor'">
<view class="inputBox" v-if="showVerificationCode">
<view class="txt">
<text class="require">*</text>验证码
</view>
......@@ -148,7 +148,7 @@
timer:null,
remainTimes:60,
loginType:uni.getStorageSync('loginType'),
userInfo:{},
userInfo:'',
userId: uni.getStorageSync('cffp_userId'),//本人id,
InviteeUserId:'',//被邀请人id
inviteUserId:'',//邀请人id,
......@@ -159,9 +159,13 @@
showCode:false ,//弹窗是否展示客服二维码
restrictedOrCanelContent:'', //禁用/注销展示文本
sharePosterObj:{invitationCode:'',inviteUserId:''},//通过分享海报进来
showVerificationCode:false,//验证码是否展示
}
},
onLoad(options){
if(uni.getStorageSync('loginType')){
this.loginType = uni.getStorageSync('loginType')
}
this.inviteUserId = ''
if(options.inviteUserId){
this.inviteUserId = options.inviteUserId
......@@ -174,7 +178,7 @@
this.shareId = options.shareId
this.getqueryById(options.shareId)
// uni.clearStorageSync()
uni.setStorageSync('loginType', 'visitor')
// uni.setStorageSync('loginType', 'visitor')
}
},
......@@ -186,7 +190,6 @@
if(uni.getStorageSync('cffp_userInfo')){
this.userInfo = JSON.parse(uni.getStorageSync('cffp_userInfo'))
}
console.log('show',this.userInfo)
if(uni.getStorageSync('cffp_userId')){
this.userId = uni.getStorageSync('cffp_userId')
}
......@@ -198,18 +201,21 @@
if(!this.shareId&&this.loginType == 'codelogin'&&this.userInfo.mobile){
this.form.mobile = this.userInfo.mobile
this.editMobile = true
this.showVerificationCode = false
}
// 非邀请状态
if(!this.shareId&&this.loginType == 'codelogin'&&!this.form.nickName){
this.queryInfo()
}
// 登录状态
if(this.loginType == 'codelogin'){
// 登录状态 非邀请
if(this.loginType == 'codelogin' && !this.shareId){
// #ifdef H5
initJssdkShare(() => {
setWechatShare();
}, window.location.href);
// #endif
}else {
this.showVerificationCode = true
}
},
......@@ -238,11 +244,25 @@
})
},
getqueryById(shareId){
api.queryById({id:shareId}).then(res =>{
console.log('res.data.data',res.data.data);
this.form.nickName = res.data.data.name
this.form.mobile = res.data.data.mobileNumber
this.editNickName = this.editMobile = true
if(res.data.data.isPartner){
// 手机号一致的没做判断,以后可能要做判断
// if(this.userInfo&&(this.userInfo.mobile !==this.form.mobile )){
// this.showVerificationCode = true
// uni.setStorageSync('loginType', 'visitor')
// return
// }
// 之前登录过,但和申请加盟的账号不一致
if(this.userInfo&&(this.userInfo.mobile !==this.form.mobile )){
this.showVerificationCode = true
uni.setStorageSync('loginType', 'visitor')
return
}
if(res.data.data.isPartner&& this.loginType == 'codelogin'){
this.$refs.successJoinPopup.open()
}
})
......@@ -427,6 +447,7 @@
...res.data
}
uni.setStorageSync('cffp_userInfo', JSON.stringify(cffp_userInfo))
uni.setStorageSync('user_mobile', cffp_userInfo.mobile)
}else {
uni.setStorageSync('loginType', 'visitor')
......@@ -478,11 +499,7 @@
this.showCode = false
this.restrictedOrCanelContent = res['message']
this.$refs.restrictedOrCanelTip.open()
// uni.showToast({
// title: res['message'],
// duration: 2000,
// icon: 'none'
// })
}
})
},
......
......@@ -6,18 +6,212 @@
<text style="font-size: 30rpx;">提现记录</text>
</view>
<!-- #endif -->
<view class="backArrow">
<text class="iconfont icon-youjiantou zuojiantou" style="left: 5rpx;" @click="goBack()"></text>
<text style="font-size: 30rpx;">提现记录</text>
<view class="content">
<view style="flex: 1;">
<view class="totalBox" :style="{justifyContent:showTotal?'space-between':'flex-end'}">
<view class="left" v-if="showTotal">
<text class="totalTxt">总金额:</text>
<text class="totalNum">{{dataObj.totalAmount}}</text>
<view class="des">
(不包含已拒绝记录)
</view>
</view>
<view class="right" >
<multi-select-dropdown
:options="statusOptions"
:value="selectedStatus"
labelKey="label"
valueKey="value"
placeholder="提现状态"
@change="handleStatusChange"
>
<template #trigger="{ selectedItems }">
<text class="filterTxt">{{selectedTxt}}</text>
<text class="iconfont icon-shaixuan"></text>
</template>
</multi-select-dropdown>
</view>
</view>
<view class="recordBox" v-if="dataObj.withdrawalVOList.length>0">
<view class="itemBox" v-for="item in dataObj.withdrawalVOList" :key="item.id">
<view class="left">
<text v-if="item.paidMethod == 2" class="iconfont icon-zhifubao2"></text>
<text v-if="item.paidMethod == 1" class="iconfont icon-weixin"></text>
</view>
<view class="right">
<view class="top">
<text class="tixian">提现时间:<text>{{item.exchangeDate}}</text> </text>
<text class="money">¥{{item.exchangeAmount}}</text>
</view>
<view class="bottom" :style="{justifyContent:item.status=='0'?'flex-end':'space-between'}">
<text v-show="item.status=='1'" class="daozhang">到账时间:<text>{{item.paidDate}}</text> </text>
<view v-show="item.status=='3'" class="daozhang ">拒绝理由:<text class="refuse-reason">{{item.reviewMessage}}</text> </view>
<text class="pay" >
{{
item.status=='0'?'审核中'
:item.status=='1'?'已到账'
:item.status=='3'?'已拒绝':'--'
}}
</text>
</view>
</view>
</view>
</view>
<view class="empty" v-else>
暂无数据
</view>
</view>
<view class="btnBottom" @click="gotoKefu">
<view class="myBtn">
咨询客服
</view>
</view>
</view>
</view>
</template>
<script>
import dataHandling from "@/util/dataHandling";
import api from "@/api/api";
import { initJssdkShare, setWechatShare } from '@/util/fiveshare';
import {companyInfo} from "@/environments/environment";
import MultiSelectDropdown from '@/components/commonPopup/MultiSelectDropdown.vue'
export default {
components: {
MultiSelectDropdown
},
data() {
return {
dataObj:{withdrawalVOList:[],totalAmount:'0.00'},
statusOptions: [
{ label: '全部', value: '-1' },
{ label: '审核中', value: '0' },
{ label: '已到账', value: '1' },
{ label: '已拒绝', value: '3' }
],
selectedStatus: [],
selectedTxt:'提现状态',
showTotal:true
}
},
onLoad(options){
},
onShow() {
// #ifdef H5
initJssdkShare(() => {
setWechatShare();
}, window.location.href);
// #endif
this.selectedStatus = []
this.selectedTxt = '提现状态'
this.showTotal = true
this.getWithdrawalList()
},
methods: {
// 获取团队数据
getWithdrawalList() {
const status = this.selectedStatus.length === 0 || this.selectedStatus.includes('-1')
? []
: this.selectedStatus
api.withdrawalList({
userId: uni.getStorageSync('cffp_userId'),
status: status
}).then(res =>{
if(res['message']=='ok'){
this.dataObj = res.data
if(this.dataObj.withdrawalVOList){
this.dataObj.withdrawalVOList.forEach(item=>{
if(item.exchangeDate){
item.exchangeDate = dataHandling.dateFormat2(item.exchangeDate)
}
if(item.paidDate){
item.paidDate = dataHandling.dateFormat2(item.paidDate)
}
})
}
}else {
uni.showToast({
title: res['message'],
duration: 2000,
icon: 'none'
})
}
})
},
goBack(){
uni.navigateBack({
delta: 1
});
},
// 获取状态显示文本
getStatusText(selectedItems) {
if (selectedItems.length === 0 || selectedItems.includes('-1')) {
return '全部'
}
return this.statusOptions
.filter(item => selectedItems.includes(item.value))
.map(item => item.label)
.join('、')
},
// 状态变化处理 确定按钮
handleStatusChange(status) {
this.selectedTxt = this.getStatusText(status)
this.selectedStatus = status
if(status.length==1&&status.includes('3')){
this.showTotal = false
}else{
this.showTotal = true
}
this.getWithdrawalList()
},
gotoKefu(){
// #ifdef MP-WEIXIN
dataHandling.pocessTracking(
'咨询客服',
`用户咨询客服`,
'点击',
2,
'我的',
'pages/personalCenter/personalCenter'
)
uni.openCustomerServiceChat({
extInfo: {
url: 'https://work.weixin.qq.com/kfid/kfc08c55f4170e7fc9e'
},
corpId: 'ww43cac1cf9dd6a3d0', // 客服会话按钮打开后,在微信客服会话按钮处理的事件类型
showMessageCard: true,
sendMessageTitle: (uni.getStorageSync('hoservice_mobileNo')?(uni.getStorageSync('hoservice_mobileNo')+",") :"" ) + "进入个人中心-->咨询客服",
sendMessagePath: `/pages/index/mySelf.html`,
//sendMessageImg: cardItem.value['list'][0]['itemImg']
});
// #endif
// #ifndef MP-WEIXIN
dataHandling.pocessTracking(
'咨询客服',
`用户咨询客服`,
'点击',
2,
'我的',
'pages/personalCenter/personalCenter'
)
window.open('https://work.weixin.qq.com/kfid/kfc08c55f4170e7fc9e')
// #endif
}
},
}
</script>
<style lang="scss" scoped>
.container{
display: flex;
flex-direction: column;
.backArrow{
box-sizing: border-box;
display: flex;
......@@ -33,5 +227,159 @@
position: absolute;
}
}
.content{
flex: 1;
display: flex;
flex-direction: column;
background-color: #fff;
.totalBox{
background-color: #fff;
padding: 30rpx 20rpx;
display: flex;
justify-content: space-between;
.left{
.totalTxt{
font-size: 30rpx;
font-weight: 600;
color: #383838;
}
.totalNum{
font-size: 30rpx;
color: #FF705D;
}
.des{
color: rgba(187, 189, 193, 1);
font-size: 26rpx;
margin-top: 5rpx;
}
}
.right{
.filterTxt, .icon-shaixuan{
font-size: 28rpx;
color: #383838;
}
.filterTxt {
font-size: 28rpx;
color: #383838;
margin-right: 5rpx;
max-width: 300rpx;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
display: inline-block;
}
.icon-shaixuan{
margin-left: 5rpx;
font-size: 32rpx;
}
}
}
.recordBox{
padding: 10rpx;
box-sizing: border-box;
.itemBox{
box-sizing: border-box;
width: 100%;
padding: 20rpx;
background-color: #fff;
border-radius: 10rpx;
display: flex;
justify-content: flex-start;
margin-top: 20rpx;
box-shadow: 0rpx 12rpx 24rpx rgba(12, 57, 193, 0.05);
.left{
width: 50rpx;
margin-right: 10rpx;
background: #F7F8F9;
padding: 20rpx;
display: flex;
align-items: center;
justify-content: center;
border-radius: 10rpx;
.icon-zhifubao2{
color: #00A1E8;
font-size: 40rpx;
}
.icon-weixin{
color: #41C740;
font-size: 40rpx;
}
}
.right{
width: calc(100% - 50rpx);
.top,.bottom{
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
}
.top{
.tixian{
font-size: 28rpx;
color: #383838;
}
.money{
font-size: 30rpx;
color: #FF705D;
}
}
.bottom{
margin-top: 3rpx;
.daozhang{
color: rgba(187, 189, 193, 1);
font-size: 26rpx;
display: flex;
align-items: center;
.refuse-reason {
width: 350rpx; /* 根据需要调整 */
display: inline-block; /* 或者 block */
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap !important;
flex-shrink: 1; /* 允许缩小 */
}
}
.pay{
color: #2A36AD;
font-size: 28rpx;
flex-shrink: 0; /* 禁止缩小 */
}
}
}
}
// .itemBox:last-child{
// margin-top: 0rpx;
// }
}
.empty{
width: 100%;
display: flex;
align-items: center;
justify-content: center;
color:#666;
font-size: 28rpx;
margin-top: 50rpx;
}
.btnBottom{
width: 100%;
padding-bottom: 40rpx;
display: flex;
align-items: center;
justify-content: center;
.myBtn{
background: rgba(32, 38, 155, 1);
font-size: 30rpx;
color: #fff;
text-align: center;
padding: 20rpx 100rpx;
border-radius: 80rpx;
}
}
}
}
</style>
\ No newline at end of file
......@@ -45,7 +45,7 @@ export default {
codeUrl: '',
loginType: '',
userInfo: {},
qrcodeSize: 100, // 二维码大小(单位px)
qrcodeSize: 110, // 二维码大小(单位px)
generatedImage: '', // 生成的图片
isBgImageReady: false, // 背景图片是否准备就绪
retryCount: 0, // 重试次数
......@@ -303,46 +303,6 @@ export default {
</script>
<style lang="scss" scoped>
// .container {
// display: flex;
// flex-direction: column;
// height: 100vh;
// width: 100vw;
// .imgBox {
// position: relative;
// .imgContainer {
// position: relative;
// .qrcode-container {
// position: absolute;
// bottom: 10rpx;
// right: 10rpx;
// background: #fff;
// padding: 10rpx;
// border-radius: 10rpx;
// box-shadow: 0 0 10rpx rgba(0,0,0,0.1);
// .qrcode-canvas {
// display: block;
// }
// }
// }
// }
// .preview-container{
// box-sizing: border-box;
// flex: 1;
// padding: 30rpx;
// width: 100%;
// height: 100%;
// .preview-image {
// width: 100%;
// height: auto;
// max-height: 100%;
// object-fit: contain;
// }
// }
// }
.container {
display: flex;
flex-direction: column;
......@@ -397,4 +357,126 @@ export default {
}
}
}
.container {
display: flex;
flex-direction: column;
width: 100vw;
overflow: hidden;
/* 默认手机端样式 */
height: 100vh;
/* iPad竖屏 (768px-1024px) */
@media only screen and (min-width: 768px) and (max-width: 1024px) and (orientation: portrait) {
height: 100vh;
.imgBox {
height: 100vh;
overflow: hidden;
.imgContainer {
height: 100%;
image {
height: 100%;
width: auto;
max-width: 100%;
object-fit: contain;
}
}
}
}
/* iPad横屏 (1024px-1366px) */
@media only screen and (min-width: 1024px) and (max-width: 1366px) and (orientation: landscape) {
height: 100vh;
width: 35vw;
.imgBox {
height: 100vh;
overflow: hidden;
.imgContainer {
height: 100%;
image {
height: 100%;
width: auto;
max-width: 100%;
object-fit: contain;
}
}
}
}
/* PC端 (大于1366px) */
@media only screen and (min-width: 1366px) {
height: 100vh;
width: 35vw;
.imgBox {
height: 100vh;
overflow: hidden;
.imgContainer {
height: 100%;
display: flex;
justify-content: center;
align-items: center;
image {
height: auto;
max-height: 100%;
width: 500px;
max-width: 100%;
object-fit: contain;
}
}
}
}
.imgBox {
width: 100%;
height: auto;
.imgContainer {
width: 100%;
position: relative;
image {
width: 100%;
height: auto;
display: block;
}
.qrcode-container {
position: absolute;
bottom: 10rpx;
right: 10rpx;
background: #fff;
padding: 10rpx;
border-radius: 10rpx;
box-shadow: 0 0 10rpx rgba(0,0,0,0.1);
.qrcode-canvas {
display: block;
}
}
}
}
.preview-container {
flex: 1;
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
overflow: hidden;
.preview-image {
height: 100%;
width: auto;
object-fit: contain;
/* 大屏幕设备调整 */
@media only screen and (min-width: 768px) {
max-height: 100vh;
width: auto;
}
}
}
}
</style>
\ No newline at end of file
......@@ -522,12 +522,12 @@
},{
"path": "setting/logOff",
"style": {
"navigationBarTitleText": "注销账号"
"navigationBarTitleText": "合伙人解约"
}
},{
"path": "ruleAndContract/cancelProtocol",
"style": {
"navigationBarTitleText": "注销账号协议"
"navigationBarTitleText": "合伙人解约协议"
}
}, {
"path": "login/login",
......
......@@ -200,30 +200,7 @@
}
}
},
// currentFilterBtn: {
// deep: true,
// handler(newVal) {
// if(newVal == '3'&&this.currentBtn=='2') {
// this.tableHeaderList = [
// {title:'销售日期',id:'1'},
// {title:'单数',id:'2'},
// {title:'销售额',id:'3'},
// {title:'标准销售额',id:'4'},
// ]
// this.getqueryTeamAchievement()
// return
// }else {
// this.tableHeaderList = [
// {title:'成员',id:'1'},
// {title:'单数',id:'2'},
// {title:'销售额',id:'3'},
// {title:'标准销售额',id:'4'},
// ]
// this.getqueryTeamAchievement()
// return
// }
// }
// },
},
onLoad(){
......
......@@ -12,11 +12,18 @@
<view class="headerInfo">
<view class="headerTop">
<view class="" style="margin-right: 15rpx;">
<view class="myName" v-if="loginType == 'codelogin'">{{showMyName || '点击头像完善信息'}}</view>
<view class="myName" v-if="loginType == 'codelogin'">
{{showMyName || '点击头像完善信息'}}
<text v-if="customerBasicInfo.partnerType" class="typePartner">{{customerBasicInfo.partnerType}}</text>
</view>
<view class="myName" v-if="loginType == 'visitor'">游客</view>
</view>
<view class="desBox" v-if="loginType == 'codelogin'&&customerBasicInfo.partnerType">
{{customerBasicInfo.partnerType}}
<!-- &&customerBasicInfo.parentName 我的上级:{{customerBasicInfo.parentName}} -->
<view class="desBox" v-if="loginType == 'codelogin'">
<!-- 上级的显示 -->
<text class="desTxt" v-if="customerBasicInfo.parentRealName&&customerBasicInfo.parentNickName">我的上级:{{customerBasicInfo.parentRealName}}({{customerBasicInfo.parentNickName}})</text>
<text v-else-if="customerBasicInfo.parentRealName">我的上级:{{customerBasicInfo.parentRealName}} </text>
<text v-else-if="!customerBasicInfo.parentRealName&&customerBasicInfo.parentNickName">我的上级:{{customerBasicInfo.parentNickName}}</text>
</view>
</view>
</view>
......@@ -163,6 +170,7 @@
@continue="jumpPage('1')"
/>
<restrictedTip ref="restrictedTip"/>
</view>
</template>
......@@ -206,8 +214,8 @@
children:[
{title:'申请加盟',icon:'icon-hezuo',link:'/myPackageA/applyFranchise/applyFranchise?',isOpen:true,isShow:true,isApply:true},
{key:'06',title:'邀请加盟',icon:'icon-yaoqing',link:'/pages/inviteJoin/inviteJoin',isOpen:true,isShow:true,identity: true},
{title:'我的团队',icon:'icon-tuandui',link:'/pages/personalCenter/myTeam',isOpen:true,isShow:true,identity: true},
// {title:'我的团队',icon:'icon-tuandui',link:'/myPackageA/myTeam/myTeam',isOpen:true,isShow:true,identity: true},
// {title:'我的团队',icon:'icon-tuandui',link:'/pages/personalCenter/myTeam',isOpen:true,isShow:true,identity: true},
{title:'我的团队',icon:'icon-tuandui',link:'/myPackageA/myTeam/myTeam',isOpen:true,isShow:true,identity: true},
{title:'育成团队',icon:'icon-yuchengguanxi',link:'/pages/personalCenter/myTeamIncubate',isOpen:true,isShow:true,identity: true},
],
},
......@@ -265,8 +273,8 @@
uni.$on("handClick", res => {
this.customerBasicInfo = res.data
let name = this.customerBasicInfo.realName || this.customerBasicInfo.nickName
if(name && name.length>5){
this.showMyName =name.substring(0, 5) + '...'
if(name && name.length>4){
this.showMyName =name.substring(0, 4) + '...'
}else {
this.showMyName = name
}
......@@ -594,13 +602,19 @@
if(res['success']){
this.customerBasicInfo = res['data'];
let name = this.customerBasicInfo.realName || this.customerBasicInfo.nickName
console.log('name',name);
if(name && name.length>5){
this.showMyName = name.substring(0, 5) + '...'
if(name && name.length>4){
this.showMyName = name.substring(0, 4) + '...'
}else {
this.showMyName = name
}
// this.customerBasicInfo.parentNickName = '除非进行相对路径配置'
// this.customerBasicInfo.parentRealName = '除非进行相对路径配置'
if(this.customerBasicInfo.parentRealName&&this.customerBasicInfo.parentNickName && this.customerBasicInfo.parentNickName.length>3){
this.customerBasicInfo.parentNickName = this.customerBasicInfo.parentNickName.substring(0, 3) + '..'
}
if(this.customerBasicInfo.parentRealName&&this.customerBasicInfo.parentNickName&& this.customerBasicInfo.parentRealName.length>3){
this.customerBasicInfo.parentRealName = this.customerBasicInfo.parentRealName.substring(0, 3) + '..'
}
this.inviteEqrode = this.customerBasicInfo.invitationCode;
uni.setStorageSync('user_mobile', res.data.mobile)
......@@ -611,7 +625,6 @@
this.loginType = 'visitor'
}
console.log('this.showMyName',this.showMyName);
})
}
},
......@@ -675,6 +688,7 @@
}
.headerInfo{
box-sizing: border-box;
margin-left: 20rpx;
display: flex;
font-size: 36rpx;
......@@ -684,6 +698,20 @@
justify-content: flex-start;
.headerTop{
color:#fff;
.myName{
display: flex;
align-items: center;
.typePartner{
margin-left: 15rpx;
padding: 5rpx 10rpx;
background-color: #fff;
color: #FFBB00;
border-radius: 10rpx;
font-weight: normal;
font-size: 26rpx;
}
}
}
.desBox{
......@@ -691,6 +719,22 @@
padding: 0 2rpx;
font-size: 24rpx;
font-weight: normal;
max-width: 400rpx;
display: flex;
align-items: center;
margin-top: 10rpx;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap !important;
flex-shrink: 1;
.desTxt{
width: 350rpx; /* 根据需要调整 */
display: inline-block; /* 或者 block */
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap !important;
flex-shrink: 1;
}
}
.nickName{
font-size: 27rpx;
......@@ -918,6 +962,7 @@
}
}
}
/* 新增:iPad mini 和 iPad Air 竖屏的媒体查询 */
/* iPad mini 竖屏 */
......
......@@ -33,7 +33,7 @@
isShow: true,
isTips: false,
isType: 'text',
isJump: true
isJump: false
},
{
key:'2',
......
......@@ -56,9 +56,9 @@
},
onShow() {
// #ifdef H5
initJssdkShare(() => {
setWechatShare();
}, window.location.href);
initJssdkShare(() => {
setWechatShare();
}, window.location.href);
// #endif
// #ifdef APP
this.minorMenuLists.push({
......@@ -96,6 +96,9 @@
'pages/personalCenter/system/settings'
)
try {
if(uni.getStorageSync('savedShareImage')){
uni.removeStorageSync('savedShareImage')
}
uni.setStorageSync('loginType','visitor');
} catch (e) {
console.log(e)
......
......@@ -295,37 +295,37 @@
uni.showToast({title: '昵称为2~10个字符',duration: 2000,icon: 'none'});
return
}
const validateResult = this.validateForm();
if(!validateResult.isValid) {
let message = '请完善以下信息:\n';
validateResult.emptyFields.forEach((field, index) => {
message += `${index + 1}. ${field}\n`;
});
// const validateResult = this.validateForm();
// if(!validateResult.isValid) {
// let message = '请完善以下信息:\n';
// validateResult.emptyFields.forEach((field, index) => {
// message += `${index + 1}. ${field}\n`;
// });
uni.showModal({
title: '提示',
content: message,
showCancel: false,
confirmText: '我知道了'
});
return;
}
if (!common.nameValid(this.realInfo.shiming.realName)) {
uni.showToast({title: '请填写真实姓名',duration: 2000,icon: 'none'});
this.realInfo.shiming.realName = ''
return
}
if(this.realInfo.shiming.idType == 'IDENTITY_CARD'&&this.realInfo.shiming.idNumber.length<18 ){
uni.showToast({title: '请输入18位实名身份证号',duration: 2000,icon: 'none'});
return
}
if(this.realInfo.shiming.idType == 'IDENTITY_CARD' ){
let obj = common.IdCodeValid(this.realInfo.shiming.idNumber)
if(!obj.pass){
uni.showToast({title: '请输入有效的实名身份证号',duration: 2000,icon: 'none'});
return
}
}
// uni.showModal({
// title: '提示',
// content: message,
// showCancel: false,
// confirmText: '我知道了'
// });
// return;
// }
// if (!common.nameValid(this.realInfo.shiming.realName)) {
// uni.showToast({title: '请填写真实姓名',duration: 2000,icon: 'none'});
// this.realInfo.shiming.realName = ''
// return
// }
// if(this.realInfo.shiming.idType == 'IDENTITY_CARD'&&this.realInfo.shiming.idNumber.length<18 ){
// uni.showToast({title: '请输入18位实名身份证号',duration: 2000,icon: 'none'});
// return
// }
// if(this.realInfo.shiming.idType == 'IDENTITY_CARD' ){
// let obj = common.IdCodeValid(this.realInfo.shiming.idNumber)
// if(!obj.pass){
// uni.showToast({title: '请输入有效的实名身份证号',duration: 2000,icon: 'none'});
// return
// }
// }
this.saveUserInfo();
},
......
......@@ -26,7 +26,10 @@
<view class="bottomItem" v-for="score in scoreList " :key="score.id">
<!-- @click="gotoRecord(score.id)" -->
<view class="one" >
<view style="font-size:28rpx;color: rgba(199, 199, 199, 1);">
<view
@click="gotoRecord(score.id)"
style="font-size:28rpx;color: rgba(199, 199, 199, 1);"
>
{{score.name}}
</view>
<uni-tooltip class="item" :content="score.content" :placement="score.position">
......
......@@ -476,6 +476,9 @@
color: #fff;
border-radius: 40rpx;
background-color: #20269B;
display: flex;
align-items: center;
justify-content: center;
}
}
.orderNum{
......
......@@ -55,6 +55,12 @@
<ul class="icon_lists dib-box">
<li class="dib">
<span class="icon iconfont">&#xe338;</span>
<div class="name">对号</div>
<div class="code-name">&amp;#xe338;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe334;</span>
<div class="name">微信</div>
<div class="code-name">&amp;#xe334;</div>
......@@ -426,9 +432,9 @@
<pre><code class="language-css"
>@font-face {
font-family: 'iconfont';
src: url('iconfont.woff2?t=1754993772709') format('woff2'),
url('iconfont.woff?t=1754993772709') format('woff'),
url('iconfont.ttf?t=1754993772709') format('truetype');
src: url('iconfont.woff2?t=1755135137201') format('woff2'),
url('iconfont.woff?t=1755135137201') format('woff'),
url('iconfont.ttf?t=1755135137201') format('truetype');
}
</code></pre>
<h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
......@@ -455,6 +461,15 @@
<ul class="icon_lists dib-box">
<li class="dib">
<span class="icon iconfont icon-duihao"></span>
<div class="name">
对号
</div>
<div class="code-name">.icon-duihao
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-weixin1"></span>
<div class="name">
微信
......@@ -1014,6 +1029,14 @@
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-duihao"></use>
</svg>
<div class="name">对号</div>
<div class="code-name">#icon-duihao</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-weixin1"></use>
</svg>
<div class="name">微信</div>
......
@font-face {
font-family: "iconfont"; /* Project id 4933433 */
src: url('iconfont.woff2?t=1754993772709') format('woff2'),
url('iconfont.woff?t=1754993772709') format('woff'),
url('iconfont.ttf?t=1754993772709') format('truetype');
src: url('iconfont.woff2?t=1755135137201') format('woff2'),
url('iconfont.woff?t=1755135137201') format('woff'),
url('iconfont.ttf?t=1755135137201') format('truetype');
}
.iconfont {
......@@ -13,6 +13,10 @@
-moz-osx-font-smoothing: grayscale;
}
.icon-duihao:before {
content: "\e338";
}
.icon-weixin1:before {
content: "\e334";
}
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -6,6 +6,13 @@
"description": "",
"glyphs": [
{
"icon_id": "925451",
"name": "对号",
"font_class": "duihao",
"unicode": "e338",
"unicode_decimal": 58168
},
{
"icon_id": "859693",
"name": "微信",
"font_class": "weixin1",
......
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