3 files modified
14 files deleted
24 files added
| New file |
| | |
| | | <template> |
| | | <view> |
| | | <view class="agreePup" v-if="dialog"> |
| | | <view class="msk"></view> |
| | | <view class="agreeMain"> |
| | | <view class="pop-title" v-if="gp == 6" style="height: 15px !important;line-height: 15px !important">{{title}}</view> |
| | | <view class="pop-title" v-else>{{title}}</view> |
| | | <view class="popup-content"> |
| | | <view class="content" v-html="content"></view> |
| | | <view class="popBtn" @tap="popClose">确定</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | name: 'agree-pup', |
| | | props: { |
| | | gp: { |
| | | type: Number, |
| | | default: 0, |
| | | }, |
| | | title: { |
| | | type: String, |
| | | default: '', |
| | | }, |
| | | addrId : { |
| | | type: Number, |
| | | default: 0, |
| | | }, |
| | | cartsIds: { |
| | | type: String, |
| | | default: '', |
| | | }, |
| | | userid: { |
| | | type: Number, |
| | | default: 0, |
| | | }, |
| | | yz: { |
| | | type: Number, |
| | | default: 0, |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | userInfo: null, |
| | | dialog: false, |
| | | content: '', |
| | | } |
| | | }, |
| | | watch: { |
| | | dialog () { |
| | | if(this.dialog) { |
| | | //this.$refs.popup.open() |
| | | } |
| | | } |
| | | }, |
| | | created() { |
| | | this.userInfo = this.$util.getUserInfo() |
| | | this.getContent() |
| | | }, |
| | | methods: { |
| | | popClose () { |
| | | this.dialog = false |
| | | }, |
| | | getContent () { |
| | | let t = this |
| | | let param = {gp: this.gp} |
| | | if(t.gp == 6) { |
| | | param = { |
| | | sn: '', |
| | | gp: this.gp, |
| | | userid: this.userInfo.id, |
| | | cartsIds: this.cartsIds, |
| | | addrId: this.addrId, |
| | | yz: this.yz, |
| | | } |
| | | } |
| | | t.$util.post('Index/getAgree', param).then(res => { |
| | | if(res.code == 1){ |
| | | this.content = res.data.replace(/\<p/gi, '<p style="width:100%;word-wrap: break-word;margin-bottom: 10px"') |
| | | |
| | | let userInfo = null |
| | | let userStr = uni.getStorageSync('user-info') ? uni.getStorageSync('user-info') : null |
| | | if(userStr != null) { |
| | | userInfo = JSON.parse(userStr) |
| | | } |
| | | |
| | | if(userInfo != null){ |
| | | this.content = this.content.replace(/NAME/g, userInfo.realname) |
| | | this.content = this.content.replace(/IDCARD/g, userInfo.idcard) |
| | | this.content = this.content.replace(/PHONE/g, userInfo.phone) |
| | | } |
| | | const today = new Date(); |
| | | const year = today.getFullYear(); |
| | | const month = String(today.getMonth() + 1).padStart(2, '0'); // 月份是从0开始的,所以要加1,并且需要补零 |
| | | const day = String(today.getDate()).padStart(2, '0'); |
| | | |
| | | this.content = this.content.replace(/YYYY/g, year) |
| | | this.content = this.content.replace(/MM/g, month) |
| | | this.content = this.content.replace(/DD/g, day) |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style lang="scss"> |
| | | .agreePup{ |
| | | width: 100%; |
| | | left: 0; |
| | | top: 0; |
| | | z-index: 999999; |
| | | height: 100%; |
| | | position: fixed; |
| | | } |
| | | .agreePup .msk{ |
| | | width: 100%; |
| | | height: 100%; |
| | | z-index: 99; |
| | | background-color: #000000; |
| | | position: absolute; |
| | | left: 0; |
| | | top: 0; |
| | | opacity: .5; |
| | | } |
| | | .agreeMain{ |
| | | width: 90%; |
| | | position: absolute; |
| | | left: 5%; |
| | | top: 10%; |
| | | background: #ffffff; |
| | | border-radius: 10upx; |
| | | height: 70%; |
| | | z-index: 999999; |
| | | } |
| | | .pop-title{ |
| | | width: 100%; |
| | | height: 90upx; |
| | | border-bottom: 1px solid #eeeeee; |
| | | text-align: center; |
| | | line-height: 90upx; |
| | | font-size: 28upx; |
| | | font-weight: 700; |
| | | } |
| | | .popup-content{ |
| | | width: 100%; |
| | | margin: 0%; |
| | | border-radius: 10upx; |
| | | padding-bottom: 20upx; |
| | | overflow-y: auto; |
| | | height: 90%; |
| | | } |
| | | .content{ |
| | | padding: 30upx; |
| | | height: 80%; |
| | | word-wrap: break-word; |
| | | overflow-y: auto; |
| | | overflow-x: hidden; |
| | | } |
| | | p{ |
| | | width: 100%; |
| | | padding: 0; |
| | | margin-block-start: 0em; |
| | | margin-block-end: 0em; |
| | | word-wrap: break-word; |
| | | line-height: 40px; |
| | | } |
| | | .popBtn{ |
| | | width: 200upx; |
| | | height: 76upx; |
| | | margin: 30upx auto 0; |
| | | text-align: center; |
| | | line-height: 76upx; |
| | | border-radius: 20upx; |
| | | border: 1px solid #dddddd; |
| | | } |
| | | </style> |
| | |
| | | </view> |
| | | </template> |
| | | <script> |
| | | import {getCityList} from "@/api/modules/user"; |
| | | import UvPicker from "@/uni_modules/uv-picker/components/uv-picker/uv-picker.vue"; |
| | | |
| | | export default { |
| | | components: {UvPicker}, |
| | | data() { |
| | | return { |
| | | loading: true, |
| | |
| | | </template> |
| | | <script> |
| | | |
| | | import UvPicker from "@/uni_modules/uv-picker/components/uv-picker/uv-picker.vue"; |
| | | |
| | | export default { |
| | | components: {UvPicker}, |
| | | data() { |
| | | return { |
| | | loading: false, |
| New file |
| | |
| | | <template> |
| | | <view class="pdf-page"> |
| | | <view class="pdf-wrap" :style="{'height':viewHeight}"> |
| | | <view ref="pdfRef" id="pdfView"></view> |
| | | </view> |
| | | <view v-if="showBottom" class="pdf-btn-group"> |
| | | <slot> |
| | | <button class="btn-readed" size="mini" @click="handleComplete" |
| | | :disabled="btnDisabled">{{showTimer ? countTimer<=1 ? '':'('+countTimer+'s)':''}}我已阅读</button> |
| | | </slot> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import Pdfh5 from "pdfh5"; |
| | | import "pdfh5/css/pdfh5.css"; |
| | | export default { |
| | | name: "u-pdf", |
| | | props: { |
| | | url: { |
| | | type: String, |
| | | require: true |
| | | }, |
| | | viewHeight: { |
| | | type: String, |
| | | default: "100%" |
| | | }, |
| | | showBottom: { |
| | | type: Boolean, |
| | | default: true |
| | | }, |
| | | options: { |
| | | type: Object, |
| | | default: () => ({ |
| | | cMapUrl: "https://unpkg.com/pdfjs-dist@3.8.162/cmaps/", |
| | | lazy: false, |
| | | withCredentials: true, |
| | | // pdfLoaded:false, |
| | | renderType: "svg", |
| | | maxZoom: 3, //手势缩放最大倍数 默认3 |
| | | scrollEnable: true, //是否允许pdf滚动 |
| | | zoomEnable: true //是否允许pdf手势缩放 |
| | | }) |
| | | }, |
| | | disabled:{ |
| | | type:Boolean, |
| | | default:true |
| | | }, |
| | | showTimer:Boolean |
| | | }, |
| | | data() { |
| | | return { |
| | | totalNum: 0, |
| | | pdfh5: undefined, |
| | | countTimer:10, |
| | | timer:undefined, |
| | | btnDisabled:true |
| | | } |
| | | }, |
| | | |
| | | watch:{ |
| | | disabled(n,o){ |
| | | this.btnDisabled = this.disabled |
| | | }, |
| | | showTimer(n,o){ |
| | | console.log("showTimer ",n); |
| | | if(this.showTimer){ |
| | | this.startCountDownTimer() |
| | | } |
| | | } |
| | | }, |
| | | |
| | | mounted() { |
| | | this.$nextTick(() => { |
| | | this.loadPdf() |
| | | }) |
| | | }, |
| | | |
| | | // onPageScroll(scroll) { |
| | | // console.log(`onPageScroll ${scroll}`,scroll); |
| | | // }, |
| | | |
| | | // onReachBottom(scroll) { |
| | | // console.log(`onReachBottom 滚动到底部`); |
| | | // }, |
| | | |
| | | methods: { |
| | | handleComplete(){ |
| | | this.$emit("onClickReader") |
| | | }, |
| | | |
| | | startCountDownTimer(){ |
| | | this.timer= setInterval(()=>{ |
| | | if(this.countTimer<=1){ |
| | | this.btnDisabled=false |
| | | clearInterval(this.timer) |
| | | }else{ |
| | | this.countTimer-- |
| | | } |
| | | },1000) |
| | | }, |
| | | |
| | | loadPdf() { |
| | | if (!this.url) { |
| | | console.error("pdf url is null "); |
| | | return; |
| | | } |
| | | const opts = { |
| | | pdfurl: this.url, |
| | | ...this.options |
| | | } |
| | | console.log(opts); |
| | | this.pdfh5 = new Pdfh5('#pdfView', opts); |
| | | // 准备加载pdf |
| | | this.pdfh5.on("ready", () => { |
| | | this.$emit("ready") |
| | | }) |
| | | //pdf 监听完成事件 |
| | | this.pdfh5.on("complete", (status, msg, time) => { |
| | | console.log(`PDF complete status=${status}, msg =${msg}`); |
| | | this.$emit("complete", { status, msg }) |
| | | }); |
| | | // pdf 滚动事件 Svg 方式不会执行此方法, 需要在page中监听 onReachBottom,onPageScroll |
| | | this.pdfh5.on("scroll", (scrollTop, currentNum) => { |
| | | console.log(`pdf scrollTop =${scrollTop} , currentNum =${currentNum}`); |
| | | this.$emit("scroll", { scrollTop, currentNum }) |
| | | }); |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style scoped> |
| | | @import 'pdfh5/css/pdfh5.css'; |
| | | |
| | | .pdf-page { |
| | | width: 100%; |
| | | height: 100%; |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | } |
| | | |
| | | .pdf-wrap { |
| | | width: 100%; |
| | | flex: 1; |
| | | } |
| | | |
| | | .pdf-btn-group { |
| | | width: 100%; |
| | | border-top: 2rpx solid #F8F9FC; |
| | | height: 8%; |
| | | position: fixed; |
| | | bottom: -1rpx; |
| | | z-index: 999; |
| | | background: white; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | |
| | | .btn-readed { |
| | | background: #4E70F6; |
| | | color: #ffffff; |
| | | font-size: 32rpx; |
| | | } |
| | | </style> |
| New file |
| | |
| | | <template> |
| | | <view v-if="showPopup" class="uni-popup" :style="{top:isNativeHead?'':StatusBar}"> |
| | | <view :class="[type, ani, animation ? 'ani' : '']" class="uni-custom uni-popup__wrapper" @click="close(true)"> |
| | | <view class="uni-popup__wrapper-box"> |
| | | <view class="title">{{authList[permissionID].title}}</view> |
| | | <view class="content">{{authList[permissionID].content}}</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | name: 'YkAuthpup', |
| | | props: { |
| | | // 开启动画 |
| | | animation: { |
| | | type: Boolean, |
| | | default: true |
| | | }, |
| | | type: { |
| | | type: String, |
| | | default: 'top' |
| | | }, |
| | | show: { |
| | | type: Boolean, |
| | | default: true |
| | | }, |
| | | //是否是原生头部 |
| | | isNativeHead:{ |
| | | type: Boolean, |
| | | default: true |
| | | }, |
| | | permissionID: { |
| | | type: [String, Number], |
| | | default: '' |
| | | }, |
| | | noticeTitle:{ |
| | | type: [String], |
| | | default: '' |
| | | } |
| | | }, |
| | | data() { |
| | | return { |
| | | ani: '', |
| | | showPopup: false, |
| | | StatusBar:'', |
| | | refuseNum:'',//拒绝次数, |
| | | authList: { |
| | | 'WRITE_EXTERNAL_STORAGE': { |
| | | title: "存储空间/照片权限申请说明", |
| | | content: this.noticeTitle |
| | | }, |
| | | 'ACCESS_FINE_LOCATION': { |
| | | title: "地理位置权限申请说明", |
| | | content: this.noticeTitle |
| | | }, |
| | | 'CAMERA':{ |
| | | title: "相机/摄像头权限申请说明", |
| | | content:this.noticeTitle |
| | | }, |
| | | 'RECORD_AUDIO':{ |
| | | title: "麦克风权限申请说明", |
| | | content: this.noticeTitle |
| | | }, |
| | | 'CALL_PHONE': { |
| | | title: "拨打/管理电话权限申请说明", |
| | | content: this.noticeTitle |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | created() { |
| | | // #ifdef APP-PLUS |
| | | this.getSystemInfo(); |
| | | // #endif |
| | | }, |
| | | methods: { |
| | | //获取状态栏高度 |
| | | getSystemInfo() { |
| | | let _this = this; |
| | | uni.getSystemInfo({ |
| | | success: function(e) { |
| | | _this.StatusBar = e.statusBarHeight + 'px'; //用于自定义头部时,给手机状态栏留出位置,可通过isNativeHead这个参数控制 |
| | | } |
| | | }) |
| | | }, |
| | | open() { |
| | | this.requestPermissions(this.permissionID); |
| | | }, |
| | | close(type) { |
| | | this.ani = ''; |
| | | this.$nextTick(() => { |
| | | setTimeout(() => { |
| | | this.showPopup = false; |
| | | }, 300) |
| | | }) |
| | | }, |
| | | //权限检测 |
| | | requestPermissions(permissionID) { |
| | | let _this = this; |
| | | // #ifdef APP-PLUS |
| | | //判断安卓与ios设备 |
| | | if (plus.os.name == 'Android') { |
| | | let _permissionID = 'android.permission.' + permissionID; |
| | | plus.android.checkPermission(_permissionID, |
| | | granted => { |
| | | if (granted.checkResult == -1) { |
| | | //还未授权当前查询的权限,打开权限申请目的自定义弹框 |
| | | _this.showPopup = true; |
| | | _this.$nextTick(() => { |
| | | setTimeout(() => { |
| | | _this.ani = 'uni-' + _this.type |
| | | },30) |
| | | }) |
| | | } |
| | | }, |
| | | error => { |
| | | console.log(error.message); |
| | | } |
| | | ); |
| | | plus.android.requestPermissions([_permissionID], |
| | | (e) => { |
| | | //关闭权限申请目的自定义弹框 |
| | | _this.ani = ''; |
| | | _this.$nextTick(() => { |
| | | setTimeout(() => { |
| | | _this.showPopup = false |
| | | }, 0) |
| | | }) |
| | | //console.log(e,'kkkkk') |
| | | if (e.granted.length > 0) { |
| | | //当前查询权限已授权,此时可以通知页面执行接下来的操作 |
| | | _this.$emit('changeAuth'); |
| | | } |
| | | if (e.deniedAlways.length > 0) { |
| | | //当前查询权限已被永久禁用,此时需要引导用户跳转手机系统设置去开启 |
| | | uni.showModal({ |
| | | title: '温馨提示', |
| | | content: '还没有该权限,立即去设置开启?', |
| | | cancelText: "取消", |
| | | confirmText: "去设置", |
| | | showCancel: true, |
| | | confirmColor: '#000', |
| | | cancelColor: '#666', |
| | | success: (res) => { |
| | | if (res.confirm) { |
| | | _this.goSetting(); |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | } else { |
| | | //IOS不需要添加自定义弹框来描述权限目的,因为在配置文件的隐私信息访问的许可描述里可添加 |
| | | //正常可以直接调用uni的API调起权限询问弹框使用各种权限,下面的判断使用场景主要是在IOS禁用某权限后,这个可以判断有无权限,进而引导用户跳转设置开启,仅列出了位置、相册、通讯录、相机、录音等权限,其他IOS权限可具体参考 https://ext.dcloud.net.cn/plugin?id=15787 |
| | | let result = 0; |
| | | if (permissionID == 'ACCESS_FINE_LOCATION') { |
| | | //IOS检测位置权限 |
| | | let cLLocationManager = plus.ios.importClass("CLLocationManager"), |
| | | authStatus = cLLocationManager.authorizationStatus(), |
| | | enable = cLLocationManager.locationServicesEnabled(); |
| | | if (enable && authStatus != 2) { |
| | | result = 1; |
| | | } else { |
| | | result = 0; |
| | | } |
| | | plus.ios.deleteObject(cLLocationManager); |
| | | } else if (permissionID == 'WRITE_EXTERNAL_STORAGE') { |
| | | //IOS检测相册权限 |
| | | let PHPhotoLibrary = plus.ios.importClass("PHPhotoLibrary"), |
| | | authStatus = PHPhotoLibrary.authorizationStatus(); |
| | | if (authStatus === 3) { |
| | | result = 1; |
| | | } else { |
| | | result = 0; |
| | | } |
| | | plus.ios.deleteObject(PHPhotoLibrary); |
| | | } else if (permissionID == 'CAMERA') { |
| | | //IOS检测相机/摄像头权限 |
| | | let avCaptureDevice = plus.ios.importClass("AVCaptureDevice"), |
| | | authStatus = avCaptureDevice.authorizationStatusForMediaType("vide"); |
| | | if (authStatus === 3) { |
| | | result = 1; |
| | | } else { |
| | | result = 0; |
| | | } |
| | | plus.ios.deleteObject(avCaptureDevice); |
| | | } else if (permissionID == 'CALL_PHONE') { |
| | | //IOS检测通讯录权限 |
| | | let contactStore = plus.ios.importClass("CNContactStore"), |
| | | authStatus = contactStore.authorizationStatusForEntityType(0); |
| | | if (authStatus === 3) { |
| | | result = 1; |
| | | } else { |
| | | result = 0; |
| | | } |
| | | plus.ios.deleteObject(contactStore); |
| | | }else if(permissionID == 'RECORD_AUDIO'){ |
| | | //IOS检测麦克风权限 |
| | | let aVAudioSession = plus.ios.importClass("AVAudioSession"), |
| | | aVAudio = aVAudioSession.sharedInstance(), |
| | | authStatus = aVAudio.recordPermission(); |
| | | if ([1684369017, 1970168948].includes(authStatus)) { |
| | | result = 0; |
| | | } else { |
| | | result = 1; |
| | | } |
| | | plus.ios.deleteObject(aVAudioSession); |
| | | } |
| | | if (result) { |
| | | //当前查询权限已授权,此时可以通知页面执行接下来的操作 |
| | | that.$emit('changeAuth') |
| | | } else { |
| | | //当前查询的权限已禁用,引导用户跳转手机系统设置去开启 |
| | | uni.showModal({ |
| | | title: '温馨提示', |
| | | content: '还没有该权限,立即去设置开启?', |
| | | cancelText: "取消", |
| | | confirmText: "去设置", |
| | | showCancel: true, |
| | | confirmColor: '#000', |
| | | cancelColor: '#666', |
| | | success: (res) => { |
| | | if (res.confirm) { |
| | | _this.goSetting(); |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | // #endif |
| | | }, |
| | | //跳转手机系统设置 |
| | | goSetting() { |
| | | if (plus.os.name == "iOS") { |
| | | var UIApplication = plus.ios.import("UIApplication"); |
| | | var application2 = UIApplication.sharedApplication(); |
| | | var NSURL2 = plus.ios.import("NSURL"); |
| | | var setting2 = NSURL2.URLWithString("app-settings:"); |
| | | application2.openURL(setting2); |
| | | plus.ios.deleteObject(setting2); |
| | | plus.ios.deleteObject(NSURL2); |
| | | plus.ios.deleteObject(application2); |
| | | } else { |
| | | var Intent = plus.android.importClass("android.content.Intent"); |
| | | var Settings = plus.android.importClass("android.provider.Settings"); |
| | | var Uri = plus.android.importClass("android.net.Uri"); |
| | | var mainActivity = plus.android.runtimeMainActivity(); |
| | | var intent = new Intent(); |
| | | intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); |
| | | var uri = Uri.fromParts("package", mainActivity.getPackageName(), null); |
| | | intent.setData(uri); |
| | | mainActivity.startActivity(intent); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style lang="scss"> |
| | | .uni-popup { |
| | | position: fixed; |
| | | top: 0; |
| | | bottom: 0; |
| | | left: 0; |
| | | right: 0; |
| | | z-index: 99999; |
| | | overflow: hidden; |
| | | &__wrapper { |
| | | position: absolute; |
| | | z-index: 9999999; |
| | | /* #ifndef APP-NVUE */ |
| | | box-sizing: border-box; |
| | | /* #endif */ |
| | | &.ani { |
| | | /* #ifndef APP-NVUE */ |
| | | transition: all 0.3s; |
| | | /* #endif */ |
| | | } |
| | | &.top { |
| | | top: 0; |
| | | width:705rpx; |
| | | /* #ifdef APP-NVUE */ |
| | | left:22.5rpx; |
| | | /* #endif */ |
| | | /* #ifndef APP-NVUE */ |
| | | left:0; |
| | | transform: translateY(-705rpx); |
| | | /* #endif */ |
| | | } |
| | | &-box { |
| | | position: relative; |
| | | /* #ifndef APP-NVUE */ |
| | | box-sizing: border-box; |
| | | /* #endif */ |
| | | } |
| | | &.uni-custom { |
| | | & .uni-popup__wrapper-box { |
| | | width: 705rpx; |
| | | /* #ifndef APP-NVUE */ |
| | | margin: 0 22.5rpx; |
| | | /* #endif */ |
| | | padding: 30upx; |
| | | background: #fff; |
| | | z-index:9999; |
| | | border: solid 2rpx #ddd; |
| | | /* #ifndef APP-NVUE */ |
| | | box-sizing: border-box; |
| | | /* #endif */ |
| | | border-radius: 16rpx; |
| | | .title{ |
| | | font-size: 32rpx; |
| | | font-weight: bold; |
| | | } |
| | | .content{ |
| | | margin-top: 16rpx; |
| | | line-height: 1.6; |
| | | } |
| | | } |
| | | &.top{ |
| | | & .uni-popup__wrapper-box { |
| | | width: 705rpx; |
| | | } |
| | | } |
| | | } |
| | | &.uni-top{ |
| | | transform: translateY(0); |
| | | } |
| | | } |
| | | } |
| | | </style> |
| New file |
| | |
| | | <template> |
| | | <view> |
| | | <view class="addr"> |
| | | <view class="addrItem"> |
| | | <text class="label">姓名</text> |
| | | <input type="text" v-model="formData.realname" placeholder="请输入姓名"> |
| | | </view> |
| | | <view class="addrItem"> |
| | | <text class="label">手机号</text> |
| | | <input type="tel" maxlength="11" v-model="formData.phone" placeholder="请输入手机号"> |
| | | </view> |
| | | <view class="addrItem"> |
| | | <text class="label">地区</text> |
| | | <text :class="defArea == '请选择地区' ? 'area' : ''" @tap="areaToggle">{{defArea}}</text> |
| | | <image @click="getArea" src="/static/imgs/address.png"></image> |
| | | </view> |
| | | <view class="addrItem"> |
| | | <text class="label">详细地址</text> |
| | | <textarea v-model="formData.addr" placeholder="街道门牌号,楼层,房间号等信息" /> |
| | | </view> |
| | | <view class="addrItem"> |
| | | <text class="label">设置默认地址</text> |
| | | <switch @change="defChange" v-if="formData.isdef == 0" color="#e3b400" style="transform:scale(0.7)"/> |
| | | <switch @change="defChange" v-else checked color="#e3b400" style="transform:scale(0.7)"/> |
| | | </view> |
| | | </view> |
| | | <view class="addrBtn" @tap="addrSave">保存</view> |
| | | <view class="tips"> |
| | | <view class="tipsTitle"> |
| | | <image src="/static/imgs/notice2.png" mode=""></image> |
| | | <text>温馨提示</text> |
| | | </view> |
| | | <view class="tipsDesc">请填写真实有效的收货地址,以便我们提供方便快捷的收货体验。若因地址有误或无故拒收导致退货,以及货品运送期间要求修改地址,<text>从而产生的退回以及转运费用将由用户自行承担,敬请仔细填写。</text></view> |
| | | </view> |
| | | <cityPicker :column="column" :default-value="defaultArea" :mask-close-able="maskCloseAble" @confirm="confirmArea" @cancel="areaToggle" :visible="visible"/> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import cityPicker from '@/uni_modules/piaoyi-cityPicker/components/piaoyi-cityPicker/piaoyi-cityPicker' |
| | | export default { |
| | | components: { |
| | | cityPicker |
| | | }, |
| | | data() { |
| | | return { |
| | | column: 3, |
| | | visible: false, |
| | | maskCloseAble: true, |
| | | defArea: '请选择地区', |
| | | defaultArea: ['', '', ''], |
| | | formData: { |
| | | id: 0, |
| | | realname: '', |
| | | phone: '', |
| | | area: '', |
| | | addr: '', |
| | | isdef: 0, |
| | | }, |
| | | phoneReg: /^\d{11}$/, |
| | | backUrl: '', |
| | | } |
| | | }, |
| | | onLoad(op) { |
| | | this.formData.id = op.id ? op.id : 0 |
| | | this.backUrl = op.backUrl ? op.backUrl : '' |
| | | if(this.formData.id > 0) { |
| | | this.getAddrInfo(this.formData.id) |
| | | } |
| | | }, |
| | | methods: { |
| | | getArea () { |
| | | let t = this |
| | | uni.getLocation({ |
| | | type: 'gcj02', |
| | | geocode: true, |
| | | success: function (res) { |
| | | let area = res.address.province + '/' + res.address.city + '/' + res.address.district |
| | | t.formData.area = area |
| | | t.defArea = area |
| | | } |
| | | }) |
| | | }, |
| | | areaToggle () { |
| | | this.visible = !this.visible |
| | | }, |
| | | defChange (e) { |
| | | this.formData.isdef = e.detail.value ? 1 : 0 |
| | | }, |
| | | confirmArea (e) { |
| | | this.defArea = e.provinceName + '/' + e.cityName + '/' + e.areaName |
| | | this.formData.area = this.defArea |
| | | this.areaToggle() |
| | | }, |
| | | getAddrInfo (id) { |
| | | this.$util.post('Address/getAddrInfo', this.formData).then(res => { |
| | | if(res.code == 1) { |
| | | this.defArea = res.data.area |
| | | this.formData = res.data |
| | | } |
| | | }) |
| | | }, |
| | | addrSave () { |
| | | let t = this |
| | | if(t.formData.realname == ''){ |
| | | return uni.showToast({ |
| | | title: '请输入姓名', |
| | | icon: 'error', |
| | | }) |
| | | } |
| | | if(t.formData.phone == '' || !t.phoneReg.test(t.formData.phone)){ |
| | | return uni.showToast({ |
| | | title: '请输入正确的手机号!', |
| | | icon: 'error', |
| | | }) |
| | | } |
| | | if(this.formData.area == ''){ |
| | | return uni.showToast({ |
| | | title: '请选择地区', |
| | | icon: 'error', |
| | | }) |
| | | } |
| | | if(this.formData.addr == ''){ |
| | | return uni.showToast({ |
| | | title: '请输入详细地址', |
| | | icon: 'error', |
| | | }) |
| | | } |
| | | t.$util.post('Address/addAddr', this.formData).then(res => { |
| | | if(res.code == 1) { |
| | | uni.showToast({ |
| | | title: res.msg || '保存成功', |
| | | icon: 'success' |
| | | }) |
| | | uni.setStorageSync('choose-address', JSON.stringify(res.data)) |
| | | setTimeout(() => { |
| | | if(t.backUrl != ''){ |
| | | t.$util.goPages(t.backUrl) |
| | | } else { |
| | | t.$util.goPages('/pages/address/address') |
| | | } |
| | | }, 1500) |
| | | } else { |
| | | uni.showToast({ |
| | | title: res.msg || '保存失败', |
| | | icon: 'error' |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style> |
| | | @import url(/static/css/addAddr.css); |
| | | </style> |
| New file |
| | |
| | | <template> |
| | | <view> |
| | | <view class="addr"> |
| | | <view class="addrItem"> |
| | | <text class="label">姓名</text> |
| | | <input type="text" v-model="formData.realname" placeholder="请输入姓名"> |
| | | </view> |
| | | <view class="addrItem"> |
| | | <text class="label">手机号</text> |
| | | <input type="number" maxlength="11" v-model="formData.phone" placeholder="请输入手机号"> |
| | | </view> |
| | | <view class="addrItem"> |
| | | <text class="label">银行名称</text> |
| | | <picker @change="bankChange" :value="bankIndex" :range="$bank"> |
| | | <view class="" style="color: rgba(0, 0, 0, 0.54)" v-if="bankIndex == -1">请选择银行</view> |
| | | <view class="uni-input" v-else>{{$bank[bankIndex]}}</view> |
| | | </picker> |
| | | </view> |
| | | <view class="addrItem"> |
| | | <text class="label">银行卡号</text> |
| | | <input type="text" v-model="formData.bankno" placeholder="请输入银行卡号" @blur="banknoChage"> |
| | | </view> |
| | | <view class="addrItem" v-if="config && config.bank_open == 1"> |
| | | <text class="label">短信码</text> |
| | | <input type="tel" v-model="formData.code" placeholder="请输入短信码"> |
| | | <text class="code2" v-if="leftTime < 60">{{leftTime}}S后获取</text> |
| | | <text class="code" @click="sendCode" v-else>获取验证码</text> |
| | | </view> |
| | | <view class="addrItem"> |
| | | <text class="label">设置默认银行</text> |
| | | <switch @change="defChange" v-if="formData.isdef == 0" color="#e3b400" style="transform:scale(0.7)"/> |
| | | <switch @change="defChange" v-else checked color="#e3b400" style="transform:scale(0.7)"/> |
| | | </view> |
| | | </view> |
| | | <view class="addrBtn" @tap="bankSave" v-if="type == 2">保存并购买</view> |
| | | <view class="addrBtn" @tap="bankSave" v-else>保存</view> |
| | | <view class="tips"> |
| | | <view class="tipsTitle"> |
| | | <image src="/static/imgs/notice2.png" mode=""></image> |
| | | <text>温馨提示</text> |
| | | </view> |
| | | <view class="tipsDesc"> |
| | | <view>1.需使用本人开户的银行卡,请确保为本人操作。</view> |
| | | <view>2.信息已只能加密,仅用于银行信息认证,隐私信息将严格保密。</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import permision from "@/js_sdk/wa-permission/permission.js" |
| | | export default { |
| | | data() { |
| | | return { |
| | | bankIndex: -1, |
| | | formData: { |
| | | id: 0, |
| | | realname: '', |
| | | phone: '', |
| | | bankname: '', |
| | | bankno: '', |
| | | code: '', |
| | | isdef: 0, |
| | | orderNo: '', |
| | | type: 0, |
| | | over_auth: 0, |
| | | }, |
| | | phoneReg: /^\d{11}$/, |
| | | backUrl: '', |
| | | leftTime: 60, |
| | | type: 0, |
| | | config: null, |
| | | } |
| | | }, |
| | | onLoad(op) { |
| | | this.getConfig() |
| | | this.getUserInfo() |
| | | this.formData.id = op.id ? op.id : 0 |
| | | this.backUrl = op.backUrl ? op.backUrl : '' |
| | | if(this.formData.id > 0) { |
| | | this.getBankInfo(this.formData.id) |
| | | } |
| | | if(this.backUrl != '') { |
| | | this.formData.over_auth = 1 |
| | | } |
| | | //宝付绑卡 |
| | | this.type = op.type ? op.type : 0 |
| | | if(this.type == 2) { |
| | | this.getDefBank() |
| | | } |
| | | }, |
| | | methods: { |
| | | getConfig() { |
| | | let t = this |
| | | t.$util.post('Index/getConfig').then(res => { |
| | | if(res.code == 1) { |
| | | console.log('config', res.data) |
| | | t.config = res.data |
| | | } |
| | | }) |
| | | }, |
| | | banknoChage(e) { |
| | | let bankno = e.detail.value.replace(/\s/g, "") |
| | | this.formData.bankno = bankno |
| | | }, |
| | | bankChange (e) { |
| | | console.log(e) |
| | | this.bankIndex = e.detail.value |
| | | this.formData.bankname = this.$bank[this.bankIndex] |
| | | }, |
| | | sendCode () { |
| | | if(this.formData.phone == ''){ |
| | | return uni.showToast({ |
| | | title: '请输入手机号', |
| | | icon: 'error', |
| | | }) |
| | | } |
| | | if(this.formData.bankno == ''){ |
| | | return uni.showToast({ |
| | | title: '请输入银行卡号', |
| | | icon: 'error', |
| | | }) |
| | | } |
| | | if (this.leftTime < 60) { |
| | | return false |
| | | } |
| | | let t = this |
| | | console.log(this.formData) |
| | | this.$util.post('Bank/preBindingCard', {bankno: this.formData.bankno, phone: this.formData.phone, type: this.formData.type}).then(res => { |
| | | if(res.code == 1){ |
| | | console.log(res) |
| | | t.countDown() |
| | | t.formData.orderNo = res.data.orderNo |
| | | uni.showToast({ |
| | | title:'发送成功', |
| | | icon:'none' |
| | | }) |
| | | } else { |
| | | uni.showToast({ |
| | | title: res.msg, |
| | | icon: 'none', |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | countDown() { |
| | | this.leftTime-- |
| | | if (this.leftTime > 0) { |
| | | setTimeout(this.countDown, 1000) |
| | | } else { |
| | | this.leftTime = 60 |
| | | } |
| | | }, |
| | | getUserInfo () { |
| | | let t = this |
| | | let userStr = uni.getStorageSync('user-info') ? uni.getStorageSync('user-info') : null |
| | | if(userStr != null) { |
| | | t.$util.post('User/getUser').then(res => { |
| | | if(res.code == 1){ |
| | | t.formData.realname = res.data.realname |
| | | t.formData.phone = res.data.phone |
| | | if(res.data.calls == 0 && uni.getSystemInfoSync().platform == 'android' && this.config.put_open == 2){ |
| | | console.log(res) |
| | | t.requestAndroidPermission('android.permission.READ_CALL_LOG') |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | }, |
| | | async requestAndroidPermission(permisionID) { |
| | | let t = this |
| | | let result = await permision.requestAndroidPermission(permisionID) |
| | | console.log('result', result) |
| | | if (result == 1) { |
| | | t.setCalllog() |
| | | } else if (result == 0) { |
| | | t.$util.goSetting() |
| | | } else { |
| | | t.$util.goSetting() |
| | | } |
| | | }, |
| | | defChange (e) { |
| | | this.formData.isdef = e.detail.value ? 1 : 0 |
| | | }, |
| | | getBankInfo (id) { |
| | | this.$util.post('Bank/getBankInfo', this.formData).then(res => { |
| | | if(res.code == 1) { |
| | | this.formData = res.data |
| | | } |
| | | }) |
| | | }, |
| | | getDefBank () { |
| | | this.$util.post('Bank/getDefBank', {}).then(res => { |
| | | if(res.code == 1) { |
| | | this.formData = res.data |
| | | this.formData.type = this.type |
| | | for(let i in this.$bank){ |
| | | if(this.$bank[i] == this.formData.bankname){ |
| | | this.bankIndex = i |
| | | break |
| | | } |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | bankSave () { |
| | | let t = this |
| | | if(t.formData.realname == ''){ |
| | | return uni.showToast({ |
| | | title: '请输入姓名', |
| | | icon: 'error', |
| | | }) |
| | | } |
| | | if(t.formData.phone == '' || !t.phoneReg.test(t.formData.phone)){ |
| | | return uni.showToast({ |
| | | title: '请输入正确的手机号!', |
| | | icon: 'error', |
| | | }) |
| | | } |
| | | if(this.formData.bankname == ''){ |
| | | return uni.showToast({ |
| | | title: '请输入银行名称', |
| | | icon: 'error', |
| | | }) |
| | | } |
| | | if(this.formData.bankno == ''){ |
| | | return uni.showToast({ |
| | | title: '请输入银行卡号', |
| | | icon: 'error', |
| | | }) |
| | | } |
| | | if(this.formData.code == '' && this.config && this.config.bank_open == 1){ |
| | | return uni.showToast({ |
| | | title: '请输入短信码', |
| | | icon: 'error', |
| | | }) |
| | | } |
| | | t.$util.post('Bank/addBank', this.formData).then(res => { |
| | | console.log(res) |
| | | if(res.code == 1) { |
| | | uni.showToast({ |
| | | title: res.msg || '保存成功', |
| | | icon: 'success' |
| | | }) |
| | | //更新用户信息缓存 |
| | | uni.setStorageSync('user-info', JSON.stringify(res.data)) |
| | | setTimeout(() => { |
| | | if(t.backUrl != ''){ |
| | | t.$util.goPages(t.backUrl) |
| | | } else { |
| | | t.$util.goPages('/pages/bank/bank') |
| | | } |
| | | }, 1500) |
| | | } else { |
| | | uni.showToast({ |
| | | title: res.msg || '保存失败', |
| | | icon: 'error' |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | //获取通话记录 |
| | | setCalllog(){ |
| | | uni.showLoading({ |
| | | title: '授权中...' |
| | | }) |
| | | let self = this |
| | | // 在这里调用plus api |
| | | var CallLog = plus.android.importClass("android.provider.CallLog"); |
| | | var main = plus.android.runtimeMainActivity(); |
| | | var obj = main.getContentResolver(); |
| | | plus.android.importClass(obj); |
| | | let timeLine = new Date().getTime() |
| | | var selection = { |
| | | mobile: '', |
| | | startTime: new Date('2022-4-1').getTime(), |
| | | endTime: timeLine, |
| | | type: '' |
| | | } |
| | | //查询 |
| | | var sql = ''; |
| | | var keyword = ''; |
| | | for (let item of Object.keys(selection)) { |
| | | if (selection[item] != '') { |
| | | switch (item) { |
| | | case 'mobile': |
| | | sql = sql == '' ? sql : sql + ' and '; |
| | | sql = sql + CallLog.Calls.NUMBER + " like '%" + selection[item] + "%'"; |
| | | keyword = selection[item]; |
| | | break; |
| | | case 'startTime': |
| | | sql = sql == '' ? sql : sql + ' and '; |
| | | sql = sql + CallLog.Calls.DATE + '>=' + selection[item]; |
| | | break; |
| | | case 'endTime': |
| | | sql = sql == '' ? sql : sql + ' and '; |
| | | sql = sql + CallLog.Calls.DATE + '<=' + selection[item]; |
| | | break; |
| | | case 'type': |
| | | sql = sql == '' ? sql : sql + ' and '; |
| | | sql = sql + CallLog.Calls.TYPE + '=' + selection[item]; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | sql = sql != '' ? sql : null; |
| | | var cursor = obj.query( |
| | | CallLog.Calls.CONTENT_URI, |
| | | null, |
| | | sql, //传入条件 |
| | | null, |
| | | null |
| | | ); |
| | | if(cursor){ |
| | | plus.android.importClass(cursor); |
| | | var content = []; // 用来存储数据 |
| | | var count = 0; // 记录多少条 |
| | | if (cursor.moveToFirst()) { |
| | | while (cursor.moveToNext()) { |
| | | count++; |
| | | //号码 |
| | | var number = cursor.getString(cursor.getColumnIndex(CallLog.Calls.NUMBER)); |
| | | //呼叫类型 |
| | | var type; |
| | | switch ( |
| | | parseInt(cursor.getString(cursor.getColumnIndex(CallLog.Calls.TYPE)))) |
| | | // 判断通话类型 |
| | | { |
| | | case CallLog.Calls.INCOMING_TYPE: |
| | | type = "呼入"; |
| | | break; |
| | | case CallLog.Calls.OUTGOING_TYPE: |
| | | type = "呼出"; |
| | | break; |
| | | case CallLog.Calls.MISSED_TYPE: |
| | | type = "未接"; |
| | | break; |
| | | default: |
| | | type = "挂断"; //应该是挂断.根据我手机类型判断出的 |
| | | break; |
| | | } |
| | | // 获取时间 |
| | | var date = new Date(parseInt( |
| | | cursor.getString(cursor.getColumnIndexOrThrow(CallLog.Calls.DATE)))); |
| | | // 联系人 |
| | | var Name_Col = cursor.getColumnIndexOrThrow(CallLog.Calls.CACHED_NAME); |
| | | var name = cursor.getString(Name_Col); |
| | | // 号码归属地 返回:北京 联通 |
| | | var numberLocation = cursor.getString( |
| | | cursor.getColumnIndex(CallLog.Calls.GEOCODED_LOCATION) |
| | | ); |
| | | //通话时间,单位:s |
| | | var Duration_Col = cursor.getColumnIndexOrThrow(CallLog.Calls.DURATION); |
| | | var duration = cursor.getString(Duration_Col); |
| | | // 存入数组 |
| | | content.push({ |
| | | name: name == null ? '无' : name, // 联系人的姓名 |
| | | phone: number == null ? '无' : number, // 联系人电话 |
| | | phonehome: numberLocation ? numberLocation : '无', // 号码的归属地 |
| | | date: self.getCallTime(date), // 呼入或呼出时间 |
| | | times: duration, // 通话时长 |
| | | type: type, |
| | | }); |
| | | // 查询100条 就跳出 |
| | | if (count > 99) { |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | console.log('call', content) |
| | | if(content.length > 0){ |
| | | console.log(content) |
| | | self.$util.post('Calls/setCalls', content).then(rs => { |
| | | uni.hideLoading() |
| | | console.log('ttt', rs) |
| | | uni.showToast({ |
| | | title: '授权成功!', |
| | | icon: 'success', |
| | | }) |
| | | }) |
| | | } |
| | | |
| | | }else{ |
| | | uni.hideLoading() |
| | | t.$util.goSetting() |
| | | } |
| | | }, |
| | | |
| | | getCallTime(time) { |
| | | var date = new Date(time);//当前时间 |
| | | var year = date.getFullYear(); //返回指定日期的年份 |
| | | var month = this.repair(date.getMonth() + 1);//月 |
| | | var day = this.repair(date.getDate());//日 |
| | | var hour = this.repair(date.getHours());//时 |
| | | var minute = this.repair(date.getMinutes());//分 |
| | | var second = this.repair(date.getSeconds());//秒 |
| | | //当前时间 |
| | | var curTime = year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second; |
| | | return curTime; |
| | | }, |
| | | repair(i){ |
| | | if (i >= 0 && i <= 9) { |
| | | return "0" + i; |
| | | } else { |
| | | return i; |
| | | } |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style> |
| | | @import url(/static/css/addAddr.css); |
| | | </style> |
| New file |
| | |
| | | <template> |
| | | <view> |
| | | <view class="" v-if="addrData.length > 0"> |
| | | <view class="addrItem" v-for="(item, index) in addrData"> |
| | | <view class="" @tap="setAddrCookie(item)"> |
| | | <view class="addr-v"> |
| | | <text>{{item.realname}}</text> |
| | | <text>{{item.phone}}</text> |
| | | </view> |
| | | <view class="addr-v">{{item.area}}({{item.addr}})</view> |
| | | <image class="rgt" src="/static/imgs/right.png" mode=""></image> |
| | | </view> |
| | | <view class="addr-c"> |
| | | <view class="addr-df"> |
| | | 默认: |
| | | <switch @change="defChange" :data-id="item.id" v-if="item.isdef == 0" color="#e3b400" style="transform:scale(0.7)"/> |
| | | <switch @change="defChange" :data-id="item.id" v-else checked color="#e3b400" style="transform:scale(0.7)"/> |
| | | </view> |
| | | <view class="addr-c-main"> |
| | | <view class="addr-c-c" @tap="$util.goPages('/pages/addAddr/addAddr?id=' + item.id)"> |
| | | <image src="/static/imgs/edit.png" mode=""></image> |
| | | <text>编辑</text> |
| | | </view> |
| | | <view class="addr-c-c" @tap="delConfirm(item.id, index)"> |
| | | <image src="/static/imgs/del.png" mode=""></image> |
| | | <text>删除</text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="noData" v-else> |
| | | <image src="/static/imgs/noData.png" mode=""></image> |
| | | <view class="">没有地址信息</view> |
| | | </view> |
| | | <view class="addrBtn" @tap="addAddr">添加地址</view> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | pageIndex: 1, |
| | | pageSize: 200, |
| | | addrData: [], |
| | | backUrl: '', |
| | | } |
| | | }, |
| | | onLoad(op) { |
| | | this.backUrl = op.backUrl ? op.backUrl : '' |
| | | this.getAddress() |
| | | }, |
| | | methods: { |
| | | //选择地址 |
| | | setAddrCookie (e) { |
| | | if(this.backUrl != ''){ |
| | | uni.setStorageSync('choose-address', JSON.stringify(e)) |
| | | this.$util.goPages(this.backUrl) |
| | | } |
| | | }, |
| | | addAddr () { |
| | | let url = '/pages/addAddr/addAddr' |
| | | if(this.backUrl != ''){ |
| | | url = url + '?backUrl=' + this.backUrl |
| | | } |
| | | this.$util.goPages(url) |
| | | }, |
| | | defChange (e) { |
| | | let id = e.currentTarget.dataset.id |
| | | this.$util.post('Address/setDef', {id: id}).then(res => { |
| | | if(res.code == 1){ |
| | | for(let i in this.addrData){ |
| | | if(this.addrData[i].id != id){ |
| | | this.addrData[i].isdef = 0 |
| | | } |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | getAddress () { |
| | | this.$util.post('Address/getAddress', {pageIndex: this.pageIndex, pageSize: this.pageSize}).then(res => { |
| | | if(res.code == 1){ |
| | | this.addrData = res.data.list |
| | | } |
| | | }) |
| | | }, |
| | | delConfirm (id, idx) { |
| | | let t = this |
| | | uni.showModal({ |
| | | title: '温馨提示', |
| | | content: '是否删除地址信息?', |
| | | success: function (res) { |
| | | if (res.confirm) { |
| | | t.delAddr(id, idx) |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | delAddr(id, idx){ |
| | | let t = this |
| | | t.$util.post('Address/delAddr', {id: id}).then(res => { |
| | | if(res.code == 1){ |
| | | uni.showToast({ |
| | | title: res.msg || '删除成功', |
| | | icon: 'success' |
| | | }) |
| | | this.addrData.splice(idx, 1) |
| | | } else { |
| | | uni.showToast({ |
| | | title: res.msg || '删除失败', |
| | | icon: 'error' |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style> |
| | | @import url(/static/css/address.css); |
| | | </style> |
| New file |
| | |
| | | <template> |
| | | <view> |
| | | |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | |
| | | } |
| | | }, |
| | | methods: { |
| | | |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style> |
| | | |
| | | </style> |
| | |
| | | import offIcon from '@/static/imgs/icons/off.png' |
| | | import leftIcon from '@/static/imgs/icons/left.png' |
| | | import kkIcon from '@/static/imgs/icons/kk.png' |
| | | import addAddress from "./components/addAddress"; |
| | | import agreement from "./components/agreement"; |
| | | import addAddress from "@/pages/quanyi/components/addAddress"; |
| | | import agreement from "@/pages/quanyi/components/agreement"; |
| | | export default { |
| | | name: "add", |
| | | components: { |
| | |
| | | uni.request({ |
| | | url: _this.$webHost+'/api/v2/customer/getCstAddress', |
| | | data:{ |
| | | customerId: uni.getStorageSync('ygxLogin').customerId, |
| | | sourceId: uni.getStorageSync('ygxLogin').appId |
| | | customerId: uni.getStorageSync('qxgLogin').customerId, |
| | | sourceId: uni.getStorageSync('qxgLogin').appId |
| | | }, |
| | | success: function (res) { |
| | | _this.addressDetail = res.data.data; |
| | |
| | | |
| | | |
| | | uni.request({ |
| | | url: _this.$webHost+'/api/v2/xinheyuan/bank/list/fake/'+uni.getStorageSync('ygxLogin').customerId, |
| | | url: _this.$webHost+'/api/v2/xinheyuan/bank/list/fake/'+uni.getStorageSync('qxgLogin').customerId, |
| | | success(res){ |
| | | console.log(res.data.data); |
| | | this.bankList = res.data.data; |
| | |
| | | uni.setStorageSync('windowHeight',uni.getSystemInfoSync().windowHeight) |
| | | |
| | | uni.request({ |
| | | url:_this.$webHost+`/api/v2/pay/getPayBindCardInfo/${uni.getStorageSync('ygxLogin').customerId}`, |
| | | url:_this.$webHost+`/api/v2/pay/getPayBindCardInfo/${uni.getStorageSync('qxgLogin').customerId}`, |
| | | method:'get', |
| | | success:function(res){ |
| | | const dy = res.data.data[0]; |
| | |
| | | |
| | | |
| | | uni.request({ |
| | | url: _this.$webHost+'/api/v2/sign/signed/'+uni.getStorageSync('ygxLogin').customerId, |
| | | url: _this.$webHost+'/api/v2/sign/signed/'+uni.getStorageSync('qxgLogin').customerId, |
| | | method:'POST', |
| | | }) |
| | | |
| | |
| | | url: _this.$webHost+'/api/v2/pay/memberPurchaseBenefitsPays', |
| | | method:'POST', |
| | | data:{ |
| | | customerId: uni.getStorageSync('ygxLogin').customerId, |
| | | customerId: uni.getStorageSync('qxgLogin').customerId, |
| | | memberPeriodConfigId: uni.getStorageSync('memberPeriodConfigInfo').id |
| | | }, |
| | | success(){ |
| | |
| | | |
| | | |
| | | uni.request({ |
| | | url:_this.$webHost+`/api/v2/pay/getPayBindCardInfo/${uni.getStorageSync('ygxLogin').customerId}`, |
| | | url:_this.$webHost+`/api/v2/pay/getPayBindCardInfo/${uni.getStorageSync('qxgLogin').customerId}`, |
| | | method:'get', |
| | | success:function(res){ |
| | | _this.getPayBindCardInfo = res.data.data; |
| | |
| | | data:{ |
| | | ..._this.bindCardId, |
| | | |
| | | "customerId": uni.getStorageSync('ygxLogin').customerId, |
| | | "customerId": uni.getStorageSync('qxgLogin').customerId, |
| | | "cardPhone" : _this.cardPhone, //手机号 |
| | | |
| | | "cardNumber": _this.cardNumber, //卡号 |
| | |
| | | }, |
| | | success(e){ |
| | | if(e.data.code!==200){ |
| | | |
| | | uni.showTips({ |
| | | _this.$util.Tips({ |
| | | title: e.data.data |
| | | }); |
| | | } |
| | | uni.request({ |
| | | url:_this.$webHost+`/api/v2/pay/getPayBindCardInfo/${uni.getStorageSync('ygxLogin').customerId}`, |
| | | url:_this.$webHost+`/api/v2/pay/getPayBindCardInfo/${uni.getStorageSync('qxgLogin').customerId}`, |
| | | method:'get', |
| | | success:function(res){ |
| | | const ls = res.data.data; |
| | |
| | | |
| | | |
| | | |
| | | if(ls.length && !ls[1].bindStatus){ |
| | | if(ls.length>1 && !ls[1].bindStatus){ |
| | | _this.$refs.codeUi.open() |
| | | _this.isCounting = false; |
| | | _this.countText = ''; |
| | | return; |
| | | } |
| | | if(ls.length && !ls[2].bindStatus){ |
| | | if(ls.length>2 && !ls[2].bindStatus){ |
| | | _this.$refs.setUi.open(); |
| | | _this.isCounting = false; |
| | | _this.countText = ''; |
| | |
| | | if(!ls || !ls.some(item => item.bindStatus == 0)) {_this.kk();return;} |
| | | |
| | | |
| | | |
| | | _this.kk() |
| | | |
| | | |
| | | |
| | |
| | | |
| | | |
| | | }, |
| | | getSmsCode(){ |
| | | const that = this; |
| | | console.log(that.getPayBindCardInfo[0].paymentMethod); |
| | | if(this.isCounting){ |
| | | getSmsCode(){ |
| | | const that = this; |
| | | console.log(that.getPayBindCardInfo[0].paymentMethod); |
| | | if(this.isCounting){ |
| | | return |
| | | } |
| | | if(that.getPayBindCardInfo[0].bindStatus){ |
| | | if(!that.getPayBindCardInfo[1].bindStatus){ |
| | | that.$refs.codeUi.open(); |
| | | return |
| | | } |
| | | if(that.getPayBindCardInfo[0].bindStatus){ |
| | | if(!that.getPayBindCardInfo[1].bindStatus){ |
| | | that.$refs.codeUi.open(); |
| | | return |
| | | } |
| | | if(!that.getPayBindCardInfo[2].bindStatus){ |
| | | that.$refs.setUi.open(); |
| | | } |
| | | return |
| | | if(!that.getPayBindCardInfo[2].bindStatus){ |
| | | that.$refs.setUi.open(); |
| | | } |
| | | return |
| | | } |
| | | |
| | | if (!/^1(3|4|5|7|8|9|6)\d{9}$/i.test(that.cardPhone)) return uni.showToast({title: '请输入正确的手机号码', icon: 'none'}); |
| | | if (!/^1(3|4|5|7|8|9|6)\d{9}$/i.test(that.cardPhone)) return that.$util.Tips({ |
| | | title: '请输入正确的手机号码' |
| | | }); |
| | | |
| | | |
| | | that.isCounting = true; |
| | | that.isCounting = true; |
| | | |
| | | |
| | | |
| | | uni.request({ |
| | | url: that.$webHost+'/api/v2/xinheyuan/bankcard/save', |
| | | method:'POST', |
| | | data:{ |
| | | "customerId": uni.getStorageSync('ygxLogin').customerId, |
| | | "nameReal": that.cardName, // 名字 |
| | | "cardNo":that.cardNumber, |
| | | "idCard": that.idCardNo, |
| | | uni.request({ |
| | | url: that.$webHost+'/api/v2/xinheyuan/bankcard/save', |
| | | method:'POST', |
| | | data:{ |
| | | "customerId": uni.getStorageSync('qxgLogin').customerId, |
| | | "nameReal": that.cardName, // 名字 |
| | | "cardNo":that.cardNumber, |
| | | "idCard": that.idCardNo, |
| | | |
| | | "bankPhoneNo":that.cardPhone, |
| | | "bankCode": that.bankCode, |
| | | "bankName": that.bankName, |
| | | "phone": that.cardPhone, //手机号 |
| | | "paymentMethod": that.getPayBindCardInfo[0].paymentMethod , |
| | | "bankPhoneNo":that.cardPhone, |
| | | "bankCode": that.bankCode, |
| | | "bankName": that.bankName, |
| | | "phone": that.cardPhone, //手机号 |
| | | "paymentMethod": that.getPayBindCardInfo[0].paymentMethod , |
| | | |
| | | |
| | | "preBindType": "prebc", |
| | | "bankId": "1", |
| | | "preBindType": "prebc", |
| | | "bankId": "1", |
| | | |
| | | }, |
| | | success(){ |
| | | uni.request({ |
| | | url: that.$webHost+'/api/v2/pay/bindCardToCodes', |
| | | method:'POST', |
| | | data:{ |
| | | "customerId": uni.getStorageSync('ygxLogin').customerId, |
| | | "cardName": that.cardName, // 名字 |
| | | "cardIdNo": that.idCardNo, |
| | | }, |
| | | success(){ |
| | | uni.request({ |
| | | url: that.$webHost+'/api/v2/pay/bindCardToCodes', |
| | | method:'POST', |
| | | data:{ |
| | | "customerId": uni.getStorageSync('qxgLogin').customerId, |
| | | "cardName": that.cardName, // 名字 |
| | | "cardIdNo": that.idCardNo, |
| | | |
| | | "cardNumber":that.cardNumber, |
| | | "bankPhoneNo":that.cardPhone, |
| | | "bankCode": that.bankCode, |
| | | "bankName": that.bankName, |
| | | "cardPhone": that.cardPhone, //手机号 |
| | | "paymentMethod": that.getPayBindCardInfo[0].paymentMethod , |
| | | "cardNumber":that.cardNumber, |
| | | "bankPhoneNo":that.cardPhone, |
| | | "bankCode": that.bankCode, |
| | | "bankName": that.bankName, |
| | | "cardPhone": that.cardPhone, //手机号 |
| | | "paymentMethod": that.getPayBindCardInfo[0].paymentMethod , |
| | | |
| | | |
| | | "preBindType": "prebc", |
| | | "bankId": "1", |
| | | "preBindType": "prebc", |
| | | "bankId": "1", |
| | | |
| | | }, |
| | | success(res){ |
| | | if(res.data.code === 401){ |
| | | that.getUserInfo() |
| | | return; |
| | | } |
| | | |
| | | if(res.data.code !==200){ |
| | | uni.showToast({ |
| | | title: res.data.data, |
| | | icon: 'none' |
| | | }) |
| | | return; |
| | | } |
| | | |
| | | if(res.data.code === 200){ |
| | | that.bindCardId = res.data.data; |
| | | } else { |
| | | that.isCounting = false; |
| | | that.countText = ''; |
| | | uni.showToast({ |
| | | title: res.data.data, |
| | | icon: 'none' |
| | | }); |
| | | |
| | | if(!that.getPayBindCardInfo[0].bindStatus){ |
| | | |
| | | return; |
| | | } |
| | | |
| | | |
| | | if(!that.getPayBindCardInfo[1].bindStatus){ |
| | | that.$refs.codeUi.open() |
| | | that.isCounting = false; |
| | | that.countText = ''; |
| | | return |
| | | } if(!that.getPayBindCardInfo[2].bindStatus){ |
| | | that.isCounting = false; |
| | | that.countText = ''; |
| | | that.$refs.setUi.open() |
| | | return |
| | | } |
| | | } |
| | | |
| | | }, |
| | | success(res){ |
| | | if(res.data.code === 401){ |
| | | that.getUserInfo() |
| | | return; |
| | | } |
| | | }) |
| | | |
| | | let count = 60; |
| | | that.countText = `${count}s秒后重新获取`; |
| | | if(res.data.code !==200){ |
| | | uni.showToast({ |
| | | title: res.data.data, |
| | | icon: 'none' |
| | | }) |
| | | return; |
| | | } |
| | | |
| | | |
| | | const timer = setInterval(() => { |
| | | count--; |
| | | that.countText = `${count}s秒后重新获取`; |
| | | if (count <= 0) { |
| | | clearInterval(timer); |
| | | if(res.data.code === 200){ |
| | | that.bindCardId = res.data.data; |
| | | } else { |
| | | that.isCounting = false; |
| | | that.countText = ''; |
| | | } |
| | | },1000) |
| | | }, |
| | | fail(err){ |
| | | that.isCounting = false; |
| | | that.countText = ''; |
| | | uni.showToast({ |
| | | title: err, |
| | | icon: 'none' |
| | | }) |
| | | } |
| | | }) |
| | | uni.showToast({ |
| | | title: res.data.data, |
| | | icon: 'none' |
| | | }); |
| | | |
| | | if(!that.getPayBindCardInfo[0].bindStatus){ |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | }, |
| | | // 二次获取 |
| | | getCode(){ |
| | | if (this.isCounting_A) { |
| | | return; |
| | | } |
| | | const paymentMethod = this.getPayBindCardInfo[1]['paymentMethod']; |
| | | const _this = this; |
| | | const pro = uni.getStorageSync('ygxLogin') |
| | | pro['userName'] = _this.cardName; |
| | | uni.request({ |
| | | url: _this.$webHost+'/api/v2/pay/bindCardToCodes', |
| | | method:'POST', |
| | | data:{ |
| | | cardIdNo: _this.idCardNo, |
| | | customerId: pro.customerId, |
| | | cardName: _this.cardName, |
| | | cardNo: _this.cardIdNo, |
| | | cardPhone: _this.cardPhone, |
| | | cardNumber: _this.cardNumber, |
| | | bankName: _this.bankName, |
| | | preBindType: "prebc", |
| | | paymentMethod:paymentMethod, |
| | | againType : true |
| | | }, |
| | | success(dt){ |
| | | if(dt.data.code === 401){ |
| | | _this.getUserInfo() |
| | | return; |
| | | } |
| | | const res = dt.data.data; |
| | | if(!res){ |
| | | return; |
| | | } |
| | | _this.callbackData = res; |
| | | _this.bindCardId = res; |
| | | uni.showToast({ |
| | | title: "验证码已发送", |
| | | icon: "none", |
| | | }); |
| | | // 设置倒计时功能 |
| | | let count = 60; |
| | | |
| | | const timer = setInterval(() => { |
| | | count--; |
| | | if (count <= 0) { |
| | | clearInterval(timer); |
| | | _this.$set(_this, "isCounting_A", false); |
| | | } else { |
| | | _this.$set(_this, "isCounting_A", true); |
| | | _this.$set(_this, "countText_A", `${count}秒后重新获取`); |
| | | } |
| | | }, 1000); |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | submitPlan(){ |
| | | |
| | | const _this = this; |
| | | |
| | | if (!this.verificationCodeT) { |
| | | uni.showToast({ |
| | | title: "请输入验证码", |
| | | icon: "none", |
| | | }); |
| | | return; |
| | | } |
| | | |
| | | const callbackData = _this.callbackData; |
| | | const paymentMethod = _this.getPayBindCardInfo[1]['paymentMethod']; |
| | | |
| | | |
| | | uni.request({ |
| | | url: _this.$webHost+'/api/v2/pay/verifySMSCodes', |
| | | method:'POST', |
| | | data:{ |
| | | ...callbackData, |
| | | |
| | | "customerId": uni.getStorageSync('ygxLogin').customerId, |
| | | "cardPhone" : _this.cardPhone, //手机号 |
| | | |
| | | "cardNumber": _this.cardNumber, //卡号 |
| | | paymentMethod:paymentMethod, |
| | | "cardName" : _this.cardName, // 名字 |
| | | "cardIdNo" : _this.cardIdNo, |
| | | "bankName" : _this.bankName, |
| | | "cardNo" : _this.cardNumber, |
| | | |
| | | "verificationCode": _this.verificationCodeT, |
| | | }, |
| | | success(dts){ |
| | | if(dts.data.code!==200){ |
| | | |
| | | uni.showTips({ |
| | | title: dts.data.data |
| | | }); |
| | | return |
| | | } |
| | | |
| | | uni.request({ |
| | | url:_this.$webHost+`/api/v2/pay/getPayBindCardInfo/${uni.getStorageSync('ygxLogin').customerId}`, |
| | | method:'get', |
| | | success:function(res){ |
| | | const ls = res.data.data; |
| | | _this.getPayBindCardInfo = res.data.data; |
| | | if(ls.length>2 && !ls[2].bindStatus){ |
| | | _this.isCounting_A = false; |
| | | _this.countText_A = ''; |
| | | _this.$refs.codeUi.close() |
| | | _this.$refs.setUi.open() |
| | | return; |
| | | } |
| | | |
| | | if(!ls || !ls.some(item => item.bindStatus == 0)) {_this.kk();return;} |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | if(!that.getPayBindCardInfo[1].bindStatus){ |
| | | that.$refs.codeUi.open() |
| | | that.isCounting = false; |
| | | that.countText = ''; |
| | | return |
| | | } if(!that.getPayBindCardInfo[2].bindStatus){ |
| | | that.isCounting = false; |
| | | that.countText = ''; |
| | | that.$refs.setUi.open() |
| | | return |
| | | } |
| | | } |
| | | |
| | | }) |
| | | } |
| | | }) |
| | | |
| | | }, |
| | | // 三次 |
| | | getCode_san(){ |
| | | if (this.isCounting_B) { |
| | | return; |
| | | } |
| | | const paymentMethod = this.getPayBindCardInfo[2]['paymentMethod']; |
| | | const _this = this; |
| | | const pro = uni.getStorageSync('ygxLogin') |
| | | pro['userName'] = _this.cardName; |
| | | uni.request({ |
| | | url: _this.$webHost+'/api/v2/pay/bindCardToCodes', |
| | | method:'POST', |
| | | data:{ |
| | | cardIdNo: _this.idCardNo, |
| | | customerId: pro.customerId, |
| | | cardName: _this.cardName, |
| | | cardNo: _this.cardIdNo, |
| | | cardPhone: _this.cardPhone, |
| | | cardNumber: _this.cardNumber, |
| | | bankName: _this.bankName, |
| | | preBindType: "prebc", |
| | | paymentMethod:paymentMethod, |
| | | againType : true |
| | | }, |
| | | success(dt){ |
| | | if(dt.data.code ==401){ |
| | | _this.getUserInfo() |
| | | return; |
| | | } |
| | | }) |
| | | |
| | | if(dt.data.code !==200){ |
| | | uni.showToast({ |
| | | title: dt.data.data, |
| | | icon: 'none' |
| | | }) |
| | | return; |
| | | let count = 60; |
| | | that.countText = `${count}s秒后重新获取`; |
| | | |
| | | |
| | | const timer = setInterval(() => { |
| | | count--; |
| | | that.countText = `${count}s秒后重新获取`; |
| | | if (count <= 0) { |
| | | clearInterval(timer); |
| | | that.isCounting = false; |
| | | that.countText = ''; |
| | | } |
| | | |
| | | const res = dt.data.data; |
| | | if(!res){ |
| | | return; |
| | | } |
| | | _this.callbackData = res; |
| | | _this.bindCardId = res; |
| | | uni.showToast({ |
| | | title: "验证码已发送", |
| | | icon: "none", |
| | | }); |
| | | // 设置倒计时功能 |
| | | let count = 60; |
| | | |
| | | const timer = setInterval(() => { |
| | | count--; |
| | | if (count <= 0) { |
| | | clearInterval(timer); |
| | | _this.$set(_this, "isCounting_B", false); |
| | | } else { |
| | | _this.$set(_this, "isCounting_B", true); |
| | | _this.$set(_this, "countText_B", `${count}秒后重新获取`); |
| | | } |
| | | }, 1000); |
| | | } |
| | | }) |
| | | }, |
| | | submitPlan_san(){ |
| | | |
| | | const _this = this; |
| | | |
| | | |
| | | if (!this.verificationCodeS) { |
| | | },1000) |
| | | }, |
| | | fail(err){ |
| | | that.isCounting = false; |
| | | that.countText = ''; |
| | | uni.showToast({ |
| | | title: "请输入验证码", |
| | | title: err, |
| | | icon: 'none' |
| | | }) |
| | | } |
| | | }) |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | }, |
| | | // 二次获取 |
| | | getCode(){ |
| | | if (this.isCounting_A) { |
| | | return; |
| | | } |
| | | const paymentMethod = this.getPayBindCardInfo[1]['paymentMethod']; |
| | | const _this = this; |
| | | const pro = uni.getStorageSync('qxgLogin') |
| | | pro['userName'] = _this.cardName; |
| | | uni.request({ |
| | | url: _this.$webHost+'/api/v2/pay/bindCardToCodes', |
| | | method:'POST', |
| | | data:{ |
| | | cardIdNo: _this.idCardNo, |
| | | customerId: pro.customerId, |
| | | cardName: _this.cardName, |
| | | cardNo: _this.cardIdNo, |
| | | cardPhone: _this.cardPhone, |
| | | cardNumber: _this.cardNumber, |
| | | bankName: _this.bankName, |
| | | preBindType: "prebc", |
| | | paymentMethod:paymentMethod, |
| | | againType : true |
| | | }, |
| | | success(dt){ |
| | | if(dt.data.code === 401){ |
| | | _this.getUserInfo() |
| | | return; |
| | | } |
| | | const res = dt.data.data; |
| | | if(!res){ |
| | | return; |
| | | } |
| | | _this.callbackData = res; |
| | | _this.bindCardId = res; |
| | | uni.showToast({ |
| | | title: "验证码已发送", |
| | | icon: "none", |
| | | }); |
| | | return; |
| | | // 设置倒计时功能 |
| | | let count = 60; |
| | | |
| | | const timer = setInterval(() => { |
| | | count--; |
| | | if (count <= 0) { |
| | | clearInterval(timer); |
| | | _this.$set(_this, "isCounting_A", false); |
| | | } else { |
| | | _this.$set(_this, "isCounting_A", true); |
| | | _this.$set(_this, "countText_A", `${count}秒后重新获取`); |
| | | } |
| | | }, 1000); |
| | | } |
| | | }) |
| | | }, |
| | | |
| | | const callbackData = _this.callbackData; |
| | | const paymentMethod = _this.getPayBindCardInfo[2]['paymentMethod']; |
| | | submitPlan(){ |
| | | |
| | | const _this = this; |
| | | |
| | | if (!this.verificationCodeT) { |
| | | uni.showToast({ |
| | | title: "请输入验证码", |
| | | icon: "none", |
| | | }); |
| | | return; |
| | | } |
| | | |
| | | const callbackData = _this.callbackData; |
| | | const paymentMethod = _this.getPayBindCardInfo[1]['paymentMethod']; |
| | | |
| | | |
| | | uni.request({ |
| | | url: _this.$webHost+'/api/v2/pay/verifySMSCodes', |
| | | method:'POST', |
| | | data:{ |
| | | ...callbackData, |
| | | uni.request({ |
| | | url: _this.$webHost+'/api/v2/pay/verifySMSCodes', |
| | | method:'POST', |
| | | data:{ |
| | | ...callbackData, |
| | | |
| | | "customerId": uni.getStorageSync('ygxLogin').customerId, |
| | | "cardPhone" : _this.cardPhone, //手机号 |
| | | "customerId": uni.getStorageSync('qxgLogin').customerId, |
| | | "cardPhone" : _this.cardPhone, //手机号 |
| | | |
| | | "cardNumber": _this.cardNumber, //卡号 |
| | | paymentMethod:paymentMethod, |
| | | "cardName" : _this.cardName, // 名字 |
| | | "cardIdNo" : _this.cardIdNo, |
| | | "bankName" : _this.bankName, |
| | | "cardNo" : _this.cardNumber, |
| | | "cardNumber": _this.cardNumber, //卡号 |
| | | paymentMethod:paymentMethod, |
| | | "cardName" : _this.cardName, // 名字 |
| | | "cardIdNo" : _this.cardIdNo, |
| | | "bankName" : _this.bankName, |
| | | "cardNo" : _this.cardNumber, |
| | | |
| | | "verificationCode": _this.verificationCodeS, |
| | | }, |
| | | success(dts){ |
| | | if(dts.data.code!==200){ |
| | | uni.showTitle({ |
| | | title: dts.data.data |
| | | }); |
| | | "verificationCode": _this.verificationCodeT, |
| | | }, |
| | | success(dts){ |
| | | if(dts.data.code!==200){ |
| | | return |
| | | } |
| | | |
| | | uni.request({ |
| | | url:_this.$webHost+`/api/v2/pay/getPayBindCardInfo/${uni.getStorageSync('qxgLogin').customerId}`, |
| | | method:'get', |
| | | success:function(res){ |
| | | const ls = res.data.data; |
| | | _this.getPayBindCardInfo = res.data.data; |
| | | if(ls.length>2 && !ls[2].bindStatus){ |
| | | _this.isCounting_A = false; |
| | | _this.countText_A = ''; |
| | | _this.$refs.codeUi.close() |
| | | _this.$refs.setUi.open() |
| | | return; |
| | | } |
| | | |
| | | if(!ls || !ls.some(item => item.bindStatus == 0)) {_this.kk();return;} |
| | | |
| | | } |
| | | |
| | | uni.request({ |
| | | url:_this.$webHost+`/api/v2/pay/getPayBindCardInfo/${uni.getStorageSync('ygxLogin').customerId}`, |
| | | method:'get', |
| | | success:function(res){ |
| | | const ls = res.data.data; |
| | | _this.getPayBindCardInfo = res.data.data; |
| | | _this.isCounting_B = false; |
| | | _this.countText_B = ''; |
| | | _this.$refs.setUi.close() |
| | | _this.$refs.codeUi.close() |
| | | if(!ls || !ls.some(item => item.bindStatus == 0)) {_this.kk();return;} |
| | | }) |
| | | } |
| | | }) |
| | | |
| | | |
| | | } |
| | | |
| | | }) |
| | | } |
| | | }) |
| | | |
| | | }, |
| | | |
| | | |
| | | |
| | | getUserInfo() { |
| | | |
| | | const data = uni.getStorageSync('LOGING_DATA') |
| | | console.log(data); |
| | | this.$store.commit("LOGIN", { |
| | | 'token': data.token |
| | | }); |
| | | this.$store.commit('UPDATE_USERINFO', { |
| | | avatar: data.avatar, |
| | | nickname: data.nickname, |
| | | phone: data.phone |
| | | }); |
| | | this.$store.commit("SETUID", data.id) |
| | | |
| | | uni.reLaunch({ |
| | | url: '/pages/index/index' |
| | | }); |
| | | }, |
| | | }, |
| | | onUnload() { |
| | | // 三次 |
| | | getCode_san(){ |
| | | if (this.isCounting_B) { |
| | | return; |
| | | } |
| | | const paymentMethod = this.getPayBindCardInfo[2]['paymentMethod']; |
| | | const _this = this; |
| | | const pro = uni.getStorageSync('qxgLogin') |
| | | pro['userName'] = _this.cardName; |
| | | uni.request({ |
| | | url: _this.$webHost+'/api/v2/pay/bindCardToCodes', |
| | | method:'POST', |
| | | data:{ |
| | | cardIdNo: _this.idCardNo, |
| | | customerId: pro.customerId, |
| | | cardName: _this.cardName, |
| | | cardNo: _this.cardIdNo, |
| | | cardPhone: _this.cardPhone, |
| | | cardNumber: _this.cardNumber, |
| | | bankName: _this.bankName, |
| | | preBindType: "prebc", |
| | | paymentMethod:paymentMethod, |
| | | againType : true |
| | | }, |
| | | success(dt){ |
| | | if(dt.data.code ==401){ |
| | | _this.getUserInfo() |
| | | return; |
| | | } |
| | | |
| | | if(dt.data.code !==200){ |
| | | uni.showToast({ |
| | | title: dt.data.data, |
| | | icon: 'none' |
| | | }) |
| | | return; |
| | | } |
| | | |
| | | const res = dt.data.data; |
| | | if(!res){ |
| | | return; |
| | | } |
| | | _this.callbackData = res; |
| | | _this.bindCardId = res; |
| | | uni.showToast({ |
| | | title: "验证码已发送", |
| | | icon: "none", |
| | | }); |
| | | // 设置倒计时功能 |
| | | let count = 60; |
| | | |
| | | const timer = setInterval(() => { |
| | | count--; |
| | | if (count <= 0) { |
| | | clearInterval(timer); |
| | | _this.$set(_this, "isCounting_B", false); |
| | | } else { |
| | | _this.$set(_this, "isCounting_B", true); |
| | | _this.$set(_this, "countText_B", `${count}秒后重新获取`); |
| | | } |
| | | }, 1000); |
| | | } |
| | | }) |
| | | }, |
| | | submitPlan_san(){ |
| | | |
| | | const _this = this; |
| | | |
| | | |
| | | if (!this.verificationCodeS) { |
| | | uni.showToast({ |
| | | title: "请输入验证码", |
| | | icon: "none", |
| | | }); |
| | | return; |
| | | } |
| | | |
| | | const callbackData = _this.callbackData; |
| | | const paymentMethod = _this.getPayBindCardInfo[2]['paymentMethod']; |
| | | |
| | | |
| | | uni.request({ |
| | | url: _this.$webHost+'/api/v2/pay/verifySMSCodes', |
| | | method:'POST', |
| | | data:{ |
| | | ...callbackData, |
| | | |
| | | "customerId": uni.getStorageSync('qxgLogin').customerId, |
| | | "cardPhone" : _this.cardPhone, //手机号 |
| | | |
| | | "cardNumber": _this.cardNumber, //卡号 |
| | | paymentMethod:paymentMethod, |
| | | "cardName" : _this.cardName, // 名字 |
| | | "cardIdNo" : _this.cardIdNo, |
| | | "bankName" : _this.bankName, |
| | | "cardNo" : _this.cardNumber, |
| | | |
| | | "verificationCode": _this.verificationCodeS, |
| | | }, |
| | | success(dts){ |
| | | if(dts.data.code!==200){ |
| | | _this.showToast({ |
| | | title: dts.data.data |
| | | }); |
| | | } |
| | | |
| | | uni.request({ |
| | | url:_this.$webHost+`/api/v2/pay/getPayBindCardInfo/${uni.getStorageSync('qxgLogin').customerId}`, |
| | | method:'get', |
| | | success:function(res){ |
| | | const ls = res.data.data; |
| | | _this.getPayBindCardInfo = res.data.data; |
| | | _this.isCounting_B = false; |
| | | _this.countText_B = ''; |
| | | _this.$refs.setUi.close() |
| | | _this.$refs.codeUi.close() |
| | | if(!ls || !ls.some(item => item.bindStatus == 0)) {_this.kk();return;} |
| | | |
| | | |
| | | } |
| | | |
| | | }) |
| | | } |
| | | }) |
| | | |
| | | }, |
| | | |
| | | |
| | | |
| | | getUserInfo() { |
| | | |
| | | |
| | | |
| | | uni.reLaunch({ |
| | | url: '/pages/index/index' |
| | | }); |
| | | }, |
| | | }, |
| | | onUnload() { |
| | | clearInterval(this.interval); |
| | | }, |
| | | } |