Kaynağa Gözat

提现+银行卡+电池禁用状态

xhj 2 yıl önce
ebeveyn
işleme
b9b1623ec1
85 değiştirilmiş dosya ile 2109 ekleme ve 5 silme
  1. 13 1
      components/cell/index.vue
  2. 54 0
      pages.json
  3. 1 1
      pages/cell/cell.vue
  4. 99 0
      pages/index/index.css
  5. 200 3
      pages/index/index.vue
  6. 8 0
      pages/user/user.vue
  7. BIN
      promote/static/images/arrow.png
  8. BIN
      promote/static/images/arrow_h.png
  9. BIN
      promote/static/images/bmsh.png
  10. BIN
      promote/static/images/huiyuan.png
  11. BIN
      promote/static/images/mySellBg.png
  12. BIN
      promote/static/images/shaixuan.png
  13. BIN
      promote/static/images/share.png
  14. BIN
      promote/static/images/ssico.png
  15. BIN
      promote/static/promote/images/bico.png
  16. BIN
      promote/static/promote/images/card.png
  17. BIN
      promote/static/promote/images/card_back.png
  18. BIN
      promote/static/promote/images/card_front.png
  19. BIN
      promote/static/promote/images/commission.png
  20. BIN
      promote/static/promote/images/dzico.png
  21. BIN
      promote/static/promote/images/fenxiaobg.jpg
  22. BIN
      promote/static/promote/images/fxico1.png
  23. BIN
      promote/static/promote/images/fxico2.png
  24. BIN
      promote/static/promote/images/fxico3.png
  25. BIN
      promote/static/promote/images/fxico4.png
  26. BIN
      promote/static/promote/images/fxico5.png
  27. BIN
      promote/static/promote/images/fxico6.png
  28. BIN
      promote/static/promote/images/fxico7.png
  29. BIN
      promote/static/promote/images/fxico8.png
  30. BIN
      promote/static/promote/images/fxico9.png
  31. BIN
      promote/static/promote/images/gou.png
  32. BIN
      promote/static/promote/images/gou_h.png
  33. BIN
      promote/static/promote/images/gou_h1.png
  34. BIN
      promote/static/promote/images/info_1.png
  35. BIN
      promote/static/promote/images/info_2.png
  36. BIN
      promote/static/promote/images/info_3.png
  37. BIN
      promote/static/promote/images/info_ban.png
  38. BIN
      promote/static/promote/images/info_ico.png
  39. BIN
      promote/static/promote/images/jian.png
  40. BIN
      promote/static/promote/images/ma.png
  41. BIN
      promote/static/promote/images/man.png
  42. BIN
      promote/static/promote/images/purchase.png
  43. BIN
      promote/static/promote/images/radio.png
  44. BIN
      promote/static/promote/images/radio_h.png
  45. BIN
      promote/static/promote/images/recharge.png
  46. BIN
      promote/static/promote/images/service.png
  47. BIN
      promote/static/promote/images/sqimg.png
  48. BIN
      promote/static/promote/images/ssico.png
  49. BIN
      promote/static/promote/images/sta.png
  50. BIN
      promote/static/promote/images/sta_error.png
  51. BIN
      promote/static/promote/images/tdico0.png
  52. BIN
      promote/static/promote/images/tdico1.png
  53. BIN
      promote/static/promote/images/tdico2.png
  54. BIN
      promote/static/promote/images/tdico3.png
  55. BIN
      promote/static/promote/images/tip.png
  56. BIN
      promote/static/promote/images/txbg.png
  57. BIN
      promote/static/promote/images/txico1.png
  58. BIN
      promote/static/promote/images/txico2.png
  59. BIN
      promote/static/promote/images/txico3.png
  60. BIN
      promote/static/promote/images/women.png
  61. 7 0
      promote/withdrawal/addcard/addcard.css
  62. 63 0
      promote/withdrawal/addcard/addcard.vue
  63. 40 0
      promote/withdrawal/bindCard/bindCard.css
  64. 405 0
      promote/withdrawal/bindCard/bindCard.vue
  65. 40 0
      promote/withdrawal/bindCardCheck/bindCardCheck.css
  66. 125 0
      promote/withdrawal/bindCardCheck/bindCardCheck.vue
  67. 102 0
      promote/withdrawal/cardList/cardList.css
  68. 90 0
      promote/withdrawal/cardList/cardList.vue
  69. 25 0
      promote/withdrawal/income/income.css
  70. 149 0
      promote/withdrawal/income/income.vue
  71. 37 0
      promote/withdrawal/index/index.css
  72. 310 0
      promote/withdrawal/index/index.vue
  73. 102 0
      promote/withdrawal/myCard/myCard.css
  74. 112 0
      promote/withdrawal/myCard/myCard.vue
  75. 16 0
      promote/withdrawal/record/record.css
  76. 111 0
      promote/withdrawal/record/record.vue
  77. BIN
      static/pages/images/add.png
  78. BIN
      static/pages/images/duandian.png
  79. BIN
      static/pages/images/ts.png
  80. BIN
      static/pages/images/ts2.png
  81. BIN
      static/pages/images/tx1.png
  82. BIN
      static/pages/images/tx2.png
  83. BIN
      static/pages/images/user_service10.png
  84. BIN
      static/pages/images/user_service9.png
  85. BIN
      static/pages/images/yhk.png

+ 13 - 1
components/cell/index.vue

@@ -5,12 +5,16 @@
 				<view :style="'transform: rotate('+rotate+'deg);'">
 				<view :style="'transform: rotate('+rotate+'deg);'">
 					<image :style="'width: '+width+'rpx;height:'+height+'rpx;'" src="../../static/pages/images/cell.png" class="cell-bg"></image>
 					<image :style="'width: '+width+'rpx;height:'+height+'rpx;'" src="../../static/pages/images/cell.png" class="cell-bg"></image>
 					<view class="cell-q">
 					<view class="cell-q">
-						<view :class="'cell-qs'+(soc>50?' full':'')" :style="'height:'+ soc+'%'"></view>
+						<view :class="'cell-qs'+(soc>50?' full':'')" :style="'height:'+ soc+'%;'+(color!=''?('background-color:'+color):'')"></view>
 					</view>
 					</view>
 				</view>
 				</view>
 				<view class="soc-label" v-if="showsoc">
 				<view class="soc-label" v-if="showsoc">
 					{{soc}}%
 					{{soc}}%
 				</view>
 				</view>
+				<view class="soc-label" v-if="disabled" style="width: 100%;text-align: center;">
+					<image style="width: 37rpx;height: 37rpx;margin: 0rpx auto 6rpx;" src="../../static/pages/images/duandian.png"></image>
+					断电
+				</view>
 			</view>
 			</view>
 		</view>
 		</view>
 	</view>
 	</view>
@@ -42,6 +46,14 @@
 			rotate:{
 			rotate:{
 				type:Number,
 				type:Number,
 				default:0
 				default:0
+			},
+			color:{
+				type:String,
+				default:''
+			},
+			disabled:{
+				type:Boolean,
+				default:false
 			}
 			}
 		},
 		},
 		data() {
 		data() {

+ 54 - 0
pages.json

@@ -380,6 +380,60 @@
 					}
 					}
 				}
 				}
 			]
 			]
+		},
+		{
+			"root": "promote",
+			"pages": [
+				{
+					"path": "withdrawal/index/index",
+					"style": {
+						"navigationBarTitleText": "提现"
+					}
+				},
+				{
+					"path": "withdrawal/addcard/addcard",
+					"style": {
+						"navigationBarTitleText": "添加银行卡"
+					}
+				},
+				{
+					"path": "withdrawal/record/record",
+					"style": {
+						"navigationBarTitleText": "提现记录"
+					}
+				},
+				{
+					"path": "withdrawal/income/income",
+					"style": {
+						"navigationBarTitleText": "收益账户明细"
+					}
+				},
+				{
+					"path": "withdrawal/bindCardCheck/bindCardCheck",
+					"style": {
+						"navigationBarTitleText": "银行卡信息",
+						"enablePullDownRefresh": false
+					}
+				},
+				{
+					"path": "withdrawal/bindCard/bindCard",
+					"style": {
+						"navigationBarTitleText": "绑定银行卡"
+					}
+				},
+				{
+					"path": "withdrawal/myCard/myCard",
+					"style": {
+						"navigationBarTitleText": "我的银行卡"
+					}
+				},
+				{
+					"path": "withdrawal/cardList/cardList",
+					"style": {
+						"navigationBarTitleText": "我的银行卡"
+					}
+				}
+			]
 		}
 		}
 	]
 	]
 }
 }

+ 1 - 1
pages/cell/cell.vue

@@ -61,7 +61,7 @@
 				<view class="cell-box" v-for="item,index in groupList">
 				<view class="cell-box" v-for="item,index in groupList">
 					<view class="ddflex">
 					<view class="ddflex">
 						<view style="margin-right: 35rpx;">
 						<view style="margin-right: 35rpx;">
-							<cell :width="99" :height="197" :soc="item.leaseStatus==1?50:100" :showsoc="false"></cell>
+							<cell :width="99" :height="197" :soc="item.leaseStatus==1?50:100" :color="index==0?'#A8A5A5':''" :disabled="index==0?true:false" :showsoc="false"></cell>
 						</view>
 						</view>
 						<view class="cell-info fflex">
 						<view class="cell-info fflex">
 							<view class="ddflex">
 							<view class="ddflex">

+ 99 - 0
pages/index/index.css

@@ -156,4 +156,103 @@ page {
 	opacity: 1;
 	opacity: 1;
 	background-color: #E6E6E6;
 	background-color: #E6E6E6;
 	margin: 30rpx auto;
 	margin: 30rpx auto;
+}
+
+/* 提现按钮 */
+.tx-btn{
+	width: 136rpx;
+	line-height: 58rpx;
+	background: #FFFFFF;
+	border-radius: 29rpx 29rpx 29rpx 29rpx;
+	text-align: center;
+	font-size: 28rpx;
+	font-weight: 400;
+	color: var(--main);
+}
+
+/*  */
+.echart-box-moneyType view{
+	width: 130rpx;
+	height: 47rpx;
+	line-height: 47rpx;
+	text-align: center;
+	background: #FFFFFF;
+	border: 2rpx solid #CED4DB;
+	color: #666464;
+}
+.echart-box-moneyType view:first-child{
+	border-radius: 8rpx 0rpx 0rpx 8rpx;
+}
+.echart-box-moneyType view:last-child{
+	border-radius: 0rpx 8rpx 8rpx 0rpx;
+}
+.echart-box-moneyType-active{
+	border: 2rpx solid var(--main) !important;
+	color: var(--main) !important;
+}
+
+/* 弹窗 */
+.ceng {
+    position: fixed;
+    top: 0;
+    left: 0;
+    right: 0;
+    bottom: 0;
+    background: rgba(0, 0, 0, 0.65);
+    z-index: 99;
+}
+.pop{
+	width:100%;
+	border-radius:16rpx 16rpx 0 0;
+	background: #F6F6F6;
+	position: fixed;
+	bottom:-100%;
+	left:0;
+	right:0;
+	padding:10rpx 0 0;
+	z-index: 100;
+	transition: all .3s ease;
+}
+.pop-item{
+	padding:30rpx;
+	font-size:30rpx;
+	text-align:center;
+}
+.pop-qx{
+	border-top:10rpx solid #f5f5f5;
+	background: #fff;
+}
+.pop-title{
+	line-height: 50rpx;
+	font-size: 36rpx;
+	font-weight: 600;
+	color: #333333;
+	margin: 40rpx 0;
+	text-align: center;
+}
+.pop-c-item{
+	width: 662rpx;
+	height: 130rpx;
+	background: #FFFFFF;
+	border-radius: 10rpx 10rpx 10rpx 10rpx;
+	opacity: 1;
+	margin: auto;
+	padding: 0 50rpx;
+	box-sizing: border-box;
+	margin-bottom: 30rpx;
+}
+.pop-c-item image{
+	width: 48rpx;
+	height: 48rpx;
+	margin-right: 17rpx;
+	line-height: 42rpx;
+	font-size: 30rpx;
+	font-weight: 400;
+	color: #333333;
+}
+.pop-c-item-r{
+	line-height: 33rpx;
+	font-size: 24rpx;
+	font-weight: 400;
+	color: #A8A5A5;
 }
 }

