Selaa lähdekoodia

Merge branch 'feature_业主工会' of http://192.168.4.246:3000/elab-damai-h5/h5-elab-open-ownerUnion into feature_业主工会

王晓晨 3 vuotta sitten
vanhempi
commit
7a581d94b2
100 muutettua tiedostoa jossa 1852 lisäystä ja 26 poistoa
  1. 4 4
      App.vue
  2. 117 0
      components/subComponents/dmAgreement.vue
  3. 168 0
      components/subComponents/dmDialog.vue
  4. 1 1
      components/subComponents/dmPickerView.vue
  5. 256 0
      components/subComponents/dmWithDrawal.vue
  6. 249 0
      components/subComponents/dmWithDrawalRecord.vue
  7. 1 9
      components/titleHead.vue
  8. 34 0
      pages.json
  9. 99 0
      pages/certificationResultPage/certificationResultPage.vue
  10. 127 0
      pages/developSetting/developSetting.vue
  11. 60 8
      pages/homePage/homePage.vue
  12. 536 0
      pages/ownerCertification/ownerCertification.vue
  13. 15 4
      pages/reportPage/reportPage.vue
  14. 185 0
      pages/shareCardPage/shareCardPage.vue
  15. BIN
      static/icons/10604@2x.png
  16. BIN
      static/icons/alertTime@2x.png
  17. BIN
      static/icons/bangding_3x.png
  18. BIN
      static/icons/complete_failure.png
  19. BIN
      static/icons/complete_success.png
  20. BIN
      static/icons/dask_data_UnSelect.png
  21. BIN
      static/icons/dask_data_select.png
  22. BIN
      static/icons/dask_im_select.png
  23. BIN
      static/icons/dask_im_unSelect.png
  24. BIN
      static/icons/dask_personal_select.png
  25. BIN
      static/icons/dask_personal_unSelect.png
  26. BIN
      static/icons/dask_realTime_select.png
  27. BIN
      static/icons/dask_realTime_unSelect.png
  28. BIN
      static/icons/defaultUserImg@2x.png
  29. BIN
      static/icons/delete_black.png
  30. BIN
      static/icons/diandiandian.png
  31. BIN
      static/icons/empty_bb.png
  32. BIN
      static/icons/exchange-icon.png
  33. BIN
      static/icons/face_header_mask@2x.png
  34. BIN
      static/icons/face_icon_daochu@2x.png
  35. BIN
      static/icons/face_icon_download@2x.png
  36. BIN
      static/icons/face_icon_fangda@2x.png
  37. BIN
      static/icons/face_icon_file@2x.png
  38. BIN
      static/icons/face_icon_name@2x.png
  39. BIN
      static/icons/face_icon_video@2x.png
  40. BIN
      static/icons/fangdaIcon@2x.png
  41. BIN
      static/icons/female.png
  42. BIN
      static/icons/goDetail.png
  43. BIN
      static/icons/goLianming.png
  44. BIN
      static/icons/grab_icon.png
  45. BIN
      static/icons/heibiao.png
  46. BIN
      static/icons/icon-daohang@2x.png
  47. BIN
      static/icons/icon-dingwei@2x.png
  48. BIN
      static/icons/icon_aboutUs.png
  49. BIN
      static/icons/icon_aboutUs_DropDown.png
  50. BIN
      static/icons/icon_add@2x.png
  51. BIN
      static/icons/icon_add_file@2x.png
  52. BIN
      static/icons/icon_address@2x.png
  53. BIN
      static/icons/icon_baidu@2x.png
  54. BIN
      static/icons/icon_bakongImg@2x.png
  55. BIN
      static/icons/icon_baobei_progress@2x.png
  56. BIN
      static/icons/icon_baobeiren@2x.png
  57. BIN
      static/icons/icon_browse@2x.png
  58. BIN
      static/icons/icon_call@2x.png
  59. BIN
      static/icons/icon_canNotUse.png
  60. BIN
      static/icons/icon_canUse.png
  61. BIN
      static/icons/icon_card_nor@2x.png
  62. BIN
      static/icons/icon_card_sel@2x.png
  63. BIN
      static/icons/icon_card_white_address@2x.png
  64. BIN
      static/icons/icon_card_white_point@2x.png
  65. BIN
      static/icons/icon_card_white_qingkuang@2x.png
  66. BIN
      static/icons/icon_card_white_ren@2x.png
  67. BIN
      static/icons/icon_change@2x.png
  68. BIN
      static/icons/icon_chankanpanke@2x.png
  69. BIN
      static/icons/icon_check_nor@2x.png
  70. BIN
      static/icons/icon_check_normal@2x.png
  71. BIN
      static/icons/icon_check_sel@2x.png
  72. BIN
      static/icons/icon_check_selected@2x.png
  73. BIN
      static/icons/icon_chuo_baobeiguanxi@2x.png
  74. BIN
      static/icons/icon_chuo_daofang@2x.png
  75. BIN
      static/icons/icon_chuo_jieyong@2x.png
  76. BIN
      static/icons/icon_chuo_jingjiren@2x.png
  77. BIN
      static/icons/icon_close_full.png
  78. BIN
      static/icons/icon_close_share.png
  79. BIN
      static/icons/icon_copy.png
  80. BIN
      static/icons/icon_credentials@2x.png
  81. BIN
      static/icons/icon_custInfoEmpty.png
  82. BIN
      static/icons/icon_cycle@2x.png
  83. BIN
      static/icons/icon_dateExport@2x.png
  84. BIN
      static/icons/icon_delete.png
  85. BIN
      static/icons/icon_delete11.png
  86. BIN
      static/icons/icon_dispatch@2x.png
  87. BIN
      static/icons/icon_douyin@2x.png
  88. BIN
      static/icons/icon_downLoad.png
  89. BIN
      static/icons/icon_drop@2x.png
  90. BIN
      static/icons/icon_drop_black@2x.png
  91. BIN
      static/icons/icon_dynamic@2x.png
  92. BIN
      static/icons/icon_edit@2x.png
  93. BIN
      static/icons/icon_edit_fff@2x.png
  94. BIN
      static/icons/icon_edit_record@2x.png
  95. BIN
      static/icons/icon_export@2x.png
  96. BIN
      static/icons/icon_finsh_yellow@2x.png
  97. BIN
      static/icons/icon_fle@2x.png
  98. BIN
      static/icons/icon_gandanhao.png
  99. BIN
      static/icons/icon_genjin_addmask@2x.png
  100. 0 0
      static/icons/icon_genjin_piliangbiangeng@2x.png

+ 4 - 4
App.vue

