Commit 4f69162c by yuzhenWang

禁用注销发布生产

parent e8b051d0
<script>
import initApp from "@/util/router.js";
import {interceptor} from "@/util/interceptor";
import {baseURL,apiURL,cffpURL,companyInfo} from "@/environments/environment";
import api from './api/api';
import {hshare} from '@/util/fiveshare';
export default {
data() {
return {
invitationHandled: false ,// 在data中明确定义,
dataToken:''
dataToken:'',
}
},
onLaunch: function() {
console.log('App Launch');
if(!uni.getStorageSync('loginType')){
console.log('走进来了');
uni.clearStorageSync();
uni.setStorageSync('loginType','visitor');
}
// 处理外部链接参数
......@@ -81,15 +81,17 @@
onShow: function(options) {
console.log('App Show', options);
if(this.dataToken){
const params = {
loginType:'5',
authToken:this.dataToken
authToken:this.dataToken.replace(/\%/g, ' ')
// authToken:'zuihuibi eyJhbGciOiJIUzUxMiJ9.eyJVc2VySWQiOjEyODMsImNyZWF0ZWQiOjE3NTQ2NDk1MDA5NzIsImV4cCI6MTc1NzI0MTUwMH0.udjBlMY4FswgBU7zv9jD-zK8ANGR1KKXk_DiJEQkwhiC9DYwxAc7wAp6BWIKY_oiNr58QJqDtBAJ85bGOcCpeQ'
}
api.loginVerification(params).then((res)=>{
if(res['success']){
uni.setStorageSync('isLogin','1');
uni.setStorageSync('loginType','codelogin');
uni.setStorageSync('cffp_userId', this.userId);
uni.setStorageSync('cffp_userId', res.data.userId);
uni.setStorageSync('uni-token', res.data['token']);
this.checkUserStatus();
......@@ -101,6 +103,7 @@
})
}
})
return
}else {
// 每次进应用显示时检查用户状态
this.checkUserStatus();
......@@ -118,6 +121,7 @@
console.log('App Hide')
},
methods: {
// 检查用户状态的方法 防止多端操作导致此用户不存在
async checkUserStatus() {
// 只有已登录用户才需要检查
......@@ -171,7 +175,7 @@
},
// 清除登录状态
clearLoginState() {
uni.clearStorageSync();
// uni.clearStorageSync();
uni.setStorageSync('loginType', 'visitor');
this.checkToken()
// 可以在这里添加其他需要清除的状态
......@@ -261,9 +265,17 @@
// 使用uni.setStorageSync存储到本地
try {
// #ifdef H5
if(params.dataToken){
this.dataToken = params.dataToken
}
// #endif
// #ifdef MP-WEIXIN
if(params.dataToken){
this.dataToken = uni.getStorageSync('hoservice_token')
}
// #endif
if(params.addSystemType){
uni.setStorageSync('addSystemType', params.addSystemType);
}
......
......@@ -48,6 +48,10 @@
// 哪个地方中用到了这个登录
loginSource:{
type:String,
},
// 哪个页面中用到了这个登录
pageSource:{
type:String,
}
},
components:{
......@@ -149,7 +153,7 @@
this.loginTypeSync = "codelogin";
this.queryInfo()
uni.$emit('loginUpdate');
this.$emit('afterLogin')
}else{
uni.showToast({
title: res['message'],
......
......@@ -173,7 +173,7 @@
if(options.shareId){
this.shareId = options.shareId
this.getqueryById(options.shareId)
uni.clearStorageSync()
// uni.clearStorageSync()
uni.setStorageSync('loginType', 'visitor')
}
......
......@@ -168,8 +168,8 @@
continueText="暂不解绑"
btnType="horizontal"
:tipIcon="false"
@join="continueBind()"
@continue="$refs.unbindTipPopup.close()"
@join="$refs.unbindTipPopup.close()"
@continue="continueBind()"
/>
</view>
......@@ -226,6 +226,7 @@
},
methods:{
continueBind(){
console.log('解绑');
let params = {
userId:uni.getStorageSync('cffp_userId'),
oprType:this.paymentMethod
......@@ -593,7 +594,8 @@
color: black;
font-size: 26rpx;
text-align: right;
padding-right: 20rpx;
width: 60%;
}
.error-tip{
position: absolute;
......
<template>
<view class="container">
<view class="myHeader">
<!-- #ifdef APP -->
<view class="backArrow">
<text class="iconfont icon-youjiantou zuojiantou" style="left: 5rpx;" @click="goBack()"></text>
<text style="font-size: 30rpx;">我的团队</text>
</view>
<!-- #endif -->
<view class="timeBox" v-if="currentBtn == '2'" @click="showTime1 = true">
<CommonTimePicker
:timeData="startDate"
:visible="showTime1"
iconColor="#fff"
@confirmDate="changeStartTime"
@closeTime="showTime1=false"
/>
</view>
<view class="renshu" :style="{marginTop}">
<view class="top">
<view class="left">
<text v-if="currentBtn == '1'">团队有效人数</text>
<text v-if="currentBtn == '2'">团队标准销售额</text>
</view>
<view class="right" @click="changeCurrentBtn">
<text v-if="currentBtn == '1'">查看业绩</text>
<text v-if="currentBtn == '2'">查看团队</text>
</view>
</view>
<view class="bottom">
<text v-if="currentBtn == '1'">{{teamCount}}</text>
<text v-if="currentBtn == '2'">{{monthStandardSales}}</text>
</view>
</view>
<view class="moneyBox">
<view class="one">
<view v-if="currentBtn == '1'" class="">
{{monthStandardSales}}
</view>
<view v-if="currentBtn == '2'" class="">
{{totalCoursePrice}}
</view>
<view style="margin-top: 5rpx;">
<text v-if="currentBtn == '1'">本月团队标准销售额</text>
<text v-if="currentBtn == '2'">总销售额</text>
</view>
</view>
<view class="two">
<view class="">
{{totalOrder}}
</view>
<view style="margin-top: 5rpx;">
<text>团队出单数</text>
</view>
</view>
</view>
</view>
<view
v-if="currentBtn == '2'"
class="filterBox"
style="background: none;margin: 10rpx 0;">
<scroll-view class="scroll-view_H" scroll-x="true" scroll-left="120">
<view
class="scrollBtn"
v-for="item in btnList"
:key="item.id"
:class="{active:item.id == currentFilterBtn }"
@click="sortswitch(item)"
>
{{item.title}}
</view>
</scroll-view>
</view>
<view class="filterBox" :style="{marginTop:currentBtn=='1'?'20rpx':''}">
<scroll-view class="scroll-view_H" scroll-x="true" scroll-left="120">
<view
class="scroll-view-item_H"
v-for="item in tabList"
:key="item.id"
:class="{active:item.id == currentTab }"
@click="changeTab(item)"
>
{{item.title}}
</view>
</scroll-view>
</view>
<view class="tableBox">
<view class="table">
<view class="content-box">
<view class="content-box-title" v-for="(item,index) in tableHeaderList" :key="index">
<text class="title">{{item.title}}</text>
</view>
</view>
<view v-if="currentBtn == '1'&&myTeamList.length>0">
<view class="content-sam-box" v-for="(pointItem,index) in myTeamList" :key="index">
<span class="content-box-title cell">{{pointItem.parentName}}</span>
<span class="content-box-title cell">{{pointItem.name}}</span>
<span class="content-box-title cell">{{pointItem.levelName}}</span>
<span class="content-box-title cell">{{pointItem.referrer}}</span>
</view>
</view>
<view v-else-if="currentBtn == '2'&&currentFilterBtn!=='3'&& myTeamAchievementList.length>0">
<view class="content-sam-box" v-for="(pointItem,index) in myTeamAchievementList" :key="index">
<span class="content-box-title cell">{{pointItem.name}}</span>
<span class="content-box-title cell">{{pointItem.orderNum}}</span>
<span class="content-box-title cell">{{pointItem.coursePrice}}</span>
<span class="content-box-title cell" >{{pointItem.standardSales || '0.00'}}</span>
</view>
</view>
<view v-else-if="currentBtn == '2'&& currentFilterBtn=='3'&& myTeamAchievementList.length>0">
<view class="content-sam-box" v-for="(pointItem,index) in myTeamAchievementList" :key="index">
<span class="content-box-title cell">{{pointItem.saleDate}}</span>
<span class="content-box-title cell">{{pointItem.orderNum}}</span>
<span class="content-box-title cell">{{pointItem.coursePrice}}</span>
<span class="content-box-title cell" >{{pointItem.standardSales || '0.00'}}</span>
</view>
</view>
<view class="empty" v-else>
暂无数据
</view>
</view>
</view>
<boot-page
loginSource="我的团队"
v-if="sharelogin"
ref="sharelogin"
@close="sharelogin = false"
@afterLogin="afterLogin"
pageSource="myTeam"
></boot-page>
</view>
</template>
<script>
import CommonTimePicker from '@/components/commonTimePicker/commonTimePicker.vue';
import dataHandling from "@/util/dataHandling";
import api from "@/api/api";
import { initJssdkShare, setWechatShare } from '@/util/fiveshare';
import BootPage from "@/components/bootpage/bootpage.vue";
export default {
components: {
CommonTimePicker,
BootPage
},
data() {
return {
showTime1:false,
startDate:{year:dataHandling.getDateParts().year,month:dataHandling.getDateParts().month},
tabList:[
{title:'全部',id: '1',type:4},
{title:'直辖团队',id: '2',type:1},
{title:'所辖团队',id: '3',type:2},
],
btnList:[
{title:'按标准销售额',id: '1',sortType:5},
{title:'按销售额',id: '2',sortType:2},
{title:'按销售日期',id: '3',sortType:4},
],
tableHeaderList:[
{title:'上级',id:'1'},
{title:'成员',id:'2'},
{title:'职级',id:'3'},
{title:'关系',id:'4'},
],
currentTab:'1',
currentBtn:'1', // 1代表团队 2代表业绩
currentFilterBtn:'1',
teamCount:0,//团队总人数,育成团队人数不算
userId: uni.getStorageSync('cffp_userId'),
otherList: null, // 直辖团队
directList: null, //所辖团队数组
myTeamList:[],//我的团队表格数据,
myTeamData:{},//我的团队总数据,
CffpOrgInfoReqVO: {
startDate: `${new Date().getFullYear()}-${new Date().getMonth() + 1 > 9 ? new Date().getMonth() + 1 : '0'+ (new Date().getMonth() + 1)}`,
endDate: `${new Date().getFullYear()}-${new Date().getMonth() + 1 > 9 ? new Date().getMonth() + 1 : '0'+ (new Date().getMonth() + 1)}`,
courseOrPolicy: '1',
type: '2',
sortType:5
},
totalOrder: '0', //总单数
totalCoursePrice: '0.00', // 总销售额
monthStandardSales:'0.00',//本月团队标准销售额
myTeamAchievementList:[],//我的业绩数据列表,
marginTop:'30rpx',
sharelogin: false,
}
},
watch: {
currentBtn: {
deep: true,
handler(newVal) {
if(newVal == '1') {
this.tableHeaderList = [
{title:'上级',id:'1'},
{title:'成员',id:'2'},
{title:'职级',id:'3'},
{title:'关系',id:'4'},
]
// #ifdef H5
this.marginTop = '30rpx'
// #endif
this.getmyseatem()
return
}
if(newVal == '2') {
this.tableHeaderList = [
{title:'成员',id:'1'},
{title:'单数',id:'2'},
{title:'销售额',id:'3'},
{title:'标准销售额',id:'4'},
]
this.getqueryTeamAchievement()
// #ifdef H5
this.marginTop = '0rpx'
// #endif
return
}
}
},
currentTab: {
deep: true,
handler(newVal) {
this.myTeamList = []
if(newVal == '1') {
if(this.myTeamData.other && this.myTeamData.other.length != 0 && this.myTeamData.other != null){
this.myTeamList.push(...this.myTeamData['other'])
}
if(this.myTeamData.directList && this.myTeamData.directList.length != 0 && this.myTeamData.directList != null){
this.myTeamList.push( ...this.myTeamData['directList'])
}
return
}
if(newVal == '2') {
if(this.myTeamData.other && this.myTeamData.other.length != 0 && this.myTeamData.other != null){
this.myTeamList.push(...this.myTeamData['other'])
}
}
if(newVal == '3'){
if(this.myTeamData.directList && this.myTeamData.directList.length != 0 && this.myTeamData.directList != null){
this.myTeamList.push( ...this.myTeamData['directList'])
}
}
}
},
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(options){
// 未登录,弹出登录框
if(options.myTeam&&(!uni.getStorageSync('loginType')||uni.getStorageSync('loginType')=='visitor' )){
this.sharelogin = true
}else {
this.getmyseatem()
this.getqueryTeamAchievement()
}
},
onShow() {
// #ifdef H5
initJssdkShare(() => {
setWechatShare();
}, window.location.href);
// #endif
},
methods: {
sortswitch(obj) {
this.currentFilterBtn = obj.id
this.CffpOrgInfoReqVO.sortType = obj.sortType
this.getqueryTeamAchievement()
},
changeTab(item){
this.currentTab = item.id
if(this.currentBtn == '2'){
this.getqueryTeamAchievement()
}
},
getqueryTeamAchievement() {
this.CffpOrgInfoReqVO.userId=uni.getStorageSync('cffp_userId'),
this.CffpOrgInfoReqVO.queryType = this.tabList.filter(item=>item.id == this.currentTab)[0].type
this.CffpOrgInfoReqVO.sortType = this.btnList.filter(item=>item.id == this.currentFilterBtn)[0].sortType
api.queryTeamAchievement(this.CffpOrgInfoReqVO).then(res => {
if (res['success']) {
this.myTeamAchievementList = []
// this.listType = true
this.myTeamAchievementList = res.data.list || [];
if(this.myTeamAchievementList.length>0){
this.myTeamAchievementList.forEach(item=>{
item.saleDate = dataHandling.dateFormat2(item.saleDate,'yyyy-MM-dd')
item.coursePrice = Number(item.coursePrice).toFixed(2) || '0.00'
})
}
this.totalOrder = res.data.totalOrder ? res.data.totalOrder : '0';
this.totalCoursePrice = res.data.totalCoursePrice ? Number(res.data.totalCoursePrice).toFixed(2) : '0.00';
this.monthStandardSales = res.data.monthStandardSales ? Number(res.data.monthStandardSales).toFixed(2) : '0.00';
}else {
uni.showToast({
title: res['message'],
duration: 2000,
icon: 'none'
})
}
})
},
// 获取团队数据
getmyseatem() {
this.myTeamList = []
api.queryMyTeamInfo({
userId: this.userId,
type: '1'
}).then(res =>{
if(res['success']){
let data = res.data
this.myTeamData = res.data
if(data.orgInfo) {
this.teamCount = data.orgInfo.count
}
if(data.other && data.other.length != 0 && data.other != null){
this.myTeamList.push(...data['other'])
}
if(data.directList && data.directList.length != 0 && data.directList != null){
this.myTeamList.push( ...data['directList'])
}
}else {
uni.showToast({
title: res['message'],
duration: 2000,
icon: 'none'
})
}
})
},
changeStartTime(obj){
this.startDate = obj
this.CffpOrgInfoReqVO.startDate=`${obj.year}-${obj.month<10?`0${obj.month}`:obj.month}`
this.CffpOrgInfoReqVO.endDate=`${obj.year}-${obj.month<10?`0${obj.month}`:obj.month}`
this.getqueryTeamAchievement()
this.showTime1 = false
},
changeCurrentBtn(){
this.currentTab = '1'
this.currentFilterBtn = '1'
if(this.currentBtn == '1'){
this.currentBtn = '2'
return
}
if(this.currentBtn == '2'){
this.currentBtn = '1'
}
},
goBack(){
uni.navigateBack({
delta: 1
});
},
goteam(item) {
if(item.type===1){
uni.navigateTo({
url:`/pages/personalCenter/teamMembers/teamMembers`,
})
}else{
uni.navigateTo({
url:`/pages/personalCenter/teamPerformance/teamPerformance`,
})
}
},
afterLogin(){
this.userId = uni.getStorageSync('cffp_userId'),
this.getmyseatem()
this.getqueryTeamAchievement()
}
},
}
</script>
<style lang="scss" scoped>
.container{
background-color: rgba(235, 239, 247, 1);
display: flex;
flex-direction: column;
box-sizing: border-box;
.myHeader{
color: #fff;
box-sizing: border-box;
background: linear-gradient(225deg, rgba(65, 69, 188, 1) 0%, rgba(29, 30, 125, 1) 100%);
.backArrow{
box-sizing: border-box;
display: flex;
height: 60rpx;
justify-content: space-between;
align-items: center;
position: relative;
width: 100%;
margin-bottom: 10rpx;
color: #fff;
margin-top: 20rpx;
text:nth-child(2){
width: 100%;
text-align: center;
position: absolute;
}
}
.timeBox{
margin-top: 30rpx;
padding-left: 25rpx;
width: 50%;
}
.renshu{
padding: 10rpx 25rpx;
color: #fff;
.top{
display: flex;
align-items: center;
justify-content: space-between;
font-size: 26rpx;
.right{
padding: 10rpx 15rpx;
background-color: #fff;
border-radius: 30rpx;
color: rgba(32, 39, 155, 1);
font-size: 25rpx;
}
}
.bottom{
font-size: 34rpx;
font-weight: 500;
}
}
.moneyBox{
box-sizing: border-box;
width: 100%;
background-color: rgba(255,255,255,.15);
padding:15rpx 20rpx;
display: flex;
align-items: center;
justify-content: space-around;
.one{
font-size: 26rpx;
text-align: center;
width: 50%;
position: relative;
}
.one::after{
position: absolute;
top: 50%;
transform: translateY(-50%);
right: 0;
content: '';
height: 40rpx;
border: 1rpx dashed #fff;
}
.two{
font-size: 26rpx;
text-align: center;
width: 50%;
}
}
}
.filterBox{
box-sizing: border-box;
// margin: 20rpx 0;
width: 100%;
background-color: #fff;
padding: 20rpx 60rpx 0 60rpx;
display: flex;
align-items: center;
justify-content: space-between;
.scroll-view_H {
white-space: nowrap;
width: 100%;
box-sizing: border-box;
}
.scroll-view-item {
text-align: center;
font-size: 36rpx;
}
.scroll-view-item_H {
margin-bottom: 20rpx;
display: inline-block;
margin-right: 20rpx;
text-align: center;
font-size: 27rpx;
padding: 10rpx 20rpx;
color: rgba(46, 38, 29, 1);
&.active{
color: rgba(32, 39, 155, 1);
position: relative;
}
&.active::before{
display: block;
content: "";
position: absolute;
left: 50%;
transform: translate(-50%);
bottom: -3%;
width: 50%;
// height: 1rpx;
border: 1rpx solid rgba(32, 39, 155, 1);
border-radius: 5rpx;
}
}
.scroll-view-item_H:last-child{
margin-right: 0rpx;
}
.scrollBtn {
display: inline-block;
margin-right: 20rpx;
text-align: center;
font-size: 27rpx;
padding: 10rpx 20rpx;
color: rgba(46, 38, 29, 1);
&.active{
color: rgba(32, 39, 155, 1);
}
}
.scrollBtn:last-child{
margin-right: 0rpx;
}
.filterItem{
background: #f7f7f7;
font-size: 27rpx;
padding: 10rpx;
color: rgba(46, 38, 29, 1);
border-radius: 8rpx;
&.active{
background: rgba(32, 39, 155, 1);
color: #fff;
}
}
}
.tableBox{
// background-color: #fff;
padding: 20rpx;
width: 100%;
box-sizing: border-box;
border-radius: 20rpx;
.table{
background-color: #fff;
border-radius: 20rpx;
padding: 10rpx 0;
margin-bottom: 50rpx;
box-sizing: border-box;
.content-box {
display: flex;
font-weight: 600;
align-items: center;
justify-content: space-between;
border-bottom: 1px solid #F2F2F2;
padding: 20rpx 0;
}
.content-box-title {
flex: 1;
font-size: 28rpx;
text-align: center;
}
.content-sam-box{
background-color: #fff;
display: flex;
align-items: center;
font-size: 24rpx;
justify-content: space-between;
padding: 20rpx 0;
color: #333333;
border-bottom: 1px solid #F2F2F2;
.cell{
font-size: 24rpx;
}
}
.content-sam-box:last-child{
border: none;
}
.empty{
width: 100%;
display: flex;
align-items: center;
justify-content: center;
height: 200rpx;
font-size: 26rpx;
color: #333333;
}
}
}
}
</style>
\ No newline at end of file
<!-- <template>
<view class="account-cancel-protocol">
<view class="header">
<text class="title">账号注销协议</text>
</view>
<view class="content">
<view class="section">
<text class="text">
请您在注销银盾家族办公室分销系统(以下简称家办分销)账号前,充分阅读、理解并同意下列内容:(如您不同意下列任一内容,或无法准确理解任何条款的含义,请不要进行账号注销操作。您通过网络页面确认申请注销,视为您同意本协议项下所有权利义务。如您对本协议有任何疑问,可通过银盾家族办公室分销系统-我的-咨询客服,联系在线客服)
</text>
</view>
<view class="section">
<text class="section-title">1、注销须知</text>
<text class="text">
如果您申请注销家办分销账号,请在提交申请前确认以下信息,以保证您的账号和资产安全:
</text>
<view class="subsection">
<text class="subsection-text">1.1您申请注销的家办分销账号应当是您本人注册并使用的账号。该账号应处于正常状态,即非被盗、被封禁(禁言、停用)、其他账号异常情形等;</text>
</view>
<view class="subsection">
<text class="subsection-text">1.2 账号内资产已处理完毕。包括但不限于:您的家办分销账户佣金、红包、优惠券、权益、积分、兑换码等资产,可用款项已全部提现,或者通过兑换、消费等途径支用完毕。您的账户内没有未使用完毕的会员权益或您已购买但未使用完的其他权益类、资格类产品和订单。同时,您也有权选择放弃该账号内的资产。</text>
</view>
<view class="subsection">
<text class="subsection-text">1.3 账号已解除与第三方产品的绑定关系或授权登录关系。</text>
</view>
<view class="subsection">
<text class="subsection-text">1.4 账号未涉及任何争议纠纷。</text>
</view>
<view class="subsection">
<text class="subsection-text">1.5 实名账号已解除实名信息。</text>
</view>
<view class="subsection">
<text class="subsection-text">1.6 账号注销成功后,包括但不限于《家办分销用户协议》、《隐私政策》等项下所有权利义务终止。</text>
</view>
</view>
<view class="section">
<text class="section-title">2、特别提醒</text>
<view class="subsection">
<text class="subsection-text">2.1您的家办分销账号一旦被注销成功将不可恢复,您将无法再使用本账号或找回任何本账号内容或信息(即使您使用相同的手机号再次注册并使用家办分销系统),包括但不限于:</text>
<view class="sub-subsection">
<text class="sub-subsection-text">2.1.1您账号下的个人资料(头像、昵称、用户名、身份认证信息等)、与账号有关的信息和数据(团队、交易记录、积分记录、分享数据、浏览记录等),都将无法找回。请您务必在注销之前自行备份与账号相关的前述所有内容或信息。您理解并同意,家办分销也无法协助您恢复前述内容或信息,且针对该账号注销的申请一经提交,您不会以任何理由要求家办分销平台予以撤销。</text>
</view>
<view class="sub-subsection">
<text class="sub-subsection-text">2.1.2 您理解并同意,您在注销前确认放弃的家办分销账户佣金、红包、优惠券、权益、积分、兑换码、资产性权益、资格类产品等,在您注销账号后将无法继续使用,历史交易无法通过该账号进行退款或售后,即使您使用相同的手机号再次注册并使用家办分销的,家办分销也无法协助您重新恢复前述权益。</text>
</view>
</view>
<view class="subsection">
<text class="subsection-text">2.3 您申请注销的家办分销账号所对应的其他账号应当不存在任何由于该账号被注销而导致的未了结的合同关系与其他基于该账号的存在而产生或维持的权利义务,及本公司认为注销该账号会由此产生未了结的权利义务而产生纠纷的情况。</text>
</view>
<view class="subsection">
<text class="subsection-text">2.4 在您的账号注销期间,如您的家办分销账号被他人举报、被投诉、被国家机关调查或正处于诉讼、仲裁程序中,家办分销有权自行终止您的家办分销账号注销流程而无需另行获得您的同意。</text>
</view>
<view class="subsection">
<text class="subsection-text">2.5 注销家办分销账号并不代表账号注销前的行为和相关责任得到任何形式的豁免或减轻。</text>
</view>
</view>
<view class="section">
<text class="section-title">3、争议解决</text>
<view class="subsection">
<text class="subsection-text">3.1凡因本协议引起的或与本协议有关的任何争议,均应提交上海仲裁委员会按照该会仲裁规则进行仲裁。仲裁裁决是终局的,对双方当事人均有约束力。</text>
</view>
</view>
</view>
</view>
</template>
<script>
import { initJssdkShare, setWechatShare } from '@/util/fiveshare';
export default {
data() {
return {
}
},
onShow(){
// #ifdef H5
initJssdkShare(() => {
setWechatShare();
}, window.location.href);
// #endif
}
}
</script>
<style lang="scss">
.account-cancel-protocol {
padding: 20rpx 30rpx;
background-color: #fff;
.header {
margin-bottom: 30rpx;
text-align: center;
.title {
font-size: 36rpx;
font-weight: bold;
color: #333;
}
}
.content {
.section {
margin-bottom: 30rpx;
.section-title {
font-size: 32rpx;
font-weight: bold;
color: #333;
display: block;
margin-bottom: 15rpx;
}
.text {
font-size: 28rpx;
color: #333;
line-height: 1.6;
display: block;
margin-bottom: 20rpx;
}
.subsection {
margin-bottom: 15rpx;
.subsection-text {
font-size: 28rpx;
color: #333;
line-height: 1.6;
display: block;
}
}
.sub-subsection {
margin-left: 30rpx;
margin-top: 10rpx;
.sub-subsection-text {
font-size: 28rpx;
color: #333;
line-height: 1.6;
display: block;
}
}
}
}
}
</style> -->
<template>
<view class="container">
......@@ -180,13 +19,13 @@ export default {
<view class="subsection">
<text class="subsection-content">
1.1\n您申请解约的合伙人账号应当是您本人注册并使用的账号。该账号应处于正常状态,即非被盗、被封禁(禁言、停用)或其他账号异常情形。
1.1 您申请解约的合伙人账号应当是您本人注册并使用的账号。该账号应处于正常状态,即非被盗、被封禁(禁言、停用)或其他账号异常情形。
</text>
</view>
<view class="subsection">
<text class="subsection-content">
1.2\n账号内资产已处理完毕。包括但不限于:您的家办分销账户佣金、分红、优惠券、权益、积分、兑换码等资产,可用款项已全部提现,或通过兑换、消费等途径支用完毕。您的账户内没有未使用完毕的合伙人权益或您已购买但未使用完的其他权益类、资格类产品和订单。同时,您也有权选择放弃该账号内的资产。
1.2 账号内资产已处理完毕。包括但不限于:您的家办分销账户佣金、分红、优惠券、权益、积分、兑换码等资产,可用款项已全部提现,或通过兑换、消费等途径支用完毕。您的账户内没有未使用完毕的合伙人权益或您已购买但未使用完的其他权益类、资格类产品和订单。同时,您也有权选择放弃该账号内的资产。
</text>
</view>
......@@ -196,7 +35,7 @@ export default {
<view class="subsection">
<text class="subsection-content">
1.4\n账号未涉及任何争议纠纷,包括但不限于与客户、其他合伙人或家办分销平台的纠纷。
1.4 账号未涉及任何争议纠纷,包括但不限于与客户、其他合伙人或家办分销平台的纠纷。
</text>
</view>
......@@ -206,7 +45,7 @@ export default {
<view class="subsection">
<text class="subsection-content">
1.6\n合伙人关系解除后,包括但不限于《家办分销合伙人协议》、《隐私政策》等项下所有权利义务终止。
1.6 合伙人关系解除后,包括但不限于《家办分销合伙人协议》、《隐私政策》等项下所有权利义务终止。
</text>
</view>
</view>
......@@ -216,37 +55,37 @@ export default {
<view class="subsection">
<text class="subsection-content">
2.1\n您的合伙人身份一旦解除将不可恢复,您将无法再享有合伙人权益或找回任何与合伙人身份相关的内容或信息(即使您使用相同的手机号再次注册并使用家办分销系统),包括但不限于:
2.1 您的合伙人身份一旦解除将不可恢复,您将无法再享有合伙人权益或找回任何与合伙人身份相关的内容或信息(即使您使用相同的手机号再次注册并使用家办分销系统),包括但不限于:
</text>
<view class="sub-subsection">
<text class="sub-subsection-content">
2.1.1\n您账号下的合伙人资料(如合伙人等级、团队信息、业绩记录等)、与合伙人身份相关的数据和权益(如分红记录、团队收益、专属优惠等),都将无法恢复。请您务必在解约前自行备份与合伙人身份相关的所有内容或信息。您理解并同意,家办分销无法协助您恢复前述内容或信息。
2.1.1 您账号下的合伙人资料(如合伙人等级、团队信息、业绩记录等)、与合伙人身份相关的数据和权益(如分红记录、团队收益、专属优惠等),都将无法恢复。请您务必在解约前自行备份与合伙人身份相关的所有内容或信息。您理解并同意,家办分销无法协助您恢复前述内容或信息。
</text>
</view>
<view class="sub-subsection">
<text class="sub-subsection-content">
2.1.2\n您理解并同意,您在解约前确认放弃的合伙人权益、分红、优惠券、积分等,在解约后将无法继续使用,历史交易无法通过该账号进行退款或售后。
2.1.2 您理解并同意,您在解约前确认放弃的合伙人权益、分红、优惠券、积分等,在解约后将无法继续使用,历史交易无法通过该账号进行退款或售后。
</text>
</view>
</view>
<view class="subsection">
<text class="subsection-content">
2.2\n您申请解约的合伙人账号所对应的其他账号应当不存在任何由于解约而导致的未了结的合同关系或其他基于合伙人身份产生的权利义务。家办分销有权认为解约会由此产生未了结的权利义务或纠纷的情况。
2.2 您申请解约的合伙人账号所对应的其他账号应当不存在任何由于解约而导致的未了结的合同关系或其他基于合伙人身份产生的权利义务。家办分销有权认为解约会由此产生未了结的权利义务或纠纷的情况。
</text>
</view>
<view class="subsection">
<text class="subsection-content">
2.3\n在您的解约申请处理期间,如您的合伙人账号被他人举报、投诉、被国家机关调查或正处于诉讼、仲裁程序中,家办分销有权自行终止您的解约流程而无需另行获得您的同意。
2.3 在您的解约申请处理期间,如您的合伙人账号被他人举报、投诉、被国家机关调查或正处于诉讼、仲裁程序中,家办分销有权自行终止您的解约流程而无需另行获得您的同意。
</text>
</view>
<view class="subsection">
<text class="subsection-content">
2.4\n解除合伙人关系并不代表解约前的行为和相关责任得到任何形式的豁免或减轻。
2.4 解除合伙人关系并不代表解约前的行为和相关责任得到任何形式的豁免或减轻。
</text>
</view>
......@@ -259,24 +98,11 @@ export default {
<text class="section-title">3、争议解决</text>
<view class="subsection">
<text class="subsection-content">
3.1\n凡因本协议引起的或与本协议有关的任何争议,均应提交上海仲裁委员会按照该会仲裁规则进行仲裁。仲裁裁决是终局的,对双方当事人均有约束力。
3.1 凡因本协议引起的或与本协议有关的任何争议,均应提交上海仲裁委员会按照该会仲裁规则进行仲裁。仲裁裁决是终局的,对双方当事人均有约束力。
</text>
</view>
</view>
</view>
<!-- <view class="footer">
<checkbox-group @change="checkboxChange">
<label class="checkbox-label">
<checkbox :checked="agreed" color="#1890ff" />
<text>我已阅读并同意《合伙人解约协议》</text>
</label>
</checkbox-group>
<button class="submit-btn" :disabled="!agreed" @click="handleSubmit">
确认解约
</button>
</view> -->
</view>
</template>
......
......@@ -544,6 +544,11 @@
"style": {
"navigationBarTitleText": "分销海报"
}
},{
"path": "myTeam/myTeam",
"style": {
"navigationBarTitleText": "我的团队"
}
}
]
},{
......
......@@ -1054,41 +1054,6 @@
}, window.location.href);
// #endif
},
mounted() {
let _this = this;
if(this.isWeixin){
//var btn = document.getElementById('launch-btn');
//btn.addEventListener('launch', function(e) {
//console.log('success');
//});
//btn.addEventListener('error', function(e) {
// uni.navigateTo({
// url:'/pages/downloadAppCommon/downloadAppCommon'
// })
// uni.showModal({
// title: '系统消息',
// content: '您的手机未找到当前应用,是否去下载?',
// success: function(res) {
// if (res.confirm) {
// if(uni.getSystemInfoSync().platform == 'ios'){
// window.location.href = "http://itunes.apple.com/us/app/id399608199";
// }else {
// uni.navigateTo({
// url:'/pages/downloadApp/index'
// })
// // alert('android')
// }
// //在App Store Connect中的App Store下的app信息,可找到appleId
// console.log('用户点击确定');
// } else if (res.cancel) {
// console.log('用户点击取消');
// }
// }
// });
//});
}
},
onReady() {
this.videoContext = uni.createVideoContext('myVideo');
},
......
......@@ -354,7 +354,7 @@
}
uni.setStorageSync('cffp_userInfo', JSON.stringify(cffp_userInfo));
uni.setStorageSync('user_mobile', res.data.mobile)
if(cffp_userInfo.partnerType){
this.featureLists = [{key: '00',name: '成交订单',icon:'icon-dingdan',link: '/pages/saleCourseLists/saleCourseLists',isOpen: true,enName:'order'},
{key: '01',name: '佣金',icon: 'icon-yongjin',link: '/pages/pointsExchange/pointsExchange',isOpen: true,isJoin: true},
......@@ -506,7 +506,7 @@
},
querySystemMessage() {
api.querySystemMessage({systemType:1,userId:uni.getStorageSync('cffp_userId')}).then(res => {
if (res['success']&& res['data']['dataList'].length>0) {
if (res['success']&& res['data']['dataList']&& res['data']['dataList'].length>0) {
let total = res['data']['dataList'].filter(item=>{
......
......@@ -15,13 +15,14 @@
<view v-if="tabType===1">
<view class="ulBox">
<view class="liBox">
<text>昵称(被邀请人可修改)</text>
<text>昵称 <text style="font-size: 22rpx;">(被邀请人可修改)</text> </text>
<text>
<input
v-model="dataForm.name"
class="uni-input"
maxlength="10"
placeholder="昵称"
style="width: 300rpx;"
/>
</text>
</view>
......@@ -30,48 +31,6 @@
<text><input v-model="dataForm.mobileNumber" class="uni-input" type="number" maxlength="11"
placeholder="手机号" /></text>
</view>
<!-- <view class="liBox">
<text>申请身份:</text>
<text>
<picker @change="bindPickerChange" :value="applyIdentity" :range="identityArr">
<view class="uni-input">{{identityArr[applyIdentity]}}</view>
</picker>
</text>
</view>
<view class="liBox">
<text>所属组织:</text>
<text>
<input v-if="isCross==true" v-model="dataForm.areaName" class="uni-input"
placeholder="请填写组织名称" />
<picker v-else @change="bindPChange" :value="index" :range="orgdataList">
<view class="uni-input">{{ orgdataList[index]}}</view>
</picker>
</text>
</view>
<view class="liBox">
<text>是否跨区邀请:</text>
<view class="isCrossBox">
<view :class="{checked:isCross}">
<i class="circle" @click="isCross = true"></i>
<text></text>
</view>
<view :class="{checked:!isCross}">
<i class="circle" @click="isCross = false"></i>
<text></text>
</view>
</view>
</view>
<view class="describeLabel">晋升机制:当事业伙伴成功邀请加盟人数超过10人时,经过人工审核通过后,即可成功晋升为工作室。</view>
-->
<!-- <view class="liBox" v-if="isCross== true">
<text>所属组织名称:</text>
<text>
<picker @change="bindPickerChange" :value="applyIdentity" :range="identityArr">
<view class="uni-input">{{identityArr[applyIdentity]}}</view>
</picker>
</text>
</view> -->
</view>
<!-- <share></share> -->
<button type="primary" plain="true" class="sendInvite" @click="shareToggle()">发出邀请</button>
......
......@@ -121,6 +121,14 @@
</view>
</view>
</view>
<boot-page
loginSource="我的团队"
v-if="sharelogin"
ref="sharelogin"
@close="sharelogin = false"
@afterLogin="afterLogin"
pageSource="myTeam"
></boot-page>
</view>
</template>
......@@ -129,9 +137,11 @@
import dataHandling from "@/util/dataHandling";
import api from "@/api/api";
import { initJssdkShare, setWechatShare } from '@/util/fiveshare';
import BootPage from "@/components/bootpage/bootpage.vue";
export default {
components: {
CommonTimePicker
CommonTimePicker,
BootPage
},
data() {
return {
......@@ -164,7 +174,6 @@
myTeamList:[],//我的团队表格数据,
myTeamData:{},//我的团队总数据,
CffpOrgInfoReqVO: {
userId: uni.getStorageSync('cffp_userId'),
startDate: `${new Date().getFullYear()}-${new Date().getMonth() + 1 > 9 ? new Date().getMonth() + 1 : '0'+ (new Date().getMonth() + 1)}`,
endDate: `${new Date().getFullYear()}-${new Date().getMonth() + 1 > 9 ? new Date().getMonth() + 1 : '0'+ (new Date().getMonth() + 1)}`,
courseOrPolicy: '1',
......@@ -175,7 +184,8 @@
totalCoursePrice: '0.00', // 总销售额
monthStandardSales:'0.00',//本月团队标准销售额
myTeamAchievementList:[],//我的业绩数据列表,
marginTop:'30rpx'
marginTop:'30rpx',
sharelogin: false,
}
},
watch: {
......@@ -260,9 +270,15 @@
}
},
},
onLoad(){
onLoad(options){
// 未登录,弹出登录框
if(options.myTeam&&(!uni.getStorageSync('loginType')||uni.getStorageSync('loginType')=='visitor' )){
this.sharelogin = true
}else {
this.getmyseatem()
this.getqueryTeamAchievement()
}
},
onShow() {
// #ifdef H5
......@@ -272,17 +288,12 @@
// #endif
},
methods: {
sortswitch(obj) {
this.currentFilterBtn = obj.id
this.CffpOrgInfoReqVO.sortType = obj.sortType
this.getqueryTeamAchievement()
// if(obj.sortType == 4){
// this.CffpOrgInfoReqVO.sortType = obj.sortType
// this.getqueryTeamAchievement()
// }else{
// delete this.CffpOrgInfoReqVO.sortType
// this.getqueryTeamAchievement()
// }
},
changeTab(item){
this.currentTab = item.id
......@@ -292,6 +303,7 @@
},
getqueryTeamAchievement() {
this.CffpOrgInfoReqVO.userId=uni.getStorageSync('cffp_userId'),
this.CffpOrgInfoReqVO.queryType = this.tabList.filter(item=>item.id == this.currentTab)[0].type
this.CffpOrgInfoReqVO.sortType = this.btnList.filter(item=>item.id == this.currentFilterBtn)[0].sortType
api.queryTeamAchievement(this.CffpOrgInfoReqVO).then(res => {
......@@ -379,6 +391,11 @@
})
}
},
afterLogin(){
this.userId = uni.getStorageSync('cffp_userId'),
this.getmyseatem()
this.getqueryTeamAchievement()
}
},
}
......
......@@ -207,6 +207,7 @@
{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-yuchengguanxi',link:'/pages/personalCenter/myTeamIncubate',isOpen:true,isShow:true,identity: true},
],
},
......@@ -408,7 +409,6 @@
url: '/myPackageA/login/login?from=personalCenter'
})
try {
uni.clearStorageSync();
uni.setStorageSync('loginType','visitor');
} catch (e) {
......@@ -605,8 +605,7 @@
uni.setStorageSync('user_mobile', res.data.mobile)
}else {
// 清空全部本地存储
uni.clearStorageSync();
uni.setStorageSync('loginType','visitor')
this.showMyName = ''
this.loginType = 'visitor'
......
......@@ -96,7 +96,6 @@
'pages/personalCenter/system/settings'
)
try {
uni.clearStorageSync();
uni.setStorageSync('loginType','visitor');
} catch (e) {
console.log(e)
......
......@@ -6,11 +6,16 @@
<!-- #ifdef APP -->
<text class="iconfont icon-youjiantou zuojiantou" @click="goBack()" style="left: 20rpx;"></text>
<!-- #endif -->
<view class="headerBox">
<view class="add">
<text class="iconfont icon-jiahao" ></text>
</view>
<view class="avartBox" @click="uploadAvatar()">
<text class="iconfont icon-jiahao2fill" ></text>
<image :src="optionForm.headPicture ? optionForm.headPicture :companyLogo" mode="widthFix"></image>
</view>
</view>
</view>
<view class="userInformation">
<view style="flex: 1;">
<view class="wave">
......@@ -408,37 +413,59 @@
height: 300rpx;
width: 100%;
box-sizing: border-box;
.avartBox{
.headerBox{
margin-top: -20rpx;
margin-left: 100rpx;
position: absolute;
bottom: 1%;
bottom: 15%;
left: 14%;
z-index: 99;
margin-top: 50rpx;
margin-left: 100rpx;
.add{
position: absolute;
bottom: 2%;
right: 3%;
background-color: #20269B;
z-index: 2;
display: flex;
align-items: center;
justify-content: center;
padding: 8rpx;
border-radius: 50%;
box-sizing: border-box;
.icon-jiahao{
font-size: 28rpx;
color: #fff;
}
}
.avartBox{
width: 200rpx;
height: 200rpx;
border-radius: 50%;
border: 10rpx solid #fff;
box-sizing: border-box;
box-shadow: 0 0 30rpx 15rpx rgba(150, 150, 150, 0.1);
position: relative;
.icon-jiahao2fill{
position: absolute;
bottom: 2%;
right: 3%;
color: #20269B;
font-size: 50rpx;
z-index: 2;
}
/* 添加以下属性强制硬件加速 */
transform: translateZ(0);
-webkit-transform: translateZ(0);
backface-visibility: hidden;
-webkit-backface-visibility: hidden;
overflow: hidden;
image{
margin-top: 2rpx;
display: block; /* 确保图片是块级元素 */
width: 100%; /* 宽度填满容器 */
height: 100%; /* 高度填满容器 */
border-radius: 50%; /* 保持圆形 */
// border-radius: 50%; /* 保持圆形 */
object-fit: cover; /* 防止图片变形(可选) */
/* 同样为图片添加硬件加速 */
transform: translateZ(0);
-webkit-transform: translateZ(0);
}
}
}
}
.userInformation {
position: relative;
flex: 1;
......@@ -528,15 +555,10 @@
color: black;
font-size: 26rpx;
text-align: right;
}
.error-tip{
position: absolute;
right: 0;
bottom: -30rpx;
color: #F43530;
font-size: 22rpx;
padding-right: 20rpx;
width: 70%;
}
}
}
}
......
......@@ -55,6 +55,12 @@
<ul class="icon_lists dib-box">
<li class="dib">
<span class="icon iconfont">&#xe333;</span>
<div class="name">加号</div>
<div class="code-name">&amp;#xe333;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe302;</span>
<div class="name">save</div>
<div class="code-name">&amp;#xe302;</div>
......@@ -396,9 +402,9 @@
<pre><code class="language-css"
>@font-face {
font-family: 'iconfont';
src: url('iconfont.woff2?t=1754461035462') format('woff2'),
url('iconfont.woff?t=1754461035462') format('woff'),
url('iconfont.ttf?t=1754461035462') format('truetype');
src: url('iconfont.woff2?t=1754967710345') format('woff2'),
url('iconfont.woff?t=1754967710345') format('woff'),
url('iconfont.ttf?t=1754967710345') format('truetype');
}
</code></pre>
<h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
......@@ -425,6 +431,15 @@
<ul class="icon_lists dib-box">
<li class="dib">
<span class="icon iconfont icon-jiahao"></span>
<div class="name">
加号
</div>
<div class="code-name">.icon-jiahao
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-save"></span>
<div class="name">
save
......@@ -939,6 +954,14 @@
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-jiahao"></use>
</svg>
<div class="name">加号</div>
<div class="code-name">#icon-jiahao</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-save"></use>
</svg>
<div class="name">save</div>
......
@font-face {
font-family: "iconfont"; /* Project id 4933433 */
src: url('iconfont.woff2?t=1754461035462') format('woff2'),
url('iconfont.woff?t=1754461035462') format('woff'),
url('iconfont.ttf?t=1754461035462') format('truetype');
src: url('iconfont.woff2?t=1754967710345') format('woff2'),
url('iconfont.woff?t=1754967710345') format('woff'),
url('iconfont.ttf?t=1754967710345') format('truetype');
}
.iconfont {
......@@ -13,6 +13,10 @@
-moz-osx-font-smoothing: grayscale;
}
.icon-jiahao:before {
content: "\e333";
}
.icon-save:before {
content: "\e302";
}
......
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": "7192356",
"name": "加号",
"font_class": "jiahao",
"unicode": "e333",
"unicode_decimal": 58163
},
{
"icon_id": "448643",
"name": "save",
"font_class": "save",
......
......@@ -24,7 +24,6 @@ const whiteList = [
export default function initApp(){
let date = Date.now()
uni.addInterceptor('navigateTo', {
// 页面跳转前进行拦截, invoke根据返回值进行判断是否继续执行跳转
invoke (e) {
......@@ -36,7 +35,7 @@ export default function initApp(){
let pages = getCurrentPages()
let pagesLength = pages.length
if(whiteList.indexOf(e.url)==-1&&!uni.getStorageSync('loginType')){
uni.clearStorageSync();
uni.setStorageSync('loginType','visitor')
uni.navigateTo({
url: '/myPackageA/login/login'
......@@ -45,8 +44,6 @@ export default function initApp(){
if(uni.getStorageSync('cffp_userId')){
api.queryInfo({userId:uni.getStorageSync('cffp_userId')}).then(res=>{
if(!res['success']){
// 清空全部本地存储
uni.clearStorageSync();
uni.setStorageSync('loginType','visitor')
uni.navigateTo({
url: '/myPackageA/login/login'
......
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