+ 200 - 3
pages/index/index.vue

@@ -6,9 +6,12 @@
 		</view>
 		</view>
 		<!-- 数据 -->
 		<!-- 数据 -->
 		<view class="data-box">
 		<view class="data-box">
-			<view>
-				<view class="ljsy">{{statisticData.totalProfit?statisticData.totalProfit:0}}</view>
-				<view class="ljsy-label">累计收益(元)</view>
+			<view class="ddflex" style="justify-content: space-between;">
+				<view>
+					<view class="ljsy">{{statisticData.totalProfit?statisticData.totalProfit:0}}</view>
+					<view class="ljsy-label">累计收益(元)</view>
+				</view>
+				<view class="tx-btn" @click="showPop = true">提现</view>
 			</view>
 			</view>
 
 
 			<view class="jy ddflex">
 			<view class="jy ddflex">
@@ -138,11 +141,57 @@
 				</view>
 				</view>
 			</view>
 			</view>
 		</view>
 		</view>
+		
+		<!-- 图表统计 -->
+		<view class="echart-box">
+			<view class="echart-box-header ddflex">
+				<view class="echart-box-title">商城交易趋势</view>
+				<view class="echart-box-moneyType ddflex">
+					<view class="echart-box-moneyType-active">销售金额</view>
+					<view style="border-left: none;">退款金额</view>
+				</view>
+			</view>
+			<view class="ddflex" style="justify-content: center;margin-top: 30rpx;">
+				<view class="echart-box-timeType ddflex">
+					<view :class="'echart-box-timeType-item '+(timeType==1?'echart-box-timeType-item-acitve':'')"
+						@click="timeTypeChange(1)">今日</view>
+					<view :class="'echart-box-timeType-item '+(timeType==2?'echart-box-timeType-item-acitve':'')"
+						@click="timeTypeChange(2)">近7日</view>
+					<view :class="'echart-box-timeType-item '+(timeType==3?'echart-box-timeType-item-acitve':'')"
+						@click="timeTypeChange(3)">近30日</view>
+					<view :class="'echart-box-timeType-item '+(timeType==4?'echart-box-timeType-item-acitve':'')"
+						@click="timeTypeChange(4)">近一年</view>
+				</view>
+			</view>
+			<view style="height:500rpx">
+				<l-echart ref="chart7" @finished="init"></l-echart>
+			</view>
+		</view>
 
 
 		<view class="guide" @tap="hideGuide" v-if="first">
 		<view class="guide" @tap="hideGuide" v-if="first">
 			<image src="/static/pages/images/guide.png" mode="widthFix"></image>
 			<image src="/static/pages/images/guide.png" mode="widthFix"></image>
 		</view>
 		</view>
 		<foot channel="home" :isUpdate="isUpdate"></foot>
 		<foot channel="home" :isUpdate="isUpdate"></foot>
+		
+		
+		<view class="ceng" v-show="showPop" @click="showPop=false"></view>
+		<view :style="showPop?'bottom:0;':''" class="pop">
+			<view class="pop-title">选择提现方式</view>
+			<view class="pop-c-item ddflex" @click="jumpUrl('/promote/withdrawal/index/index')">
+				<image src="../../static/pages/images/tx1.png"></image>
+				<view class="fflex">线上提现</view>
+				<view class="pop-c-item-r ddflex">
+					<view>仅限个人账户</view>
+					<image style="width: 12rpx;height:22rpx;margin-left: 12rpx;" src="../../static/images/n_rico.png"></image>
+				</view>
+			</view>
+			<view class="pop-c-item ddflex" @click="jumpUrl('/promote/withdrawal/index/index')">
+				<image src="../../static/pages/images/tx2.png"></image>
+				<view class="fflex">线下提现</view>
+			</view>
+			<view class="pop-item pop-qx" @click="showPop=false">取消</view>
+		</view>
+		
 	</view>
 	</view>
 	<view v-else>
 	<view v-else>
 		<view class="wei-login" v-if="!isLogin">
 		<view class="wei-login" v-if="!isLogin">
@@ -178,6 +227,8 @@
 				pxToRpxScale: 0,
 				pxToRpxScale: 0,
 				rpxTopxScale: 0,
 				rpxTopxScale: 0,
 				
 				
+				showPop:false,
+				
 				isLogin:false,
 				isLogin:false,
 
 
 				timeType: 1, //统计时间 1.按日 2.按月 3.按季度
 				timeType: 1, //统计时间 1.按日 2.按月 3.按季度
@@ -563,6 +614,123 @@
 					}]
 					}]
 				},
 				},
 
 
+				// 商城交易趋势
+				option7: {
+					tooltip: {
+						trigger: 'axis',
+						axisPointer: {
+							type: 'shadow'
+						},
+						confine: true
+					},
+					legend: {
+						data: ['销售金额', '同比','环比'],
+						x: 'center', //可设定图例在左、右、居中
+						y: 'top', //可设定图例在上、下、居中
+						padding: [15, 0, 0, 0]
+					},
+					grid: {
+						left: 0,
+						right: 8,
+						bottom: 5,
+						top: 45,
+						containLabel: true
+					},
+					xAxis: [{
+						type: 'category',
+						data: ['2023-01=22','2023-02','2023-03','2023-04','2023-05'],
+						axisLine: {
+							lineStyle: {
+								color: '#999999'
+							}
+						},
+						axisLabel: {
+							rotate: 45, // 旋转30度
+							color: '#666666',
+							// interval: 0,
+				
+						}
+					}],
+					yAxis: [{
+						type: 'value',
+						splitLine: {
+							show:false
+						},
+						axisTick: {
+							show: false
+						},
+						axisLine: {
+							show: true,
+							lineStyle: {
+								color: '#E2E7F1'
+							}
+						},
+						axisLabel: {
+							color: '#666666'
+						}
+					},{
+						type: 'value',
+						splitLine: {
+							show:false
+						},
+						axisTick: {
+							show: false
+						},
+						axisLine: {
+							show: true,
+							lineStyle: {
+								color: '#E2E7F1'
+							}
+						},
+						axisLabel: {
+							color: '#666666',
+							formatter: '{value} %'
+						}
+					}],
+					series: [{
+							name: '销售金额',
+							type: 'bar',
+							data: [5000,6000,7000,8500,5500],
+							showSymbol: false,
+							smooth: true,
+							barWidth: 10,
+							itemStyle: {
+								// 颜色
+								color: '#FF7D00',
+								// 给bar设置倒角
+								barBorderRadius: [0, 0, 0, 0]
+							}
+						},
+						{
+							name: '同比',
+							yAxisIndex: 1,
+							type: 'line',
+							data: [-10,-20,10,30,20],
+							showSymbol: false,
+							smooth: true,
+							itemStyle: {
+								// 颜色
+								color: '#FFDC0F',
+								// 给bar设置倒角
+								barBorderRadius: [15, 15, 0, 0]
+							}
+						},
+						{
+							name: '环比',
+							yAxisIndex: 1,
+							type: 'line',
+							data: [-20,-10,30,20,10],
+							showSymbol: false,
+							smooth: true,
+							itemStyle: {
+								// 颜色
+								color: '#5F50E6',
+								// 给bar设置倒角
+								barBorderRadius: [15, 15, 0, 0]
+							}
+						},
+					]
+				},
 			};
 			};
 		},
 		},
 
 