@@ -3,19 +3,18 @@
 		onLaunch: function() {
 			let BASE_URL = "";
 			var env ='';
-			// let res = uni.getStorageSync('env')
-			let res = '1'
+			let res = uni.getStorageSync('env')
 			switch(res){
 			   case '1': //dev
 			     BASE_URL = 'http://192.168.4.212:8866' // 开发环境
 				 env = 'dev'
 				  break;
 			   case '2': //test
-			      BASE_URL = 'http://192.168.4.212:8866'
+			      BASE_URL = 'https://opentest1.elab.ink'
 				  env = 'test'
 				  break;
 			   case '3'://test2
-				  BASE_URL = 'http://gatewaytest1.elab-plus.com'
+				  BASE_URL = 'https://opentest2.elab.ink'
 				  env = 'test2'
 				  break;
 			   case '4'://test3
@@ -60,6 +59,7 @@
 		},
 		globalData: {
 			token: "",
+			userId:"",
 			color1: "#F07423",
 			color2: "#FD8F3C",
 			color3: "#FFC444",

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 117 - 0
components/subComponents/dmAgreement.vue


+ 168 - 0
components/subComponents/dmDialog.vue

@@ -0,0 +1,168 @@
+<template>
+	<view class="pop-view" v-if='visible'>
+		<view class="pop-maskView" :style="{
+		  'background-color': maskBgColor,
+		  zIndex: zIndex - 1
+		}" @tap.stop="handleMaskTap"
+		 @touchmove.stop.prevent="moveHandle">
+		</view>
+		
+		
+		
+		<view :class="['pop-contentView',containerVisible ? 'pop-contentView-show' : '']" :style="{zIndex: zIndex,right:marginSize,left:marginSize}"
+		 @touchmove.stop.prevent="moveHandle">
+			<text class="pop-title" v-if="isShowTitle">{{title}}</text>
+			<image class="pop-close" src="../../static/icons/icon_close@2x.png" v-if="isShowClose" mode="" @click="handleCancel"></image>
+			<slot></slot>
+			<text class="pop-commit" :style="{'background-color':color2}" v-if="isShowConfirm" @click="handleConfirm">确定</text>
+		</view>
+		
+		
+	</view>
+</template>
+<script>
+	export default {
+		props: {
+			title: String,
+			maskColor: {
+				type: String,
+				default: 'rgba(0, 0, 0, 0.3)'
+			},
+			zIndex: {
+				type: Number,
+				default: 999
+			},
+			maskTapHide: {
+				type: Boolean,
+				default: true
+			},
+			isShowTitle: {
+				type: Boolean,
+				default: true
+			},
+			isShowClose: {
+				type: Boolean,
+				default: true
+			},
+			isShowConfirm: {
+				type: Boolean,
+				default: true
+			},
+			isScannerOption:{
+				type:Boolean,
+				default:false
+			},
+			marginSize:{
+				type: String,
+				default: '20rpx'
+			}
+		},
+		data() {
+			return {
+				visible: false,
+				containerVisible: false,
+				maskBgColor: '',
+				selectValue: [0],
+				selIdx: 0,
+				color2:''
+			}
+		},
+		mounted() {
+			let app = getApp();
+			this.globalData = app.globalData;
+			this.color2 = this.globalData.color2;
+		},
+		methods: {
+			show() {
+				this.visible = true
+				setTimeout(() => {
+					this.maskBgColor = this.maskColor
+					this.containerVisible = true
+				}, 20)
+			},
+			hide() {
+				this.maskBgColor = ''
+				this.containerVisible = false
+				this.visible = false
+				this.$emit('close')
+			},
+			handleCancel() {
+				this.hide()
+			},
+			handleConfirm() {
+				this.hide()
+				this.$emit('confirm')
+			},
+			handleMaskTap() {
+				if (this.maskTapHide) {
+					this.hide()
+				}
+			},
+			moveHandle() {},
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+	.pop-view {
+		position: relative;
+
+		.pop-maskView {
+			position: fixed;
+			top: 0;
+			right: 0;
+			left: 0;
+			bottom: 0;
+		
+		}
+
+		.pop-contentView {
+			position: fixed;
+			left: 20rpx;
+			right: 20rpx;
+			top: 50%;
+			transform: translateY(-50%);
+			overflow-y: scroll;
+			background-color: #fff;
+			border-radius: 20rpx;
+			display: flex;
+			flex-direction: column;
+			align-items: center;
+		
+
+			.pop-title {
+				margin-top: 60rpx;
+				font-size: 32rpx;
+				font-family: Verdana, Verdana-Bold;
+				font-weight: 700;
+				text-align: center;
+				color: #333333;
+			}
+
+			.pop-close {
+				position: absolute;
+				top: 64rpx;
+				right: 30rpx;
+				width: 40rpx;
+				height: 40rpx;
+			}
+
+			.pop-commit {
+				margin-bottom: 54rpx;
+				width: 260rpx;
+				height: 84rpx;
+				line-height: 84rpx;
+				border-radius: 42rpx;
+				font-size: 32rpx;
+				font-family: Verdana, Verdana-Regular;
+				font-weight: 400;
+				text-align: center;
+				color: #ffffff;
+			}
+		}
+
+		.pop-contentView-show {
+			
+		}
+	}
+</style>

+ 1 - 1
components/subComponents/dmPickerView.vue

@@ -48,7 +48,7 @@
 						'selIdx': self.selIdx
 					})
 					clearTimeout(timeout)
-				}, 600);
+				}, 100);
 			},
 			handleChange(e) {
 				this.selectValue = e.detail.value

+ 256 - 0
components/subComponents/dmWithDrawal.vue

@@ -0,0 +1,256 @@
+<template>
+	<dmDialog ref='popView' :isShowTitle="true" title="提现" :isShowClose="true" :isShowConfirm="false" marginSize="60rpx">
+		<view class="content">
+			<view class="report_title">
+				<text class="report_title_">提现到:</text>
+				<image class="icon_weichart" src="../../static/icons/icon_weichat.png" mode=""></image>
+				<text class="report_title_money">微信零钱</text>
+			</view>
+			<view class="withDrawal_content">
+				<view class="report_title_">
+					提现金额
+				</view>
+				<view class="report_title_desc">
+					(可提现金额¥{{canCashOut||'0.00'}})
+				</view>
+			</view>
+			<view class="input_money">
+				<text class="money_bz">¥</text>
+				<input class="money" type="digit" v-model="money" @input="onKeyInput" :maxlength="moneyMaxLeng"/>
+				<image class="icon_close" v-if="money" src="../../static/icons/icon_close_full.png" mode="" @click="clearMoney"></image>
+			</view>
+			<view class="line">
+				
+			</view>
+			<text class="notice_red" v-if="Number(money)>Number(canCashOut)">输入金额超过可提现金额</text>
+			<text class="notice" v-else>单笔限额200元</text>
+			<view class="btn">
+				<view class="btn_cancel" @click="cancel">
+					取消
+				</view>
+				
+				<view class="btn_confirm" @click="confirmWithDrawal">
+					确认提现
+				</view>
+			</view>
+		</view>
+		 
+	</dmDialog>
+</template>
+
+<script>
+	import dmDialog from "./dmDialog.vue"
+	export default{
+		props:{
+			canCashOut:[String,Number],
+			
+		},
+		data(){
+			return {
+				moneyMaxLeng:11,
+				money:""
+			}
+		},
+		methods:{
+			show() {
+				this.$refs.popView.show()
+			},
+			knowAction(){
+				this.money = ""
+				this.$refs.popView.hide()
+			},
+			onKeyInput(e){
+				let val = e.target.value;
+				val = val.replace(/[^\d.]/g, ""); //清除"数字"和"."以外的字符
+				val = val.replace(/\.{2,}/g, "."); //只保留第一个. 清除多余的
+	            val = val.replace(/^0+\./g, '0.');
+				val = val.match(/^0+[1-9]+/) ? val = val.replace(/^0+/g, '') : val
+				val = (val.match(/^\d*(\.?\d{0,2})/g)[0]) || ''
+				 if (val.includes(".")) {
+					let numDian = val.toString().split(".")[1].length;
+					if (numDian === 2) {
+					  this.moneyMaxLeng = val.length;
+					}
+				  } else {
+					this.moneyMaxLeng = 8;
+				  }
+				this.money = val
+			},
+			clearMoney(){
+				this.money = ""
+			},
+			cancel(){
+				this.money = ""
+				this.$refs.popView.hide()
+			},
+			async confirmWithDrawal(){
+				if(!this.money||this.money==0){
+					uni.showToast({
+						icon:"none",
+						title:"请输入提现金额"
+					})
+				}
+				let param = {
+					"amount": this.money
+				}
+				const res = await this.$myRequest({
+					url: '/cash/apply',
+					data:param,
+				});
+				if (res && res.data.success) {
+					uni.showToast({
+						icon:"none",
+						title:"提现成功"
+					})
+				}else{
+					uni.showToast({
+						icon:"none",
+						title:res.data.message
+					})
+				}
+			}
+		},
+		mounted() {
+			
+		},
+		components:{
+			dmDialog
+		}
+		
+	}
+</script>
+
+<style scoped lang="scss">
+	.content{
+		width: 100%;
+		height: 490rpx;
+		padding-left: 40rpx;
+		padding-right: 40rpx;
+		box-sizing: border-box;
+	}
+	.report_title{
+		display: flex;
+		align-items: center;
+		margin-top: 52rpx;
+		margin-bottom: 40rpx;
+		
+		.report_title_{
+			font-size: 28rpx;
+			font-family: Verdana, Verdana-Regular;
+			font-weight: 400;
+			text-align: left;
+			color: #262626;
+		}
+		
+		.icon_weichart {
+			width: 34rpx;
+			height: 28rpx;
+			margin-right: 8rpx;
+		}
+		
+		.report_title_money{
+			font-size: 28rpx;
+			font-family: Verdana, Verdana-Regular;
+			font-weight: 400;
+			text-align: left;
+			color: #262626;
+		}
+	}
+	
+	.withDrawal_content{
+		display: flex;
+		align-items: center;
+		.report_title_{
+			font-size: 28rpx;
+			font-family: Verdana, Verdana-Regular;
+			font-weight: 400;
+			text-align: left;
+			color: #262626;
+		}
+		.report_title_desc{
+			font-size: 28rpx;
+			font-family: Verdana, Verdana-Regular;
+			font-weight: 400;
+			text-align: left;
+			color: #b1b1b1;
+		}
+	}
+	.input_money{
+		margin-top: 12rpx;
+		margin-bottom: 19rpx;
+		display: flex;
+		align-items: center;
+		.money_bz{
+			font-size: 52rpx;
+			font-family: DIN Alternate, DIN Alternate-Bold;
+			font-weight: 700;
+			text-align: left;
+			color: #262626;
+		}
+		.money{
+			font-size: 52rpx;
+			font-family: DIN Alternate, DIN Alternate-Bold;
+			font-weight: 700;
+			text-align: left;
+			color: #262626;
+			padding-right: 10rpx;
+		}
+		.icon_close{
+			width: 40rpx;
+			height: 40rpx;
+			min-width: 40rpx;
+		}
+	}
+	.line{
+		height: 1px;
+		background: rgba(127,127,127,0.1);
+	}
+	.notice{
+		font-size: 28rpx;
+		font-family: Verdana, Verdana-Regular;
+		font-weight: 400;
+		text-align: left;
+		color: #b1b1b1;
+		margin-top: 15rpx;
+	}
+	.notice_red{
+		font-size: 28rpx;
+		font-family: Verdana, Verdana-Regular;
+		font-weight: 400;
+		text-align: left;
+		color: rgba(206,21,21,0.8);
+	}
+	.btn{
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+		margin-top: 40rpx;
+		.btn_cancel{
+			width: 250rpx;
+			height: 80rpx;
+			line-height: 80rpx;
+			background: #ffffff;
+			border: 2rpx solid #f07423;
+			border-radius: 42rpx;
+			text-align: center;
+			font-size: 28rpx;
+			font-family: Verdana, Verdana-Bold;
+			font-weight: 700;
+			color: #f07423;
+		}
+		.btn_confirm{
+			width: 250rpx;
+			height: 80rpx;
+			line-height: 80rpx;
+			background: #f07423;
+			border-radius: 40rpx;
+			box-shadow: 0rpx 2rpx 12rpx 0rpx rgba(240,116,35,0.37); 
+			text-align: center;
+			font-size: 28rpx;
+			font-family: Verdana, Verdana-Bold;
+			font-weight: 700;
+			color: #ffffff;
+		}
+	}
+	
+</style>

+ 249 - 0
components/subComponents/dmWithDrawalRecord.vue

@@ -0,0 +1,249 @@
+<template>
+	<dmDialog ref='popView' :isShowTitle="true" title="提现记录" :isShowClose="true" :isShowConfirm="false" >
+		<view class="content">
+			<view class="report_title">
+				<text class="report_title_">累计提现</text>
+				<text class="report_title_money">¥{{alreadyCashOut||'0.00'}}</text>
+			</view>
+			<view class="withDrawal" v-if="recordList.length>0">
+				<view class="withDrawal_title">
+					<view class="title_item">
+						提现金额
+					</view>
+					<view class="title_item">
+						提现时间
+					</view>
+					<view class="title_item">
+						提现结果
+					</view>
+					<view class="title_item">
+						微信到账时间
+					</view>
+				</view>
+				 <scroll-view class="scroll-view"  :scroll-y="true" @scrolltolower="loadMore">
+					 <view class="withDrawal_content" v-for="(item,index) in recordList" :key='item.orderNo'>
+					 	<view class="withDrawal_item">
+					 		¥{{item.amount}}
+					 	</view>
+					 	<view class="withDrawal_item">
+					 		{{item.applyTime}}
+					 	</view>
+					 	<view class="withDrawal_item_success" v-if="item.cashStatus==1">
+					 		成功
+					 	</view>
+					 	<view class="withDrawal_item_failure" v-if="item.cashStatus==2">
+					 		失败
+					 	</view>
+					 	<view class="withDrawal_item_confirmed"  v-if="item.cashStatus==3">
+					 		待确认
+					 	</view>
+					 	<view class="withDrawal_item">
+					 		{{item.cashTime}}
+					 	</view>
+					 </view>
+				 </scroll-view>
+				
+			</view>
+		    <view class="withDrawal_empty" v-else>
+		    	<image class="empty" src="../../static/icons/img_withDrawal_empty.png" mode=""></image>
+				<text class="empty_txt">暂无提现记录</text>
+		    </view>
+			<view class="no_more" v-if="recordList.length>0&&recordList.length==total">
+				没有更多了
+			</view>
+			
+		</view>
+		 
+	</dmDialog>
+</template>
+
+<script>
+	import dmDialog from "./dmDialog.vue"
+	export default{
+		props:{
+			alreadyCashOut:[String,Number]
+		},
+		data(){
+			return {
+				recordList:[],
+				total:0,
+				pageNo:1,
+				pageSize:10,
+			}
+		},
+		methods:{
+			show() {
+				this.$refs.popView.show()
+			},
+			knowAction(){
+				this.$refs.popView.hide()
+			},
+			async getRecordList(){
+				let param = {
+					"pageNo": this.pageNo,
+					"pageSize": this.pageSize
+				}
+				const res = await this.$myRequest({
+					url: '/cash/self',
+					data:param
+				});
+				
+				if(res&&res.data.success){
+					if(this.pageNo==1){
+						this.recordList = [];
+					}
+					let recordList = res.data.pageModel.resultSet||[];
+					this.recordList = this.recordList.concat(recordList);
+					this.total = res.data.pageModel.total||0
+				}
+			},
+			loadMore(){
+				if(this.recordList.length<this.total){
+					this.pageNo++;
+					this.getRecordList();
+				}
+			}
+		},
+		mounted() {
+			this.pageNo=1;
+			this.getRecordList();
+		},
+		components:{
+			dmDialog
+		}
+		
+	}
+</script>
+
+<style scoped lang="scss">
+	.content{
+		width: 100%;
+		min-height: 600rpx;
+		overflow: hidden;
+	}
+	.report_title{
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		margin-top: 52rpx;
+		margin-bottom: 28rpx;
+		
+		.report_title_{
+			font-size: 28rpx;
+			font-family: Verdana, Verdana-Regular;
+			font-weight: 400;
+			text-align: left;
+			color: #b1b1b1;
+		}
+		.report_title_money{
+			font-size: 48rpx;
+			font-family: DIN Alternate, DIN Alternate-Bold;
+			font-weight: 700;
+			text-align: left;
+			color: #fd8f3c;
+			margin-left: 18rpx;
+		}
+	}
+	.scroll-view{
+		width: 100%;
+		height: 400rpx;
+	}
+	.withDrawal{
+		.withDrawal_title{
+			display: flex;
+			justify-content: space-between;
+			padding-right: 30rpx;
+			box-sizing: border-box;
+			margin-bottom: 26rpx;
+			.title_item{
+				font-size: 24rpx;
+				font-family: Verdana, Verdana-Regular;
+				font-weight: 400;
+				text-align: center;
+				color: #b1b1b1;
+				width: 25%;
+			}
+		}
+		
+		.withDrawal_content{
+			display: flex;
+			justify-content: space-between;
+			padding-right: 30rpx;
+			box-sizing: border-box;
+			margin-bottom: 50rpx;
+			.withDrawal_item{
+				width: 25%;
+				font-size: 24rpx;
+				font-family: Verdana, Verdana-Regular;
+				font-weight: 400;
+				text-align: center;
+				color: #2c2c2c;
+			}
+			.withDrawal_item_success{
+				width: 84rpx;
+				height: 44rpx;
+				line-height: 44rpx;
+				background: rgba(40,181,45,0.1);
+				border-radius: 8rpx;
+				font-size: 24rpx;
+				font-family: Verdana, Verdana-Regular;
+				font-weight: 400;
+				text-align: center;
+				color: #28b52d;
+			}
+			
+			.withDrawal_item_failure{
+				width: 84rpx;
+				height: 44rpx;
+				line-height: 44rpx;
+				background: rgba(240,116,35,0.1);
+				border-radius: 8rpx;
+				font-size: 24rpx;
+				font-family: Verdana, Verdana-Regular;
+				font-weight: 400;
+				text-align: center;
+				color: rgba(216,68,68,1);
+			}
+			.withDrawal_item_confirmed{
+				width: 84rpx;
+				height: 44rpx;
+				line-height: 44rpx;
+				background: rgba(255,196,68,0.1);
+				border-radius: 8rpx;
+				font-size: 24rpx;
+				font-family: Verdana, Verdana-Regular;
+				font-weight: 400;
+				text-align: center;
+				color: rgba(255,196,68,1);
+			}
+		}
+		
+	}
+	
+	.withDrawal_empty{
+		display: flex;
+		flex-direction: column;
+		justify-content: center;
+		align-items: center;
+		.empty{
+			width: 284rpx;
+			height: 228rpx;
+		}
+		.empty_txt{
+			font-size: 28rpx;
+			font-family: PingFang SC, PingFang SC-Medium;
+			font-weight: 500;
+			text-align: center;
+			color: #b1b3ba;
+		}
+	}
+	.no_more{
+		opacity: 0.8;
+		font-size: 32rpx;
+		font-family: Verdana, Verdana-Regular;
+		font-weight: 400;
+		text-align: center;
+		color: #818181;
+		margin-bottom: 35rpx;
+	}
+</style>

+ 1 - 9
components/titleHead.vue

@@ -100,15 +100,7 @@
 			// })
 		},
 		methods: {
-			back() {
-				if (this.isTabbarPage) {
-					this.$emit("back", "")
-				} else {
-					uni.navigateBack({
-						delta: 1
-					})
-				}
-			},
+			
 			tograb() {
 				this.$emit('share', '')
 			},

+ 34 - 0
pages.json

@@ -65,6 +65,40 @@
             }
             
         }
