Browse Source

支付键盘

hmp 4 years ago
parent
commit
802b3ecb9a

+ 445 - 0
components/amountInput/amountInput.vue

@@ -0,0 +1,445 @@
+<template>
+	<view class="keyboard-main" :style="{height:height+'px'}">
+		<view class="mask" @click.stop="hide" v-if="isShow"></view>
+		<view class='keyboard' :style="'margin-bottom:'+safeAreaBottom+'rpx'" :class="{noPadding:!isShow}">
+			<view class='key-row' v-if="isShow">
+				<view class='key-cell key-cell-num' @click.stop='_handleKeyPress(1)'>1</view>
+				<view class='key-cell key-cell-num' @click.stop='_handleKeyPress(2)'>2</view>
+				<view class='key-cell key-cell-num' @click.stop='_handleKeyPress(3)'>3</view>
+				<view class='key-cell  last-child' @click.stop="_handleKeyPress('delete')">
+					<image class="icon" src="../../static/icon/del.png" mode="aspectFill"></image>
+				</view>
+			</view>
+			<view class='key-row' v-if="isShow">
+				<view class='key-cell key-cell-num' @click.stop='_handleKeyPress(4)'>4</view>
+				<view class='key-cell key-cell-num' @click.stop='_handleKeyPress(5)'>5</view>
+				<view class='key-cell key-cell-num' @click.stop='_handleKeyPress(6)'>6</view>
+				<view class='key-cell last-child'></view>
+			</view>
+			<view class='key-row' v-if="isShow">
+				<view class='key-cell key-cell-num' @click.stop='_handleKeyPress(7)'>7</view>
+				<view class='key-cell key-cell-num' @click.stop='_handleKeyPress(8)'>8</view>
+				<view class='key-cell key-cell-num' @click.stop='_handleKeyPress(9)'>9</view>
+				<view class='key-cell last-child '></view>
+			</view>
+			<view class="key-zero-and-point" v-if="isShow">
+				<view class="a zero" @click.stop='_handleKeyPress(0)'>0</view>
+				<view class="a point" @click.stop="_handleKeyPress('.')">.</view>
+				<view class='a last-child'>
+				</view>
+			</view>
+
+			<view class='key-confirm' :class="{big:isShow,frist:fristShow}" :style="{'background':btnColor}"
+				@click.stop="_handleKeyPress('confirm')">
+				{{confirmText}}
+			</view>
+
+			<view v-if="!isShow">
+				<view class="" style="height: 90rpx;"></view>
+				<view  class="footer-fixed center" style="bottom: 14%;">
+					<view @click="_handleKeyPress('confirm')" class="cu-btn df radius " :style="{'background':btnColor}" style="color: #FFFFFF;width: 90%;height: 90rpx;">
+						付款
+					</view>
+				</view>
+			</view>
+
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		name: "keyBoard",
+		props: {
+			confirmText: {
+				default: '充值',
+				type: String
+			},
+			btnColor: {
+				default: '#2B76EF',
+				type: String
+			},
+			placeholder: {
+				default: '请输入充值金额',
+				type: String
+			},
+			currency: {
+				default: '¥',
+				type: String
+			},
+			maxNumber: {
+				default: 100000000000,
+				type: Number
+			},
+			fontSize: {
+				type: [String, Number],
+				default: 30
+			},
+			isBold: {
+				type: Boolean,
+				default: true
+			},
+			isFilter: {
+				type: Boolean,
+				default: true
+			}
+		},
+		data() {
+			return {
+				fristShow: true,
+				isShow: true,
+				size: 0,
+				height: 0,
+				allWidth: 0,
+				money: ''
+			}
+		},
+		created() {
+
+		},
+		computed: {
+			//ios底部安全区域
+			safeAreaBottom() {
+				let info = uni.getSystemInfoSync()
+				let safe = 20
+				if (
+					info && ['devtools', 'ios'].includes(info.platform) &&
+					info.statusBarHeight > safe
+				) {
+					return info.statusBarHeight - safe
+				}
+				return 0
+			}
+		},
+		watch: {
+			money(val) {
+				this.$emit('change', val);
+			}
+		},
+		methods: {
+			show() {
+				this.isShow = true;
+			},
+			hide() {
+				this.isShow = false;
+			},
+			//处理按键
+			_handleKeyPress(num) {
+				uni.vibrateShort();
+				if (num == -1) return false;
+				switch (String(num)) {
+					//小数点
+					case '.':
+						this._handleDecimalPoint();
+						break;
+						//删除键
+					case 'delete':
+						this._handleDeleteKey();
+						break;
+						//确认键
+					case 'confirm':
+						this._handleConfirmKey();
+						break;
+					default:
+						this._handleNumberKey(num);
+						break;
+				}
+			},
+			//处理小数点函数
+			_handleDecimalPoint() {
+				//如果包含小数点,直接返回
+				if (this.money.indexOf('.') > -1) return false;
+				//如果小数点是第一位,补0
+				if (!this.money.length) {
+					this.money = '0.'
+				} else {
+					this.money = this.money + '.';
+				}
+			},
+			//处理删除键
+			_handleDeleteKey() {
+				let S = this.money;
+				//如果没有输入,直接返回
+				if (!S.length) return false;
+				//否则删除最后一个
+				this.money = S.substring(0, S.length - 1);
+			},
+			//处理数字
+			_handleNumberKey(num) {
+				if (Number(this.money + num) > this.maxNumber) {
+					return
+				}
+				let S = this.money;
+				//如果有小数点且小数点位数不小于2
+				if (S.indexOf('.') > -1 && S.substring(S.indexOf('.') + 1).length < 2)
+					this.money = S + num;
+				if (S.indexOf('.') > -1 && S.substring(S.indexOf('.') + 1).length >= 2)
+					return
+				//没有小数点
+				if (!(S.indexOf('.') > -1)) {
+					//如果第一位是0,只能输入小数点
+					if (num == 0 && S.length == 0)
+						this.money = '0.';
+					else {
+						if (S.length && Number(S.charAt(0)) === 0) return;
+						this.money = S + num;
+					}
+				}
+			},
+
+			//提交
+			_handleConfirmKey() {
+				let S = this.money;
+				//未输入
+				if (!S.length || S == 0) {
+					uni.showToast({
+						title: this.placeholder,
+						icon: 'none',
+						duration: 1000
+					});
+					return false;
+				}
+				//将 8. 这种转换成 8.00
+				if (S.indexOf('.') > -1 && S.indexOf('.') == (S.length - 1))
+					S = Number(S.substring(0, S.length - 1)).toFixed(2);
+				//保留两位
+				S = Number(S).toFixed(2);
+				this.$emit('confirm', parseFloat(S)); //提交参数
+			}
+		}
+	}
+</script>
+
+<style lang="less" scoped>
+	.data-content {
+		font-size: 32rpx;
+		font-weight: 800;
+		padding: 50rpx;
+	}
+
+	.keyboard-main {
+		width: 100%;
+		display: flex;
+		justify-content: flex-start;
+		align-items: flex-end;
+		padding: 20rpx 0;
+		box-sizing: initial;
+		color: #1B1B1B;
+
+		text {
+			font-size: 24px;
+			margin-right: 10px;
+		}
+	}
+
+	.keyboard-content {
+		width: 100%;
+		height: 30px;
+		position: relative;
+
+		.placeholder {
+			position: absolute;
+			top: 0;
+			left: 0;
+			width: 100%;
+			color: #c0c4cc;
+			display: flex;
+			justify-content: flex-start;
+			align-items: flex-end;
+		}
+
+		.input {
+			position: absolute;
+			top: 0;
+			left: 0;
+			width: 100%;
+			display: flex;
+			justify-content: flex-start;
+			align-items: flex-end;
+			font-size: 30px;
+			font-weight: bold;
+
+			&.zIndex {
+				z-index: 999;
+			}
+
+			#text {
+				display: flex;
+				justify-content: flex-start;
+				align-items: flex-end;
+			}
+
+			.line {
+				display: inline-block;
+				width: 4rpx;
+				height: 30px;
+				border: 2rpx;
+				background-color: #0063E5;
+				margin-left: 8rpx;
+				animation: cursorImg 1s infinite steps(1, start);
+
+				@keyframes cursorImg {
+
+					0%,
+					100% {
+						opacity: 0;
+					}
+
+					50% {
+						opacity: 1;
+					}
+				}
+			}
+		}
+	}
+
+	.mask {
+		position: fixed;
+		top: 0;
+		left: 0;
+		right: 0;
+		bottom: 0;
+		z-index: 1;
+	}
+
+	.keyboard {
+		flex: 1;
+		position: fixed;
+		bottom: 0;
+		left: 0;
+		width: 100%;
+		background-color: #f6f6f6;
+		padding: 20rpx;
+		transition: all 0.6s;
+		z-index: 9;
+		box-sizing: border-box;
+
+		&.noPadding {
+			padding: 0;
+			bottom: -100%;
+		}
+	}
+
+	.keyboard .key-row {
+		display: flex;
+		justify-content: space-between;
+		display: -webkit-flex;
+		position: relative;
+		box-sizing: border-box;
+	}
+
+	.keyboard .key-cell {
+		font-size: 18px;
+		width: 160rpx;
+		font-weight: 800;
+		height: 90rpx;
+		/* margin-right: 20rpx; */
+		margin-bottom: 20rpx;
+		background-color: #fff;
+		border-radius: 4rpx;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+
+		&.last-child {
+			/* margin-right: 0px; */
+			width: 170rpx;
+		}
+
+		.icon {
+			width: 50rpx;
+			height: 40rpx;
+		}
+	}
+
+	.keyboard .key-confirm {
+		position: fixed;
+		text-align: center;
+		/* min-height: 100rpx; */
+		width: 170rpx;
+		padding: 20rpx 30rpx;
+		border-radius: 6rpx;
+		box-sizing: border-box;
+		color: #FFFFFF;
+		z-index: 10;
+		right: 20rpx;
+		top: calc(100vh - 280rpx);
+		bottom: 200rpx;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		font-size: 20px;
+		letter-spacing: 4px;
+		font-weight: bold;
+		transition: all 0.3s;
+
+		&.big {
+			right: 20rpx;
+			bottom: 20rpx;
+			padding: 0 30rpx;
+			bottom: 20rpx;
+		}
+
+		&.frist {
+			position: absolute;
+			top: auto;
+			right: 20rpx;
+			height: 304rpx;
+			bottom: 18rpx;
+		}
+	}
+
+	.key-zero-and-point {
+		display: flex;
+		height: 80rpx;
+		justify-content: space-between;
+		align-items: center;
+		font-size: 20px;
+		font-weight: 800;
+
+		.zero {
+			display: flex;
+			justify-content: center;
+			align-items: center;
+			width: 340rpx;
+			text-align: center;
+			background-color: #fff;
+			border-radius: 4rpx;
+			height: 100%;
+		}
+
+		.point {
+			display: flex;
+			justify-content: center;
+			align-items: center;
+			background-color: #fff;
+			border-radius: 4rpx;
+			width: 160rpx;
+			height: 100%;
+		}
+
+		.last-child {
+			background-color: #fff;
+			border-radius: 8rpx;
+			width: 170rpx;
+			height: 100%;
+		}
+	}
+
+	.key-cell-num:active {
+		color: white;
+		background: black; //黑色
+		opacity: 0.1; //这里重要,就是通过这个透明度来设置
+	}
+
+	// .a:active,.key-confirm2:active{
+	// 	color: white;
+	// 	background: black;  //黑色
+	// 	opacity: 0.1;    //这里重要,就是通过这个透明度来设置
+	// }
+	#input-text {
+		width: max-content;
+		position: fixed;
+		bottom: -200%;
+	}
+</style>