@@ -602,6 +770,7 @@
 		},
 		},
 		methods: {
 		methods: {
 			jumpUrl(url){
 			jumpUrl(url){
+				this.showPop=false
 				if(req.isLogins(true)){
 				if(req.isLogins(true)){
 					uni.navigateTo({
 					uni.navigateTo({
 						url:url
 						url:url
@@ -701,6 +870,34 @@
 						chart.setOption(this.option6);
 						chart.setOption(this.option6);
 					});
 					});
 				}
 				}
+				if(this.$refs.chart7){
+					this.$refs.chart7.init(echarts, async chart => {
+						// let echartData = await this.getEchartData()
+						this.option7.yAxis[0].axisLabel.fontSize = 13 * this.rpxTopxScale
+						this.option7.yAxis[1].axisLabel.fontSize = 13 * this.rpxTopxScale
+						this.option7.xAxis[0].axisLabel.fontSize = 13 * this.rpxTopxScale
+						this.option7.legend.itemHeight = 10 * this.rpxTopxScale
+						this.option7.legend.itemWidth = 40 * this.rpxTopxScale
+						// if(this.echartData.orderList.length>0){
+						// 	this.option7.xAxis[0].data = this.echartData.orderList.map(item=>{return item.showTime})
+						// 	this.option7.series[0].data = this.echartData.orderList.map(item=>{return item.orderCount})
+						// }else{
+						// 	this.option7.xAxis[0].data = []
+						// 	this.option7.series[0].data = []
+						// }
+						// if(this.echartData.profitList.length>0){
+						// 	this.option7.series[1].data = this.echartData.profitList.map(item=>{return item.profit})
+						// }else{
+						// 	this.option7.series[1].data = []
+						// }
+						// if(this.echartData.turnoverList.length>0){
+						// 	this.option7.series[2].data = this.echartData.turnoverList.map(item=>{return item.turnover})
+						// }else{
+						// 	this.option7.series[2].data = []
+						// }
+						chart.setOption(this.option7);
+					});
+				}
 			},
 			},
 			// 获取图表数据
 			// 获取图表数据
 			getEchartData() {
 			getEchartData() {

+ 8 - 0
pages/user/user.vue

@@ -54,6 +54,14 @@
 					<image src="../../static/pages/images/user_service4.png"></image>
 					<image src="../../static/pages/images/user_service4.png"></image>
 					<text>运营数据</text>
 					<text>运营数据</text>
 				</navigator>
 				</navigator>
+				<navigator url="" hover-class="none" class="li" @click="jumpUrl('')">
+					<image src="../../static/pages/images/user_service9.png"></image>
+					<text>商城订单</text>
+				</navigator>
+				<navigator url="" hover-class="none" class="li" @click="jumpUrl('promote/withdrawal/myCard/myCard')">
+					<image src="../../static/pages/images/user_service10.png"></image>
+					<text>我的银行卡</text>
+				</navigator>
 				<view class="li">
 				<view class="li">
 					<contact-button img-url="../../static/pages/images/user_service5.png" img-style='width: 74rpx;height: 74rpx;margin: 0 auto 12rpx;' button-text="官方客服" styles="line-height:initial;"></contact-button>
 					<contact-button img-url="../../static/pages/images/user_service5.png" img-style='width: 74rpx;height: 74rpx;margin: 0 auto 12rpx;' button-text="官方客服" styles="line-height:initial;"></contact-button>
 				</view>
 				</view>

BIN
promote/static/images/arrow.png


BIN
promote/static/images/arrow_h.png


BIN
promote/static/images/bmsh.png


BIN
promote/static/images/huiyuan.png


BIN
promote/static/images/mySellBg.png


BIN
promote/static/images/shaixuan.png


BIN
promote/static/images/share.png


BIN
promote/static/images/ssico.png


BIN
promote/static/promote/images/bico.png


BIN
promote/static/promote/images/card.png


BIN
promote/static/promote/images/card_back.png


BIN
promote/static/promote/images/card_front.png


BIN
promote/static/promote/images/commission.png


BIN
promote/static/promote/images/dzico.png


BIN
promote/static/promote/images/fenxiaobg.jpg


BIN
promote/static/promote/images/fxico1.png


BIN
promote/static/promote/images/fxico2.png


BIN
promote/static/promote/images/fxico3.png


BIN
promote/static/promote/images/fxico4.png


BIN
promote/static/promote/images/fxico5.png


BIN
promote/static/promote/images/fxico6.png


BIN
promote/static/promote/images/fxico7.png


BIN
promote/static/promote/images/fxico8.png


BIN
promote/static/promote/images/fxico9.png


BIN
promote/static/promote/images/gou.png


BIN
promote/static/promote/images/gou_h.png


BIN
promote/static/promote/images/gou_h1.png


BIN
promote/static/promote/images/info_1.png


BIN
promote/static/promote/images/info_2.png


BIN
promote/static/promote/images/info_3.png


BIN
promote/static/promote/images/info_ban.png


BIN
promote/static/promote/images/info_ico.png


BIN
promote/static/promote/images/jian.png


BIN
promote/static/promote/images/ma.png


BIN
promote/static/promote/images/man.png


BIN
promote/static/promote/images/purchase.png


BIN
promote/static/promote/images/radio.png


BIN
promote/static/promote/images/radio_h.png


BIN
promote/static/promote/images/recharge.png


BIN
promote/static/promote/images/service.png


BIN
promote/static/promote/images/sqimg.png


BIN
promote/static/promote/images/ssico.png


BIN
promote/static/promote/images/sta.png


BIN
promote/static/promote/images/sta_error.png


BIN
promote/static/promote/images/tdico0.png


BIN
promote/static/promote/images/tdico1.png


BIN
promote/static/promote/images/tdico2.png


BIN
promote/static/promote/images/tdico3.png


BIN
promote/static/promote/images/tip.png


BIN
promote/static/promote/images/txbg.png


BIN
promote/static/promote/images/txico1.png


BIN
promote/static/promote/images/txico2.png


BIN
promote/static/promote/images/txico3.png


BIN
promote/static/promote/images/women.png


+ 7 - 0
promote/withdrawal/addcard/addcard.css

@@ -0,0 +1,7 @@
+/* promote/withdrawal/addcard/addcard.wxss */
+.form{background: #fff;  font-size: 28rpx;}
+.ipt{height: 100rpx; line-height: 100rpx; justify-content: space-between;align-items: center;}
+.ipt text{font-weight: bold;}
+input{width: 423rpx; text-align: right;}
+.btn{height:90rpx !important;border-radius:45rpx !important;line-height: 90rpx !important;font-size: 32rpx;color: #fff;text-align: center;margin-top: 170rpx;position: fixed;left: 40rpx;right: 40rpx;bottom: 115rpx;z-index: 20;background-color: var(--mina);}
+.bor{border-bottom: 1rpx solid #E5E5E5;}

+ 63 - 0
promote/withdrawal/addcard/addcard.vue

@@ -0,0 +1,63 @@
+<template>
+<!--promote/withdrawal/addcard/addcard.wxml-->
+<form @submit="formSubmit">
+<view class="form mt20">
+<view class="dflex ipt pdlr20 bor"><text>开户银行</text><input placeholder="请输入开户银行" name="title"></input></view>
+<view class="dflex ipt pdlr20"><text>银行卡号</text><input placeholder="请输入银行卡的卡号" name="card"></input></view>
+</view>
+<view class="form mt20">
+<view class="dflex ipt pdlr20 bor"><text>持卡人姓名</text><input placeholder="请输入持卡人的姓名" name="name"></input></view>
+<view class="dflex ipt pdlr20"><text>身份证号</text><input placeholder="请输入您的身份证号" name="identity"></input></view>
+</view>
+<button class="btn" form-type="submit">立即添加</button>
+</form>
+</template>
+
+<script>
+// promote/withdrawal/addcard/addcard.js
+const app = getApp();
+const req = require("../../../utils/request.js");
+
+export default {
+  data() {
+    return {};
+  },
+
+  components: {},
+  props: {},
+
+  /**
+   * 生命周期函数--监听页面加载
+   */
+  onLoad: function (options) {},
+
+  /**
+   * 生命周期函数--监听页面显示
+   */
+  onShow: function () {},
+  methods: {
+    formSubmit(event) {
+      let data = event.detail.value;
+      let sfz = /^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
+
+      if (!sfz.test(data.identity)) {
+        return req.msg('请填写正确的身份证信息!');
+      }
+
+      // console.log(data);
+      this.submitCard(data);
+    },
+
+    submitCard(data) {
+      req.postRequest('/api/bank/save', data, res => {
+        // console.log(res);
+        uni.navigateBack();
+      });
+    }
+
+  }
+};
+</script>
+<style>
+@import "./addcard.css";
+</style>

+ 40 - 0
promote/withdrawal/bindCard/bindCard.css

@@ -0,0 +1,40 @@
+/* bindCard.css */
+page{background: #fff;padding-bottom: 230rpx;}
+.step{padding: 50rpx 0 35rpx;justify-content: center;border-bottom: 20rpx solid #F6F6F6;position: relative;}
+.step::after{content: '';display: block;width: 176rpx;height: 1rpx;background: #C9C9C9;position: absolute;left: 50%;transform: translateX(-50%);top: 93rpx;z-index: 1;}
+.step .li{font-size: 28rpx;color: #999;margin: 0 33rpx;position: relative;z-index: 2;}
+.num{width: 60rpx;height: 60rpx;background: #DCDCDC;border-radius: 50%;margin: 0 auto;font-size: 42rpx;color: #fff;font-weight: bold;text-align: center;line-height: 60rpx;border: 13rpx solid #fff;}
+.s-gou{width: 60rpx;height: 60rpx;border: 13rpx solid #fff;margin: 0 auto;background: #fff;display: none;}
+.step .li.ing,.step .li.end{color: #000000;}
+.step .li.ing .num{background: var(--mina);}
+.step .li.end .num{display: none;}
+.step .li.end .s-gou{display: block;}
+.form{padding: 0 32rpx;}
+.form .li{border-bottom: 1rpx solid #E6E6E6;padding: 35rpx 0;}
+/* .form .li:last-child{border-bottom: none;} */
+.label{width: 162rpx;font-size: 32rpx;color: #333;display: block;box-sizing: border-box;padding-right: 30rpx;}
+.type{font-size: 28rpx;color: #666;margin-right: 30rpx;white-space: nowrap;}
+.type image{width: 40rpx;height: 40rpx;margin-right: 14rpx;}
+.linsence{width: 326rpx;margin: 30rpx auto 0;text-align: center;font-size: 22rpx;color: #666;}
+.linsence image{width: 326rpx;height: 206rpx;border-radius: 15rpx;border: 2rpx solid #e5e5e5;margin: 0 auto 12rpx;}
+.ipt{width: 100%;font-size: 32rpx;color: #333;}
+.placeholder{color: #ccc;}
+.chang{margin-left: 20rpx;font-size: 28rpx;color: #666;}
+.chang image{width: 24rpx;height: 24rpx;margin-right: 10rpx;}
+.textarea{width: 100%;height: 150rpx;font-size: 32rpx;color: #333;}
+.flexs{align-items: flex-start;}
+.location{width: 28rpx;height: 35rpx;padding: 10rpx 25rpx;}
+.next{height: 80rpx;background: var(--mina);border-radius: 40rpx;font-size: 32rpx;color: #fff;text-align: center;line-height: 80rpx;position: fixed;left: 32rpx;right: 32rpx;bottom: 28rpx;z-index: 50;}
+.cards .label{width: auto;}
+.card{justify-content: space-between;}
+.tip{font-size: 28rpx;color: #FC8C20;padding: 22rpx 0;}
+.tip image{width: 27rpx;height: 27rpx;margin-right: 10rpx;}
+.rico{width: 13rpx;height: 23rpx;}
+.form-b{border-top: 20rpx solid #F6F6F6;}
+.send{font-size: 28rpx;color: #FC8C20;}
+.form .li.cards{border-bottom: none;}
+
+.pickers{width: 100%;position: relative;font-size: 32rpx;color: #A2A6AF;}
+.pickers.active{color: #666;}
+.ipt_g{color: #ccc;}
+.pickers .rico,.f-item .rico{position: absolute;right: 0;top: 50%;transform: translateY(-50%);}

+ 405 - 0
promote/withdrawal/bindCard/bindCard.vue

@@ -0,0 +1,405 @@
+<template>
+	<view>
+		<view class="step ddflex">
+			<view :class="'li' + (stepOne ? ' ing' : '') + (stepOneComplete ? ' end' : '')">
+				<view class="num">1</view>
+				<image src="../../static/promote/images/gou_h.png" class="s-gou"></image>
+				<text>验证身份信息</text>
+			</view>
+			<view :class="'li' + (stepTwo ? ' ing' : '') + (stepTwoComplete ? ' end' : '')">
+				<view class="num">2</view>
+				<image src="../../static/promote/images/gou_h.png" class="s-gou"></image>
+				<text>验证银行卡信息</text>
+			</view>
+		</view>
+		<block v-if="stepOne">
+			<view class="form">
+				<view class="li cards">
+					<label class="label">身份证信息</label>
+					<view class="card ddflex">
+						<view class="linsence" @click="uploadImgs(1)">
+							<image :src="fileInfo.legalPersonidPositivePic ? fileInfo.legalPersonidPositivePic : '../../static/promote/images/card_front.png'"></image>
+							<view>身份证人像面</view>
+						</view>
+						<view class="linsence" @click="uploadImgs(2)">
+							<image :src="fileInfo.egalPersonidOppositePic ? fileInfo.egalPersonidOppositePic : '../../static/promote/images/card_back.png'"></image>
+							<view>身份证国徽面</view>
+						</view>
+					</view>
+				</view>
+				<view class="li ddflex">
+					<label class="label">姓名</label>
+					<view class="item fflex"><input v-model="rName" placeholder="上传身份证人像面自动获取" placeholder-class="placeholder" class="ipt" /></view>
+				</view>
+				<view class="li ddflex">
+					<label class="label">身份证号</label>
+					<view class="item fflex"><input v-model="rCode" placeholder="上传身份证人像面自动获取" placeholder-class="placeholder" class="ipt" /></view>
+				</view>
+				<view class="li ddflex">
+					<label class="label">有效期限</label>
+					<view class="item ddflex fflex">
+						<input v-model="rValidDate" placeholder="上传身份证国徽面自动获取" placeholder-class="placeholder" class="ipt fflex" />
+						<!-- <view class="chang ddflex">
+							<image src="../../static/promote/images/gou1.png"></image>
+							长期
+						</view> -->
+					</view>
+				</view>
+				<view class="li dflex">
+					<label class="label">所在城市</label>
+					<view class="item dflex flex">
+						<input :disabled="true" v-model="address" placeholder="点击右侧图标获取" placeholder-class="placeholder" class="ipt flex" />
+						<image src="../../static/promote/images/dzico.png" class="location" @click="chooseLocation()"></image>
+					</view>
+				</view>
+			</view>
+			<view class="next" @click="toStepTwo">下一步</view>
+		</block>
+		<block v-if="stepTwo">
+			<view class="form">
+				<view class="li cards">
+					<label class="label">银行卡</label>
+					<view class="linsence" @click="uploadImgs(3)">
+						<image :src="bankUrl ? bankUrl : '../../static/promote/images/card.png'"></image>
+						<view>上传储蓄银行卡正面照</view>
+					</view>
+				</view>
+				<view class="li dflex">
+					<label class="label">户名</label>
+					<view class="item flex"><input :disabled="true" v-model="rName" placeholder="请输入户主名称" placeholder-class="placeholder" class="ipt" /></view>
+				</view>
+				<view class="li ddflex">
+					<label class="label">开户银行</label>
+					<view class="item fflex">
+						<picker :class="'pickers ' + (bankName ? 'active' : '')" @change="bindPickerBank" range-key="name" :range="bankList">
+							<view v-if="bankName" class="ipt">{{ bankName }}</view>
+							<view v-else class="ipt_g">请选择开户银行</view>
+							<image src="../../../static/pages/images/crico1.png" class="rico"></image>
+						</picker>
+					</view>
+				</view>
+				<view class="li ddflex">
+					<label class="label">银行卡号</label>
+					<view class="item fflex"><input v-model="bankNo" placeholder="上传后自动获取" placeholder-class="placeholder" class="ipt" /></view>
+				</view>
+
+				<view class="li flexs dflex">
+					<label class="label">预留手机</label>
+					<view class="item flex">
+						<input type="number" v-model="bankAcctPhone" maxlength="11" placeholder="请输入银行预留手机号" placeholder-class="placeholder" class="ipt" />
+					</view>
+				</view>
+			</view>
+			<view class="next" @click="submit()">确定绑卡</view>
+		</block>
+	</view>
+</template>
+
+<script>
+const app = getApp();
+// const util = require('../../../utils/util.js');
+const req = require('../../../utils/request.js');
+const hfParams = require('../../../utils/hfParams.js');
+var QQMapWX = require('../../../utils/qqmap.js');
+export default {
+	data() {
+		return {
+			isEdit: false,
+			stepOne: true,
+			stepOneComplete: false,
+			stepTwo: false,
+			stepTwoComplete: false,
+			fileInfo: {
+				legalPersonidPositivePic: '', //正面
+				egalPersonidOppositePic: '' //反面
+			},
+			//身份信息
+			rName: '',
+			rCode: '',
+			rValidDate: '',
+
+			location: '',
+			addIds: '',
+			address: '', //区域
+			addressDetails: '',
+
+			cityList: [],
+			bankList: [],
+
+			bankUrl: '', //银行卡图片
+			bankPosition: -1, //下标
+			bankName: '', //银行名字
+			bankAcctName: '', //户名
+			bankNo: '', //卡号
+			bankAcctPhone: '',
+
+			settlementInfo: '',
+			isEnd: false //是否为查看编辑
+		};
+	},
+	onLoad(opt) {
+		this.cityList = hfParams.mArea();
+		this.bankList = hfParams.bank();
+		if (opt.isEnd) {
+			this.isEnd = opt.isEnd;
+			//默认选中上面的标签
+			let pages = getCurrentPages(); //获取所有页面栈实例列表
+			let prevPage = pages[pages.length - 2]; //上一页页面实例
+			this.settlementInfo = prevPage.$vm.settlementInfo;
+			if (this.settlementInfo) {
+				this.addIds = this.settlementInfo.provCode + ',' + this.settlementInfo.areaCode;
+				this.address = this.settlementInfo.address;
+				this.rName = this.settlementInfo.cardName;
+				this.bankName = this.getBankName(this.settlementInfo.bankCode);
+				this.bankAcctName = this.settlementInfo.cardName;
+				this.bankUrl = this.settlementInfo.bankUrl;
+				this.bankNo = this.settlementInfo.cardNo.replace(' ','');
+				this.fileInfo = JSON.parse(this.settlementInfo.fileJson);
+				this.rCode = this.settlementInfo.legalCertId;
+				this.rValidDate = this.settlementInfo.legalCertIdExpires;
+				this.bankAcctPhone = this.settlementInfo.legalMp;
+			}
+		}
+	},
+	methods: {
+		getBankName(code) {
+			for (var i = 0; i < this.bankList.length; i++) {
+				var bankObj = this.bankList[i];
+				if (bankObj.code == code) {
+					this.bankPosition = i;
+					return bankObj.name;
+				}
+			}
+		},
+
+		toStepTwo() {
+			if (!this.fileInfo.legalPersonidPositivePic) {
+				req.msg('请上传身份证人像面');
+				return;
+			}
+			if (!this.fileInfo.egalPersonidOppositePic) {
+				req.msg('请上传身份证国徽面');
+				return;
+			}
+			if (!this.rName) {
+				req.msg('姓名不能为空');
+				return;
+			}
+			if (!this.rCode) {
+				req.msg('身份证号不能为空');
+				return;
+			}
+			if (!this.rValidDate) {
+				req.msg('身份证有效期不能为空');
+				return;
+			}
+
+			if (!this.addIds) {
+				req.msg('请选择所在地区');
+				return;
+			}
+			this.stepOne = false;
+			this.stepOneComplete = true;
+			this.stepTwo = true;
+		},
+
+		uploadImgs(type) {
+			// if (!this.isEdit) {
+			// 	return;
+			// }
+			let that = this;
+			uni.chooseImage({
+				count: 1,
+				sizeType: ['original', 'compressed'],
+				sourceType: ['album', 'camera'],
+				success(res) {
+					uni.showLoading({
+						title: '上传中'
+					});
+					req.uploadFile('/api/upload', res.tempFilePaths[0], res => {
+						uni.hideLoading();
+						if (type == 1) {
+							//正面
+							that.fileInfo.legalPersonidPositivePic = res.src;
+							that.ocrCard(res.src, 1);
+						} else if (type == 2) {
+							//反面
+							that.fileInfo.egalPersonidOppositePic = res.src;
+							that.ocrCard(res.src, 2);
+						} else if (type == 3) {
+							that.bankUrl = res.src;
+							uni.showLoading({
+								title: '识别中'
+							});
+							req.getRequest('/baiduAI/bank', { imgUrl: res.src }, json => {
+								uni.hideLoading();
+								if (json.result) {
+									that.bankNo = json.result.bank_card_number;
+									that.initCheckBank(json.result.bank_name);
+								}
+							});
+						}
+					});
+				}
+			});
+		},
+
+		ocrCard(imgUrl, type) {
+			uni.showLoading({
+				title: '识别中'
+			});
+			//front back
+			var idCardDide = type == 1 ? 'front' : 'back';
+			req.getRequest('/baiduAI/ocrIdcard', { imgUrl: imgUrl, idCardDide: idCardDide }, json => {
+				uni.hideLoading();
+				if (type == 1) {
+					this.rName = json.words_result.姓名.words;
+					this.rCode = json.words_result.公民身份号码.words;
+				} else if (type == 2) {
+					var dataStr = json.words_result.失效日期.words;
+					if (dataStr === '长期') {
+						this.rValidDate = '2099-12-31';
+					} else {
+						var y = dataStr.slice(0, 4);
+						var m = dataStr.slice(4, 6);
+						var d = dataStr.slice(6, 8);
+						this.rValidDate = y + '-' + m + '-' + d;
+					}
+				}
+			});
+		},
+
+		initCheckBank(name) {
+			for (var i = 0; i < this.bankList.length; i++) {
+				var bankObj = this.bankList[i];
+				if (bankObj.name == name) {
+					this.bankPosition = i;
+					this.bankName = name;
+				}
+			}
+		},
+
+		chooseLocation() {
+			var tha = this;
+			uni.chooseLocation({
+				success: res => {
+					if (res.name) {
+						tha.location = res;
+						tha.addressDetails = res.address;
+						tha.reverseGeocoder(res);
+					}
+				},
+				fail: () => {
+					uni.getSetting({
+						success: function(res) {
+							var statu = res.authSetting;
+							console.log(statu);
+							if (!statu['scope.userLocation']) {
+								console.log(123);
+								uni.showModal({
+									title: '是否授权当前位置',
+									content: '需要获取您的地理位置,请确认授权,否则地图功能将无法使用',
+									success(tip) {
+										if (tip.confirm) {
+											uni.openSetting({
+												success: function(data) {
+													if (data.authSetting['scope.userLocation'] === true) {
+														//授权成功之后,再调用chooseLocation选择地方
+														setTimeout(function() {
+															uni.chooseLocation({
+																success: res => {
+																	if (res.name) {
+																		tha.location = res;
+																		tha.addressDetails = res.address;
+																		console.log('地址数据addressDetail》》》:', tha.addressDetails);
+																		tha.reverseGeocoder(res);
+																	}
+																}
+															});
+														}, 1000);
+													}
+												}
+											});
+										}
+									}
+								});
+							}
+						}
+					});
+				}
+			});
+		},
+		reverseGeocoder(location) {
+			QQMapWX.initMap();
+			QQMapWX.reverseGeocoder(location, data => {
+				this.address = data.ad_info.province + ' ' + data.ad_info.city; //+ ' ' + data.ad_info.district
+
+				for (var i = 0; i < this.cityList.length; i++) {
+					var cityObj = this.cityList[i];
+					if (data.ad_info.province.indexOf(cityObj.label) != -1) {
+						for (var k = 0; k < cityObj.children.length; k++) {
+							var areaObj = cityObj.children[k];
+							if (data.ad_info.city.indexOf(areaObj.label) != -1) {
+								this.addIds = cityObj.value + ',' + areaObj.value;
+							}
+						}
+					}
+				}
+				console.log('解析后的地址地址数据:', this.address + '》》》' + this.addIds);
+			});
+		},
+
+		bindPickerBank(event) {
+			this.bankPosition = event.detail.value;
+			this.bankName = this.bankList[this.bankPosition].name;
+		},
+
+		submit() {
+			if (!this.bankUrl) {
+				req.msg('请上传银行卡正面照');
+				return;
+			}
+			if (!this.bankName) {
+				req.msg('请选择开户银行');
+				return;
+			}
+			if (!this.bankNo) {
+				req.msg('请输入银行卡号');
+				return;
+			}
+			if (!this.bankAcctPhone) {
+				req.msg('请输入银行预留手机号');
+				return;
+			}
+			var addIds = this.addIds.split(',');
+			var params = {
+				provCode: addIds[0],
+				areaCode: addIds[1], //商户所在地区
+				address: this.address,
+				bankAcctType: 2,
+				cardName: this.rName,
+				bankCode: this.bankList[this.bankPosition].code,
+				bankUrl: this.bankUrl,
+				cardNo: this.bankNo.replace(' ',''),
+				fileJson: JSON.stringify(this.fileInfo),
+				haveLicenseNo: 2,
+				legalCertName: this.rName,
+				legalCertId: this.rCode,
+				legalCertIdExpires: this.rValidDate,
+				isOpen: 0,
+				legalMp: this.bankAcctPhone
+			};
+			req.postRequest('/api/v3/settlement/create', params, json => {
+				req.msg('添加成功');
+				setTimeout(() => {
+					uni.navigateBack();
+				}, 1500);
+			});
+		}
+	}
+};
+</script>
+
+<style>
+@import './bindCard.css';
+</style>

+ 40 - 0
promote/withdrawal/bindCardCheck/bindCardCheck.css

@@ -0,0 +1,40 @@
+/* bindCard.css */
+page{background: #fff;padding-bottom: 230rpx;}
+.step{padding: 50rpx 0 35rpx;justify-content: center;border-bottom: 20rpx solid #F6F6F6;position: relative;}
+.step::after{content: '';display: block;width: 176rpx;height: 1rpx;background: #C9C9C9;position: absolute;left: 50%;transform: translateX(-50%);top: 93rpx;z-index: 1;}
+.step .li{font-size: 28rpx;color: #999;margin: 0 33rpx;position: relative;z-index: 2;}
+.num{width: 60rpx;height: 60rpx;background: #DCDCDC;border-radius: 50%;margin: 0 auto;font-size: 42rpx;color: #fff;font-weight: bold;text-align: center;line-height: 60rpx;border: 13rpx solid #fff;}
+.s-gou{width: 60rpx;height: 60rpx;border: 13rpx solid #fff;margin: 0 auto;background: #fff;display: none;}
+.step .li.ing,.step .li.end{color: #000000;}
+.step .li.ing .num{background: var(--mina);}
+.step .li.end .num{display: none;}
+.step .li.end .s-gou{display: block;}
+.form{padding: 0 32rpx;}
+.form .li{border-bottom: 1rpx solid #E6E6E6;padding: 35rpx 0;}
+/* .form .li:last-child{border-bottom: none;} */
+.label{width: 162rpx;font-size: 32rpx;color: #333;display: block;box-sizing: border-box;padding-right: 30rpx;}
+.type{font-size: 28rpx;color: #666;margin-right: 30rpx;white-space: nowrap;}
+.type image{width: 40rpx;height: 40rpx;margin-right: 14rpx;}
+.linsence{width: 326rpx;margin: 30rpx auto 0;text-align: center;font-size: 22rpx;color: #666;}
+.linsence image{width: 326rpx;height: 206rpx;border-radius: 15rpx;border: 2rpx solid #e5e5e5;margin: 0 auto 12rpx;}
+.ipt{width: 100%;font-size: 32rpx;color: #333;}
+.placeholder{color: #ccc;}
+.chang{margin-left: 20rpx;font-size: 28rpx;color: #666;}
+.chang image{width: 24rpx;height: 24rpx;margin-right: 10rpx;}
+.textarea{width: 100%;height: 150rpx;font-size: 32rpx;color: #333;}
+.flexs{align-items: flex-start;}
+.location{width: 28rpx;height: 35rpx;padding: 10rpx 25rpx;}
+.next{height: 80rpx;background: var(--mina);border-radius: 40rpx;font-size: 32rpx;color: #fff;text-align: center;line-height: 80rpx;position: fixed;left: 32rpx;right: 32rpx;bottom: 28rpx;z-index: 50;}
+.cards .label{width: auto;}
+.card{justify-content: space-between;}
+.tip{font-size: 28rpx;color: #FC8C20;padding: 22rpx 0;}
+.tip image{width: 27rpx;height: 27rpx;margin-right: 10rpx;}
+.rico{width: 13rpx;height: 23rpx;}
+.form-b{border-top: 20rpx solid #F6F6F6;}
+.send{font-size: 28rpx;color: #FC8C20;}
+.form .li.cards{border-bottom: none;}
+
+.pickers{width: 100%;position: relative;font-size: 32rpx;color: #A2A6AF;}
+.pickers.active{color: #666;}
+.ipt_g{color: #ccc;}
+.pickers .rico,.f-item .rico{position: absolute;right: 0;top: 50%;transform: translateY(-50%);}

+ 125 - 0
promote/withdrawal/bindCardCheck/bindCardCheck.vue

@@ -0,0 +1,125 @@
+<template>
+	<view>
+		<view class="form form-b">
+			<view class="li cards">
+				<label class="label">银行卡</label>
+				<view class="linsence">
+					<image :src="bankUrl ? bankUrl : '../../static/promote/images/card.png'"></image>
+					<view>储蓄银行卡正面照</view>
+				</view>
+			</view>
+			<view class="li dflex">
+				<label class="label">户名</label>
+				<view class="item flex"><input disabled="true" v-model="rName" placeholder="请输入户主名称" placeholder-class="placeholder" class="ipt" /></view>
+			</view>
+			<view class="li ddflex">
+				<label class="label">开户银行</label>
+				<view class="item fflex">
+					<view v-if="bankName" class="ipt">{{ bankName }}</view>
+				</view>
+			</view>
+			<view class="li ddflex">
+				<label class="label">银行卡号</label>
+				<view class="item fflex"><input disabled="true" v-model="bankNo" placeholder-class="placeholder" class="ipt" /></view>
+			</view>
+
+			<view class="li flexs dflex">
+				<label class="label">预留手机</label>
+				<view class="item flex"><input disabled="true" type="number" v-model="bankAcctPhone" maxlength="11" placeholder-class="placeholder" class="ipt" /></view>
+			</view>
+		</view>
+		
+		<!-- <view class="next" @click="submit()">更换银行卡</view> -->
+	</view>
+</template>
+
+<script>
+const app = getApp();
+// const util = require('../../../utils/util.js');
+const req = require('../../../utils/request.js');
+const hfParams = require('../../../utils/hfParams.js');
+var QQMapWX = require('../../../utils/qqmap.js');
+export default {
+	data() {
+		return {
+			fileInfo: {
+				legalPersonidPositivePic: '', //正面
+				egalPersonidOppositePic: '' //反面
+			},
+			//身份信息
+			rName: '',
+			rCode: '',
+			rValidDate: '',
+
+			location: '',
+			addIds: '',
+			address: '', //区域
+			addressDetails: '',
+			bankList: [],
+
+			bankUrl: '', //银行卡图片
+			bankPosition: -1, //下标
+			bankName: '', //银行名字
+			bankAcctName: '', //户名
+			bankNo: '', //卡号
+			bankAcctPhone: '',
+
+			settlementInfo: ''
+		};
+	},
+	onLoad(opt) {
+		this.bankList = hfParams.bank();
+		this.getSettlementInfo();
+	},
+	methods: {
+		getSettlementInfo() {
+			req.getRequest('/api/v3/settlement/info', '', data => {
+				this.settlementInfo = data;
+				if (this.settlementInfo) {
+					this.addIds = this.settlementInfo.provCode + ',' + this.settlementInfo.areaCode;
+					this.address = this.settlementInfo.address;
+					this.rName = this.settlementInfo.cardName;
+					this.bankName = this.getBankName(this.settlementInfo.bankCode);
+					this.bankAcctName = this.settlementInfo.cardName;
+					this.bankUrl = this.settlementInfo.bankUrl;
+					this.bankNo = this.settlementInfo.cardNo.replace(' ', '');
+					this.fileInfo = JSON.parse(this.settlementInfo.fileJson);
+					this.rCode = this.settlementInfo.legalCertId;
+					this.rValidDate = this.settlementInfo.legalCertIdExpires;
+					this.bankAcctPhone = this.settlementInfo.legalMp;
+				}
+			});
+		},
+		
+		getBankName(code) {
+			for (var i = 0; i < this.bankList.length; i++) {
+				var bankObj = this.bankList[i];
+				if (bankObj.code == code) {
+					this.bankPosition = i;
+					return bankObj.name;
+				}
+			}
+		},
+
+		initCheckBank(name) {
+			for (var i = 0; i < this.bankList.length; i++) {
+				var bankObj = this.bankList[i];
+				if (bankObj.name == name) {
+					this.bankPosition = i;
+					this.bankName = name;
+				}
+			}
+		},
+
+		submit() {
+			uni.navigateTo({
+				url: '/promote/withdrawal/bindCard/bindCard?isEnd=true'
+			});
+		}
+	}
+};
+</script>
+
+<style>
+@import './bindCardCheck.css';
+</style>

+ 102 - 0
promote/withdrawal/cardList/cardList.css

@@ -0,0 +1,102 @@
+.card-note{
+	width: 100%;
+	background: #FFEDE5;
+	border-radius: 0rpx 0rpx 0rpx 0rpx;
+	opacity: 1;
+	padding: 26rpx 30rpx;
+	font-size: 24rpx;
+	font-weight: 500;
+	color: #EB5C20;
+}
+.card-note image{
+	width: 48rpx;
+	height: 48rpx;
+	margin-right: 21rpx;
+}
+
+.card-box{
+	margin: 30rpx;
+}
+.ts-title{
+	font-size: 30rpx;
+	font-weight: 500;
+	color: #333333;
+}
+.ts-icon{
+	width: 30rpx;
+	height: 30rpx;
+	margin-left: 21rpx;
+	margin-right: 6rpx;
+}
+.ts-text{
+	font-size: 24rpx;
+	font-weight: 400;
+	color: #A8A5A5;
+}
+.card{
+	width: 690rpx;
+	height: 200rpx;
+	background: #FFFFFF;
+	box-shadow: 0rpx 3rpx 10rpx 1rpx rgba(0,0,0,0.1);
+	border-radius: 10rpx 10rpx 10rpx 10rpx;
+	opacity: 1;
+	margin: auto;
+	margin-top: 30rpx;
+	padding: 52rpx 45rpx;
+	box-sizing: border-box;
+}
+.yhk{
+	width: 96rpx;
+	height: 96rpx;
+	background: #F5F5F5;
+	opacity: 1;
+	border-radius: 100%;
+	padding: 20rpx;
+	box-sizing: border-box;
+	margin-right: 30rpx;
+}
+.yhk image{
+	width: 100%;
+	height: 100%;
+	/* margin: auto; */
+}
+.card-name{
+	line-height: 54rpx;
+	font-size: 36rpx;
+	font-weight: bold;
+	color: #333333;
+}
+.card-text{
+	line-height: 36rpx;
+	font-size: 24rpx;
+	font-weight: 400;
+	color: #A8A5A5;
+	margin-top: 6rpx;
+}
+.card-add{
+	width: 690rpx;
+	height: 200rpx;
+	background: #FFFFFF;
+	border-radius: 10rpx 10rpx 10rpx 10rpx;
+	opacity: 1;
+	margin: auto;
+	margin-top: 30rpx;
+	font-size: 36rpx;
+	font-weight: 400;
+	color: #333333;
+}
+.add-icon{
+	width: 48rpx;
+	height: 48rpx;
+	margin-right: 19rpx;
+}
+.card-state{
+	font-size: 24rpx;
+	font-weight: 400;
+	color: #EB5C20;
+}
+.rico{
+	width: 13rpx;
+	height: 19rpx;
+	margin-left: 10rpx;
+}

+ 90 - 0
promote/withdrawal/cardList/cardList.vue

@@ -0,0 +1,90 @@
+<template>
+	<view>
+		<view class="card-box">
+			<view class="card ddflex">
+				<view class="yhk">
+					<image src="../../../static/pages/images/yhk.png" mode="aspectFit"></image>
+				</view>
+				<view class="fflex">
+					<view class="card-name">建设银行(5541)</view>
+					<view class="card-text">单日上限5万</view>
+				</view>
+				<view class="card-state ddflex">
+					<view>待审核</view>
+					<image class="rico" src="/static/images/n_rico.png"></image>
+				</view>
+			</view>
+			<view class="card-add" @click="toaddCard">
+				<view class="ddflex" style="justify-content: center;height: 100%;">
+					<image class="add-icon" src="../../../static/pages/images/add.png"></image>
+					<view>添加银行卡</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	const app = getApp();
+	const req = require("../../../utils/request.js");
+
+	export default {
+		components: {},
+		props: {},
+		data() {
+			return {
+				settlementInfo: '',
+			}
+		},
+		onLoad(options) {
+
+		},
+		onShow() {
+			this.getSettlementInfo();
+		},
+		methods: {
+			jumpUrl(url) {
+				uni.navigateTo({
+					url:url
+				})
+			},
+			getSettlementInfo() {
+				req.getRequest('/api/v3/settlement/info', '', data => {
+					this.settlementInfo = data;
+				});
+			},
+			//是否可提现
+			isOkState() {
+				var is = false;
+				if (this.settlementInfo && this.settlementInfo.channelList && this.settlementInfo.channelList.length > 0) {
+					var obj = this.settlementInfo.channelList[0];
+					if (obj.state == 1 && obj.settlementState == 1) {
+						is = true;
+					}
+				}
+				return is;
+			},
+			toaddCard() {
+				var url = '/promote/withdrawal/bindCard/bindCard';
+				if (this.settlementInfo) {
+					if (this.isOkState()) {
+						url = '/promote/withdrawal/bindCardCheck/bindCardCheck';
+					} else {
+						url = url + '?isEnd=true';
+					}
+				}
+				uni.navigateTo({
+					url: url
+				});
+			}
+		},
+		mounted() {
+		},
+		onPageScroll: function(e) {
+		}
+	}
+</script>
+
+<style>
+	@import "./cardList.css";
+</style>

+ 25 - 0
promote/withdrawal/income/income.css

@@ -0,0 +1,25 @@
+/* income.css */
+page {background: #f8f8f8;}
+.top {background: #fff;margin-bottom: 20rpx;padding: 35rpx 30rpx;}
+.ke {font-size: 26rpx;color: #999;width: 280rpx;}
+.ke text {display: block;font-size: 48rpx;color: #333;margin-bottom: 8rpx;}
+.datas {font-size: 24rpx;color: #666;flex-wrap: wrap;}
+.datas .li {width: 50%;margin-top: 15rpx;}
+.datas .li text {color: #999;margin-right: 10rpx;}
+.pintuan {background: #fff;border-radius: 12rpx;padding: 0 30rpx;}
+.pintuan:nth-child(1) {margin-top: 15rpx;}
+.pinimgs {width: 77rpx;height: 77rpx;position: relative;padding: 0 20rpx 0 0;}
+.pinimg {display: block;width: 100%;height: 100%;border-radius: 10rpx;}
+.pininfo {flex: 1;}
+.pininfo .proname {font-size: 30rpx;color: #333;}
+/* .pininfo .operate{margin-bottom: 66rpx;} */
+.pininfo .operate .introduce {color: #999999;font-size: 24rpx;margin-top: 18rpx}
+.pintuan .li {border-bottom: 1rpx solid #E4E4E4;}
+.pintuan .li .item {align-items: center;padding: 26rpx 0;}
+.yhq {width: 56rpx;height: 56rpx;}
+.pintuan .li .price {text-align: right;}
+.pintuan .li .price .prc {font-size: 36rpx;color: #FE0419;font-weight: bold;}
+.pintuan .li .price .prc1 {font-size: 42rpx;font-weight: bold;}
+.pintuan .li .price .num, .orderId {font-size: 24rpx;color: #999999;}
+.give {font-size: 24rpx;color: #F32A27;}
+.orderId {margin-left: 15rpx;}

+ 149 - 0
promote/withdrawal/income/income.vue

@@ -0,0 +1,149 @@
+<template>
+	<view>
+		<view class="top ddflex" v-if="levelNo!=1">
+			<view class="ke"><text>{{count.ktx}}</text>可提现</view>
+			<view class="datas ddflex fflex">
+				<view class="li"><text>总收益</text>{{count.profit}}</view>
+				<view class="li"><text>已提现</text>{{count.ytx}}</view>
+				<view class="li"><text>待结算</text>{{count.djs}}</view>
+				<view class="li"><text>已消费</text>{{count.yxf}}</view>
+			</view>
+		</view>
+		<view v-for="(item, index) in pageList" :key="index" class="pintuan">
+			<view class="li">
+				<view class="dflex item">
+					<view class="pinimgs">
+						<image src="/promote/static/promote/images/purchase.png" mode="aspectFit" class="pinimg"
+							v-if="item.logType==3||item.logType==31">
+						</image>
+						<image src="/promote/static/promote/images/recharge.png" mode="aspectFit" class="pinimg"
+							v-if="item.logType==6||item.logType==5||item.logType==32||item.logType==7||item.logType==8||item.logType==30">
+						</image>
+						<image src="/promote/static/promote/images/commission.png" mode="aspectFit" class="pinimg"
+							v-if="item.logType==1"></image>
+						<image src="/promote/static/promote/images/service.png" mode="aspectFit" class="pinimg"
+							v-if="item.logType==2"></image>
+					</view>
+					<view class="pininfo ">
+						<view class="proname">
+							<!-- {{item.source==1?item.note:item.sourceStr}} -->
+							<!-- <text>充值赠送-{{item.changeMoney}}</text> -->
+							<text>{{item.logTypeName}} </text>
+							<text class="orderId" v-if="item.orderId">NO:{{item.orderId}}</text>
+						</view>
+						<view class="operate">
+							<view class="introduce">
+								{{item.createDate}}
+							</view>
+						</view>
+					</view>
+					<view class="price">
+						<view class="give" v-if="item.logType==5">赠送:{{item.giveMenoy}}</view>
+						<view>
+							<text v-if="item.logType!=5"
+								:class="item.changeMoney>0?'prc':'prc1'">{{item.changeMoney>0?'+':''}}{{item.changeMoney}}</text>
+							<text v-if="item.logType==5"
+								:class="item.actuallyMenoy>0?'prc':'prc1'">{{item.actuallyMenoy>0?'+':''}}{{item.actuallyMenoy}}</text>
+						</view>
+						<view><text class="num">余额 {{item.currentMoney?item.currentMoney:'0'}}</text></view>
+						<!-- <view class="btn file" >积分不足</view> -->
+					</view>
+				</view>
+			</view>
+		</view>
+		<view class="nodata" v-if="ishow">
+			<image :src="picUrlss+'empty_dd.png'"></image>
+			<text>暂无明细</text>
+		</view>
+	</view>
+</template>
+
+<script>
+	const route = require("../../../utils/route.js");
+	const req = require("../../../utils/request");
+	export default {
+		data() {
+			return {
+				picUrlss: req.public.picUrls,
+				searchTitle: '',
+				isLoad: true,
+				page: 1,
+				pageList: "",
+				ishow: false,
+				count: {},
+				levelNo:null
+			};
+		},
+		onLoad: function(options) {
+			this.levelNo = options.levelNo
+			this.getProfit();
+		},
+
+		onShow: function() {
+			this.balanceLogs();
+		},
+		onReachBottom: function() {
+			this.page++;
+			this.balanceLogs();
+		},
+		methods: {
+			getProfit(){
+				req.getRequest('/api/rrLogs/profit',{},res=>{
+					this.count = res;
+				})
+			},
+			balanceLogs() {
+				let that = this;
+				let from = {
+					smallType: 1,
+					page: that.page,
+					limit: 10
+				};
+				let isShowLoading = false;
+
+				if (that.page == 1 && !isShowLoading) {
+					console.log('一直在加载');
+					req.loadIng('加载中');
+					isShowLoading = true;
+				}
+
+				if (!that.isLoad) return false;
+				that.isLoad = false;
+				route.balanceLogs(from, res => {
+					if (res && res.length >= 10) that.isLoad = true;
+					if (that.page > 1) res = that.pageList.concat(res);
+					console.log(res);
+					res.map(it => {
+						if (it.orderId) {
+							it.orderId = it.orderId.substring(it.orderId.length - 6);
+						}
+						return it;
+					});
+					this.setData({
+						pageList: res
+					});
+
+					if (this.pageList && this.pageList.length <= 0) {
+						that.setData({
+							ishow: true
+						});
+					} else {
+						that.setData({
+							ishow: false
+						});
+					}
+
+					if (isShowLoading) {
+						uni.hideLoading();
+						isShowLoading = false;
+					}
+				});
+			}
+
+		}
+	};
+</script>
+
+<style>
+	@import "./income.css";
+</style>

+ 37 - 0
promote/withdrawal/index/index.css

@@ -0,0 +1,37 @@
+/* promote/withdrawal/index/index.wxss */
+page{background: #fff;}
+.cont {padding-bottom: 90rpx;padding: 0 30rpx;}
+.top {/* height: 220rpx; */border-radius: 12rpx 12rpx 0 0;}
+.add {color: rgb(87, 87, 87);font-size: 36rpx;text-align: center;line-height: 220rpx;border-radius: 12rpx 12rpx 0 0;}
+.background {width: 100%;position: absolute;background-size: 100% 100%;height: 220rpx;}
+.fn {font-size: 34rpx;font-weight: bold;}
+.icontianjia {display: inline;font-size: 45rpx;}
+.pd50 {padding-top: 50rpx;}
+.txje {font-weight: bold;font-size: 30rpx;}
+.txje navigator {font-size: 24rpx;color: #999;font-weight: normal;}
+.rico {width: 14rpx;height: 23rpx;margin-left: 10rpx;}
+.money {border-bottom: 1rpx solid #E5E5E5;padding-bottom: 20rpx;}
+.money text {line-height: 64rpx;}
+input {font-size: 40rpx;font-weight: bold;padding: 10rpx;}
+.tx {justify-content: space-between;color: var(--mina);}
+.mcolor {color: #999;}
+.placeholder{color: #ccc;}
+.btn {height: 80rpx;text-align: center;line-height: 80rpx;border-radius: 40rpx;background-color: var(--mina);color: #fff;font-size: 32rpx;}
+.mt50 {margin-top: 50rpx;}
+.card {background-color: blueviolet;border-radius: 12rpx 12rpx 0 0;padding: 40rpx 0 0 40rpx;color: #fff;height: 220rpx;}
+.bgblue {background: var(--mina);}
+.name {font-size: 24rpx;}
+.idcard {font-size: 36rpx;}
+
+
+.information{border-bottom: 20rpx solid #f6f6f6;padding: 0 30rpx;}
+.information .li{align-items: flex-start;padding: 30rpx 0;border-bottom: 1rpx solid #E9E9E9;}
+.information .li:last-child{border-bottom: none;}
+.txico{width: 52rpx;height: 41rpx;margin-right: 17rpx;}
+.t-name{font-size: 28rpx;color: #000;}
+.t-bri{font-size: 24rpx;color: #999;margin-top: 8rpx;}
+.t-sta{font-size: 26rpx;color: #666;}
+.t-sta image{width: 31rpx;height: 31rpx;margin-right: 8rpx;}
+.t-sta image.rico{width: 13rpx;height: 22rpx;margin-right: 0;}
+
+.jlbtn{position: fixed;left: 0;right: 0;bottom: 30rpx;font-size: 28rpx;color: #999;text-align: center;}

+ 310 - 0
promote/withdrawal/index/index.vue

@@ -0,0 +1,310 @@
+<template>
+	<!--promote/withdrawal/index/index.wxml-->
+	<view>
+		<view class=" mt20 r10">
+			<block v-if="wechat == 0">
+				<icon class="iconfont icon-tianjia"></icon>
+				<view class="top">
+					<view class="add" v-if="!settlementInfo" @click="toaddCard()">
+						<icon class="icon iconfont icontianjia"></icon>
+						<text>添加银行卡</text>
+					</view>
+					<view class="information" v-else>
+						<view class="li ddflex">
+							<image src="../../static/promote/images/txico1.png" class="txico"></image>
+							<view class="fflex">
+								<view class="t-name ddflex">
+									<view class="fflex">{{ settlementInfo.legalCertName }}</view>
+									<view class="t-sta ddflex">
+										<!-- <image src="../../static/promote/images/txico3.png"></image> -->
+										{{ getStateText(1) }}
+										<image src="../../../static/pages/images/crico1.png" class="rico"></image>
+									</view>
+								</view>
+								<view class="t-bri">{{ styleHintText(settlementInfo.legalCertId) }}</view>
+							</view>
+						</view>
+						<view class="li ddflex" @click="toaddCard()">
+							<image src="../../static/promote/images/txico2.png" class="txico"></image>
+							<view class="fflex">
+								<view class="t-name ddflex">
+									<view class="fflex">{{ getBankName(settlementInfo.bankCode) }}</view>
+									<view class="t-sta ddflex">
+										<!-- <image src="../../static/promote/images/txico3.png"></image> -->
+										{{ getStateText(2) }}
+										<image src="../../../static/pages/images/crico1.png" class="rico"></image>
+									</view>
+								</view>
+								<view class="t-bri" v-if="settlementInfo.cardNo">{{ '尾号' + getbankNo(settlementInfo.cardNo) }}</view>
+							</view>
+						</view>
+					</view>
+				</view>
+			</block>
+			<view class="pdlr20 pd50 bgfff cont">
+				<view class="txje ddflex">
+					<view class="fflex">提现金额</view>
+					<navigator url="/promote/withdrawal/income/income" hover-class="none" class="ddflex">
+						收益账户明细
+						<image src="../../../static/pages/images/crico1.png" class="rico"></image>
+					</navigator>
+				</view>
+				<view class="dflex money pd50">
+					<text>¥</text>
+					<input adjust-position="false" placeholder="输入提现金额" placeholder-class="placeholder" type="number" :value="allmoney" @input="getwithdrawal" />
+				</view>
+				<view class="dflex tx mt20">
+					<text class="mcolor">可提现金额 {{ countMoney.ktx }}元</text>
+					<text @tap="allmoneyFun">全部提现</text>
+				</view>
+				<view class="btn mt50" @tap="withdrawmoney">提现</view>
+				<view class="mt20">
+					<text class="mcolor " v-if="minMoney > 0">最小提现金额 {{ minMoney }}元</text>
+				</view>
+			</view>
+		</view>
+		<navigator url="/promote/withdrawal/record/record" hover-class="none" class="jlbtn">历史提现记录</navigator>
+	</view>
+</template>
+
+<script>
+// promote/withdrawal/index/index.js
+const app = getApp();
+const util = require('../../../utils/util.js');
+const { msg } = require('../../../utils/request.js');
+const req = require('../../../utils/request.js');
+const hfParams = require('../../../utils/hfParams.js');
+
+export default {
+	data() {
+		return {
+			txmoney: 0,
+			wechat: 0,
+			minMoney: '',
+			// card: '',
+			// isShow: false,
+			// Firstcard: '',
+			// Lastcard: '',
+			allmoney: '',
+			countMoney: {},
+			settlementInfo: '',
+			bankList: []
+		};
+	},
+
+	components: {},
+	props: {},
+
+	/**
+	 * 生命周期函数--监听页面加载
+	 */
+	onLoad: function(options) {
+		this.getminMoney();
+		this.bankList = hfParams.bank();
+	},
+
+	/**
+	 * 生命周期函数--监听页面显示
+	 */
+	onShow: function() {
+		this.getMoney(); //分销统计
+		// this.getCard();
+		this.getProfit(); //用户收益统计
+		this.getSettlementInfo();
+	},
+	methods: {
+		getbankNo(bankNo) {
+			if (bankNo) {
+				return bankNo.substring(bankNo.length - 4, bankNo.length);
+			}
+		},
+
+		getBankName(code) {
+			if (code) {
+				for (var i = 0; i < this.bankList.length; i++) {
+					var bankObj = this.bankList[i];
+					if (bankObj.code == code) {
+						return bankObj.name;
+					}
+				}
+			}
+		},
+
+		getStateText(type) {
+			var text = '';
+			if (this.settlementInfo && this.settlementInfo.channelList && this.settlementInfo.channelList.length > 0) {
+				var obj = this.settlementInfo.channelList[0];
+				if (type == 1) {
+					//商户状态 -1 资料完善中 0、审核中 1、审核成功 2、审核失败
+					if (obj.state == -1) {
+						text = '资料完善中';
+					} else if (obj.state == 0) {
+						text = '审核中';
+					} else if (obj.state == 1) {
+						text = '已实名';
+					} else if (obj.state == 2) {
+						text = '审核失败';
+					}
+				}
+
+				if (type == 2) {
+					//结算账户状态 0、未创建 1、正常 2、已删除 3、删除失败 4、创建失败 ,
+					if (obj.settlementState == 0) {
+						if (obj.errMsg) {
+							text = obj.errMsg;
+						} else {
+							text = '审核中';
+						}
+					} else if (obj.settlementState == 1) {
+						text = '已绑定';
+					} else if (obj.settlementState == 4) {
+						text = obj.errMsg;
+					}
+				}
+			}
+			return text;
+		},
+
+		styleHintText(str) {
+			return util.styleHintText(str);
+		},
+
+		//是否可提现
+		isOkState() {
+			var is = false;
+			if (this.settlementInfo && this.settlementInfo.channelList && this.settlementInfo.channelList.length > 0) {
+				var obj = this.settlementInfo.channelList[0];
+				if (obj.state == 1 && obj.settlementState == 1) {
+					is = true;
+				}
+			}
+			return is;
+		},
+
+		getProfit() {
+			req.getRequest('/api/rrLogs/profit', {}, res => {
+				this.countMoney = res;
+			});
+		},
+		getminMoney() {
+			req.g('/api/config', res => {
+				req.setStorage('configRes', JSON.stringify(res)); // 获取最小金额
+
+				if (res.CONFIG_WITHDRAW_Min && res.CONFIG_WITHDRAW_Min >= 1) {
+					this.setData({
+						minMoney: res.CONFIG_WITHDRAW_Min
+					});
+				} else {
+					this.setData({
+						minMoney: 1
+					});
+				} //获取是否开通提现到微信零钱
+
+				if (res.withdraw_wechat_small) {
+					this.wechat = res.withdraw_wechat_small;
+				}
+			});
+		},
+
+		getSettlementInfo() {
+			req.getRequest('/api/v3/settlement/info', '', data => {
+				this.settlementInfo = data;
+			});
+		},
+
+		// // 获取用户银行卡信息
+		// getCard() {
+		// 	req.getRequest('/api/bank', '', data => {
+		// 		console.log(data);
+
+		// 		if (data) {
+		// 			let Firstcard = data.card.substring(0, 4);
+		// 			let Lastcard = data.card.substring(data.card.length - 4, data.card.length);
+		// 			console.log(Firstcard, Lastcard);
+		// 			this.setData({
+		// 				card: data,
+		// 				isShow: false,
+		// 				Firstcard: Firstcard,
+		// 				Lastcard: Lastcard
+		// 			});
+		// 		} else {
+		// 			this.setData({
+		// 				isShow: true
+		// 			});
+		// 		}
+		// 	});
+		// },
+
+		// 获取用户金额
+		getMoney() {
+			req.getRequest('/api/distribution/info', {}, data => {
+				this.setData(data);
+				// console.log(this);
+			});
+		},
+
+		// 提现
+		withdrawmoney() {
+			if (this.wechat == 0) {
+				if (!this.isOkState()) {
+					return req.msg('请先添加正确的银行卡信息');
+				}
+			}
+			if (this.txmoney == 0) {
+				return req.msg('请输入提现金额');
+			} else if (this.txmoney > this.countMoney.ktx) {
+				return req.msg('提现金额不能大于可提金额');
+			} else if (this.txmoney < this.minMoney) {
+				return req.msg('提现金额不能低于最小提现金额');
+			} else if (this.txmoney > 0 && this.txmoney <= this.countMoney.ktx && +this.txmoney >= +this.minMoney) {
+				req.postRequest(
+					'/api/withdraw',
+					{
+						money: this.txmoney
+					},
+					res => {
+						console.log(res);
+						req.msg('您的提现申请已受理,请等待平台打款', success => {
+							setTimeout(function() {
+								uni.navigateBack();
+							}, 1500);
+						});
+					}
+				);
+			}
+		},
+
+		//全部提现
+		allmoneyFun() {
+			this.setData({
+				allmoney: this.countMoney.ktx,
+				txmoney: this.countMoney.ktx
+			});
+		},
+
+		// 获取提现金额
+		getwithdrawal(e) {
+			this.setData({
+				txmoney: e.detail.value
+			});
+		},
+
+		toaddCard() {
+			var url = '/promote/withdrawal/bindCard/bindCard';
+			if (this.settlementInfo) {
+				if (this.isOkState()) {
+					url = '/promote/withdrawal/bindCardCheck/bindCardCheck';
+				} else {
+					url = url + '?isEnd=true';
+				}
+			}
+			uni.navigateTo({
+				url: url
+			});
+		}
+	}
+};
+</script>
+<style>
+@import './index.css';
+</style>

+ 102 - 0
promote/withdrawal/myCard/myCard.css

@@ -0,0 +1,102 @@
+.card-note{
+	width: 100%;
+	background: #FFEDE5;
+	border-radius: 0rpx 0rpx 0rpx 0rpx;
+	opacity: 1;
+	padding: 26rpx 30rpx;
+	font-size: 24rpx;
+	font-weight: 500;
+	color: #EB5C20;
+}
+.card-note image{
+	width: 48rpx;
+	height: 48rpx;
+	margin-right: 21rpx;
+}
+
+.card-box{
+	margin: 30rpx;
+}
+.ts-title{
+	font-size: 30rpx;
+	font-weight: 500;
+	color: #333333;
+}
+.ts-icon{
+	width: 30rpx;
+	height: 30rpx;
+	margin-left: 21rpx;
+	margin-right: 6rpx;
+}
+.ts-text{
+	font-size: 24rpx;
+	font-weight: 400;
+	color: #A8A5A5;
+}
+.card{
+	width: 690rpx;
+	height: 200rpx;
+	background: #FFFFFF;
+	box-shadow: 0rpx 3rpx 10rpx 1rpx rgba(0,0,0,0.1);
+	border-radius: 10rpx 10rpx 10rpx 10rpx;
+	opacity: 1;
+	margin: auto;
+	margin-top: 30rpx;
+	padding: 52rpx 45rpx;
+	box-sizing: border-box;
+}
+.yhk{
+	width: 96rpx;
+	height: 96rpx;
+	background: #F5F5F5;
+	opacity: 1;
+	border-radius: 100%;
+	padding: 20rpx;
+	box-sizing: border-box;
+	margin-right: 30rpx;
+}
+.yhk image{
+	width: 100%;
+	height: 100%;
+	/* margin: auto; */
+}
+.card-name{
+	line-height: 54rpx;
+	font-size: 36rpx;
+	font-weight: bold;
+	color: #333333;
+}
+.card-text{
+	line-height: 36rpx;
+	font-size: 24rpx;
+	font-weight: 400;
+	color: #A8A5A5;
+	margin-top: 6rpx;
+}
+.card-add{
+	width: 690rpx;
+	height: 200rpx;
+	background: #FFFFFF;
+	border-radius: 10rpx 10rpx 10rpx 10rpx;
+	opacity: 1;
+	margin: auto;
+	margin-top: 30rpx;
+	font-size: 36rpx;
+	font-weight: 400;
+	color: #333333;
+}
+.add-icon{
+	width: 48rpx;
+	height: 48rpx;
+	margin-right: 19rpx;
+}
+.card-state{
+	font-size: 24rpx;
+	font-weight: 400;
+	color: #EB5C20;
+}
+.rico{
+	width: 13rpx;
+	height: 19rpx;
+	margin-left: 10rpx;
+}

+ 112 - 0
promote/withdrawal/myCard/myCard.vue

@@ -0,0 +1,112 @@
+<template>
+	<view>
+		<view class="card-note ddflex">
+			<image src="../../../static/pages/images/ts.png"></image>
+			<view>自动提现银行卡: 目前账户可提现银行卡仅支持绑定一张</view>
+		</view>
+		
+		<view class="card-box">
+			<view class="ddflex">
+				<view class="ts-title">自动提现银行卡</view>
+				<image class="ts-icon" src="/static/pages/images/ts2.png"></image>
+				<view class="ts-text">仅限个人账户</view>
+			</view>
+			<view class="card ddflex">
+				<view class="yhk">
+					<image src="../../../static/pages/images/yhk.png" mode="aspectFit"></image>
+				</view>
+				<view class="fflex">
+					<view class="card-name">建设银行(5541)</view>
+					<view class="card-text">单日上限5万</view>
+				</view>
+				<view class="card-state ddflex">
+					<view>待审核</view>
+					<image class="rico" src="/static/images/n_rico.png"></image>
+				</view>
+			</view>
+			<view class="card-add" @click="toaddCard">
+				<view class="ddflex" style="justify-content: center;height: 100%;">
+					<image class="add-icon" src="../../../static/pages/images/add.png"></image>
+					<view>添加银行卡</view>
+				</view>
+			</view>
+		</view>
+		
+		<view class="card-box" style="margin-top: 60rpx;">
+			<view class="ddflex">
+				<view class="ts-title">线下提现银行卡</view>
+			</view>
+			<view class="card-add">
+				<view class="ddflex" style="justify-content: center;height: 100%;">
+					<image class="add-icon" src="../../../static/pages/images/add.png"></image>
+					<view>添加银行卡</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	const app = getApp();
+	const req = require("../../../utils/request.js");
+
+	export default {
+		components: {},
+		props: {},
+		data() {
+			return {
+				settlementInfo: '',
+			}
+		},
+		onLoad(options) {
+
+		},
+		onShow() {
+			this.getSettlementInfo();
+		},
+		methods: {
+			jumpUrl(url) {
+				uni.navigateTo({
+					url:url
+				})
+			},
+			getSettlementInfo() {
+				req.getRequest('/api/v3/settlement/info', '', data => {
+					this.settlementInfo = data;
+				});
+			},
+			//是否可提现
+			isOkState() {
+				var is = false;
+				if (this.settlementInfo && this.settlementInfo.channelList && this.settlementInfo.channelList.length > 0) {
+					var obj = this.settlementInfo.channelList[0];
+					if (obj.state == 1 && obj.settlementState == 1) {
+						is = true;
+					}
+				}
+				return is;
+			},
+			toaddCard() {
+				var url = '/promote/withdrawal/bindCard/bindCard';
+				if (this.settlementInfo) {
+					if (this.isOkState()) {
+						url = '/promote/withdrawal/bindCardCheck/bindCardCheck';
+					} else {
+						url = url + '?isEnd=true';
+					}
+				}
+				uni.navigateTo({
+					url: url
+				});
+			}
+		},
+		mounted() {
+		},
+		onPageScroll: function(e) {
+		}
+	}
+</script>
+
+<style>
+	@import "./myCard.css";
+</style>

+ 16 - 0
promote/withdrawal/record/record.css

@@ -0,0 +1,16 @@
+/* promote/withdrawal/record/record.wxss */
+.shenghe{color: slateblue; height: 30rpx; border: 1rpx solid slateblue;margin-left: 10rpx; border-radius: 18rpx;width: 100rpx;display: inline-block;text-align: center;line-height: 30rpx;font-size: 24rpx;}
+.list{background: #fff;}
+.list .li{border-bottom: 2rpx solid #f4f4f4;padding: 35rpx 35rpx;overflow: hidden;align-items: center;}
+.list .li:last-child{border-bottom: none;}
+.dizhi{overflow: hidden;}
+.dizhi view{overflow: hidden;text-overflow: ellipsis;white-space: nowrap;font-size: 28rpx;color: #333;}
+.dizhi .time{display: block;font-size: 24rpx;color: #999;margin-top: 15rpx;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;}
+.yue{font-size: 30rpx;color: #333;align-items: center;text-align: center;}
+.yue text{display: block;font-size: 24rpx;color: #999;margin-top: 15rpx;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;}
+.money{text-align: center; font-weight: bold;display: inline;}
+.success{background-color:rgb(245, 68, 146);width: 120rpx;height: 30rpx; font-size: 24rpx; display: inline-block; border-radius: 18rpx;text-align: center;line-height: 30rpx; color: #fff;margin-left: 10rpx;}
+.file{
+  width: 120rpx;height: 30rpx; font-size: 24rpx; display: inline-block; border-radius: 18rpx;text-align: center;line-height: 30rpx; color: slateblue;border: 1rpx solid slateblue;margin-left: 10rpx;
+}
+.colorred{color: red;}

+ 111 - 0
promote/withdrawal/record/record.vue

@@ -0,0 +1,111 @@
+<template>
+<view>
+<!--promote/withdrawal/record/record.wxml-->
+<view class="list mt20" v-if="data.length>0">
+	<!-- <block wx:for="{{pageList}}" wx:key="index"> -->
+		<view v-for="(item, index) in data" :key="index" class="li dflex">
+			<view class="dizhi flex">
+				<view>{{item.remark}}<text class="shenghe" v-if="item.state==1">审核中</text><text class="success" v-if="item.state==2">提取成功</text><text class="file" v-if="item.state==3">审核失败</text></view>
+				<text class="reason" v-if="item.state==3">失败原因:<text class="colorred">{{item.reason}}</text></text>
+				<view class="time"><text>{{item.time}}</text></view>
+			</view>
+			<view class="yue">
+      <view class="money">-{{item.money}}</view>
+      <text>余额{{item.balance}}</text>
+			</view>
+		</view>
+	<!-- </block> -->
+</view>
+<view class="nodata" v-if="ishow">
+	<image :src="picUrlss+'empty_dd.png'"></image>
+	<text>暂无提现记录</text>
+</view>
+</view>
+</template>
+
+<script>
+// promote/withdrawal/record/record.js
+const app = getApp();
+const req = require("../../../utils/request.js");
+
+export default {
+  data() {
+    return {
+		picUrlss: req.public.picUrls,
+      isLoad: true,
+      form: {
+        page: 1,
+        limit: 10
+      },
+      data: "",
+      ishow: false
+    };
+  },
+
+  components: {},
+  props: {},
+
+  /**
+   * 生命周期函数--监听页面加载
+   */
+  onLoad: function (options) {},
+
+  /**
+   * 生命周期函数--监听页面显示
+   */
+  onShow: function () {
+    this.getRecord();
+  },
+
+  onReachBottom() {
+    console.log("=============--------------");
+    this.form.page++;
+    this.getRecord();
+  },
+
+  methods: {
+    getRecord() {
+      let isShowLoading = false;
+
+      if (this.form.page == 1 && !isShowLoading) {
+        req.loadIng('加载中');
+        isShowLoading = true;
+      }
+
+      let that = this;
+      console.log("===============", that.isLoad);
+      if (!that.isLoad) return false;
+      console.log("11111111111111111");
+      that.isLoad = false;
+      req.getRequest('/api/withdraw/list', that.form, data => {
+        if (data && data.length >= 10) that.isLoad = true;
+        if (that.form.page > 1) data = that.data.concat(data);
+        this.setData({
+          data: data
+        });
+
+        if (this.data && this.data.length <= 0) {
+          that.setData({
+            ishow: true
+          });
+        } else {
+          that.setData({
+            ishow: false
+          });
+        }
+
+        if (isShowLoading) {
+          uni.hideLoading();
+          isShowLoading = false;
+        }
+
+        console.log(data);
+      });
+    }
+
+  }
+};
+</script>
+<style>
+@import "./record.css";
+</style>

BIN
static/pages/images/add.png


BIN
static/pages/images/duandian.png


BIN
static/pages/images/ts.png


BIN
static/pages/images/ts2.png


BIN
static/pages/images/tx1.png


BIN
static/pages/images/tx2.png


BIN
static/pages/images/user_service10.png


BIN
static/pages/images/user_service9.png


BIN
static/pages/images/yhk.png