+        ,{
+            "path" : "pages/ownerCertification/ownerCertification",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "业主认证",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/certificationResultPage/certificationResultPage",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "业主认证",
+                "enablePullDownRefresh": false
+            }
+            
+        },{
+			"path" : "pages/developSetting/developSetting",
+			"style" :                                                                                    
+			{
+			    "navigationBarTitleText": "设置页面",
+			    "enablePullDownRefresh": false
+			}
+		}
+        ,{
+            "path" : "pages/shareCardPage/shareCardPage",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "",
+                "enablePullDownRefresh": false
+            }
+            
+        }
     ],
 	"globalStyle": {
 		"navigationBarTextStyle": "black",

+ 99 - 0
pages/certificationResultPage/certificationResultPage.vue

@@ -0,0 +1,99 @@
+<template>
+	<view class="renzheng_body">
+		<view class="renzheng" v-if="approvalStatus==0">
+			<text class="renzheng_title">认证审核中…</text>
+			<view class="btn_back" @click="toHome">
+				任务大厅
+			</view>
+			<image class="renzheng_img" src="../../static/icons/icon_renzhenging.png" mode=""></image>
+		</view>
+		<view class="renzheng" v-if="approvalStatus==1">
+			<text class="renzheng_title">审核已通过!</text>
+			<text class="renzheng_desc">可以点击下方“任务大厅”开始做任务啦</text>
+			<view class="btn_back" @click="toHome">
+				任务大厅
+			</view>
+			<image class="renzheng_img" src="../../static/icons/icon_renzheng_pass.png" mode=""></image>
+		</view>
+	</view>
+</template>
+
+<script>
+	let app = getApp();
+	export default {
+		data() {
+			return {
+				approvalStatus:-1
+			};
+		},
+		created() {
+			this.getCertificationResult();
+		},
+		methods:{
+			async getCertificationResult(){
+				let ret = await this.$myRequest({
+					url: "/user/regist/get",
+					data: {
+						"userId": app.globalData.userId,
+					},
+					method:"GET"
+				})
+				if (ret.data.success) {
+					this.approvalStatus = ret.data.single.approvalStatus;//:0待审核1通过2拒绝
+				}
+			},
+			toHome(){
+				uni.reLaunch({
+					url:'../homePage/homePage'
+				})
+			}
+			
+		}
+	}
+</script>
+
+<style lang="scss">
+   .renzheng_body{
+	   .renzheng{
+		   display: flex;
+		   flex-direction: column;
+		   justify-content: center;
+		   align-items: center;
+		   margin-top: 240rpx;
+		   .renzheng_title{
+			   font-size: 40rpx;
+			   font-family: Verdana, Verdana-Bold;
+			   font-weight: 700;
+			   text-align: center;
+			   color: #333333;
+		   }
+		   .renzheng_desc{
+			   font-size: 32rpx;
+			   font-family: Verdana, Verdana-Regular;
+			   font-weight: 400;
+			   text-align: center;
+			   color: #6a6a6a;
+			   margin-top: 40rpx;
+		   }
+		   .btn_back{
+			   width: 410rpx;
+			   height: 80rpx;
+			   margin-top: 96rpx;
+			   line-height: 80rpx;
+			   background: #f07423;
+			   font-size: 28rpx;
+			   font-family: Verdana, Verdana-Bold;
+			   font-weight: 700;
+			   text-align: center;
+			   color: #ffffff;
+			   border-radius: 40rpx;
+			   box-shadow: 0rpx 2rpx 12rpx 0rpx rgba(240,116,35,0.37); 
+		   }
+		   .renzheng_img{
+			   width: 622rpx;
+			   height: 302rpx;
+			   margin-top: 117rpx;
+		   }
+	   }
+   }
+</style>

+ 127 - 0
pages/developSetting/developSetting.vue

@@ -0,0 +1,127 @@
+<template>
+	<view class="setting">
+		 <radio-group @change="checkboxChange" class="checkBox">
+			<label class="uni-list-cell" v-for="item in items" :key="item.value">
+				<view>
+					<radio :value="item.value" :checked="item.checked" />
+				</view>
+				<view>{{item.name}}环境</view>
+			</label>
+		</radio-group>
+		
+		<view @click="confirm" style="width: 600rpx; height: 100rpx;border-radius: 100rpx; background-color: #007AFF;color: #FFFFFF; line-height: 100rpx;display: flex;justify-content: center;margin-top: 50rpx;">确定</view>
+	</view>
+</template>
+
+<script>
+	import {
+	    mapMutations  
+	} from 'vuex'; 
+	export default {
+		data() {
+			return {
+				title: '选择服务',
+				value:"7",
+					themeColor: "",
+				items: [
+					{
+						value: '1',
+						name: 'dev'
+					},
+					{
+						value: '2',
+						name: 'test'
+					},
+					{
+						value: '3',
+						name: 'test2'
+					},
+					{
+						value: '4',
+						name: 'test3'
+					},
+					{
+						value: '5',
+						name: 'test4'
+					},
+					{
+						value: '6',
+						name: 'uat3'
+					},
+					{
+						value: '7',
+						name: 'uat'
+					},
+					{
+						value: '8',
+						name: 'product'
+					}
+				]
+			};
+		},
+		mounted() {
+		  let app = getApp();
+		  this.themeColor = app.globalData.color1;
+		  this.getEnv();	
+		},
+		 methods: {
+			 back(){
+				uni.navigateBack({
+					delta:1
+				});
+			 },
+			getEnv(){
+			   let res = uni.getStorageSync('env')||"8"
+			   for (var i = 0, lenI = this.items.length; i < lenI; ++i) {
+					const item = this.items[i]
+					if(res==item.value){
+						this.value = item.value;
+						this.$set(item,'checked',true)
+					}else{
+						this.$set(item,'checked',false)
+					}
+			   }
+			},
+			
+			checkboxChange: function (e) {
+				let	value = e.detail.value;
+				for (var i = 0, lenI = this.items.length; i < lenI; ++i) {
+					const item = this.items[i]
+					if(value ==item.value){
+						this.value = item.value
+						this.$set(item,'checked',true)
+					}else{
+						this.$set(item,'checked',false)
+					}
+				}
+				
+			},
+			confirm(){
+				uni.setStorageSync("env",this.value);
+				uni.reLaunch({
+					url:'../homePage/homePage'
+				})
+			}
+		},
+		components: {
+			
+		},
+	}
+</script>
+
+<style lang="scss">
+	.setting{
+		display: flex;
+		flex-direction: column;
+		justify-content: center;
+		align-items: center;
+		.checkBox{
+			margin-left: 50rpx;
+			margin-top: 200rpx;
+		}
+	}
+  .uni-list-cell{
+	  display: flex;
+	  margin-bottom: 20rpx;
+  }
+</style>

+ 60 - 8
pages/homePage/homePage.vue

@@ -5,7 +5,7 @@
 			<view class="liveContent">
 				<view class="backDiv"></view>
 				<view class="title">分享好房 · 躺平赚钱</view>
-				<view class="subTitle">新手赚钱帮助 ></view>
+				<view class="subTitle" @click="setEnv">新手赚钱帮助 ></view>
 				<view class="levelDiv" v-if="userInfo.ownersUnion"
 					style="background: url('https://dm.static.elab-plus.com/yezhu/h5/icon_line_back.png') center/100% 100% no-repeat;">
 					<view class="level_top">
@@ -64,7 +64,7 @@
 
 			</view>
 			<view class="content_tab">
-				<view class="tab_item">
+				<view class="tab_item" @click="toYezhu">
 					<image class="icon_tab" src="https://dm.static.elab-plus.com/yezhu/icon_zcyz.png" mode=""></image>
 					<text class="txt_tab">注册业主</text>
 				</view>
@@ -83,7 +83,7 @@
 			</view>
 			<view class="content_tuiguang">
 				<view class="content_tuiguang_city">
-					<text class="city_num">{{userInfo.taskCount}}个</text>
+					<text class="city_num">{{userInfo.taskCount||0}}个</text>
 					<text class="city_num_desc">推广任务</text>
 					<view class="city_list">
 						<text class="city_name">城市</text>
@@ -93,7 +93,7 @@
 
 				</view>
 				<view class="content_tuiguang_money">
-					<text class="money_num">¥{{userInfo.surplusTaskAmount}}</text>
+					<text class="money_num">¥{{userInfo.surplusTaskAmount||0}}</text>
 					<text class="money_num_des">剩余任务金额</text>
 					<view class="money_list">
 						<text class="money_name">类型</text>
@@ -128,7 +128,9 @@
 					<image class="house_img" :src="item.image" mode=""></image>
 					<view class="item_content" @click="goDetailAction(item)">
 						<text class="house_name">{{item.name}}</text>
-						<text class="house_hk" v-if="item.taskCategory">{{(item.taskCategory).join('、')}}</text>
+						<view class="house_hk" v-if="item.taskCategory">
+							<text class="house_hk_" v-for="(item1,index1) in item.taskCategory" :key='index1'>{{item1.category}} ¥{{item1.unitPrice}}/人</text>
+						</view>
 						<text class="house_hk" v-else></text>
 						<view class="house_address">
 							<image src="https://dm.static.elab-plus.com/yezhu/icon_location.png" mode=""></image>
@@ -140,7 +142,7 @@
 						</view>
 						<text class="house_desc">{{item.shareRemark}}</text>
 					</view>
-					<view class="item_share">
+					<view class="item_share" @click="toShareCard(item,2)">
 						<image class="icon_share" src="https://dm.static.elab-plus.com/yezhu/icon_small_share.png"
 							mode=""></image>
 						<text class="icon_text">分享</text>
@@ -164,6 +166,7 @@
 				houseList: [],
 				userId: "",
 				token: "",
+				clickCount:8,
 				userInfo: {
 					"userId": "",
 					"name": null,
@@ -181,6 +184,10 @@
 		},
 		mounted() {
 			let token = this.$cache.get('_token_owner_union');
+			let userId = this.$cache.get('_user_id');
+			if(userId){
+				app.globalData.userId = userId;
+			}
 			if (!token) {
 				this.regist();
 			} else {
@@ -217,6 +224,8 @@
 				});
 				if (ret.data.success) {
 					this.userId = ret.data.single.userId;
+					this.$cache.set("_user_id",this.userId);
+					app.globalData.userId = this.userId;
 					if (ret.data.single.authed == 1) {
 						this.token = ret.data.single.token;
 						this.$cache.set('_token_owner_union', this.token);
@@ -252,7 +261,7 @@
 					method: "GET"
 				});
 				if (ret.data.success) {
-					this.userInfo = ret.data.single || null
+					this.userInfo = ret.data.single || null;
 				}
 			},
 			// 调准项目详情
