hmp преди 4 години
родител
ревизия
f91ea71e8b

+ 3 - 0
assets/http/api.js

@@ -8,6 +8,9 @@ const uploadFile =(p)=> http.upload('blade-resource/oss/endpoint/put-file', {nam
 //微信api
 const wxApp={
 	getOpenId:p => http.get('/wx-app/getOpenId', {params:p}),
+	createWxaQrCode: p => http.get('/wx-app/createWxaQrCode', {
+		params: p
+	}),
 }
 
 //字典

+ 36 - 2
components/mp-tree/tree.vue

@@ -47,8 +47,14 @@
 							<i v-if="newCheckList.length>0&&item.id == newCheckList[0].id" class="txt iconfont icon-selected"/>
 							<i style="color: #b8b8b8;" v-else class="txt iconfont icon-weixuanzhong1"/>
 						</view>
-						<view v-if="!item.hasChildren" @click.stop="checkboxChange(item,index,item.bx,item.qx)"><slot v-bind:item="item"></slot></view>
-						<slot v-else v-bind:item="item"></slot>
+						<view v-if="!item.hasChildren" @click.stop="checkboxChange(item,index,item.bx,item.qx)">
+							<view class="content-item">
+								<view class="word">{{item.dictKey}}</view>
+							</view>
+						</view>
+						<view v-else class="content-item">
+							<view class="word">{{item.dictKey}}</view>
+						</view>
 						<view class="right"><i v-if="item.hasChildren&&item.children.length>0" class="iconfont icon-z043"></i></view>
 					</label>
 				</view>
@@ -68,6 +74,34 @@
 	.safe-area-inset-bottom{
 		margin-bottom: calc(env(safe-area-inset-bottom) - 20rpx);
 	}
+	
+	.content-item {
+		display: flex;
+		position: relative;
+		align-items: center;
+	
+		.person {
+			height: 64rpx;
+			min-width: 64rpx;
+			border-radius: 50%;
+			border: 1rpx solid rgba(0, 149, 235, 0.15);
+			background-color: rgba(0, 149, 235, 0.1);
+			margin-left: 0px;
+			color: #0095F2;
+			line-height: 64rpx;
+			font-size: 22rpx;
+			text-align: center;
+			margin-left: 20rpx;
+		}
+	
+		.word {
+			margin-left: 20rpx;
+			font-size: 30rpx;
+			color: #5b5757;
+			width: 500rpx;
+			word-break: break-all;
+		}
+	}
 </style>
 
 

+ 274 - 0
components/toast/toast.vue

@@ -0,0 +1,274 @@
+<template>
+	<view :style="{zIndex: zIndex}" class="container">
+		<block v-for="message in messageQueue" :key="message.id">
+			<view :class="[message.animation, backgroundClass(message)]" class="message">
+				<text v-if="message.type === 'info'" class="bm-icon info">&#xe671;</text>
+				<text v-if="message.type === 'success'" class="bm-icon success">&#xe62f;</text>
+				<text v-if="message.type === 'warn'" class="bm-icon warn">&#xe671;</text>
+				<text v-if="message.type === 'error'" class="bm-icon error">&#xe630;</text>
+				<text>{{message.content}}</text>
+			</view>
+		</block>
+	</view>
+</template>
+
+<script>
+	// 需要支持的单独配置项:显示时长、是否启用背景、类型、内容
+	export default {
+		name: 'bobo-message-cpt',
+		props: {
+			zIndex: {
+				type: Number,
+				default: 10000
+			},
+			duration: {
+				type: Number,
+				default: 2000
+			},
+			background: {
+				type: Boolean,
+				default: false
+			}
+		},
+		data() {
+			return {
+				messageQueue: [],
+				lastId: 0
+			}
+		},
+		computed: {
+			backgroundClass() {
+				return msg => {
+					return this.background || msg.background ? `background-${msg.type}` : ''
+				}
+			}
+		},
+		methods: {
+			/**
+			 * 展示普通提示信息
+			 * @param {Object} content
+			 */
+			info(arg) {
+				const message = {
+					type: 'info'
+				}
+				if (typeof arg === 'object' && arg) {
+					message.content = arg.content
+					message.duration = arg.duration
+					message.background = arg.background
+				} else if(typeof arg === 'string') {
+					message.content = arg
+				}
+				this.fadeIn(message)
+			},
+			/**
+			 * 展示成功提示
+			 * @param {Object} content
+			 */
+			success(arg) {
+				const message = {
+					type: 'success'
+				}
+				if (typeof arg === 'object' && arg) {
+					message.content = arg.content
+					// 显示时长会用在 settimeout的参数中,必须保证类型正确
+					if (arg.duration && typeof arg.duration === 'number' && arg.duration >= 0) {
+						message.duration = arg.duration
+					}
+					message.background = arg.background
+				} else if(typeof arg === 'string') {
+					message.content = arg
+				}
+				this.fadeIn(message)
+			},
+			/**
+			 * 展示警告提示
+			 */
+			warn(arg) {
+				const message = {
+					type: 'warn'
+				}
+				if (typeof arg === 'object' && arg) {
+					message.content = arg.content
+					if (arg.duration && typeof arg.duration === 'number' && arg.duration >= 0) {
+						message.duration = arg.duration
+					}
+					message.background = arg.background
+				} else if(typeof arg === 'string') {
+					message.content = arg
+				}
+				this.fadeIn(message)
+			},
+			/**
+			 * 展示错误提示
+			 * @param {Object} message
+			 */
+			error(arg) {
+				const message = {
+					type: 'error'
+				}
+				if (typeof arg === 'object' && arg) {
+					message.content = arg.content
+					if (arg.duration && typeof arg.duration === 'number' && arg.duration >= 0) {
+						message.duration = arg.duration
+					}
+					message.background = arg.background
+				} else if(typeof arg === 'string') {
+					message.content = arg
+				}
+				this.fadeIn(message)
+			},
+			fadeIn(message) {
+				message.id = this.generateId()
+				message.animation = 'fadeIn'
+				this.messageQueue.push(message)
+				// 动画执行完毕后取消动画效果,防止列表刷新时重新执行动画
+				setTimeout(() => {
+					message.animation = ''
+				}, 410)
+				// 显示一段时间后隐藏
+				setTimeout(() => {
+					this.fadeOut(message)
+				}, message.duration || this.duration)
+			},
+			fadeOut(message) {
+				message.animation = 'fadeOut'
+				setTimeout(() => {
+					let idx = 0
+					this.messageQueue.some((msg, index) => {
+						if (msg.id === message.id) {
+							idx = index
+							return true
+						}
+					})
+					this.messageQueue.splice(idx, 1)
+				}, 500)
+			},
+			generateId() {
+				return (new Date()).getTime() * 1000 + (this.lastId++) % 1000
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	
+	@font-face {
+	  font-family: 'bobo-message-iconfont';  /* project id 1477381 */
+	  src: url('https://at.alicdn.com/t/font_1477381_i3ji49ios6.eot');
+	  src: url('https://at.alicdn.com/t/font_1477381_i3ji49ios6.eot?#iefix') format('embedded-opentype'),
+	  url('https://at.alicdn.com/t/font_1477381_i3ji49ios6.ttf') format('truetype'),
+	  url('https://at.alicdn.com/t/font_1477381_i3ji49ios6.svg#iconfont') format('svg');
+	}
+
+	.container {
+		left: 0;
+		right: 0;
+		top: 30%;
+		min-width: 10rpx;
+		max-width: 550rpx;
+		position: fixed;
+		margin: 0 auto;
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		// 透明层允许点击穿透
+		pointer-events: none;
+
+		.message {
+			display: flex;
+			// 内容区域禁止点击穿透
+			pointer-events: all;
+			align-items: center;
+			padding: 8px 16px;
+			border-radius: 4px;
+			margin-top: 5px;
+			box-shadow: 0 1px 6px rgba(0, 0, 0, .2);
+			background: #fff;
+			min-height: 37px;
+			transition: all .5s;
+			box-sizing: border-box;
+
+			.bm-icon {
+				font-family: bobo-message-iconfont;
+				margin-right: 10rpx;
+			}
+
+			.info {
+				color: #288ced;
+			}
+
+			.success {
+				color: #09be70;
+			}
+
+			.warn {
+				color: #ff991f;
+			}
+
+			.error {
+				color: #ef4017;
+			}
+		}
+
+		.background-info {
+			border: 2px solid #d4eefe;
+			background: #f0faff;
+			color: #288ced;
+			box-shadow: none !important;
+		}
+
+		.background-success {
+			border: 2px solid #baf2d1;
+			background: #edfff4;
+			color: #09be70;
+			box-shadow: none !important;
+		}
+
+		.background-warn {
+			border: 2px solid #ffe7a7;
+			background: #fff9e7;
+			color: #ff991f;
+			box-shadow: none !important;
+		}
+
+		.background-error {
+			border: 2px solid #ffcfb9;
+			background: #ffefe6;
+			color: #ef4017;
+			box-shadow: none !important;
+		}
+
+		.fadeIn {
+			animation: fadeIn 0.4s both;
+		}
+
+		@keyframes fadeIn {
+			from {
+				opacity: 0;
+				transform: translate(0, -30px);
+			}
+
+			to {
+				opacity: 1;
+				transform: translate(0, 0);
+			}
+		}
+
+		.fadeOut {
+			animation: fadeOut 0.4s forwards;
+		}
+
+		@keyframes fadeOut {
+			from {
+				opacity: 1;
+				transform: translate(0, 0);
+			}
+
+			to {
+				opacity: 0;
+				margin-top: -37px;
+			}
+		}
+	}
+</style>

+ 33 - 0
main.js

@@ -10,6 +10,9 @@ Vue.mixin(vuexStore);
 import uView from "uview-ui";
 Vue.use(uView);
 
+import toast from '@/components/toast/toast.vue'
+Vue.use(toast)
+
 //mescroll
 import MescrollBody from "@/components/mescroll-body/mescroll-body.vue"
 Vue.component('MescrollBody', MescrollBody)
@@ -68,6 +71,36 @@ Vue.prototype.$back=function(){
 	})
 }
 
+Vue.prototype.$getBankCodeType=function(data){
+	let bankCodeType=''
+	switch (data){
+		case 'DEBIT_CARD':
+			bankCodeType='借记卡'
+			break;
+		case 'CREDIT_CARD':
+			bankCodeType='贷记卡'
+			break;
+		case 'DEBIT_CARD':
+			bankCodeType='借记卡'
+			break;
+		case 'QUASI_CREDIT_CARD':
+			bankCodeType='准贷卡'
+			break;
+		case 'PASSBOOK':
+			bankCodeType='存折'
+			break;
+		case 'UNIT_SETTLE_CARD':
+			bankCodeType='单位结算卡'
+			break;
+		case 'PUBLIC_CARD':
+			bankCodeType='对公卡'
+			break;
+		default:
+			break;
+	}
+	return bankCodeType
+}
+
 //判空函数
 Vue.prototype.$isEmpty=function(value){
 	switch (typeof value) {

+ 1 - 34
pages/chooseLable/chooseLable.vue

@@ -1,13 +1,8 @@
 <template>
 	<view>
-		<mp-tree v-slot:default="{item}" :checkList="checkList" v-if="tree.length>0"  :props="prop"
+		<mp-tree :checkList="checkList" v-if="tree.length>0"  :props="prop"
 			@sendValue="confirm" :parent="false" :isCheck="true" :trees="tree">
 			<!-- 内容插槽 -->
-			<view>
-				<view class="content-item">
-					<view class="word">{{item.dictKey}}</view>
-				</view>
-			</view>
 		</mp-tree>
 
 	</view>
@@ -100,32 +95,4 @@
 			color: #fff;
 		}
 	}
-
-	.content-item {
-		display: flex;
-		position: relative;
-		align-items: center;
-
-		.person {
-			height: 64rpx;
-			min-width: 64rpx;
-			border-radius: 50%;
-			border: 1rpx solid rgba(0, 149, 235, 0.15);
-			background-color: rgba(0, 149, 235, 0.1);
-			margin-left: 0px;
-			color: #0095F2;
-			line-height: 64rpx;
-			font-size: 22rpx;
-			text-align: center;
-			margin-left: 20rpx;
-		}
-
-		.word {
-			margin-left: 20rpx;
-			font-size: 30rpx;
-			color: #5b5757;
-			width: 500rpx;
-			word-break: break-all;
-		}
-	}
 </style>

+ 2 - 1
pages/login/login.vue

@@ -182,6 +182,7 @@
 	}
 
 	.bg {
+		overflow: hidden;
 		z-index: 99;
 		height: 440rpx;
 		width: 440rpx;
@@ -192,8 +193,8 @@
 		border-radius: 50%;
 		box-shadow: 0rpx 0rpx 50rpx #c5803b;
 	}
-
 	.bg1 {
+		overflow: hidden;
 		height: 500rpx;
 		width: 500rpx;
 		position: absolute;

+ 10 - 4
pages/material-download/createOrderPoster.vue

@@ -11,7 +11,7 @@
 			<!-- #endif -->
 		</view>
 		
-		<u-modal cancel-color="#c0c4cc" :show-cancel-button="true" cancel-text="暂不生成"  @cancel="$back" confirm-color="#FF9447" @confirm="modalConfirm" title="提示" 
+		<u-modal  :show-cancel-button="true" cancel-text="暂不生成"  @cancel="$back" confirm-color="#FF9447" @confirm="modalConfirm" title="提示" 
 			v-model="modalShow">
 			<view class="slot-content" style="margin: 30rpx;">
 				<u-form label-width="150" ref="uForm">
@@ -47,6 +47,7 @@
 		}),
 		onLoad(options) {
 			this.index=options.index
+			
 		},
 		methods: {
 			modalConfirm(){
@@ -76,10 +77,13 @@
 				let bgImg = `/static/poster/wuliao${this.index}.png`
 				let shopDetail = this.$cache.get('selectedShop')
 				let text=`${shopDetail.name}【${number}号座】`
-				
-				let qrCodeText = this.$global.QR_PATH + this.vuex_shopId
+				let params={
+					shopId:this.vuex_shopId,
+					seatNum:`${number}号座`
+				}
+				let qrCodeText = this.$global.QR_PATH + this.$u.queryParams(params)
 				let titleParams={
-					x:w / 2 - (text.length * 15 + 6),
+					x:w / 2 - (text.length * 10 + 6),
 					y:h / 2 - 240,
 					color:"#000",
 					text:text			}
@@ -123,6 +127,8 @@
 					await ctx.drawQrCode(qrParams);
 				});
 				
+				
+				
 				// 绘制底部文字内容
 				dp.draw((ctx) => {
 					ctx.fillStyle = titleParams.color;

+ 1 - 1
pages/material-download/createPoster.vue

@@ -52,7 +52,7 @@
 			
 			let qrCodeText = this.$global.QR_PATH + this.vuex_shopId
 			let titleParams={
-				x:w / 2 - (text.length * 15 + 6),
+				x:w / 2 - (text.length * 8 + 6),
 				y:h / 2 - 240,
 				color:"#000",
 				text:text			}

+ 8 - 6
pages/member/add.vue

@@ -24,7 +24,7 @@
 					<text style="margin: 0 20rpx;">=</text>
 				</view>
 				<view class="center" style="width: 45%;margin-left: 20rpx;">
-					<u-input type="digit" height="50" :border="true" :clearable="false" v-model="form.point" placeholder="请输入积分数"/>
+					<u-input disabled type="digit" height="50" :border="true" :clearable="false" v-model="form.point" placeholder="请输入积分数"/>
 					<view class="cu-tag bg-color radius">
 						积分
 					</view>
@@ -41,7 +41,7 @@
 					<text>消费1元赠送</text>
 				</view>
 				<view class="center" style="width: 45%;margin-left: 20rpx;">
-					<u-input type="digit" height="50" :border="true" :clearable="false" v-model="form.consumeOnePoint" placeholder="请输入积分数"/>
+					<u-input disabled type="digit" height="50" :border="true" :clearable="false" v-model="form.consumeOnePoint" placeholder="请输入积分数"/>
 					<view class="cu-tag bg-color radius">
 						积分
 					</view>
@@ -66,8 +66,8 @@
 		data() {
 			return {
 				form:{
-					point:'',
-					consumeOnePoint:''
+					point:'1',
+					consumeOnePoint:'0.01'
 				}
 			}
 		},
@@ -82,12 +82,14 @@
 					return
 				}
 				let id=this.vuex_shopId
-				this.$api.shop.submit({
+				let params={
 					id,
 					sendPointUnit: this.form.consumeOnePoint,
 					pointRate: this.$digital.keepTwoDecimalFull(1/this.form.point),
 					isOpenMember: 1
-				}).then(res=>{
+				}
+				console.log(params);
+				this.$api.shop.submit(params).then(res=>{
 					if (res.success) {
 						this.$dialog.showModal('创建成功',false).then(res=>{
 							uni.redirectTo({

+ 81 - 34
pages/shop-info/shop-info.vue

@@ -10,12 +10,12 @@
 			<view class="title u-flex u-row-between u-col-center">
 				<text v-if="step==1">请选择商家类型</text>
 				<text v-else>完善商家资料</text>
-				<text v-show="step<=totalStep && step!=1 && (isEdit&&step!=2)" @click="prevStep" class="u-font-24" style="color: #999">上一步</text>
+				<text v-show="step<=totalStep && step!=1" @click="prevStep" class="u-font-24" style="color: #999">上一步</text>
 			</view>
 			
 			<u-form :model="form" :label-width="labelWidth" ref="uForm">
 				<view v-if="step==1" class="steps1" style="height: 900rpx;padding-bottom: 40rpx;">
-					<view @click="clickType(1)" class="item u-border-bottom" >
+					<view @click="typeIndex=1" class="item u-border-bottom" >
 						<view class="flex">
 							<view class="center">
 								<image class="icon" src="../../static/icon/shop2.png" mode=""></image>
@@ -31,7 +31,7 @@
 						</view>
 					</view>
 					
-					<view @click="clickType(0)" class="item u-border-bottom" style="margin-top: 40rpx;">
+					<view @click="typeIndex=0" class="item u-border-bottom" style="margin-top: 40rpx;">
 						<view class="flex">
 							<view class="center">
 								<image class="icon" src="../../static/icon/shop1.png" mode=""></image>
@@ -268,12 +268,30 @@
 			</scroll-view>
 			<u-empty v-else name="search"></u-empty>
 		</u-popup>
+		
+		<u-popup border-radius="60" height="60%" mode="bottom" v-model="bankCodeShow">
+			<view class="fixed cu-bar search bg-white">
+				<view class="search-form round">
+					<text class="cuIcon-search"></text>
+					<u-input style="width: 90%;" v-model="bankKeyword" type="text" :adjust-position="false"
+						placeholder="请输入关键字搜索" confirm-type="search" />
+				</view>
+			</view>
+			<scroll-view v-if="!$isEmpty(bankCodeList)" style="padding-top: 110rpx;height: 100%;" :scroll-y="true">
+				<view @click="bankTypeConfirm(item)" hover-class="hoverClass" class="text-center padding-30 solid-bottom"
+					v-for="(item,index) in bankCodeList" :key="index">
+					<text>{{item.label}}</text>
+				</view>
+				<u-divider v-if="bankCodeList.length>=20" height="80">只显示10条数据</u-divider>
+			</scroll-view>
+			<u-empty v-else name="search"></u-empty>
+		</u-popup>
 
 		<u-select v-model="mallAreaShow" label-name="name" value-name="id" mode="single-column" :list="mallAreaList"
 			@confirm="mallAreaConfirm"></u-select>
 		<u-picker @confirm="regionConfirm" v-model="regionShow" mode="region"></u-picker>
 		
-		<u-select v-model="bankCodeShow"  :list="bankCodeList" @confirm="bankTypeConfirm"></u-select>
+		<!-- <u-select v-model="bankCodeShow"  :list="bankCodeList" @confirm="bankTypeConfirm"></u-select> -->
 		<u-select v-model="bankAccountTypeShow"  :list="bankAccountTypeList" @confirm="bankAccountTypeConfirm"></u-select>
 	</view>
 </template>
@@ -332,6 +350,7 @@
 				typeIndex:1,
 				
 				//银行类型
+				bankKeyword:'',
 				bankCodeShow:false,
 				bankCodeList:[],
 				//账户类型
@@ -515,7 +534,7 @@
 					/**
 					 * 企业类型
 					 */
-					typeOfEnterprise: "",
+					typeOfEnterprise: "MINICRO",
 					/**
 					 * 经营范围
 					 */
@@ -711,6 +730,18 @@
 					that.fetchMallList()
 				}, 500)
 			},
+			bankKeyword() {
+				console.log("1111");
+				let that = this
+				//节流函数
+				if (this.timer) {
+					clearTimeout(this.timer)
+				}
+				this.timer = setTimeout(() => {
+					this.bankCodeList = []
+					that.getBankType()
+				}, 500)
+			},
 			imgList() {
 				if (!this.$isEmpty(this.imgList)) {
 					this.form.shopPic = this.imgList.join(",")
@@ -752,27 +783,6 @@
 			this.fetchMallList()
 		},
 		methods: {
-			clickType(index){
-				this.typeIndex=index
-				if (this.typeIndex==1 ) {
-					//企业
-					if (this.needBankInfo) {
-						this.totalStep=5
-					}else{
-						this.totalStep=4
-					}
-				}
-				
-				if (this.typeIndex==0) {
-					//小微企业
-					this.auditForm.typeOfEnterprise='MINICRO'
-					if (this.needBankInfo) {
-						this.totalStep=4
-					}else{
-						this.totalStep=3
-					}
-				}
-			},
 			async getHistoryFlowList() {
 			 	let processInstanceId=this.auditForm.processInstanceId
 				this.flowList= (await this.$api.flow.historyFlowList({processInstanceId})).data
@@ -871,9 +881,13 @@
 				}
 				let res = await this.$api.shop.detail(params)
 				this.$util.objectCoppy(this.form, res.data)
-				this.mallLabel = (await this.$api.mall.detail({
-					id: res.data.mallId
-				})).data.mallName
+				
+				if (this.$isNotEmpty(res.data.mallId) && res.data.mallId!=-1) {
+					this.mallLabel = (await this.$api.mall.detail({
+						id: res.data.mallId
+					})).data.mallName
+				}
+				
 				this.imgList = this.$isNotEmpty(this.form.shopPic) ? this.form.shopPic.split(",") : []
 				this.$refs.mpUploadCover.changeImgList([this.form.cover])
 				this.$refs.mpUploadImg.changeImgList(this.imgList)
@@ -894,6 +908,28 @@
 				this.step--
 			},
 			nextStep() {
+				if (this.step==1) {
+					if (this.typeIndex==0 ) {
+						this.auditForm.typeOfEnterprise='ENTERPRISE'
+						//企业
+						if (this.needBankInfo) {
+							this.totalStep=5
+						}else{
+							this.totalStep=4
+						}
+					}
+					
+					if (this.typeIndex==1) {
+						//小微企业
+						this.auditForm.typeOfEnterprise='MINICRO'
+						if (this.needBankInfo) {
+							this.totalStep=4
+						}else{
+							this.totalStep=3
+						}
+					}
+				}
+				
 				if (this.step == 2) {
 					if (this.$isEmpty(this.auditForm.signName) && this.typeIndex==1) {
 						this.$u.toast('请输入店铺全称')
@@ -1034,6 +1070,7 @@
 						return
 					}
 					this.OCRBizilicenseInfo = res.data[0]
+					delete this.OCRBizilicenseInfo.typeOfEnterprise
 					Object.assign(this.auditForm, this.OCRBizilicenseInfo)
 					this.auditForm.businessLicense = res.data[1].link
 					this.auditForm.licenceNo = this.OCRBizilicenseInfo.serial
@@ -1089,6 +1126,11 @@
 					this.$u.toast('请填写商户联系人身份证号')
 					return
 				}
+				
+				if (this.$isEmpty(this.auditForm.bankCardNo)) {
+					this.$u.toast('请填写结算银行账户号码')
+					return
+				}
 				if (this.$cache.get('promotionCode')) {
 					this.form.agenter = this.$cache.get('promotionCode')
 				}
@@ -1103,7 +1145,6 @@
 					audit: this.auditForm,
 				}
 				this.$cache.put('shopAuditInfo', params)
-				console.log(params);
 				this.$api.shop.submitAudit(params).then(res => {
 					if (res.success == true) {
 						this.$cache.remove('promotionCode')
@@ -1178,11 +1219,16 @@
 			async getBankType() {
 				let params={
 					code: 'bank_type',
-					size:9
+					size:10
+				}
+				if (this.$isNotEmpty(this.bankKeyword)) {
+					params.keyword=this.bankKeyword
 				}
 				let res = await this.$api.dict.dictionaryPage(params)
 				let list = res.data.records
-				list.shift()
+				if (list[0].parentId=='0') {
+					list.shift()
+				}
 				list.forEach(item=>{
 					let obj={
 						label:JSON.parse(item.dictValue).name,
@@ -1207,8 +1253,9 @@
 			},
 			//字典 end
 			bankTypeConfirm(e){
-				this.auditForm.bankCodeLabel=e[0].label
-				this.auditForm.bankCode=e[0].value
+				this.bankCodeShow=false
+				this.auditForm.bankCodeLabel=e.label
+				this.auditForm.bankCode=e.value
 			},
 			bankAccountTypeConfirm(e){
 				this.auditForm.bankAccountTypeLabel=e[0].label

+ 83 - 100
pages/userBank/add.vue

@@ -2,32 +2,32 @@
 	<view>
 		<view class="bg-white " style="padding: 0rpx 40rpx;margin-top: 30rpx;">
 			<u-form :model="bankModel" ref="uForm" label-width="180">
-					<u-form-item label="银行类型">
-						<u-input type="select" placeholder="请选择银行类型" v-model="bankModel.bankTypeLabel" @click="bankTypeShow = true"/>
-					</u-form-item>
-					<u-form-item label="账户类型">
-						<u-input type="select" placeholder="请选择账户类型" v-model="bankModel.bankAccountTypeLabel" @click="bankAccountTypeShow = true"/>
-					</u-form-item>
-					<u-form-item label="开户姓名">
-						<u-input v-model="bankModel.realName" placeholder="请输入开户姓名"/>
-					</u-form-item>
-					<u-form-item label="联系方式">
-						<u-input v-model="bankModel.phone" placeholder="请输入联系方式"/>
-					</u-form-item>
-					<u-form-item label="银行卡号">
-						<u-input v-model="bankModel.cardNo" placeholder="请输入银行卡号" :clearable="false" />
-					</u-form-item>
+				<u-form-item label="账户类型">
+					<u-input type="select" placeholder="请选择账户类型" v-model="bankModel.bankAccountTypeLabel"
+						@click="bankAccountTypeShow = true" />
+				</u-form-item>
+				<u-form-item label="银行类型"	>
+					<u-input type="select" placeholder="请选择银行类型" v-model="bankModel.bankTypeLabel"
+						@click="bankTypeShow = true" />
+				</u-form-item>
+				<u-form-item label="银行卡号">
+					<u-input v-model="bankModel.cardNo" placeholder="请输入银行卡号" :clearable="false" />
+				</u-form-item>
 			</u-form>
 		</view>
 		<view class="footer-fixed" style="margin: 0 50rpx 200rpx;z-index: 9;">
-			<view @click="confirm" class="bg-gradual-base cu-btn round" style="padding: 46rpx;width: calc(100% - 100rpx);">
+			<view @click="confirm" class="bg-gradual-base cu-btn round"
+				style="padding: 46rpx;width: calc(100% - 100rpx);">
 				<text v-if="$isEmpty(id)">添加银行</text>
 				<text v-else>确定修改</text>
 			</view>
 		</view>
+
+		<u-select v-model="bankTypeShow" :list="bankTypeList" @confirm="bankTypeConfirm"></u-select>
+		<u-select v-model="bankAccountTypeShow" :list="bankAccountTypeList" @confirm="bankAccountTypeConfirm">
+		</u-select>
 		
-		<u-select v-model="bankTypeShow"  :list="bankTypeList" @confirm="bankTypeConfirm"></u-select>
-		<u-select v-model="bankAccountTypeShow"  :list="bankAccountTypeList" @confirm="bankAccountTypeConfirm"></u-select>
+		<toast ref="toast" ></toast>
 	</view>
 </template>
 
@@ -35,142 +35,125 @@
 	export default {
 		data() {
 			return {
-				id:'',
+				id: '',
 				//银行类型
-				bankTypeShow:false,
-				bankTypeList:[],
+				bankTypeShow: false,
+				bankTypeList: [],
 				//账户类型
-				bankAccountTypeShow:false,
-				bankAccountTypeList:[],
+				bankAccountTypeShow: false,
+				bankAccountTypeList: [],
 				//银行对象
-				bankModel:{
-					userId:'',
-					userType:'商户',
-					cardNo:'',
-					realName:'',
-					phone:'',
-					bankType:'',
-					bankTypeLabel:'',
-					bankAccountType:'',
-					bankAccountTypeLabel:''
+				bankModel: {
+					userId: '',
+					userType: '商户',
+					cardNo: '',
+					bankType: '',
+					bankTypeLabel: '',
+					bankAccountType: '',
+					bankAccountTypeLabel: ''
 				},
 			}
 		},
 		onLoad(options) {
-			this.id=options.id
+			this.id = options.id
 			this.init()
 		},
 		methods: {
-			async init(){
-				this.bankModel.realName=this.$cache.get('selectedShop').personName
-				
-				this.bankModel.userId=this.vuex_shopId
-				this.bankModel.phone=this.$cache.get('phone')
-				
+			async init() {
+				this.bankModel.userId = this.vuex_shopId
 				await this.getBankType()
 				await this.getBankAccountType()
-				
+
 				if (this.id) {
 					uni.setNavigationBarTitle({
-						title:"编辑银行卡"
+						title: "编辑银行卡"
 					})
 					this.fetchUserBank()
-				}else{
+				} else {
 					uni.setNavigationBarTitle({
-						title:"添加银行卡"
+						title: "添加银行卡"
 					})
 				}
 			},
 			//回显 begin
-			fetchUserBank(){
-				let params={
-					id:this.id
+			fetchUserBank() {
+				let params = {
+					id: this.id
 				}
-				this.$api.userBank.detail(params).then(res=>{
+				this.$api.userBank.detail(params).then(res => {
 					if (!this.$isEmpty(res.data)) {
-						this.bankModel=res.data
+						this.bankModel = res.data
 					}
 				})
 			},
 			//字典 begin
 			async getBankType() {
-				let params={
+				let params = {
 					code: 'bank_type',
-					size:9
+					size: 9
 				}
 				let res = await this.$api.dict.dictionaryPage(params)
 				let list = res.data.records
 				list.shift()
-				list.forEach(item=>{
-					let obj={
-						label:JSON.parse(item.dictValue).name,
-						value:item.dictKey
+				list.forEach(item => {
+					let obj = {
+						label: JSON.parse(item.dictValue).name,
+						value: item.dictKey
 					}
 					this.bankTypeList.push(obj)
 				})
-				this.bankModel.bankTypeLabel=this.bankTypeList[0].label
-				this.bankModel.bankType=this.bankTypeList[0].value
+				this.bankModel.bankTypeLabel = this.bankTypeList[0].label
+				this.bankModel.bankType = this.bankTypeList[0].value
 			},
 			async getBankAccountType() {
-				let res = await this.$api.dict.list({code: 'bank_account_type'})
-				res.data.forEach(item=>{
-					let obj={
-						label:item.dictValue,
-						value:item.dictKey
+				let res = await this.$api.dict.list({
+					code: 'bank_account_type'
+				})
+				res.data.forEach(item => {
+					let obj = {
+						label: item.dictValue,
+						value: item.dictKey
 					}
 					this.bankAccountTypeList.push(obj)
-					this.bankModel.bankAccountType=this.bankAccountTypeList[0].value
-					this.bankModel.bankAccountTypeLabel=this.bankAccountTypeList[0].label
+					this.bankModel.bankAccountType = this.bankAccountTypeList[0].value
+					this.bankModel.bankAccountTypeLabel = this.bankAccountTypeList[0].label
 				})
 			},
 			//字典 end
-			bankTypeConfirm(e){
-				this.bankModel.bankTypeLabel=e[0].label
-				this.bankModel.bankType=e[0].value
+			bankTypeConfirm(e) {
+				this.bankModel.bankTypeLabel = e[0].label
+				this.bankModel.bankType = e[0].value
 			},
-			bankAccountTypeConfirm(e){
-				this.bankModel.bankAccountTypeLabel=e[0].label
-				this.bankModel.bankAccountType=e[0].value
+			bankAccountTypeConfirm(e) {
+				this.bankModel.bankAccountTypeLabel = e[0].label
+				this.bankModel.bankAccountType = e[0].value
 			},
-			confirm() {
-				if (this.$isEmpty(this.bankModel.phone)) {
-					this.$u.toast('请输入联系方式')
-					return
-				}
-				if (this.$isEmpty(this.bankModel.bankType)) {
-					this.$u.toast('请选择银行类型')
+			async confirm() {
+			 	if (this.$isEmpty(this.bankModel.bankType)) {
+					this.$refs.toast.warn('请选择银行类型')
 					return
 				}
 				if (this.$isEmpty(this.bankModel.bankAccountType)) {
-					this.$u.toast('请选择账户类型')
-					return
-				}
-				if (this.$isEmpty(this.bankModel.realName)) {
-					this.$u.toast('请输入开户姓名')
+					this.$refs.toast.warn('请选择账户类型')
 					return
 				}
 				if (this.$isEmpty(this.bankModel.cardNo)) {
-					this.$u.toast('请输入银行卡号')
+					this.$refs.toast.warn('请输入银行卡号')
 					return
 				}
-				let model={
-					merchantNo:this.vuex_merchantNo,
-					bankCardType:this.bankModel.bankAccountType,
-					accountNo:this.bankModel.cardNo,
-					bankCode:this.bankModel.bankType
+				let model = {
+					merchantNo: this.vuex_merchantNo,
+					bankCardType: this.bankModel.bankAccountType,
+					accountNo: this.bankModel.cardNo,
+					bankCode: this.bankModel.bankType
 				}
-				
-				this.$api.yeepay.withdrawCardBind(model).then(res=>{
-					console.log(res);
-				})
-				return
-				this.$api.userBank.submit(this.bankModel).then(res=>{
-					if (res.success) {
-						this.$dialog.showModal('操作成功',false).then(()=>{
-							uni.navigateBack()
-						})
-					}
-				})
+				let res=await this.$api.yeepay.withdrawCardBind(model)
+				let result=JSON.parse(res.data.result)
+				if (this.$isEmpty(result.bindId)) {
+					this.$refs.toast.error(result.returnMsg)
+					return
+				}
+				this.$dialog.showModalAndBack('操作成功')
 			},
 		}
 	}

+ 50 - 27
pages/userBank/userBank.vue

@@ -1,31 +1,33 @@
 <template>
 	<view>
-		<navigator style="position: relative;" hover-class="none" :url="'./add?id='+item.id"  v-for="(item,index) in bankList" :key="index" class="card card_bg">
-			<view @click.stop="del(item.id)" style="position: absolute;right: 10rpx;top: 10rpx;">
+		<view @click="add(item.id)" style="position: relative;" hover-class="none" v-for="(item,index) in bankList"
+			:key="index" class="card card_bg">
+			<!-- 			<view @click.stop="del(item.id)" style="position: absolute;right: 10rpx;top: 10rpx;">
 				<u-icon name="close-circle" color="#fff" size="40"></u-icon>
-			</view>
-			
+			</view> -->
+
 			<view class="top center" style="justify-content: flex-start;">
 				<view class="center margin-top-10">
-					<image :src="'/static/bank/'+item.bankType+'.png'"></image>
+					<image :src="'/static/bank/'+item.bankCode+'.png'"></image>
 				</view>
 				<view class="">
-					<text class="bankType">{{item.bankTypeLabel}}</text>
-					<text class="bankAccountType">{{item.bankAccountTypeLabel}}</text>
+					<text class="bankType">{{item.bankName}}</text>
+					<text class="bankAccountType">{{dealBankCodeType(item.bankCardType)}}</text>
 				</view>
 			</view>
 			<view class="number">
-				<text>{{item.cardNo}}</text>
+				<text>{{dealAccountNo(item.accountNo)}}</text>
 			</view>
-		</navigator>
+		</view>
 		<navigator url="./add" class="card_add" hover-class="none">
 			<view class="margin-bottom-10">
 				<u-icon name="plus-circle-fill" color="#F5A85B" size="80"></u-icon>
 			</view>
-			<view  class="" style="color: #666666;">
+			<view class="" style="color: #666666;">
 				添加新的银行卡
 			</view>
 		</navigator>
+		
 	</view>
 </template>
 
@@ -33,40 +35,59 @@
 	export default {
 		data() {
 			return {
-				bankList:[]
+				bankList: []
 			}
 		},
 		onShow() {
 			this.fetchCardList()
 		},
+		computed: {
+			dealAccountNo() {
+				return data => {
+					return this.$util.dealAccountNo(data)
+				}
+			},
+
+			dealBankCodeType() {
+				return data => {
+					return this.$getBankCodeType(data)
+				}
+			}
+		},
 		methods: {
-			fetchCardList(){
-				let params={
-					userId:this.vuex_shopId,
-					size:10
+			fetchCardList() {
+				let params = {
+					merchantNo: this.vuex_merchantNo
 				}
-				this.$api.userBank.appList(params).then(res=>{
-					this.bankList=res.data.records
+				this.$api.yeepay.withdrawCardQuery(params).then(res => {
+					let result = JSON.parse(res.data.result)
+					this.bankList = result.bankCardAccountList
 				})
 			},
-			del(id){
-				this.$dialog.showModal('确定要解绑?').then(()=>{
-					this.$api.userBank.remove(id).then(res=>{
+			del(id) {
+				this.$dialog.showModal('确定要解绑?').then(() => {
+					this.$api.userBank.remove(id).then(res => {
 						if (res.success) {
 							this.$u.toast('解绑成功!')
 							this.fetchCardList()
 						}
 					})
 				})
+			},
+			add(id) {
+				return
+				uni.navigateTo({
+					url: `./add?id=${id}`
+				})
 			}
 		}
 	}
 </script>
 
 <style lang="scss" scoped>
-	.card_add{
+	.card_add {
 		margin: 30rpx;
-		border-radius:20rpx;
+		border-radius: 20rpx;
 		padding: 40rpx 30rpx;
 		background-color: #FFFFFF;
 		display: flex;
@@ -74,14 +95,15 @@
 		align-items: center;
 		flex-direction: column;
 	}
-	
+
 	.card {
 		margin: 30rpx;
-		border-radius:20rpx;
+		border-radius: 20rpx;
 		padding: 40rpx 30rpx;
 		background-image: linear-gradient(#F5A85B, #EF9944);
 		display: flex;
 		flex-direction: column;
+
 		.top {
 			display: flex;
 			margin-bottom: 20rpx;
@@ -92,14 +114,15 @@
 				width: 70rpx;
 				height: 70rpx;
 			}
-			
-			.bankType{
+
+			.bankType {
 				font-size: 36rpx;
 				color: #FFFFFF;
 				font-weight: 800;
 				margin-left: 30rpx;
 			}
-			.bankAccountType{
+
+			.bankAccountType {
 				color: #F8E0C6;
 				font-size: 26rpx;
 				margin-left: 20rpx;

+ 8 - 10
pages/withdraw/select-bank.vue

@@ -4,10 +4,10 @@
 		<u-radio-group v-model="radio" active-color="#ff9447" size="40">
 			<view @click="radio=item.id" v-for="(item,index) in bankList" :key="index" class="bank" v-if="!$isEmpty(bankList)">
 				<view class="left center">
-					<image :src="'/static/bank/'+item.bankType+'.png'" mode=""></image>
+					<image :src="'/static/bank/'+item.bankCode+'.png'" mode=""></image>
 					<view class="content">
-						<text>{{item.bankTypeLabel}}</text>
-						<text>{{item.cardNo}}</text>
+						<text>{{item.bankName}}</text>
+						<text>{{item.accountNo}}</text>
 					</view>
 				</view>
 				<view class="center">
@@ -43,14 +43,12 @@
 		methods: {
 			fetchCardList() {
 				let params = {
-					userId:this.vuex_shopId || '-1',
-					size: 10
+					merchantNo: this.vuex_merchantNo
 				}
-				this.$api.userBank.appList(params).then(res => {
-					if (!this.$isEmpty(res.data.records)) {
-						this.bankList = res.data.records
-						this.radio = this.bankList[0].id
-					}
+				this.$api.yeepay.withdrawCardQuery(params).then(res => {
+					let result = JSON.parse(res.data.result)
+					this.bankList = result.bankCardAccountList
+					this.radio = this.bankList[0].id
 				})
 			},
 			confirm(){

+ 39 - 24
pages/withdraw/withdraw.vue

@@ -11,10 +11,10 @@
 
 		<navigator url="select-bank" class="bank" v-else hover-class="none">
 			<view class="left center">
-				<image :src="bank.bankType?'/static/bank/'+bank.bankType+'.png':''" mode=""></image>
+				<image :src="bank.bankCode?'/static/bank/'+bank.bankCode+'.png':''" mode=""></image>
 				<view class="content">
-					<text>{{bank.bankTypeLabel}}</text>
-					<text>{{bank.cardNo}}</text>
+					<text>{{bank.bankName}}</text>
+					<text>{{dealAccountNo(bank.accountNo)}}</text>
 				</view>
 			</view>
 
@@ -82,12 +82,13 @@
 
 		<amountInput :maxNumber="canWithDraw" ref="amountInput" confirmText="确认提现" btnColor="#ff9900" @change="change"
 			@confirm="withdrawConfirm"></amountInput>
-			
-			<u-modal :mask-close-able="true" confirm-text="确定提现" @confirm="doWithdraw" v-model="passwordShow" title="提示">
-				<view class="slot-content" style="padding: 20rpx;">
-					<u-input v-model="withdrawPassword" placeholder="请填写提现密码" type="password" />
-				</view>
-			</u-modal>
+
+		<u-modal :mask-close-able="true" confirm-text="确定提现" @confirm="doWithdraw" v-model="passwordShow" title="提示">
+			<view class="slot-content" style="padding: 20rpx;">
+				<u-input v-model="withdrawPassword" placeholder="请填写提现密码" type="password" />
+			</view>
+		</u-modal>
+		<toast ref="toast"></toast>
 	</view>
 </template>
 
@@ -107,8 +108,8 @@
 				//提现金额
 				withdrawAmount: 0,
 				//提现密码
-				withdrawPassword:'',
-				passwordShow:false,
+				withdrawPassword: '',
+				passwordShow: false,
 			};
 		},
 		onLoad() {
@@ -124,6 +125,19 @@
 			}
 			this.canReset = true
 		},
+		computed: {
+			dealAccountNo() {
+				return data => {
+					return this.$util.dealAccountNo(data)
+				}
+			},
+
+			dealBankCodeType() {
+				return data => {
+					return this.$getBankCodeType(data)
+				}
+			}
+		},
 		methods: {
 			async fetchShopDetail() {
 				let params = {
@@ -134,11 +148,11 @@
 			},
 			fetchCardList() {
 				let params = {
-					userId: this.vuex_shopId,
-					size: 10
+					merchantNo: this.vuex_merchantNo
 				}
-				this.$api.userBank.appList(params).then(res => {
-					this.bank = res.data.records[0]
+				this.$api.yeepay.withdrawCardQuery(params).then(res => {
+					let result = JSON.parse(res.data.result)
+					this.bank = result.bankCardAccountList[0]
 				})
 			},
 			change(e) {
@@ -152,20 +166,21 @@
 				this.$refs.amountInput.show()
 			},
 			//全部提现
-			allWithdraw(){
-				this.withdrawAmount=this.canWithDraw
+			allWithdraw() {
+				this.withdrawAmount = this.canWithDraw
 				this.$refs.amountInput.initialMoney(this.withdrawAmount)
 			},
-			withdrawConfirm(){
+			withdrawConfirm() {
 				if (this.$isEmpty(this.bank)) {
 					this.$u.toast('请选择银行')
 					return
 				}
+				this.$refs.toast.warn('业务暂未开通')
 			},
-			doWithdraw(){
+			doWithdraw() {
 				if (this.$isEmpty(this.withdrawPassword)) {
 					this.$u.toast('请输入提现密码')
-					this.passwordShow=true
+					this.passwordShow = true
 					return
 				}
 				console.log(md5Libs.md5(this.withdrawPassword));
@@ -219,13 +234,13 @@
 		align-items: center;
 		flex-direction: column;
 	}
-	
-	.btn-withdraw{
+
+	.btn-withdraw {
 		position: absolute;
 		right: -30rpx;
 		top: 26rpx;
-		
-		.btn{
+
+		.btn {
 			padding: 16rpx 38rpx;
 			background-color: #FFE6CD;
 			color: #EF9944;

+ 1 - 2
utils/global.js

@@ -17,9 +17,8 @@ let global = {
 	
 	//商户收款码
 	QR_PATH:'https://ldt.guosen-fumao.cn/h5/#/pagesC/pages/checkstand/index?id=',
-	
 	//商家订餐码
-	ORDER_QR_PATH:'pagesD/pages/menu/menu',
+	ORDER_QR_PATH:'https://ldt.guosen-fumao.cn/wapp/menu',
 	
 	TRANSFORM_PARAMS:'95963',
 	

+ 98 - 74
utils/util.js

@@ -7,65 +7,87 @@ let util = {}
 // this.$util.preview('http://....png')
 // this.$util.preview('../../test.png')
 // this.$util.preview(['http://....png', '../../test.png'])
-util.preview=async (src)=> {
-	const urls = typeof src === 'string' ? [src] : src
-	const filePath = async src => src.match(/^http/) ? src : (await uni.compressImage({ src, quality: 100 }))[1].tempFilePath
-	for (let i = 0; i < urls.length; i++) {
-		urls[i] = await filePath(urls[i])
+util.preview = async (src) => {
+		const urls = typeof src === 'string' ? [src] : src
+		const filePath = async src => src.match(/^http/) ? src : (await uni.compressImage({
+			src,
+			quality: 100
+		}))[1].tempFilePath
+		for (let i = 0; i < urls.length; i++) {
+			urls[i] = await filePath(urls[i])
+		}
+		uni.previewImage({
+			urls
+		})
+	},
+
+	//复制
+	util.copy = content => {
+		uni.setClipboardData({
+			data: content
+		});
 	}
-	uni.previewImage({ urls })
-},
 
-//复制
-util.copy=content=>{
-	uni.setClipboardData({ data: content });
-}
-
-util.calculateDistance=(lat1, lng1, lat2, lng2)=> {
-	  console.log(lat1, lng1, lat2, lng2)
-	  var radLat1 = lat1 * Math.PI / 180.0;
-	  var radLat2 = lat2 * Math.PI / 180.0;
-	  var a = radLat1 - radLat2;
-	  var b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;
-	  var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) +
-			 Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
-	  s = s * 6378.137;
-	  s = Math.round(s * 10000) / 10;//单位米
-	  return s  
-},
-
-
-util.showModal=(content,title='提示')=>{
-    return new Promise((resolve,reject)=>{
-        uni.showModal({
-            title: title,
-            content: content,
-            success: (res)=>{
-                resolve(res)
-            }
-        });
-    })
-}
+util.dealAccountNo = account => {
+		if (account.startsWith('1')) {
+			if (account.length >= 17) {
+				account = account.substring(0, 4) + " **** **** " + account.substring(account.length - 4);
+			}
+		}
+		if (account.startsWith('6')) {
+			if (account.length >= 16) {
+				account = account.substring(0, 4) + " **** **** " + account.substring(account.length - 4);
+			}
+		}
+		return account
+	},
+
+
+	util.calculateDistance = (lat1, lng1, lat2, lng2) => {
+		console.log(lat1, lng1, lat2, lng2)
+		var radLat1 = lat1 * Math.PI / 180.0;
+		var radLat2 = lat2 * Math.PI / 180.0;
+		var a = radLat1 - radLat2;
+		var b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;
+		var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) +
+			Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));
+		s = s * 6378.137;
+		s = Math.round(s * 10000) / 10; //单位米
+		return s
+	},
+
+
+	util.showModal = (content, title = '提示') => {
+		return new Promise((resolve, reject) => {
+			uni.showModal({
+				title: title,
+				content: content,
+				success: (res) => {
+					resolve(res)
+				}
+			});
+		})
+	}
 
 //拨打电话
-util.callPhone=(phone)=>{
+util.callPhone = (phone) => {
 	uni.showModal({
-	    title: '提示',
-	    content: `确定要拨打电话:${phone}吗?`,
-	    success: function (res) {
-	        if (res.confirm) {
+		title: '提示',
+		content: `确定要拨打电话:${phone}吗?`,
+		success: function(res) {
+			if (res.confirm) {
 				uni.makePhoneCall({
-				    phoneNumber: phone //仅为示例
+					phoneNumber: phone //仅为示例
 				});
-	        } 
-	    }
+			}
+		}
 	});
 }
 
 /**
  * 获取url参数
  */
-util.getUrlParams=(p)=>{
+util.getUrlParams = (p) => {
 	let url = decodeURIComponent(p);
 	let param = {};
 	// 把参数按&拆分成数组
@@ -86,63 +108,65 @@ util.getUrlParams=(p)=>{
  * 
  * @return {Array} newArr 去重后的数组
  */
-util.uniqueArray = (arr)=>{
+util.uniqueArray = (arr) => {
 	return [...new Set(arr)]
 }
 
 /**
  * 对象键复制
  */
-util.objectCoppy =(target,source)=>{
-	Object.keys(target).forEach(key=>{target[key]=source[key]})
+util.objectCoppy = (target, source) => {
+	Object.keys(target).forEach(key => {
+		target[key] = source[key]
+	})
 }
 
 //获取某一个页面上下文 context
 util.getPageCtx = (idx = 0) => {
-  let pages = getCurrentPages()
-  if (pages.length > 0) {
-    return pages[pages.length - 1 - idx] || {}
-  }
-  return {}
+	let pages = getCurrentPages()
+	if (pages.length > 0) {
+		return pages[pages.length - 1 - idx] || {}
+	}
+	return {}
 }
 
 //获取当前页面路由
 util.getCurrentRoute = () => {
-  let page = util.getPageCtx()
-  if (page.route) {
-    return page.route
-  }
-  return ''
+	let page = util.getPageCtx()
+	if (page.route) {
+		return page.route
+	}
+	return ''
 }
 
 //回到上一页刷新页面
 util.isReloadAndBack = () => {
-    let prePage=util.getPageCtx(1)
+	let prePage = util.getPageCtx(1)
 	prePage.setData({
-		"reload":true
+		"reload": true
 	})
 	uni.navigateBack({
-		delta:1
+		delta: 1
 	})
 }
 //onshow方法通过刷新mescroll数据
 util.reload = (mescroll) => {
-    let page= util.getPageCtx()
-    if (page.data.reload) {
-    	mescroll.resetUpScroll();
-    	page.data.reload=false  
-    }
+	let page = util.getPageCtx()
+	if (page.data.reload) {
+		mescroll.resetUpScroll();
+		page.data.reload = false
+	}
 }
 
 /**
  * 携带参数
  * data:{}
  */
-util.backWithParams=(data)=>{
-	let prePage=util.getPageCtx(1)
+util.backWithParams = (data) => {
+	let prePage = util.getPageCtx(1)
 	prePage.setData(data)
 	uni.navigateBack({
-		delta:1
+		delta: 1
 	})
 }
 /**
@@ -150,10 +174,10 @@ util.backWithParams=(data)=>{
  * paramsName:参数名
  */
 util.getBackParams = (paramsName) => {
-    let page= util.getPageCtx()
-    if (page.data[paramsName]) {
-    	return page.data[paramsName]
-    }
+	let page = util.getPageCtx()
+	if (page.data[paramsName]) {
+		return page.data[paramsName]
+	}
 	return null
 }