+ 3 - 3
components/mescroll-body/components/mescroll-empty.vue

@@ -68,9 +68,9 @@ export default {
 }
 
 .mescroll-empty .empty-tip {
-	margin-top: 20rpx;
-	font-size: 24rpx;
-	color: gray;
+	margin-top: 15rpx;
+	font-size: 26rpx;
+	color: grey;
 }
 
 .mescroll-empty .empty-btn {

+ 2 - 2
components/mescroll-body/mescroll-uni-option.js

@@ -27,8 +27,8 @@ const GlobalOption = {
 		},
 		empty: {
 			use: true, // 是否显示空布局
-			icon: "/static/icon/empty.png", // 图标路径 (建议放入static目录, 如 /static/img/mescroll-empty.png )
-			tip: '数据为空' // 提示
+			icon: "/static/icon/empty5.png", // 图标路径 (建议放入static目录, 如 /static/img/mescroll-empty.png )
+			tip: '暂无数据' // 提示
 		}
 	}
 }

+ 9 - 0
pages.json

@@ -197,6 +197,15 @@
             }
             
         }
+        ,{
+            "path" : "pages/pay/pay",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "扫码收款",
+                "enablePullDownRefresh": false
+            }
+            
+        }
     ],
 	"globalStyle": {
 		"navigationBarTextStyle": "black",

+ 21 - 9
pages/bill/bill.vue

@@ -9,7 +9,8 @@
 					<text class="text-price">{{shopData.totalFunkPrice}}</text>
 				</view>
 				<view class="flex justify-center align-center">
-					<view class="cu-btn btn round" style="padding: 24rpx 50rpx;" hover-class="hoverClass1" @click="$jump('/pages/mine/my-points/accredit')">
+					<view class="cu-btn btn round" style="padding: 24rpx 50rpx;" hover-class="hoverClass1"
+						@click="$jump('/pages/mine/my-points/accredit')">
 						提现
 					</view>
 				</view>
@@ -20,7 +21,7 @@
 					<text class="text-price">{{shopData.withdrawTotalPrice}}</text>
 				</view>
 			</view>
-			
+
 		</view>
 		<view class="margin-top-20" style="margin-bottom: -10rpx;">
 			<u-tabs active-color="#FC8D38" :active-item-style="activeItemStyle" :list="tabslist" bg-color="#f1f1f1"
@@ -125,6 +126,13 @@
 				downOption: {
 					auto: false
 				},
+				upOption: {
+					empty: {
+						fixed: true,
+						top: "-180rpx"
+					}
+				},
+
 				showTime: false,
 				params: {
 					year: true,
@@ -132,20 +140,20 @@
 				},
 				defaultTime: '',
 				shopData: {},
-				height:'',
+				height: '',
 			}
 		},
 		onLoad() {
 			this.shopDetail()
 		},
 		onReady() {
-			this.defaultTime=this.$dateTime.format(new Date(),'YYYY-mm')
+			this.defaultTime = this.$dateTime.format(new Date(), 'YYYY-mm')
 			this.getElInfo()
 		},
 		methods: {
 			async getElInfo() {
 				let rectInfo = await this.$u.getRect('.card');
-				this.height=this.$u.sys().windowHeight - rectInfo.top + 'px'
+				this.height = this.$u.sys().windowHeight - rectInfo.top + 'px'
 			},
 			async shopDetail() {
 				let params = {
@@ -171,7 +179,11 @@
 					shopId: this.vuex_shopId,
 					current: mescroll.num,
 					size: mescroll.size,
-					monthTime: this.defaultTime
+				}
+				if (this.defaultTime) {
+					params.monthTime = this.defaultTime
+				} else {
+					params.monthTime = this.$dateTime.format(new Date(), 'YYYY-mm')
 				}
 				try {
 					if (this.current == 1) {
@@ -222,13 +234,13 @@
 	}
 
 	.top {
-		padding:36rpx 50rpx;
+		padding: 36rpx 50rpx;
 		background-image: linear-gradient(to right, #FBA33D, #FF8D32);
 		display: flex;
 		flex-direction: column;
 		justify-content: center;
-		
-		.tixian{
+
+		.tixian {
 			display: flex;
 			justify-content: space-between;
 		}

+ 4 - 102
pages/index/index.vue

@@ -1,8 +1,6 @@
 <template>
 	<view class="">
-		<!-- 扫一扫错误回调 -->
-		<u-modal title="扫描异常"  confirm-color="#dc9b21"  v-model="scanNotify.scan" :content="scanNotify.scanMessage"></u-modal>
-		
+
 		
 		<u-navbar :is-back="false" title="联兑通商户版"></u-navbar>
 		<view class="margin-30">
@@ -85,7 +83,7 @@
 				<view class="cu-list grid col-2 no-border margin-top-30">
 					<view class="cu-item" @click="$jump(item.path)" v-for="(item,index) in marketList" :key="index">
 						<view class="grid-icon">
-							<image mode="widthFix" style="width: 120rpx;" :src="item.icon" />
+							<image  style="width: 120rpx;height: 120rpx;" :src="item.icon" />
 						</view>
 						<text style="color: #222222;font-size: 26rpx;margin-top: 20rpx;">{{item.name}}</text>
 						<view class="cu-tag bg-red badge" v-if="item.count>0">{{item.count}}</view>
@@ -106,38 +104,6 @@
 				</view>
 			</view>
 		</view>
-		
-		
-		<!-- 支付键盘 -->
-		<u-keyboard
-			default=""
-			ref="uKeyboard" 
-			mode="number" 
-			:mask="true" 
-			:mask-close-able="false"
-			:dot-enabled="true" 
-			v-model="show"
-			:confirm-btn="true"
-			:safe-area-inset-bottom="true"
-			:tooltip="false"
-			@change="onChange"
-			@backspace="onBackspace">
-			<view>
-				<view class="u-text-center u-padding-20 money">
-					<view v-if="money=='0'" class="" style="position: absolute;left: 80rpx;bottom: 20rpx;">
-						<text style="color: #909399;font-size: 24rpx;">请输入付款金额</text>
-					</view>
-					<text>{{money}}</text>
-					<text class="u-font-20 u-padding-left-10">元</text>
-					<view class="u-padding-10 close" data-flag="false" @tap="close">
-						<u-icon name="close" color="#333333" size="28"></u-icon>
-					</view>
-				</view>
-				
-				<u-button @click="inputConfirm" plain :ripple="true" ripple-bg-color="rgba(25, 190, 107,.4)">确认</u-button>
-			</view>
-		</u-keyboard>
-		
 		<u-select @confirm="shopConfirm" v-model="shopShow" value-name="id" label-name="name" :list="shopList"></u-select>
 	</view>
 </template>
@@ -145,11 +111,7 @@
 <script>
 	export default {
 		data() {
-			return {
-				show:false,
-				money:"0",
-				scanNotify:{scan: false,scanMessage:'扫描错误,请稍后重试!' },
-				
+			return {				
 				//下拉选择商铺
 				shopShow:false,
 				//我的商铺列表
@@ -295,73 +257,13 @@
 			},
 			operate(index){
 				if (index==0) {
-					this.show=true
+					this.$jump('/pages/pay/pay')
 				}else if (index==1) {
 					this.$jump('/pages/checkstand/pay-qrcode')
 				}else if (index==2) {
 					this.$jump('/pages/card/card')
 				}
 			},
-			//扫描二维码
-			onChange(val){
-				if (this.money=='0' && val!='.') {
-					this.money=val
-					return
-				}
-				console.log(typeof this.money);
-				console.log(typeof val);
-				this.money += val.toString()
-			},
-			onBackspace(e){
-				if(this.money.length>0 &&this.money!='0'){
-					this.money = this.money.substring(0,this.money.length-1);
-				}else{
-					this.money='0'
-				}
-			},
-			inputConfirm(){
-				if (this.$isEmpty(this.money)) {
-					this.$u.toast('请输入收款金额')
-					return
-				}
-				if (!this.$verify.isMoney(this.money)) {
-					this.$u.toast('请输入正确的收款金额')
-					return
-				}
-				this.show=false
-				this.scanCode()
-			},
-			close(){
-				this.money='0'
-				this.show=false
-			},
-			scanCode(){
-				const _this = this;
-				uni.scanCode({
-				    success: function (res) {
-						_this.payBefore(res.result)
-				    },
-					fail: (res) => {
-						if(res.errMsg!='scanCode:fail cancel'){
-							_this.scanNotify = {scan: true,scanMessage: res.errMsg};
-						}
-					}
-				});
-			},
-			async payBefore(secret){
-				let expireTime=this.$dateTime.getExpireTime(5)
-				let params={
-					shopId:this.vuex_shopId,
-					money:this.money,
-					billsTitle:'用户支付',
-					expireTime,
-					appId:this.$global.wxParams.clientAppId,
-					secret,
-					type:2
-				}
-				let resp=await this.$api.shop.payBefore(params)
-				console.log(resp);
-			}
 		}
 	}
 </script>

+ 149 - 0
pages/pay/pay.vue

@@ -0,0 +1,149 @@
+<template>
+	<view>
+		<!-- 扫一扫错误回调 -->
+		<u-modal title="扫描异常"  confirm-color="#dc9b21"  v-model="scanNotify.scan" :content="scanNotify.scanMessage"></u-modal>
+		<view class="data">
+			<text style="color: #000;">收款金额</text>
+			<view class="price">
+				<view class="input-bar center" @tap="show">
+					<view class="icon center">¥</view>
+					<view class="input" style="display: flex; align-items: center;">
+						<view style="font-size: 80rpx;font-weight: 800;">{{filterMoney(money)}}</view>
+						<view class="cusor"></view>
+					</view>
+				</view>
+			</view>
+		</view>
+		<amountInput ref="amountInput"  confirmText="付款" btnColor="#ff9900"
+			placeholder="请输入交易金额" @change="change"
+			@confirm="scanCode"></amountInput>
+	</view>
+</template>
+
+<script>
+	import amountInput from '@/components/amountInput/amountInput.vue';
+	export default {
+		components: {
+			amountInput
+		},
+		data() {
+			return {
+				scanNotify:{scan: false,scanMessage:'扫描错误,请稍后重试!' },
+				money:'',
+			}
+		},
+		onLoad(options) {
+
+		},
+		methods: {
+			scanCode(){
+				const _this = this;
+				uni.scanCode({
+				    success: function (res) {
+						_this.payBefore(res.result)
+				    },
+					fail: (res) => {
+						if(res.errMsg!='scanCode:fail cancel'){
+							_this.scanNotify = {scan: true,scanMessage: res.errMsg};
+						}
+					}
+				});
+			},
+			async payBefore(secret){
+				let expireTime=this.$dateTime.getExpireTime(5)
+				let params={
+					shopId:this.vuex_shopId,
+					money:this.money,
+					billsTitle:'用户支付',
+					expireTime,
+					appId:this.$global.wxParams.clientAppId,
+					secret,
+					type:2
+				}
+				let resp=await this.$api.shop.payBefore(params)
+				console.log(resp);
+			},
+			show(){
+				this.$refs.amountInput.show()
+			},
+			change(e){
+				if (!e) {
+					this.money=0
+				}else{
+					this.money=e
+				}
+			},
+			filterMoney(value) {
+				value=value.toString()
+				if (!value) {
+					return ''
+				} else {
+					value = value.replace(/\$\s?|(,*)/g, '')
+					return value.replace(/\B(?=(\d{3})+(?!\d))/g, ',')
+				}
+			},
+		}
+	}
+</script>
+<style>
+	page{
+		background-color: #FFFFFF;
+	}
+</style>
+
+<style lang="scss" scoped>
+	.data{
+		padding: 50rpx;
+		display: flex;
+		justify-content: flex-start;
+		flex-direction: column;
+		
+		.price{
+			
+			&-icon{
+				font-size: 40rpx;
+				font-weight: 800;
+			}
+		}
+	}
+	
+	.center{
+		display: flex;
+		justify-content: center;
+		align-items: center;
+	}
+	
+	.input-bar {
+		height: 150rpx;
+		border-bottom: 1rpx solid #DDDDDD;
+	
+		.icon {
+			width: 15%;
+			font-size: 70rpx;
+			font-weight: 900;
+			height: 100%;
+		}
+	
+		.input {
+			width: 85%;
+			height: 100%;
+			overflow: hidden;
+			font-size: 70rpx;
+		}
+	
+		.cusor {
+			margin-left: 10rpx;
+			width: 6rpx;
+			border-radius: 20rpx;
+			height: 60%;
+			background-color: #ff9900;
+			animation: blink 1200ms infinite ease-in-out;
+		}
+	}
+	
+	@keyframes blink {
+		from {
+			opacity: 0;
+		}
+	}
+</style>

+ 2 - 2
pages/shop-info/shop-info.vue

@@ -97,8 +97,8 @@
 					</u-form-item>
 				</view>
 				<view class="border">
-					<u-form-item label="营业执照名称" prop="fullName">
-						<u-input :border="false" placeholder="请输入营业执照名称" v-model="form.fullName"></u-input>
+					<u-form-item label="店铺全称" prop="fullName">
+						<u-input :border="false" placeholder="请输入店铺全称" v-model="form.fullName"></u-input>
 					</u-form-item>
 				</view>
 				<!-- <view class="border">

BIN
static/icon/del.png


BIN
static/icon/empty1.png


BIN
static/icon/empty2.png


BIN
static/icon/empty3.png


BIN
static/icon/empty4.png


BIN
static/icon/empty5.png