@@ -272,6 +281,43 @@
 				uni.navigateTo({
 					url: '../revenueRankingPage/revenueRankingPage'
 				})
+			},
+			async toYezhu(){
+				let ret = await this.$myRequest({
+					url: "/user/regist/get",
+					data: {
+						"userId": app.globalData.userId,
+					},
+					method:"GET"
+				})
+				if (ret.data.success) {
+				   let single = ret.data.single||null;//:0待审核1通过2拒绝
+					if(single.approvalStatus==0||single.approvalStatus==1){
+						uni.navigateTo({
+							url: '../certificationResultPage/certificationResultPage'
+						})
+					}else{
+						uni.navigateTo({
+							url: '../ownerCertification/ownerCertification'
+						})
+					}
+				}
+				
+			},
+			setEnv(){
+				if (this.clickCount < 0) {
+					this.clickCount = 8;
+					uni.navigateTo({
+						url:"../developSetting/developSetting"
+					})
+				} else {
+					this.clickCount--;
+				}
+			},
+			toShareCard(item,type){
+				uni.navigateTo({
+					url:'../shareCardPage/shareCardPage?page='+item.xcxPage+"&projectId="+item.projectId+"&type="+type
+				})
 			}
 		},
 		components: {
@@ -752,7 +798,7 @@
 
 				.list_item {
 					width: 100%;
-					height: 280rpx;
+					min-height: 280rpx;
 					border-radius: 16rpx;
 					display: flex;
 					position: relative;
@@ -761,6 +807,7 @@
 					.house_img {
 						width: 200rpx;
 						height: 240rpx;
+						min-width: 200rpx;
 						z-index: 11;
 						margin-top: 20rpx;
 						margin-left: 20rpx;
@@ -772,6 +819,7 @@
 						flex-direction: column;
 						margin-left: 50rpx;
 						z-index: 11;
+						max-width: 360rpx;
 
 						.house_name {
 							font-size: 30rpx;
@@ -789,6 +837,9 @@
 							text-align: left;
 							color: #fd8f3c;
 							margin-top: 8rpx;
+							.house_hk_{
+								margin-right: 10rpx;
+							}
 						}
 
 						.house_address {
@@ -840,6 +891,7 @@
 							font-weight: 400;
 							text-align: left;
 							color: #b1b1b1;
+							margin-bottom: 20rpx;
 						}
 					}
 

+ 536 - 0
pages/ownerCertification/ownerCertification.vue

@@ -0,0 +1,536 @@
+<template>
+	<view class="yezhu_body">
+		<view class="user_info">
+			<view class="user_line">
+				
+			</view>
+			<view class="user_item">
+				<text class="item_name">姓名</text>
+				<view class="item_right">
+					<input placeholder-class="item_right_name_placeholder" class="item_right_name" type="text" :value="name" placeholder="请输入姓名" @blur='inputName' @confirm='inputName'/>
+					<image class="icon_right" src="../../static/icons/icon_right_yezhu.png" mode=""></image>
+				</view>
+			</view>
+			<view class="user_line">
+				
+			</view>
+			<view class="user_item">
+				<text class="item_name">性别</text>
+				<view class="item_right" @click="showGender">
+					<input placeholder-class="item_right_name_placeholder" class="item_right_name" type="text" :value="genderStr" placeholder="请选择" disabled/>
+				<image class="icon_right" src="../../static/icons/icon_right_yezhu.png" mode=""></image>
+				</view>
+			</view>
+			<view class="user_line">
+				
+			</view>
+			<view class="user_item">
+				<text class="item_name">手机号</text>
+				<view class="item_right">
+					<input v-if="mobileOld" placeholder-class="item_right_name_placeholder" type='number' maxlength="11"  class="item_right_name" :value="mobileOld" disabled/>
+					<input v-else placeholder-class="item_right_name_placeholder" type='number' maxlength="11" style="width: calc(100% - 150rpx);" class="item_right_name" :value="mobile" placeholder="请输入" @blur='inputMobile' @confirm='inputMobile'/>
+					<view class="veritify" @click="getVeritify" v-if="!mobileOld">
+						{{veritifyTxt}}
+					</view>
+					<image v-if="mobileOld" class="icon_right" src="../../static/icons/icon_right_yezhu.png" mode=""></image>
+				</view>
+			</view>
+			
+			<view class="user_item" v-if="!mobileOld&&showInputVerifity">
+				<text class="item_name">验证码</text>
+				<view class="item_right">
+					<input placeholder-class="item_right_name_placeholder" class="item_right_name" type="text" :value="verifity" placeholder="请输入" @blur='inputVerifity' @confirm='inputVerifity'/>
+					<image class="icon_right" src="../../static/icons/icon_right_yezhu.png" mode=""></image>
+				</view>
+			</view>
+		</view>
+		<view class="project_ino">
+			<view class="user_line">
+				
+			</view>
+			<view class="user_item">
+				<text class="item_name">认证项目</text>
+				<view class="item_right" @click="chooseHouse">
+					<input placeholder-class="item_right_name_placeholder" class="item_right_name" type="text" :value="houseName" placeholder="请选择" disabled/>
+					<image class="icon_right" src="../../static/icons/icon_right_yezhu.png" mode=""></image>
+				</view>
+			</view>
+			<view class="user_line">
+				
+			</view>
+			<view class="user_item">
+				<text class="item_name">证件类型</text>
+				<view class="item_right" @click="chooseCertificateType">
+					<input placeholder-class="item_right_name_placeholder" class="item_right_name" type="text" :value="certificateTypeStr" placeholder="请选择" disabled/>
+				<image class="icon_right" src="../../static/icons/icon_right_yezhu.png" mode=""></image>
+				</view>
+			</view>
+			<view class="user_line">
+				
+			</view>
+			<view class="user_item">
+				<text class="item_name">证件号</text>
+				<view class="item_right">
+					<input placeholder-class="item_right_name_placeholder" class="item_right_name" type="idcard" :value="certificateNo" placeholder="请输入"  @blur='inputId' @confirm='inputId'/>
+					<image class="icon_right" src="../../static/icons/icon_right_yezhu.png" mode=""></image>
+				</view>
+			</view>
+			<view class="user_line">
+				
+			</view>
+			<view class="user_item">
+				<text class="item_name">填写房号</text>
+				<view class="item_right">
+					<input placeholder-class="item_right_name_placeholder" class="item_right_name" type="text" :value="roomNo" placeholder="请输入" @blur='inputRoomNo' @confirm='inputRoomNo'/>
+					<image class="icon_right" src="../../static/icons/icon_right_yezhu.png" mode=""></image>
+				</view>
+			</view>
+		</view>
+	    <view class="xieyi" @click="showXieyi">
+	    	<image class="icon_selected" v-if="agree" src="../../static/icons/icon_yezhu_selected.png" mode=""></image>
+			<image class="icon_selected" v-else src="../../static/icons/icon_yezhu_unselected.png" mode=""></image>
+			<text class="tongyi">我已阅读并同意</text>
+			<text class="xieyi_text">《入驻协议》</text>
+	    </view>
+		<view class="btn_next" @click="addOrUpdate">
+			下一步
+		</view>
+		<dmAgreeement ref='agreement' @agree='agreeXieyi'></dmAgreeement>
+		<dmPickerView ref="genderPicker" :options="genderList" :value="gender" @confirm="confirm" title="筛选时间维度"></dmPickerView>
+	    <dmPickerView ref="housePicker" :options="houseList" :value="houseId" @confirm="houseConfirm" title="筛选时间维度"></dmPickerView>
+	    <dmPickerView ref="certificateTypePicker" :options="certificateTypeList" :value="certificateType" @confirm="certificateTypeConfirm" title="筛选时间维度"></dmPickerView>
+	       
+	</view>
+</template>
+
+<script>
+	import dmAgreeement from "../../components/subComponents/dmAgreement.vue";
+	import dmPickerView from "../../components/subComponents/dmPickerView.vue";
+	let app = getApp();
+	export default {
+		data() {
+			return {
+				agree:false,
+				veritifyTxt:"获取验证码",
+				genderList:[
+					{
+						title:"男",
+						value:"1"
+					},
+					{
+						title:"女",
+						value:"0"
+					}
+				],
+				gender:"",
+				genderStr:"",
+				houseId:"",
+				houseName:"",
+				houseList:[],
+				certificateType:"1",
+				certificateTypeStr:"",
+				certificateTypeList:[{
+					title:"中国居民大陆身份证",
+					value:"1"
+				},{
+					title:"香港居民身份证",
+					value:"2"
+				},{
+					title:"护照",
+					value:"3"
+				}],
+				mobileOld:"",
+				mobile:"",
+				verifity:"",
+				name:"",
+				certificateNo:"",
+				roomNo:"",
+				timer:null,
+				countdownTimes:120,
+				showInputVerifity:true
+			};
+		},
+		created() {
+			this.queryProjectBox();
+		},
+		methods:{
+			agreeXieyi(){
+				this.agree = true
+			},
+			showXieyi(){
+				this.$refs.agreement.show()
+			},
+			showGender(){
+				this.$refs.genderPicker.show();
+			},
+			confirm(e){
+				this.genderStr = e.selItem.title;
+				this.gender = e.selItem.value;
+			},
+			chooseCertificateType(){
+				this.$refs.certificateTypePicker.show();
+			},
+			certificateTypeConfirm(e){
+				this.certificateTypeStr = e.selItem.title;
+				this.certificateType = e.selItem.value;
+			},
+			async queryProjectBox() {
+				let ret = await this.$myRequest({
+					url: "/project/queryProjectBox",
+					data: {
+						"onlineStatus": "1",
+					}
+				})
+				this.houseList = [];
+				if (ret.data.success) {
+					let houseList = ret.data.list || [];
+					let count = 0;
+					while (count<houseList.length){
+						this.houseList.push({
+							title:houseList[count].name,
+							value:houseList[count].id,
+						})
+						count++;
+					}
+				}
+			},
+			async getVeritify(){
+				if(!this.mobile){
+					uni.showToast({
+						icon:"none",
+						title:"请输入手机号"
+					})
+					return 
+				}
+				var phone = /^[1][3,4,5,6,7,8,9][0-9]{9}$/
+				if (!phone.test(this.mobile)) {
+					uni.showToast({
+						icon:"none",
+						title:"请输入正确的手机号"
+					})
+					return 
+				}
+				this.showInputVerifity = true;
+				if(this.timer&&this.countdownTimes>=0){
+					return
+				}
+				let ret = await this.$myRequest({
+					url: "/sms/sendSmsVerifyCode",
+					data: {
+						"phone": this.mobile,
+					},
+					method:"GET"
+				})
+				this.houseList = [];
+				if (ret.data.success) {
+					this.countdown();
+				}
+			},
+			chooseHouse(){
+				this.$refs.housePicker.show();
+			},
+			houseConfirm(e){
+				this.houseId = e.selItem.value;
+				this.houseName = e.selItem.title
+			},
+			countdown(){
+				this.timer = setInterval(()=>{
+					this.countdownTimes--;
+					this.veritifyTxt = this.countdownTimes+"s"
+					if(this.countdownTimes<=0){
+						clearInterval(this.timer);
+						this.timer = null;
+						this.veritifyTxt = '获取验证码';
+						this.countdownTimes = 120;
+					}
+				},1000)
+			},
+			inputName(e){
+				this.name = e.detail.value
+			},
+			inputMobile(e){
+				this.mobile = e.detail.value
+			},
+			inputVerifity(e){
+				this.verifity = e.detail.value
+			},
+			inputId(e){
+				this.certificateNo = e.detail.value
+			},
+			inputRoomNo(e){
+				this.roomNo = e.detail.value
+			},
+			async addOrUpdate() {
+				if(!this.name){
+					uni.showToast({
+						icon:"none",
+						title:"请输入姓名"
+					})
+					return
+				}
+				if(!this.gender){
+					uni.showToast({
+						icon:"none",
+						title:"请选择性别"
+					})
+					return
+				}
+				if(!this.mobile){
+					uni.showToast({
+						icon:"none",
+						title:"请输入手机号"
+					})
+					return
+				}
+				
+				if(!this.houseId){
+					uni.showToast({
+						icon:"none",
+						title:"请选择认证项目"
+					})
+					return
+				}
+				if(!this.certificateType){
+					uni.showToast({
+						icon:"none",
+						title:"请选择证件类型"
+					})
+					return
+				}
+				if(!this.certificateNo){
+					uni.showToast({
+						icon:"none",
+						title:"请输入证件号"
+					})
+					return
+				}
+				if(!this.roomNo){
+					uni.showToast({
+						icon:"none",
+						title:"请输入房号"
+					})
+					return
+				}
+				if(!this.agree){
+					uni.showToast({
+						icon:"none",
+						title:"请阅读并同意《入住协议》"
+					})
+					return
+				}
+				let ret = await this.$myRequest({
+					url: "/user/regist/addOrUpdate",
+					data: {
+						"agreeState": this.agree?1:0,
+						"captcha":this.verifity,
+						"certificateNo": this.certificateNo,
+						"certificateType": this.certificateType,
+						"phone": this.mobile,
+						"projectId": this.houseId,
+						"roomNo": this.roomNo,
+						"sex": this.gender,
+						"sign": this.sign,
+						"userId": app.globalData.userId,
+						"username": this.name,
+						"phoneFrom":this.mobileOld?1:2
+					}
+				})
+				if (ret.data.success) {
+					uni.navigateTo({
+						url:'../certificationResultPage/certificationResultPage'
+					})
+				}else{
+					uni.showToast({
+						icon:"none",
+						title:ret.data.message
+					})
+				}
+			},
+		},
+		destroyed() {
+			if(null!=this.timer){
+				clearInterval(this.timer);
+				this.timer = null;
+			}
+		},
+		components:{
+			dmAgreeement,
+			dmPickerView
+		}
+	}
+</script>
+
+<style lang="scss">
+.yezhu_body{
+	width: 100%;
+	height: 100vh;
+	position: relative;
+	.user_info{
+		background: #ffffff;
+		.user_item{
+			margin-left: 40rpx;
+			margin-right: 40rpx;
+			height: 98rpx;
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+			.item_name{
+				width: 20%;
+				font-size: 28rpx;
+				font-family: Verdana, Verdana-Regular;
+				font-weight: 400;
+				text-align: left;
+				color: #262626;
+			}
+			.item_right{
+				width: 80%;
+				font-size: 26rpx;
+				font-family: Verdana, Verdana-Regular;
+				font-weight: 400;
+				text-align: right;
+				color: #262626;
+				display: flex;
+				align-items: center;
+				
+				.item_right_name{
+					width: 100%;
+				}
+				.item_right_name_placeholder{
+					font-size: 26rpx;
+					font-family: Verdana, Verdana-Regular;
+					font-weight: 400;
+					color: #b1b1b1;
+				}
+				.icon_right{
+					width: 10rpx;
+					height: 22rpx;
+					margin-left: 19rpx;
+				}
+				
+				.veritify{
+					width: 140rpx;
+					height: 50rpx;
+					margin-left: 10rpx;
+					line-height: 50rpx;
+					background: #ffffff;
+					border: 2rpx solid #f07423;
+					border-radius: 8rpx;
+					font-size: 20rpx;
+					font-family: Verdana, Verdana-Regular;
+					font-weight: 400;
+					text-align: center;
+					color: #f07423;
+				}
+			}
+		}
+		
+		.user_line{
+			margin-left: 40rpx;
+			margin-right: 40rpx;
+			height: 2px;
+			background: #f8f8f8;
+		}
+	}
+	
+	.project_ino{
+		background: #ffffff;
+		margin-top: 20rpx;
+		.user_item{
+			margin-left: 40rpx;
+			margin-right: 40rpx;
+			height: 98rpx;
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+			.item_name{
+				width: 20%;
+				font-size: 28rpx;
+				font-family: Verdana, Verdana-Regular;
+				font-weight: 400;
+				text-align: left;
+				color: #262626;
+			}
+			.item_right{
+				width: 80%;
+				font-size: 26rpx;
+				font-family: Verdana, Verdana-Regular;
+				font-weight: 400;
+				text-align: right;
+				color: #262626;
+				display: flex;
+				align-items: center;
+				
+				.item_right_name{
+					width: 100%;
+				}
+				.item_right_name_placeholder{
+					font-size: 26rpx;
+					font-family: Verdana, Verdana-Regular;
+					font-weight: 400;
+					color: #b1b1b1;
+				}
+				.icon_right{
+					width: 10rpx;
+					height: 22rpx;
+					margin-left: 19rpx;
+				}
+			}
+		}
+		
+		.user_line{
+			margin-left: 40rpx;
+			margin-right: 40rpx;
+			height: 2px;
+			background: #f8f8f8;
+		}
+	}
+    
+	.xieyi{
+		display: flex;
+		width: 100%;
+		justify-content: center;
+		position: absolute;
+		bottom: 162rpx;
+		left: 0;
+		align-items: center;
+		
+		.icon_selected{
+			width: 24rpx;
+			height: 24rpx;
+			margin-right: 20rpx;
+		}
+		.tongyi{
+			font-size: 24rpx;
+			font-family: Verdana, Verdana-Regular;
+			font-weight: 400;
+			color: #999999;
+			display: inline-block;
+		}
+		.xieyi_text{
+			font-size: 24rpx;
+			font-family: Verdana, Verdana-Regular;
+			font-weight: 400;
+			color: #f07423;
+			display: inline-block;
+		}
+	}
+	.btn_next{
+		width: calc(100% - 80rpx);
+		box-sizing: border-box;
+	    margin-left: 40rpx;
+		margin-right: 40rpx;
+		height: 72rpx;
+		line-height: 72rpx;
+		background: #f07423;
+		border-radius: 12rpx;
+		font-size: 32rpx;
+		font-family: Verdana, Verdana-Regular;
+		font-weight: 400;
+		text-align: center;
+		color: #ffffff;
+		position: absolute;
+		bottom: 60rpx;
+		left: 0;
+	}
+}
+</style>

+ 15 - 4
pages/reportPage/reportPage.vue

@@ -9,8 +9,8 @@
 					<!-- <num-run :value="700"></num-run> -->
 				</view>
 				<view class="right">
-					<view class="txRecord" :style="`color: ${color2};`">提现记录></view>
-					<view class="txRequest" :style="`background-color: ${color1};`">提现申请</view>
+					<view class="txRecord" :style="`color: ${color2};`" @click="txRecordList">提现记录></view>
+					<view class="txRequest" :style="`background-color: ${color1};`" @click="requestWithDrawal">提现申请</view>
 				</view>
 			</view>
 			<view class="sectionB">
@@ -92,6 +92,8 @@
 		</view>
 		
 		<dm-calendar-picker-view ref='calendarPickerView' @confirmSelDate='confirmSelDate'></dm-calendar-picker-view>
+	    <dmWithDrawalRecord ref='withDrawalRecord'></dmWithDrawalRecord>
+		<dmWithDrawal ref='withDrawal' :canCashOut='headerInfo.canCashOut'></dmWithDrawal>
 	</view>
 
 </template>
@@ -100,7 +102,8 @@
 	import numRun from '../../components/numRun/numRun.vue'
 	import dmCalendarPickerView from '../../components/subComponents/dmCalendarPickerView.vue'
 	import moment from '../../static/moment.min.js'
-	
+	import dmWithDrawalRecord from '../../components/subComponents/dmWithDrawalRecord.vue' 
+	import dmWithDrawal from '../../components/subComponents/dmWithDrawal.vue'
 	let app = getApp();
 	export default {
 		data() {
@@ -268,6 +271,12 @@
 				uni.navigateBack({
 					delta: 1
 				})
+			},
+			txRecordList(){
+				this.$refs.withDrawalRecord.show();
+			},
+			requestWithDrawal(){
+				this.$refs.withDrawal.show()
 			}
 		},
 		
@@ -288,7 +297,9 @@
 		},
 		components: {
 			numRun,
-			dmCalendarPickerView
+			dmCalendarPickerView,
+			dmWithDrawalRecord,
+			dmWithDrawal
 		}
 	}
 </script>

