Commit c4e19de9 by yuzhenWang

Merge branch 'feature-20250609-优化cffp' into 'master'

Feature 20250609 优化cffp

See merge request !9
parents 2c192a7d b3e070b6
...@@ -2,9 +2,12 @@ ...@@ -2,9 +2,12 @@
import initApp from "@/util/router.js"; import initApp from "@/util/router.js";
import {interceptor} from "@/util/interceptor"; import {interceptor} from "@/util/interceptor";
import {baseURL,apiURL,cffpURL} from "@/environments/environment"; import {baseURL,apiURL,cffpURL} from "@/environments/environment";
import api from './api/api';
export default { export default {
onLaunch: function() { onLaunch: function() {
console.log('App Launch'); console.log('App Launch');
// 处理外部链接参数
this.handleExternalUrlParams();
// #ifdef APP-PLUS // #ifdef APP-PLUS
// uni.downloadFile({ // uni.downloadFile({
// url: '/cffpUpdate/__UNI__ED34740.wgt', // url: '/cffpUpdate/__UNI__ED34740.wgt',
...@@ -34,9 +37,7 @@ ...@@ -34,9 +37,7 @@
version: wgtinfo.version, version: wgtinfo.version,
systemType:systemInfo.osName.toLowerCase() === 'ios' ? 2 : 1 systemType:systemInfo.osName.toLowerCase() === 'ios' ? 2 : 1
}, },
success: (result) => { success: (result) => {
console.log(wgtinfo)
console.log(result)
const data = result.data.data['appVersionInfo']; const data = result.data.data['appVersionInfo'];
if (data.status==1 && data.isForceUpdate && data.wgtUrl) { if (data.status==1 && data.isForceUpdate && data.wgtUrl) {
uni.downloadFile({ uni.downloadFile({
...@@ -45,9 +46,8 @@ ...@@ -45,9 +46,8 @@
if (downloadResult.statusCode === 200) { if (downloadResult.statusCode === 200) {
plus.runtime.install(downloadResult.tempFilePath, { plus.runtime.install(downloadResult.tempFilePath, {
force: true force: true
}, function() { }, function() {
console.log('install success...'); plus.runtime.restart();
plus.runtime.restart();
}, function(e) { }, function(e) {
console.error('install fail...'); console.error('install fail...');
}); });
...@@ -64,20 +64,128 @@ ...@@ -64,20 +64,128 @@
// #endif // #endif
interceptor(); interceptor();
initApp(); initApp();
// 检测设备类型
const systemInfo = uni.getSystemInfoSync()
const isIOS = systemInfo.platform === 'ios'
const isAndroid = systemInfo.platform === 'android'
const isIPad = systemInfo.model.toLowerCase().includes('ipad')
// 添加类名到body
if (isIOS) {
document.body.classList.add('ios-device')
}
if (isAndroid) {
document.body.classList.add('android-device')
}
if (isIPad) {
document.body.classList.add('ipad-device')
}
}, },
onShow: function() {3,
console.log('App Show') onShow: function(options) {
console.log('App Show', options);
// App平台从options获取参数
// #ifdef APP-PLUS
if(options && options.query) {
this.saveUrlParams(options.query);
}
// #endif
}, },
onHide: function() { onHide: function() {
console.log('App Hide') console.log('App Hide')
}, },
methods:{ methods: {
// 处理外部链接参数
handleExternalUrlParams() {
// #ifdef H5
this.handleH5UrlParams();
// #endif
// #ifdef APP-PLUS
this.handleAppUrlParams();
// #endif
},
// 处理H5平台的URL参数
handleH5UrlParams() {
const url = window.location.href;
if(url.indexOf('?') > -1) {
const queryString = url.split('?')[1];
const params = this.parseQueryString(queryString);
this.saveUrlParams(params);
}
},
// 处理App平台的URL参数
handleAppUrlParams() {
// 处理冷启动参数
plus.runtime.getProperty(plus.runtime.appid, (widgetInfo) => {
const args = plus.runtime.arguments;
if(args) {
const params = this.parseAppLaunchArgs(args);
this.saveUrlParams(params);
}
});
// 监听热启动事件
plus.runtime.addEventListener('newintent', (e) => {
const args = e.arguments;
if(args) {
const params = this.parseAppLaunchArgs(args);
this.saveUrlParams(params);
}
});
},
// 解析H5的查询字符串
parseQueryString(queryString) {
const params = {};
const pairs = queryString.split('&');
for(let i = 0; i < pairs.length; i++) {
const pair = pairs[i].split('=');
if(pair.length === 2) {
params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1] || '');
}
}
return params;
},
// 解析App启动参数
parseAppLaunchArgs(args) {
// 处理 scheme://path?key=value 格式
if(args.indexOf('?') > -1) {
const queryString = args.split('?')[1];
return this.parseQueryString(queryString);
}
return {};
},
// 保存URL参数到本地存储
saveUrlParams(params) {
if(Object.keys(params).length > 0) {
console.log('获取到外部链接参数:', params);
// 使用uni.setStorageSync存储到本地
try {
if(params.addSystemType){
console.log('进来了');
uni.setStorageSync('addSystemType', params.addSystemType);
}
// // 可以在这里添加事件通知其他页面参数已准备好
// uni.$emit('externalParamsReady', params);
} catch(e) {
console.error('存储外部链接参数失败:', e);
}
}
}
} }
} }
</script> </script>
<style> <style>
@import "@/static/font/iconfont.css"; @import "@/static/font1/iconfont.css";
@import "@/static/font/iconfont.css";
/*每个页面公共css */ /*每个页面公共css */
@font-face { @font-face {
font-family: 'iconfont'; font-family: 'iconfont';
...@@ -96,16 +204,19 @@ ...@@ -96,16 +204,19 @@
} }
.container{ .container{
background-color: #FBFBFB; background-color: #FBFBFB;
min-height: 100vh; /* 使用视口高度 */
height: auto !important;
height: 100vh;
} }
.uni-popup .uni-popup__wrapper{ .uni-popup .uni-popup__wrapper{
margin: 30rpx!important; /* margin: 30rpx!important; */
} }
.richTextContent img{ .richTextContent img{
width: 100% !important; width: 100% !important;
} }
.popupContainer .uni-popup .uni-popup__wrapper{ .popupContainer .uni-popup .uni-popup__wrapper{
width: 80%; /* width: 80%;
border-radius: 20rpx; border-radius: 20rpx; */
} }
.container uni-slider{ .container uni-slider{
margin: 0; margin: 0;
...@@ -150,4 +261,11 @@ ...@@ -150,4 +261,11 @@
text-align: center; text-align: center;
line-height: 50rpx; line-height: 50rpx;
} }
.iconStyle{
color: rgba(51, 51, 51, 1);
font-size: 28rpx;
}
.commonTitle{
font-size: 30rpx;
}
</style> </style>
...@@ -2,12 +2,12 @@ ...@@ -2,12 +2,12 @@
"version" : "1", "version" : "1",
"prompt" : "template", "prompt" : "template",
"title" : "服务协议和隐私政策", "title" : "服务协议和隐私政策",
"message" : "  请你务必审慎阅读、充分理解“服务协议”和“隐私政策”各条款,包括但不限于:为了更好的向你提供服务,我们需要收集你的设备标识、操作日志等信息用于分析、优化应用性能。<br/>  你可阅读<a href=\"https://m.cffp.org.cn/cffp/components/clause/clause?type=1&isBack=1\">《服务协议》</a>和<a href=\"https://m.cffp.org.cn/cffp/components/clause/clause?type=2&isBack=1\">《隐私政策》</a>了解详细信息。如果你同意,请点击下面按钮开始接受我们的服务。", "message" : "  请你务必审慎阅读、充分理解“服务协议”和“隐私政策”各条款,包括但不限于:为了更好的向你提供服务,我们需要收集你的设备标识、操作日志等信息用于分析、优化应用性能。<br/>  你可阅读<a href=\"https://app.ydhomeoffice.cn/components/clause/clause?type=1&isBack=1\">《服务协议》</a>和<a href=\"https://app.ydhomeoffice.cn/components/clause/clause?type=2&isBack=1\">《隐私政策》</a>了解详细信息。如果你同意,请点击下面按钮开始接受我们的服务。",
"buttonAccept" : "同意并接受", "buttonAccept" : "同意并接受",
"buttonRefuse" : "暂不同意", "buttonRefuse" : "暂不同意",
"second" : { "second" : {
"title" : "确认提示", "title" : "确认提示",
"message" : "  进入应用前,你需先同意<a href=\"https://m.cffp.org.cn/cffp/components/clause/clause?type=1&isBack=1\">《服务协议》</a>和<a href=\"https://m.cffp.org.cn/cffp/components/clause/clause?type=2&isBack=1\">《隐私政策》</a>,否则将退出应用。", "message" : "  进入应用前,你需先同意<a href=\"https://app.ydhomeoffice.cn/components/clause/clause?type=1&isBack=1\">《服务协议》</a>和<a href=\"https://app.ydhomeoffice.cn/components/clause/clause?type=2&isBack=1\">《隐私政策》</a>,否则将退出应用。",
"buttonAccept" : "同意并继续", "buttonAccept" : "同意并继续",
"buttonRefuse" : "退出应用" "buttonRefuse" : "退出应用"
}, },
......
...@@ -263,6 +263,10 @@ export default { ...@@ -263,6 +263,10 @@ export default {
queryById(params){ queryById(params){
return request(`${cffpURL}/partner/queryById`, "POST",params) return request(`${cffpURL}/partner/queryById`, "POST",params)
}, },
//查询开行信息
bankQry(params){
return request(`${apiURL}/metadata/bankQry`, "POST",params)
},
//支付宝去提现 //支付宝去提现
aliWithdrawal(params){ aliWithdrawal(params){
return request(`${apiURL}/aliPay/aliWithdrawal`, "POST", params) return request(`${apiURL}/aliPay/aliWithdrawal`, "POST", params)
...@@ -349,8 +353,6 @@ export default { ...@@ -349,8 +353,6 @@ export default {
powerQuery(params){ powerQuery(params){
return request(`${cffpURL}/user/powerQuery`, "POST", params) return request(`${cffpURL}/user/powerQuery`, "POST", params)
}, },
//保存访问记录接口 //保存访问记录接口
accessLogSave(params){ accessLogSave(params){
return request(`${cffpURL}/accessLog/accessLogSave`, "POST", params) return request(`${cffpURL}/accessLog/accessLogSave`, "POST", params)
...@@ -382,6 +384,12 @@ export default { ...@@ -382,6 +384,12 @@ export default {
//查询证书 //查询证书
officialWebsiteDetail(params){ officialWebsiteDetail(params){
return request(`${cffpURL}/certificate/officialWebsiteDetail`, "POST", params) return request(`${cffpURL}/certificate/officialWebsiteDetail`, "POST", params)
},
//轮播图
getBanner(params) {
return request(`${apiURL}/metadata/getBanner`, 'POST', params)
},
appointment(params) {
return request(`${cffpURL}/course/appointment`, 'POST', params)
} }
} }
...@@ -6,9 +6,8 @@ ...@@ -6,9 +6,8 @@
<input class="uni-input" name="invitationCode" maxlength="11" placeholder="输入手机号" v-model="mobile" /> <input class="uni-input" name="invitationCode" maxlength="11" placeholder="输入手机号" v-model="mobile" />
</view> </view>
<view class="login-code"> <view class="login-code">
<input name="form.code" placeholder="输入验证码" v-model="code" type="number" maxlength="6" /> <input style="font-size: 26rpx;" name="form.code" placeholder="输入验证码" v-model="code" type="number" maxlength="6" />
<text @click="sendMessage()" :class="{'grey':disabledSendBtn}">{{sendCode}}</text> <text style="width: 200rpx;text-align: right;" @click="sendMessage()" :class="{'grey':disabledSendBtn}">{{sendCode}}</text>
</view> </view>
<view class="agree"> <view class="agree">
<label class="radio" style="padding-right: 10rpx;"> <label class="radio" style="padding-right: 10rpx;">
...@@ -34,6 +33,7 @@ ...@@ -34,6 +33,7 @@
<script> <script>
import api from '../../api/api'; import api from '../../api/api';
import common from '../../common/common'; import common from '../../common/common';
import {companyInfo} from "@/environments/environment";
export default { export default {
data() { data() {
return { return {
...@@ -49,7 +49,6 @@ ...@@ -49,7 +49,6 @@
}, },
mounted() { mounted() {
this.loginTypeSync = uni.getStorageSync('loginType'); this.loginTypeSync = uni.getStorageSync('loginType');
//console.log(this.orderId, 222)
}, },
methods: { methods: {
getFile(type){ getFile(type){
...@@ -106,7 +105,7 @@ ...@@ -106,7 +105,7 @@
if(this.agreeFlag == false) { if(this.agreeFlag == false) {
uni.showToast({ uni.showToast({
title: '请阅读并勾选江苏赢盾财务顾问有限公司服务协议和隐私条款', title: '请阅读并勾选'+`${companyInfo.companyFullName}`+'服务协议和隐私条款',
duration: 2000, duration: 2000,
icon: 'none' icon: 'none'
}); });
...@@ -127,6 +126,7 @@ ...@@ -127,6 +126,7 @@
// uni.navigateTo({ // uni.navigateTo({
// url:'/pages/orderConfirm/orderConfirm?userId=' + this.userId // url:'/pages/orderConfirm/orderConfirm?userId=' + this.userId
// }) // })
this.loginTypeSync = "codelogin";
uni.$emit('loginUpdate'); uni.$emit('loginUpdate');
this.closebootpage() this.closebootpage()
}else{ }else{
...@@ -140,19 +140,19 @@ ...@@ -140,19 +140,19 @@
}, },
closebootpage() { closebootpage() {
//debugger;
this.$emit('close', this.userId,this.loginTypeSync) this.$emit('close', this.userId,this.loginTypeSync)
}, },
} }
} }
</script> </script>
<style lang="scss"> <style lang="scss" scoped>
.content-box { .content-box {
position: absolute; position: absolute;
// left:50%; left:50%;
left: 10%; // left: 10%;
top: 30%; top: 50%;
transform: translate(-50%,-50%);
width: 630rpx; width: 630rpx;
height: 500rpx; height: 500rpx;
background: #FFFFFF; background: #FFFFFF;
...@@ -163,6 +163,10 @@ ...@@ -163,6 +163,10 @@
.inputItem { .inputItem {
border-bottom: 2rpx solid #CECECE; border-bottom: 2rpx solid #CECECE;
padding: 20rpx; padding: 20rpx;
font-size: 28rpx;
.uni-input{
font-size: 26rpx;
}
} }
.file{ .file{
color: #20279B; color: #20279B;
...@@ -185,7 +189,7 @@ ...@@ -185,7 +189,7 @@
justify-content: space-between; justify-content: space-between;
border-bottom: 1px solid #CECECE; border-bottom: 1px solid #CECECE;
padding: 20rpx; padding: 20rpx;
font-size: 26rpx;
.grey { .grey {
font-size: 24rpx; font-size: 24rpx;
color: #CECECE; color: #CECECE;
...@@ -198,7 +202,7 @@ ...@@ -198,7 +202,7 @@
height: 100vh; height: 100vh;
top: 50%; top: 50%;
left: 50%; left: 50%;
transform: translate3d(-50%, -50%, 0); transform: translate(-50%, -50%);
/* width: -webkit-fill-available; /* width: -webkit-fill-available;
height: -webkit-fill-available; */ height: -webkit-fill-available; */
-webkit-backface-visibility: hidden; -webkit-backface-visibility: hidden;
...@@ -226,5 +230,6 @@ ...@@ -226,5 +230,6 @@
display: flex; display: flex;
justify-content: center; justify-content: center;
color: #FFFFFF; color: #FFFFFF;
font-size: 26rpx;
} }
</style> </style>
<template> <template>
<swiper class="swiper" circular :indicator-dots="indicatorDots" :autoplay="autoplay" :interval="interval" <swiper class="swiper" circular :indicator-dots="indicatorDots" :autoplay="autoplay" :interval="interval"
:duration="duration"> :duration="duration">
<swiper-item v-for="bannerItem in carouselList"> <swiper-item v-for="(bannerItem,index) in carouselList" :key="index">
<!-- <uni-link :href="bannerItem.destinationAddress?bannerItem.destinationAddress:'#'"> --> <!-- <uni-link :href="bannerItem.destinationAddress?bannerItem.destinationAddress:'#'"> -->
<image :src="bannerItem.filePath" mode="widthFix" @click="jumpUrl(bannerItem.destinationAddress)"></image> <image :src="bannerItem.filePath" mode="widthFix" @click="jumpUrl(bannerItem.destinationAddress)"></image>
<!-- </uni-link> --> <!-- </uni-link> -->
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
</template> </template>
<script> <script>
import {shareURL} from "@/environments/environment";
export default { export default {
props: ['carouselList'], props: ['carouselList'],
data() { data() {
...@@ -30,23 +31,29 @@ ...@@ -30,23 +31,29 @@
if (!url) { if (!url) {
return false return false
} else { } else {
let index = url.indexOf('/cffp/pages/'); const match = url.match(/fileId=([^&]*)/);
if (index != -1) { const fileId = match ? match[1] : null;
uni.navigateTo({ uni.navigateTo({
url: url.substring(index + 5, url.length) url: `/pages/courseDetail/courseDetail?fileId=${fileId}`
}) })
} else { // 原来的跳转逻辑,不明白为啥这样跳
// #ifdef H5 // let index = url.indexOf(`${shareURL}/pages/`);
window.location.href = url; // if (index != -1) {
// #endif // uni.navigateTo({
// #ifdef APP-PLUS // url: url.substring(index + 16, url.length)
uni.navigateTo({ // })
url: '/components/webview?url=' + url // } else {
// page.json定义的路径 传url 到webview界面去接收 实现跳转 // // #ifdef H5
}) // window.location.href = url;
//#endif // // #endif
} // // #ifdef APP-PLUS
// uni.navigateTo({
// url: '/components/webview?url=' + url
// // page.json定义的路径 传url 到webview界面去接收 实现跳转
// })
// //#endif
// }
} }
} }
...@@ -56,6 +63,6 @@ ...@@ -56,6 +63,6 @@
<style lang="scss"> <style lang="scss">
.swiper { .swiper {
height: 228rpx; height: 300rpx;
} }
</style> </style>
\ No newline at end of file
...@@ -9,10 +9,10 @@ ...@@ -9,10 +9,10 @@
任的条款将以粗体下划线标识,您应重点阅读。 任的条款将以粗体下划线标识,您应重点阅读。
</view> </view>
<view class=""> <view class="">
欢迎注册CFFP财富中心在线会员,请您在注册前阅读本服务协议,登录表示您已经认真阅读并同意",确认本服务协议内容并自愿遵守本协议。 欢迎注册银盾家办在线会员,请您在注册前阅读本服务协议,登录表示您已经认真阅读并同意",确认本服务协议内容并自愿遵守本协议。
</view> </view>
<view class="">CFFP财富中心是CFFP家庭财务策划师联盟所运营、持有的专属APP,开发者为江苏赢盾财务顾问有限公司</view> <view class="">银盾家办是银盾联合家庭办公室所运营、持有的专属APP,开发者为{{companyFullName}}</view>
<view class="">CFFP家庭财务策划师联盟(以下简称CFFP)是AIOFP中国分会,由江苏赢盾财务顾问有限公司负责运营。</view> <view class="">银盾联合家庭办公室(以下简称银盾家办),由{{companyFullName}}负责运营。</view>
<h4>一、会员须知</h4> <h4>一、会员须知</h4>
<view class=""> <view class="">
...@@ -119,8 +119,8 @@ ...@@ -119,8 +119,8 @@
</view> </view>
<view v-if="type == 2" class="content" :style="{'margin-top': isBack!=1 ? '60rpx' : '0'}"> <view v-if="type == 2" class="content" :style="{'margin-top': isBack!=1 ? '60rpx' : '0'}">
<h4>隐私条款</h4> <h4>隐私条款</h4>
<view class="">CFFP家庭财务策划师联盟(以下简称CFFP)是AIOFP中国分会,由江苏赢盾财务顾问有限公司负责运营。</view> <view class="">银盾联合家庭办公室,由{{companyFullName}}负责运营。</view>
<view class="">CFFP财富中心是CFFP家庭财务策划师联盟所运营、持有的专属APP,开发者为江苏赢盾财务顾问有限公司</view> <view class="">银盾家办是银盾联合家庭办公室所运营、持有的专属APP,开发者为{{companyFullName}}</view>
<view class="">AIOFP(Association of Independently Owned Financial Professionals)是澳洲最大的的独立金融专业人士协会)</view> <view class="">AIOFP(Association of Independently Owned Financial Professionals)是澳洲最大的的独立金融专业人士协会)</view>
<view class="">CFFP致力于培养千位优秀的家庭财务策划师,传递正确的家庭财务管理理念,通过专业及精准的规划帮助千家万户达成家庭幸福圆满!</view> <view class="">CFFP致力于培养千位优秀的家庭财务策划师,传递正确的家庭财务管理理念,通过专业及精准的规划帮助千家万户达成家庭幸福圆满!</view>
<view class="">本网站由CFFP拥有和运营。</view> <view class="">本网站由CFFP拥有和运营。</view>
...@@ -170,16 +170,18 @@ ...@@ -170,16 +170,18 @@
<view class="">(b) 在使用本应用网络服务时,您不可避免的要披露自己的个人信息,如联络方式或者邮政地址时,请您妥善保护自己的个人信息,仅在必要的情形下向他人提供。如您发现自己的个人信息泄密,尤其是本应用用户名及密码发生泄露,请您立即联络本应用客服,以便本应用采取相应措施。</view> <view class="">(b) 在使用本应用网络服务时,您不可避免的要披露自己的个人信息,如联络方式或者邮政地址时,请您妥善保护自己的个人信息,仅在必要的情形下向他人提供。如您发现自己的个人信息泄密,尤其是本应用用户名及密码发生泄露,请您立即联络本应用客服,以便本应用采取相应措施。</view>
<view class="">7.本隐私政策的更改</view> <view class="">7.本隐私政策的更改</view>
<view class="">(a) 如果决定更改隐私政策,我们会在本政策中、本公司网站中以及我们认为适当的位置发布这些更改,以便您了解我们如何收集、使用您的个人信息,哪些人可以访问这些信息,以及在什么情况下我们会透露这些信息。</view> <view class="">(a) 如果决定更改隐私政策,我们会在本政策中、本公司网站中以及我们认为适当的位置发布这些更改,以便您了解我们如何收集、使用您的个人信息,哪些人可以访问这些信息,以及在什么情况下我们会透露这些信息。</view>
<view class="">(b) CFFP保留随时修改本政策的权利,因此请经常查看。如对本政策作出重大更改,本公司会通过网站通知的形式告知。</view> <view class="">(b) 银盾家办保留随时修改本政策的权利,因此请经常查看。如对本政策作出重大更改,本公司会通过网站通知的形式告知。</view>
</view> </view>
</view> </view>
</template> </template>
<script> <script>
import {companyInfo} from "@/environments/environment";
export default { export default {
data() { data() {
return { return {
companyFullName : companyInfo.companyFullName,
type: null, type: null,
isBack: null isBack: null
} }
......
<template>
<view>
<view class="timeTitle">
<view class="" v-if="initDate" :style="{color:initDate =='请选择'?'gray':'',fontSize:initDate =='请选择'?'31rpx':''}">
<text :style="{fontSize:chooseTxt}">{{initDate}}</text>
<text class="iconfont icon-youjiantou iconStyle" ></text>
</view>
<view class="emptyTxt" v-else>
<text :style="{fontSize:placeholderTxt}">请选择</text>
<text class="iconfont icon-youjiantou iconStyle"></text>
</view>
</view>
<uni-popup ref="timePopup" type="bottom" :maskClick="false">
<view class="timeBox">
<view class="titleBox">
<view @click="cancle">
取消
</view>
<view style="color:#20279b;" @click="confirm">
确定
</view>
</view>
<picker-view :indicator-style="indicatorStyle" :value="value" @change="bindChange" class="picker-view">
<picker-view-column>
<view class="item" v-for="(item,index) in dataList" :key="index">
<view class="myItem" :class="{ 'selected': currentValue === index }">
{{item.name}}
</view>
</view>
</picker-view-column>
</picker-view>
</view>
</uni-popup>
</view>
</template>
<script>
import dataHandling from "@/util/dataHandling";
import dayjs from 'dayjs';
export default {
name:'CommonSelect',
props: {
timeData: {
type: Object
},
showValue: {
type: Number,
default: 0 // 添加默认值
},
visible: {
type: Boolean,
default: false
},
dataList: {
type: Array,
default: () => ([])
},
placeholderTxt:{
type:String,
default: '28rpx'
},
chooseTxt:{
type:String,
default: '28rpx'
},
},
data: function () {
return {
title: 'picker-view',
indicatorStyle: `height: 90rpx;`,
initDate:``,
currentValue:this.showValue || 0 // 初始化时使用props的值
}
},
watch: {
visible: {
deep: true,
handler(newVal) {
if(newVal) {
this.$refs.timePopup.open()
// 打开时确保value数组正确
this.value = [this.currentValue]
}
}
},
showValue: {
immediate: true, // 添加immediate确保初始化时也执行
handler(newVal) {
if(newVal !== undefined && newVal !== null&&newVal!==-1) {
this.currentValue = newVal
this.value = [newVal] // 同时更新value数组
// 更新显示的文本
if(this.dataList && this.dataList.length > 0) {
this.initDate = this.dataList[newVal].name
}
}
}
},
dataList: {
immediate: true,
handler(newVal) {
if(newVal && newVal.length > 0 && this.currentValue !== undefined&&this.currentValue!==-1) {
this.initDate = newVal[this.currentValue].name
}
}
}
},
created() {
// 初始化value数组
this.value = [this.currentValue]
},
methods: {
bindChange: dataHandling.debounce(function (e) {
const val = e.detail.value;
this.currentValue = val[0];
}, 50),
cancle(){
if( !this.initDate ){
this.currentValue = 0
}
this.$emit('close',false)
this.$refs.timePopup.close()
},
confirm(){
if(this.dataList && this.dataList.length > 0) {
this.initDate = this.dataList[this.currentValue].name
}
this.$refs.timePopup.close()
this.$emit('confirm', this.currentValue)
}
}
}
</script>
<style lang="scss" scoped>
::v-deep .uni-popup .uni-popup__wrapper{
margin: 0 !important;
}
// ::v-deep .uni-picker-view-indicator {
// background-color: rgba(32, 39, 155, 0.1);
// height: 50px;
// border-top: 1px solid #20279b;
// border-bottom: 1px solid #20279b;
// }
.timeTitle{
font-size: 35rpx;
.emptyTxt{
color: gray;
font-size: 31rpx;
display: flex;
align-items: center;
}
}
.timeBox{
width: 100%;
background-color: #fff;
border-radius: 10rpx 10rpx 0 0;
.titleBox{
display: flex;
align-items: center;
justify-content: space-between;
font-size: 35rpx;
padding: 20rpx 30rpx;
}
.picker-view {
width: 100%;
height: 600rpx;
margin-top: 20rpx;
}
.item {
text-align: center;
display: flex;
align-items: center;
justify-content: center;
.myItem {
padding: 10rpx;
border-radius: 10rpx;
color: #000;
transition: transform 0.2s ease;
&.selected {
transform: scale(1.05);
color: #20279b;
font-weight: 500;
}
}
}
}
</style>
\ No newline at end of file
...@@ -5,18 +5,18 @@ ...@@ -5,18 +5,18 @@
</view> </view>
<view class="courseDetailBox"> <view class="courseDetailBox">
<view class="title"> <view class="title">
<text style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;">{{title}}</text> <view style="overflow: hidden;text-overflow: ellipsis;white-space: nowrap;">{{title}}</view>
<!-- <text class="detailBtn" @click="viewDetail()" v-if="isNeedViewDetail">订单详情></text> --> <!-- <text class="detailBtn" @click="viewDetail()" v-if="isNeedViewDetail">订单详情></text> -->
</view> </view>
<view class="summaryBox" v-if="summaryBox"> <view class="summaryBox" v-if="summaryBox">
<text>{{summaryBox}}</text> <view class="text-wrap">{{summaryBox}}</view>
</view> </view>
<view class="dataBox" v-if="dataList"> <view class="dataBox" v-if="dataList">
<strong>{{dataList.coursePrice}}</strong> <view class="price" v-if="dataList.coursePrice != 0" >{{dataList.coursePrice}}</view>
<strong v-if="dataList.coursePrice == 0">免费</strong> <!-- <text v-if="dataList.coursePrice == 0">免费</text> -->
<text v-if="dataList.coursePrice != 0">{{dataList.salesNumber}}人购买</text> <text v-if="dataList.coursePrice != 0">{{dataList.salesNumber}}人购买</text>
</view> </view>
<view class="tagListBox" v-if="tagList || fileLecturerId"> <!-- <view class="tagListBox" v-if="tagList || fileLecturerId">
<template v-if="tagList"> <template v-if="tagList">
<view class="tagItem" v-for="tagItem in tagConcat(tagList.v1,tagList.v2)">{{tagItem}}</view> <view class="tagItem" v-for="tagItem in tagConcat(tagList.v1,tagList.v2)">{{tagItem}}</view>
</template> </template>
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
<view class="tagItem" v-for="tagItem in tagConcat(_tagList.v1,_tagList.v2)">{{tagItem}}</view> <view class="tagItem" v-for="tagItem in tagConcat(_tagList.v1,_tagList.v2)">{{tagItem}}</view>
</template> </template>
</view> </view> -->
</view> </view>
</view> </view>
</template> </template>
...@@ -101,36 +101,46 @@ ...@@ -101,36 +101,46 @@
} }
</script> </script>
<style lang="scss"> <style lang="scss" scoped>
.itemContent { .itemContent {
box-sizing: border-box;
display: flex; display: flex;
justify-content: flex-start;
height: 100%; height: 100%;
width: 100%;
.thumbnailBox { .thumbnailBox {
width: 300rpx; box-sizing: border-box;
flex-basis: 300rpx;
margin-right: 26rpx; margin-right: 26rpx;
align-items: center; align-items: center;
width: 200rpx;
flex: 0 0 auto;
image { image {
max-width: 100%; width: 100%;
height: auto; height: auto;
} }
} }
.courseDetailBox { .courseDetailBox {
width: 100%; flex: 1;
color: #333; color: #333;
height: auto; height: auto;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
justify-content: space-between; justify-content: space-between;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
.title { .title {
// flex: 1;
display: flex; display: flex;
max-width: 260rpx; // max-width: 260rpx;
// justify-content: space-between; // width: 0;
// align-items: center; // flex-basis: 100rpx;
font-size: 32rpx; font-size: 32rpx;
// overflow: hidden;
// text-overflow: ellipsis;
// white-space: nowrap;
.detailBtn { .detailBtn {
font-size: 24rpx; font-size: 24rpx;
color: #4A4A4A; color: #4A4A4A;
...@@ -142,19 +152,32 @@ ...@@ -142,19 +152,32 @@
} }
.summaryBox { .summaryBox {
// overflow: hidden;
// text-overflow: ellipsis;
// white-space: nowrap;
width: 100%;
font-size: 24rpx; font-size: 24rpx;
// margin: 10rpx 0; // margin: 10rpx 0;
display: flex;
.text-wrap {
white-space: pre-wrap;
word-break: break-word;
}
text { text {
margin-right: 20rpx; margin-right: 20rpx;
} }
} }
.dataBox { .dataBox {
strong { display: flex;
flex-direction: row;
align-items: center;
.price {
width:150rpx;
color: #F15A1F; color: #F15A1F;
font-size: 30rpx; font-size: 30rpx;
margin: 10rpx 20rpx 10rpx 0; margin: 10rpx 20rpx 10rpx 0;
font-weight: 600;
} }
text { text {
......
...@@ -39,11 +39,12 @@ ...@@ -39,11 +39,12 @@
points: [], points: [],
//签名图片 //签名图片
SignatureImg: '', SignatureImg: '',
hasSign: false hasSign: false,
isDrawing: false // 新增绘制状态
}; };
}, },
props: ['showCanvas'], props: ['showCanvas'],
emits: ['sendImage',], emits: ['sendImage','closeCanvas'],
methods: { methods: {
//清除签名的图片 //清除签名的图片
obliterate() { obliterate() {
...@@ -67,36 +68,83 @@ ...@@ -67,36 +68,83 @@
this.ctx.lineCap = 'round'; this.ctx.lineCap = 'round';
this.ctx.lineJoin = 'round'; this.ctx.lineJoin = 'round';
}, },
//触摸开始,获取到起点 // //触摸开始,获取到起点
touchstart(e) { // touchstart(e) {
let startX = e.changedTouches[0].x; // let startX = e.changedTouches[0].x;
let startY = e.changedTouches[0].y; // let startY = e.changedTouches[0].y;
let startPoint = { // let startPoint = {
X: startX, // X: startX,
Y: startY // Y: startY
}; // };
this.points.push(startPoint); // this.points.push(startPoint);
//每次触摸开始,开启新的路径 // //每次触摸开始,开启新的路径
this.ctx.beginPath(); // this.ctx.beginPath();
}, // },
//触摸移动,获取到路径点 // 触摸开始,获取到起点 - 修改后的方法
touchmove(e) { touchstart(e) {
let moveX = e.changedTouches[0].x; this.isDrawing = true;
let moveY = e.changedTouches[0].y; let startX = e.changedTouches[0].x;
let movePoint = { let startY = e.changedTouches[0].y;
X: moveX, let startPoint = {
Y: moveY X: startX,
}; Y: startY
this.points.push(movePoint); //存点 };
let len = this.points.length; this.points.push(startPoint);
if (len >= 2) { this.ctx.beginPath();
this.draw(); //绘制路径
} // 阻止事件冒泡
}, e.stopPropagation();
// 触摸结束,将未绘制的点清空防止对后续路径产生干扰 return false;
touchend() { },
this.points = []; // //触摸移动,获取到路径点
}, // touchmove(e) {
// let moveX = e.changedTouches[0].x;
// let moveY = e.changedTouches[0].y;
// let movePoint = {
// X: moveX,
// Y: moveY
// };
// this.points.push(movePoint); //存点
// let len = this.points.length;
// if (len >= 2) {
// this.draw(); //绘制路径
// }
// },
// 触摸移动,获取到路径点 - 修改后的方法
touchmove(e) {
if (!this.isDrawing) return;
let moveX = e.changedTouches[0].x;
let moveY = e.changedTouches[0].y;
let movePoint = {
X: moveX,
Y: moveY
};
this.points.push(movePoint);
let len = this.points.length;
if (len >= 2) {
this.draw();
}
// 阻止事件冒泡
e.stopPropagation();
return false;
},
// // 触摸结束,将未绘制的点清空防止对后续路径产生干扰
// touchend() {
// this.points = [];
// },
// 触摸结束 - 修改后的方法
touchend() {
this.isDrawing = false;
this.points = [];
// 阻止事件冒泡
if (e) {
e.stopPropagation();
}
return false;
},
//绘制笔迹 //绘制笔迹
draw() { draw() {
let point1 = this.points[0]; let point1 = this.points[0];
...@@ -136,14 +184,12 @@ ...@@ -136,14 +184,12 @@
canvasId: 'mycanvas', canvasId: 'mycanvas',
success: function(res) { success: function(res) {
if(!res || !res.tempFilePath) { if(!res || !res.tempFilePath) {
// console.log('=====',res.tempFilePath);
that.SignatureImg = res.tempFilePath; that.SignatureImg = res.tempFilePath;
that.$emit('sendImage', that.SignatureImg); that.$emit('sendImage', that.SignatureImg);
that.close(); that.close();
}else{ }else{
//用来解决安卓真机获取到的是canvas图片的临时路径,转成base64格式 //用来解决安卓真机获取到的是canvas图片的临时路径,转成base64格式
pathToBase64(res.tempFilePath).then(re => { pathToBase64(res.tempFilePath).then(re => {
// console.log('base===============',re);
that.SignatureImg = re; that.SignatureImg = re;
that.$emit('sendImage', that.SignatureImg); that.$emit('sendImage', that.SignatureImg);
that.close(); that.close();
...@@ -156,6 +202,18 @@ ...@@ -156,6 +202,18 @@
}, },
mounted() { mounted() {
this.createCanvas(); this.createCanvas();
// 新增代码
// 在组件挂载时添加额外的事件监听
// #ifdef H5
const canvas = document.querySelector('.mycanvas');
if (canvas) {
canvas.addEventListener('touchmove', (e) => {
if (this.isDrawing) {
e.preventDefault();
}
}, { passive: false });
}
// #endif
} }
}; };
</script> </script>
...@@ -165,32 +223,22 @@ ...@@ -165,32 +223,22 @@
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
background: #fff; background: #fff;
// height: calc(100vh-44rpx);
//签名模块 //签名模块
.signature { .signature {
// position: fixed; touch-action: none; /* 禁用触摸操作 */
// top: 10px;
// left: 2%;
// z-index: 999;
width: 96%; width: 96%;
//canvas //canvas
.mycanvas { .mycanvas {
touch-action: none; /* 禁用触摸操作 */
width: 100%; width: 100%;
// height: calc(100vh - 200upx);
height: calc(100vh - 600rpx); height: calc(100vh - 600rpx);
background-color: #f9f9f9; background-color: #f9f9f9;
border-radius: 10px 10px 0 0; border-radius: 10px 10px 0 0;
} }
//底部按钮 //底部按钮
.footer { .footer {
// font-size: 14px;
// height: 150upx;
display: flex; display: flex;
justify-content: space-around; justify-content: space-around;
// align-items: center;
// background-color: #fff;
// border-radius: 0 0 10px 10px;
// border-top: 1px solid #a7a7a733;
} }
} }
//生成的图片 //生成的图片
......
<template> <template>
<view class="wrapper"> <view class="wrapper">
<view v-if="loginType=='resetpw'" @click="rpsdlogin()" class="psdlogin"> <view v-if="loginType=='resetpw' || goBack" @click="rpsdlogin()" class="psdlogin">
<image style="width: 40rpx;height: 40rpx;" src="../../static/rpsloging.png" mode=""></image> <view class="iconfont icon-youjiantou zuojiantou" style="top:18rpx;color: #fff;"></view>
<!-- <image style="width: 40rpx;height: 40rpx;" src="../../static/rpsloging.png" mode=""></image> -->
</view> </view>
<view class="logo"> <view class="logo">
<image :src="imgSrc" alt="logo" srcset="" class="iconBox" mode="widthFix"></image> <image :src="imgSrc" alt="logo" srcset="" class="iconBox" mode="widthFix"></image>
<view>欢迎登录使用CFFP财富中心</view> <view>欢迎使用{{companyName}}</view>
</view> </view>
<view class="content"> <view class="content">
<view class="login_title"> <!-- <view class="login_title">
{{loginTypeName}} {{loginTypeName}}
</view> </view> -->
<form> <form>
<!-- <view class="inputItem" v-if="loginType==='register'">
<input class="uni-input" name="invitationCode" placeholder="输入邀请码(非必填)" v-model="invitation_code"/>
</view> -->
<view class="inputItem" v-if="loginType!=='agentlogin'"> <view class="inputItem" v-if="loginType!=='agentlogin'">
<input type="number" class="uni-input" name="mobileNo" placeholder="输入手机号" v-model="form.mobile" maxlength="11"/> <input type="number" class="uni-input" name="mobileNo" placeholder="输入手机号" v-model="form.mobile" maxlength="11"/>
</view> </view>
...@@ -23,7 +21,7 @@ ...@@ -23,7 +21,7 @@
</view> </view>
<view class="inputItem" v-if="loginType === 'codelogin' || loginType==='register' || loginType === 'resetpw'"> <view class="inputItem" v-if="loginType === 'codelogin' || loginType==='register' || loginType === 'resetpw'">
<input class="uni-input codeBtn" name="code" placeholder="输入验证码" v-model="form.code" type="number" maxlength="6"/> <input class="uni-input codeBtn" name="code" placeholder="输入验证码" v-model="form.code" type="number" maxlength="6"/>
<text @click="sendMessage()" :class="{'grey':disabledSendBtn}">{{sendCodeHtml}}</text> <text style="font-size: 28rpx;" @click="sendMessage()" :class="{'grey':disabledSendBtn}">{{sendCodeHtml}}</text>
</view> </view>
<view class="inputItem" v-if="loginType === 'pwlogin' || loginType==='register' || loginType==='agentlogin'"> <view class="inputItem" v-if="loginType === 'pwlogin' || loginType==='register' || loginType==='agentlogin'">
<input class="uni-input" type="text" name="password" placeholder="输入密码" v-if="!passwordFlag" v-model="form.password"/> <input class="uni-input" type="text" name="password" placeholder="输入密码" v-if="!passwordFlag" v-model="form.password"/>
...@@ -42,24 +40,25 @@ ...@@ -42,24 +40,25 @@
</view> </view>
</form> </form>
<view class="agree" v-if="loginType!='resetpw'"> <view class="agree" v-if="loginType!='resetpw'">
<label class="radio" ><radio @click="c_agreeFlag" :checked="agreeFlag" /></label> <label class="radio"><radio @click="c_agreeFlag" :checked="agreeFlag" /></label>
<text>已阅读并同意</text> <text>已阅读并同意</text>
<text class="file" @click="getFile(1)">服务协议</text> <text class="file" @click="getFile(1)">服务协议</text>
<text></text> <text></text>
<text class="file" @click="getFile(2)">隐私政策</text> <text class="file" @click="getFile(2)">隐私政策</text>
</view> </view>
<view class="login_btn" @click="loginInCheck()" v-if="loginType!='resetpw'"> <view class="login_btn" @click="loginInCheck()" v-if="loginType!='resetpw'">
{{loginType=='register'?'注册':'登录'}} <!-- {{loginType=='register'?'注册':'登录'}} -->
登录 / 注册
</view> </view>
<view class="login_btn" v-if="loginType=='resetpw'" @click="loginInCheck()"> <view class="login_btn" v-if="loginType=='resetpw'" @click="loginInCheck()">
保存 保存
</view> </view>
<view class="login_type" v-if="loginType!='resetpw'"> <!-- <view class="login_type" v-if="loginType!='resetpw'">
<text @click="getLoginType()">{{(loginType=='pwlogin' || loginType=='register')?'验证码登录':'密码登录'}}</text> <text @click="getLoginType()">{{(loginType=='pwlogin' || loginType=='register')?'验证码登录':'密码登录'}}</text>
<text v-if="loginType==='codelogin'" @click="loginType='register';loginTypeName='注册'">立即注册</text> <text v-if="loginType==='codelogin'" @click="loginType='register';loginTypeName='注册'">立即注册</text>
<text v-if="loginType!=='codelogin'" @click="loginType='resetpw';loginTypeName='重置密码'">忘记密码</text> <text v-if="loginType!=='codelogin'" @click="loginType='resetpw';loginTypeName='重置密码'">忘记密码</text>
</view> </view> -->
<view v-if="loginType!='resetpw'"> <!-- <view v-if="loginType!='resetpw'">
<view class="other_login"> <view class="other_login">
<text class="text_line"></text> <text class="text_line"></text>
<text style="margin: 0 40rpx;position: relative;top: 10rpx;">其他登录</text> <text style="margin: 0 40rpx;position: relative;top: 10rpx;">其他登录</text>
...@@ -67,9 +66,8 @@ ...@@ -67,9 +66,8 @@
</view> </view>
<view class="login_type"> <view class="login_type">
<text @click="loginType='visitor';initForm();loginIn(1)">游客</text> <text @click="loginType='visitor';initForm();loginIn(1)">游客</text>
<text @click="loginType = 'agentlogin';loginTypeName = '管理账号登录';">代理商</text>
</view> </view>
</view> </view> -->
</view> </view>
</view> </view>
</template> </template>
...@@ -77,11 +75,12 @@ ...@@ -77,11 +75,12 @@
<script> <script>
import api from '../../api/api'; import api from '../../api/api';
import common from '../../common/common'; import common from '../../common/common';
import {companyInfo} from "@/environments/environment";
export default { export default {
data() { data() {
return { return {
// 登陆方式初始化为验证码登录 companyType : companyInfo.companyType,
companyName : companyInfo.appName,
loginType: 'codelogin', loginType: 'codelogin',
passwordFlag:false, passwordFlag:false,
loginTypeName:'验证码登录', loginTypeName:'验证码登录',
...@@ -90,6 +89,7 @@ ...@@ -90,6 +89,7 @@
//用户输入信息 //用户输入信息
form:{ form:{
mobile:null, mobile:null,
// code:'250106',
code:null, code:null,
password:null, password:null,
}, },
...@@ -99,17 +99,50 @@ ...@@ -99,17 +99,50 @@
doublePassword:null, doublePassword:null,
agreeFlag:false, agreeFlag:false,
userId:null, userId:null,
imgSrc:'../../static/cffp_logo.png', imgSrc:companyInfo.companyLogo,
fileType:null fileType:null,
goBack:true
} }
}, },
methods: { methods: {
c_agreeFlag(){ c_agreeFlag(){
this.agreeFlag=!this.agreeFlag; this.agreeFlag=!this.agreeFlag;
}, },
rpsdlogin(){ rpsdlogin() {
this.loginType= 'codelogin' if (this.loginType == 'resetpw') {
}, this.loginType = 'codelogin';
return;
}
this.loginType='visitor'
this.initForm()
uni.removeTabBarBadge({ index: 3 });
// 获取跳转来源(通过路由参数)
const pages = getCurrentPages();
const currentPage = pages[pages.length - 1];
const from = currentPage.options.from; // 获取 url 中的 from 参数
// 从 TabBar 页跳转过来,用 switchTab 返回
if (from === 'index') {
uni.switchTab({
url:'/pages/index/index'
})
} else if (from === 'personalCenter') {
this.loginIn(1,'personalCenter')
// uni.switchTab({
// url:'/pages/personalCenter/personalCenter'
// })
} else if (pages.length > 1) {
// 从普通页跳转过来,且页面栈中有上一页,直接返回
uni.navigateBack({ delta: 1 });
this.loginIn(1,'')
}else {
// 默认情况(如直接打开登录页),跳转到首页
uni.switchTab({
url: '/pages/index/index'
});
}
},
getFile(type){ getFile(type){
uni.navigateTo({ uni.navigateTo({
url:`/components/clause/clause?type=${type}` url:`/components/clause/clause?type=${type}`
...@@ -153,7 +186,9 @@ ...@@ -153,7 +186,9 @@
} }
}, 1000); }, 1000);
}, },
loginIn(loginType){ loginIn(loginType,urlType){
console.log('loginType',loginType);
console.log('this.loginType',this.loginType);
uni.showLoading({ uni.showLoading({
title: '加载中...' title: '加载中...'
}); });
...@@ -168,9 +203,16 @@ ...@@ -168,9 +203,16 @@
uni.setStorageSync('cffp_userId',this.userId); uni.setStorageSync('cffp_userId',this.userId);
uni.setStorageSync('loginType',this.loginType); uni.setStorageSync('loginType',this.loginType);
uni.setStorageSync('uni-token', res.data['token']); uni.setStorageSync('uni-token', res.data['token']);
uni.switchTab({ if(urlType == 'personalCenter'){
url:'/pages/index/index' uni.switchTab({
}) url:'/pages/personalCenter/personalCenter'
})
}else {
uni.switchTab({
url:'/pages/index/index'
})
}
}else{ }else{
uni.showToast({ uni.showToast({
title: res['message'], title: res['message'],
...@@ -276,7 +318,7 @@ ...@@ -276,7 +318,7 @@
} }
if(!this.agreeFlag){ if(!this.agreeFlag){
uni.showToast({ uni.showToast({
title: '请阅读并勾选江苏赢盾财务顾问有限公司服务协议和隐私条款', title: '请阅读并勾选'+`${companyInfo.companyFullName}`+'服务协议和隐私条款',
duration: 5000, duration: 5000,
icon: 'none' icon: 'none'
}) })
...@@ -294,7 +336,7 @@ ...@@ -294,7 +336,7 @@
} }
if(!this.agreeFlag && this.loginType !='resetpw'){ if(!this.agreeFlag && this.loginType !='resetpw'){
uni.showToast({ uni.showToast({
title: '请阅读并勾选江苏赢盾财务顾问有限公司服务协议和隐私条款', title: '请阅读并勾选'+`${companyInfo.companyFullName}`+'服务协议和隐私条款',
duration: 5000, duration: 5000,
icon: 'none' icon: 'none'
}) })
...@@ -343,17 +385,20 @@ ...@@ -343,17 +385,20 @@
} }
</script> </script>
<style lang="scss"> <style lang="scss" scoped>
.psdlogin{ .psdlogin{
margin: 40rpx; margin: 40rpx;
width: 40rpx; width: 40rpx;
height: 40rpx; height: 40rpx;
// background: url('../../static/rpsloging.png') no-repeat;
} }
.wrapper{ .wrapper{
background: #20279B; background: #20279B;
position: relative;
overflow: auto; overflow: auto;
height: 100vh; height:100vh;
padding-top: 50rpx;
box-sizing: border-box;
.logo{ .logo{
text-align: center; text-align: center;
color: #fff; color: #fff;
...@@ -374,7 +419,7 @@ ...@@ -374,7 +419,7 @@
padding: 40rpx 60rpx; padding: 40rpx 60rpx;
overflow: hidden; overflow: hidden;
margin-bottom: 30rpx; margin-bottom: 30rpx;
min-height: 65%; // min-height: 65%;
.login_title{ .login_title{
text-align: center; text-align: center;
font-size: 40rpx; font-size: 40rpx;
...@@ -384,12 +429,14 @@ ...@@ -384,12 +429,14 @@
.inputItem{ .inputItem{
position: relative; position: relative;
margin-bottom: 30rpx; margin-bottom: 30rpx;
font-size: 28rpx;
.codeBtn{ .codeBtn{
width: 70%; width: 70%;
} }
.uni-input{ .uni-input{
height: 80rpx; height: 80rpx;
line-height: 80rpx; line-height: 80rpx;
font-size: 28rpx;
} }
.uni-input:after{ .uni-input:after{
content: " "; content: " ";
...@@ -419,6 +466,10 @@ ...@@ -419,6 +466,10 @@
font-size: 28rpx; font-size: 28rpx;
color:#666; color:#666;
text-align: center; text-align: center;
.radio{
width: 30rpx;
height: 30rpx;
}
.file{ .file{
color: #20279B; color: #20279B;
text-decoration: none; text-decoration: none;
...@@ -426,22 +477,28 @@ ...@@ -426,22 +477,28 @@
} }
.login_btn{ .login_btn{
height: 100rpx; height: 100rpx;
line-height: 100rpx; // line-height: 100rpx;
text-align: center; // text-align: center;
display: flex;
align-items: center;
justify-content: center;
margin: 40rpx auto; margin: 40rpx auto;
color: #fff; color: #fff;
background: #20279B; background: #20279B;
border-radius: 80rpx; border-radius: 80rpx;
font-size: 28rpx;
} }
.login_type{ .login_type{
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
margin: 30rpx; margin: 30rpx;
font-size: 28rpx;
} }
.other_login{ .other_login{
text-align: center; text-align: center;
color: #20279B; color: #20279B;
position: relative; position: relative;
font-size: 28rpx;
.text_line{ .text_line{
display: inline-block; display: inline-block;
height: 1px; height: 1px;
......
...@@ -5,13 +5,13 @@ ...@@ -5,13 +5,13 @@
<view v-for="item in menuList.filter(v=>v.isShow)" :key="item.title" @click="goDetail(item)" <view v-for="item in menuList.filter(v=>v.isShow)" :key="item.title" @click="goDetail(item)"
class="liBox"> class="liBox">
<view class="infoBox"> <view class="infoBox">
<text>{{item.title}}</text> <text style="font-size: 28rpx;">{{item.title}}</text>
</view> </view>
<view class="iconBox"> <view class="iconBox">
<view class="" v-if="item.isType == 'text'"> <view class="" v-if="item.isType == 'text'">
<text>{{item.contentType}}</text> <text style="font-size: 28rpx;">{{item.contentType}}</text>
</view> </view>
<i v-else class="iconfont icon-youjiantou"></i> <i v-else class="iconfont icon-youjiantou iconStyle"></i>
</view> </view>
</view> </view>
</view> </view>
......
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
<script> <script>
export default { export default {
name: "listItem", name: "my-list-item",
props: { props: {
title: { title: {
type: Array, type: Array,
...@@ -58,14 +58,12 @@ ...@@ -58,14 +58,12 @@
}; };
}, },
mounted() { mounted() {
console.log(this.lists)
}, },
onLoad() { onLoad() {
}, },
methods: { methods: {
link(val, value, list) { link(val, value, list) {
console.log(val, value, 5141548)
let dataList = list.children let dataList = list.children
for (var i = 0; i < dataList.length; i++) { for (var i = 0; i < dataList.length; i++) {
if (val == dataList[i].name) { if (val == dataList[i].name) {
......
<template> <template>
<view class="container"> <view class="container" style="box-sizing: border-box;">
<view class="d-table"> <view class="d-table" style="box-sizing: border-box;">
<!-- <view class="d-box"> <!-- <view class="d-box">
<view class="d-td" v-for="item in datatitleList"> <view class="d-td" v-for="item in datatitleList">
<span class="">{{item}}</span> <span class="">{{item}}</span>
...@@ -15,15 +15,10 @@ ...@@ -15,15 +15,10 @@
<!-- 为了提高dom渲染效率,当list产生破坏性变动时(如删除其中一项,或者排序等)必须使用唯一确定的key,而不能使用index --> <!-- 为了提高dom渲染效率,当list产生破坏性变动时(如删除其中一项,或者排序等)必须使用唯一确定的key,而不能使用index -->
<block v-for="(item, i) in treeList" :key="item.id"> <block v-for="(item, i) in treeList" :key="item.id">
<view class="d-box" v-if="item.level === 0 || checkOpen(item.pids[item.pids.length - 1])"> <view class="d-box" v-if="item.level === 0 || checkOpen(item.pids[item.pids.length - 1])">
<!-- :class="`padding-left-${item.level * 5 + 10}`"-->
<view class="d-td"> <view class="d-td">
<view class="" style="display: flex;text-align: left;"> <view class="" style="display: flex;text-align: center;">
<!-- <view class="">
<uni-icons v-if="item.hasChildren && !treeList[0]" <!-- <view class="d-td" v-if="item.levelCode == 'B1'&& item.itemType == '1'"
:type="checkLazy(item.id) ? 'spinner-cycle' : !checkOpen(item.id) ? 'arrowright' : 'arrowdown'"
size="12"></uni-icons>
</view> -->
<view class="d-td" v-if="item.levelCode == 'B1'&& item.itemType == '1'"
@click="open(item, i)" :style="{'margin-left':(item.level * 20)+'rpx'}"> @click="open(item, i)" :style="{'margin-left':(item.level * 20)+'rpx'}">
<view class="" style="display: flex;"> <view class="" style="display: flex;">
<text>{{item.areaCenterName}}</text> <text>{{item.areaCenterName}}</text>
...@@ -33,11 +28,10 @@ ...@@ -33,11 +28,10 @@
</view> </view>
</view> </view>
</view> </view> -->
<view class="d-td" @click="open(item, i)" <!-- <view class="d-td" @click="open(item, i)"
v-else-if="item.levelCode == 'C3'&& item.itemType == '1'" v-else-if="item.levelCode == 'C3'&& item.itemType == '1'"
:style="{'margin-left':(item.level * 20)+'rpx'}"> :style="{'margin-left':(item.level * 20)+'rpx'}">
<!-- <text style="color: #FFFFFF;">{{item.areaCenterName}}</text> -->
<view class="" style="display: flex;"> <view class="" style="display: flex;">
<text>{{item.areaCenterName}}</text> <text>{{item.areaCenterName}}</text>
<view class="" style="width: 36rpx;height: 36rpx;margin-left: 5rpx; "> <view class="" style="width: 36rpx;height: 36rpx;margin-left: 5rpx; ">
...@@ -45,11 +39,10 @@ ...@@ -45,11 +39,10 @@
mode="widthFix"></image> mode="widthFix"></image>
</view> </view>
</view> </view>
</view> </view> -->
<view class="d-td" @click="open(item, i)" <!-- <view class="d-td" @click="open(item, i)"
v-else-if="item.levelCode == 'C2'&& item.itemType == '1'" v-else-if="item.levelCode == 'C2'&& item.itemType == '1'"
:style="{'margin-left':(item.level * 20)+'rpx'}"> :style="{'margin-left':(item.level * 20)+'rpx'}">
<!-- <text style="color: #FFFFFF;">{{item.areaCenterName}}</text> -->
<view class="" style="display: flex;"> <view class="" style="display: flex;">
<text>{{item.areaCenterName}}</text> <text>{{item.areaCenterName}}</text>
<view class="" style="width: 36rpx;height: 36rpx;margin-left: 5rpx;"> <view class="" style="width: 36rpx;height: 36rpx;margin-left: 5rpx;">
...@@ -57,9 +50,13 @@ ...@@ -57,9 +50,13 @@
mode="widthFix"></image> mode="widthFix"></image>
</view> </view>
</view> </view>
</view> </view> -->
<view class="d-td" @click="open(item, i)" v-else :style="{'margin-left':(item.level * 20)+'rpx'}"> <!-- @click="open(item, i)" -->
<text>{{item.name}}</text> <view class="d-td" :style="{'margin-left':(item.level * 20)+'rpx'}">
<text v-if="dataShowType == 1">{{item.parentName}}</text>
<view v-if="dataShowType == 2" style="text-align:center;">
<text >{{item.raiseTeamLeder}}</text>
</view>
</view> </view>
<!-- <view class="content-box-title-a" @click="open(item, i)" :style="{'margin-left':(item.level * 20)+'rpx'}"> <!-- <view class="content-box-title-a" @click="open(item, i)" :style="{'margin-left':(item.level * 20)+'rpx'}">
<text style="color: black;">{{item.name}}</text> <text style="color: black;">{{item.name}}</text>
...@@ -74,16 +71,16 @@ ...@@ -74,16 +71,16 @@
<text>{{item.name}}</text> <text>{{item.name}}</text>
</view> --> </view> -->
</view> </view>
<!-- <text v-else class=""></text> -->
<!-- </view> -->
</view> </view>
<view class="d-td" style="text-align: center;"> <view class="d-td" style="text-align: center;">
<text v-if="item.itemType == '2'">{{ item.levelName }}</text> <text v-if="dataShowType == 1">{{ item.name }}</text>
<text v-else></text> <text v-if="dataShowType == 2" style="margin-right: 30rpx;">{{item.raiseTime}}</text>
<!-- 原本的写法 -->
<!-- <text v-else></text> -->
</view> </view>
<view class="d-td" style="text-align: center;">{{ item.count }}</view> <view class="d-td" style="text-align: center;" v-if="dataShowType == 1">{{ item.levelName }}</view>
<!-- 原本的结构现隐藏 -->
<!-- <view class="d-td" style="text-align: center;" v-if="dataShowType == 2">{{ item.count }}</view> -->
</view> </view>
</block> </block>
</view> </view>
...@@ -117,13 +114,18 @@ ...@@ -117,13 +114,18 @@
}, },
type: { type: {
type: String, type: String,
},
dataShowType: {
dataShowType: String,
} }
}, },
name: 'lazy-tree', name: 'lazy-tree',
mounted() { mounted() {
this.list = this.dataList this.list = this.dataList
this.setTree(); this.setTree();
console.log('datatitleList',this.datatitleList);
console.log('dataList',this.dataList);
}, },
computed: {}, computed: {},
data() { data() {
...@@ -168,6 +170,7 @@ ...@@ -168,6 +170,7 @@
// }); // });
const list = this.deepClone(this.list); const list = this.deepClone(this.list);
this.treeList = this.treeToArray(list); this.treeList = this.treeToArray(list);
console.log('this.treeList',this.treeList);
}, },
async lazyLoad(name) { async lazyLoad(name) {
...@@ -206,7 +209,6 @@ ...@@ -206,7 +209,6 @@
}, },
syncOpen(ids) { syncOpen(ids) {
console.log(ids, 15155)
const list = []; const list = [];
ids.forEach(o => { ids.forEach(o => {
this.openList.forEach(o1 => { this.openList.forEach(o1 => {
...@@ -248,7 +250,6 @@ ...@@ -248,7 +250,6 @@
} }
}) })
// const list = this.deepClone(await this.lazyLoad(item.levelName)); // const list = this.deepClone(await this.lazyLoad(item.levelName));
// console.log(list, '这里是什么值啊')
} }
this.openList.push(item.id); this.openList.push(item.id);
...@@ -344,7 +345,7 @@ ...@@ -344,7 +345,7 @@
}; };
</script> </script>
<style lang="scss"> <style lang="scss" scoped>
.content-box { .content-box {
background-color: #fff; background-color: #fff;
display: flex; display: flex;
...@@ -352,6 +353,8 @@ ...@@ -352,6 +353,8 @@
align-items: center; align-items: center;
// padding: 0 20rpx; // padding: 0 20rpx;
justify-content: space-between; justify-content: space-between;
box-sizing: border-box;
// width: 100%;
} }
.content-box-title { .content-box-title {
...@@ -364,17 +367,23 @@ ...@@ -364,17 +367,23 @@
} }
.d-box { .d-box {
background-color: #fff;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
// padding: 0 20rpx; padding: 20rpx 0;
font-size: 26rpx; font-size: 26rpx;
box-sizing: border-box;
border-bottom: 1px solid #F2F2F2;
.d-td { .d-td {
flex: 1; flex: 1;
align-items: center; align-items: center;
padding: 5rpx 10rpx; color: #333;
// padding: 5rpx 10rpx;
} }
} }
.d-box:last-child{
border: none;
}
.content-box-title-a { .content-box-title-a {
// flex: 1; // flex: 1;
// padding: 0 20rpx; // padding: 0 20rpx;
...@@ -430,7 +439,7 @@ ...@@ -430,7 +439,7 @@
display: flex; display: flex;
width: 100%; width: 100%;
justify-content: space-between; justify-content: space-between;
box-sizing: border-box;
.d-th { .d-th {
justify-content: center; justify-content: center;
flex: 1 flex: 1
......
<template> <template>
<view class="concent-footer"> <view class="concent-footer">
<view class="content-box"> <view class="content-box">
<view class="content-box-title" v-for="item in datatitleList"> <view class="content-box-title" v-for="(item,index) in datatitleList" :key="index">
<span class="title">{{item}}</span> <span class="title">{{item}}</span>
</view> </view>
</view> </view>
<!-- // 一级循环 --> <!-- // 一级循环 -->
<view class="content-sam-box"> <view class="content-sam-box" v-if="dataList && dataList.length > 0">
<view class="" v-for="(pointItem,index) in dataList"> <view class="" v-for="(pointItem,index) in dataList" :key="index">
<view class="content-sa" style=" " v-if="felTyle == 'achievement'"> <view class="content-sa" style=" " v-if="felTyle == 'achievement'">
<view class="content-box-title" <view class="content-box-title"
style="display: flex;align-items: center;margin-left: 6rpx;flex: 1;"> style="display: flex;align-items: center;flex: 1;justify-content: center;">
<view <view
class="circle"
style="width: 30rpx;height: 30rpx;border-radius: 50%;"
:class="index == '0' ?'cornermarker': index == '1' ? 'cornermarkertwo' : index == '2' ? 'cornermarkerthree' : 'cornermarkerother'"> :class="index == '0' ?'cornermarker': index == '1' ? 'cornermarkertwo' : index == '2' ? 'cornermarkerthree' : 'cornermarkerother'">
<span style="font-size: 20rpx;line-height: 20rpx;">{{index + 1}}</span> <span style="font-size: 20rpx;line-height: 20rpx;">{{index + 1}}</span>
</view> </view>
<!-- <view class="cornermarkerthree"> <!-- <view class="cornermarkerthree">
<span>{{index + 1}}</span> <span>{{index + 1}}</span>
</view> --> </view> -->
<view style="margin-left: 8rpx;text-overflow: ellipsis; <view
overflow: hidden; class="dateTime"
white-space: nowrap;">{{pointItem.name }}</view> v-if="currentTitle == 4"
</view> >
<view class="content-box-title" style="text-overflow: ellipsis;overflow: hidden; {{pointItem.saleDate }}
</view>
<view
style="white-space: wrap;width: 100rpx;margin-left: 5rpx;"
v-if="currentTitle == '1' || currentTitle == '2'"
>
{{pointItem.name }}
</view>
</view>
<!-- <view class="content-box-title" style="text-overflow: ellipsis;overflow: hidden;
white-space: nowrap;max-width: 150rpx;"> white-space: nowrap;max-width: 150rpx;">
<span>{{pointItem.areaCenterName }}</span> <span>{{pointItem.areaCenterName }}</span>
</view> </view> -->
<view class="content-box-title"> <view class="content-box-title">
<span style="color:#FF0000;"> <span style="color:#FF0000;">
&nbsp; {{pointItem.orderNum }} &nbsp; &nbsp; {{pointItem.orderNum }} &nbsp;
...@@ -40,6 +51,7 @@ ...@@ -40,6 +51,7 @@
</view> </view>
</view> </view>
</view> </view>
<h4 class="noListTip" v-else>暂无数据!</h4>
</view> </view>
</template> </template>
...@@ -66,6 +78,10 @@ ...@@ -66,6 +78,10 @@
felTyle: { felTyle: {
type: String, type: String,
default: null default: null
},
currentTitle: {
type: String,
default: '1'
} }
}, },
name: "myteam-table", name: "myteam-table",
...@@ -91,13 +107,11 @@ ...@@ -91,13 +107,11 @@
}; };
}, },
mounted() { mounted() {
console.log(this.dataList)
// this.alist = this.dataList // this.alist = this.dataList
// this.list = JSON.parse(JSON.stringify(this.dataList)) // this.list = JSON.parse(JSON.stringify(this.dataList))
// this.$nextTick(() => { // this.$nextTick(() => {
// }) // })
// console.log(this.dataList, 555555)
}, },
methods: { methods: {
subordinate(index, val, type, expand) { subordinate(index, val, type, expand) {
...@@ -175,7 +189,10 @@ ...@@ -175,7 +189,10 @@
} }
</script> </script>
<style scoped> <style scoped lang="scss">
.noListTip{
font-size: 28rpx;
}
.content-box { .content-box {
background-color: #fff; background-color: #fff;
display: flex; display: flex;
...@@ -186,15 +203,31 @@ ...@@ -186,15 +203,31 @@
.content-sa { .content-sa {
display: flex; display: flex;
// align-items: center;
} }
.content-box-title { .content-box-title {
padding: 5rpx 0; padding: 5rpx 0;
flex: 1; flex: 1;
display: flex;
align-items: center; align-items: center;
justify-content: center;
text-align: center; text-align: center;
border-bottom: 1rpx solid #F2F2F2; border-bottom: 1rpx solid #F2F2F2;
padding: 20rpx 0; padding: 20rpx 0;
font-size: 28rpx;
.circle{
display: flex;
align-items: center;
justify-content: center;
}
.dateTime{
width: 130rpx;
margin-left: 3rpx;
// text-overflow: ellipsis;
// overflow: hidden;
white-space: nowrap;
}
} }
......
...@@ -38,6 +38,7 @@ ...@@ -38,6 +38,7 @@
}else { }else {
return false return false
} }
console.log('maxDate',this.maxDate);
}, },
methods: { methods: {
bindDateChange: function(e) { bindDateChange: function(e) {
......
<template> <template>
<view class="search"> <view class="search">
<input class="searchInput" type="text" name="" id="" v-model="queryName" @confirm="searchBtn()"/> <input
class="searchInput"
type="text"
name=""
id=""
v-model="localQuery"
@confirm="searchBtn()"
@input="handleInput"
/>
<text class="iconfont icon-sousuo" @click="searchBtn()"></text> <text class="iconfont icon-sousuo" @click="searchBtn()"></text>
<text class="iconfont icon-xiaoxi"></text> <!-- <text class="iconfont icon-xiaoxi"></text>
<text class="system_msg" @click="jumpToSystemMsg()">{{messageUnreadCount}}</text> <text class="system_msg" @click="jumpToSystemMsg()">{{messageUnreadCount}}</text> -->
</view> </view>
</template> </template>
...@@ -11,19 +19,33 @@ ...@@ -11,19 +19,33 @@
import api from "../../api/api"; import api from "../../api/api";
import common from '../../common/common'; import common from '../../common/common';
export default{ export default{
props:['isSearch','userId'], props:['isSearch','userId', 'initialQuery'],
data(){ data(){
return { return {
messageUnreadCount:null, messageUnreadCount:null,
queryName:null queryName:null,
localQuery: this.initialQuery || '',
} }
}, },
name:'search', name:'search',
components:{}, components:{},
onLoad(options){ watch: {
this.queryName = options.queryName; initialQuery: {
immediate: true, // 立即触发
handler(newVal) {
this.localQuery = newVal || ''; // 处理 null/undefined
}
}
}, },
methods:{ methods:{
// 新增方法:允许父组件重置搜索词
resetSearch() {
this.localQuery = '';
},
handleInput(e) {
this.localQuery = e.detail.value;
},
jumpToSystemMsg(){ jumpToSystemMsg(){
if(this.userId){ if(this.userId){
uni.navigateTo({ uni.navigateTo({
...@@ -50,42 +72,55 @@ ...@@ -50,42 +72,55 @@
searchBtn(){ searchBtn(){
if(this.isSearch == 1){ if(this.isSearch == 1){
//掉查询 //掉查询
this.$emit("send",this.queryName) // this.$emit("send",this.queryName)
}else{ this.$emit("send", this.localQuery);
//有参数就掉查询否则直接跳转到课程列表页 }else {
if(this.queryName){ this.$emit("update:initialQuery", this.localQuery); // 新增
uni.setStorageSync('queryName',this.queryName) uni.setStorageSync('queryName', this.localQuery);
}
uni.switchTab({ uni.switchTab({
url:'/pages/courselist/courselist' url: '/pages/courselist/courselist'
}) });
} }
// else{
// //有参数就掉查询否则直接跳转到课程列表页
// if(this.queryName){
// uni.setStorageSync('queryName', this.localQuery);
// // uni.setStorageSync('queryName',this.queryName)
// }
// uni.switchTab({
// url:'/pages/courselist/courselist'
// })
// }
} }
}, },
mounted() { mounted() {
this.querySystemMessage(); // this.querySystemMessage();
} }
} }
</script> </script>
<style lang="scss"> <style lang="scss">
.search{ .search{
position: relative;
display: flex; display: flex;
margin: 30rpx auto; margin: 30rpx auto;
align-items: center; align-items: center;
justify-content: space-between;
background: linear-gradient(to right,#E6F5FC,#FDE9F2);
border-radius: 60rpx;
.searchInput{ .searchInput{
margin-right: 20rpx; margin-right: 20rpx;
width: 95%; width: 85%;
border-radius: 60rpx;
background: linear-gradient(to right,#E6F5FC,#FDE9F2);
padding: 15rpx; padding: 15rpx;
} }
.icon-sousuo{ .icon-sousuo{
font-size: 60rpx; font-size: 50rpx;
position: absolute; margin-right: 10rpx;
right: 80rpx;
top: 10rpx;
opacity: .7; opacity: .7;
} }
.icon-xiaoxi{ .icon-xiaoxi{
......
<template>
<view class="search-container">
<!-- 输入框 -->
<view class="inputBox">
<input
class="search-input"
v-model="searchText"
@input="handleInput"
@focus="showDropdown = true"
style="text-align: right;"
:disabled="isClick"
placeholder="请选择开户行"
/>
<text @click="openDropdown" class="iconfont icon-youjiantou iconStyle"></text>
</view>
<!-- 下拉框 -->
<view v-if="showDropdown" class="dropdown">
<view class="cancle" @click="showDropdown = false">
取消
</view>
<scroll-view scroll-y class="dropdown-list" :style="{ maxHeight: dropdownMaxHeight }">
<view
v-for="(item, index) in displayedList"
:key="index"
class="dropdown-item"
@click="handleSelect(item)"
>
{{ item.label }}
</view>
<!-- 无数据提示 -->
<view v-if="displayedList.length === 0" class="empty">无匹配结果</view>
</scroll-view>
</view>
</view>
</template>
<script>
export default {
props: {
// 后端返回的全部数据(格式:[{ label: '名称', value: 'id' }, ...])
allData: {
type: Array,
default: () => [],
},
isClick: {
type: Boolean,
default: false,
},
nowBank: {
type: String,
default: '',
},
},
data() {
return {
searchText: '', // 输入框内容
showDropdown: false, // 控制下拉显示
displayedList: [], // 当前展示的数据
dropdownMaxHeight: '500rpx', // 下拉框最大高度
};
},
methods: {
openDropdown(){
if(this.isClick) return
this.showDropdown = true
},
// 输入处理(含防抖)
handleInput() {
clearTimeout(this.debounceTimer);
this.debounceTimer = setTimeout(() => {
this.filterData();
}, 300);
},
// 过滤数据
filterData() {
const keyword = this.searchText.trim().toLowerCase();
if (!keyword) {
// 无关键词时显示前10条
this.displayedList = this.allData.slice(0, 10);
} else {
// 有关键词时过滤全部数据
this.displayedList = this.allData.filter(item =>
item.label.toLowerCase().includes(keyword)
);
}
},
// 选择项
handleSelect(item) {
this.searchText = item.label;
this.showDropdown = false;
this.$emit('select', item); // 向父组件传递选中项
},
},
mounted() {
if(this.allData[0].show){
this.searchText = this.allData[0].label;
}
if(this.nowBank&&this.allData.filter(item=>item.label==this.nowBank).length>0) this.searchText = this.nowBank
// 初始展示前10条
this.displayedList = this.allData.slice(0, 8);
},
};
</script>
<style lang="scss" scoped>
.search-container {
position: relative;
width: 100%; /* 按需调整宽度 */
box-sizing: border-box;
padding-right: 0rpx;
}
.inputBox{
display: flex;
align-items: center;
justify-content: flex-start;
}
.search-input {
width: 100%;
font-size: 28rpx;
}
.dropdown {
position: absolute;
width: 100%;
margin-top: 10rpx;
background: #ffffff;
// border: 2rpx solid #e0e0e0;
border-radius: 8rpx;
box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.1);
z-index: 1000;
.cancle{
height: 60rpx;
box-sizing: border-box;
padding-right: 30rpx;
background-color: rgba(235, 239, 247, .8);
display: flex;
align-items: center;
justify-content: flex-end;
}
}
.dropdown-list {
width: 100%;
}
.dropdown-item {
padding: 24rpx 20rpx;
font-size: 28rpx;
border-bottom: 2rpx solid #f5f5f5;
}
.dropdown-item:last-child {
border-bottom: none;
}
.empty {
padding: 24rpx;
color: #999;
text-align: center;
}
</style>
\ No newline at end of file
...@@ -3,9 +3,23 @@ ...@@ -3,9 +3,23 @@
<view class="menu_content"> <view class="menu_content">
<view v-for="item in menuLists" :key="item.link" class="tabbar_item" :class="{'active':item.link == currentPage}" @click="navTo(item)"> <view v-for="item in menuLists" :key="item.link" class="tabbar_item" :class="{'active':item.link == currentPage}" @click="navTo(item)">
<view class="pic"> <view class="pic">
<view
<image v-if="item.link == currentPage" :src="'/static/tabbar/' + item.selectedIconPath + '.png'" mode="widthFix"></image> v-if="item.link == currentPage"
<image v-else :src="'/static/tabbar/' + item.iconPath + '.png'" mode="widthFix"></image> class="iconfont iconSize"
:class="`${item.selectedIconPath}`"
>
</view>
<view
v-else
class="iconfont iconSize"
:class="`${item.iconPath}`"
>
</view>
<view class="infoBody" v-if="item.link=='personalCenter'&&infoTotal>0">
{{infoTotal}}
</view>
<!-- <image v-if="item.link == currentPage" :src="'/static/tabbar/' + item.selectedIconPath + '.png'" mode="widthFix"></image>
<image v-else :src="'/static/tabbar/' + item.iconPath + '.png'" mode="widthFix"></image> -->
</view> </view>
<view class="name">{{item.name}}</view> <view class="name">{{item.name}}</view>
</view> </view>
...@@ -15,15 +29,15 @@ ...@@ -15,15 +29,15 @@
<script> <script>
export default { export default {
props: ['currentPage'], props: ['currentPage','infoTotal'],
name:"tabBar", name:"tabBar",
data() { data() {
return { return {
menuLists: [ menuLists: [
{key:1,name:'首页',iconPath:'home',selectedIconPath:'home_active',link:'index'}, {key:1,name:'首页',iconPath:'icon-shouye16',selectedIconPath:'home_active',link:'index'},
{key:2,name:'SFP智能财策',iconPath:'sfp',selectedIconPath:'sfp_active',link:'product'}, {key:2,name:'金融工具',iconPath:'icon-jurassic_toolkit',selectedIconPath:'sfp_active',link:'product'},
{key:3,name:'CFFP认证',iconPath:'cffp',selectedIconPath:'cffp_active',link:'courselist'}, {key:3,name:'产品中心',iconPath:'icon-pinzhishangpinhuichang',selectedIconPath:'cffp_active',link:'courselist'},
{key:4,name:'我的',iconPath:'my',selectedIconPath:'my_active',link:'personalCenter'}, {key:4,name:'我的',iconPath:'icon-gerenzhongxin',selectedIconPath:'my_active',link:'personalCenter'},
] ]
} }
}, },
...@@ -40,7 +54,7 @@ ...@@ -40,7 +54,7 @@
} }
}, },
mounted() { mounted() {
console.log(this.currentPage,1114) console.log('info',this.infoTotal);
} }
} }
</script> </script>
...@@ -56,18 +70,45 @@ ...@@ -56,18 +70,45 @@
background: #fff; background: #fff;
color: #333; color: #333;
font-size: 24rpx; font-size: 24rpx;
padding-bottom: 80rpx;
transform: translateX(-50%); transform: translateX(-50%);
box-sizing: border-box;
padding: 20rpx 25rpx 100rpx 25rpx;
.menu_content{ .menu_content{
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-around; justify-content: space-around;
.tabbar_item{
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.pic{ .pic{
width: 70rpx; position: relative;
// width: 60rpx;
margin: 0 auto; margin: 0 auto;
.infoBody{
box-sizing: border-box;
text-align: center;
position: absolute;
top: -28%;
right: -61%;
width: 33rpx;
height: 33rpx;
background-color: rgba(212, 48, 48, 1);
color: #fff;
border-radius: 50%;
line-height: 30rpx;
}
.iconSize{
font-size: 40rpx;
}
} }
.name{ .name{
text-align: center;
// text-align: center;
font-size: 26rpx;
color: #666;
} }
} }
} }
......
<template>
<!-- 登录弹窗 -->
<view>
<uni-popup ref="loginPopup" :mask-click="false">
<view class="loginPopupBox">
<view class="loginPopupTitle">
<view>
<text>产品预约</text>
</view>
<view class="iconGuanbi">
<text @click="canle" class="iconfont icon-guanbi"></text>
</view>
</view>
<view class="loginPopupInput">
<view class="loginPopupInputLine" style="margin-bottom: 30rpx;">
<input style="font-size: 28rpx;" v-model="mobile" maxlength="11" type="number"
placeholder="请输入手机号">
</view>
<view class="loginPopupInputLine"
style="display: flex;justify-content: space-between;align-items: center;">
<input style="font-size: 28rpx;" v-model="code" maxlength="6" type="number"
placeholder="请输入验证码">
<view @click="c_sendCode"
style="color: #20269B;width: 200rpx;font-size: 30rpx;text-align: right;">
{{sendCodeHtml}}
</view>
</view>
</view>
<!-- <view class="agree">
<label class="radio" style="padding-right: 5rpx;">
<radio style="transform:scale(0.8);" :checked="agreeFlag" @click="agreeFlag=!agreeFlag" />
</label>
<text>已阅读并同意</text>
<text class="file" @click="getFile(1)">服务协议</text>
<text></text>
<text class="file" @click="getFile(2)">隐私政策</text>
</view> -->
<view class="loginPopupButtonBox">
<!-- <view @click="canle"><button class="popup_replenish_button2" size="mini">取消</button></view> -->
<view @click="confirm"><button class="popup_replenish_button" >确认</button></view>
</view>
</view>
</uni-popup>
</view>
</template>
<script>
import api from "@/api/api";
import common from '../../common/common';
export default{
data(){
return{
//验证码倒计时
remainTimes: 60,
//验证码文字
sendCodeHtml: '获取验证码',
//计时器
timer: null,
//手机号
mobile: null,
//验证码
code: null,
//是否同意协议
agreeFlag:false,
}
},
methods:{
getFile(type){
uni.navigateTo({
url:`/components/clause/clause?type=${type}`
})
},
confirm() {
if (!common.mobileNoValid(this.mobile)) {
uni.showToast({
icon: 'none',
title: '手机号格式错误',
duration: 2000
})
return;
}
if (!this.code) {
uni.showToast({
icon: 'none',
title: '请输入验证码',
duration: 2000
})
return;
}
// if(this.agreeFlag == false) {
// uni.showToast({
// title: '请阅读并勾选江苏赢盾财务顾问有限公司服务协议和隐私条款',
// duration: 2000,
// icon: 'none'
// });
// return;
// }
//登录
const params = {
loginType: '3',
mobile: this.mobile,
code: this.code
}
api.loginVerification(params).then((res) => {
if (res['success']) {
uni.setStorageSync('isLogin', '1');
uni.setStorageSync('loginType', 'codelogin');
uni.setStorageSync('cffp_userId', res.data['userId']);
uni.setStorageSync('uni-token', res.data['token']);
//关闭弹窗
this.$refs.loginPopup.close();
uni.$emit('loginUpdate');
//调用父组件函数处理剩余逻辑
this.$emit('confirm');
} else {
uni.showToast({
title: res['message'],
duration: 2000,
icon: 'none'
})
}
})
},
canle(){
this.$refs.loginPopup.close();
this.$emit('canle');
},
open(){
this.$refs.loginPopup.open('bottom');
},
//点击发送验证码
c_sendCode() {
let phoneRs = common.mobileNoValid(this.mobile);
if (this.remainTimes != 60) {
return;
}
if (phoneRs) {
uni.showLoading({
mask: true
});
api.verificationCode({
"mobileNo": this.mobile,
"type": "1",
"source": "cffp"
}).then(res => {
uni.hideLoading();
if (res['success']) {
uni.showToast({
icon: 'none',
title: '发送成功',
duration: 2000
})
this.delayTime();
} else {
uni.showToast({
icon: 'none',
title: res['message'],
duration: 2000
})
}
})
} else {
uni.showToast({
icon: 'none',
title: '手机号格式错误',
duration: 2000
})
}
},
//开启计时器
delayTime() {
this.timer = setInterval(() => {
this.remainTimes--;
this.sendCodeHtml = `${this.remainTimes}(S)`;
if (this.remainTimes <= 0) {
this.sendCodeHtml = '获取验证码';
this.remainTimes = 60;
clearInterval(this.timer);
}
}, 1000);
}
}
}
</script>
<style lang="scss" scoped>
:deep .uni-popup__wrapper{
margin: 0rpx !important;
}
.loginPopupBox {
background-color:#fff;
border-radius: 30rpx 30rpx 0 0;
font-size: 30rpx;
.loginPopupTitle {
padding: 30rpx;
font-weight: bold;
border-bottom: #dfdfdf 1rpx solid;
display: flex;
justify-content: space-between;
align-items: center;
.iconGuanbi{
font-size: 20rpx;
}
}
.loginPopupInput {
padding: 30rpx;
.loginPopupInputLine {
background-color: #eee;
padding: 25rpx;
border-radius: 5px;
}
}
.loginPopupButtonBox {
// display: flex;
// justify-content: space-around;
padding:20rpx 30rpx 30rpx 30rpx;
.popup_replenish_button {
color: #fff;
background-color: rgba(9, 44, 171, 1);
border-radius: 200rpx;
padding:3rpx 0rpx;
font-size: 32rpx;
}
.popup_replenish_button2 {
color: rgba(9, 44, 171, 1);
background-color: #fff;
border: 1rpx solid rgba(9, 44, 171, 1);
border-radius: 200rpx;
padding: 0rpx 50rpx;
font-size: 30rpx;
}
}
.agree {
font-size: 28rpx;
color: #666;
text-align: center;
margin-top: 40rpx;
.file {
color: #20279B;
text-decoration: none;
}
}
}
</style>
\ No newline at end of file
<template>
<!-- 登录弹窗 -->
<view>
<uni-popup ref="verifyPopup" :mask-click="false">
<view class="loginPopupBox" style="text-align: center;width: 570rpx;padding-top: 50rpx;">
<view class="loginPopupTitle">
{{title}}
</view>
<view class="loginPopupContent">
{{content}}
</view>
<view class="loginPopupButtonBox">
<view @click="canle"><button class="popup_replenish_button2" size="mini">取消</button>
</view>
<view @click="confirm"><button class="popup_replenish_button" size="mini">确认</button>
</view>
</view>
</view>
</uni-popup>
</view>
</template>
<script>
import api from "@/api/api";
import common from '../../common/common';
export default{
props:{
title: {
type: String
},
content: {
type: String
},
},
data(){
return{
}
},
methods:{
confirm() {
this.$emit('confirm');
},
canle(){
this.$refs.verifyPopup.close();
this.$emit('canle');
},
open(){
this.$refs.verifyPopup.open();
},
}
}
</script>
<style lang="scss">
.loginPopupBox {
margin-top: 5vh;
padding: 25rpx 30rpx;
border-radius: 20rpx;
font-size: 30rpx;
background: #fff;
.loginPopupTitle {
font-weight: bold;
}
.loginPopupContent{
color: #20269B;
margin-top: 40rpx;
font-size: 28rpx;
}
.loginPopupButtonBox {
display: flex;
justify-content: space-around;
margin: 60rpx 0 10rpx 0;
.popup_replenish_button {
color: #fff;
background-color: rgba(9, 44, 171, 1);
border-radius: 200rpx;
padding: 0rpx 50rpx;
font-size: 30rpx;
}
.popup_replenish_button2 {
color: rgba(9, 44, 171, 1);
background-color: #fff;
border: 1rpx solid rgba(9, 44, 171, 1);
border-radius: 200rpx;
padding: 0rpx 50rpx;
font-size: 30rpx;
}
}
}
</style>
\ No newline at end of file
...@@ -87,10 +87,10 @@ ...@@ -87,10 +87,10 @@
}, },
onReady() { onReady() {
setTimeout(() => { setTimeout(() => {
console.log('----演示动态更新参数-----'); //console.log('----演示动态更新参数-----');
this.$refs.lsjUpload.setData('formData.orderId', '动态设置的参数'); this.$refs.lsjUpload.setData('formData.orderId', '动态设置的参数');
console.log('以下注释内容为-动态更新参数更多演示,放开后可查看演示效果'); //console.log('以下注释内容为-动态更新参数更多演示,放开后可查看演示效果');
// 修改option对象的name属性 // 修改option对象的name属性
// this.$refs.lsjUpload.setData('name','myFile'); // this.$refs.lsjUpload.setData('name','myFile');
...@@ -131,7 +131,7 @@ ...@@ -131,7 +131,7 @@
// 某文件上传结束回调(成功失败都回调) // 某文件上传结束回调(成功失败都回调)
onuploadEnd(item) { onuploadEnd(item) {
uni.hideLoading(); uni.hideLoading();
console.log(`${item.name}已上传结束,上传状态=${item.type}`); //console.log(`${item.name}已上传结束,上传状态=${item.type}`);
// 更新当前状态变化的文件 // 更新当前状态变化的文件
// this.files.set(item.name, item); // this.files.set(item.name, item);
......
<template> <template>
<web-view :src="url"></web-view>
<web-view :src="url" ></web-view>
</template> </template>
<script> <script>
...@@ -11,11 +13,14 @@ export default { ...@@ -11,11 +13,14 @@ export default {
}, },
onLoad(item) { onLoad(item) {
this.url = decodeURIComponent(item.url) this.url = decodeURIComponent(item.url)
console.log(this.url)
// 传入需要跳转的链接 使用web-view标签进行跳转 // 传入需要跳转的链接 使用web-view标签进行跳转
} }
} }
</script> </script>
<style lang="scss"> <style lang="scss" scoped>
.box{
width: 100%;
height: auto;
}
</style> </style>
\ No newline at end of file
const dev = { const dev = {
// base_url:'https://mstage.zuihuibi.cn',
// api_url:'https://mstage.zuihuibi.cn/cffpApi',
// cffp_url:'https://mstage.zuihuibi.cn/cffpApi/cffp',
// share_url:'https://mstage.zuihuibi.cn/cffp',
base_url:'https://mdev.anjibao.cn', base_url:'https://mdev.anjibao.cn',
api_url:'https://mdev.anjibao.cn/cffpApi', api_url:'https://mdev.anjibao.cn/cffpApi',
cffp_url:'https://mdev.anjibao.cn/cffpApi/cffp' cffp_url:'https://mdev.anjibao.cn/cffpApi/cffp',
share_url:'https://mdev.anjibao.cn/cffp',
} }
const stage = { const stage = {
base_url:'https://mstage.zuihuibi.cn', base_url:'https://mstage.zuihuibi.cn',
api_url:'https://mstage.zuihuibi.cn/cffpApi', api_url:'https://mstage.zuihuibi.cn/cffpApi',
cffp_url:'https://mstage.zuihuibi.cn/cffpApi/cffp' cffp_url:'https://mstage.zuihuibi.cn/cffpApi/cffp',
share_url:'https://mstage.zuihuibi.cn/cffp',
} }
const prod = { const prod = {
base_url:'https://m.cffp.org.cn', base_url:'https://app.ydhomeoffice.cn',
api_url:'https://m.cffp.org.cn/api', api_url:'https://app.ydhomeoffice.cn/appApi',
cffp_url:'https://m.cffp.org.cn/api/cffp' cffp_url:'https://app.ydhomeoffice.cn/appApi/cffp',
share_url:'https://app.ydhomeoffice.cn/appYdhomeoffice',
}
// companyType: '1', cffp
// companyType: '2', appYdhomeoffice
let companyInfo = {
// companyType: '1',
// appName: 'CFFP财富中心',
// companyName: '赢盾财务顾问',
// companyFullName: '江苏赢盾财务顾问有限公司',
// companyLogo:'../../static/cffp_logo.png',
companyType: '2',
appName: '银盾家办',
companyName: '银盾家办',
companyFullName: '银盾家办(广州)企业管理咨询有限公司',
companyLogo:'../../static/yd_Logo.png',
systemType: 'NoIOS'
} }
const config = { const config = {
dev, dev,
stage, stage,
prod prod
} }
let env = 'prod'; let env = 'dev';
// if (process.env.NODE_ENV === 'development') {
// env = 'dev';
// }else if (process.env.NODE_ENV === 'production') {
// env = 'prod';
// }else if (process.env.NODE_ENV === 'uat'){
// env = 'stage';
// }
let baseURL = config[env].base_url; let baseURL = config[env].base_url;
let apiURL = config[env].api_url; let apiURL = config[env].api_url;
let cffpURL = config[env].cffp_url; let cffpURL = config[env].cffp_url;
let shareURL = config[env].share_url;
export{ export{
baseURL, baseURL,
apiURL, apiURL,
cffpURL cffpURL,
companyInfo,
shareURL
} }
\ No newline at end of file
...@@ -57,7 +57,7 @@ ...@@ -57,7 +57,7 @@
_this.option = JSON.parse(option); _this.option = JSON.parse(option);
}catch(e){ }catch(e){
console.error('参数设置错误'); console.error('参数设置错误');
console.error(e); //console.error(e);
} }
}, },
async upload(name=''){ async upload(name=''){
...@@ -87,7 +87,7 @@ ...@@ -87,7 +87,7 @@
this.toast(`不支持上传${suffix.toUpperCase()}格式文件`); this.toast(`不支持上传${suffix.toUpperCase()}格式文件`);
return; return;
} }
console.log('this.size',this.prohibited.size); //console.log('this.size',this.prohibited.size);
// 限制文件大小 // 限制文件大小
if (file.size > 1024 * 1024 * Math.abs(this.prohibited.size)) { if (file.size > 1024 * 1024 * Math.abs(this.prohibited.size)) {
this.toast(`附件大小请勿超过${this.prohibited.size}M`) this.toast(`附件大小请勿超过${this.prohibited.size}M`)
...@@ -144,7 +144,7 @@ ...@@ -144,7 +144,7 @@
); );
xmlRequest.ontimeout = () => { xmlRequest.ontimeout = () => {
console.error('请求超时') //console.error('请求超时')
item.type = 'fail'; item.type = 'fail';
this.changeFilesItem(item,true); this.changeFilesItem(item,true);
return resolve(false); return resolve(false);
...@@ -161,7 +161,7 @@ ...@@ -161,7 +161,7 @@
} else if (xmlRequest.status == 0) { } else if (xmlRequest.status == 0) {
console.error('status = 0 :请检查请求头Content-Type与服务端是否匹配,服务端已正确开启跨域,并且nginx未拦截阻止请求') console.error('status = 0 :请检查请求头Content-Type与服务端是否匹配,服务端已正确开启跨域,并且nginx未拦截阻止请求')
} }
console.error('--ERROR--:status = ' + xmlRequest.status) //console.error('--ERROR--:status = ' + xmlRequest.status)
item.type = 'fail'; item.type = 'fail';
this.changeFilesItem(item,true); this.changeFilesItem(item,true);
return resolve(false); return resolve(false);
......
...@@ -9,9 +9,10 @@ ...@@ -9,9 +9,10 @@
'<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + '<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
(coverSupport ? ', viewport-fit=cover' : '') + '" />') (coverSupport ? ', viewport-fit=cover' : '') + '" />')
</script> </script>
<title>CFFP财富中心</title> <title>银盾家办</title>
<link rel="stylesheet" href="./static/font/iconfont.css"> <link rel="stylesheet" href="./static/font/iconfont.css">
<link rel="shortcut icon" href="./static/icon.png"> <link rel="shortcut icon" href="./static/iconLong.png">
<!-- <link rel="shortcut icon" href="./static/icon.png"> -->
<!--preload-links--> <!--preload-links-->
<!--app-context--> <!--app-context-->
<script src="https://res2.wx.qq.com/open/js/jweixin-1.6.0.js"></script> <script src="https://res2.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
......
{ {
"name" : "CFFP财富中心", "name" : "银盾家办",
"appid" : "__UNI__ED34740", "appid" : "__UNI__ED34740",
"description" : "", "description" : "",
"versionCode" : 104, "versionCode" : 200,
"transformPx" : false, "transformPx" : false,
/* 5+App特有相关 */ /* 5+App特有相关 */
"app-plus" : { "app-plus" : {
...@@ -33,28 +33,12 @@ ...@@ -33,28 +33,12 @@
"distribute" : { "distribute" : {
/* android打包配置 */ /* android打包配置 */
"android" : { "android" : {
"permissions" : [ "permissions" : [],
"<uses-feature android:name=\"android.hardware.camera\"/>", //相机
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>", //相机聚焦
"<uses-permission android:name=\"android.permission.CAMERA\"/>", //拍照权限 允许访问摄像头进行拍照
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>", // 使用闪光灯 允许访问闪光灯
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>", //获取网络状态 获取网络信息状态,如当前的网络连接是否有效
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>", //获取WiFi状态 获取当前WiFi接入的状态以及WLAN热点的信息
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>", //改变网络状态 改变网络状态如是否能联网
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>", // 改变WiFi状态 改变WiFi状态
"<uses-permission android:name=\"android.permission.INTERNET\"/>", //访问网络 访问网络连接,可能产生GPRS流量
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>", //挂载文件系统 挂载、反挂载外部文件系统
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>", //读取系统日志 读取系统底层日志
"<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\" tools:node ='remove'/>", //精准的 (GPS) 位置
"<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\" tools:node ='remove'/>", // (基于网络的) 大概位置
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\" tools:node ='remove'/>", //读取电话状态 访问电话状态
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>", //唤醒锁定 允许程序在手机屏幕关闭后后台进程仍然运行
"<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>" //写入外部存储 允许程序写入外部存储,如SD卡上写文件
],
"minSdkVersion" : 21, "minSdkVersion" : 21,
"schemes" : "cffpapp,hbuilder", "schemes" : "cffpapp,hbuilder",
"abiFilters" : [ "armeabi-v7a", "arm64-v8a", "x86" ], "abiFilters" : [ "armeabi-v7a", "arm64-v8a", "x86" ],
"autoSdkPermissions" : false "autoSdkPermissions" : false,
"targetSdkVersion" : 31
}, },
// "abiFilters" : [ "armeabi-v7a", "arm64-v8a", "x86" ] // "abiFilters" : [ "armeabi-v7a", "arm64-v8a", "x86" ]
/* ios打包配置 */ /* ios打包配置 */
...@@ -78,7 +62,7 @@ ...@@ -78,7 +62,7 @@
"sdkConfigs" : { "sdkConfigs" : {
"share" : { "share" : {
"weixin" : { "weixin" : {
"appid" : "wx3ec6ac74a8c074be", "appid" : "wxe8f4dfed6e50237f",
"UniversalLinks" : "https://mapp.cffp.org.cn/app/" "UniversalLinks" : "https://mapp.cffp.org.cn/app/"
} }
}, },
...@@ -89,13 +73,13 @@ ...@@ -89,13 +73,13 @@
}, },
"weixin" : { "weixin" : {
"__platform__" : [ "ios", "android" ], "__platform__" : [ "ios", "android" ],
"appid" : "wx3ec6ac74a8c074be", "appid" : "wxe8f4dfed6e50237f",
"UniversalLinks" : "https://mapp.cffp.org.cn/app/" "UniversalLinks" : "https://mapp.cffp.org.cn/app/"
} }
}, },
"oauth" : { "oauth" : {
"weixin" : { "weixin" : {
"appid" : "wx3ec6ac74a8c074be", "appid" : "wxe8f4dfed6e50237f",
"UniversalLinks" : "https://mapp.cffp.org.cn/app/" "UniversalLinks" : "https://mapp.cffp.org.cn/app/"
} }
}, },
...@@ -212,7 +196,7 @@ ...@@ -212,7 +196,7 @@
} }
}, },
"_spaceID" : "mp-68e17e23-e517-4839-8210-27480303cc51", "_spaceID" : "mp-68e17e23-e517-4839-8210-27480303cc51",
"versionName" : "1.0.1", "versionName" : "2.0.0",
"mp-qq" : { "mp-qq" : {
"setting" : { "setting" : {
"urlCheck" : false "urlCheck" : false
......
...@@ -1762,7 +1762,6 @@ ...@@ -1762,7 +1762,6 @@
}) })
// document.querySelector(id).scrollIntoView({ behavior: "smooth" }) // document.querySelector(id).scrollIntoView({ behavior: "smooth" })
// uni.createSelectorQuery().select(id).boundingClientRect(data => { // uni.createSelectorQuery().select(id).boundingClientRect(data => {
// console.log(data);
// // 调用页面滚动的api // // 调用页面滚动的api
// uni.pageScrollTo({ // uni.pageScrollTo({
// duration: 300, // 滚动动画过渡时间 // duration: 300, // 滚动动画过渡时间
...@@ -1853,6 +1852,7 @@ ...@@ -1853,6 +1852,7 @@
loginPopup.value.close(); loginPopup.value.close();
uni.setStorageSync('cffp_userId', String(res['data']['userId'])); uni.setStorageSync('cffp_userId', String(res['data']['userId']));
uni.setStorageSync('uni-token',res['data']['token']); uni.setStorageSync('uni-token',res['data']['token']);
uni.setStorageSync('loginType', 'codelogin');
userId.value= String(res['data']['userId']); userId.value= String(res['data']['userId']);
powerQuery(); powerQuery();
} else { } else {
......
{ {
"name": "日期区间picker", "name": "验证码输入框",
"version": "1.0.7", "version": "2.0",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {
"dayjs": {
"version": "1.11.13",
"resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz",
"integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg=="
},
"echarts": { "echarts": {
"version": "5.4.1", "version": "5.6.0",
"resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.4.1.tgz",
"integrity": "sha512-9ltS3M2JB0w2EhcYjCdmtrJ+6haZcW6acBolMGIuf01Hql1yrIV01L1aRj7jsaaIULJslEP9Z3vKlEmnJaWJVQ==",
"requires": { "requires": {
"tslib": "2.3.0", "tslib": "2.3.0",
"zrender": "5.4.1" "zrender": "5.6.1"
},
"dependencies": {
"tslib": {
"version": "2.3.0",
"resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz",
"integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
},
"zrender": {
"version": "5.6.1",
"resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.6.1.tgz",
"integrity": "sha512-OFXkDJKcrlx5su2XbzJvj/34Q3m6PvyCZkVPHGYpcCJ52ek4U/ymZyfuV1nKE23AyBJ51E/6Yr0mhZ7xGTO4ag==",
"requires": {
"tslib": "2.3.0"
}
}
} }
}, },
"merge-images": {
"version": "1.2.0",
"resolved": "https://registry.npmmirror.com/merge-images/-/merge-images-1.2.0.tgz",
"integrity": "sha512-hEGvgnTdXr08uzGvEArxRsKpy7WmozM73YaSi4s5IYF4LxrhANpqfHaz9CgBZ5+0+s2NsjPnPdStz3aCc0Yulw=="
},
"nanoid": { "nanoid": {
"version": "4.0.0", "version": "4.0.2"
"resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-4.0.0.tgz",
"integrity": "sha512-IgBP8piMxe/gf73RTQx7hmnhwz0aaEXYakvqZyE302IXW3HyVNhdNGC+O2MwMAVhLEnvXlvKtGbtJf6wvHihCg=="
},
"signature_pad": {
"version": "3.0.0-beta.4",
"resolved": "https://registry.npmmirror.com/signature_pad/-/signature_pad-3.0.0-beta.4.tgz",
"integrity": "sha512-cOf2NhVuTiuNqe2X/ycEmizvCDXk0DoemhsEpnkcGnA4kS5iJYTCqZ9As7tFBbsch45Q1EdX61833+6sjJ8rrw=="
},
"tslib": {
"version": "2.3.0",
"resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz",
"integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
},
"vue-signature-pad": {
"version": "3.0.2",
"resolved": "https://registry.npmmirror.com/vue-signature-pad/-/vue-signature-pad-3.0.2.tgz",
"integrity": "sha512-o25o+lROfCmzASS2+fU8ZV801kV+D4/02zkZ+ez3NKeiUmbxW7kwlUf5oKQkvA+l7Ou9xGsGLsirBLch3jyX8A==",
"requires": {
"merge-images": "^1.1.0",
"signature_pad": "^3.0.0-beta.3"
}
},
"zrender": {
"version": "5.4.1",
"resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.4.1.tgz",
"integrity": "sha512-M4Z05BHWtajY2241EmMPHglDQAJ1UyHQcYsxDNzD9XLSkPDqMq4bB28v9Pb4mvHnVQ0GxyTklZ/69xCFP6RXBA==",
"requires": {
"tslib": "2.3.0"
}
} }
} }
} }
...@@ -13,5 +13,10 @@ ...@@ -13,5 +13,10 @@
"前端组件", "前端组件",
"通用组件" "通用组件"
] ]
},
"dependencies": {
"dayjs": "^1.11.13",
"echarts": "^5.4.1",
"nanoid": "^4.0.0"
} }
} }
\ No newline at end of file
...@@ -2,16 +2,16 @@ ...@@ -2,16 +2,16 @@
<view class="container"> <view class="container">
<view class="top"> <view class="top">
<text class="iconfont icon-youjiantou zuojiantou" @click="goBack()"></text> <text class="iconfont icon-youjiantou zuojiantou" @click="goBack()"></text>
<text>退单详情</text> <text style="font-size: 30rpx;">退单详情</text>
</view> </view>
<view class="returnCountsContainer"> <view class="returnCountsContainer">
<view class="left"> <view class="left">
<h3>{{courseInfoItem.orderStatusName}}</h3> <h3 style="font-size: 40rpx;">{{courseInfoItem.orderStatusName}}</h3>
<text>{{courseInfoItem.refundTime}}</text> <text style="font-size: 26rpx;">{{courseInfoItem.refundTime}}</text>
</view> </view>
<view class="right"> <view class="right">
<h3>{{courseInfoItem.refundAmount}}</h3> <h3>{{courseInfoItem.refundAmount}}</h3>
<text @click="goDetail()">到账说明</text> <text style="font-size: 26rpx;" @click="goDetail()">到账说明</text>
</view> </view>
</view> </view>
<!-- 退款进度 --> <!-- 退款进度 -->
...@@ -60,8 +60,8 @@ ...@@ -60,8 +60,8 @@
<text>退还积分:</text> <text>退还积分:</text>
<text>{{courseInfoItem.refundIntegralExchange}}</text> <text>{{courseInfoItem.refundIntegralExchange}}</text>
</view> </view>
<view> <view v-if="courseInfoItem.orderRemark">
<text>退款原因:</text> <text >退款原因:</text>
<text>{{courseInfoItem.orderRemark}}</text> <text>{{courseInfoItem.orderRemark}}</text>
</view> </view>
</view> </view>
...@@ -139,7 +139,7 @@ ...@@ -139,7 +139,7 @@
} }
</script> </script>
<style lang="scss"> <style lang="scss" scoped>
.container{ .container{
height:100%; height:100%;
.top{ .top{
...@@ -246,7 +246,7 @@ ...@@ -246,7 +246,7 @@
display: flex; display: flex;
flex-direction: column; flex-direction: column;
margin-bottom: 20rpx; margin-bottom: 20rpx;
steps__column-title { .steps__column-title {
font-size: 30rpx; font-size: 30rpx;
color: #333; color: #333;
margin-bottom: 10rpx; margin-bottom: 10rpx;
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<view class="container"> <view class="container">
<view class="top"> <view class="top">
<text class="iconfont icon-youjiantou zuojiantou" @click="goBack()"></text> <text class="iconfont icon-youjiantou zuojiantou" @click="goBack()"></text>
<text>我的售后</text> <text style="font-size: 30rpx;">我的售后</text>
</view> </view>
<h4 class="noListTip" v-if="userCourses.length <=0 ">暂无售后</h4> <h4 class="noListTip" v-if="userCourses.length <=0 ">暂无售后</h4>
<view class="ulBox" v-if="userCourses.length > 0"> <view class="ulBox" v-if="userCourses.length > 0">
...@@ -49,7 +49,6 @@ ...@@ -49,7 +49,6 @@
} }
api.userAfterSales(param).then(res=>{ api.userAfterSales(param).then(res=>{
if(res['success']){ if(res['success']){
console.log(res);
this.userCourses = res['data']['userCourses'] this.userCourses = res['data']['userCourses']
} }
}) })
...@@ -61,7 +60,7 @@ ...@@ -61,7 +60,7 @@
} }
</script> </script>
<style lang="scss"> <style lang="scss" scoped>
.container{ .container{
height: 100%; height: 100%;
.top{ .top{
......
...@@ -13,10 +13,9 @@ ...@@ -13,10 +13,9 @@
<text class="date">{{item.announcementAt}}</text> <text class="date">{{item.announcementAt}}</text>
<!-- <text class="readed dot"></text>s --> <!-- <text class="readed dot"></text>s -->
</view> </view>
<view class="announcement_des"> <!-- <view class="announcement_des">
{{matchReg(item.content).substring(0,15)}}... {{matchReg(item.content).substring(0,15)}}...
<!-- <rich-text :nodes="item.content"></rich-text> --> </view> -->
</view>
</view> </view>
<view class="to_detail" @click="goToDetail(item.id)"> <view class="to_detail" @click="goToDetail(item.id)">
<view>查看详情</view> <view>查看详情</view>
...@@ -44,10 +43,12 @@ ...@@ -44,10 +43,12 @@
api.announcementQuery({announcementTypeId:686}).then(res => { api.announcementQuery({announcementTypeId:686}).then(res => {
if (res['success']) { if (res['success']) {
this.announcementLists = res['data']['announcementInfoList']; this.announcementLists = res['data']['announcementInfoList'];
console.log('this.announcementLis',this.announcementLis);
} }
}); });
}, },
matchReg(str){ matchReg(str){
console.log('str',str);
let reg=/<\/?.+?\/?>/g; let reg=/<\/?.+?\/?>/g;
return str.replace(reg,''); return str.replace(reg,'');
}, },
...@@ -66,7 +67,7 @@ ...@@ -66,7 +67,7 @@
</script> </script>
<style lang="scss"> <style lang="scss" scoped>
.top{ .top{
display: flex; display: flex;
height: 80rpx; height: 80rpx;
...@@ -107,6 +108,7 @@ ...@@ -107,6 +108,7 @@
.announcement_title{ .announcement_title{
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center;
margin-bottom: 20rpx; margin-bottom: 20rpx;
padding-top: 20rpx; padding-top: 20rpx;
.title{ .title{
......
...@@ -20,6 +20,8 @@ ...@@ -20,6 +20,8 @@
<script> <script>
import api from "../../api/api"; import api from "../../api/api";
import common from '../../common/common'; import common from '../../common/common';
import {hshare} from '@/util/fiveshare';
import {shareURL} from "@/environments/environment";
export default{ export default{
data(){ data(){
return{ return{
...@@ -43,6 +45,7 @@ ...@@ -43,6 +45,7 @@
api.announcementQuery({id:this.id}).then((res)=>{ api.announcementQuery({id:this.id}).then((res)=>{
if(res['success']){ if(res['success']){
this.announcementInfo = res['data']['announcementInfoList'][0]; this.announcementInfo = res['data']['announcementInfoList'][0];
} }
}) })
}, },
...@@ -54,12 +57,40 @@ ...@@ -54,12 +57,40 @@
uni.navigateTo({ uni.navigateTo({
url:'../announcement/announcement' url:'../announcement/announcement'
}) })
} },
getshareData2(shareCode,jumptime,type=1) {
let newLink = shareURL + "/pages/announcement/announcement_detail?id=" + this.id
console.log('this.courseInfo',this.courseInfo);
let data = {
title: this.announcementInfo.title,
// desc: '加入我们开启学习之旅',
// desc:this.courseInfo.fileSynopsis,
link: newLink, //分享链接
imgUrl: this.courseInfo.displayImage, //图片
}
//安卓机型获取当前页面路径
let url = window.location.href.split('#')[0];
//ios机型获取当前页面路径
let ua = navigator.userAgent.toLowerCase();
let isWeixin = ua.indexOf('micromessenger') !== -1;
if (isWeixin) {
let isiOS = /(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent); //ios终端
if (isiOS && window.sessionStorage.getItem('firstEntryUrl')) {
url = window.sessionStorage.getItem('firstEntryUrl').split('#')[0];
}
}
// let url = window.location.href.split('#')[0]
hshare(data, url)
},
} }
} }
</script> </script>
<style lang="scss"> <style lang="scss" scoped>
.top{ .top{
display: flex; display: flex;
height: 80rpx; height: 80rpx;
......
...@@ -13,13 +13,16 @@ ...@@ -13,13 +13,16 @@
<text class="line line_pass"></text> <text class="line line_pass"></text>
<text class="num actived pass">6</text> <text class="num actived pass">6</text>
<text class="line line_pass"></text> <text class="line line_pass"></text>
<text class="num actived pass">7</text> <text class="num actived pass">7</text>
<text class="line line_pass"></text> <!-- <text class="line line_pass"></text>
<text class="num actived pass">8</text> <text class="num actived pass">8</text> -->
</view> </view>
<view class="wrapper"> <view class="wrapper">
<view class="iconfont icon-gou"></view> <view class="iconfont icon-gou"></view>
<h4>{{approvalStatus==3?'审批通过':'您已提交成功'}}</h4> <h4>{{approvalStatus==3?'审批通过':'您已提交成功'}}</h4>
<view class="result" v-if="this.partnerLevel=='P1' && approvalStatus==3">
欢迎您加入{{companyName}}
</view>
<view class="result" v-if="this.partnerLevel=='A1' && approvalStatus==3"> <view class="result" v-if="this.partnerLevel=='A1' && approvalStatus==3">
恭喜您成为 {{areaName}} 事业伙伴! 恭喜您成为 {{areaName}} 事业伙伴!
</view> </view>
...@@ -30,12 +33,15 @@ ...@@ -30,12 +33,15 @@
欢迎您加入{{areaName}} 欢迎您加入{{areaName}}
</view> </view>
<view class=""> <view class="">
<view class="" style="text-align: center;color: #20269B;" v-if="isH5"> <view class="home" @click="toHome()">
返回首页,开启新的篇章 >
</view>
<!-- <view class="" style="text-align: center;color: #20269B;" v-if="isH5">
<text>请前往应用商店下载App</text> <text>请前往应用商店下载App</text>
</view> </view>
<view class="home" v-else @click="toHome()"> <view class="home" v-else @click="toHome()">
返回首页 > 返回首页,开启新的篇章 >
</view> </view> -->
</view> </view>
</view> </view>
</view> </view>
...@@ -43,9 +49,11 @@ ...@@ -43,9 +49,11 @@
<script> <script>
import api from '@/api/api'; import api from '@/api/api';
import {companyInfo} from "@/environments/environment";
export default{ export default{
data(){ data(){
return { return {
companyName: companyInfo.companyName,
partnerLevel:null, partnerLevel:null,
areaName:null, areaName:null,
approvalStatus:null, approvalStatus:null,
...@@ -78,7 +86,6 @@ ...@@ -78,7 +86,6 @@
id: id, id: id,
userId: userId userId: userId
}).then((res) => { }).then((res) => {
console.log(res)
if (res['success']) { if (res['success']) {
// this.applyParam = res['data']['data']; // this.applyParam = res['data']['data'];
this.approvalStatus = res.data.data.approvalStatus this.approvalStatus = res.data.data.approvalStatus
...@@ -97,10 +104,16 @@ ...@@ -97,10 +104,16 @@
</script> </script>
<style lang="scss"> <style lang="scss" scoped>
@import 'applyCommon.scss'; @import 'applyCommon.scss';
.container{
display: flex;
flex-direction: column;
}
.wrapper{ .wrapper{
flex: 1;
padding-top: 40rpx; padding-top: 40rpx;
background-color: #fff !important;
.icon-gou{ .icon-gou{
color: #78c06e; color: #78c06e;
font-size: 200rpx; font-size: 200rpx;
......
<template> <template>
<view class="container"> <view class="container" style="height: 1000rpx;">
<view class="top"> <view >
<text class="iconfont icon-youjiantou zuojiantou" @click="goBack()"></text> <view class="top">
<text>申请加盟</text> <text class="iconfont icon-youjiantou zuojiantou" @click="goBack()"></text>
</view> <text>申请加盟</text>
<view class="page"> </view>
<text class="num actived pass">1</text> <view class="page">
<text class="line line_pass"></text> <text class="num actived pass">1</text>
<text class="num actived pass">2</text> <text class="line line_pass"></text>
<text class="line line_pass"></text> <text class="num actived pass">2</text>
<text class="num actived pass">3</text> <text class="line line_pass"></text>
<text class="line line_pass"></text> <text class="num actived">3</text>
<text class="num actived pass">4</text> <text class="line"></text>
<text class="line line_pass"></text> <text class="num">4</text>
<text class="num actived">5</text> <text class="line"></text>
<text class="line"></text> <text class="num">5</text>
<text class="num">6</text> <text class="line"></text>
<text class="line"></text> <text class="num">6</text>
<text class="num">7</text> <text class="line"></text>
<text class="line"></text> <text class="num">7</text>
<text class="num">8</text> <!-- <text class="line"></text>
<text class="num">8</text> -->
</view>
</view> </view>
<view class="wrapper"> <view class="wrapper">
<view class="title"> <view class="title">
<view> <view>
<text class="line"></text>银行卡号 <text class="line"></text>银行卡号
</view> </view>
<text class="page_mark">5/8</text> <text class="page_mark">3/7</text>
</view> </view>
<view class="content"> <view class="content">
<view class="contentDetail employ"> <view class="contentDetail employ">
<view class="contentItem"> <view class="contentItem yinhang">
<text>开户行</text> <text><text class="requireCode">*</text>开户行</text>
<input class="form-control" name="" placeholder="请输入开户行" v-model="backForm.bankAccountOpening"
<view class="searchInput" >
<searchInput
ref="searchInput"
v-if="bankList.length>0"
:allData="bankList"
@select="onSelect"
:isClick="this.backForm.approvalStatus!= 0 && this.backForm.approvalStatus != 2"
:nowBank="this.backForm.bankAccountOpening"
/>
</view>
</view>
<view class="contentItem" v-if="showBank">
<text></text>
<input
class="form-control"
placeholder="请输入开户行名称"
v-model="backForm.bankAccountOpening"
auto-blur=true
:disabled="this.backForm.approvalStatus!= 0 && this.backForm.approvalStatus != 2" /> :disabled="this.backForm.approvalStatus!= 0 && this.backForm.approvalStatus != 2" />
</view> </view>
<view class="contentItem"> <view class="contentItem">
<text>银行卡号</text> <text><text class="requireCode">*</text>银行卡号</text>
<input class="form-control" placeholder="请输入银行卡号" type="number" maxlength="19" <input class="form-control" placeholder="请输入银行卡号" type="number" maxlength="19"
v-model="backForm.bankAccountId" auto-blur=true @blur="checkInput(backForm.bankAccountId)" v-model="backForm.bankAccountId" auto-blur=true @blur="checkInput(backForm.bankAccountId)"
:disabled="this.backForm.approvalStatus!= 0 && this.backForm.approvalStatus != 2" /> :disabled="this.backForm.approvalStatus!= 0 && this.backForm.approvalStatus != 2" />
</view> </view>
<view class="contentItem"> <view class="contentItem">
<text>确认卡号</text> <text><text class="requireCode">*</text>确认卡号</text>
<input class="form-control" placeholder="请再次确认卡号" type="number" v-model="sureBankAccountId" <input class="form-control" placeholder="请再次确认卡号" type="number" v-model="sureBankAccountId"
maxlength="19" auto-blur=true @blur="checkInput(sureBankAccountId)" maxlength="19" auto-blur=true @blur="checkInput(sureBankAccountId)"
:disabled="this.backForm.approvalStatus!= 0 && this.backForm.approvalStatus != 2" /> :disabled="this.backForm.approvalStatus!= 0 && this.backForm.approvalStatus != 2" />
...@@ -58,12 +79,16 @@ ...@@ -58,12 +79,16 @@
<script> <script>
import api from '@/api/api'; import api from '@/api/api';
import searchInput from '@/components/searchInput/searchInput.vue';
import validate from '@/util/validate.js';
export default { export default {
data() { data() {
return { return {
showBank:false,
shareId: null, shareId: null,
sureBankAccountId: '', sureBankAccountId: '',
applyParam: {}, applyParam: {},
bankList:[],
backForm: { backForm: {
bankAccountOpening: '', bankAccountOpening: '',
bankAccountId: '', bankAccountId: '',
...@@ -71,9 +96,10 @@ ...@@ -71,9 +96,10 @@
} }
} }
}, },
components: {}, components: { searchInput },
onLoad(options) { onLoad(options) {
this.shareId = options.shareId this.shareId = options.shareId
}, },
onShow() { onShow() {
uni.showLoading({ uni.showLoading({
...@@ -91,6 +117,16 @@ ...@@ -91,6 +117,16 @@
} }
}, },
methods: { methods: {
onSelect(item){
if(item.id == '1'){
this.showBank = true
}else {
this.showBank = false
}
this.backForm.bankAccountOpening = item.bankName
},
goBack() { goBack() {
uni.navigateBack({ uni.navigateBack({
delta: 1 delta: 1
...@@ -101,7 +137,6 @@ ...@@ -101,7 +137,6 @@
id: id, id: id,
userId: userId userId: userId
}).then((res) => { }).then((res) => {
console.log(res)
if (res['success']) { if (res['success']) {
this.applyParam = res['data']['data']; this.applyParam = res['data']['data'];
if (uni.getStorageSync('backForm')) { if (uni.getStorageSync('backForm')) {
...@@ -117,31 +152,82 @@ ...@@ -117,31 +152,82 @@
this.sureBankAccountId = ''; this.sureBankAccountId = '';
} }
} }
this.bankQry();
uni.hideLoading() uni.hideLoading()
}) })
}, },
bankQry(id, userId) {
api.bankQry({
insurerId: '888',
userId: userId
}).then((res) => {
if (res['success']) {
this.bankList= res['data']['bankList'];
if(this.bankList.length>0){
this.bankList.forEach(item=>{
item.label = item.bankName
item.id = item.bankId
})
//兼容以前的旧数据,以前开户行有值并且不在银行列表里通通显示自定义
if(this.backForm.bankAccountOpening && this.bankList.filter(item=>item.bankName==this.backForm.bankAccountOpening).length<=0) {
this.bankList.unshift({label:'自定义',id:'1',show:true})
this.showBank = true
}else {
this.showBank = false
this.bankList.unshift({label:'自定义',id:'1',show:false})
}
}
}
})
},
//去除输入空格 //去除输入空格
checkInput(str) { checkInput(str) {
if(!str) return
str = str.replace(/\s*/g, ""); str = str.replace(/\s*/g, "");
}, },
saveInfo() { saveInfo() {
this.$refs.searchInput.showDropdown = false
uni.showLoading({ uni.showLoading({
title: '加载中...' title: '加载中...'
}); });
if (this.backForm.bankAccountId == '' || this.sureBankAccountId == '' || this.backForm
.bankAccountOpening == '') {
uni.showToast({
title: '银行卡号与开户行不能为空',
duration: 2000,
icon: 'none'
})
return;
}
if (this.backForm.approvalStatus == 0 || this.backForm.approvalStatus == 2) { if (this.backForm.approvalStatus == 0 || this.backForm.approvalStatus == 2) {
if (this.backForm.bankAccountId || this.sureBankAccountId) { if(!this.backForm.bankAccountOpening){
uni.showToast({
title: '开户行不能为空',
duration: 2000,
icon: 'none'
})
return;
}
if(!this.backForm.bankAccountId ){
uni.showToast({
title: '银行卡号不能为空',
duration: 2000,
icon: 'none'
})
return;
}
if(!this.sureBankAccountId ){
uni.showToast({
title: '确认卡号不能为空',
duration: 2000,
icon: 'none'
})
return;
}
// if (this.backForm.bankAccountId == '' || this.sureBankAccountId == '' || this.backForm
// .bankAccountOpening == '') {
// uni.showToast({
// title: '银行卡号与开户行不能为空',
// duration: 2000,
// icon: 'none'
// })
// return;
// }
if (this.backForm.bankAccountId && this.sureBankAccountId) {
if (Number(this.backForm.bankAccountId) != Number(this.sureBankAccountId)) { if (Number(this.backForm.bankAccountId) != Number(this.sureBankAccountId)) {
alert('卡号',this.backForm.bankAccountId)
alert('确认卡号',this.sureBankAccountId)
uni.showToast({ uni.showToast({
title: '两次银行卡号不一致,请重新输入', title: '两次银行卡号不一致,请重新输入',
duration: 2000, duration: 2000,
...@@ -150,14 +236,26 @@ ...@@ -150,14 +236,26 @@
return; return;
} }
} }
let obj = validate.validateBankCard(this.backForm.bankAccountId)
if(!obj.flag){
uni.showToast({
title: obj.msg,
duration: 2000,
icon: 'none'
})
return
}
uni.setStorageSync('backForm', this.backForm) uni.setStorageSync('backForm', this.backForm)
this.applyParam.bankAccountOpening = this.backForm.bankAccountOpening this.applyParam.bankAccountOpening = this.backForm.bankAccountOpening
this.applyParam.bankAccountId = this.backForm.bankAccountId this.applyParam.bankAccountId = this.backForm.bankAccountId
this.applyParam.approvalStatus = this.backForm.approvalStatus this.applyParam.approvalStatus = this.backForm.approvalStatus
this.applyParam = { this.applyParam = {
...this.applyParam, ...this.applyParam,
operatStep: 5, operatStep: 5,
} }
api.saveApplyInfo(this.applyParam).then((res) => { api.saveApplyInfo(this.applyParam).then((res) => {
if (res['success']) { if (res['success']) {
uni.navigateTo({ uni.navigateTo({
...@@ -176,6 +274,10 @@ ...@@ -176,6 +274,10 @@
}) })
} else { } else {
uni.hideLoading() uni.hideLoading()
// uni.navigateTo({
// // url:`personal-statement?id=${res['data']['id']}`
// url: `personal-statement`
// });
uni.navigateTo({ uni.navigateTo({
// url:`personal-statement?id=${res['data']['id']}` // url:`personal-statement?id=${res['data']['id']}`
url: `personal-statement` url: `personal-statement`
...@@ -186,10 +288,27 @@ ...@@ -186,10 +288,27 @@
} }
</script> </script>
<style lang="scss"> <style lang="scss" scoped>
@import 'applyCommon.scss'; @import 'applyCommon.scss';
.container{
display: flex;
flex-direction: column;
// height: 100%;
.wrapper{
flex: 1;
}
.requireCode{
color: red;
}
}
.form-control { .form-control {
min-width: 440rpx; min-width: 440rpx;
} }
.yinhang{
.searchInput{
width: 80%;
}
}
</style> </style>
...@@ -13,24 +13,22 @@ ...@@ -13,24 +13,22 @@
<text class="line line_pass"></text> <text class="line line_pass"></text>
<text class="num actived pass">4</text> <text class="num actived pass">4</text>
<text class="line line_pass"></text> <text class="line line_pass"></text>
<text class="num actived pass">5</text> <text class="num actived">5</text>
<text class="line line_pass"></text>
<text class="num actived pass">6</text>
<text class="line line_pass"></text>
<text class="num actived">7</text>
<text class="line"></text> <text class="line"></text>
<text class="num">8</text> <text class="num">6</text>
<text class="line"></text>
<text class="num">7</text>
</view> </view>
<view class="wrapper"> <view class="wrapper">
<view class="title"> <view class="title">
<view> <view>
<text class="line"></text>合同文档确认 <text class="line"></text>合同文档确认
</view> </view>
<text class="page_mark">7/8</text> <text class="page_mark">5/7</text>
</view> </view>
<view class="content"> <view class="content">
<view class="ulBox"> <view class="ulBox">
<view class="liBox" v-for="contractItem in contractTermsList" @click="readContract(contractItem)"> <view class="liBox" v-for="(contractItem,index) in contractTermsList" :key="index" @click="readContract(contractItem)">
<text class="iconfont icon-yuanxingweixuanzhong" v-if="!contractItem.confirmStatus"></text> <text class="iconfont icon-yuanxingweixuanzhong" v-if="!contractItem.confirmStatus"></text>
<text class="iconfont icon-selected-copy" v-if="contractItem.confirmStatus"></text> <text class="iconfont icon-selected-copy" v-if="contractItem.confirmStatus"></text>
<text class="itemName"> {{contractItem.termName}}</text> <text class="itemName"> {{contractItem.termName}}</text>
...@@ -48,16 +46,12 @@ ...@@ -48,16 +46,12 @@
<view class="title"> <view class="title">
{{curTitle}} {{curTitle}}
</view> </view>
<scroll-view scroll-y style="height: 100%;"> <scroll-view scroll-y style="height:70vh" class="scrollBox">
<view class="contract" v-html="curContract"></view> <view class="contract" v-html="curContract"></view>
<!-- <view :class="nineTime == false?'agree':'gree'" @click="agree(curContractId)"> <!-- :style="btnStyle" -->
<text>同意</text>
<text style="margin-left: 10rpx;" v-if="nineTime">({{remainTimes}}s)</text>
</view> -->
<view class="agree" @click="agree(curContractId)" >同意</view> <view class="agree" @click="agree(curContractId)" >同意</view>
</scroll-view> </scroll-view>
</view> </view>
</template> </template>
...@@ -106,6 +100,11 @@ ...@@ -106,6 +100,11 @@
} }
}, 500) }, 500)
}, },
computed: {
btnStyle(){
return this.curContractId =='16'?'position: fixed;bottom: 0;':null
}
},
methods: { methods: {
goBack() { goBack() {
uni.navigateBack({ uni.navigateBack({
...@@ -114,10 +113,9 @@ ...@@ -114,10 +113,9 @@
}, },
getContractList() { getContractList() {
api.listQuery({ api.listQuery({
systemType: '1' systemType: '2'
}).then((res) => { }).then((res) => {
this.contractTermsList = res["data"]["contractDtos"]; this.contractTermsList = res["data"]["contractDtos"];
console.log(this.contractTermsList)
}) })
}, },
saveInfo() { saveInfo() {
...@@ -216,7 +214,6 @@ ...@@ -216,7 +214,6 @@
this.contractForm.approvalStatus = this.applyParam.approvalStatus this.contractForm.approvalStatus = this.applyParam.approvalStatus
if (this.contractForm.contractTerms) { if (this.contractForm.contractTerms) {
this.contractTermsConfirmsListParm = this.contractForm.contractTerms.split(','); this.contractTermsConfirmsListParm = this.contractForm.contractTerms.split(',');
console.log(this.contractTermsConfirmsListParm)
for (let i = 0; i < this.contractTermsList.length; i++) { for (let i = 0; i < this.contractTermsList.length; i++) {
for (let j = 0; j < this.contractTermsConfirmsListParm.length; j++) { for (let j = 0; j < this.contractTermsConfirmsListParm.length; j++) {
if (this.contractTermsList[i]['termName'] == this if (this.contractTermsList[i]['termName'] == this
...@@ -237,7 +234,10 @@ ...@@ -237,7 +234,10 @@
<style lang="scss" scoped> <style lang="scss" scoped>
@import 'applyCommon.scss'; @import 'applyCommon.scss';
::v-deep .uni-scroll-view-content{
display: flex;
flex-direction: column;
}
.container { .container {
background-color: #FBFBFB; background-color: #FBFBFB;
} }
...@@ -246,14 +246,15 @@ ...@@ -246,14 +246,15 @@
height: 100%; height: 100%;
background-color: rgba(0, 0, 0, 0.5); background-color: rgba(0, 0, 0, 0.5);
top: 0; top: 0;
width: 100%;
} }
.toast { .toast {
position: fixed; position: fixed;
left: 0; left: 0;
right: 0; right: 0;
min-width: 320px; // min-width: 320px;
max-width: 640px; // max-width: 640px;
width: 100%; width: 100%;
margin: 0 auto; margin: 0 auto;
z-index: 1; z-index: 1;
...@@ -271,18 +272,24 @@ ...@@ -271,18 +272,24 @@
z-index: 2; z-index: 2;
animation: slowUp .5s ease both; animation: slowUp .5s ease both;
overflow: auto; overflow: auto;
.title { .title {
text-align: center; text-align: center;
font-weight: bold; font-weight: bold;
font-size: 16px; font-size: 28rpx;
padding: 10px; padding: 10px;
} }
.scrollBox{
display: flex;
flex-direction: column;
}
.contract { .contract {
// overflow: hidden;
padding: 10px; padding: 10px;
font-size: 20rpx; font-size: 15rpx;
padding-bottom: 50rpx;
flex-grow: 1;
} }
.agree { .agree {
...@@ -294,8 +301,11 @@ ...@@ -294,8 +301,11 @@
color: #fff; color: #fff;
font-size: 20px; font-size: 20px;
font-weight: bold; font-weight: bold;
position: relative; // position: absolute;
bottom: 0; // bottom: 0;
// position: fixed;
// bottom: 0;
} }
.gree { .gree {
width: 100%; width: 100%;
......
...@@ -139,7 +139,6 @@ ...@@ -139,7 +139,6 @@
}, },
educationLevelQuery() { educationLevelQuery() {
api.educationLevelQuery().then((res) => { api.educationLevelQuery().then((res) => {
console.log(res)
if (res['success']) { if (res['success']) {
this.educationLevelList = this.educationLevelList.concat(res['data'][ this.educationLevelList = this.educationLevelList.concat(res['data'][
'educationLevelList' 'educationLevelList'
...@@ -157,7 +156,6 @@ ...@@ -157,7 +156,6 @@
}).then((res) => { }).then((res) => {
if (res['success']) { if (res['success']) {
this.applyParam = res['data']['data']; this.applyParam = res['data']['data'];
console.log(res, 114)
if (uni.getStorageSync('educationForm')) { if (uni.getStorageSync('educationForm')) {
this.educationForm = uni.getStorageSync('educationForm') this.educationForm = uni.getStorageSync('educationForm')
} else { } else {
...@@ -264,7 +262,7 @@ ...@@ -264,7 +262,7 @@
} }
</script> </script>
<style lang="scss"> <style lang="scss" scoped>
@import 'applyCommon.scss'; @import 'applyCommon.scss';
.photo_w { .photo_w {
......
...@@ -7,53 +7,57 @@ ...@@ -7,53 +7,57 @@
<view class="page"> <view class="page">
<text class="num actived pass">1</text> <text class="num actived pass">1</text>
<text class="line line_pass"></text> <text class="line line_pass"></text>
<text class="num actived pass">2</text> <text class="num actived">2</text>
<text class="line line_pass"></text> <text class="line"></text>
<text class="num actived">3</text> <text class="num">3</text>
<text class="line"></text> <text class="line"></text>
<text class="num">4</text> <text class="num">4</text>
<text class="line"></text> <text class="line"></text>
<text class="num">5</text> <text class="num">5</text>
<text class="line"></text> <text class="line"></text>
<text class="num">6</text> <text class="num">6</text>
<text class="line"></text> <text class="line"></text>
<text class="num">7</text> <text class="num">7</text>
<text class="line"></text> <!-- <text class="line"></text>
<text class="num">8</text> <text class="num">8</text> -->
</view> </view>
<view class="wrapper"> <view class="wrapper">
<view class="title"> <view class="title">
<view> <view>
<text class="line"></text>个人证件资料 <text class="line"></text>个人证件资料
</view> </view>
<text class="page_mark">3/8</text> <text class="page_mark">2/7</text>
</view> </view>
<view class="content" style="padding-bottom: 150rpx;"> <view class="content" style="padding-bottom: 150rpx;">
<view class="content_wrapper"> <view class="content_wrapper">
<view class="photo" v-if="!cardForm.idFrontPageOssPath" @click="upLoadPhoto('front')"> <view class="photo" v-if="!cardForm.idFrontPageOssPath" @click="upLoadPhoto('front')">
<image src="../../static/front.png" alt="身份证正面" mode="widthFix"></image> <image v-if="cardForm.idType == '身份证'" src="../../static/front.png" alt="身份证正面" mode="widthFix"></image>
<text class="iconfont icon-weibiaoti553"></text> <text class="iconfont icon-weibiaoti553"></text>
<view class="choseBtn">点击添加身份证正面</view> <view v-if="cardForm.idType == '身份证'" class="choseBtn">点击添加{{cardForm.idType}}正面</view>
<view v-else class="choseBtn">点击添加({{cardForm.idType}})图1</view>
</view> </view>
<!-- <view class="content_w" v-if="cardForm.idFrontPageOssPath"> --> <!-- <view class="content_w" v-if="cardForm.idFrontPageOssPath"> -->
<image class="picImg" v-if="cardForm.idFrontPageOssPath" :src="cardForm.idFrontPageOssPath" @click="upLoadPhoto('front')" mode="widthFix"></image> <image class="picImg" v-if="cardForm.idFrontPageOssPath" :src="cardForm.idFrontPageOssPath" @click="upLoadPhoto('front')" mode="widthFix"></image>
<!-- </view> --> <!-- </view> -->
<view class="tips"> <view class="tips">
<view>(正确示例:身份证正面,字体清晰)</view> <view v-if="cardForm.idType == '身份证'">(正确示例:{{cardForm.idType}}正面,字体清晰)</view>
<view v-else >(正确示例:{{cardForm.idType}}图1,字体清晰)</view>
<view>(jpg,png 文件大小不大于1mb)</view> <view>(jpg,png 文件大小不大于1mb)</view>
</view> </view>
</view> </view>
<view class="content_wrapper" style="margin-top: 25px;"> <view class="content_wrapper" style="margin-top: 25px;">
<view class="photo" v-if="!cardForm.idBackPageOssPath" @click="upLoadPhoto('back')"> <view class="photo" v-if="!cardForm.idBackPageOssPath" @click="upLoadPhoto('back')">
<image src="../../static/back.png" alt="身份证反面" mode="widthFix"></image> <image v-if="cardForm.idType == '身份证'" src="../../static/back.png" alt="身份证反面" mode="widthFix"></image>
<text class="iconfont icon-weibiaoti553"></text> <text class="iconfont icon-weibiaoti553"></text>
<view class="choseBtn">点击添加身份证反面</view> <view v-if="cardForm.idType == '身份证'" class="choseBtn">点击添加{{cardForm.idType}}反面</view>
<view v-else class="choseBtn">点击添加({{cardForm.idType}})图2</view>
</view> </view>
<!-- <view class="content_w" v-if="cardForm.idBackPageOssPath"> --> <!-- <view class="content_w" v-if="cardForm.idBackPageOssPath"> -->
<image class="picImg" v-if="cardForm.idBackPageOssPath" :src="cardForm.idBackPageOssPath" @click="upLoadPhoto('back')" mode="widthFix"></image> <image class="picImg" v-if="cardForm.idBackPageOssPath" :src="cardForm.idBackPageOssPath" @click="upLoadPhoto('back')" mode="widthFix"></image>
<!-- </view> --> <!-- </view> -->
<view class="tips"> <view class="tips">
<view>(正确示例:身份证反面,字体清晰)</view> <view v-if="cardForm.idType == '身份证'">(正确示例:{{cardForm.idType}}反面,字体清晰)</view>
<view v-else >(正确示例:{{cardForm.idType}}图2,字体清晰)</view>
<view>(jpg,png 文件大小不大于1mb)</view> <view>(jpg,png 文件大小不大于1mb)</view>
</view> </view>
</view> </view>
...@@ -143,8 +147,10 @@ ...@@ -143,8 +147,10 @@
} }
this.cardForm.approvalStatus = this.applyParam.approvalStatus this.cardForm.approvalStatus = this.applyParam.approvalStatus
this.cardForm.id = this.applyParam.id this.cardForm.id = this.applyParam.id
this.cardForm.idType = this.applyParam.idType
uni.setStorageSync('cardForm',this.cardForm) uni.setStorageSync('cardForm',this.cardForm)
} }
uni.hideLoading() uni.hideLoading()
}) })
}, },
...@@ -165,7 +171,6 @@ ...@@ -165,7 +171,6 @@
this.cardForm.idBackPageOssPath = res.data.filePath; this.cardForm.idBackPageOssPath = res.data.filePath;
} }
uni.setStorageSync('cardForm',this.cardForm) uni.setStorageSync('cardForm',this.cardForm)
console.log(this.cardForm.idBackPageOssPath, 151515)
}) })
} }
}, },
...@@ -176,7 +181,7 @@ ...@@ -176,7 +181,7 @@
if (this.cardForm.approvalStatus == 0 || this.cardForm.approvalStatus == 2) { if (this.cardForm.approvalStatus == 0 || this.cardForm.approvalStatus == 2) {
if (!this.cardForm.idFrontPageOssPath) { if (!this.cardForm.idFrontPageOssPath) {
uni.showToast({ uni.showToast({
title: '请上传身份证正面照片', title: `请上传${this.cardForm.idType}正面照片`,
duration: 2000, duration: 2000,
icon: 'none' icon: 'none'
}) })
...@@ -184,7 +189,7 @@ ...@@ -184,7 +189,7 @@
} }
if (!this.cardForm.idBackPageOssPath) { if (!this.cardForm.idBackPageOssPath) {
uni.showToast({ uni.showToast({
title: '请上传身份证反面照片', title: `请上传${this.cardForm.idType}反面照片`,
duration: 2000, duration: 2000,
icon: 'none' icon: 'none'
}) })
...@@ -201,9 +206,12 @@ ...@@ -201,9 +206,12 @@
api.saveApplyInfo(this.applyParam).then((res) => { api.saveApplyInfo(this.applyParam).then((res) => {
if (res['success']) { if (res['success']) {
// this.queryById(null, uni.getStorageSync('cffp_userId')) // this.queryById(null, uni.getStorageSync('cffp_userId'))
// uni.navigateTo({
// url: `education`
// });
uni.navigateTo({ uni.navigateTo({
// url:`id-card?id=${res['data']['id']}` // url:`bank-card?id=${res['data']['id']}`
url: `education` url: `bank-card`
}); });
} else { } else {
uni.showToast({ uni.showToast({
...@@ -217,9 +225,11 @@ ...@@ -217,9 +225,11 @@
}) })
} else { } else {
uni.hideLoading() uni.hideLoading()
// uni.navigateTo({
// url: `education`
// });
uni.navigateTo({ uni.navigateTo({
// url:`id-card?id=${res['data']['id']}` url: `bank-card`
url: `education`
}); });
} }
} }
...@@ -227,7 +237,7 @@ ...@@ -227,7 +237,7 @@
} }
</script> </script>
<style lang="scss"> <style lang="scss" scoped>
@import 'applyCommon.scss'; @import 'applyCommon.scss';
.content_wrapper { .content_wrapper {
...@@ -248,6 +258,7 @@ ...@@ -248,6 +258,7 @@
font-size: 12px; font-size: 12px;
color: #333; color: #333;
width: 75%; width: 75%;
height: 400rpx;
background-size: contain; background-size: contain;
background-repeat: no-repeat; background-repeat: no-repeat;
position: relative; position: relative;
......
...@@ -11,22 +11,22 @@ ...@@ -11,22 +11,22 @@
<text class="line line_pass"></text> <text class="line line_pass"></text>
<text class="num actived pass">3</text> <text class="num actived pass">3</text>
<text class="line line_pass"></text> <text class="line line_pass"></text>
<text class="num actived pass">4</text> <text class="num actived actived">4</text>
<text class="line line_pass"></text>
<text class="num actived pass">5</text>
<text class="line line_pass"></text>
<text class="num actived">6</text>
<text class="line"></text> <text class="line"></text>
<text class="num">7</text> <text class="num">5</text>
<text class="line"></text> <text class="line"></text>
<text class="num">8</text> <text class="num">6</text>
<text class="line"></text>
<text class="num">7</text>
<!-- <text class="line"></text>
<text class="num">8</text> -->
</view> </view>
<view class="wrapper"> <view class="wrapper">
<view class="title"> <view class="title">
<view> <view>
<text class="line"></text>个人声明 <text class="line"></text>个人声明
</view> </view>
<text class="page_mark">6/8</text> <text class="page_mark">4/7</text>
</view> </view>
<view class="content"> <view class="content">
<view class="ulBox"> <view class="ulBox">
...@@ -132,17 +132,26 @@ ...@@ -132,17 +132,26 @@
}, },
saveInfo() { saveInfo() {
if (this.personalForm.approvalStatus == 0 || this.personalForm.approvalStatus == 2) { if (this.personalForm.approvalStatus == 0 || this.personalForm.approvalStatus == 2) {
const selectedPersonalStatement = this.dropOptionsInfoList.filter((item) => { let selectedPersonalStatement = []
selectedPersonalStatement = this.dropOptionsInfoList.filter((item) => {
return item.status == 1; return item.status == 1;
}); });
if (!selectedPersonalStatement.length) { if (selectedPersonalStatement.length < this.dropOptionsInfoList.length) {
uni.showToast({ uni.showToast({
title: '请选择至少一项个人声明!', title: '需全部符合条件才可申请加盟',
duration: 2000, duration: 2000,
icon: 'none' icon: 'none'
}) })
return; return;
} }
// if (!selectedPersonalStatement.length) {
// uni.showToast({
// title: '请选择至少一项个人声明!',
// duration: 2000,
// icon: 'none'
// })
// return;
// }
this.personalStatementList = []; this.personalStatementList = [];
for (let i = 0; i < selectedPersonalStatement.length; i++) { for (let i = 0; i < selectedPersonalStatement.length; i++) {
this.personalStatementList.push(selectedPersonalStatement[i]['dropOptionName']); this.personalStatementList.push(selectedPersonalStatement[i]['dropOptionName']);
...@@ -179,7 +188,7 @@ ...@@ -179,7 +188,7 @@
} }
</script> </script>
<style lang="scss"> <style lang="scss" scoped>
@import 'applyCommon.scss'; @import 'applyCommon.scss';
.container { .container {
......
...@@ -16,27 +16,34 @@ ...@@ -16,27 +16,34 @@
<text class="num actived pass">5</text> <text class="num actived pass">5</text>
<text class="line line_pass"></text> <text class="line line_pass"></text>
<text class="num actived pass">6</text> <text class="num actived pass">6</text>
<text class="line line_pass"></text> <text class="line"></text>
<text class="num actived pass">7</text> <text class="num">7</text>
<text class="line line_pass"></text> <!-- <text class="line line_pass"></text>
<text class="num actived">8</text> <text class="num actived">8</text> -->
</view> </view>
<view class="title"> <view class="title">
<view> <view>
<text class="line"></text>电子签名<text style="font-size: 20rpx;font-weight: normal;">(请书写工整,字迹清晰)</text> <text class="line"></text>电子签名<text style="font-size: 20rpx;font-weight: normal;">(请书写工整,字迹清晰)</text>
</view> </view>
<text class="page_mark">8/8</text> <text class="page_mark">6/7</text>
</view> </view>
<!--这里必须用v-show否则打回重新签名时会获取不到dom元素--> <!--这里必须用v-show否则打回重新签名时会获取不到dom元素-->
<view class="signatureContent" v-show="!applyParam.personalSignOssPath"> <view class="signatureContent" v-show="!applyParam.personalSignOssPath">
<e-signature :style="{'width':'100vw','height':'80vh'}" :showCanvas="showCanvas" ref="signatureComponent" @sendImage="getImage" ></e-signature> <!-- :style="{'height':'80vh'}" -->
<e-signature :showCanvas="showCanvas" ref="signatureComponent" @sendImage="getImage" ></e-signature>
<view class="clearBox">
<view class="imgBox" >
<image src="../../static/clear.png" @click="clearImg" mode="widthFix"></image>
</view>
</view>
</view> </view>
<image :src="applyParam.personalSignOssPath" mode="widthFix" v-if="applyParam.personalSignOssPath"></image> <image :src="applyParam.personalSignOssPath" mode="widthFix" v-if="applyParam.personalSignOssPath"></image>
<view class="imgBox" style="margin-top: 20rpx;"> <!-- <view class="imgBox" style="margin-top: 20rpx;">
<image src="../../static/clear.png" @click="clearImg" mode="widthFix"></image> <image src="../../static/clear.png" @click="clearImg" mode="widthFix"></image>
</view> </view> -->
<view class="fixed" url="bank-card" @click="save()"> <view class="fixed" url="bank-card" @click="save()">
{{(this.applyParam.approvalStatus== 0 || this.applyParam.approvalStatus == 2)?'我自愿签订推广人合同书':'下一步'}} {{(this.applyParam.approvalStatus== 0 || this.applyParam.approvalStatus == 2)?'我自愿签订合伙人合同书':'下一步'}}
</view> </view>
</view> </view>
</template> </template>
...@@ -56,12 +63,13 @@ ...@@ -56,12 +63,13 @@
personalSignOssPath:'', personalSignOssPath:'',
approvalStatus:'' approvalStatus:''
} },
touchMoveHandler:null,
isScrollLocked: false // 新增滚动锁定状态
} }
}, },
components:{eSignature}, components:{eSignature},
onLoad(options) { onLoad(options) {
console.log(options, 151515)
this.shareId = options.shareId this.shareId = options.shareId
}, },
onShow() { onShow() {
...@@ -72,10 +80,110 @@ ...@@ -72,10 +80,110 @@
}else{ }else{
this.queryById(null,uni.getStorageSync('cffp_userId')) this.queryById(null,uni.getStorageSync('cffp_userId'))
} }
this.norebound() // this.norebound()
this.lockScroll()
},
beforeDestroy() {
console.log('组件销毁');
this.releaseScroll(); // 确保组件销毁时释放
},
// 页面隐藏时立即解锁
onHide() {
this.releaseScroll();
},
// 页面卸载时强制清理
onUnload() {
this.releaseScroll();
}, },
methods: { methods: {
// // 锁定滚动
// lockScroll() {
// // #ifdef H5
// if (this.touchMoveHandler) return; // 避免重复绑定
// this.touchMoveHandler = (e) => {
// e.preventDefault();
// };
// document.body.addEventListener(
// 'touchmove',
// this.touchMoveHandler,
// { passive: false }
// );
// // #endif
// },
// 锁定滚动 - 修改后的方法
lockScroll() {
if (this.isScrollLocked) return;
// #ifdef H5
// 阻止触摸事件默认行为
this.touchMoveHandler = (e) => {
// 检查触摸事件是否发生在签名区域内
const signatureArea = document.querySelector('.signatureContent');
if (signatureArea && signatureArea.contains(e.target)) {
e.preventDefault();
}
};
document.body.addEventListener('touchmove', this.touchMoveHandler, { passive: false });
// #endif
// 在App端也需要禁用滚动
// #ifdef APP-PLUS
const pages = getCurrentPages();
const page = pages[pages.length - 1];
const webview = page.$getAppWebview();
webview.setStyle({
scrollIndicator: 'none',
scrollsToTop: false,
bounce: 'none'
});
// #endif
this.isScrollLocked = true;
},
// // 释放滚动
// releaseScroll() {
// // #ifdef H5
// if (this.touchMoveHandler) {
// document.body.removeEventListener(
// 'touchmove',
// this.touchMoveHandler
// );
// this.touchMoveHandler = null;
// }
// // #endif
// },
// 释放滚动 - 修改后的方法
releaseScroll() {
if (!this.isScrollLocked) return;
// #ifdef H5
if (this.touchMoveHandler) {
document.body.removeEventListener('touchmove', this.touchMoveHandler);
this.touchMoveHandler = null;
}
// #endif
// 在App端恢复滚动
// #ifdef APP-PLUS
const pages = getCurrentPages();
const page = pages[pages.length - 1];
const webview = page.$getAppWebview();
webview.setStyle({
scrollIndicator: 'auto',
scrollsToTop: true,
bounce: 'vertical'
});
// #endif
this.isScrollLocked = false;
},
goBack() { goBack() {
this.releaseScroll()
uni.navigateBack({ uni.navigateBack({
delta: 1 delta: 1
}); });
...@@ -97,6 +205,7 @@ ...@@ -97,6 +205,7 @@
}else{ }else{
this.$refs.signatureComponent.finish() this.$refs.signatureComponent.finish()
} }
this.releaseScroll()
}, },
clearImg(){ clearImg(){
//0-未提交,1-待审核,2-审核未通过,3-审核通过 //0-未提交,1-待审核,2-审核未通过,3-审核通过
...@@ -117,7 +226,6 @@ ...@@ -117,7 +226,6 @@
}, },
getImage(e){ getImage(e){
api.saveDigitalSignatures({imgStr:e}).then((res)=>{ api.saveDigitalSignatures({imgStr:e}).then((res)=>{
console.log(res)
if(res['success']){ if(res['success']){
// this.applyParam.personalSignOssPath = e; // this.applyParam.personalSignOssPath = e;
this.applyParam.personalSignOssPath = res['data']['filePath']; this.applyParam.personalSignOssPath = res['data']['filePath'];
...@@ -167,15 +275,24 @@ ...@@ -167,15 +275,24 @@
<style lang="scss" scoped> <style lang="scss" scoped>
@import 'applyCommon.scss'; @import 'applyCommon.scss';
// uni-page-wrapper{ .container{
// overflow: hidden!important; background-color: #fff;
// } // 新增样式
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
overflow: hidden;
-webkit-overflow-scrolling: touch;
}
.signatureContent{ .signatureContent{
// padding: 0 36rpx 20rpx 26rpx;
background: #fff; background: #fff;
margin-top: 20rpx; margin-top: 20rpx;
height: 100%; height: auto;
position: relative; position: relative;
// 新增样式
touch-action: none; /* 禁用触摸操作 */
} }
.signature_action{ .signature_action{
display: flex; display: flex;
...@@ -183,11 +300,16 @@ ...@@ -183,11 +300,16 @@
margin-top: 20rpx; margin-top: 20rpx;
uni-image{max-width: 120rpx;max-height: 120rpx;} uni-image{max-width: 120rpx;max-height: 120rpx;}
} }
.imgBox{ .clearBox{
position: absolute; display: flex;
top: 75%; align-items: center;
left: 40%; justify-content: center;
width: 120rpx; .imgBox{
height: 120rpx; display: flex;
align-items: center;
width: 120rpx;
height: 120rpx;
}
} }
</style> </style>
\ No newline at end of file
...@@ -106,8 +106,8 @@ ...@@ -106,8 +106,8 @@
import api from '../../api/api'; import api from '../../api/api';
import { import {
CommonUpload, CommonUpload,
ckbigImg
} from '@/util/uploaderFile'; } from '@/util/uploaderFile';
// ckbigImg
export default { export default {
data() { data() {
return { return {
...@@ -175,7 +175,7 @@ ...@@ -175,7 +175,7 @@
}); });
}, },
clickImg(i) { clickImg(i) {
ckbigImg(i) // ckbigImg(i)
}, },
changeIndustry: function(e) { changeIndustry: function(e) {
this.industryIdx = e.detail.value; this.industryIdx = e.detail.value;
...@@ -208,7 +208,6 @@ ...@@ -208,7 +208,6 @@
CommonUpload(this.dataForm).then(res => { CommonUpload(this.dataForm).then(res => {
this.workform.certificate = res.data.filePath; this.workform.certificate = res.data.filePath;
this.picList.push(this.workform.certificate); this.picList.push(this.workform.certificate);
console.log(this.workform, 1111)
uni.setStorageSync('picList', this.picList); uni.setStorageSync('picList', this.picList);
}); });
}, },
...@@ -301,7 +300,7 @@ ...@@ -301,7 +300,7 @@
} }
</script> </script>
<style lang="scss"> <style lang="scss" scoped>
@import 'applyCommon.scss'; @import 'applyCommon.scss';
.photo_w { .photo_w {
......
<template> <template>
<view class="container"> <view class="container">
<view class="classInfo" style="padding-top:80rpx"> <view style="flex: 1;">
<view class="iconfont icon-youjiantou zuojiantou" @click="goBack()" style="top:18rpx"> <view class="classInfo" style="padding-top:80rpx">
</view> <view class="iconfont icon-youjiantou zuojiantou" @click="goBack()" style="top:18rpx">
<course-item :thumbnailPath="courseInfoItem.displayImage" :title="courseInfoItem.fileTitle" :summaryBox="courseInfoItem.fileSynopsis" :dataList="{coursePrice:courseInfoItem.coursePrice,salesNumber:courseInfoItem.salesNumber}" :fileLecturerId="courseInfoItem.fileLecturerId"></course-item> </view>
</view> <course-item :thumbnailPath="courseInfoItem.displayImage" :title="courseInfoItem.fileTitle" :summaryBox="courseInfoItem.fileSynopsis" :dataList="{coursePrice:courseInfoItem.coursePrice,salesNumber:courseInfoItem.salesNumber}" :fileLecturerId="courseInfoItem.fileLecturerId"></course-item>
<!-- 订单支付明细 -->
<view class="payInfoBox">
<h4>订单支付明细</h4>
<view>
<text>积分抵扣:</text>
<text class="price">{{dropInfo.integralExchange}}</text>
</view>
<view>
<text>实际支付:</text>
<text>{{dropInfo.paymentAmount}}</text>
</view>
</view>
<!-- 退款明细 -->
<view class="dropDetailInfoBox">
<h4>退款明细</h4>
<view>
<text>支付违约金:<i class="iconfont icon-31tishi" @click="showModal()"></i></text>
<text class="price">{{dropInfo.breachCommission}}</text>
</view> </view>
<view> <!-- 订单支付明细 -->
<text>退款到账金额:</text> <view class="payInfoBox">
<text>{{dropInfo.refundFee}}</text> <h4 class="commonTitle">订单支付明细</h4>
<view>
<text class="commonTxt">积分抵扣:</text>
<text class="price">{{dropInfo.integralExchange}}</text>
</view>
<view>
<text class="commonTxt">实际支付:</text>
<text style="font-size: 26rpx;">{{dropInfo.paymentAmount}}</text>
</view>
</view> </view>
<view> <!-- 退款明细 -->
<text>退还积分:</text> <view class="dropDetailInfoBox">
<text>{{dropInfo.refundIntegralExchange}}</text> <h4 class="commonTitle">退款明细</h4>
<view>
<text class="commonTxt">支付违约金<i class="iconfont icon-31tishi iconStyle" @click="showModal()" style="margin-left: 3rpx;"></i></text>
<text class="price">{{dropInfo.breachCommission}}</text>
</view>
<view>
<text class="commonTxt">退款到账金额:</text>
<text style="font-size: 26rpx;">{{dropInfo.refundFee}}</text>
</view>
<view>
<text class="commonTxt">退还积分:</text>
<text class="commonTxt">{{dropInfo.refundIntegralExchange}}</text>
</view>
</view> </view>
</view> <!-- 退款原因 -->
<!-- 退款原因 --> <view class="dropInfoBox">
<view class="dropInfoBox"> <view class="dropBox">
<view class="dropBox"> <h4 class="commonTitle">退款原因</h4>
<h4>退款原因</h4> <view class="pickerBox" @click="showReason=true">
<view class="pickerBox"> <commonSelect
<picker @change="bindPickerChange" :value="dropIndex" :range="dropReasons" :range-key="'dropOptionName'"> :dataList="dropReasons"
<view class="uni-input" style="height: 80rpx;">{{dropReasons[dropIndex]['dropOptionName']}}</view> :visible="showReason"
</picker> :showValue="dropIndex"
<i class="iconfont icon-youjiantou"></i> placeholderTxt="26rpx"
chooseTxt="26rpx"
@confirm="bindPickerChange"
@close="showReason=false"
/>
</view>
</view> </view>
</view> </view>
</view> </view>
<!-- 提交申请 --> <!-- 提交申请 -->
<view class="submitApply" @click="submit()" > <view class="submitApply" @click="submit()" >
<text :class="{'gray':readonlyFlag}" >提交申请</text> <text :class="{'gray':readonlyFlag}" >提交申请</text>
...@@ -54,18 +62,17 @@ ...@@ -54,18 +62,17 @@
<view class="popup-content"> <view class="popup-content">
<view class="title"> <view class="title">
<text></text> <text></text>
<h3>违约金规则</h3> <h3 style="font-size: 28rpx;">违约金规则</h3>
<i class="iconfont icon-guanbi" @click="closePopup()"></i> <i class="iconfont icon-guanbi iconStyle" @click="closePopup()"></i>
</view> </view>
<view class=""> <view class="">
1.购买后14天内未点开学习全额退费; 1.购买后7天内未使用全额退费;
</view> </view>
<view class=""> <view class="">
<view class="">2.购买后15-30天未点开学习则:</view> 2.购买后已使用或购买7天后不予退费;
<view class="">假如:一个初级课程8000,报名费45 ,违约金比例:15%,那么违约金的费用一共是:8045*15% =1206.75; </view>
</view> </view>
<view class=""> <view class="">
3.已点开课程学习或购买30天后不予退费。 &nbsp;
</view> </view>
</view> </view>
</uni-popup> </uni-popup>
...@@ -75,19 +82,22 @@ ...@@ -75,19 +82,22 @@
<script> <script>
import api from "@/api/api"; import api from "@/api/api";
import courseItem from "@/components/courseItem/courseItem.vue"; import courseItem from "@/components/courseItem/courseItem.vue";
import commonSelect from '@/components/commonSelect/commonSelect.vue';
export default { export default {
components:{ components:{
courseItem courseItem,
commonSelect,
}, },
data() { data() {
return { return {
showReason:false,
courseInfoItem:{}, courseInfoItem:{},
fileId:null, fileId:null,
orderId:null, orderId:null,
userId: uni.getStorageSync('cffp_userId'), userId: uni.getStorageSync('cffp_userId'),
dropInfo:{}, dropInfo:{},
dropIndex:0, dropIndex:0,
dropReasons:[''], dropReasons:[{id:null,name:'请选择'}],
withdrawal: true, withdrawal: true,
readonlyFlag:false readonlyFlag:false
}; };
...@@ -98,8 +108,9 @@ ...@@ -98,8 +108,9 @@
delta: 1 delta: 1
}); });
}, },
bindPickerChange(e){ bindPickerChange(value){
this.dropIndex = e.detail.value; this.dropIndex = value;
this.showReason = false
}, },
showModal(){ showModal(){
this.$refs.popup.open() this.$refs.popup.open()
...@@ -110,7 +121,6 @@ ...@@ -110,7 +121,6 @@
// 课程详情页面 // 课程详情页面
courseDetail(){ courseDetail(){
api.courseDetail({fileId:this.fileId,userId:this.userId}).then(res=>{ api.courseDetail({fileId:this.fileId,userId:this.userId}).then(res=>{
console.log('课程详情',res);
if(res['success']){ if(res['success']){
this.courseInfoItem = res['data']['data']; this.courseInfoItem = res['data']['data'];
} }
...@@ -130,7 +140,7 @@ ...@@ -130,7 +140,7 @@
submit(){ submit(){
if(!this.withdrawal){ if(!this.withdrawal){
uni.showToast({ uni.showToast({
title: '已退不能重新申请', title: '已退不能重新申请',
icon: 'none', icon: 'none',
duration: 2000 duration: 2000
}); });
...@@ -153,8 +163,9 @@ ...@@ -153,8 +163,9 @@
refundIntegralExchange:this.dropInfo.refundIntegralExchange, refundIntegralExchange:this.dropInfo.refundIntegralExchange,
refundReason:this.dropReasons[this.dropIndex]['dropOptionName'] refundReason:this.dropReasons[this.dropIndex]['dropOptionName']
} }
// console.log('param',param);
// return
api.unifiedRefund(param).then(res=>{ api.unifiedRefund(param).then(res=>{
console.log(res, 1515)
if(res['success']){ if(res['success']){
uni.navigateTo({ uni.navigateTo({
url:`/pages/afterSaleDetail/afterSaleDetail?orderNo=${this.dropInfo.orderNo}&afterSalesFlag=3` url:`/pages/afterSaleDetail/afterSaleDetail?orderNo=${this.dropInfo.orderNo}&afterSalesFlag=3`
...@@ -177,9 +188,14 @@ ...@@ -177,9 +188,14 @@
// 退款原因 // 退款原因
dropOptionsQuery(){ dropOptionsQuery(){
api.dropOptionsQuery({code:'REFUND_REASON'}).then(res=>{ api.dropOptionsQuery({code:'REFUND_REASON'}).then(res=>{
console.log(res) if(res['success']&&res['data']['dropMasterInfoList'][0]['dropOptionsInfoList']){
if(res['success']){
this.dropReasons = res['data']['dropMasterInfoList'][0]['dropOptionsInfoList'] let result = res['data']['dropMasterInfoList'][0]['dropOptionsInfoList'].map(item=>{
item.name = item.dropOptionName
return item
})
this.dropReasons = this.dropReasons.concat(result);
console.log('this.dropReasons',this.dropReasons );
} }
uni.hideLoading() uni.hideLoading()
}) })
...@@ -200,19 +216,26 @@ ...@@ -200,19 +216,26 @@
} }
</script> </script>
<style lang="scss"> <style lang="scss" scoped>
.container{ .container{
padding: 10rpx 20rpx; padding: 10rpx 20rpx;
height: 100%; height: 100%;
position: relative; position: relative;
.commonTitle{
font-size: 26rpx;
}
.commonTxt{
font-size: 25rpx;
}
.classInfo{ .classInfo{
background-color: #fff; background-color: #fff;
padding: 20rpx 14rpx 14rpx 20rpx; padding: 20rpx 14rpx 14rpx 20rpx;
} }
.payInfoBox,.dropDetailInfoBox,.dropInfoBox{ .payInfoBox,.dropDetailInfoBox{
padding: 30rpx 14rpx 14rpx 20rpx; padding: 30rpx 14rpx 14rpx 20rpx;
margin-bottom: 10rpx; margin-bottom: 10rpx;
background-color: #fff; background-color: #fff;
border-radius: 10rpx;
view{ view{
margin-top: 22rpx; margin-top: 22rpx;
display: flex; display: flex;
...@@ -220,15 +243,17 @@ ...@@ -220,15 +243,17 @@
} }
text{ text{
&.price{ &.price{
font-size: 25rpx;
color: #FA6900; color: #FA6900;
} }
} }
} }
.submitApply{ .submitApply{
position: fixed; margin-top: 30rpx;
bottom: 20rpx; // position: fixed;
left: 0; // bottom: 0rpx;
// left: 0;
width: 100%; width: 100%;
text{ text{
display: flex; display: flex;
...@@ -240,6 +265,7 @@ ...@@ -240,6 +265,7 @@
justify-content: center; justify-content: center;
align-items: center; align-items: center;
margin: 0 auto; margin: 0 auto;
font-size: 28rpx;
} }
text.gray{ text.gray{
...@@ -248,10 +274,12 @@ ...@@ -248,10 +274,12 @@
} }
.popup-content{ .popup-content{
border-radius: 10rpx;
view{ view{
font-size: 30rpx; font-size: 28rpx;
color: #666; color: #666;
margin-bottom: 10rpx; margin-bottom: 10rpx;
} }
.title{ .title{
display: flex; display: flex;
...@@ -265,7 +293,10 @@ ...@@ -265,7 +293,10 @@
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: baseline; align-items: baseline;
height: 80rpx; background-color: #fff;
padding: 20rpx;
border-radius: 10rpx;
box-sizing: border-box;
.pickerBox{ .pickerBox{
display: flex; display: flex;
align-items: baseline; align-items: baseline;
......
...@@ -102,7 +102,7 @@ ...@@ -102,7 +102,7 @@
} }
</script> </script>
<style lang="scss"> <style lang="scss" scoped>
.wrapper{ .wrapper{
padding: 60rpx 30rpx; padding: 60rpx 30rpx;
.content{ .content{
......
...@@ -52,7 +52,7 @@ ...@@ -52,7 +52,7 @@
}, },
methods:{ methods:{
dateFormat(val){ dateFormat(val){
return dataHandling.dateFormat(val,'yyyy-MM-dd') return dataHandling.dateFormat2(val,'yyyy-MM-dd')
}, },
goBack(){ goBack(){
uni.navigateBack({ uni.navigateBack({
...@@ -109,7 +109,7 @@ ...@@ -109,7 +109,7 @@
} }
</script> </script>
<style lang="scss"> <style lang="scss" scoped>
.others{ .others{
padding:30rpx; padding:30rpx;
margin-top: 30rpx; margin-top: 30rpx;
......
...@@ -113,7 +113,6 @@ ...@@ -113,7 +113,6 @@
userSignupId:userSignupId!='null'?userSignupId:null userSignupId:userSignupId!='null'?userSignupId:null
} }
api.queryCertificateInfo(params).then(res=>{ api.queryCertificateInfo(params).then(res=>{
console.log(res)
if(res['success']){ if(res['success']){
this.certificateInfo = res['data']['certificateInfo']; this.certificateInfo = res['data']['certificateInfo'];
} }
...@@ -128,7 +127,6 @@ ...@@ -128,7 +127,6 @@
try { try {
uni.clearStorageSync(); uni.clearStorageSync();
} catch (e) { } catch (e) {
// console.log(e)
// error // error
} }
return false return false
...@@ -168,7 +166,7 @@ ...@@ -168,7 +166,7 @@
}) })
}, },
dateFormat(val){ dateFormat(val){
return dataHandling.dateFormat(val,'yyyy-MM-dd') return dataHandling.dateFormat2(val,'yyyy-MM-dd')
}, },
tokefu(){ tokefu(){
let url = 'http://q.url.cn/abkzV9?_type=wpa&qidian=true' // URL是要跳转的外部地址 作为参数 let url = 'http://q.url.cn/abkzV9?_type=wpa&qidian=true' // URL是要跳转的外部地址 作为参数
...@@ -186,7 +184,7 @@ ...@@ -186,7 +184,7 @@
} }
</script> </script>
<style lang="scss"> <style lang="scss" scoped>
.container{ .container{
// padding-top: 40rpx; // padding-top: 40rpx;
.certifyIntro{ .certifyIntro{
......
...@@ -188,7 +188,7 @@ ...@@ -188,7 +188,7 @@
} }
</script> </script>
<style lang="scss"> <style lang="scss" scoped>
.content { .content {
width: 100vw; width: 100vw;
padding-top: 80rpx; padding-top: 80rpx;
......
...@@ -2,19 +2,20 @@ ...@@ -2,19 +2,20 @@
<view> <view>
<text class="iconfont icon-youjiantou zuojiantou" style="top: 20rpx;" @click="goBack()" ></text> <text class="iconfont icon-youjiantou zuojiantou" style="top: 20rpx;" @click="goBack()" ></text>
<template v-if="title"> <template v-if="title">
<view style="padding-top: 50rpx;"><list-item :title="title" :lists="lists"></list-item></view> <view style="padding-top: 50rpx;"><my-list-item :title="title" :lists="lists"></my-list-item></view>
<view v-if="lists.length<=0" style="text-align: center;margin-top: 40rpx;">暂无{{typeName}}记录</view> <view v-if="lists.length<=0" style="text-align: center;margin-top: 40rpx;">暂无{{typeName}}记录</view>
</template> </template>
</view> </view>
</template> </template>
<script> <script>
import listItem from "@/components/listItem/listItem.vue"; // import myListItem from "@/components/my-list-item/my-list-item.vue";
import api from "@/api/api"; import api from "@/api/api";
export default { export default {
components:{ // components:{
listItem // myListItem
}, // },
data() { data() {
return { return {
title:[], title:[],
...@@ -73,7 +74,6 @@ ...@@ -73,7 +74,6 @@
this.queryDate = option.queryDate; this.queryDate = option.queryDate;
}, },
mounted() { mounted() {
console.log('mounted')
if(this.type=='1'){ if(this.type=='1'){
this.typeName = '分享'; this.typeName = '分享';
this.title = [ this.title = [
...@@ -140,6 +140,6 @@ ...@@ -140,6 +140,6 @@
} }
</script> </script>
<style> <style lang="scss" scoped>
</style> </style>
<template> <template>
<view class="pad"> <view class="pad">
<!--搜索组件--> <!--搜索组件-->
<search :isSearch="1" :userId = "userId" @send="getCourseList"></search> <search
:isSearch="1"
:userId = "userId"
@send="getCourseList"
:initialQuery="queryName"
></search>
<!--轮播组件--> <!--轮播组件-->
<view class="banner"> <view class="banner">
<view class="uni-margin-wrap"> <view class="uni-margin-wrap">
<carousel :carouselList="fileUploadItemCFFPList"></carousel> <carousel :carouselList="fileUploadItemCFFPList"></carousel>
</view> </view>
</view> </view>
<h4 v-if="cffpCourseInfos.length<=0" class="noListTip">暂无课程列表</h4> <h4 v-if="cffpCourseInfos.length<=0" class="noListTip">暂无产品列表</h4>
<view class="ulBox" v-if="cffpCourseInfos.length>0"> <view class="ulBox" v-if="cffpCourseInfos.length>0">
<view class="liBox" v-for="item in cffpCourseInfos" :key="item.fileId" @click="goDetail(item)"> <view class="liBox" v-for="item in cffpCourseInfos" :key="item.fileId" @click="goDetail(item)">
<course-item :thumbnailPath="item.displayImage" :title="item.fileTitle" :summaryBox="item.fileSynopsis" :dataList="{coursePrice:item.coursePrice,salesNumber:item.salesNumber}" :tagList="{v1:item.fileLecturerRanks,v2:item.fileLecturerName}"></course-item> <!-- :tagList="{v1:item.fileLecturerRanks,v2:item.fileLecturerName}" -->
<course-item
:thumbnailPath="item.displayImage"
:title="item.fileTitle"
:summaryBox="item.fileSynopsis"
:dataList="{coursePrice:item.coursePrice,salesNumber:item.salesNumber}"
></course-item>
</view> </view>
</view> </view>
</view> </view>
...@@ -24,6 +36,7 @@ ...@@ -24,6 +36,7 @@
import tabBar from '../../components/tabBar/tabBar.vue'; import tabBar from '../../components/tabBar/tabBar.vue';
import carousel from '@/components/carousel/carousel.vue'; import carousel from '@/components/carousel/carousel.vue';
import search from '@/components/search/search.vue'; import search from '@/components/search/search.vue';
import {companyInfo} from "@/environments/environment";
export default{ export default{
props:['tagIds'], props:['tagIds'],
data(){ data(){
...@@ -42,9 +55,14 @@ ...@@ -42,9 +55,14 @@
carousel, carousel,
search search
}, },
onLoad(){
this.queryName = uni.getStorageSync('queryName'); onLoad() {
}, this.queryName = uni.getStorageSync('queryName') || '';
},
onShow() {
this.queryName = uni.getStorageSync('queryName') || '';
this.courseList();
},
methods:{ methods:{
goDetail(item){ goDetail(item){
uni.navigateTo({ uni.navigateTo({
...@@ -52,18 +70,13 @@ ...@@ -52,18 +70,13 @@
}); });
}, },
courseList(){ courseList(){
const param = { const param = {
queryName:this.queryName queryName:this.queryName
} }
api.courseList(param).then(res=>{ api.courseList(param).then(res=>{
if(res['success']){ if(res['success']){
this.cffpCourseInfos = res['data']['data']; this.cffpCourseInfos = res['data']['data'];
}else{
uni.showToast({
title: res['message'],
duration: 2000,
icon: 'none'
})
} }
}) })
}, },
...@@ -75,22 +88,46 @@ ...@@ -75,22 +88,46 @@
} }
}, },
getCourseList(res){ getCourseList(res){
console.log("res=========",res) console.log('res',res);
this.queryName = res; this.queryName = res;
this.courseList() this.courseList()
} },
queryAreaCenterInfo() {
api.queryAreaCenterInfo({
userId: uni.getStorageSync('cffp_userId'),
companyType: `${companyInfo.companyType}`
}).then((res) => {
if (res['success']) {
uni.setStorageSync('fileUploadItemCFFPList', res['data']['fileUploadItemCFFPList'])
const cffp_userInfo = {
name: res['data']['userReName'],
mobile: res['data']['mobile']
}
uni.setStorageSync('cffp_userInfo', JSON.stringify(cffp_userInfo));
this.fileUploadItemCFFPList = uni.getStorageSync('fileUploadItemCFFPList');
}
})
},
}, },
mounted() { mounted() {
this.fileUploadItemCFFPList = uni.getStorageSync('fileUploadItemCFFPList'); this.fileUploadItemCFFPList = uni.getStorageSync('fileUploadItemCFFPList');
if(!this.fileUploadItemCFFPList){
this.queryAreaCenterInfo();
}
this.courseList(); this.courseList();
}, },
onTabItemTap() {
// 通过tabbar切换时清空storage
uni.removeStorageSync('queryName');
},
onHide() { onHide() {
this.queryName = ''
uni.removeStorageSync('queryName') uni.removeStorageSync('queryName')
} }
} }
</script> </script>
<style lang="scss"> <style lang="scss" scoped>
.ulBox,.liBox{ .ulBox,.liBox{
padding-bottom: 30rpx; padding-bottom: 30rpx;
display: flex; display: flex;
...@@ -107,11 +144,13 @@ ...@@ -107,11 +144,13 @@
} }
.pad{ .pad{
padding:0 30rpx 20rpx 30rpx; padding:0 30rpx 20rpx 30rpx;
.banner { .banner {
border-radius: 20rpx; border-radius: 20rpx;
overflow: hidden; overflow: hidden;
margin-bottom: 30rpx;
.swiper{ .swiper{
height: 200rpx; height: 250rpx;
} }
} }
} }
......
<template> <template>
<view class="container downContainer"> <view class="container">
<view class="downContainer">
<view class="logoContainer"> <view class="logoContainer">
<image src="/static/downlogo.png" mode="widthFix"></image> <image src="../../static/downlogo.png" mode="widthFix"></image>
</view> </view>
<view class="logoName">CFFP财富中心</view> <view class="logoName">银盾家办APP</view>
<view class="downBtn" @click="handleBtnDown">立即下载</view> <view class="downBtn" @click="handleBtnDown">立即下载</view>
<view class="qrcodeContainer"> <view class="qrcodeContainer" v-if="!iosFlag">
<image :src="'/static/'+ (iosFlag ? 'iosDownLoadQrcode' : 'androidDownLoadQrcode')+'.png'" mode="widthFix"></image> <image :src="'../../static/'+ (iosFlag ? 'iosDownLoadQrcode' : 'androidDownLoadQrcode')+'.png'" mode="widthFix"></image>
</view> </view>
<view class="footerTitle">【成为注册家庭财务策划师】</view> <view class="footerTitle">【成为注册家庭财务策划师】</view>
<view class="footerSubtitle">金融·风险管理·咨询·投资组合</view> <view class="footerSubtitle">金融·风险管理·咨询·投资组合</view>
<!-- 遮罩 --> <!-- 遮罩 -->
<view class="markContainer" v-if="markFlag"> <view class="markContainer" v-if="markFlag">
<view class="tipsIcon"> <view class="tipsIcon">
<image src="/static/Group132.png" mode="widthFix"></image> <image src="../../static/Group132.png" mode="widthFix"></image>
</view> </view>
<view class="tipsContent"> <view class="tipsContent">
<view style="display: flex;justify-content: center;align-items: center;">戳这里,点击<image src="/static/browser.png" mode="widthFix" style="width:100rpx!important;height:100rpx;margin:0 30rpx"></image>按钮</view> <view style="display: flex;justify-content: center;align-items: center;">戳这里,点击<image src="../../static/browser.png" mode="widthFix" style="width:100rpx!important;height:100rpx;margin:0 30rpx"></image>按钮</view>
<view class=""> <view class="">
<view>使用系统浏览器即可安装</view> <view>使用系统浏览器即可安装</view>
</view> </view>
...@@ -24,10 +25,12 @@ ...@@ -24,10 +25,12 @@
<view class="confirmBtn">知道了</view> <view class="confirmBtn">知道了</view>
</view> </view>
</view> </view>
</view>
</template> </template>
<script> <script>
import {companyInfo} from "@/environments/environment";
export default { export default {
data() { data() {
return { return {
...@@ -36,19 +39,20 @@ ...@@ -36,19 +39,20 @@
browser:{} browser:{}
} }
}, },
onShow() {
},
methods: { methods: {
// 下载app // 下载app
handleBtnDown() { handleBtnDown() {
if (browser.versions.weixin){ if (this.browser.versions.weixin){
this.markFlag = true; this.markFlag = true;
return; return;
} }
if (browser.versions.android) { if (this.browser.versions.android) {
window.location.href = "https://mdev.anjibao.cn/app.apk"; window.location.href = "https://app.ydhomeoffice.cn/app.apk";
}else if (browser.versions.ios) { }else if (this.browser.versions.ios) {
console.log('ios') window.location.href = "http://itunes.apple.com/us/app/id6447550987";
window.location.href = "http://itunes.apple.com/us/app/id399608199"; }
}
} }
}, },
...@@ -86,19 +90,19 @@ ...@@ -86,19 +90,19 @@
}(), }(),
language: (navigator.browserLanguage || navigator.language).toLowerCase() language: (navigator.browserLanguage || navigator.language).toLowerCase()
} }
if (browser.versions.ios){ if (this.browser.versions.ios){
this.iosFlag = true this.iosFlag = true
}else{ }else{
this.iosFlag = false this.iosFlag = false
} }
if (browser.versions.weixin){ if (this.browser.versions.weixin){
return; return;
} }
//页面初始化进入app,进不去就说明没安装app,然后可以点击下载去应用市场去下载 //页面初始化进入app,进不去就说明没安装app,然后可以点击下载去应用市场去下载
if (browser.versions.ios) { if (this.browser.versions.ios) {
console.log('ios') console.log('ios')
// window.location.href = "http://itunes.apple.com/us/app/id399608199"; // window.location.href = "http://itunes.apple.com/us/app/id6447550987";
} else if (browser.versions.android) { } else if (this.browser.versions.android) {
console.log('android') console.log('android')
// window.location.href = "cffpapp://" //manifest.json配置的schemes // window.location.href = "cffpapp://" //manifest.json配置的schemes
} }
...@@ -107,8 +111,9 @@ ...@@ -107,8 +111,9 @@
} }
</script> </script>
<style lang="scss"> <style lang="scss" scoped>
.downContainer{ .container {
.downContainer{
display: flex; display: flex;
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
...@@ -182,6 +187,7 @@ ...@@ -182,6 +187,7 @@
background-color: #999; background-color: #999;
} }
.footerTitle{ .footerTitle{
margin-top: 30rpx;
font-size: 30rpx; font-size: 30rpx;
color: #333; color: #333;
font-weight: bold; font-weight: bold;
...@@ -192,5 +198,5 @@ ...@@ -192,5 +198,5 @@
color: #666; color: #666;
} }
} }
}
</style> </style>
...@@ -10,11 +10,11 @@ ...@@ -10,11 +10,11 @@
<text>{{item.orderNo}}</text> <text>{{item.orderNo}}</text>
</view> </view>
<view class="ulBox"> <view class="ulBox">
<text>课程名称:</text> <text>商品名称:</text>
<text>{{item.itemName}}</text> <text>{{item.itemName}}</text>
</view> </view>
<view class="ulBox"> <view class="ulBox">
<text>退积分:</text> <text>退积分:</text>
<text>{{Math.abs(item.commissionAmount)}}</text> <text>{{Math.abs(item.commissionAmount)}}</text>
</view> </view>
<view class="ulBox"> <view class="ulBox">
...@@ -22,11 +22,11 @@ ...@@ -22,11 +22,11 @@
<text>{{item.commissionTypeContent}}</text> <text>{{item.commissionTypeContent}}</text>
</view> </view>
<view class="ulBox"> <view class="ulBox">
<text>课程状态:</text> <text>订单状态:</text>
<text @click="viewDetail(item)" class="dropStatus">{{item.orderStatus}}<i class="iconfont icon-youjiantou" style="margin-left: 5rpx;font-size: 26rpx;"></i></text> <text @click="viewDetail(item)" class="dropStatus">{{item.orderStatus}}<i class="iconfont icon-youjiantou" style="margin-left: 5rpx;font-size: 26rpx;"></i></text>
</view> </view>
<view class="ulBox"> <view class="ulBox">
<text>退时间:</text> <text>退时间:</text>
<text>{{item.refundTime}}</text> <text>{{item.refundTime}}</text>
</view> </view>
</view> </view>
...@@ -68,7 +68,7 @@ ...@@ -68,7 +68,7 @@
} }
</script> </script>
<style lang="scss"> <style lang="scss" scoped>
.container{ .container{
height: 100%; height: 100%;
margin-bottom: 20rpx; margin-bottom: 20rpx;
......
<template> <template>
<view class="container" style="position: relative;"> <view class="container" style="position: relative;">
<text class="iconfont icon-youjiantou zuojiantou" @click="goBack()" style="top:-20rpx;left: 20rpx;"></text> <view class="top" >
<view class="record_wrapper" v-if="cffpFortuneDeductionList.length > 0"> <text class="iconfont icon-youjiantou zuojiantou" @click="goBack()"></text>
<text>兑换记录</text>
</view>
<view class="record_wrapper" v-if="cffpFortuneDeductionList?.length > 0">
<view class="recordContent" v-for="(item,index) in cffpFortuneDeductionList" :key="index"> <view class="recordContent" v-for="(item,index) in cffpFortuneDeductionList" :key="index">
<image :src="item.deductionUrl" mode="widthFix"></image> <image :src="item.deductionUrl" mode="widthFix"></image>
<view class="detail"> <view class="detail">
...@@ -9,6 +12,21 @@ ...@@ -9,6 +12,21 @@
<view class=""> <view class="">
{{item.deductionDate}} {{item.deductionDate}}
</view> </view>
<view style="color: #0A2F99;" v-if="item.reviewStatus == 2 && !item.reviewMessage">
兑换失败
</view>
<view style="color: #0A2F99;" v-if="item.reviewStatus == 2 && item.reviewMessage">
兑换失败,原因: {{item.reviewMessage}}
</view>
<view style="color: #0A2F99;" v-else-if="item.productType == '1' && item.reviewStatus == 1">
兑换成功
</view>
<view style="color: #0A2F99;" v-else-if="item.productType == '2' && item.reviewStatus == 1 && item.isPaid == 1 && item.status == 1">
兑换成功
</view>
<view style="color: #0A2F99;" v-else>
兑换中
</view>
</view> </view>
<view class="score" @click="toWithdralDtl(item)"> <view class="score" @click="toWithdralDtl(item)">
-{{item.integralExchange}}积分 -{{item.integralExchange}}积分
...@@ -36,7 +54,6 @@ ...@@ -36,7 +54,6 @@
methods:{ methods:{
findByUserIdForWithdralHis(){ findByUserIdForWithdralHis(){
api.findByUserIdForWithdralHis({userId:this.userId}).then((res)=>{ api.findByUserIdForWithdralHis({userId:this.userId}).then((res)=>{
console.log(res)
if(res['success']){ if(res['success']){
this.cffpFortuneDeductionList = res['data']['cffpFortuneDeductionList'] this.cffpFortuneDeductionList = res['data']['cffpFortuneDeductionList']
} }
...@@ -63,9 +80,27 @@ ...@@ -63,9 +80,27 @@
} }
</script> </script>
<style lang="scss"> <style lang="scss" scoped>
.container{
height:100%;
.top{
display: flex;
height: 80rpx;
justify-content: space-between;
align-items: center;
position: relative;
width: 100%;
margin: 0 auto;
background: #fff;
text:nth-child(2){
width: 100%;
text-align: center;
position: absolute;
}
}
}
.record_wrapper{ .record_wrapper{
margin-top: 40rpx; margin-top:0rpx;
.recordContent{ .recordContent{
display: flex; display: flex;
margin-bottom: 20rpx; margin-bottom: 20rpx;
......
...@@ -2,9 +2,9 @@ ...@@ -2,9 +2,9 @@
<view class="container"> <view class="container">
<view class="logo"> <view class="logo">
<view class="" style="width: 120rpx;"> <view class="" style="width: 120rpx;">
<image src="../../static/cffp_logo.png" alt="" mode="widthFix"></image> <image :src="imgSrc" alt="" mode="widthFix"></image>
</view> </view>
<text>欢迎使用CFFP</text> <text>欢迎使用{{areaName}}</text>
</view> </view>
<view class="inviteInfo"> <view class="inviteInfo">
<text>{{invitationName}}邀请您申请为</text> <text>{{invitationName}}邀请您申请为</text>
...@@ -17,55 +17,57 @@ ...@@ -17,55 +17,57 @@
</template> </template>
<script> <script>
import api from "@/api/api" import api from "@/api/api"
import {companyInfo} from "@/environments/environment";
export default { export default {
data() { data() {
return { return {
areaName:'', areaName: companyInfo.companyName,
imgSrc:'../../static/yd_Logo.png',
//imgSrc: '../../static/cffp_logo.png',
invitationName:'', invitationName:'',
shareId:'', shareId:'',
levelaName:'', levelaName:'',
mobileNumber:'', mobileNumber:'',
name:'', name:'',
companyType:'',
} }
}, },
onLoad(options) { onLoad(options) {
this.shareId = options.shareId this.shareId = options.shareId
this.invitationCode = options.invitationCode this.invitationCode = options.invitationCode
this.companyType = options.companyType;
if(this.companyType == '1'){
this.imgSrc = '../../static/cffp_logo.png';
this.areaName = '赢盾财务顾问';
}
this.getqueryById() this.getqueryById()
}, },
methods:{ methods:{
getqueryById(){ getqueryById(){
api.queryById({id:this.shareId}).then(res =>{ api.queryById({id:this.shareId}).then(res =>{
this.areaName = res.data.data.areaName //this.areaName = res.data.data.areaName
this.areaId = res.data.data.areaId this.areaId = res.data.data.areaId
this.invitationName = res.data.data.invitationName this.invitationName = res.data.data.invitationName
this.name = res.data.data.name this.name = res.data.data.name
this.mobileNumber = res.data.data.mobileNumber this.mobileNumber = res.data.data.mobileNumber
this.levelaName = res.data.data.partnerLevel == 'B1' ?'工作室': '事业伙伴' this.levelaName = res.data.data.partnerLevel == 'B1' ?'工作室': '合伙人'
this.partnerLevel = res.data.data.partnerLevel this.partnerLevel = res.data.data.partnerLevel
}) })
}, },
ckregister(){ ckregister(){
// ' let dataForm = {
// name: this.name,
// mobile: this.mobileNumber,
// id:this.shareId
// };'
uni.navigateTo({ uni.navigateTo({
// url:'/pages/invitationRegister/invitationlogin?name=' + this.name+'&mobile=' +this.mobileNumber + '&id=' + this.shareId url:`/pages/invitationRegister/invitationlogin?companyType=${this.companyType}&name=${this.name}&mobile=${this.mobileNumber}&shareId=${this.shareId}`
url:`/pages/invitationRegister/invitationlogin?name=${this.name}&mobile=${this.mobileNumber}&shareId=${this.shareId}`
}) })
} }
} }
} }
</script> </script>
<style lang="scss"> <style lang="scss" scoped>
.container{ .container{
height: 100vh; height: 100vh;
background: url('../../static/app-plus/registerBg.png') 100% 100%; background: url('../../static/app-plus/registerBg.png') 30% 30% no-repeat;
background-size: contain; background-size: cover;
color: #fff; color: #fff;
.logo{ .logo{
padding-top: 100rpx; padding-top: 100rpx;
...@@ -112,4 +114,4 @@ ...@@ -112,4 +114,4 @@
justify-content: center; justify-content: center;
align-items: center; align-items: center;
} }
</style> </style>
\ No newline at end of file
...@@ -2,12 +2,12 @@ ...@@ -2,12 +2,12 @@
<view class="content"> <view class="content">
<view class="logo"> <view class="logo">
<image :src="imgSrc" alt="logo" srcset="" class="iconBox" mode="widthFix"></image> <image :src="imgSrc" alt="logo" srcset="" class="iconBox" mode="widthFix"></image>
<view>欢迎登录使用CFFP</view> <view>欢迎使用{{areaName}}</view>
</view> </view>
<view class="content-login"> <view class="content-login">
<view class="login_title"> <!-- <view class="login_title">
{{liginName}} {{liginName}}
</view> </view> -->
<view class="login-text"> <view class="login-text">
<text class="text">{{form.name}}</text> <text class="text">{{form.name}}</text>
</view> </view>
...@@ -16,8 +16,8 @@ ...@@ -16,8 +16,8 @@
</view> </view>
<view class="login-code"> <view class="login-code">
<!-- <view class="text" style="display: flex;justify-content: space-between;"> --> <!-- <view class="text" style="display: flex;justify-content: space-between;"> -->
<input name="form.code" placeholder="输入验证码" v-model="form.code" type="number" maxlength="6"/> <input style="font-size: 28rpx;" name="form.code" placeholder="输入验证码" v-model="form.code" type="number" maxlength="6"/>
<text @click="sendMessage()" style="width: 180rpx;" :class="{'grey':disabledSendBtn}">{{sendCodeHtml}}</text> <text @click="sendMessage()" style="width: 180rpx;text-align: right;font-size: 28rpx;" :class="{'grey':disabledSendBtn}">{{sendCodeHtml}}</text>
<!-- </view> --> <!-- </view> -->
</view> </view>
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
<text class="file" @click="getFile(2)">隐私政策</text> <text class="file" @click="getFile(2)">隐私政策</text>
</view> </view>
<view class="footer" @click="nextstep()"> <view class="footer" @click="nextstep()">
<text>下一步</text> <text>登录 / 注册</text>
</view> </view>
</view> </view>
...@@ -40,10 +40,14 @@ ...@@ -40,10 +40,14 @@
<script> <script>
import api from '../../api/api'; import api from '../../api/api';
import common from '../../common/common'; import common from '../../common/common';
import {companyInfo} from "@/environments/environment";
export default { export default {
data() { data() {
return { return {
imgSrc: '../../static/cffp_logo.png', companyType:'',
areaName: companyInfo.companyName,
imgSrc:'../../static/yd_Logo.png',
//imgSrc: '../../static/cffp_logo.png',
liginName: '登录', liginName: '登录',
disabledSendBtn:false, disabledSendBtn:false,
agreeFlag:false, agreeFlag:false,
...@@ -65,6 +69,11 @@ ...@@ -65,6 +69,11 @@
this.form.areaId = options.areaId this.form.areaId = options.areaId
this.form.invitationCode = options.invitationCode this.form.invitationCode = options.invitationCode
this.form.partnerLevel = options.partnerLevel this.form.partnerLevel = options.partnerLevel
this.companyType = options.companyType;
if(this.companyType == '1'){
this.imgSrc = '../../static/cffp_logo.png';
this.areaName = '赢盾财务顾问';
}
// this.form =JSON.parse( options.form) // this.form =JSON.parse( options.form)
}, },
methods:{ methods:{
...@@ -107,7 +116,6 @@ ...@@ -107,7 +116,6 @@
}, 1000); }, 1000);
}, },
nextstep(){ nextstep(){
console.log(this.form.code, 555)
if(this.form.code =='' ||this.form.code == null ){ if(this.form.code =='' ||this.form.code == null ){
uni.showToast({ uni.showToast({
title: '请输入验证码', title: '请输入验证码',
...@@ -118,7 +126,7 @@ ...@@ -118,7 +126,7 @@
} }
if(this.agreeFlag == false) { if(this.agreeFlag == false) {
uni.showToast({ uni.showToast({
title: '请阅读并勾选江苏赢盾财务顾问有限公司服务协议和隐私条款', title: '请阅读并勾选'+`${companyInfo.companyFullName}`+'服务协议和隐私条款',
duration: 2000, duration: 2000,
icon: 'none' icon: 'none'
}); });
...@@ -135,6 +143,7 @@ ...@@ -135,6 +143,7 @@
uni.setStorageSync('cffp_userId', this.userId); uni.setStorageSync('cffp_userId', this.userId);
uni.setStorageSync('isH5', 1); uni.setStorageSync('isH5', 1);
uni.setStorageSync('uni-token', res.data['token']); uni.setStorageSync('uni-token', res.data['token']);
uni.setStorageSync('loginType', 'codelogin');
uni.navigateTo({ uni.navigateTo({
url:'/pages/application-process/basic-info?userId=' + this.userId + '&shareId=' + this.form.id url:'/pages/application-process/basic-info?userId=' + this.userId + '&shareId=' + this.form.id
}) })
...@@ -152,7 +161,7 @@ ...@@ -152,7 +161,7 @@
} }
</script> </script>
<style lang="scss"> <style lang="scss" scoped>
.content { .content {
height: 100vh; height: 100vh;
background: #20279B; background: #20279B;
...@@ -181,7 +190,7 @@ ...@@ -181,7 +190,7 @@
padding: 40rpx 60rpx; padding: 40rpx 60rpx;
overflow: hidden; overflow: hidden;
margin-bottom: 30rpx; margin-bottom: 30rpx;
min-height: 65%; // min-height: 65%;
.login_title{ .login_title{
text-align: center; text-align: center;
font-size: 40rpx; font-size: 40rpx;
...@@ -191,6 +200,7 @@ ...@@ -191,6 +200,7 @@
width: 100%; width: 100%;
border-bottom: 1px solid #CECECE; border-bottom: 1px solid #CECECE;
padding: 20rpx 0; padding: 20rpx 0;
font-size: 28rpx;
.text{ .text{
padding: 20rpx; padding: 20rpx;
} }
......
This diff is collapsed. Click to expand it.
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