From 935fb7d81edc893059dacc81f864e417a47a4efb Mon Sep 17 00:00:00 2001 From: unknown <331404948@qq.com> Date: Mon, 5 Jun 2023 16:42:42 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=BE=AE=E4=BF=A1=E6=94=AF?= =?UTF-8?q?=E4=BB=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/index.js | 24 + common/js/utils.js | 209 +++--- pages.json | 17 +- pages/application/entry.vue | 31 +- pages/application/fillRegistInfo.vue | 174 +++-- pages/application/payment.vue | 818 ++++++++++++--------- pages/application/registrationPhone.vue | 15 +- pages/application/success.vue | 7 +- pages/application/webView.vue | 160 ++++ pages/index/index.vue | 61 +- pages/learnDriveStep/chooseCoach/chooseCoach.vue | 99 --- .../confirmClassHour/confirmClassHour.vue | 138 ---- .../learnDriveStep/confirmClassHour/signature.vue | 228 ------ pages/learnDriveStep/learnDriveStep.scss | 135 ---- pages/learnDriveStep/learnDriveStep.vue | 253 ------- pages/learnDriveStep/payMoney/payMoney.vue | 625 ---------------- pages/learnDriveStep/payMoney/payMoneySuccess.vue | 97 --- pages/learnDriveStep/realName/realName.vue | 142 ---- pages/learnDriveStep/step/step0.vue | 147 ---- pages/learnDriveStep/step/step1.vue | 225 ------ pages/learnDriveStep/step/step2.vue | 63 -- pages/learnDriveStep/step/step3.vue | 524 ------------- pages/learnDriveStep/step/step3formValidation.vue | 121 --- pages/learnDriveStep/step/step4.vue | 174 ----- .../webView/webView - 副本 (2).vue | 148 ---- pages/learnDriveStep/webView/webView.vue | 160 ---- pages/schoolDetails/details.vue | 2 +- static/images/avatar.png | Bin 0 -> 5562 bytes static/images/jiaofei_wxIphone@2x.png | Bin 0 -> 1909 bytes static/images/third_icon_gengduoIphone@2x.png | Bin 0 -> 3750 bytes static/images/third_img_tuijianIphone@2x.png | Bin 0 -> 2763 bytes 31 files changed, 984 insertions(+), 3813 deletions(-) create mode 100644 pages/application/webView.vue delete mode 100644 pages/learnDriveStep/chooseCoach/chooseCoach.vue delete mode 100644 pages/learnDriveStep/confirmClassHour/confirmClassHour.vue delete mode 100644 pages/learnDriveStep/confirmClassHour/signature.vue delete mode 100644 pages/learnDriveStep/learnDriveStep.scss delete mode 100644 pages/learnDriveStep/learnDriveStep.vue delete mode 100644 pages/learnDriveStep/payMoney/payMoney.vue delete mode 100644 pages/learnDriveStep/payMoney/payMoneySuccess.vue delete mode 100644 pages/learnDriveStep/realName/realName.vue delete mode 100644 pages/learnDriveStep/step/step0.vue delete mode 100644 pages/learnDriveStep/step/step1.vue delete mode 100644 pages/learnDriveStep/step/step2.vue delete mode 100644 pages/learnDriveStep/step/step3.vue delete mode 100644 pages/learnDriveStep/step/step3formValidation.vue delete mode 100644 pages/learnDriveStep/step/step4.vue delete mode 100644 pages/learnDriveStep/webView/webView - 副本 (2).vue delete mode 100644 pages/learnDriveStep/webView/webView.vue create mode 100644 static/images/avatar.png create mode 100644 static/images/jiaofei_wxIphone@2x.png create mode 100644 static/images/third_icon_gengduoIphone@2x.png create mode 100644 static/images/third_img_tuijianIphone@2x.png diff --git a/api/index.js b/api/index.js index d51fa29..3868b87 100644 --- a/api/index.js +++ b/api/index.js @@ -67,5 +67,29 @@ class indexApi { async queryRegionByParentCode(data) { return await Ajax1('/util/manage/queryRegionByParentCode.do?regionCode=330100', data,'post'); } + // 提交表单 + async createTrainingApplyDetails(data) { + return await Ajax1('/apply/manage/createTrainingApplyDetails.do', data,'post'); + } + // 获取签约链接 + async signContract(data) { + return await Ajax1('/apply/manage/signContract.do', data,'post'); + } + // 查询订单详情-1 + async getOrderDetails(data) { + return await Ajax1('/order/manage/getOrderDetails.do', data,'post'); + } + // 创建订单 + async createOrder(data) { + return await Ajax1('/order/manage/createOrder.do', data,'post'); + } + // 创建变更车型银行预支付订单-4 + async createChangeModelPrepaid(data) { + return await http('/order/manage/createChangeModelPrepaid.do', data,'post'); + } + // 创建银行预支付订单 + async createPrepaid(data) { + return await Ajax1('/order/manage/createPrepaid.do', data,'post'); + } } export default new indexApi(); \ No newline at end of file diff --git a/common/js/utils.js b/common/js/utils.js index 1428209..12f3d01 100644 --- a/common/js/utils.js +++ b/common/js/utils.js @@ -3,55 +3,31 @@ import learnDriveApi from '@/api/learnDrive.js'; // 引入 import store from '@/store'; const install = (Vue, vm) => { - const callPhone = (phone)=> { - phone = phone.trim() - if(!phone) { - uni.showToast({ - title: '暂无联系方式', - icon: 'none' - }); - return - } - uni.showModal({ - content: '确定要拨打:'+phone+'?' , - success: function (res) { - if (res.confirm) { - uni.makePhoneCall({ - phoneNumber: phone //仅为示例 - }); - } else if (res.cancel) { - console.log('用户点击取消'); - } - } - }); - } - - - + // 打开地图 - const openMap = (lat,lng)=>{ + const openMap = (lat, lng) => { uni.openLocation({ latitude: lat, longitude: lng }) } - + // 距离换算 - const distanceFn = (val)=> { - if(val*1<1000) { + const distanceFn = (val) => { + if (val * 1 < 1000) { return val + '米' - }else { + } else { return (val / 1000).toFixed(2) + '公里' } } // 价格计算 - const priceTo = (price = 0)=> { + const priceTo = (price = 0) => { // return (price / 100).toFixed(2) - return ( parseInt( price * 100 ) / 100 / 100 ).toFixed(2) - + return (parseInt(price * 100) / 100 / 100).toFixed(2) + } - - const distanceLatLng = (lat1, lng1)=> { + + const distanceLatLng = (lat1, lng1) => { var that = this; let lat2 = store.state.latLng.lat; let lng2 = store.state.latLng.lng; @@ -68,29 +44,29 @@ const install = (Vue, vm) => { s = s.toString(); s = s.substring(0, s.indexOf('.') + 2); return s - - } - - const getLocation = ()=> { - return new Promise((resolve,reject)=>{ + + } + + const getLocation = () => { + return new Promise((resolve, reject) => { uni.getLocation({ type: 'wgs84', - success: function (res) { + success: function(res) { console.log('当前位置的经度:' + res.longitude); console.log('当前位置的纬度:' + res.latitude); let obj = { lat: res.latitude, lng: res.longitude } - store.commit('updateLatLng',obj) + store.commit('updateLatLng', obj) resolve(obj) } }); }).catch((e) => {}) } - + // 查询用户信息 - let getOwnerAccountBase = async ()=> { + let getOwnerAccountBase = async () => { const [err, data] = await loginApi.getOwnerAccountBase(); if (data.code != 0) { uni.removeStorageSync('Authorization') @@ -100,46 +76,50 @@ const install = (Vue, vm) => { uni.setStorageSync('userInfo', data.data); return data.data; } - + // 查看是否有未支付订单 - let checkOrderPay = async ()=>{ + let checkOrderPay = async () => { // 这一步判断是否有实名,避免接口报错 let userInfo = await getOwnerAccountBase() - + uni.setStorageSync('userInfo', userInfo); - if(!userInfo||!userInfo.idcard) return false - + if (!userInfo || !userInfo.idcard) return false + // 1查询报名驾校 const [nulls, res] = await learnDriveApi.queryTrainingApplyByOwner() - if(!res.data) return false - let trainingApplyId = res.data[0].trainingApplyId - let transfer = res.data[0].transfer - if(!trainingApplyId) { + if (!res.data) return false + let trainingApplyId = res.data[0].trainingApplyId + let transfer = res.data[0].transfer + if (!trainingApplyId) { return {} } - - - + + + // 2查询订单id - let [err, res2] = await learnDriveApi.getTrainingApplyDetails({trainingApplyId: trainingApplyId}) + let [err, res2] = await learnDriveApi.getTrainingApplyDetails({ + trainingApplyId: trainingApplyId + }) let detail = res2.data - if(!detail.trainingOrderId) { + if (!detail.trainingOrderId) { return {} } - + // 查询订单详情 - let [err3, res3] = await learnDriveApi.getOwnerStudentStatus({trainingOrderId: detail.trainingOrderId}) - + let [err3, res3] = await learnDriveApi.getOwnerStudentStatus({ + trainingOrderId: detail.trainingOrderId + }) + console.log('详情') console.log(res3.data) res3.data.trainingOrderId = detail.trainingOrderId - + // 有同城转样没有完成 用这个?transferStatus 还是用transfer - if(res3.haveTransfer==2) { + if (res3.haveTransfer == 2) { uni.showModal({ content: '您有转校入学申请等完成', confirmText: '去完成', - success: function (res) { + success: function(res) { if (res.confirm) { uni.navigateTo({ url: '/pages/user/businessHandling/transferAppliRecord/transferAppliRecord' @@ -149,43 +129,81 @@ const install = (Vue, vm) => { }); } return res3.data - + } - + function addZeroPrefix(number) { - return number < 10 ? `0${number}`:number + return number < 10 ? `0${number}` : number } - - let getDate = (date, splitor = '-')=> { - const year = date.getFullYear() - const month = date.getMonth() + 1 - const day = date.getDate() - return `${year}${splitor}${addZeroPrefix(month)}${splitor}${addZeroPrefix(day)}` + + let getDate = (date, splitor = '-') => { + const year = date.getFullYear() + const month = date.getMonth() + 1 + const day = date.getDate() + return `${year}${splitor}${addZeroPrefix(month)}${splitor}${addZeroPrefix(day)}` } - - var lastTime = 0 - var audioContext = uni.createInnerAudioContext() // 播放音频的 - - let shakeFn = (res)=>{ - if(!store.state.havePay) return false - let nowTimer = new Date().getTime() - if (nowTimer - lastTime < 1000) return - lastTime = nowTimer - // 自己根据自己的力度调节 变量大小 满足自己设定的值后触发自己的逻辑 - if ((Math.abs(res.x) > 20 || Math.abs(res.y) > 20 || Math.abs(res.z) > 20) ) { - console.log('yayaoyaoya6666666666666666') - // 进入判断后 相当于摇一摇成功 - audioContext.src = 'https://lg-fe2b58o2-1255788064.cos.ap-shanghai.myqcloud.com/shark.mp3' // 播放音频 - audioContext.play() // 播放 - uni.navigateTo({ - url: '/pages/user/studentIdImg/studentIdImg' - }) + + const browser = { + versions: function() { + const u = navigator.userAgent; + return { + ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端 + android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或者uc浏览器 + } + }() + }; + + + + //调⽤APP交互 + //apiName:⽅法名称 + //parameter:参数 + function appPostMessage(apiName, parameter) { + // console.log(browser.versions) + if (browser.versions.ios) { //判读iOS或安卓 + try { + //参数类型可以为对象类型 + var par = { + "type": apiName, + "callBack": { + //回调函数⾃定义参数 + "callBackName": 'arouseNativeMsg', + }, + "postParameter": parameter + }; + //iOS调⽤格式 + window.webkit.messageHandlers.requestApp.postMessage(par); + return "ios" + } catch (err) { + // on catch + } + } else if (browser.versions.android) { + try { + //par参数格式为json字符串 + var par = { + "type": apiName, + "callBack": { + // + "callBackName": "arouseNativeMsg", //固定参数arouseNativeMsg + "callBackParms": parameter + } + }; + //转jsonString + var parString = JSON.stringify(par); + //Android调⽤格式window.forJs.requestApp(par); + window.forJs.requestApp(parString); + return "android" + } catch (err) { + // on catch + } + } else { + alert("不是安卓或者IOS") } } - - vm.$u.utils={ - callPhone, + + + vm.$u.utils = { openMap, getLocation, getOwnerAccountBase, @@ -194,8 +212,7 @@ const install = (Vue, vm) => { distanceLatLng, distanceFn, getDate, - shakeFn - + appPostMessage } } diff --git a/pages.json b/pages.json index ed19f95..407939f 100644 --- a/pages.json +++ b/pages.json @@ -103,15 +103,18 @@ "navigationBarBackgroundColor": "#FFFFFF", "navigationBarTextStyle": "black" //状态栏字体颜色 } + }, + { + "path": "pages/application/webView", + "style": { + "navigationBarTitleText": "报名成功", + "enablePullDownRefresh": false, + "bounce": "none", + "navigationBarBackgroundColor": "#FFFFFF", + "navigationBarTextStyle": "black" //状态栏字体颜色 + } } - - - - - - - ], "globalStyle": { "navigationBarTextStyle": "black", diff --git a/pages/application/entry.vue b/pages/application/entry.vue index 34dd437..f633513 100644 --- a/pages/application/entry.vue +++ b/pages/application/entry.vue @@ -9,7 +9,7 @@ 请选择 以下两种报名方式,均享受会员价 - + @@ -22,7 +22,7 @@ - + @@ -40,16 +40,37 @@ diff --git a/pages/application/fillRegistInfo.vue b/pages/application/fillRegistInfo.vue index 620c523..d1513e0 100644 --- a/pages/application/fillRegistInfo.vue +++ b/pages/application/fillRegistInfo.vue @@ -48,8 +48,8 @@ - - + + 学员信息 请准确填写学员真实信息 - + - + + - + - - - + + + 中国 - + 身份证 - + - + + - - + + + - - + + + @@ -124,19 +132,21 @@ 总额: - 266.00 + {{ $u.utils.priceTo(newPrice)}} - 300.00 + {{$u.utils.priceTo(totalPrice)}} - 享9.5折,已减271元! + 享9.5折,已减{{$u.utils.priceTo(totalPrice - newPrice)}}元! - 下一步 + 下一步 - + + + @@ -180,11 +190,27 @@ showOldDriveModel: false, form: { classModel: '', + businessType: 0,//业务类型 + firstLicenceTime: '',//原驾驶证初领日期 + avatar: '',//上传头像 + certificateType: 1,//证件类型 + trainingClassId: '',//班型 + realName: '', + certificateCode: '', + sex: '', + nationality: '中国', + oldDriveModel: '',//原驾驶证车型 + + address: '', + adaptability: 0, + + businessTypeName: '', + sexName: '', trainingClassLable: '', - businessType: 0, - firstLicenceTime: '', - avatar: [],//上传头像 + idcardA: '', + idcardB: '' }, + showSex: false, info: {}, selectorTrainingClasss: [],//班型数据 selectorDriveModels: [],//车型数据 @@ -192,6 +218,10 @@ {name: '初领', id: 0}, {name: '增领', id: 1} ], + sexArr: [ + {id: 1, lab: '男'}, + {id: 2, lab: '女'}, + ], carTypeArr: [ {lab: '小车',arr: ['C1','C2','C3']}, {lab: '货车',arr: ['A2','B2',]}, @@ -205,15 +235,88 @@ month: true, day: true, }, + trainingApplyId: '', + totalPrice: '', + newPrice: 0 } }, - onLoad() { + onLoad(options) { + this.trainingApplyId = options.trainingApplyId // totalPrice trainingClassId - this.createTrainingApplySimpleFn() this.form.classModel = this.classChooseItem.className + this.totalPrice = this.classChooseItem.totalPrice + this.newPrice = this.totalPrice * 0.95 + this.form.trainingClassId = this.classChooseItem.trainingClassId this.form.trainingClassLable = this.classChooseItem.classModel + + this.InitFn() + }, methods: { + async InitFn() { + await this.getTrainingApplyDetailsFn() + this.queryTrainingClasssFn() + this.queryDriveModelsFn() + }, + // 确认提交表单还是继续修改 + async oneBtnConfirm() { + this.form.trainingSchoolId = this.info.trainingSchoolId + this.form.trainingApplyId = this.trainingApplyId + let obj = {} + for(let key in this.form) { + if(this.form[key]!=='') { + obj[key] = this.form[key] + } + } + if(this.form.businessType) { + // 如果是增驾——原驾驶证号==身份证 + obj.driveLicence = obj.certificateCode + } + delete obj.businessTypeName + delete obj.sexName + delete obj.trainingClassLable + + console.log(obj) + const [nulls, res] = await indexApi.createTrainingApplyDetails(obj) + setTimeout(()=>{ + uni.navigateTo({ + url: '/pages/application/payment' + }) + },2000) + this.$store.commit('upDateCoachItem', {}) + console.log('表单已提交') + console.log(res) + if(res.code==0) { + this.signContractFn() + } + }, + // 获取签约链接 + async signContractFn() { + uni.showLoading({ + title: '请稍后', + mask: true + }) + const [nulls, res] = await indexApi.signContract({trainingApplyId: this.trainingApplyId}) + console.log('获取签约链接') + console.log(res) + if(res.code!=0) return this.$u.toast(res.message) + // this.showWebView = true + // this.webVeiwUrl = res.data.url + // console.log(this.webVeiwUrl) + uni.hideLoading() + this.$store.commit('updateWebVeiwUrl',res.data.url) + this.showSignConfirmPopup = false + uni.navigateTo({ + url: 'pages/application/webView?id='+ this.trainingApplyId + }) + }, + // 选择性别 + confirmSex(i) { + let index = i[0] + let item = this.sexArr[index] + this.form.sex = item.id + this.form.sexName = item.lab + }, // 选择原驾驶证学驾车型 pickerCarClick(item) { let index = this.pickerCarArr.indexOf(item) @@ -298,18 +401,7 @@ } } }, - // 第一步先报名 - async createTrainingApplySimpleFn() { - let trainingSchoolId = this.$store.state.currentSchool.trainingSchoolId - let trainingClassId = this.$store.state.classChooseItem.trainingClassId - const [nulls, res] = await indexApi.createTrainingApplySimple({trainingSchoolId, trainingClassId}) - if(res.code==0) { - this.trainingOrderId = res.data - }else if(res.code==502) { - // 已经报名过这个学校了 存在未支付订单 - this.$u.toast(res.message) - } - }, + //选择图片 chooseImages(type) { uni.chooseImage({ @@ -322,11 +414,11 @@ title: '图片上传中...' }); - this.uploadImgApi(res.tempFilePaths[0]) + this.uploadImgApi(res.tempFilePaths[0],type) } }) }, - uploadImgApi(filePath) { + uploadImgApi(filePath,type) { console.log(filePath) let _this = this // 上传图片到服务器 @@ -348,7 +440,7 @@ let res2 = JSON.parse(res.data) console.log(res2) if(res2.code==0) { - _this.form.avatar = res2.data + _this.form[type] = res2.data } uni.hideLoading(); }, diff --git a/pages/application/payment.vue b/pages/application/payment.vue index 81348fd..e0aca6b 100644 --- a/pages/application/payment.vue +++ b/pages/application/payment.vue @@ -1,363 +1,457 @@ - - - - - diff --git a/pages/application/registrationPhone.vue b/pages/application/registrationPhone.vue index e0f4411..6041c1b 100644 --- a/pages/application/registrationPhone.vue +++ b/pages/application/registrationPhone.vue @@ -102,7 +102,7 @@ uni.setStorageSync('Authorization', data.data.token); uni.setStorageSync('studentId', data.data.studentId); await this.getOwnerAccountBase() - this.$goPage('/pages/application/fillRegistInfo') + this.createTrainingApplySimpleFn() }, //获取用户信息 @@ -111,6 +111,19 @@ if (data.code != 0) return uni.$u.toast(data.message); uni.setStorageSync('userInfo', data.data); }, + // 第一步先报名 + async createTrainingApplySimpleFn() { + let trainingSchoolId = this.$store.state.currentSchool.trainingSchoolId + let trainingClassId = this.$store.state.classChooseItem.trainingClassId + const [nulls, res] = await indexApi.createTrainingApplySimple({trainingSchoolId, trainingClassId}) + if(res.code==0) { + this.$goPage('/pages/application/fillRegistInfo?trainingApplyId='+ res.data) + }else if(res.code==502) { + // 已经报名过这个学校了 存在未支付订单 + this.$u.toast(res.message) + this.$goPage('/pages/application/fillRegistInfo?trainingApplyId='+ res.data) + } + } } } diff --git a/pages/application/success.vue b/pages/application/success.vue index 4f4b90b..e8c206c 100644 --- a/pages/application/success.vue +++ b/pages/application/success.vue @@ -5,7 +5,7 @@ 浙里学车APP - 立即下载 + 立即下载 @@ -27,7 +27,7 @@ - 确认支付 + 立即下载 @@ -51,6 +51,9 @@ console.log(platform) const [err, res] = await indexApi.getLastVersion({appType, version:'1.0.0'}) console.log(res) + }, + download() { + this.$u.toast('需要下载接口') } } } diff --git a/pages/application/webView.vue b/pages/application/webView.vue new file mode 100644 index 0000000..adb7e08 --- /dev/null +++ b/pages/application/webView.vue @@ -0,0 +1,160 @@ + + + + + diff --git a/pages/index/index.vue b/pages/index/index.vue index 3386736..852bbc5 100644 --- a/pages/index/index.vue +++ b/pages/index/index.vue @@ -1,6 +1,6 @@ @@ -88,22 +89,34 @@ this.listInit() this.queryRegionByParentCodeFn() const latLng = this.$u.utils.getLocation() - console.log(latLng) + this.queryParams.lat = latLng.lat + this.queryParams.lng = latLng.lng + + this.$u.utils.appPostMessage("encryption_user_msg_type"); + + //Android和iOS获取⽤户信息回调 + window.arouseNativeMsg = function(data) { + if(data) { + + } + } }, onReachBottom() { - if(this.status=='nomore') return + if (this.status == 'nomore') return this.queryTrainingSchoolListFromAppFn() }, onPullDownRefresh() { this.listInit() - setTimeout(()=>{ + setTimeout(() => { uni.stopPullDownRefresh() - },1500) + }, 1500) }, methods: { - + goApp() { + this.$u.utils.appPostMessage("backToApp"); + }, listInit() { - this.status=='loadmore' + this.status == 'loadmore' this.queryParams.pageIndex = 1 this.listData = [] this.queryTrainingSchoolListFromAppFn() @@ -119,22 +132,22 @@ // 获取区域数据 async queryRegionByParentCodeFn() { const [nulls, res] = await indexApi.queryRegionByParentCode() - this.region = res.data + this.region = res.data }, // 列表 async queryTrainingSchoolListFromAppFn() { let obj = {} - for(let key in this.queryParams) { - if(this.queryParams[key]) { + for (let key in this.queryParams) { + if (this.queryParams[key]) { obj[key] = this.queryParams[key] } } - const [nulls,res] = await indexApi.queryTrainingSchoolListFromApp(obj) - this.queryParams.pageIndex ++ + const [nulls, res] = await indexApi.queryTrainingSchoolListFromApp(obj) + this.queryParams.pageIndex++ this.listData.push(...res.data) console.log('驾校列表') console.log(res.data) - if(res.data.length \ No newline at end of file diff --git a/pages/learnDriveStep/chooseCoach/chooseCoach.vue b/pages/learnDriveStep/chooseCoach/chooseCoach.vue deleted file mode 100644 index 4ff6918..0000000 --- a/pages/learnDriveStep/chooseCoach/chooseCoach.vue +++ /dev/null @@ -1,99 +0,0 @@ - - - - - \ No newline at end of file diff --git a/pages/learnDriveStep/confirmClassHour/confirmClassHour.vue b/pages/learnDriveStep/confirmClassHour/confirmClassHour.vue deleted file mode 100644 index e37f667..0000000 --- a/pages/learnDriveStep/confirmClassHour/confirmClassHour.vue +++ /dev/null @@ -1,138 +0,0 @@ - - - \ No newline at end of file diff --git a/pages/learnDriveStep/confirmClassHour/signature.vue b/pages/learnDriveStep/confirmClassHour/signature.vue deleted file mode 100644 index 542685c..0000000 --- a/pages/learnDriveStep/confirmClassHour/signature.vue +++ /dev/null @@ -1,228 +0,0 @@ - - - - diff --git a/pages/learnDriveStep/learnDriveStep.scss b/pages/learnDriveStep/learnDriveStep.scss deleted file mode 100644 index 76dbd8b..0000000 --- a/pages/learnDriveStep/learnDriveStep.scss +++ /dev/null @@ -1,135 +0,0 @@ -.main { - width: 100vw; - display: flex; - flex-direction: column; - min-height: 100vh; - padding-bottom: 160rpx; - .card { - background: #fff; - z-index: 99; - } - .step-row { - display: flex; - width: 100vw; - padding: 30rpx; - background: #fff; - z-index: 99; - .step { - flex-direction: column; - flex: 1; - display: flex; - align-items: center; - position: relative; - padding: 4rpx; - - .okIcon { - position: absolute; - left: 60%; - top: 0; - z-index: 9; - image { - display: block; - width: 38rpx; - height: 38rpx; - } - } - .arrow { - position: absolute; - left: 90%; - top: 40%; - transform: translateY(-50%); - image { - display: block; - width: 24rpx; - height: 22rpx; - } - } - .icon { - padding: 6rpx; - border-radius: 50%; - &.active { - border: 1px solid #1989FA; - } - image { - display: block; - width: 80rpx; - height: 80rpx; - } - } - - .text { - margin-top: 12rpx; - font-size: 24rpx; - color: #333; - } - } - } - } - .checkCon { - padding: 96rpx 30rpx 24rpx 30rpx; - } - .btnBg { - width: 100%; - height: 128rpx; - padding: 16rpx 30rpx; - background: #fff; - .btn { - width: 100%; - height: 96rpx; - background: linear-gradient(180deg, #3593FB 0%, #53D3E5 100%); - border-radius: 48rpx; - font-size: 36rpx; - color: #fff; - text-align: center; - line-height: 96rpx; - } - } - .select_row { - display: flex;justify-content: flex-end;width: 100%; - } - - .line { - position: relative; - &::before { - content: ''; - height: 20rpx; - width: 100vw; - background-color: #f7f7f7; - position: absolute; - left: -30rpx; - bottom: -20rpx; - } - } - .flex1 { - flex: 1 - } - .stepBtn_row { - display: flex; - padding: 30rpx; - position: fixed; - width: 100%; - bottom: 0; - left: 0; - justify-content: space-between; - background-color: #fff; - z-index: 9; - .stepBtn { - width: 48%; - height: 96rpx; - border: 2rpx solid rgba(53, 147, 251, 1); - color: #1989FA; - border-radius: 50rpx; - text-align: center; - line-height: 96rpx; - font-size: 36rpx; - text-align: center; - &.bg { - color: #fff; - border:none; - } - &.opacity { - opacity: 0.5; - } - } - } - \ No newline at end of file diff --git a/pages/learnDriveStep/learnDriveStep.vue b/pages/learnDriveStep/learnDriveStep.vue deleted file mode 100644 index 73f6015..0000000 --- a/pages/learnDriveStep/learnDriveStep.vue +++ /dev/null @@ -1,253 +0,0 @@ - - - - - \ No newline at end of file diff --git a/pages/learnDriveStep/payMoney/payMoney.vue b/pages/learnDriveStep/payMoney/payMoney.vue deleted file mode 100644 index ed1d202..0000000 --- a/pages/learnDriveStep/payMoney/payMoney.vue +++ /dev/null @@ -1,625 +0,0 @@ - - - - - diff --git a/pages/learnDriveStep/payMoney/payMoneySuccess.vue b/pages/learnDriveStep/payMoney/payMoneySuccess.vue deleted file mode 100644 index 3fecdcf..0000000 --- a/pages/learnDriveStep/payMoney/payMoneySuccess.vue +++ /dev/null @@ -1,97 +0,0 @@ - - - - - \ No newline at end of file diff --git a/pages/learnDriveStep/realName/realName.vue b/pages/learnDriveStep/realName/realName.vue deleted file mode 100644 index 44e75e1..0000000 --- a/pages/learnDriveStep/realName/realName.vue +++ /dev/null @@ -1,142 +0,0 @@ - - - - - \ No newline at end of file diff --git a/pages/learnDriveStep/step/step0.vue b/pages/learnDriveStep/step/step0.vue deleted file mode 100644 index a353632..0000000 --- a/pages/learnDriveStep/step/step0.vue +++ /dev/null @@ -1,147 +0,0 @@ - - - - - \ No newline at end of file diff --git a/pages/learnDriveStep/step/step1.vue b/pages/learnDriveStep/step/step1.vue deleted file mode 100644 index 5cde55d..0000000 --- a/pages/learnDriveStep/step/step1.vue +++ /dev/null @@ -1,225 +0,0 @@ - - - - - diff --git a/pages/learnDriveStep/step/step2.vue b/pages/learnDriveStep/step/step2.vue deleted file mode 100644 index a338ff1..0000000 --- a/pages/learnDriveStep/step/step2.vue +++ /dev/null @@ -1,63 +0,0 @@ - - - - - \ No newline at end of file diff --git a/pages/learnDriveStep/step/step3.vue b/pages/learnDriveStep/step/step3.vue deleted file mode 100644 index 8791898..0000000 --- a/pages/learnDriveStep/step/step3.vue +++ /dev/null @@ -1,524 +0,0 @@ - - - - - - diff --git a/pages/learnDriveStep/step/step3formValidation.vue b/pages/learnDriveStep/step/step3formValidation.vue deleted file mode 100644 index 8580bf3..0000000 --- a/pages/learnDriveStep/step/step3formValidation.vue +++ /dev/null @@ -1,121 +0,0 @@ - - - - - \ No newline at end of file diff --git a/pages/learnDriveStep/step/step4.vue b/pages/learnDriveStep/step/step4.vue deleted file mode 100644 index bbc45f3..0000000 --- a/pages/learnDriveStep/step/step4.vue +++ /dev/null @@ -1,174 +0,0 @@ - - - - - \ No newline at end of file diff --git a/pages/learnDriveStep/webView/webView - 副本 (2).vue b/pages/learnDriveStep/webView/webView - 副本 (2).vue deleted file mode 100644 index 3efebec..0000000 --- a/pages/learnDriveStep/webView/webView - 副本 (2).vue +++ /dev/null @@ -1,148 +0,0 @@ - - - - - diff --git a/pages/learnDriveStep/webView/webView.vue b/pages/learnDriveStep/webView/webView.vue deleted file mode 100644 index adb7e08..0000000 --- a/pages/learnDriveStep/webView/webView.vue +++ /dev/null @@ -1,160 +0,0 @@ - - - - - diff --git a/pages/schoolDetails/details.vue b/pages/schoolDetails/details.vue index 1f0a95b..62234e8 100644 --- a/pages/schoolDetails/details.vue +++ b/pages/schoolDetails/details.vue @@ -240,7 +240,7 @@ } .rightCon { - width: 96rpx; + min-width: 96rpx; text-align: center; margin-right: 32rpx; diff --git a/static/images/avatar.png b/static/images/avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..248c61298d3d4b11df7c90ed92be41122456b804 GIT binary patch literal 5562 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 Vu}2~9l7Gg6bTkc-73%hp{|AnyXZQdB literal 0 HcmV?d00001 diff --git a/static/images/jiaofei_wxIphone@2x.png b/static/images/jiaofei_wxIphone@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..cf648d30c7d59359680696a9e3b84f0794e84bf6 GIT binary patch literal 1909 zcmV-*2a5QKP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91FrWhf1ONa40RR91FaQ7m0NXcg3;+NI-$_J4RA>d&T5D_+RTMtw&TO{} zTTx0V5{wuhF;-D5EfjpTRG>n^H&LP@CMt=Ks6>gPrtybAjPaK*^oLKBpd`prp#@JE@D!CjJT`@i2pB24@TF>e(uOIuQ{Ei{*0gNw~$>dNtFM~aJAq2FaBhBAmR zAZA6&4|VOmd+Xf2-O5GhQ?Sz zX4YCoG_$F4losnr0Js;tqG5Sp+~&{<^d?ptweGod{dGHj z4J*{Ee|=)&6-d|K#iAPP)$T_#3WW7SqJ)-p{F=G8P~Z)?b+g;HxSY9~S-$iG>qif% zfF#zX+U{z`4{cNN96FMs!yRLah6`rm72U&G&Lf&l9E2#BxD(#jdhsxlX4Wo3GpcLk{qa zHD#+%u8f0%eO`GLKoal|rJZ$NT&AzCYOriIOLuiHX`cJt0k1xWR=2vc(jxT`3pD`L z>8NW>S!mLY9i-hSy4!|)nrv)6A(ptB)<%l>8J+1{gZv6G@9OBFLtfwzNq3ROD|**I%WQ0p=Jn360JDF7gQE>6k$Krt_D%2@ zV}$kVu(+#OTiMl}n|*8}{Ov+D{&>r*FPh*c^E%1yXqPUb;XS?itQYnyEl406f}U9; zdU0_&;;m@ja-NRxi5C%$id%j_=_LBN}_@#ydf_R5H(e0)9}6XerD zTp3fdX{>Lem0XZaiQ_CqiJh}|mJ?2*Otk(m!|6-cH*9+@S^JacGV~Ekj_Zzq2Q2k# z&(ZTPA#tQUrq4j#><{3umHK3;4BZdwmf?2b*SBkjmu$Gcbwf^2*taE&z;=R7JXz$O z0eG3X&P1v_NB0u9G<@?HR`t_ZuODlX1?i!&DFXq2%L zt0GZhJko!9Oc{4G-SP2ss12Dv+dgS|82b zYZ_~8Yuw>spWd+T00LQ`(FakzIMP*i6*w(IHd||wJ%B&LxF65Z$0|o;NJn!+o2gv| zHNiP3|6Woe^+5hTXl?AuP6WU`T1%G_t;Dv5v8D?EcmmECC&S_;P_zH2dliMe&Hb7I zjNe)DdWBuO#+s*;dI274L@%Cl04o=h(%~|x9o%|0q0CN8_JOwSJKJTzkNzpZeE!I@ zi`JqjsWWAv=T$(Ep8R`>{Zl}w45eOKUyM&yTR*(e$$}P4j`8a!X|jU>3e^k9&Cd`W zp#}}6&MbeJld#VR6Q(d&n02elXkI#Sj~qs9f%+=?n{55Q+K7LgKncG5R8qp67LwLW zn(NztQ|7ce72CG}@#ZBc;pf#0WVQmZv0!(@=Z1jWQW{0Mh3 vzQzk6t}rZ&pTvem2;asL_dR3z9OHihJrI4^GSnUQ00000NkvXXu0mjf()5o7 literal 0 HcmV?d00001 diff --git a/static/images/third_icon_gengduoIphone@2x.png b/static/images/third_icon_gengduoIphone@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..defcd9f5ac635f9d8437e01da9068f65404d1386 GIT binary patch literal 3750 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 Q@c;k-07*qoM6N<$f`f@EJ^%m! literal 0 HcmV?d00001 diff --git a/static/images/third_img_tuijianIphone@2x.png b/static/images/third_img_tuijianIphone@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..fbb597160b161453c4791af9ce25e2f8cef8521b GIT binary patch literal 2763 zcmV;+3N-bJP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91K%fHv1ONa40RR91A^-pY0Hvd5od5s|HAzH4RA>dYSbL0B#Toz2xr#wGCoDYhnIJ2jjj-` zcpzivf$0cYU>-X=6rdFpd04uzucdvOv=#&%#*}5f%dgM@1)pl-qUWKVdhL7emjq=q zYNE!AOxOqn;8I|{@aV$63j3s@t3rN7HUSD$_ST@-b;-yOJO>@nbi`2?n8z18LKeKx zGv+b`D_Mdr`byeIZ6*OahjQ_!-LDuB`~FxIl%fm&<9>a;{#f*upcA<~lK=!FRphH} zq!O@{zJm%wEILMsj^Ksej@&h{pADDGrPPxnNBLo?=?%bl9|5}eNZ>7x_@T|&pgIBeI@i{;xZy+J<&)uR%H83qlY#} z_n>kJRLxZ2#*U6Ae01poJn#@OjgrJp-E-0Zf^i zwIh7ufiTX#(7mtl*|ylvECJdB$S3xMK+!whb0h;Xir7%HjhzUU%OU*ZOC|xw{|3DC zHZZXcYR!*=Y;t0;Kgl;CB%dv+Qc8|Y2TffAsbe*?V#E@|q3;761U zY44o?j@twGe&#KLy14=&?f3yDhG~54NOQ^e=*&0Ps1p`|Bl|>z zzIN)m_o8YW3Vr${CC^l#0Xa!4BU7DFapA1f)gWkhI-+z^f+W7iTIZP!K= z1xY)7(0?%Wt{uSPH=@c=lcqrp9u~_DprlY!HPeA1pEdM+9(v1qcgW!4dFaO)6B!{G zSJv`%(FUrY{62IlK}JoxZ#jtsC~>lSSAN2zuf(6gCAg*=&nO*YRg<9KISRe?X{d2@ zDWRsu-EM&1TTQql)_<{$WY&9#wEbYggHX3rB7FIm(8u;c^&bR`9Gj6z5jX%&?lx~z zOo7axEcfi5hYRznxY(Mc;#}Zt5!B$ivn7i2NE!EMjEzsLbBtQbB z7|K{dZZjp}9!`R4G71G@MlRZZ1EGdjLyf4WGPmVT7nE@0O6a}6BL_*N4M?ADp}PUC zS#BKYc}fmS($~L+uJVy5f!Z@4KNeY>MQ~^THZQT8E{!5>0lCl5Q+cqFP`(NO|E~vR*gPL@g zF(S@!0M=G8Z9a6h*$;S%RqxM4>eTcFz=S)EYN{T+;Stm4H(`QB%b}>!!o#$DP8@-{ zV}9C3jCPfyrp`rBI~#>fbjN7^RTeK5RwNIp1h8%`Ws@`{{oijfJyv9u$tl2$h$Oq? zz!6Y7G|qtdi8Q32S*gsUHdJ{Yf6 zRXYc{IrL*_)lxdj_QpyR_QI`ep$_dPzS%tG|BuK;{jGSqO}dW4*W zs9EO{s7wV!)9B+Q@+4jQ{7nSmoc8Fcgo&&;B4b^k6M}-b`jiOqxAim%P4h$|^;MH* zBB-Gy@Kh7Y)O6y9GEQXg%a@mNnh#pJCi6MN>*Prkx z5;1%y6X~SnoIDXLkQD? zV$`U~^e0AtMwsPNVb|&CDL_BE%t$-+9`yd5W+ZlmXZ1#jV7*qiu-(_v&3@#lr3J(e z$z>B@_Nt^7*H^>npPt*sL=mas6U;Gn{!CnAtk^mejH`EY$xbkSMskSo;Gdum>@>7w zBAH@!MHQCxi|nu;nvXiVW2oDzjC@G{G_j1x8ERZ9KArfP1h}$eJ;`cdWu!m?&}|*i>rE?b$mS@+ojH@`*LEZ6y2AX zv5z-&`W@SvNdTRh{2%g6fka=Cmnkmku#w8XouFZfJ^>0_=rR^NrRXBx?$;?y+gE7L zB%my(8uJ=8G|OGv)thmwU5WoM;419X?6;IDG