+ 185 - 0
pages/shareCardPage/shareCardPage.vue

@@ -0,0 +1,185 @@
+<template>
+	<view class="share_body">
+		<view class="share_card_info">
+			<view class="share_title">
+				<image class="title" src="../../static/icons/icon_share_title.png" mode=""></image>
+				<image @click="back" class="close" src="../../static/icons/icon_close_share.png" mode=""></image>
+			</view>
+			<view class="share_desc">
+				{{shareRemark}}
+			</view>
+			<view class="share_copy" @click="copy">
+				<image class="icon_share_copy" src="../../static/icons/icon_copy.png" mode=""></image>
+				<text class="share_txt">复制发圈</text>
+			</view>
+			<image class="shareCard" :src="shareUrl" mode=""></image>
+			
+		</view>
+		
+		<view class="share_copy_txt">
+			长按图片保存至本地
+		</view>
+		
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				shareUrl:"",
+				type:"",
+				projectId:"",
+				page:"",
+				shareRemark:"",
+			};
+		},
+		created() {
+			
+		},
+		onLoad(param) {
+			this.page = param.page;
+			this.projectId =param.projectId;
+			this.type=param.type;
+			this.getShareCard();
+			this.queryProjectByH5();
+		},
+		methods:{
+			async  getShareCard(){
+				let ret = await this.$myRequest({
+					url: "/share/shareCard",
+					data: {
+						"page": this.page,
+						"projectId": this.projectId,
+						"type":this.type
+					}
+				})
+				if (ret.data.success) {
+					 this.shareUrl = ret.data.single
+				}
+			},
+			async queryProjectByH5(){
+				let ret = await this.$myRequest({
+					url: "/project/queryProjectByH5",
+					data: {
+						"projectId": this.projectId,
+					}
+				})
+				if (ret.data.success) {
+					this.shareRemark =  ret.data.single.shareRemark||''
+				}
+			},
+			back(){
+				uni.reLaunch({
+					url:"../homePage/homePage"
+				})
+			},
+			copy(){
+				uni.setClipboardData({
+					data:this.shareRemark,
+					success() {
+						uni.showToast({
+							icon:"none",
+							title:"复制成功"
+						})
+					}
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.share_body{
+		display: flex;
+		flex-direction: column;
+		justify-content: center;
+		align-items: center;
+		width: 100%;
+		background: #4e4e4e;
+		height: 100vh;
+	}
+	.share_card_info{
+		width: 550rpx;
+		display: flex;
+		flex-direction: column;
+		align-items: center;
+		background-color: #FFFFFF;
+		border-radius: 10rpx;
+		
+		.share_title{
+			width: 100%;
+			display: flex;
+			justify-content: center;
+			align-items: center;
+			margin-top: 30rpx;
+			position: relative;
+			.title{
+				width: 292rpx;
+				height: 34rpx;
+			}
+			.close{
+				width: 24rpx;
+				height: 24rpx;
+				position: absolute;
+				right: 20rpx;
+				top: 5rpx;
+			}
+		}
+		
+		.share_desc{
+			width: calc(100% - 60rpx);
+			font-size: 24rpx;
+			font-family: Verdana, Verdana-Regular;
+			font-weight: 400;
+			text-align: left;
+			color: #7f7f7f;
+			margin-top: 22rpx;
+			box-sizing: border-box;
+			text-overflow: -o-ellipsis-lastline;
+			overflow: hidden;
+			text-overflow: ellipsis;
+			display: -webkit-box;
+			-webkit-line-clamp: 2;
+			line-clamp: 2;
+			-webkit-box-orient: vertical;
+		}
+		
+		.share_copy{
+			display: flex;
+			justify-content: center;
+			align-items: center;
+			margin-top: 12rpx;
+			.icon_share_copy{
+				width: 24rpx;
+				height: 24rpx;
+			}
+			.share_txt{
+				font-size: 24rpx;
+				font-family: Verdana, Verdana-Regular;
+				font-weight: 400;
+				text-align: left;
+				color: #2c2c2c;
+				margin-left: 6rpx;
+			}
+		}
+		
+		.shareCard{
+			width: 490rpx;
+			height: 872rpx;
+			margin-top: 10rpx;
+			margin-bottom: 30rpx;
+		}
+		
+	}
+	
+	.share_copy_txt{
+		font-size: 28rpx;
+		font-family: Verdana, Verdana-Regular;
+		font-weight: 400;
+		text-align: center;
+		color: #ffffff;
+		margin-top: 40rpx;
+	}
+
+</style>

BIN
static/icons/10604@2x.png


BIN
static/icons/alertTime@2x.png


BIN
static/icons/bangding_3x.png


BIN
static/icons/complete_failure.png


BIN
static/icons/complete_success.png


BIN
static/icons/dask_data_UnSelect.png


BIN
static/icons/dask_data_select.png


BIN
static/icons/dask_im_select.png


BIN
static/icons/dask_im_unSelect.png


BIN
static/icons/dask_personal_select.png


BIN
static/icons/dask_personal_unSelect.png


BIN
static/icons/dask_realTime_select.png


BIN
static/icons/dask_realTime_unSelect.png


BIN
static/icons/defaultUserImg@2x.png


BIN
static/icons/delete_black.png


BIN
static/icons/diandiandian.png


BIN
static/icons/empty_bb.png


BIN
static/icons/exchange-icon.png


BIN
static/icons/face_header_mask@2x.png


BIN
static/icons/face_icon_daochu@2x.png


BIN
static/icons/face_icon_download@2x.png


BIN
static/icons/face_icon_fangda@2x.png


BIN
static/icons/face_icon_file@2x.png


BIN
static/icons/face_icon_name@2x.png


BIN
static/icons/face_icon_video@2x.png


BIN
static/icons/fangdaIcon@2x.png


BIN
static/icons/female.png


BIN
static/icons/goDetail.png


BIN
static/icons/goLianming.png


BIN
static/icons/grab_icon.png


BIN
static/icons/heibiao.png


BIN
static/icons/icon-daohang@2x.png


BIN
static/icons/icon-dingwei@2x.png


BIN
static/icons/icon_aboutUs.png


BIN
static/icons/icon_aboutUs_DropDown.png


BIN
static/icons/icon_add@2x.png


BIN
static/icons/icon_add_file@2x.png


BIN
static/icons/icon_address@2x.png


BIN
static/icons/icon_baidu@2x.png


BIN
static/icons/icon_bakongImg@2x.png


BIN
static/icons/icon_baobei_progress@2x.png


BIN
static/icons/icon_baobeiren@2x.png


BIN
static/icons/icon_browse@2x.png


BIN
static/icons/icon_call@2x.png


BIN
static/icons/icon_canNotUse.png


BIN
static/icons/icon_canUse.png


BIN
static/icons/icon_card_nor@2x.png


BIN
static/icons/icon_card_sel@2x.png


BIN
static/icons/icon_card_white_address@2x.png


BIN
static/icons/icon_card_white_point@2x.png


BIN
static/icons/icon_card_white_qingkuang@2x.png


BIN
static/icons/icon_card_white_ren@2x.png


BIN
static/icons/icon_change@2x.png


BIN
static/icons/icon_chankanpanke@2x.png


BIN
static/icons/icon_check_nor@2x.png


BIN
static/icons/icon_check_normal@2x.png


BIN
static/icons/icon_check_sel@2x.png


BIN
static/icons/icon_check_selected@2x.png


BIN
static/icons/icon_chuo_baobeiguanxi@2x.png


BIN
static/icons/icon_chuo_daofang@2x.png


BIN
static/icons/icon_chuo_jieyong@2x.png


BIN
static/icons/icon_chuo_jingjiren@2x.png


BIN
static/icons/icon_close_full.png


BIN
static/icons/icon_close_share.png


BIN
static/icons/icon_copy.png


BIN
static/icons/icon_credentials@2x.png


BIN
static/icons/icon_custInfoEmpty.png


BIN
static/icons/icon_cycle@2x.png


BIN
static/icons/icon_dateExport@2x.png


BIN
static/icons/icon_delete.png


BIN
static/icons/icon_delete11.png


BIN
static/icons/icon_dispatch@2x.png


BIN
static/icons/icon_douyin@2x.png


BIN
static/icons/icon_downLoad.png


BIN
static/icons/icon_drop@2x.png


BIN
static/icons/icon_drop_black@2x.png


BIN
static/icons/icon_dynamic@2x.png


BIN
static/icons/icon_edit@2x.png


BIN
static/icons/icon_edit_fff@2x.png


BIN
static/icons/icon_edit_record@2x.png


BIN
static/icons/icon_export@2x.png


BIN
static/icons/icon_finsh_yellow@2x.png


BIN
static/icons/icon_fle@2x.png


BIN
static/icons/icon_gandanhao.png


BIN
static/icons/icon_genjin_addmask@2x.png


+ 0 - 0
static/icons/icon_genjin_piliangbiangeng@2x.png


Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä