hmp il y a 4 ans
Parent
commit
175a2a64cf

+ 16 - 4
assets/colorui/app.scss

@@ -1,6 +1,3 @@
-$base-color:#ff9447;
-// #D18C42
-
 .btn-color,.text-base{
 	color: $base-color;
 }
@@ -30,7 +27,7 @@ $base-color:#ff9447;
 }
 
 .text-base{
-	color: #ff9447;
+	color: $base-color;
 }
 
 .bg-gradual-base {
@@ -290,4 +287,19 @@ $base-color:#ff9447;
 		@include arch;
 		right: -15rpx;
 	}
+}
+
+.price::after {
+	content: '元';
+	margin-left: 6rpx;
+	font-size: 0.5em;
+}
+
+.reduce::before {
+	content: '-';
+	margin-right: 10rpx;
+}
+.plus::before {
+	content: '+';
+	margin-right: 10rpx;
 }

+ 18 - 1
assets/http/api.js

@@ -154,6 +154,21 @@ const yeepay={
 	withdrawCardQuery:p => http.get("yeepay/withdrawCardQuery", {params:p}),
 }
 
+const goodsbills = {
+	list: p => http.get("ldt_bills/goodsbills/list", {
+		params: p
+	}),
+	detail: p => http.get("goodsbills/detail", {
+		params: p
+	}),
+}
+
+const area={
+	province: p => http.get('blade-system/region/lazy-tree?parentCode=00', {params: p}),
+	list:p => http.get('blade-system/region/lazy-tree', {params: p}),
+}
+
+
 
 
 export const api={
@@ -176,5 +191,7 @@ export const api={
 	statistics,
 	withdraw,
 	ocr,
-	yeepay
+	yeepay,
+	goodsbills,
+	area
 }

+ 46 - 0
components/back.vue

@@ -0,0 +1,46 @@
+<template>
+	<view>
+		<view class="back" @click="back()">
+			<text class="cuIcon-back" style="color: #FFFFFF;"></text>
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		name:"back",
+		data() {
+			return {
+				
+			};
+		},
+		methods:{
+			back(){
+				uni.navigateBack({
+					delta:1
+				})
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.back{
+		position: fixed;
+		width: 100%;
+		top: var(--status-bar-height);
+		margin-top: var(--status-bar-height);
+		left: 20rpx;
+		z-index: 99999;
+		transition: top .25s;
+		
+		
+		width: 60rpx;
+		height: 60rpx;
+		border-radius: 50%;
+		background-color: rgba(0,0,0,.2);
+		display: flex;
+		justify-content: center;
+		align-items: center;
+	}
+</style>

+ 793 - 0
components/loading/loading.vue

@@ -0,0 +1,793 @@
+<template>
+	<!-- 1、常用loading加载弹窗 -->
+	<view class="aui-loading aui-loading-ring" :class="{'aui-loading-ring-row': direction == 'row'}" v-if="SHOW && type == 1">
+		<view class="aui-mask" v-if="mask" @touchmove.stop.prevent></view>
+		<view class="aui-loading-main">
+			<view class="aui-loading-animate">
+				<view class="span"></view>
+				<view class="span"></view>
+				<view class="span"></view>
+				<view class="span"></view>
+				<view class="span"></view>
+				<view class="span"></view>
+				<view class="span"></view>
+				<view class="span"></view>
+				<view class="span"></view>
+				<view class="span"></view>
+				<view class="span"></view>
+				<view class="span"></view>
+			</view>
+			<view class="aui-loading-msg" v-if="msg">{{msg}}</view>
+		</view>
+	</view>
+	<!-- 2、按钮内显示loading加载动画 -->
+	<view class="aui-loading aui-loading-button" v-else-if="SHOW && type == 2">
+		<view class="aui-loading-main" :style="{background: styles.background, borderRadius: styles.borderRadius, zIndex: styles.zIndex}">
+			<view class="aui-loading-warp">
+				<view class="aui-loading-animate">
+					<view class="span" :style="{borderColor: styles.color}"></view>
+					<view class="span" :style="{borderColor: styles.color}"></view>
+					<view class="span" :style="{borderColor: styles.color}"></view>
+					<view class="span" :style="{borderColor: styles.color}"></view>
+					<view class="span" :style="{borderColor: styles.color}"></view>
+					<view class="span" :style="{borderColor: styles.color}"></view>
+					<view class="span" :style="{borderColor: styles.color}"></view>
+					<view class="span" :style="{borderColor: styles.color}"></view>
+					<view class="span" :style="{borderColor: styles.color}"></view>
+					<view class="span" :style="{borderColor: styles.color}"></view>
+					<view class="span" :style="{borderColor: styles.color}"></view>
+					<view class="span" :style="{borderColor: styles.color}"></view>
+				</view>
+				<view class="aui-loading-msg" v-if="msg" :style="{color: styles.color}">{{msg}}</view>
+			</view>
+		</view>
+	</view>
+	<!-- 3、特殊风格loading加载弹窗 -> 四方块旋转 -->
+	<view class="aui-loading aui-loading-squarefour" :class="{'aui-loading-squarefour-style-1': theme==1, 'aui-loading-squarefour-style-2': theme==2}" v-else-if="SHOW && type == 3">
+		<view class="aui-mask" v-if="mask" @touchmove.stop.prevent></view>
+		<view class="aui-loading-main" :style="{background: styles.background, zIndex: styles.zIndex}">
+			<view class="aui-loading-animate">
+				<view class="span1"></view>
+				<view class="span2"></view>
+				<view class="span3"></view>
+				<view class="span4"></view>
+			</view>
+			<view class="aui-loading-msg" style="top: 40%;" v-if="msg" :style="{color: styles.color}">{{msg}}</view>
+		</view>
+	</view>
+	<!-- 4、三平行四边形放大缩小(全屏首次加载过度动画) -->
+	<view class="aui-loading aui-loading-dots" v-else-if="SHOW && type == 4">
+		<view class="aui-mask" v-if="mask" @touchmove.stop.prevent></view>
+		<view class="aui-loading-main">
+			<view class="aui-loading-dot-items">
+				<view class="aui-loading-dot-item dot_one"></view>
+				<view class="aui-loading-dot-item dot_two"></view>
+				<view class="aui-loading-dot-item dot_three"></view>
+			</view>
+		</view>
+	</view>
+	<!-- 5、三圆点背景过度(全屏首次加载过度动画) -->
+	<view class="aui-loading aui-loading-dots-opacity" v-else-if="SHOW && type == 5">
+		<view class="aui-mask" v-if="mask" @touchmove.stop.prevent></view>
+		<view class="aui-loading-main">
+			<view class="aui-loading-dot-items">
+				<view class="aui-loading-dot-item dot_one"></view>
+				<view class="aui-loading-dot-item dot_two"></view>
+				<view class="aui-loading-dot-item dot_three"></view>
+			</view>
+		</view>
+	</view>
+</template>
+<script>
+	export default {
+		name: "aui-loading",
+		props: {
+			type: { //默认圆环风格(<1>、1:toast圆环风格,<2>、2:点击按钮后在按钮内显示加载动画) <3>、3:四方块水平方向旋转,
+				type: Number,
+				default: 1
+			},
+			mask: { //是否显示遮罩,默认false
+				type: Boolean,
+				default: true
+			},
+			direction: { //横向("row")或纵向("col")控制,默认纵向
+				type: String,
+				default: 'row'
+			},
+			theme: { //控制风格 type==3时生效
+				type: Number,
+				default: 1
+			},
+			styles: { //样式
+				type: Object,
+				default () {
+					return {
+						color: '',
+						borderRadius: '',
+						background: '',
+						zIndex: ''
+					};
+				}
+			},
+		},
+		data() {
+			return {
+				msg:'加载中...',
+				SHOW: false, //是否显示
+			};
+		},
+		created(){
+			//console.log(this.styles);
+		},
+		methods:{
+			//显示
+			show(msg='加载中...'){
+				var _this = this;
+				_this.msg=msg
+				return new Promise(function(resolve, reject){
+					_this.SHOW = true;
+					var Timer = setTimeout(function(){
+						clearTimeout(Timer)
+						_this.hide(); //隐藏loading
+					},2000)
+					resolve();
+				});
+			},
+			showLoading(msg='加载中...'){
+				var _this = this;
+				_this.msg=msg
+				return new Promise(function(resolve, reject){
+					_this.SHOW = true;
+					resolve();
+				});
+			},
+			//隐藏
+			hide(){
+				var _this = this;
+				return new Promise(function(resolve, reject){
+					_this.SHOW = false;
+					resolve();
+				});
+			},
+		}
+	}
+</script>
+
+<style>
+	/* loading加载弹窗 */
+	/* loading-ring 样式设置 */
+	.aui-loading.aui-loading-ring{
+		width: 100%;
+		height: 100%;
+		position: fixed;
+		top: 0;
+		left: 0;
+		z-index: 999;
+	}
+	.aui-loading.aui-loading-ring .aui-loading-main{
+		width: auto;
+		height: auto;
+		min-width: 55px;
+		min-height: 55px;
+		background: rgba(0,0,0,.8);
+		border-radius: 10px;
+		box-shadow: 0 0 1px rgba(100,100,100,.5);
+		padding: 15px;
+		box-sizing: border-box;
+		-ms-animation: aui-fade-in .1s ease-out forwards;
+		-webkit-animation: aui-fade-in .1s ease-out forwards;
+		animation: aui-fade-in .1s ease-out forwards;
+		position: absolute;
+		top: 40%;
+		left: 50%;
+		z-index: 999;
+		-ms-transform: translate(-50%, -50%);
+		-webkit-transform: translate(-50%, -50%);
+		transform: translate(-50%, -50%);
+	}
+	.aui-loading.aui-loading-ring .aui-loading-animate{
+		width: 25px;
+		height: 25px;
+		margin: 0 auto;
+		border-radius: 50%;
+		position: relative;
+		z-index: 999;
+	}
+	.aui-loading.aui-loading-ring .aui-loading-msg{
+		width: 100%;
+		height: 17px;
+		max-width: -webkit-calc(100vw - 40px);
+		max-width: calc(100vw - 40px);
+		line-height: 17px;
+		position: relative;
+		top: 5px;
+		font-size: 13px;
+		overflow: hidden;
+		text-overflow: ellipsis;
+		white-space: nowrap;
+		color: #FFF;
+		text-align: center;
+		opacity: .8;
+	}
+	.aui-loading.aui-loading-ring .aui-loading-animate .span{
+		width: -webkit-calc(100% - 6px);
+		width: calc(100% - 6px);
+		height: 2px;
+		display: inline-block;
+		border-radius: 2px;
+		position: absolute;
+		box-sizing: initial !important;
+		top: -webkit-calc(50% - 1px);
+		top: calc(50% - 1px);
+		left: 0;
+		opacity: 0.3;
+		-ms-animation: load-button 0.6s ease infinite;
+		-webkit-animation: load-button 0.6s ease infinite;
+		animation: load-button 0.6s ease infinite;
+	}
+	.aui-loading.aui-loading-ring .aui-loading-animate .span:nth-child(1){
+		border-left: 6px solid #FFF;
+		-ms-transform: rotate(0deg);
+		-webkit-transform: rotate(0deg);
+		transform: rotate(0deg);
+		-ms-animation-delay: 0.05s;
+		-webkit-animation-delay: 0.05s;
+		animation-delay: 0.05s;
+	}
+	.aui-loading.aui-loading-ring .aui-loading-animate .span:nth-child(2){
+		border-left: 6px solid #FFF;
+		-ms-transform: rotate(30deg);
+		-webkit-transform: rotate(30deg);
+		transform: rotate(30deg);
+		-ms-animation-delay: 0.1s;
+		-webkit-animation-delay: 0.1s;
+		animation-delay: 0.1s;
+	}
+	.aui-loading.aui-loading-ring .aui-loading-animate .span:nth-child(3){
+		border-left: 6px solid #FFF;
+		-ms-transform: rotate(60deg);
+		-webkit-transform: rotate(60deg);
+		transform: rotate(60deg);
+		-ms-animation-delay: 0.15s;
+		-webkit-animation-delay: 0.15s;
+		animation-delay: 0.15s;
+	}
+	.aui-loading.aui-loading-ring .aui-loading-animate .span:nth-child(4){
+		border-left: 6px solid #FFF;
+		-ms-transform: rotate(90deg);
+		-webkit-transform: rotate(90deg);
+		transform: rotate(90deg);
+		-ms-animation-delay: 0.2s;
+		-webkit-animation-delay: 0.2s;
+		animation-delay: 0.2s;
+	}
+	.aui-loading.aui-loading-ring .aui-loading-animate .span:nth-child(5){
+		border-left: 6px solid #FFF;
+		-ms-transform: rotate(120deg);
+		-webkit-transform: rotate(120deg);
+		transform: rotate(120deg);
+		-ms-animation-delay: 0.25s;
+		-webkit-animation-delay: 0.25s;
+		animation-delay: 0.25s;
+	}
+	.aui-loading.aui-loading-ring .aui-loading-animate .span:nth-child(6){
+		border-left: 6px solid #FFF;
+		-ms-transform: rotate(150deg);
+		-webkit-transform: rotate(150deg);
+		transform: rotate(150deg);
+		-ms-animation-delay: 0.3s;
+		-webkit-animation-delay: 0.3s;
+		animation-delay: 0.3s;
+	}
+	.aui-loading.aui-loading-ring .aui-loading-animate .span:nth-child(7){
+		border-right: 6px solid #FFF;
+		-ms-transform: rotate(0deg);
+		-webkit-transform: rotate(0deg);
+		transform: rotate(0deg);
+		-ms-animation-delay: 0.35s;
+		-webkit-animation-delay: 0.35s;
+		animation-delay: 0.35s;
+	}
+	.aui-loading.aui-loading-ring .aui-loading-animate .span:nth-child(8){
+		border-right: 6px solid #FFF;
+		-ms-transform: rotate(30deg);
+		-webkit-transform: rotate(30deg);
+		transform: rotate(30deg);
+		-ms-animation-delay: 0.4s;
+		-webkit-animation-delay: 0.4s;
+		animation-delay: 0.4s;
+	}
+	.aui-loading.aui-loading-ring .aui-loading-animate .span:nth-child(9){
+		border-right: 6px solid #FFF;
+		-ms-transform: rotate(60deg);
+		-webkit-transform: rotate(60deg);
+		transform: rotate(60deg);
+		-ms-animation-delay: 0.45s;
+		-webkit-animation-delay: 0.45s;
+		animation-delay: 0.45s;
+	}
+	.aui-loading.aui-loading-ring .aui-loading-animate .span:nth-child(10){
+		border-right: 6px solid #FFF;
+		-ms-transform: rotate(90deg);
+		-webkit-transform: rotate(90deg);
+		transform: rotate(90deg);
+		-ms-animation-delay: 0.5s;
+		-webkit-animation-delay: 0.5s;
+		animation-delay: 0.5s;
+	}
+	.aui-loading.aui-loading-ring .aui-loading-animate .span:nth-child(11){
+		border-right: 6px solid #FFF;
+		-ms-transform: rotate(120deg);
+		-webkit-transform: rotate(120deg);
+		transform: rotate(120deg);
+		-ms-animation-delay: 0.55s;
+		-webkit-animation-delay: 0.55s;
+		animation-delay: 0.55s;
+	}
+	.aui-loading.aui-loading-ring .aui-loading-animate .span:nth-child(12){
+		border-right: 6px solid #FFF;
+		-ms-transform: rotate(150deg);
+		-webkit-transform: rotate(150deg);
+		transform: rotate(150deg);
+		-ms-animation-delay: 0.6s;
+		-webkit-animation-delay: 0.6s;
+		animation-delay: 0.6s;
+	}
+	
+	.aui-loading.aui-loading-ring.aui-loading-ring-row .aui-loading-main{
+		display: block;
+		min-height: 40px;
+		padding: 10px 15px;
+		border-radius: 6px;		
+	}
+	.aui-loading.aui-loading-ring.aui-loading-ring-row .aui-loading-animate{
+		display: inline-block;
+		vertical-align: top;
+	}
+	.aui-loading.aui-loading-ring.aui-loading-ring-row .aui-loading-msg{
+		width: auto;
+		height: 25px;
+		line-height: 25px;
+		top: 0;
+		margin-left: 10px;
+		display: inline-block;
+		vertical-align: top;
+	}
+	/* loading-button 样式设置 */
+	.aui-loading.aui-loading-button{
+		width: 100%;
+		height: 100%;
+		position: absolute;
+		top: 0;
+		left: 0;
+	}
+	.aui-loading.aui-loading-button .aui-loading-main{
+		width: 100%;
+		height: 100%;
+		text-align: center;
+		position: absolute;
+		top: 0;
+		left: 0;
+		z-index: 996;
+		background: #FFF;
+		white-space: nowrap;
+		-ms-animation: aui-fade-in .2s ease-out forwards;
+		-webkit-animation: aui-fade-in .2s ease-out forwards;
+		animation: aui-fade-in .2s ease-out forwards;
+	}
+	.aui-loading.aui-loading-button .aui-loading-warp{
+		width: auto;
+		height: auto;
+		display: flex;
+		position: absolute;
+		top: 50%;
+		left: 50%;
+		-webkit-transform: translate(-50%, -50%);
+		transform: translate(-50%, -50%);
+	}
+	.aui-loading.aui-loading-button .aui-loading-animate{
+		width: 20px;
+		height: 20px;
+		display: inline-block;
+		vertical-align: top;
+		position: relative;
+	}
+	.aui-loading.aui-loading-button .aui-loading-msg{
+		height: 20px;
+		line-height: 20px;
+		font-size: 13px;
+		margin-left: 5px;
+		display: inline-block;
+		vertical-align: top;
+		position: relative;
+		top: 1px;
+	}
+	.aui-loading.aui-loading-button .aui-loading-animate .span{
+		width: -webkit-calc(100% - 6px);
+		width: calc(100% - 6px);
+		height: 2px;
+		display: inline-block;
+		border-radius: 2px;
+		box-sizing: initial !important;
+		position: absolute;
+		top: -webkit-calc(50% - 1px);
+		top: calc(50% - 1px);
+		left: 0;
+		opacity: 0.3;
+		-ms-animation: load-button 0.6s ease infinite;
+		-webkit-animation: load-button 0.6s ease infinite;
+		animation: load-button 0.6s ease infinite;
+	}
+	.aui-loading.aui-loading-button .aui-loading-animate .span:nth-child(1){
+		border-left: 5px solid #909090;
+		-ms-transform: rotate(0deg);
+		-webkit-transform: rotate(0deg);
+		transform: rotate(0deg);
+		-ms-animation-delay: 0.05s;
+		-webkit-animation-delay: 0.05s;
+		animation-delay: 0.05s;
+	}
+	.aui-loading.aui-loading-button .aui-loading-animate .span:nth-child(2){
+		border-left: 5px solid #909090;
+		-ms-transform: rotate(30deg);
+		-webkit-transform: rotate(30deg);
+		transform: rotate(30deg);
+		-ms-animation-delay: 0.1s;
+		-webkit-animation-delay: 0.1s;
+		animation-delay: 0.1s;
+	}
+	.aui-loading.aui-loading-button .aui-loading-animate .span:nth-child(3){
+		border-left: 5px solid #909090;
+		-ms-transform: rotate(60deg);
+		-webkit-transform: rotate(60deg);
+		transform: rotate(60deg);
+		-ms-animation-delay: 0.15s;
+		-webkit-animation-delay: 0.15s;
+		animation-delay: 0.15s;
+	}
+	.aui-loading.aui-loading-button .aui-loading-animate .span:nth-child(4){
+		border-left: 5px solid #909090;
+		-ms-transform: rotate(90deg);
+		-webkit-transform: rotate(90deg);
+		transform: rotate(90deg);
+		-ms-animation-delay: 0.2s;
+		-webkit-animation-delay: 0.2s;
+		animation-delay: 0.2s;
+	}
+	.aui-loading.aui-loading-button .aui-loading-animate .span:nth-child(5){
+		border-left: 5px solid #909090;
+		-ms-transform: rotate(120deg);
+		-webkit-transform: rotate(120deg);
+		transform: rotate(120deg);
+		-ms-animation-delay: 0.25s;
+		-webkit-animation-delay: 0.25s;
+		animation-delay: 0.25s;
+	}
+	.aui-loading.aui-loading-button .aui-loading-animate .span:nth-child(6){
+		border-left: 5px solid #909090;
+		-ms-transform: rotate(150deg);
+		-webkit-transform: rotate(150deg);
+		transform: rotate(150deg);
+		-ms-animation-delay: 0.3s;
+		-webkit-animation-delay: 0.3s;
+		animation-delay: 0.3s;
+	}
+	.aui-loading.aui-loading-button .aui-loading-animate .span:nth-child(7){
+		border-right: 5px solid #909090;
+		-ms-transform: rotate(0deg);
+		-webkit-transform: rotate(0deg);
+		transform: rotate(0deg);
+		-ms-animation-delay: 0.35s;
+		-webkit-animation-delay: 0.35s;
+		animation-delay: 0.35s;
+	}
+	.aui-loading.aui-loading-button .aui-loading-animate .span:nth-child(8){
+		border-right: 5px solid #909090;
+		-ms-transform: rotate(30deg);
+		-webkit-transform: rotate(30deg);
+		transform: rotate(30deg);
+		-ms-animation-delay: 0.4s;
+		-webkit-animation-delay: 0.4s;
+		animation-delay: 0.4s;
+	}
+	.aui-loading.aui-loading-button .aui-loading-animate .span:nth-child(9){
+		border-right: 5px solid #909090;
+		-ms-transform: rotate(60deg);
+		-webkit-transform: rotate(60deg);
+		transform: rotate(60deg);
+		-ms-animation-delay: 0.45s;
+		-webkit-animation-delay: 0.45s;
+		animation-delay: 0.45s;
+	}
+	.aui-loading.aui-loading-button .aui-loading-animate .span:nth-child(10){
+		border-right: 5px solid #909090;
+		-ms-transform: rotate(90deg);
+		-webkit-transform: rotate(90deg);
+		transform: rotate(90deg);
+		-ms-animation-delay: 0.5s;
+		-webkit-animation-delay: 0.5s;
+		animation-delay: 0.5s;
+	}
+	.aui-loading.aui-loading-button .aui-loading-animate .span:nth-child(11){
+		border-right: 5px solid #909090;
+		-ms-transform: rotate(120deg);
+		-webkit-transform: rotate(120deg);
+		transform: rotate(120deg);
+		-ms-animation-delay: 0.55s;
+		-webkit-animation-delay: 0.55s;
+		animation-delay: 0.55s;
+	}
+	.aui-loading.aui-loading-button .aui-loading-animate .span:nth-child(12){
+		border-right: 5px solid #909090;
+		-ms-transform: rotate(150deg);
+		-webkit-transform: rotate(150deg);
+		transform: rotate(150deg);
+		-ms-animation-delay: 0.6s;
+		-webkit-animation-delay: 0.6s;
+		animation-delay: 0.6s;
+	}
+	/* loading-squarefour 样式设置 */
+	.aui-loading.aui-loading-squarefour{
+		width: 100%;
+		height: 100%;
+		position: fixed;
+		top: 0;
+		left: 0;
+		z-index: 999;
+	}
+	.aui-loading.aui-loading-squarefour .aui-loading-main{
+		width: 100%;
+		height: 100%;
+		position: absolute;
+		top: 0;
+		left: 0;
+		z-index: 996;
+		background: #FFF;
+		-ms-animation: aui-fade-in .2s ease-out forwards;
+		-webkit-animation: aui-fade-in .2s ease-out forwards;
+		animation: aui-fade-in .2s ease-out forwards;
+	}
+	.aui-loading.aui-loading-squarefour .aui-loading-animate{
+		width: 30px;
+		height: 30px;
+		display: block;
+		margin: auto;
+		position: absolute;
+		top: -webkit-calc(50% - 15px);
+		top: calc(40% - 25px);
+		left: -webkit-calc(50% - 15px);
+		left: calc(50% - 15px);
+		-ms-animation: aui-loading-squarefour-animate 1s infinite;
+		-webkit-animation: aui-loading-squarefour-animate 1s infinite;
+		animation: aui-loading-squarefour-animate 1s infinite;
+	}
+	.aui-loading.aui-loading-squarefour .aui-loading-animate view{
+		width: 12px;
+		height: 12px;
+		display: block;
+		border-radius: 2px;
+		background: #2cb0b2;
+		position: absolute;
+	}
+	.aui-loading.aui-loading-squarefour .aui-loading-animate .span1{
+		background: #8BC34A;
+		left: 0px;
+		-ms-animation: aui-loading-square-span1-animate 2s linear 0s infinite normal;
+		-webkit-animation: aui-loading-square-span1-animate 2s linear 0s infinite normal;
+		animation: aui-loading-square-span1-animate 2s linear 0s infinite normal;
+	}
+	.aui-loading.aui-loading-squarefour .aui-loading-animate .span2{
+		background: #F44336;
+		right: 0;
+		-ms-animation: aui-loading-square-span2-animate 2s linear 0s infinite normal;
+		-webkit-animation: aui-loading-square-span2-animate 2s linear 0s infinite normal;
+		animation: aui-loading-square-span2-animate 2s linear 0s infinite normal;
+	}
+	.aui-loading.aui-loading-squarefour .aui-loading-animate .span3{
+		background: #FFB74D;
+		bottom: 0;
+		-ms-animation: aui-loading-square-span3-animate 2s linear 0s infinite normal;
+		-webkit-animation: aui-loading-square-span3-animate 2s linear 0s infinite normal;
+		animation: aui-loading-square-span3-animate 2s linear 0s infinite normal;
+	}
+	.aui-loading.aui-loading-squarefour .aui-loading-animate .span4{
+		background: #82bcf9;
+		right: 0;
+		bottom: 0;
+		-ms-animation: aui-loading-square-span4-animate 2s linear 0s infinite normal;
+		-webkit-animation: aui-loading-square-span4-animate 2s linear 0s infinite normal;
+		animation: aui-loading-square-span4-animate 2s linear 0s infinite normal;
+	}
+	.aui-loading.aui-loading-squarefour .aui-loading-msg{
+		width: 100%;
+		height: 50px;
+		line-height: 60px;
+		font-size: 13px;
+		color: #909090;
+		text-align: center;
+		position: absolute;
+		top: 50%;
+		left: 0;
+	}
+	.aui-loading.aui-loading-squarefour.aui-loading-squarefour-style-2{
+		z-index: 996;
+	}
+	.aui-loading.aui-loading-squarefour.aui-loading-squarefour-style-1{
+		z-index: 999;
+	}
+	.aui-loading.aui-loading-squarefour.aui-loading-squarefour-style-1 .aui-loading-main{
+		width: auto;
+		height: auto;
+		min-width: 54px;
+		min-height: 54px;
+		background: rgba(0,0,0,.8);
+		border-radius: 10px;
+		box-shadow: 0 0 1px rgba(100,100,100,.3) inset;
+		padding: 15px;
+		box-sizing: border-box;
+		top: 50%;
+		left: 50%;
+		z-index: 999;
+		-ms-transform: translate(-50%, -50%);
+		-webkit-transform: translate(-50%, -50%);
+		transform: translate(-50%, -50%);
+	}
+	.aui-loading.aui-loading-squarefour.aui-loading-squarefour-style-1 .aui-loading-main .aui-loading-animate{
+		position: relative;
+		top: 0;
+		left: 0;
+	}
+	.aui-loading.aui-loading-squarefour.aui-loading-squarefour-style-1 .aui-loading-main .aui-loading-msg{
+		height: 22px;
+		line-height: 20px;
+		padding: 0 10px;
+		box-sizing: border-box;
+		font-size: 14px;
+		color: #FFF;
+		opacity: 0.9;		
+		position: relative;
+		top: 6px;
+		left: 0;
+	}
+	/* 三平行四边形放大缩小动画放大缩小动画(全屏首次加载过度动画) */
+	.aui-loading.aui-loading-dots{background-color: #FFF; height: 100%; width: 100%; position: fixed; z-index: 996; margin-top: 0px; top: 0px;}
+	.aui-loading.aui-loading-dots .aui-loading-main{width: 100%;height: 100%;position: relative;}
+	.aui-loading.aui-loading-dots .aui-loading-dot-items {position: absolute;left: 50%;top: 50%;height: 60px;width: 120px; text-align: center; margin-top: -30px;margin-left: -60px;}
+	.aui-loading.aui-loading-dots .aui-loading-dot-item{width: 10px;height: 10px; background-color: #ec2b45; display: inline-block; margin-right: 6px; margin-top: 20px; border-radius: 2px; -webkit-transform: scale(1) skewX(-30deg); transform: scale(1) skewX(-30deg);}
+	.aui-loading.aui-loading-dots .dot_one {background: #197DE0; -webkit-animation: dot_one 1.5s infinite; animation: dot_one 1.5s infinite;}
+	.aui-loading.aui-loading-dots .dot_two {background: #2CB0B2; -webkit-animation: dot_two 1.5s infinite; animation: dot_two 1.5s infinite; -webkit-animation-delay: 0.2s; animation-delay: 0.2s;}
+	.aui-loading.aui-loading-dots .dot_three {background: #4CD964; margin-right: 0; -webkit-animation: dot_three 1.5s infinite; animation: dot_three 1.5s infinite; -webkit-animation-delay: 0.4s; animation-delay: 0.4s;}
+	/* 圆点背景过度动画-微信小程序效果(全屏首次加载过度动画) */
+	.aui-loading.aui-loading-dots-opacity{background-color: #FFF; height: 100%; width: 100%; position: fixed; z-index: 996; margin-top: 0px; top: 0px;}
+	.aui-loading.aui-loading-dots-opacity .aui-loading-main{width: 100%;height: 100%;position: relative;}
+	.aui-loading.aui-loading-dots-opacity .aui-loading-dot-items {position: absolute;left: 50%;top: 50%;height: 60px;width: 80px; text-align: center; margin-top: -30px;margin-left: -40px;}
+	.aui-loading.aui-loading-dots-opacity .aui-loading-dot-item{width: 9px;height: 9px; opacity: 1; background-color: #ec2b45; display: inline-block; margin-right: 8px;margin-top: 30px;-moz-border-radius: 50% 50% 50% 50%;-webkit-border-radius: 50% 50% 50% 50%;border-radius: 50% 50% 50% 50%;}
+	.aui-loading.aui-loading-dots-opacity .dot_one {background: #197DE0;-webkit-animation: dot-opacity 1.5s infinite; animation: dot-opacity 1.5s infinite;}
+	.aui-loading.aui-loading-dots-opacity .dot_two {background: #2CB0B2;-webkit-animation: dot-opacity 1.5s infinite; animation: dot-opacity 1.5s infinite; -webkit-animation-delay: 0.25s; animation-delay: 0.25s;}
+	.aui-loading.aui-loading-dots-opacity .dot_three {background: #4CD964;margin-right: 0; -webkit-animation: dot-opacity 1.5s infinite; animation: dot-opacity 1.5s infinite; -webkit-animation-delay: 0.5s; animation-delay: 0.5s;}
+	@-webkit-keyframes dot-opacity {
+		50% {opacity: 0.1; }
+	}
+	@keyframes dot-opacity {
+		50% {opacity: 0.1; }
+	}
+	@-webkit-keyframes dot_one {
+		75% {-webkit-transform: scale(0) skewX(-30deg); }
+	}
+	@keyframes dot_one {
+		75% {transform: scale(0) skewX(-30deg); -webkit-transform: scale(0) skewX(-30deg);}
+	}
+	@-webkit-keyframes dot_two {
+		 75% {-webkit-transform: scale(0) skewX(-30deg); }
+	}
+	@keyframes dot_two {
+		75% {transform: scale(0) skewX(-30deg); -webkit-transform:  scale(0) skewX(-30deg);}
+	}
+	@-webkit-keyframes dot_three {
+		75% {-webkit-transform: scale(0) skewX(-30deg); }
+	}
+	@keyframes dot_three {
+		75% {transform: scale(0) skewX(-30deg);-webkit-transform: scale(0) skewX(-30deg);} 
+	}
+	/* loading加载弹窗 load-button 动画 */
+	@-ms-keyframes load-button {
+		0% {opacity: 1;}
+		100% {opacity: 0.3;}
+	}
+	@-webkit-keyframes load-button {
+		0% {opacity: 1;}
+		100% {opacity: 0.3;}
+	}
+	@keyframes load-button {
+		0% {opacity: 1;}
+		100% {opacity: 0.3;}
+	}
+
+	/* loading加载弹窗 aui-loading-squarefour 动画 */
+	@-ms-keyframes aui-loading-squarefour-animate{
+		0%{-ms-transform: rotate(0deg); -webkit-transform: rotate(0deg); transform: rotate(0deg);}
+		100%{-ms-transform: rotate(360deg); -webkit-transform: rotate(360deg); transform: rotate(360deg);}
+	}
+	@-webkit-keyframes aui-loading-squarefour-animate{
+		0%{-ms-transform: rotate(0deg); -webkit-transform: rotate(0deg); transform: rotate(0deg);}
+		100%{-ms-transform: rotate(360deg); -webkit-transform: rotate(360deg); transform: rotate(360deg);}
+	}
+	@keyframes aui-loading-squarefour-animate{
+		0%{-ms-transform: rotate(0deg); -webkit-transform: rotate(0deg); transform: rotate(0deg);}
+		100%{-ms-transform: rotate(360deg); -webkit-transform: rotate(360deg); transform: rotate(360deg);}
+	}
+	
+	@-ms-keyframes aui-loading-square-span1-animate{
+		0%{-ms-transform: translate(0, 0); -webkit-transform: translate(0, 0); transform: translate(0, 0);}
+		25%{-ms-transform: translate(0, 18px); -webkit-transform: translate(0, 18px); transform: translate(0, 18px);}
+		50%{-ms-transform: translate(18px, 18px); -webkit-transform: translate(18px, 18px); transform: translate(18px, 18px);}
+		75%{-ms-transform: translate(18px, 0); -webkit-transform: translate(18px, 0); transform: translate(18px, 0);}
+	}
+	@-webkit-keyframes aui-loading-square-span1-animate{
+		0%{-ms-transform: translate(0, 0); -webkit-transform: translate(0, 0); transform: translate(0, 0);}
+		25%{-ms-transform: translate(0, 18px); -webkit-transform: translate(0, 18px); transform: translate(0, 18px);}
+		50%{-ms-transform: translate(18px, 18px); -webkit-transform: translate(18px, 18px); transform: translate(18px, 18px);}
+		75%{-ms-transform: translate(18px, 0); -webkit-transform: translate(18px, 0); transform: translate(18px, 0);}
+	}
+	@keyframes aui-loading-square-span1-animate{
+		0%{-ms-transform: translate(0, 0); -webkit-transform: translate(0, 0); transform: translate(0, 0);}
+		25%{-ms-transform: translate(0, 18px); -webkit-transform: translate(0, 18px); transform: translate(0, 18px);}
+		50%{-ms-transform: translate(18px, 18px); -webkit-transform: translate(18px, 18px); transform: translate(18px, 18px);}
+		75%{-ms-transform: translate(18px, 0); -webkit-transform: translate(18px, 0); transform: translate(18px, 0);}
+	}
+	
+	@-ms-keyframes aui-loading-square-span2-animate{
+		0%{-ms-transform: translate(0, 0); -webkit-transform: translate(0, 0); transform: translate(0, 0);}
+		25%{-ms-transform: translate(-18px, 0); -webkit-transform: translate(-18px, 0); transform: translate(-18px, 0);}
+		50%{-ms-transform: translate(-18px, 18px); -webkit-transform: translate(-18px, 18px); transform: translate(-18px, 18px);}
+		75%{-ms-transform: translate(0, 18px); -webkit-transform: translate(0, 18px); transform: translate(0, 18px);}
+	}
+	@-webkit-keyframes aui-loading-square-span2-animate{
+		0%{-ms-transform: translate(0, 0); -webkit-transform: translate(0, 0); transform: translate(0, 0);}
+		25%{-ms-transform: translate(-18px, 0); -webkit-transform: translate(-18px, 0); transform: translate(-18px, 0);}
+		50%{-ms-transform: translate(-18px, 18px); -webkit-transform: translate(-18px, 18px); transform: translate(-18px, 18px);}
+		75%{-ms-transform: translate(0, 18px); -webkit-transform: translate(0, 18px); transform: translate(0, 18px);}
+	}
+	@keyframes aui-loading-square-span2-animate{
+		0%{-ms-transform: translate(0, 0); -webkit-transform: translate(0, 0); transform: translate(0, 0);}
+		25%{-ms-transform: translate(-18px, 0); -webkit-transform: translate(-18px, 0); transform: translate(-18px, 0);}
+		50%{-ms-transform: translate(-18px, 18px); -webkit-transform: translate(-18px, 18px); transform: translate(-18px, 18px);}
+		75%{-ms-transform: translate(0, 18px); -webkit-transform: translate(0, 18px); transform: translate(0, 18px);}
+	}
+	@-ms-keyframes aui-loading-square-span3-animate{
+		0%{-ms-transform: translate(0, 0); -webkit-transform: translate(0, 0); transform: translate(0, 0);}
+		25%{-ms-transform: translate(18px, 0); -webkit-transform: translate(18px, 0); transform: translate(18px, 0);}
+		50%{-ms-transform: translate(18px, -18px); -webkit-transform: translate(18px, -18px); transform: translate(18px, -18px);}
+		75%{-ms-transform: translate(0, -18px); -webkit-transform: translate(0, -18px); transform: translate(0, -18px);}
+	}
+	@-webkit-keyframes aui-loading-square-span3-animate{
+		0%{-ms-transform: translate(0, 0); -webkit-transform: translate(0, 0); transform: translate(0, 0);}
+		25%{-ms-transform: translate(18px, 0); -webkit-transform: translate(18px, 0); transform: translate(18px, 0);}
+		50%{-ms-transform: translate(18px, -18px); -webkit-transform: translate(18px, -18px); transform: translate(18px, -18px);}
+		75%{-ms-transform: translate(0, -18px); -webkit-transform: translate(0, -18px); transform: translate(0, -18px);}
+	}
+	@keyframes aui-loading-square-span3-animate{
+		0%{-ms-transform: translate(0, 0); -webkit-transform: translate(0, 0); transform: translate(0, 0);}
+		25%{-ms-transform: translate(18px, 0); -webkit-transform: translate(18px, 0); transform: translate(18px, 0);}
+		50%{-ms-transform: translate(18px, -18px); -webkit-transform: translate(18px, -18px); transform: translate(18px, -18px);}
+		75%{-ms-transform: translate(0, -18px); -webkit-transform: translate(0, -18px); transform: translate(0, -18px);}
+	}
+	@-ms-keyframes aui-loading-square-span4-animate{
+		0%{-ms-transform: translate(0, 0); -webkit-transform: translate(0, 0); transform: translate(0, 0);}
+		25%{-ms-transform: translate(0, -18px); -webkit-transform: translate(0, -18px); transform: translate(0, -18px);}
+		50%{-ms-transform: translate(-18px, -18px); -webkit-transform: translate(-18px, -18px); transform: translate(-18px, -18px);}
+		75%{-ms-transform: translate(-18px, 0); -webkit-transform: translate(-18px, 0); transform: translate(-18px, 0);}
+	}
+	@-webkit-keyframes aui-loading-square-span4-animate{
+		0%{-ms-transform: translate(0, 0); -webkit-transform: translate(0, 0); transform: translate(0, 0);}
+		25%{-ms-transform: translate(0, -18px); -webkit-transform: translate(0, -18px); transform: translate(0, -18px);}
+		50%{-ms-transform: translate(-18px, -18px); -webkit-transform: translate(-18px, -18px); transform: translate(-18px, -18px);}
+		75%{-ms-transform: translate(-18px, 0); -webkit-transform: translate(-18px, 0); transform: translate(-18px, 0);}
+	}
+	@keyframes aui-loading-square-span4-animate{
+		0%{-ms-transform: translate(0, 0); -webkit-transform: translate(0, 0); transform: translate(0, 0);}
+		25%{-ms-transform: translate(0, -18px); -webkit-transform: translate(0, -18px); transform: translate(0, -18px);}
+		50%{-ms-transform: translate(-18px, -18px); -webkit-transform: translate(-18px, -18px); transform: translate(-18px, -18px);}
+		75%{-ms-transform: translate(-18px, 0); -webkit-transform: translate(-18px, 0); transform: translate(-18px, 0);}
+	}
+</style>

+ 6 - 0
main.js

@@ -13,6 +13,12 @@ Vue.use(uView);
 import toast from '@/components/toast/toast.vue'
 Vue.use(toast)
 
+import loading from '@/components/loading/loading.vue'
+Vue.use(loading)
+
+import back from '@/components/back.vue'
+Vue.use(back)
+
 //mescroll
 import MescrollBody from "@/components/mescroll-body/mescroll-body.vue"
 Vue.component('MescrollBody', MescrollBody)

+ 18 - 0
pages.json

@@ -389,6 +389,24 @@
             }
             
         }
+        ,{
+            "path" : "pages/test/test1",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/choose-list/choose-list",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "选择数据",
+                "enablePullDownRefresh": false
+            }
+            
+        }
     ],
 	"globalStyle": {
 		"navigationBarTextStyle": "black",

+ 26 - 0
pages/choose-list/choose-list.vue

@@ -0,0 +1,26 @@
+<template>
+	<view class="">
+		
+	</view>
+</template>
+
+<script>
+export default {
+	name: '',
+	data() {
+		return {
+			
+		};
+	},
+	onLoad() {
+		
+	},
+	methods:{
+		
+	}
+};
+</script>
+
+<style lang="scss" scoped>
+	
+</style>

+ 9 - 9
pages/login/forget.vue

@@ -2,9 +2,7 @@
 	<view style="position: relative;">
 		<view class="bg"></view>
 		<view class="bg1"></view>
-		<view class="back" @click="$back">
-			<u-icon name="arrow-left" size="50" color="#919191"></u-icon>
-		</view>
+		<back></back>
 		
 		<view class="content">
 			<view class="top">
@@ -44,11 +42,15 @@
 
 <script>
 	import md5Libs from "uview-ui/libs/function/md5";
+	import back from "@/components/back.vue"
 	export default {
+		components:{
+			back
+		},
 		data() {
 			return {
 				customStyle:{
-					'backgroundColor':'#d18c42',
+					'backgroundColor':'#EF9944',
 					'color':'#ffffff'
 				},
 				codeTips: '',
@@ -154,8 +156,6 @@
 	}
 </style>
 <style lang="scss" scoped>
-	$color:#d18c42;
-
 	.btn{
 		background-color: $color;
 		color:#FFFFFF;
@@ -173,9 +173,9 @@
 		position: absolute;
 		right: -240rpx;
 		top: -240rpx;
-		background-color: #d18c42;
+		background-color: $color;
 		border-radius: 50%;
-		box-shadow: 0rpx 0rpx 50rpx #c5803b;
+		box-shadow: 0rpx 0rpx 50rpx #e28e3f;
 	}
 	
 	.bg1{
@@ -184,7 +184,7 @@
 		position: absolute;
 		right: -240rpx;
 		top: -240rpx;
-		background-color: #d18c42;
+		background-color: $color;
 		border-radius: 50%;
 		box-shadow: #c6813b;
 	}

+ 6 - 6
pages/login/login.vue

@@ -2,9 +2,7 @@
 	<view style="position: relative;">
 		<!-- <view class="bg"></view>
 		<view class="bg1"></view> -->
-		<view class="back" @click="$back">
-			<u-icon name="arrow-left" size="50" color="#919191"></u-icon>
-		</view>
+		<back></back>
 
 		<view class="content">
 			<view class="top">
@@ -50,11 +48,15 @@
 </template>
 
 <script>
+	import back from "@/components/back.vue"
 	export default {
+		components:{
+			back
+		},
 		data() {
 			return {
 				customStyle: {
-					'backgroundColor': '#d18c42',
+					'backgroundColor': '#EF9944',
 					'color': '#ffffff'
 				},
 				codeTips: '',
@@ -170,8 +172,6 @@
 </style>
 
 <style lang="scss" scoped>
-	$color:#d18c42;
-
 	page {
 		background-color: #FFFFFF;
 	}

+ 11 - 10
pages/login/register.vue

@@ -1,9 +1,6 @@
 <template>
 	<view style="position: relative;">
-
-		<view class="back" @click="back">
-			<u-icon name="arrow-left" size="50" color="#919191"></u-icon>
-		</view>
+		<back></back>
 		<view class="content">
 			<view class="bg"></view>
 			<view class="bg1"></view>
@@ -55,11 +52,15 @@
 
 <script>
 	import md5Libs from "uview-ui/libs/function/md5";
+	import back from "@/components/back.vue"
 	export default {
+		components:{
+			back
+		},
 		data() {
 			return {
 				customStyle: {
-					'backgroundColor': '#d18c42',
+					'backgroundColor': '#EF9944',
 					'color': '#ffffff'
 				},
 				codeTips: '',
@@ -198,8 +199,6 @@
 	}
 </style>
 <style lang="scss" scoped>
-	$color:#d18c42;
-
 	page {
 		background-color: #FFFFFF;
 	}
@@ -215,24 +214,26 @@
 	}
 
 	.bg {
+		overflow: hidden;
 		z-index: 99;
 		height: 400rpx;
 		width: 400rpx;
 		position: absolute;
 		right: -240rpx;
 		top: -240rpx;
-		background-color: #d18c42;
+		background-color: $color;
 		border-radius: 50%;
-		box-shadow: 0rpx 0rpx 50rpx #c5803b;
+		box-shadow: 0rpx 0rpx 50rpx #e28e3f;
 	}
 
 	.bg1 {
+		overflow: hidden;
 		height: 460rpx;
 		width: 460rpx;
 		position: absolute;
 		right: -240rpx;
 		top: -240rpx;
-		background-color: #d18c42;
+		background-color: $color;
 		border-radius: 50%;
 		box-shadow: #c6813b;
 	}

+ 2 - 2
pages/login/submit-success.vue

@@ -2,7 +2,7 @@
 	<view>
 		<u-navbar  :is-back="false" title="提交成功"></u-navbar>
 		<view class="content">
-			<image src="@/static/icon/success.png" mode=""></image>
+			<image src="@/static/icon/success3.png" mode=""></image>
 			<text class="tips">{{params.title}}</text>
 			<view  class="cu-btn round btn" @click="$jump(params.path)">
 				确认
@@ -58,7 +58,7 @@
 		
 		.btn{
 			margin-top: 150rpx;
-			background-color: #d18c42;
+			background-color: #EF9944;
 			color: #FFFFFF;
 			width: 74%;
 			padding: 46rpx;

+ 7 - 7
pages/member/detail.vue

@@ -13,7 +13,7 @@
 		</view>
 		<view class="cell">
 			<text class="cell-item" style="font-weight: bold;font-size: 28rpx;">消费记录</text>
-			<text class="cell-item" style="color: #D18C42;font-size: 22rpx;">消费总额¥{{detail.payTotal}}</text>
+			<!-- <text class="cell-item" style="color: #D18C42;font-size: 22rpx;">消费总额¥{{detail.payTotal}}</text> -->
 		</view>
 		<view class="card">
 			<view class="u-flex">
@@ -21,9 +21,9 @@
 					<text>交易日期</text>
 				</view>
 				<view class="area2 area-padding">
-					<image style="width: 35rpx;height: 35rpx;margin-right: 10rpx;margin-bottom: -10rpx;"
-						src="@/static/icon/points-value.png"></image>
-					<text>获赠积分</text>
+					<!-- <image style="width: 35rpx;height: 35rpx;margin-right: 10rpx;margin-bottom: -10rpx;"
+						src="@/static/icon/points-value.png"></image> -->
+					<text>折扣</text>
 				</view>
 				<view class="area3 area-padding u-text-right u-p-r-20">
 					<text>消费金额</text>
@@ -38,12 +38,12 @@
 						</view>
 					</view>
 					<view class="area2 text-area" style="width: 15%;">
-						<view class="item-padding">
-							<text style="font-size: 32rpx;margin-left: 10rpx;color: #F39248;">{{item.point || '0'}}</text>
+						<view class="center">
+							<text style="font-size: 26rpx;color: #666;margin-left: -10rpx;">{{item.discount==-1 || item.discount==0?'无折扣':item.discount +'折'}}</text>
 						</view>
 					</view>
 					<view class="area3 text-area u-p-r-20" style="width: 30%;">
-						<view class="item-padding" style="flex:1;text-align: right;font-size: 34rpx;">¥{{item.payAmount}}</view>
+						<view class="item-padding price text-base" style="flex:1;text-align: right;font-size: 34rpx;">{{item.cost}}</view>
 					</view>
 				</view>
 			</mescroll-body>

+ 81 - 76
pages/member/member.vue

@@ -1,78 +1,82 @@
 <template>
 	<view>
 		<u-navbar :custom-back="back" title="会员中心"></u-navbar>
-		<view class="empty-page" v-if="!isOpenMember">
-			<image src="../../static/icon/huiyuan1.png" mode=""></image>
-			<text style="color: #303030;font-weight: 800;font-size: 32rpx;margin-top: 25rpx;">创建会员中心</text>
-			<text style="color: #888888;font-size: 26rpx;margin-top: 20rpx;">设置积分价值、积分规则</text>
-			<text style="color: #888888;font-size: 26rpx;margin-top: 10rpx;">实时查看会员信息和积分情况</text>
-
-			<view @click="$jump('/pages/member/add')" class="cu-btn btn-bg-color round" style="width: 48%;height: 80rpx;position: fixed;bottom: 40%;">
-				<u-icon name="plus-circle-fill" size="40"></u-icon>
-				<text class="margin-left-10 text-lg">创建会员中心</text>
-			</view>
-		</view>
-
-		<block v-else>
-			<view class="top-menu">
-				<view class="leftFixed"> 1 积分等于 {{detail.pointUnitValue}} 元</view>
-				<view class="u-flex u-row-between">
-					<view class="item">
-						<text>{{detail.memberNum}}</text>
-						<text>会员数量</text>
-					</view>
-					
-					<view class="item">
-						<text>{{detail.totalPointValue}}</text>
-						<text>积分总价值</text>
-					</view>
-				</view>
-				<view class="u-m-t-50 u-flex u-col-center u-row-center">
-					<text class="u-font-24 u-m-r-20">规则:消费 1 元赠送 {{detail.sendPointUnit}} 积分</text>
-					<u-button size="mini" shape="circle" @click="showPopup=true">更改规则</u-button>
+		
+		<block v-show="!loading">
+			<view class="empty-page" v-if="!isOpenMember">
+				<image src="../../static/icon/huiyuan1.png" mode=""></image>
+				<text style="color: #303030;font-weight: 800;font-size: 32rpx;margin-top: 25rpx;">创建会员中心</text>
+				<text style="color: #888888;font-size: 26rpx;margin-top: 20rpx;">设置积分价值、积分规则</text>
+				<text style="color: #888888;font-size: 26rpx;margin-top: 10rpx;">实时查看会员信息和积分情况</text>
+			
+				<view @click="$jump('/pages/member/add')" class="cu-btn btn-bg-color round" style="width: 48%;height: 80rpx;position: fixed;bottom: 40%;">
+					<u-icon name="plus-circle-fill" size="40"></u-icon>
+					<text class="margin-left-10 text-lg">创建会员中心</text>
 				</view>
 			</view>
 			
-			<view class="padding-20 text-bold text-xl">
-				<text>会员列表</text>
-			</view>
-
-			<view class="card">
-				<view class="flex tableTitle">
-					<view class="area1 title">
-						会员信息
-					</view>
-					<view class="area2 title">
-						积分数
+			<block v-else>
+				<view class="top-menu">
+					<view class="leftFixed"> 1 积分等于 {{detail.pointUnitValue}} 元</view>
+					<view class="u-flex u-row-between">
+						<view class="item">
+							<text>{{detail.memberNum}}</text>
+							<text>会员数量</text>
+						</view>
+						
+						<view class="item">
+							<text>{{detail.totalPointValue}}</text>
+							<text>积分总价值</text>
+						</view>
 					</view>
-					<view class="area3 title">
-						价值
+					<view class="u-m-t-50 u-flex u-col-center u-row-center">
+						<text class="u-font-24 u-m-r-20">规则:消费 1 元赠送 {{detail.sendPointUnit}} 积分</text>
+						<u-button size="mini" shape="circle" @click="showPopup=true">更改规则</u-button>
 					</view>
 				</view>
-				<mescroll-body :height="height" ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback"
-					:down="downOption" :up="upOption">
-					<view class="item" v-for="(item,index) in dataList" :key="index" @click="jumpDetail(item)">
-						<view class="area1 flex text-bold">
-							<image class="img-avatar"
-								:src="item.avatar">
-							</image>
-							<view class="center padding-left-10">
-								<text>{{item.nickName}}</text>
-							</view>
+				
+				<view class="padding-20 text-bold text-xl">
+					<text>会员列表</text>
+				</view>
+			
+				<view class="card">
+					<view class="flex tableTitle">
+						<view class="area1 title">
+							会员信息
 						</view>
-						<view class="area2 center text-bold text-lg"
-							style="justify-content: flex-start;margin-left: 10rpx;color: #F37A1E;">
-							<image class="img-points" src="../../static/icon/points-value.png"></image>
-							<text class="margin-left-10">{{item.pointTotal}}</text>
+						<view class="area2 title">
+							积分数
 						</view>
-
-						<view class="area3  center text-lg">
-							<text class="text-price text-bold">{{item.pointValue}}</text>
+						<view class="area3 title">
+							价值
 						</view>
 					</view>
-				</mescroll-body>
-			</view>
+					<mescroll-body :height="height" ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="upCallback"
+						:down="downOption" :up="upOption">
+						<view class="item" v-for="(item,index) in dataList" :key="index" @click="jumpDetail(item)">
+							<view class="area1 flex text-bold">
+								<image class="img-avatar"
+									:src="item.avatar">
+								</image>
+								<view class="center padding-left-10">
+									<text>{{item.nickName}}</text>
+								</view>
+							</view>
+							<view class="area2 center text-bold text-lg"
+								style="justify-content: flex-start;margin-left: 10rpx;color: #F37A1E;">
+								<image class="img-points" src="../../static/icon/points-value.png"></image>
+								<text class="margin-left-10">{{$digital.keepTwoDecimal(item.pointTotal)}}</text>
+							</view>
+			
+							<view class="area3  center text-lg">
+								<text class="text-price text-bold">{{$digital.keepTwoDecimal(item.pointValue)}}</text>
+							</view>
+						</view>
+					</mescroll-body>
+				</view>
+			</block>
 		</block>
+		
 		<u-popup v-model="showPopup" mode="center" border-radius="20">
 			<view class="u-popup-content">
 				<text>更改积分规则</text>
@@ -88,6 +92,7 @@
 				<u-button size="medium" shape="circle" :custom-style="customStyle2" @click="showPopup=false">取消</u-button>
 			</view>
 		</u-popup>
+		<loading ref="loading" type="3" theme="2"/>
 	</view>
 </template>
 
@@ -97,6 +102,8 @@
 		mixins: [MescrollMixin],
 		data() {
 			return {
+				loading:true,
+				
 				isOpenMember: false,
 				detail: {},
 				dataList: [],
@@ -159,16 +166,20 @@
 				let rectInfo = await this.$u.getRect('.tableTitle');
 				this.height=this.$u.sys().windowHeight - rectInfo.top + 'px'
 			},
-			fetchMemberInfo(){
+			async fetchMemberInfo(){
+				this.$refs.loading.showLoading()
 				let params={
 					shopId:this.vuex_shopId
 				}
-				this.$api.shop.memberInfo(params).then(res=>{
-					if (res.data.isOpenMember == 1) {
-						this.isOpenMember = true
-						this.detail = res.data
-					}
-				})
+				let res=await this.$api.shop.memberInfo(params)
+				if (res.data.isOpenMember == 1) {
+					this.isOpenMember = true
+					this.detail = res.data
+				}
+				setTimeout(()=>{
+					this.$refs.loading.hide()
+					this.loading=false
+				},300)
 			},
 			downCallback() {
 				setTimeout(()=>{
@@ -181,7 +192,7 @@
 					current: mescroll.num,
 					size: mescroll.size,
 					//商店会员
-					type:2 
+					type:'SHOP'
 				}
 				try {
 					this.$api.member.list(params).then(res => {
@@ -209,12 +220,6 @@
 </script>
 
 <style lang="scss" scoped>
-	.btn-bg-color {
-		background-color: #EE9230;
-		color: #FFFFFF;
-	}
-	
-
 	.empty-page {
 		height: 600rpx;
 		display: flex;
@@ -241,7 +246,7 @@
 			font-size: 22rpx;
 			height: 40rpx;
 			line-height: 40rpx;
-			background-color: #E19D5B;
+			background-color: $color;
 			color: #fff;
 			position: absolute;
 			top: 20rpx;

+ 3 - 3
pages/my-bills/comps/bills.vue

@@ -28,7 +28,7 @@
 				<text class="cuIcon-right"></text>
 			</view>
 		</view>
-		<u-sticky v-if="stateCurrent==0" offset-top="0" :enable="true">
+		<view v-if="stateCurrent==0">
 			<view class="flex bg-white u-border-top " style="padding: 30rpx">
 				<view style="width: 51%;margin-left: 60rpx;">
 					来源
@@ -40,7 +40,7 @@
 					金额
 				</view>
 			</view>
-		</u-sticky>
+		</view>
 
 		<view class="bg-white safe-area-inset-bottom tabsClass" style="height: 100%;">
 			<mescroll :down="downOption" :up="upOption" @up="upCallback" :fixed="false" @down="downCallback"
@@ -57,7 +57,7 @@
 						<text>{{item.discount==-1 || item.discount==0?'无折扣':item.discount +'折'}}</text>
 					</view>
 					<view class="area3">
-						<text class="text-base">{{item.cost || 0}}</text>
+						<text class="text-base">{{item.receiveNumTotal || 0}}</text>
 					</view>
 				</navigator>
 			</mescroll>

+ 282 - 255
pages/shop-info/shop-info.vue

@@ -1,21 +1,19 @@
 <template>
 	<view>
-		<u-navbar title="店铺资料" title-color="#fff" back-icon-color="#fff" :background="background"
-			:border-bottom="false"></u-navbar>
-		<view class="bg"></view>
+		<u-navbar title="店铺资料" :border-bottom="false"></u-navbar>
+		<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" @click="prevStep" class="u-font-24" style="color: #999">上一步</text>
+		</view>
 		<view class="card">
 			<view class="margin-bottom-30" v-if="$isNotEmpty(failReason)">
-				<u-alert-tips  @close="failReason=null"  type="error" :close-able="true" :show-icon="true" title="审核意见" :description="failReason"></u-alert-tips>
-			</view>
-			<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" @click="prevStep" class="u-font-24" style="color: #999">上一步</text>
+				<u-alert-tips @close="failReason=null" type="error" :close-able="true" :show-icon="true" title="审核意见"
+					:description="failReason"></u-alert-tips>
 			</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="typeIndex=1" class="item u-border-bottom" >
+				<view v-if="step==1" class="steps1" style="padding-bottom: 40rpx;">
+					<view @click="clickType(1)" class="item   u-border-bottom">
 						<view class="flex">
 							<view class="center">
 								<image class="icon" src="../../static/icon/shop2.png" mode=""></image>
@@ -26,12 +24,14 @@
 							</view>
 						</view>
 						<view class="center">
-							<image v-if="typeIndex==1" style="width: 40rpx;height: 40rpx;" src="../../static/icon/check.png" mode=""></image>
-							<image v-else style="width: 40rpx;height: 40rpx;" src="../../static/icon/uncheck.png" mode=""></image>
+							<image v-if="typeIndex==1" style="width: 40rpx;height: 40rpx;"
+								src="../../static/icon/check.png" mode=""></image>
+							<image v-else style="width: 40rpx;height: 40rpx;" src="../../static/icon/uncheck.png"
+								mode=""></image>
 						</view>
 					</view>
-					
-					<view @click="typeIndex=0" class="item u-border-bottom" style="margin-top: 40rpx;">
+
+					<view @click="clickType(0)" class="item ">
 						<view class="flex">
 							<view class="center">
 								<image class="icon" src="../../static/icon/shop1.png" mode=""></image>
@@ -42,16 +42,19 @@
 							</view>
 						</view>
 						<view class="center">
-							<image v-if="typeIndex==0" style="width: 40rpx;height: 40rpx;" src="../../static/icon/check.png" mode=""></image>
-							<image v-else style="width: 40rpx;height: 40rpx;" src="../../static/icon/uncheck.png" mode=""></image>
+							<image v-if="typeIndex==0" style="width: 40rpx;height: 40rpx;"
+								src="../../static/icon/check.png" mode=""></image>
+							<image v-else style="width: 40rpx;height: 40rpx;" src="../../static/icon/uncheck.png"
+								mode=""></image>
 						</view>
 					</view>
 				</view>
-				
+
 				<view v-show="step==2">
 					<view class="border">
 						<u-form-item v-if="typeIndex==1" label="店铺全称" prop="name" label-position="top">
-							<u-input :border="false" placeholder="比如:哈尔滨杨国福麻辣烫餐饮服务有限公司" v-model="auditForm.signName"></u-input>
+							<u-input :border="false" placeholder="比如:哈尔滨杨国福麻辣烫餐饮服务有限公司" v-model="auditForm.signName">
+							</u-input>
 						</u-form-item>
 					</view>
 					<view class="border">
@@ -61,13 +64,13 @@
 					</view>
 					<view class="border">
 						<u-form-item label="商户联系人手机号" prop="personTel" label-width="250">
-							<u-input disabled placeholder="请输入联系方式" v-model="form.personTel" type="number"></u-input>
+							<u-input placeholder="请输入联系方式" v-model="form.personTel" type="number"></u-input>
 						</u-form-item>
 					</view>
 					<view class="border">
 						<u-form-item label="所在商场" prop="phone">
-							<u-input @click="mallShow=true" :border="false" placeholder="请选择所在商场(非必填项)"
-								v-model="mallLabel" type="select"></u-input>
+							<u-input @click="mallShow=true" :select-open="mallShow" :border="false"
+								placeholder="请选择所在商场(非必填项)" v-model="mallLabel" type="select"></u-input>
 							<u-icon class="clear" color="#999" v-if="mallLabel" name="close-circle-fill"
 								@click.stop="clear('mallLabel')"></u-icon>
 						</u-form-item>
@@ -144,13 +147,13 @@
 					</view>
 					<view class="border">
 						<u-form-item label="公司主体" prop="entity" label-width="210">
-							<u-input  :border="false" placeholder="请输入公司主体" v-model="auditForm.entity">
+							<u-input :border="false" placeholder="请输入公司主体" v-model="auditForm.entity">
 							</u-input>
 						</u-form-item>
 					</view>
 					<view class="border">
 						<u-form-item label="营业执照编号" prop="licenceNo" label-width="210">
-							<u-input  :border="false" placeholder="请填写营业执照编号" v-model="auditForm.licenceNo">
+							<u-input :border="false" placeholder="请填写营业执照编号" v-model="auditForm.licenceNo">
 							</u-input>
 						</u-form-item>
 					</view>
@@ -175,12 +178,13 @@
 					<view class="photo border">
 						<text>请拿出商户法人有效二代身份证件准备拍摄</text>
 						<view class="box">
-							<upload-img :width="520" :height="300" title="上传人像面照片" @click="chooseIdCard" :model="auditForm.idCardFront"
-								dataName="idCardFront" :enableImg="true"></upload-img>
+							<upload-img :width="520" :height="300" title="上传人像面照片" @click="chooseIdCard"
+								:model="auditForm.idCardFront" dataName="idCardFront" :enableImg="true"></upload-img>
 						</view>
 						<view class="box" style="margin-top: 0;">
-							<upload-img :width="520" :height="300" title="上传国徽面照片" @click="chooseIdCard" :model="auditForm.idCardContrary"
-								dataName="idCardContrary" :enableImg="true" :bgImg="idCardContraryBgImg"></upload-img>
+							<upload-img :width="520" :height="300" title="上传国徽面照片" @click="chooseIdCard"
+								:model="auditForm.idCardContrary" dataName="idCardContrary" :enableImg="true"
+								:bgImg="idCardContraryBgImg"></upload-img>
 						</view>
 						<view style="margin: 30rpx 0;" class="tips">
 							<text>拍摄时确保身份证边框完整,字体清晰,亮度均匀</text>
@@ -188,30 +192,30 @@
 					</view>
 					<view class="border">
 						<u-form-item label="商户法人姓名" prop="legalPerson" label-width="230">
-							<u-input  :border="false" placeholder="请输入公司法人姓名" v-model="auditForm.legalPerson">
+							<u-input :border="false" placeholder="请输入公司法人姓名" v-model="auditForm.legalPerson">
 							</u-input>
 						</u-form-item>
 					</view>
 					<view class="border" v-if="typeIndex==1">
 						<u-form-item label="商户法人手机号" prop="mobile" label-width="230">
-							<u-input  :border="false" placeholder="请输入商户法人手机号" v-model="auditForm.contactMobile">
+							<u-input :border="false" placeholder="请输入商户法人手机号" v-model="auditForm.contactMobile">
 							</u-input>
 						</u-form-item>
 					</view>
-					<view class="border" >
+					<view class="border">
 						<u-form-item label="商户法人身份证号码" prop="personIdCard" label-position="top">
-							<u-input  :border="false" placeholder="请输入商户法人身份证号码" v-model="auditForm.idCard">
+							<u-input :border="false" placeholder="请输入商户法人身份证号码" v-model="auditForm.idCard">
 							</u-input>
 						</u-form-item>
 					</view>
-					
+
 					<view class="border" v-if="typeIndex==0">
 						<u-form-item label="商户联系人姓名" prop="personName" label-width="230">
 							<u-input :disabled="isEdit" :border="false" placeholder="商户联系人姓名" v-model="form.personName">
 							</u-input>
 						</u-form-item>
 					</view>
-					
+
 					<view class="border" v-if="typeIndex==0">
 						<u-form-item label="商户联系人身份证号" prop="email" label-position="top">
 							<u-input :border="false" placeholder="请输入商户联系人身份证号" v-model="auditForm.contactLicenceNo">
@@ -219,70 +223,76 @@
 						</u-form-item>
 					</view>
 				</view>
-				
-				<view v-show="settlementAccountShow" style="height: 900rpx;padding-bottom: 40rpx;">
-					<view class="border">
+
+				<view v-show="settlementAccountShow" style="padding-bottom: 40rpx;">
+					<view class="">
 						<u-form-item :request="true" label="请填写结算银行账户号码" prop="bankCardNo" label-position="top">
 							<u-input :border="false" placeholder="请填写结算银行账户号码" v-model="auditForm.bankCardNo">
 							</u-input>
 						</u-form-item>
-						<u-form-item :request="true" label="账户类型" label-position="top">
-							<u-input type="select" placeholder="请选银行择账户类型" v-model="auditForm.bankAccountTypeLabel" @click="bankAccountTypeShow = true"/>
-						</u-form-item>
 						<u-form-item :request="true" label="银行类型" label-position="top">
-							<u-input :border="false" type="select" placeholder="请选择银行类型" v-model="auditForm.bankCodeLabel" @click="bankCodeShow = true"/>
+							<u-input :border="false" :select-open="bankCodeShow" type="select" placeholder="请选择银行类型"
+								v-model="auditForm.bankCodeLabel" @click="bankCodeShow = true" />
+						</u-form-item>
+						<u-form-item :request="true" label="账户类型" label-position="top">
+							<!-- <u-input  type="select" placeholder="请选银行择账户类型" v-model="auditForm.bankAccountTypeLabel" @click="bankAccountTypeShow = true"/> -->
+							<u-input :border="false" disabled placeholder="请选银行择账户类型"
+								v-model="auditForm.bankAccountTypeLabel" />
 						</u-form-item>
 					</view>
 				</view>
 			</u-form>
-			<view v-if="step<totalStep" class="center flex-direction" style="margin-top: 100rpx;">
-				<view @click="nextStep" class="btn cu-btn round" style="width:90%;height: 90rpx;font-size: 34rpx;">
-					下一步
-				</view>
+		</view>
+		<view v-if="step<totalStep" class="center flex-direction" style="margin: 100rpx 0	;">
+			<view @click="nextStep" class="btn cu-btn round" style="width:90%;height: 90rpx;font-size: 34rpx;">
+				下一步
 			</view>
-			<view v-else class="center flex-direction margin-bottom-30" style="margin-top: 100rpx;">
-				<view v-if="!isEdit" class=" margin-bottom-20 text-sm center ">
-					<text style="color: #949494;">确认注册即代表已阅读并同意</text>
-					<text style="color: #104DFF;" @click="protocol">《联兑通软件服务协议》</text>
-				</view>
-				<view @click="submit" class="btn cu-btn round" style="width:90%;height: 90rpx;font-size: 34rpx;">
-					提交资料
-				</view>
+		</view>
+		<view v-else class="center flex-direction margin-bottom-30" style="margin-top: 100rpx;">
+			<view v-if="!isEdit" class=" margin-bottom-20 text-sm center ">
+				<text style="color: #949494;">确认注册即代表已阅读并同意</text>
+				<text style="color: #104DFF;" @click="protocol">《联兑通软件服务协议》</text>
+			</view>
+			<view @click="submit" class="btn cu-btn round" style="width:90%;height: 90rpx;font-size: 34rpx;">
+				提交资料
 			</view>
 		</view>
+
 		<!-- 商场 -->
-		<u-popup border-radius="60" height="60%" mode="bottom" v-model="mallShow">
+		<u-popup height="60%" mode="bottom" v-model="mallShow">
 			<view class="fixed cu-bar search bg-white">
-				<view class="search-form round">
+				<view class="search-form radius">
 					<text class="cuIcon-search"></text>
 					<u-input style="width: 90%;" v-model="mallKeyWord" type="text" :adjust-position="false"
 						placeholder="请输入关键字搜索" confirm-type="search" />
 				</view>
 			</view>
 			<scroll-view v-if="!$isEmpty(mallList)" style="padding-top: 110rpx;height: 100%;" :scroll-y="true">
-				<view @click="selectMall(item)" hover-class="hoverClass" class="text-center padding-30 solid-bottom"
+				<view @click="selectMall(item)" hover-class="hoverClass"
+					:class="{'solid-bottom':bankCodeList.length!=(index+1)}  " class="text-center padding-30"
 					v-for="(item,index) in mallList" :key="index">
 					<text>{{item.mallName}}</text>
 				</view>
-				<u-divider v-if="mallList.length>=20" height="80">只显示20条数据</u-divider>
+				<u-divider fontSize="24" v-if="bankCodeList.length>=8" height="80">只显示8条数据,其余数据请搜索</u-divider>
 			</scroll-view>
 			<u-empty v-else name="search"></u-empty>
 		</u-popup>
-		
-		<u-popup border-radius="60" height="60%" mode="bottom" v-model="bankCodeShow">
+
+		<u-popup height="60%" mode="bottom" v-model="bankCodeShow">
 			<view class="fixed cu-bar search bg-white">
-				<view class="search-form round">
+				<view class="search-form radius">
 					<text class="cuIcon-search"></text>
-					<u-input style="width: 90%;" v-model="bankKeyword" type="text" :adjust-position="false"
+					<u-input style="width: 100%;" 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"
+				<view @click="bankTypeConfirm(item)" hover-class="hoverClass"
+					:class="{'solid-bottom':bankCodeList.length!=(index+1)}  " class="item text-center padding-30 "
 					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>
+				<u-divider fontSize="24" v-if="bankCodeList.length>=8" height="80">只显示8条数据,其余数据请搜索</u-divider>
 			</scroll-view>
 			<u-empty v-else name="search"></u-empty>
 		</u-popup>
@@ -290,14 +300,15 @@
 		<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="bankAccountTypeShow"  :list="bankAccountTypeList" @confirm="bankAccountTypeConfirm"></u-select>
+		<u-select v-model="bankAccountTypeShow" :list="bankAccountTypeList" @confirm="bankAccountTypeConfirm">
+		</u-select>
+		<toast ref="toast"></toast>
 	</view>
 </template>
 
 <script>
-	
 	import mpUploadImg from "@/components/mp-uploadImg/mp-uploadImg.vue"
 	import uploadImg from "@/components/uploadimg/uploadImg.vue"
 	export default {
@@ -305,67 +316,64 @@
 			uploadImg,
 			mpUploadImg
 		},
-		computed:{
-			settlementAccountShow:{
-				get(){
+		computed: {
+			settlementAccountShow: {
+				get() {
 					if (!this.needBankInfo) {
 						return false
 					}
-					
-					if (this.typeIndex==0&&this.step==5) {
+
+					if (this.typeIndex == 0 && this.step == 5) {
 						return true
 					}
-					
-					if (this.typeIndex==1&&this.step==4) {
+
+					if (this.typeIndex == 1 && this.step == 4) {
 						return true
 					}
 					return false
 				}
 			},
-			merchantCorporationShow:{
-				get(){
-					if (this.typeIndex==0&&this.step==4) {
+			merchantCorporationShow: {
+				get() {
+					if (this.typeIndex == 0 && this.step == 4) {
 						return true
 					}
-					
-					if (this.typeIndex==1&&this.step==3) {
+
+					if (this.typeIndex == 1 && this.step == 3) {
 						return true
 					}
-					
+
 					return false
 				}
 			},
-			merchantSubjectShow:{
-				get(){
-					if (this.typeIndex==0&&this.step==3) {
+			merchantSubjectShow: {
+				get() {
+					if (this.typeIndex == 0 && this.step == 3) {
 						return true
 					}
 					return false
 				}
 			},
-			
+
 		},
 		data() {
 			return {
-				typeIndex:1,
-				
+				typeIndex: 1,
+
 				//银行类型
-				bankKeyword:'',
-				bankCodeShow:false,
-				bankCodeList:[],
+				bankKeyword: '',
+				bankCodeShow: false,
+				bankCodeList: [],
 				//账户类型
-				bankAccountTypeShow:false,
-				bankAccountTypeList:[],
-				
+				bankAccountTypeShow: false,
+				bankAccountTypeList: [],
+
 				//身份证正面背景图
 				idCardContraryBgImg: 'https://guosen-bucket-ldt.obs.cn-south-1.myhuaweicloud.com:443/525724b4977d457eafea331f8595a675-6MM5CLdbBt1z7042ac12465719c764f2ca05a37ffee9.png',
 				//上传图片
 				imgList: [],
 
 				title: '',
-				background: {
-					backgroundColor: '#D18C42',
-				},
 				labelWidth: 170,
 				form: {
 					/**
@@ -670,7 +678,7 @@
 					/**
 					 * 银行账户类型label
 					 */
-					bankAccountTypeLabel:"",
+					bankAccountTypeLabel: "",
 					/**
 					 * 银行账户号码
 					 */
@@ -706,16 +714,16 @@
 				//门店地址
 				shopAddress: '',
 				step: 1,
-				totalStep:4,
-				needBankInfo:true,
+				totalStep: 4,
+				needBankInfo: true,
 				//编辑还是修改
 				isEdit: false,
 				//审核失败,重新申请
 				isFail: false,
 				shopId: "",
-				flowDetail:{},
-				failReason:"",
-				flowList:[]
+				flowDetail: {},
+				failReason: "",
+				flowList: []
 			}
 		},
 		watch: {
@@ -751,10 +759,10 @@
 		onShow() {
 			uni.hideLoading()
 		},
-		onLoad(options) {
+		async onLoad(options) {
 			console.log("123");
 			this.form.personTel = this.$cache.get('phone')
-			this.auditForm.contactMobile=this.form.personTel
+			this.auditForm.contactMobile = this.form.personTel
 			//监听从chooseLable页面返回的数据
 			uni.$on('labelData', (labelData) => {
 				this.form.labelJson = labelData.labelJson
@@ -765,15 +773,15 @@
 			if (options.edit) {
 				//修改资料
 				this.isEdit = true
-				this.step=2
-				this.fetchShopDetail(this.vuex_shopId)
-				this.fetchAuditDetail(this.vuex_shopId)
+				this.step = 2
+				await this.fetchShopDetail(this.vuex_shopId)
+				await this.fetchAuditDetail(this.vuex_shopId)
 			} else if (options.isFail) {
 				//审核失败,重新申请
 				this.isFail = true
 				this.shopId = options.shopId
-				this.fetchShopDetail(this.shopId)
-				this.fetchAuditDetail(this.shopId)
+				await this.fetchShopDetail(this.shopId)
+				await this.fetchAuditDetail(this.shopId)
 			} else {
 				this.initCacheData()
 				//新增数据时才跑流程
@@ -783,22 +791,37 @@
 			this.fetchMallList()
 		},
 		methods: {
+			clickType(index) {
+				this.typeIndex = index
+				if (this.typeIndex == 0) {
+					//企业
+					this.auditForm.bankAccountType = 'PUBLIC_CARD'
+					this.auditForm.bankAccountTypeLabel = '对公卡'
+				}
+				if (this.typeIndex == 1) {
+					//小微企业
+					this.auditForm.bankAccountType = 'DEBIT_CARD'
+					this.auditForm.bankAccountTypeLabel = '借记卡'
+				}
+			},
 			async getHistoryFlowList() {
-			 	let processInstanceId=this.auditForm.processInstanceId
-				this.flowList= (await this.$api.flow.historyFlowList({processInstanceId})).data
-				let failList= this.flowList.filter(item=> !item.pass && item.comment)
+				let processInstanceId = this.auditForm.processInstanceId
+				this.flowList = (await this.$api.flow.historyFlowList({
+					processInstanceId
+				})).data
+				let failList = this.flowList.filter(item => !item.pass && item.comment)
 				if (this.$isNotEmpty(failList)) {
-					let index=failList.length - 1
-					this.failReason=failList[index].comment
+					let index = failList.length - 1
+					this.failReason = failList[index].comment
 				}
 			},
-			getTaskId(){
-				let params={
-					assignee:'$INITIATOR',
-					processInstanceId:this.auditForm.processInstanceId
+			getTaskId() {
+				let params = {
+					assignee: '$INITIATOR',
+					processInstanceId: this.auditForm.processInstanceId
 				}
-				this.$api.flow.getTaskId(params).then(res=>{
-					this.flowDetail=res.data.records[0]
+				this.$api.flow.getTaskId(params).then(res => {
+					this.flowDetail = res.data.records[0]
 				})
 			},
 			initCacheData() {
@@ -868,9 +891,9 @@
 				this.imgList = data
 				this.$refs.mpUploadImg.changeImgList(this.imgList)
 			},
-			async chooseBank(){
-				let image= (await this.$mpi.chooseImage())[0]
-				this.$api.ocr.bank(image).then(res=>{
+			async chooseBank() {
+				let image = (await this.$mpi.chooseImage())[0]
+				this.$api.ocr.bank(image).then(res => {
 					console.log(res);
 				})
 				console.log(res);
@@ -881,13 +904,13 @@
 				}
 				let res = await this.$api.shop.detail(params)
 				this.$util.objectCoppy(this.form, res.data)
-				
-				if (this.$isNotEmpty(res.data.mallId) && res.data.mallId!=-1) {
+
+				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)
@@ -908,92 +931,92 @@
 				this.step--
 			},
 			nextStep() {
-				if (this.step==1) {
-					if (this.typeIndex==0 ) {
-						this.auditForm.typeOfEnterprise='ENTERPRISE'
+				if (this.step == 1) {
+					if (this.typeIndex == 0) {
+						this.auditForm.typeOfEnterprise = 'ENTERPRISE'
 						//企业
 						if (this.needBankInfo) {
-							this.totalStep=5
-						}else{
-							this.totalStep=4
+							this.totalStep = 5
+						} else {
+							this.totalStep = 4
 						}
 					}
-					
-					if (this.typeIndex==1) {
+
+					if (this.typeIndex == 1) {
 						//小微企业
-						this.auditForm.typeOfEnterprise='MINICRO'
+						this.auditForm.typeOfEnterprise = 'MINICRO'
 						if (this.needBankInfo) {
-							this.totalStep=4
-						}else{
-							this.totalStep=3
+							this.totalStep = 4
+						} else {
+							this.totalStep = 3
 						}
 					}
 				}
-				
+
 				if (this.step == 2) {
-					if (this.$isEmpty(this.auditForm.signName) && this.typeIndex==1) {
-						this.$u.toast('请输入店铺全称')
+					if (this.$isEmpty(this.auditForm.signName) && this.typeIndex == 1) {
+						this.$refs.toast.info('请输入店铺全称')
 						return
 					}
 					if (this.$isEmpty(this.form.name)) {
-						this.$u.toast('请输入店铺简称')
+						this.$refs.toast.info('请输入店铺简称')
 						return
 					}
 					if (this.$isEmpty(this.form.personTel)) {
-						this.$u.toast('请输入商户联系人手机号')
+						this.$refs.toast.info('请输入商户联系人手机号')
 						return
 					}
 
 					if (this.$isEmpty(this.form.email)) {
-						this.$u.toast('请输入商户联系人邮箱')
+						this.$refs.toast.info('请输入商户联系人邮箱')
 						return
 					}
 
 					if (this.$isEmpty(this.form.labelKey)) {
-						this.$u.toast('请选择公司种类')
+						this.$refs.toast.info('请选择公司种类')
 						return
 					}
 					if (this.$isEmpty(this.form.location)) {
-						this.$u.toast('请选择所在地区')
+						this.$refs.toast.info('请选择所在地区')
 						return
 					}
 					if (this.$isEmpty(this.form.address)) {
-						this.$u.toast('请选择具体地址')
+						this.$refs.toast.info('请选择具体地址')
 						return
 					}
 
 					if (this.$isEmpty(this.form.cover)) {
-						this.$u.toast('请上传店铺封面')
+						this.$refs.toast.info('请上传店铺封面')
 						return
 					}
 					if (this.$isEmpty(this.form.shopPic)) {
-						this.$u.toast('请上传店铺实况')
+						this.$refs.toast.info('请上传店铺实况')
 						return
 					}
-					if (this.imgList.length <2) {
-						this.$u.toast('请依次上传门头,店内照片')
+					if (this.imgList.length < 2) {
+						this.$refs.toast.info('请依次上传门头,店内照片')
 						return
 					}
 				}
-				if (this.step == 3 && this.typeIndex==0) {
+				if (this.step == 3 && this.typeIndex == 0) {
 					if (this.$isEmpty(this.auditForm.businessLicense)) {
-						this.$u.toast('请上传营业执照')
+						this.$refs.toast.info('请上传营业执照')
 						return
 					}
 
 					if (this.$isEmpty(this.auditForm.openAccountLicenceNo)) {
-						this.$u.toast('请填写开户许可证编号')
+						this.$refs.toast.info('请填写开户许可证编号')
 						return
 					}
 					if (this.$isEmpty(this.auditForm.openAccountLicenceUrl)) {
-						this.$u.toast('请上传开户许可证照片')
+						this.$refs.toast.info('请上传开户许可证照片')
 						return
 					}
 					if (this.$isEmpty(this.auditForm.openAccountLicenceUrl)) {
-						this.$u.toast('请上传手持营业执照在经营场所的照片')
+						this.$refs.toast.info('请上传手持营业执照在经营场所的照片')
 						return
 					}
-					
+
 				}
 				if (this.step > 0 && this.step < this.totalStep) {
 					this.step++
@@ -1015,7 +1038,7 @@
 			},
 			async chooseImageAudit(name) {
 				if (this.isEdit) {
-					this.$u.toast('不可修改')
+					this.$refs.toast.info('不可修改')
 					return
 				}
 				let res = await this.$mpi.chooseImage()
@@ -1025,14 +1048,14 @@
 			},
 			async chooseIdCard(name) {
 				if (this.isEdit) {
-					this.$u.toast('不可修改')
+					this.$refs.toast.info('不可修改')
 					return
 				}
 				let image = (await this.$mpi.chooseImage())[0]
 				this.$dialog.showLoading('证件上传中...')
 				this.$api.ocr.idcard(image).then(res => {
 					if (res.data[0].errmsg != "ok") {
-						this.$u.toast('非法证件照')
+						this.$refs.toast.error('非法证件照')
 						return
 					}
 					if (name == 'idCardFront') {
@@ -1046,11 +1069,11 @@
 						this.auditForm.legalPerson = this.OCRBiziIdCardInfo.name
 						this.form.personName = this.OCRBiziIdCardInfo.name
 						this.auditForm.contactLicenceNo = this.OCRBiziIdCardInfo.idCard
-					}else{
-						this.OCRBiziIdCardInfo.validDate=res.data[0].validDate
-						this.auditForm.validDate=res.data[0].validDate
+					} else {
+						this.OCRBiziIdCardInfo.validDate = res.data[0].validDate
+						this.auditForm.validDate = res.data[0].validDate
 					}
-					
+
 					this.auditForm[name] = res.data[1].link
 					uni.hideLoading()
 				}).catch(err => {
@@ -1059,14 +1082,14 @@
 			},
 			async chooseBizilicense() {
 				if (this.isEdit) {
-					this.$u.toast('不可修改')
+					this.$refs.toast.info('不可修改')
 					return
 				}
 				let image = (await this.$mpi.chooseImage())[0]
 				this.$dialog.showLoading('证件上传中...')
 				this.$api.ocr.bizilicense(image).then(res => {
 					if (res.data[0].errmsg != "ok") {
-						this.$u.toast('非法证件照')
+						this.$refs.toast.error('非法证件照')
 						return
 					}
 					this.OCRBizilicenseInfo = res.data[0]
@@ -1110,36 +1133,36 @@
 				await this.$mpi.subscribe(this.$tmplIds)
 
 				if (this.$isEmpty(this.auditForm.idCardFront)) {
-					this.$u.toast('请上传身份证正面照')
+					this.$refs.toast.info('请上传身份证正面照')
 					return
 				}
 				if (this.$isEmpty(this.auditForm.idCardContrary)) {
-					this.$u.toast('请上传身份证反面照')
+					this.$refs.toast.info('请上传身份证反面照')
 					return
 				}
 
 				if (this.$isEmpty(this.form.personName)) {
-					this.$u.toast('请填写商户联系人姓名')
+					this.$refs.toast.info('请填写商户联系人姓名')
 					return
 				}
 				if (this.$isEmpty(this.auditForm.contactLicenceNo)) {
-					this.$u.toast('请填写商户联系人身份证号')
+					this.$refs.toast.info('请填写商户联系人身份证号')
 					return
 				}
-				
+
 				if (this.$isEmpty(this.auditForm.bankCardNo)) {
-					this.$u.toast('请填写结算银行账户号码')
+					this.$refs.toast.info('请填写结算银行账户号码')
 					return
 				}
 				if (this.$cache.get('promotionCode')) {
 					this.form.agenter = this.$cache.get('promotionCode')
 				}
 				this.$dialog.showLoading("资料提交中..")
-				
+
 				await this.initAgenterInfo()
 				this.initAuditInfo()
 				await this.getOpenId()
-				
+
 				let params = {
 					shop: this.form,
 					audit: this.auditForm,
@@ -1153,13 +1176,13 @@
 						this.jump()
 					}
 					uni.hideLoading()
-				}).catch(err=>{
+				}).catch(err => {
 					uni.hideLoading()
 				})
 			},
-			jump(){
+			jump() {
 				let jumpData = {
-					path: '/pages/index/index' ,
+					path: '/pages/index/index',
 					title: this.isEdit ? '资料修改成功' : '资料提交成功,请耐心等待审核'
 				}
 				uni.redirectTo({
@@ -1171,22 +1194,24 @@
 					url: "/pages/webView/webView?url=" + this.$global.shopRegister
 				})
 			},
-			doReSubmit(){
+			doReSubmit() {
 				if (this.isFail) {
-					this.flowDetail.comment='重新修改并提交'
-					this.flowDetail.flag='ok'
-					this.flowDetail.variables.pass=true
-					this.flowDetail.variables.applyPass=false
+					this.flowDetail.comment = '重新修改并提交'
+					this.flowDetail.flag = 'ok'
+					this.flowDetail.variables.pass = true
+					this.flowDetail.variables.applyPass = false
 					this.$api.flow.flowAuditSubmit(this.flowDetail)
 				}
 			},
 			//获取推荐人的信息
-			async initAgenterInfo(){
+			async initAgenterInfo() {
 				if (this.$cache.get('promotionCode')) {
-					let agenter=this.$cache.get('promotionCode')
-					let records= (await this.$api.loginUser.list({id:agenter})).data.records
-					let user=records[0]
-					this.form.agenter = this.$isNotEmpty(user)?user.id:""
+					let agenter = this.$cache.get('promotionCode')
+					let records = (await this.$api.loginUser.list({
+						id: agenter
+					})).data.records
+					let user = records[0]
+					this.form.agenter = this.$isNotEmpty(user) ? user.id : ""
 					this.form.agentAvatar = user.avatar
 					this.form.agentName = user.nickName
 				}
@@ -1194,73 +1219,77 @@
 			//经营地址
 			initAuditInfo() {
 				let locationCode = this.form.locationCode.split(",")
-				this.auditForm.province=locationCode[0],
-				this.auditForm.city=locationCode[1],
-				this.auditForm.district=locationCode[2],
-				this.auditForm.address=this.form.address
-				this.auditForm.contactEmail=this.form.email
+				this.auditForm.province = locationCode[0],
+					this.auditForm.city = locationCode[1],
+					this.auditForm.district = locationCode[2],
+					this.auditForm.address = this.form.address
+				this.auditForm.contactEmail = this.form.email
 				this.auditForm.shopName = this.form.name
 				this.auditForm.shopLogo = this.form.cover
-				this.auditForm.contactMobile=this.form.personTel
-				this.auditForm.contactName=this.form.personName
-				this.auditForm.shortName=this.form.name
-				
+				this.auditForm.contactMobile = this.form.personTel
+				this.auditForm.contactName = this.form.personName
+				this.auditForm.shortName = this.form.name
+
 				if (this.$isEmpty(this.auditForm.signName)) {
-					this.auditForm.signName=this.auditForm.enterpriseName
+					this.auditForm.signName = this.auditForm.enterpriseName
 				}
-				
-				this.auditForm.legalLicenceNo=this.auditForm.idCard
+
+				this.auditForm.legalLicenceNo = this.auditForm.idCard
 			},
-			
+
 			//字典 begin
-			initDict(){
+			initDict() {
 				this.getBankType()
 				this.getBankAccountType()
 			},
 			async getBankType() {
-				let params={
+				let params = {
 					code: 'bank_type',
-					size:10
+					size: 9
 				}
 				if (this.$isNotEmpty(this.bankKeyword)) {
-					params.keyword=this.bankKeyword
+					params.keyword = this.bankKeyword
 				}
 				let res = await this.$api.dict.dictionaryPage(params)
 				let list = res.data.records
-				if (list[0].parentId=='0') {
+				if (list[0].parentId == '0') {
 					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.bankCodeList.push(obj)
 				})
-				this.auditForm.bankCodeLabel=this.bankCodeList[0].label
-				this.auditForm.bankCode=this.bankCodeList[0].value
+				if (this.$isEmpty(this.auditForm.bankCodeLabel) && this.$isEmpty(this.auditForm.bankCode)) {
+					this.auditForm.bankCodeLabel = this.bankCodeList[0].label
+					this.auditForm.bankCode = this.bankCodeList[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.auditForm.bankAccountType=this.bankAccountTypeList[0].value
-					this.auditForm.bankAccountTypeLabel=this.bankAccountTypeList[0].label
+					this.auditForm.bankAccountType = this.bankAccountTypeList[0].value
+					this.auditForm.bankAccountTypeLabel = this.bankAccountTypeList[0].label
 				})
 			},
 			//字典 end
-			bankTypeConfirm(e){
-				this.bankCodeShow=false
-				this.auditForm.bankCodeLabel=e.label
-				this.auditForm.bankCode=e.value
+			bankTypeConfirm(e) {
+				this.bankCodeShow = false
+				this.auditForm.bankCodeLabel = e.label
+				this.auditForm.bankCode = e.value
 			},
-			bankAccountTypeConfirm(e){
-				this.auditForm.bankAccountTypeLabel=e[0].label
-				this.auditForm.bankAccountType=e[0].value
+			bankAccountTypeConfirm(e) {
+				this.auditForm.bankAccountTypeLabel = e[0].label
+				this.auditForm.bankAccountType = e[0].value
 			},
 		}
 	}
@@ -1275,6 +1304,13 @@
 		z-index: 99;
 	}
 
+	.title {
+		padding: 30rpx 40rpx;
+		font-size: 34rpx;
+		color: #000;
+		font-weight: 800;
+	}
+
 	.bg {
 		height: 220rpx;
 		background-image: linear-gradient(#D18C42, #C99864);
@@ -1282,12 +1318,12 @@
 	}
 
 	.btn {
-		background-color: $color;
+		background-color: #EF9944;
 		color: #FFFFFF;
 	}
 
 	.border {
-		border-bottom: 1rpx solid #F4F4F4;
+		// border-bottom: 1rpx solid #F4F4F4;
 	}
 
 	.tips {
@@ -1298,20 +1334,8 @@
 	}
 
 	.card {
-		box-shadow: 0 0 20rpx #bebebe;
 		background-color: #FFFFFF;
-		border-radius: 16rpx;
-		position: relative;
-		top: -180rpx;
-		margin: 0 15rpx;
-		padding: 30rpx;
-
-		.title {
-			margin-bottom: 30rpx;
-			font-size: 36rpx;
-			color: #000;
-			font-weight: 800;
-		}
+		padding: 40rpx;
 
 		.photo {
 			font-size: 26rpx;
@@ -1325,37 +1349,40 @@
 			}
 		}
 	}
-	
-	.steps1{
+
+	.steps1 {
 		display: flex;
 		justify-content: flex-start;
 		flex-direction: column;
-		.item{
+
+		.item {
+			background-color: #FFFFFF;
 			display: flex;
 			width: 100%;
 			justify-content: space-between;
-			padding: 60rpx 10rpx;
-			
-			.icon{
-				width: 88rpx;
-				height: 88rpx;
+			padding: 60rpx 0rpx;
+			border-radius: 30rpx;
+
+			.icon {
+				width: 120rpx;
+				height: 120rpx;
 				border-radius: 50%;
 			}
-			
-			.item-content{
+
+			.item-content {
 				display: flex;
 				flex-direction: column;
 				width: 70%;
 				margin-left: 20rpx;
-				
-				
-				text:first-child{
-					color: #353535 ;
+
+
+				text:first-child {
+					color: #353535;
 					font-size: 32rpx;
 					font-weight: 800;
 				}
-				
-				text:last-child{
+
+				text:last-child {
 					margin-top: 20rpx;
 					color: #999999;
 					font-size: 26rpx;

+ 22 - 233
pages/test/test.vue

@@ -1,243 +1,32 @@
 <template>
-	<view class="container">
-		<view class="tabs">
-			<scroll-view scroll-x class="bg-white nav">
-				<view class="flex text-center">
-					<view class="cu-item flex-sub" :class="index==current?'text-base  text-xl text-bold ':'text-lg'"
-						v-for="(item,index) in tabs" :key="index" @tap="tabChange(index)">
-						{{item.name}}
-					</view>
-				</view>
-			</scroll-view>
-		</view>
-		<view style="height: 100%;">
-			<swiper style="height: 100%;" :current="current" @change="swiperChange" @animationfinish="animationfinish">
-				<swiper-item v-for="(item,index) in tabs" :key="index">
-					<scroll-view scroll-y style="height: 100%;">
-						<view class="head_box u-flex u-row-center u-col-center">
-							<view class="card-box">
-								<view class="card-head u-flex u-col-center">
-									<view class="card-title u-m-r-10">可提现金额(元)</view>
-									<view class="u-iconfont uicon-eye"  style="color: #fff;font-size: 50rpx;"></view>
-								</view>
-								<view class="money-num u-p-t-50">10.00</view>
-								
-								<view class="padding-top-40 text-white text-df">
-									<text>总收益:¥ 88</text>
-									<text class="margin-left-30">今日收益:¥ 8</text>
-								</view>
-								<button class="u-reset-button withdraw-btn">提现</button>
-							</view>
-						</view>
-						
-						<view class="flex justify-between" style="font-size: 24rpx;color: #666666;">
-							<view class="bg-white cu-btn round margin-30 sm">
-								<text >2021-09</text>
-								<text class="cuIcon-triangledownfill text-gray" style="font-size: 50rpx;"></text>
-							</view>
-							
-							<view class="total-box">收入¥0.00 支出¥0.00</view>
-						</view>
-						
-						
-						<u-sticky offset-top="0" :enable="true">
-							<view class="u-flex nav-box">
-								<view class="state-item u-flex-1 " v-for="(state, index) in statusList" :key="state.value" @tap="onTab(state.value)">
-									<text class="state-title" :class="{ 'title-active': stateCurrent === state.value }">{{ state.name }}</text>
-									<text class="underline" :class="{ 'underline-active': stateCurrent === state.value }"></text>
-								</view>
-							</view>
-						</u-sticky>
-					</scroll-view>
-				</swiper-item>
-			</swiper>
-		</view>
+	<view class="">
+		<button @click="cityShow=!cityShow">打开</button>
+		<city-select v-model="cityShow" @city-change="cityChange"></city-select>
 	</view>
 </template>
-<script>
-	export default {
-		components:{
-		},
-		data() {
-			return {
-				id: '',
-				detail: {},
-				tags: [],
-
-				current: 0,
-				swiperCurrent: 0,
-				tabs: [{
-						name: '账户明细',
-						value: 0
-					},
-					{
-						name: '积分明细',
-						value: 1
-					},
-					{
-						name: '积分明细',
-						value: 2
-					}
-				],
-				
-				stateCurrent: 'all', //默认
-				statusList: [
-					{
-						name: '全部',
-						value: 'all'
-					},
-					{
-						name: '收入',
-						value: 'add'
-					},
-					{
-						name: '支出',
-						value: 'reduce'
-					}
-				],
-			}
-		},
-		onLoad() {
 
-		},
-		methods: {
-			fetchDetail() {
-				this.api.shop.detail({
-					id: this.id
-				}).then(res => {
-					this.detail = res.data
-					this.tags = this.detail.labelNames.split(',')
-				})
-			},
-			tabChange(index) {
-				this.current = index
-			},
-			swiperChange(e) {
-				uni.pageScrollTo({
-					scrollTop: 0,
-					duration: 0
-				});
-				this.current = e.detail.current
-			},
-			animationfinish({
-				detail: {
-					current
-				}
-			}) {
-				this.swiperCurrent = current;
-				this.current = current;
-			},
+<script>
+import citySelect from './u-city-select.vue';
+export default {
+	components: {
+		citySelect
+	},
+	data() {
+		return {
+			cityShow:false
+		};
+	},
+	onLoad() {
+		
+	},
+	methods:{
+		cityChange(e){
+			console.log(e);
 		}
 	}
+};
 </script>
 
 <style lang="scss" scoped>
-	.text-xl {
-		font-size: 34rpx;
-	}
-
-	.container {
-		height: calc(100vh);
-		background-color: #F6F6F6;
-		padding: 78rpx 0rpx 0rpx;
-
-		.tabs {
-			position: fixed;
-			top: -10rpx;
-			left: 0;
-			width: 100%;
-			background-color: #FFFFFF;
-			box-sizing: border-box;
-			z-index: 3;
-		}
-	}
-	
-	
-	.head_box {
-		font-weight: 300;
-		background-color: #fff;
-		padding: 30rpx 0;
-		.card-box {
-			width: 700rpx;
-			min-height: 300rpx;
-			padding: 40rpx 40rpx 0rpx;
-			background-color: #ff9201;
-			box-shadow: 1rpx 5rpx 16rpx 0 rgba(255, 148, 71,.6);
-			border-radius: 30rpx;
-			overflow: hidden;
-			position: relative;
-			.card-head {
-				color: #fff;
-				font-size: 30rpx;
-			}
-			.money-num {
-				font-size: 70rpx;
-				line-height: 70rpx;
-				font-weight: 500;
-				color: #ffffff;
-			}
-			.reduce-num {
-				font-size: 26rpx;
-				font-weight: 400;
-				color: #ffffff;
-			}
 	
-			.withdraw-btn {
-				width: 120rpx;
-				height: 60rpx;
-				line-height: 60rpx;
-				background: #ffffff;
-				border-radius: 30px;
-				font-size: 24rpx;
-				font-weight: 500;
-				color: #ff9201;
-				position: absolute;
-				right: 30rpx;
-				top: 40rpx;
-			}
-		}
-	}
-	
-	.total-box {
-		display: flex;
-		justify-content: center;
-		align-items: center;
-		margin-right: 40rpx;
-		font-size: 24rpx;
-		font-weight: 500;
-		color: #999999;
-	}
-	
-	.state-item {
-		height: 100%;
-		display: flex;
-		flex-direction: column;
-		align-items: center;
-		justify-content: center;
-		background-color: #fff;
-		.state-title {
-			color: #666;
-			font-weight: 500;
-			font-size: 28rpx;
-			line-height: 90rpx;
-		}
-		.title-active {
-			color: #333;
-		}
-		.underline {
-			display: block;
-			width: 68rpx;
-			height: 4rpx;
-			background: #fff;
-			border-radius: 2rpx;
-		}
-		.underline-active {
-			font-weight: 800;
-			background: #ff9447;
-			display: block;
-			width: 68rpx;
-			height: 4rpx;
-			border-radius: 2rpx;
-		}
-	}
-</style>
+</style>

+ 90 - 0
pages/test/test1.vue

@@ -0,0 +1,90 @@
+<template>
+	<view class="">
+		<view class="card">
+			<view class="top">
+				<view class="center">
+					<text class="cuIcon-time margin-right-10"></text>
+					<text style="color: #333333;">2021-10-18 14:36:43</text>
+				</view>
+				<text class="text-base">已付款</text>
+			</view>
+			<view class="content">
+				<scroll-view :scroll-x="true">
+					<image v-for="(item,index) in 8" :key="index" src="https://guosen-bucket-ldt.obs.cn-south-1.myhuaweicloud.com:443/f6a8c0cb362e47f5a8ec1b7831e21fc2-maltan.png" mode=""></image>
+				</scroll-view>
+			</view>
+			<view class="data">
+				<text style="font-size: 24rpx;color: #848484" class="price">共10件商品,合计:88</text>
+			</view>
+			
+			<view class="bottom">
+				<view class="cu-btn round line-base sm">
+					确认订单
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+export default {
+	name: '',
+	data() {
+		return {
+			
+		};
+	},
+	onLoad() {
+		
+	},
+	methods:{
+		
+	}
+};
+</script>
+
+<style>
+	page{
+		background-color: #f2f2f2;
+	}
+</style>
+
+<style lang="scss" scoped>
+	.card{
+		border-radius: 20rpx;
+		padding: 15rpx;
+		background-color: #FFFFFF;
+		margin: 15rpx;
+		box-shadow: 10rpx 10rpx 10rpx #dedede;
+		
+		.top{
+			font-size: 28rpx;
+			padding:10rpx;
+			display: flex;
+			justify-content: space-between;
+			border-bottom: 1rpx dashed   #DDDDDD;
+		}
+		
+		.content{
+			white-space: nowrap;
+			padding: 20rpx 0;
+			image{
+				width: 120rpx;
+				height: 120rpx;
+				border-radius: 10rpx;
+				margin-right: 15rpx;
+			}
+		}
+		
+		.data{
+			display: flex;
+			justify-content: flex-end;
+		}
+		
+		.bottom{
+			padding-top: 30rpx;
+			display: flex;
+			justify-content: flex-end;
+		}
+	}
+</style>

+ 300 - 0
pages/test/u-city-select.vue

@@ -0,0 +1,300 @@
+<template>
+	<u-popup v-model="value" mode="bottom" :popup="false" :mask="true" :closeable="true" :safe-area-inset-bottom="true"
+		close-icon-color="#ffffff" :z-index="uZIndex" :maskCloseAble="maskCloseAble" @close="close">
+		<u-tabs active-color="#FF9447" v-if="value" :list="genTabsList" :is-scroll="true" :current="tabsIndex"
+			@change="tabsChange" ref="tabs"></u-tabs>
+		<view class="area-box">
+			<view class="u-flex" :class="{ 'change':isChange }">
+				<view class="area-item">
+					<view class="u-padding-10 u-bg-gray" style="height: 100%;">
+						<scroll-view :scroll-y="true" style="height: 100%">
+							<u-cell-group>
+								<u-cell-item v-for="(item,index) in provinces" :title="item.label" :arrow="false"
+									:index="index" :key="index" @click="provinceChange(item,index)">
+									<text v-if="isChooseP&&province==index" class="cuIcon-check text-bold"></text>
+								</u-cell-item>
+							</u-cell-group>
+						</scroll-view>
+					</view>
+				</view>
+				<view class="area-item">
+					<view class="u-padding-10 u-bg-gray" style="height: 100%;">
+						<scroll-view :scroll-y="true" style="height: 100%">
+							<u-cell-group v-if="isChooseP">
+								<u-cell-item v-for="(item,index) in citys" :title="item.label" :arrow="false"
+									:index="index" :key="index" @click="cityChange(item,index)">
+									<text v-if="isChooseC&&city==index" class="cuIcon-check text-bold"></text>
+								</u-cell-item>
+							</u-cell-group>
+						</scroll-view>
+					</view>
+				</view>
+
+				<view class="area-item">
+					<view class="u-padding-10 u-bg-gray" style="height: 100%;">
+						<scroll-view :scroll-y="true" style="height: 100%">
+							<u-cell-group v-if="isChooseC">
+								<u-cell-item v-for="(item,index) in areas" :title="item.label" :arrow="false"
+									:index="index" :key="index" @click="areaChange(item,index)">
+									<text v-if="isChooseA&&area==index" class="cuIcon-check text-bold"></text>
+								</u-cell-item>
+							</u-cell-group>
+						</scroll-view>
+					</view>
+				</view>
+			</view>
+		</view>
+	</u-popup>
+</template>
+
+<script>
+	/**
+	 * city-select 省市区级联选择器
+	 * @property {String Number} z-index 弹出时的z-index值(默认1075)
+	 * @property {Boolean} mask-close-able 是否允许通过点击遮罩关闭Picker(默认true)
+	 * @property {String} default-region 默认选中的地区,中文形式
+	 * @property {String} default-code 默认选中的地区,编号形式
+	 */
+	export default {
+		name: 'u-city-select',
+		props: {
+			// 通过双向绑定控制组件的弹出与收起
+			value: {
+				type: Boolean,
+				default: false
+			},
+			// 默认显示的地区,可传类似["河北省", "秦皇岛市", "北戴河区"]
+			defaultRegion: {
+				type: Array,
+				default () {
+					return [];
+				}
+			},
+			// 默认显示地区的编码,defaultRegion和areaCode同时存在,areaCode优先,可传类似["13", "1303", "130304"]
+			areaCode: {
+				type: Array,
+				default () {
+					return [];
+				}
+			},
+			// 是否允许通过点击遮罩关闭Picker
+			maskCloseAble: {
+				type: Boolean,
+				default: true
+			},
+			// 弹出的z-index值
+			zIndex: {
+				type: [String, Number],
+				default: 0
+			}
+		},
+		data() {
+			return {
+				cityValue: "",
+				isChooseP: false, //是否已经选择了省
+				province: 0, //省级下标
+				provinces: [],
+				isChooseC: false, //是否已经选择了市
+				city: 0, //市级下标
+				citys: [],
+				isChooseA: false, //是否已经选择了区
+				area: 0, //区级下标
+				areas: [],
+				tabsIndex: 0,
+
+				//接口city数据
+				cityList: [],
+			}
+		},
+		mounted() {
+			this.init();
+		},
+		computed: {
+			isChange() {
+				return this.tabsIndex > 1;
+			},
+			genTabsList() {
+				let tabsList = [{
+					name: "请选择"
+				}];
+				if (this.isChooseP) {
+					tabsList[0]['name'] = this.provinces[this.province]['label'];
+					tabsList[1] = {
+						name: "请选择"
+					};
+				}
+				if (this.isChooseC) {
+					tabsList[1]['name'] = this.citys[this.city]['label'];
+					tabsList[2] = {
+						name: "请选择"
+					};
+				}
+				if (this.isChooseA) {
+					tabsList[2]['name'] = this.areas[this.area]['label'];
+				}
+				return tabsList;
+			},
+			uZIndex() {
+				// 如果用户有传递z-index值,优先使用
+				return this.zIndex ? this.zIndex : this.$u.zIndex.popup;
+			}
+		},
+		methods: {
+			init() {
+				this.getProvince()
+				if (this.areaCode.length == 3) {
+					this.setProvince("", this.areaCode[0]);
+					this.setCity("", this.areaCode[1]);
+					this.setArea("", this.areaCode[2]);
+				} else if (this.defaultRegion.length == 3) {
+					this.setProvince(this.defaultRegion[0], "");
+					this.setCity(this.defaultRegion[1], "");
+					this.setArea(this.defaultRegion[2], "");
+				};
+			},
+			async getProvince() {
+				let provinces = (await this.$api.area.province()).data
+				this.provinces = []
+				provinces.forEach(item => {
+					let obj = {
+						hasChildren:item.hasChildren,
+						label: item.title,
+						value: item.value
+					}
+					this.provinces.push(obj)
+				})
+				this.getCity(this.provinces[0].value)
+			},
+			async getCity(code) {
+				let params = {
+					parentCode: code
+				}
+				let citys = (await this.$api.area.list(params)).data
+				this.citys = []
+				citys.forEach(item => {
+					let obj = {
+						hasChildren:item.hasChildren,
+						label: item.title,
+						value: item.value
+					}
+					this.citys.push(obj)
+				})
+				this.getArea(this.citys[0].value)
+			},
+			async getArea(code) {
+				let params = {
+					parentCode: code
+				}
+				let areas = (await this.$api.area.list(params)).data
+				this.areas = []
+				areas.forEach(item => {
+					let obj = {
+						hasChildren:item.hasChildren,
+						label: item.title,
+						value: item.value
+					}
+					this.areas.push(obj)
+				})
+			},
+			setProvince(label = "", value = "") {
+				this.provinces.map((v, k) => {
+					if (value ? v.value == value : v.label == label) {
+						this.provinceChange(v, k);
+					}
+				})
+			},
+			setCity(label = "", value = "") {
+				this.citys.map((v, k) => {
+					if (value ? v.value == value : v.label == label) {
+						this.cityChange(v, k);
+					}
+				})
+			},
+			setArea(label = "", value = "") {
+				this.areas.map((v, k) => {
+					if (value ? v.value == value : v.label == label) {
+						this.isChooseA = true;
+						this.area = k;
+					}
+				})
+			},
+			close() {
+				this.$emit('input', false);
+			},
+			tabsChange(index) {
+				this.tabsIndex = index;
+			},
+			async provinceChange(item, index) {
+				if (!item.hasChildren) {
+					let result={
+						location:item.label,
+						locationCode:item.value+'0000'
+					}
+					this.$emit('city-change', result);
+					this.close();
+					return
+				}
+				this.isChooseP = true;
+				this.isChooseC = false;
+				this.isChooseA = false;
+				this.province = index;
+				this.getCity(item.value)
+				this.tabsIndex = 1;
+				
+			},
+			cityChange(item, index) {
+				if (!item.hasChildren) {
+					let result={
+						location:item.label,
+						locationCode:item.value+'00'
+					}
+					this.$emit('city-change', result);
+					this.close();
+					return
+				}
+				this.isChooseC = true;
+				this.isChooseA = false;
+				this.city = index;
+				this.getArea(item.value)
+				this.tabsIndex = 2;
+			},
+			areaChange(item, index) {
+				this.isChooseA = true;
+				this.area = index;
+				let result = {};
+				result.province = this.provinces[this.province];
+				result.city = this.citys[this.city];
+				result.area = this.areas[this.area];
+				let data={
+					location:result.province.label+'-'+result.city.label+'-'+result.area.label,
+					locationCode:result.province.value+'0000,'+result.city.value+'00,'+result.area.value,
+				}
+				this.$emit('city-change', data);
+				this.close();
+			}
+		}
+
+	}
+</script>
+<style lang="scss">
+	.area-box {
+		width: 100%;
+		overflow: hidden;
+		height: 800rpx;
+
+		>view {
+			width: 150%;
+			transition: transform 0.3s ease-in-out 0s;
+			transform: translateX(0);
+
+			&.change {
+				transform: translateX(-33.3333333%);
+			}
+		}
+
+		.area-item {
+			width: 33.3333333%;
+			height: 800rpx;
+		}
+	}
+</style>

BIN
static/icon/success3.png


+ 2 - 1
uni.scss

@@ -1,6 +1,7 @@
 @import 'uview-ui/theme.scss';
 /* 行为相关颜色 */
-$color: #D18C42;
+$color: #EF9944;
+$base-color: #EF9944;
 $uni-color-primary: #007aff;
 $uni-color-success: #4cd964;
 $uni-color-warning: #f0ad4e;