zhengjinyi 5 年之前
父節點
當前提交
c51556b62c

+ 13 - 1
common/css/iconfont.scss

@@ -4,7 +4,7 @@
 	font-family: iconfont;
 	font-weight: normal;
 	font-style: normal;
-	src: url('https://at.alicdn.com/t/font_1519039_c3ktzj6f83l.ttf') format('truetype');
+	src: url('https://at.alicdn.com/t/font_1519039_hxmzf2vrwg.ttf') format('truetype');
 }
 .iconfont {
 	font-family: "iconfont" !important;
@@ -13,6 +13,18 @@
 	-webkit-font-smoothing: antialiased;
 	-moz-osx-font-smoothing: grayscale;
 }
+.icon-shenhebutongguo:before {
+  content: "\e624";
+}
+
+.icon-shenhetongguo:before {
+  content: "\e626";
+}
+
+.icon-lishidingdan:before {
+  content: "\e627";
+}
+
 .icon-shouyeyong:before {
   content: "\e65e";
 }

+ 163 - 0
market/pages/club/club-list.vue

@@ -0,0 +1,163 @@
+<template>
+	<view class="container club clearfix">
+		
+	</view>
+</template>
+
+<script>
+	import authorize from '@/common/config/authorize.js'	
+	import tuiLoadmore from "@/components/tui-components/loadmore/loadmore"
+	import tuiNomore from "@/components/tui-components/nomore/nomore"
+	import { queryclubList, deleteclub , updateCode } from "@/api/operator.js"
+	export default {
+		components:{
+			tuiLoadmore,
+			tuiNomore,
+		},
+		data() {
+			return {
+				clubID:'',
+				clubName:'',
+				clubImage:'',
+				linkman:'',
+				clubMobile:'',
+				isEmpty:false,
+				nomoreText: '上拉显示更多',
+				userID:'',
+				pageNum:1,
+				pageSize:10,
+				hasNextPage:false,
+				loadding: false,
+				pullUpOn: true,
+				pullFlag: true,
+				allowDataStatus:true,
+				wrapperHeight:'100%',
+				scrollHeight:'',
+				deleteAddressId:'',
+				currPage:'',//当前页面
+				prevPage:'',//上一个页面
+				clubList:[],
+				isIphoneX:this.$store.state.isIphoneX,
+			}
+		},
+		onLoad(){				
+			this.setScrollHeight();
+		},
+		methods: {
+			setScrollHeight() {
+				// 窗口高度 - 底部距离
+				setTimeout(()=> {
+					const query = wx.createSelectorQuery().in(this);
+					query.selectAll('.add-btn').boundingClientRect();
+					query.exec(res => {
+						if(res[0][0]){
+							let winHeight = this.$api.getWindowHeight(),
+								eleTop = res[0][0].top - 1;
+								this.scrollHeight =  eleTop;
+						}
+					})
+				}, 500)
+			},
+			searchOpertor(){
+				this.pageNum=1
+				this.initclubList()
+			},
+			initclubList(){	
+				let params = {clubID:this.clubID,pageNum:1,pageSize:this.pageSize,linkName:this.linkman,mobile:this.clubMobile}
+				queryclubList(params).then(response =>{
+					let responseData = response.data
+					if(responseData.results&&responseData.results.length > 0){
+						this.isEmpty = false
+						this.hasNextPage = response.data.hasNextPage
+						this.clubList =responseData.results
+						this.pullFlag = false;
+						setTimeout(()=>{this.pullFlag = true;},500)
+						if(this.hasNextPage){
+							this.pullUpOn = false
+							this.nomoreText = '上拉显示更多'
+						}else{
+							this.pullUpOn = true
+							this.loadding = false
+							this.nomoreText = '已至底部'
+						}
+					}else{
+						this.isEmpty = true
+					}
+				}).catch(response =>{
+					this.$util.msg(response.msg,2000)
+				})
+			},	
+			getOnReachBottomData(){
+				this.pageNum+=1
+				let params = {pageNum:this.pageNum,pageSize:this.pageSize,linkName:this.linkman,mobile:this.clubMobile}
+				queryclubList(params).then(response =>{
+					let responseData = response.data
+					if(responseData.results&&responseData.results.length > 0){
+						this.hasNextPage = response.data.hasNextPage
+						this.clubList = this.clubList.concat(responseData.results) 
+						this.pullFlag = false;// 防上拉暴滑
+						setTimeout(()=>{this.pullFlag = true;},500)
+						if(this.hasNextPage){
+							this.pullUpOn = false
+							this.nomoreText = '上拉显示更多'
+						}else{
+							this.pullUpOn = false
+							this.loadding = false
+							this.nomoreText = '已至底部'
+						}
+					}
+				}).catch(response =>{
+					this.$util.msg(response.msg,2000)
+				})
+			},
+			rexpStautsColor(status) {
+			  let textColor = ''
+			  switch (status) {
+				case '1':
+				  textColor = '#55BB00'
+				  break
+				case '2':
+				  textColor = '#0056BB'
+				  break
+				case '3':
+				  textColor = '#BB0000'
+				  break
+			  }
+			  return textColor
+			},  
+			iconStautsColor(status) {
+			  let textColor = ''
+			  if(status == '2'){
+				   textColor = '#09BB07'
+			  }else{
+				   textColor = '#DDDDDD'
+			  }
+			  return textColor
+			},
+		},
+		onReachBottom() {
+			if(this.hasNextPage){
+				this.loadding = true
+				this.pullUpOn = true
+				this.getOnReachBottomData()
+			}	
+		},
+		onShow() {
+			this.$api.getCommonStorage('clubInfo').then(response =>{
+
+			})
+		}
+	}
+</script>
+
+<style lang='scss'>
+	page {
+		height: auto;
+	}
+	page,.container{
+		/* padding-bottom: 120upx; */
+		background: #F7F7F7;
+		border-top: 1px solid #EBEBEB;
+	}
+</style>
+

+ 366 - 0
market/pages/club/list.vue

@@ -0,0 +1,366 @@
+<template>
+	<view class="container club clearfix" :style="{paddingBottom:isIphoneX?'140rpx':'98rpx'}">
+		<view class="club-top clearfix">
+			<view class="club-search">
+				<view class="search-wrap">
+					<view class="search-from name">
+						<input class="input" type="text" v-model="linkman" placeholder="请输入姓名" maxlength="6"/>
+					</view>
+					<view class="search-from search">
+						<button class="search-btn" type="default" @click.stop="searchOpertor">搜索</button>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view class="club-main">
+			<view v-if="isEmpty" class="empty-container">
+				<view class="txt">暂无运营人员</view>
+			</view>
+			<view v-else class="club-list">
+				<scroll-view scroll-y="true" >
+					<view class="list" v-for="(item, index) in clubList" :key="index" @click.stop="showclubModel(item)">
+						<view class="list-left">
+							<view class="list-head"><image :src="item.headimgurl ? item.headimgurl : '../../../static/temp/logo@3x.png'" mode=""></image></view>
+							<view class="list-tel">
+								<text class="txt">{{item.linkName}}</text>
+								<text class="txt">{{item.mobile}}</text>
+							</view>
+						</view>
+						<view class="list-opea">
+							<view class="opea-type">
+								<view class="opea-type-cell" v-if="item.effectiveFlag != null">
+									<text class="iconfont icon-iconfontweixin" :style="{color: iconStautsColor(item.status)}"></text>
+									<text :style="{color: rexpStautsColor(item.effectiveFlag)}">{{ rexpStautsText(item.effectiveFlag) }}</text>
+								</view>
+								<view class="opea-type-cell none" v-else>
+									<text>- -</text>
+								</view>
+							</view>
+							<view class="opea-del">
+								<view class="opea-type-cell" @click.stop="deleteclub(item.id)">
+									<text class="iconfont icon-shanchu"></text>
+									<text>删除</text>
+								</view>
+							</view>
+						</view>
+					</view>
+					<!--加载loadding-->
+					<tui-loadmore :visible="loadding" :index="3" type="black"></tui-loadmore>
+					<tui-nomore :visible="!pullUpOn" bgcolor="#F7F7F7" :text='nomoreText'></tui-nomore>
+					<!--加载loadding-->
+				</scroll-view>
+			</view>
+		</view>
+		<view class="tabBar" :style="{height:isIphoneX?'140rpx':'98rpx'}">
+			<view class="tabBar_list" :style="{paddingBottom:isIphoneX?'40rpx':''}">
+				<view  class="tabBar_item" v-for="(item,index) in  tabBarList" 
+					   :key="index" 
+					   :class="{ 'current' : tabCurrentIndex === index}"  
+					   @click="tabClick(index)" >
+					<text class="iconfont" :class="item.icon"></text>
+					<view class="tabBar_name">{{item.name}}</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import authorize from '@/common/config/authorize.js'	
+	import tuiLoadmore from "@/components/tui-components/loadmore/loadmore"
+	import tuiNomore from "@/components/tui-components/nomore/nomore"
+	import { queryclubList, deleteclub , updateCode } from "@/api/operator.js"
+	export default {
+		components:{
+			tuiLoadmore,
+			tuiNomore,
+		},
+		data() {
+			return {
+				clubID:'',
+				clubName:'',
+				clubImage:'',
+				linkman:'',
+				clubMobile:'',
+				isEmpty:false,
+				nomoreText: '上拉显示更多',
+				userID:'',
+				pageNum:1,
+				pageSize:10,
+				hasNextPage:false,
+				loadding: false,
+				pullUpOn: true,
+				pullFlag: true,
+				allowDataStatus:true,
+				wrapperHeight:'100%',
+				scrollHeight:'',
+				deleteAddressId:'',
+				currPage:'',//当前页面
+				prevPage:'',//上一个页面
+				tabBarList:[
+					{name:'待审核',icon:'icon-lishidingdan'},
+					{name:'审核未通过',icon:'icon-shenhebutongguo'},
+					{name:'已上线',icon:'icon-shenhetongguo'}
+				],
+				tabCurrentIndex:0,
+				clubList:[],
+				isIphoneX:this.$store.state.isIphoneX,
+				show_index:0,//控制显示那个组件
+			}
+		},
+		onLoad(){				
+			this.setScrollHeight();
+		},
+		methods: {
+			setScrollHeight() {
+				// 窗口高度 - 底部距离
+				setTimeout(()=> {
+					const query = wx.createSelectorQuery().in(this);
+					query.selectAll('.add-btn').boundingClientRect();
+					query.exec(res => {
+						if(res[0][0]){
+							let winHeight = this.$api.getWindowHeight(),
+								eleTop = res[0][0].top - 1;
+								this.scrollHeight =  eleTop;
+						}
+					})
+				}, 500)
+			},
+			searchOpertor(){
+				this.pageNum=1
+				this.initclubList()
+			},
+			initclubList(){	
+				let params = {clubID:this.clubID,pageNum:1,pageSize:this.pageSize,linkName:this.linkman,mobile:this.clubMobile}
+				queryclubList(params).then(response =>{
+					let responseData = response.data
+					if(responseData.results&&responseData.results.length > 0){
+						this.isEmpty = false
+						this.hasNextPage = response.data.hasNextPage
+						this.clubList =responseData.results
+						this.pullFlag = false;
+						setTimeout(()=>{this.pullFlag = true;},500)
+						if(this.hasNextPage){
+							this.pullUpOn = false
+							this.nomoreText = '上拉显示更多'
+						}else{
+							this.pullUpOn = true
+							this.loadding = false
+							this.nomoreText = '已至底部'
+						}
+					}else{
+						this.isEmpty = true
+					}
+				}).catch(response =>{
+					this.$util.msg(response.msg,2000)
+				})
+			},	
+			getOnReachBottomData(){
+				this.pageNum+=1
+				let params = {pageNum:this.pageNum,pageSize:this.pageSize,linkName:this.linkman,mobile:this.clubMobile}
+				queryclubList(params).then(response =>{
+					let responseData = response.data
+					if(responseData.results&&responseData.results.length > 0){
+						this.hasNextPage = response.data.hasNextPage
+						this.clubList = this.clubList.concat(responseData.results) 
+						this.pullFlag = false;// 防上拉暴滑
+						setTimeout(()=>{this.pullFlag = true;},500)
+						if(this.hasNextPage){
+							this.pullUpOn = false
+							this.nomoreText = '上拉显示更多'
+						}else{
+							this.pullUpOn = false
+							this.loadding = false
+							this.nomoreText = '已至底部'
+						}
+					}
+				}).catch(response =>{
+					this.$util.msg(response.msg,2000)
+				})
+			},
+			rexpStautsColor(status) {
+			  let textColor = ''
+			  switch (status) {
+				case '1':
+				  textColor = '#55BB00'
+				  break
+				case '2':
+				  textColor = '#0056BB'
+				  break
+				case '3':
+				  textColor = '#BB0000'
+				  break
+			  }
+			  return textColor
+			},  
+			iconStautsColor(status) {
+			  let textColor = ''
+			  if(status == '2'){
+				   textColor = '#09BB07'
+			  }else{
+				   textColor = '#DDDDDD'
+			  }
+			  return textColor
+			},
+			tabClick(index) {//商品详情&&供应商信息tab切换
+				this.tabCurrentIndex = index;
+				console.log(this.tabCurrentIndex)
+			},
+		},
+		onReachBottom() {
+			if(this.hasNextPage){
+				this.loadding = true
+				this.pullUpOn = true
+				this.getOnReachBottomData()
+			}	
+		},
+		onShow() {
+			this.$api.getCommonStorage('clubInfo').then(response =>{
+				console.log(response)
+				this.clubID = response.clubID
+				this.clubName = response.name
+				this.clubImage = response.image
+				this.pageNum = 1;
+				this.initclubList();
+			})
+		}
+	}
+</script>
+
+<style lang='scss'>
+	page {
+		height: auto;
+	}
+	page,.container{
+		/* padding-bottom: 120upx; */
+		background: #F7F7F7;
+		border-top: 1px solid #EBEBEB;
+	}
+	.container{
+		position: relative;
+	}
+	.list{
+		display: flex;
+		align-items: center;
+		width: 702rpx;
+		height: 92rpx;
+		padding: 24rpx;
+		background: #FFFFFF;
+		position: relative;
+		border-bottom: 1px solid #EBEBEB;
+		.list-left{
+			display: flex;
+			flex: 4;
+			.list-head{
+				width: 92rpx;
+				height: 92rpx;
+				border-radius: 14rpx;
+				image{
+					width: 92rpx;
+					height: 92rpx;
+					border-radius: 14rpx;
+				}
+			}
+			.list-tel{
+				margin-left: 18rpx;
+				.txt{
+					display: flex;
+					flex: 1;
+					font-size: $font-size-28;
+					color: $text-color;
+					line-height: 46rpx;
+				}
+			}
+		}
+		.list-opea{
+			flex:6;
+			.opea-type{
+				flex-direction: column;
+				align-items: center;
+				margin-left: 20rpx;
+				float: left;
+				.opea-type-cell{
+					width: 186rpx;
+					height: 64rpx;
+					padding:0 16rpx;
+					border-radius: 10rpx;
+					border: 1px solid #DDDDDD;
+					line-height: 64rpx;
+					font-size: $font-size-24;
+					.icon-iconfontweixin{
+						margin-right: 8rpx;
+						font-size: $font-size-32;
+					}
+					&.none{
+						text-align: center;
+					}
+				}
+			}
+			.opea-del{
+				float: right;
+				flex-direction: column;
+				align-items: center;
+				.opea-type-cell{
+					width: 86rpx;
+					height: 64rpx;
+					padding:0 24rpx;
+					border-radius: 10rpx;
+					border: 1px solid #DDDDDD;
+					line-height: 64rpx;
+					font-size: $font-size-24;
+					color: #FF0000;
+					.icon-shanchu{
+						font-size: $font-size-32;
+						margin-right: 6rpx;
+					}
+				}
+			}
+		}
+	}
+	.tabBar{
+		width:100%;
+		height: 98rpx;
+		background: #fff;
+		border-top:1px solid #E5E5E5;
+		position: fixed;
+		bottom:0px;
+		left:0px;
+		right:0px;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		.tabBar_list{ 
+			width:86%;
+			display: flex;
+			justify-content: space-between;
+			.tabBar_item{ 
+				width:120rpx;
+				display: flex;
+				justify-content: center;
+				align-items: center;
+				flex-direction: column;
+				font-size: 20rpx;
+				color: #999999;
+				&.current{
+					color: #166CE1;
+					.iconfont{
+						color:#166CE1;
+					}
+				}
+				.iconfont{
+					width:48rpx;
+					height: 48rpx;
+					display: block;
+					margin-bottom:2rpx;
+					text-align: center;
+					font-size: 46rpx;
+					color: #999999;
+				}
+			}
+		 } 
+	}
+	.nav_active{
+		color: $color-system;
+	}
+</style>
+

+ 1204 - 0
market/pages/login/apply.vue

@@ -0,0 +1,1204 @@
+<template>
+	<view class="container register" :style="{paddingTop:CustomBar+'px'}">
+		<cu-custom :navbar-data='nvabarData'  @navigateBack="hanldNavigateBack"></cu-custom>
+		<view class="register-error clearfix">
+			<view class="error-top animation" @click="showOpenError" :class="{'error-top--none': isOpenError}" >
+				<view class="name">审核未通过原因</view>
+				<view class="icon">{{ isOpenError ? '' : '查看详情'}}<text class="iconfont icon-xiangxiajiantou" :class="{'icon-xiangxiajiantou-active':isOpenError}"></text></view>
+			</view>
+			<view class="error-main animation" :class="{'error-main--hide':!isOpenError}" 
+				:style="{'transform':isOpenError?'translateY(0)':'translateY(-50%)','-webkit-transform':isOpenError?'translateY(0)':'translateY(-50%)'}">
+				<view class="error-main-list">
+					<view class="item" v-for="(item, index) in errorList" :key="index">
+						<text class="num">{{ index+1 }}.</text>
+						<text>{{ item }}</text>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view class="register-main first clearfix">
+			<view class="register-row">
+				<view class="register-title">基本信息</view>
+			</view>
+			<view class="register-row clearfix">
+				<view class="register-from">
+					<view class="label">机构名称:</view>
+					<input class="row-input" type="text" v-model="clubName" placeholder="请输入您的机构名称" maxlength="30"/>
+				</view>
+			</view>
+			<view class="register-row clearfix">
+				<view class="register-from">
+					<view class="label">联系人:</view>
+					<input class="row-input" type="text" v-model="clubContact" placeholder="请输入联系姓名" maxlength="6"/>
+				</view>
+			</view>
+			<view class="register-row clearfix">
+				<view class="register-from">
+					<view class="label">手机号:</view>
+					<input class="row-input" type="number" v-model="mobile" placeholder="请输入手机号" maxlength="11"/>
+					<view class="row-btn" @click="showCheckPhone">{{ isShowCheckPhone ? '取消修改' : '修改手机号' }}</view>
+				</view>
+			</view>
+			<view class="register-row clearfix" v-show="isShowCheckPhone">
+				<view class="register-from code">
+					<input class="row-input" type="number" v-model="mobileCode" placeholder="请输入上述手机号的验证码" maxlength="6"/>
+				</view>
+				<view class="register-from btn" :class="[isMobileDisabled  ? 'disabled' : '']">
+					<button class="row-input"  type="button" @click.stop="getMobileCodeFn" :disabled="isMobileDisabled">{{ mobileCodeText }}</button>
+				</view>
+			</view>
+			<view class="register-row clearfix" v-show="isShowCheckPhone">
+				<view class="register-from">
+					<input class="row-input" type="number" v-model="newMobile" placeholder="请输入新手机号" maxlength="11"/>
+				</view>
+			</view>
+			<view class="register-row clearfix" v-show="isShowCheckPhone">
+				<view class="register-from code">
+					<input class="row-input" type="number" v-model="newMobileCode" placeholder="请输入新手机号的验证码" maxlength="6"/>
+				</view>
+				<view class="register-from btn" :class="[isNewMobileDisabled  ? 'disabled' : '']" >
+					<button class="row-input"  type="button" @click.stop="getNewMobileCodeFn" :disabled="isNewMobileDisabled">{{ newMobileCodeText }}</button>
+				</view>
+			</view>
+		</view>
+		<view class="register-main clearfix" >
+			<view class="register-row">
+				<view class="register-title">详细信息<text class="txt">(请尽量填写,有利于快速审核通过)</text></view>
+			</view>
+		</view>
+		<view class="register-main detailed clearfix">
+			<view class="register-row clearfix">
+				<view class="register-from">
+					<view class="label">机构简称:</view>
+					<input class="row-input" type="text" v-model="clubContact" placeholder="请输入您的机构简称" maxlength="10"/>
+				</view>
+			</view>
+			<view class="register-row clearfix">
+				<view class="register-from"  @click="showMulLinkageThreePicker">
+					<view class="label">机构地址:</view>
+					<text class="row-input" :class="addressData.address === '请选择机构所在地区' ? 'none' : ''">
+						{{addressData.address}}
+					</text>		
+					<text class="iconfont icon-xiayibu"></text>
+				</view>
+			</view>
+			<view class="register-row text-textarea clearfix">
+				<view class="textarea show" v-if="isShowInput">{{addressData.addressDetail ? addressData.addressDetail :'详细地址:如道路、门牌号、小区等'}}</view>
+				<textarea 	v-else
+							class="textarea" 
+							type="text" 
+							v-model="addressData.addressDetail" 
+							placeholder="详细地址:如道路、门牌号、小区等" 
+							placeholder-class="placeholder"
+							maxlength="25"
+							@input="onTextareaInput"
+							:class="isShowInput ? '':''"
+				/>
+			</view>
+			<view class="register-row clearfix">
+				<view class="register-from">
+					<view class="label">营业执照编号:</view>
+					<input class="row-input" type="text" v-model="clubContact" placeholder="请填写社会统一信用代码" maxlength="16"/>
+				</view>
+			</view>
+			<view class="register-row clearfix">
+				<view class="register-picture">
+					<view class="label">营业执照:</view>
+					<view class="upload-picture">
+						<view class="upload-none" v-if="uploadBusinessImage === ''"  @click="chooseBusinessImage"><text class="iconfont icon-jiahao"></text></view>
+						<view class="upload-image" v-else>
+							<image :src="uploadBusinessImage" mode="" @click="viewBusinessImage"></image>
+							<view class="upload-del" @click="delBusinessImage">
+								<text class='iconfont icon-shanchu1'></text>
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+			<view class="register-row clearfix">
+				<view class="register-picture">
+					<view class="label">门头照:</view>
+					<view class="upload-picture">
+						<view class="upload-none" v-if="uploadMentuzImage === ''" @click="chooseMentuzImage"><text class="iconfont icon-jiahao"></text></view>
+						<view class="upload-image" v-else>
+							<image :src="uploadMentuzImage" mode=""  @click="viewMentuzImage"></image>
+							<view class="upload-del" @click="delMentuzImage">
+								<text class='iconfont icon-shanchu1'></text>
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+			<view class="register-row clearfix">
+				<view class="register-from picker">
+					<view class="label">机构类型:</view>
+					<view class="row-input picker" @click="bindPickerChange">{{ organizationTypeText }}</view>
+					<text class="iconfont icon-xiayibu"></text>
+<!-- 				<picker @change="bindPickerChange" :value="index" :range="organizationTypeList" range-key="name">
+						<view class="row-input" :class="[isOrganizationType == 0 ? 'none' : '']">{{organizationTypeList[typtIndex].name}}</view>
+					</picker>
+ -->					
+				</view>
+			</view>
+			<view class="register-row clearfix" v-if="isOrganizationType == 1">
+				<view class="register-from radio">
+					<radio-group @change="radioChange">
+						<label class="row-input" v-for="(item, index) in beautyList" :key="item.value">
+							<radio class="row-radio" :value="item.value" :checked="index === current" color="#E15616"/>
+							<view class="row-text">{{item.name}}</view>
+						</label>
+					</radio-group>
+				</view>
+			</view>
+			<view class="register-row clearfix" v-show="isDepartment">
+				<view class="register-from">
+					<view class="label">科室:</view>
+					<input class="row-input keshi" type="text" v-model="clubContact" placeholder="请填写经营的科室,至少三个,用逗号隔开" maxlength="16"/>
+				</view>
+			</view>
+			<view class="register-row clearfix" v-if="isOrganizationType == 1">
+				<view class="register-picture">
+					<view class="label zz">医疗执业许可证:</view>
+					<view class="upload-picture">
+						<view class="upload-none" v-if="uploadMedicalImage === ''" @click="chooseMedicalImage"><text class="iconfont icon-jiahao"></text></view>
+						<view class="upload-image" v-else>
+							<image :src="uploadMedicalImage" mode=""  @click="viewMedicalImage"></image>
+							<view class="upload-del" @click="delMedicalImage">
+								<text class='iconfont icon-shanchu1'></text>
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+			<view class="register-row clearfix" v-if="isOrganizationType == 1">
+				<view class="register-from group">
+					<view class="label">主营内容:</view>
+					<checkbox-group class="content-class" @change="chooseMaleLike" >
+						<label class="item" v-for="(item, index) in mentuzCampList" :key="index" :class="{on: item.checked}">
+						   <checkbox :value="item.value"></checkbox>
+						   <text class="item-text">{{item.name}}</text>
+						</label>
+				    </checkbox-group>
+				</view>	
+				<view class="register-from group btn">
+					<view class="content-class btn">
+						<view class="item" @click="showAustomItem">
+							<text class="item-text">其他</text>
+						</view>
+					</view>
+				</view>
+				<view class="register-from group btn" v-show="isShowAustomItem">
+					<view class="content-class btn">
+						<input class="row-input other" type="text" v-model="customItemValue" placeholder="请输入自定义项目"  @blur="onBlurInput" maxlength="5"/>
+						<button type="default" 
+								class="confirm-btn" 
+								:class="[isDisabled === true ? 'disabled' : 'none']" 
+								:disabled="isDisabled"
+								@click.stop="addCustomItem"
+						>确认添加</button>
+					</view>
+				</view>
+			</view>
+			<view class="register-row clearfix" v-if="isOrganizationType == 2">
+				<view class="register-from group">
+					<view class="label">主营内容:</view>
+					<checkbox-group class="content-class" @change="chooseMaleLikes">
+						<label class="item" v-for="(item, index) in medicaCampList" :key="index" :class="{on: item.checked}">
+						   <checkbox :value="item.value"></checkbox>
+						   <text class="item-text">{{item.name}}</text>
+						</label>
+				    </checkbox-group>
+				</view>	
+				<view class="register-from group btn">
+					<view class="content-class btn">
+						<view class="item" @click="showAustomItem">
+							<text class="item-text">其他</text>
+						</view>
+					</view>
+				</view>
+				<view class="register-from group btn" v-show="isShowAustomItem">
+					<view class="content-class btn">
+						<input class="row-input other" type="text" v-model="customItemValue" placeholder="请输入自定义项目"  @blur="onBlurInput" maxlength="5"/>
+						<button type="default" 
+								class="confirm-btn" 
+								:class="[isDisabled === true ? 'disabled' : 'none']" 
+								:disabled="isDisabled"
+								@click.stop="addCustomItem"
+						>确认添加</button>
+					</view>
+				</view>
+			</view>
+			<view class="register-fiexd clearfix">
+				<view class="register-agree">
+					<view class="agree-text"  @tap.stop="agreeCheck()">
+						<button class="checkbox iconfont" :class="[isCheck ?'icon-gouxuan':'icon-weigouxuan']"></button> 
+						我已阅读并同意
+						<text @click.stop="this.$api.navigateTo('/pages/service/organagree')">《机构协议》</text>
+						<text @click.stop="this.$api.navigateTo('/pages/service/useragree')">《用户协议》</text>及
+						<text @click.stop="this.$api.navigateTo('/pages/service/privacyagree')">《隐私权政策》</text>
+					</view>
+				</view>
+				<view class="register-row ">
+					<view class="register-btn sub" @click.stop="organizationUpdateInfo">提交审核</view>
+				</view>
+			</view>
+			<mpvue-city-picker :themeColor="themeColor"
+								ref="mpvueCityPicker" 
+							    :pickerValueDefault="cityPickerValueDefault"
+								@onCancel="onCancel" 
+								@onConfirm="onConfirm">
+			</mpvue-city-picker>
+		</view>
+	</view>
+</template>
+
+<script>
+import { mapMutations } from 'vuex';
+	import mpvueCityPicker from '@/components/mpvue-citypicker/mpvueCityPicker.vue'
+	import { organizationUpdateModifyInfo , organizationModifyUpdate  } from "@/api/use.js"
+	import { getClubMobileCode,getClubNewMobileCode,uploadFileImage } from "@/api/utils.js" 
+	var self;
+	export default{
+		components:{
+			mpvueCityPicker
+		},
+		data() {
+			return{
+				nvabarData: {		//顶部自定义导航
+					showCapsule: 1, // 是否显示左上角图标  1表示显示  0表示不显示,
+					showSearch: 0,
+					title: '修改申请资料', // 导航栏 中间的标题
+				},
+				CustomBar:this.CustomBar,// 顶部导航栏高度
+				isOpenError:false,
+				errorList:[],
+				isShowCheckPhone:false,		//是否显示修改手机
+				tabCurrentIndex:3,	
+				isPreviewImage:false,   	//预览图片开关
+				isMobileDisabled: false,	//手机验证码按钮控制
+				isNewMobileDisabled: false,	//手机验证码按钮控制
+				userID:'',					//用户ID
+				clubID:'',					//会所ID
+			    count: '',					//倒计时
+			    newCount: '',				//倒计时
+			    codeTime: null,
+			    codeTimeNew: null,
+				clubName:'',	 			//机构名称
+				abbreviation:'',	 		//机构简称
+				clubContact:'',	 			//联系人
+				mobile:'',					//联系人手机号
+				newMobile:'',				//新联系人手机号
+				mobileCode:'',				//手机号验证码
+				newMobileCode:'',			//新手机号手机验证码
+				mobileCodeText: '获取验证码',
+				newMobileCodeText: '获取验证码',
+				socialCreditCode:'',	//统一社会信用代码
+				isAgreed:0,				//是否勾选协议
+				isDisabled:true,
+				isShowInput:false,
+				isCheck:true,			//是否勾选协议
+				uploadBusinessImage:'',	//营业执照图片
+				uploadMentuzImage:'',  	//门头照图片
+				uploadMedicalImage:'', 	//资质照图片
+				department:'',			//科室
+				isDepartment:false,     //是否显示科室
+				secondClubType:'',		//机构类型二级分类
+				mainpro:'',				//主营内容
+				clubTelePhone:'',		//固定电话
+				clubFax:'',				//传真
+				companyPprofile:'',		//公司简介
+				firstClubType:'',		//机构类型
+				isOrganizationType:0,
+				organizationTypeText:'请选择机构类型',
+				beautyList:[{value:'1',name:'诊所'},{value:'2',name:'门诊'},{value:'3',name:'医院'}],
+				mentuzCampList:[],
+				medicaCampList:[],
+				typtIndex:0,
+				organizationType:0,
+				current:0,
+				isShowAustomItem:false, //是否显示其他添加
+				customItemValue:'', 	//自定义项目
+				isMainproCheck:false,
+				addressData:{
+					address:'请选择机构所在地区',
+					townID:'',			//区ID
+					cityID:'',			//市ID
+					provinceID:'',		//省ID
+					addressDetail: '',	//地址详情
+				},
+			}	
+		},
+		onLoad(option) {
+			console.log(option)
+			this.organizationInfo()
+		},
+		methods:{
+			hanldNavigateBack(){
+				this.$util.modal('','资料尚未提交审核,确定放弃修改吗?','确定','取消',true,() =>{
+					uni.navigateBack({
+						delta: 1
+					});
+				})
+			},
+			organizationInfo(){
+				this.$api.getStorage().then((resolve) =>{
+					this.userID = resolve.userID
+					organizationUpdateModifyInfo({userID:10283}).then(response =>{
+						let organizationClub = response.data.club
+						let organizationUser = response.data.user
+						this.errorList =organizationUser.auditNoteList
+						this.email = organizationUser.email	
+						this.clubID = organizationUser.clubID
+						this.clubName = organizationClub.name
+						this.clubContact = organizationClub.linkMan
+						this.mobile = organizationUser.bindMobile
+						this.abbreviation = organizationClub.sname
+						if( organizationClub.provinceID == null ){
+							this.addressData.provinceID = ''
+						}else{
+							this.addressData.provinceID = organizationClub.provinceID
+						}
+						if( organizationClub.cityID == null ){
+							this.addressData.cityID = ''
+						}else{
+							this.addressData.cityID = organizationClub.cityID
+						}
+						if( organizationClub.townID == null ){
+							this.addressData.townID = ''
+						}else{
+							this.addressData.townID = organizationClub.townID
+						}
+						this.addressData.address = organizationClub.provincialAddress
+						this.addressData.addressDetail = organizationClub.address
+						this.socialCreditCode = organizationClub.socialCreditCode
+						this.firstClubType = organizationClub.firstClubType
+						this.secondClubType = organizationClub.secondClubType
+						this.uploadBusinessImage = organizationClub.businessLicenseImage
+						this.uploadMentuzImage = organizationClub.headpic
+						this.uploadMedicalImage = organizationClub.medicalPracticeLicenseImg
+						this.department = organizationClub.department						
+						this.clubTelePhone = organizationClub. contractPhone
+						this.clubFax = organizationClub.fax
+						this.companyPprofile = organizationClub.info
+						//机构类型&&主营项目
+						switch(this.firstClubType){
+							case '1':
+								this.organizationTypeText = '医美'
+								this.isOrganizationType = 1
+								break;
+							case '2':
+								this.organizationTypeText = '生美'
+								this.isOrganizationType = 2
+								break;
+							case null:
+								this.organizationTypeText = '请选择机构类型'
+								this.isOrganizationType = 0
+								break;
+						}	
+						if(organizationClub.mainpro!=null){
+							if(this.firstClubType == '1'){
+								this.mentuzCampList = this.setNewMainpro(organizationClub.mainpro)
+							}else{
+								this.medicaCampList = this.setNewMainpro(organizationClub.mainpro)
+							}
+						}
+						//机构类型
+						switch(this.secondClubType){
+							case '1':this.current = 0;break;
+							case '2':this.current = 1;this.isDepartment=true;break;
+							case '3':this.current = 2;this.isDepartment=true;break;
+						}
+					})
+				}).catch(response =>{
+					this.$util.msg(response.msg,2000)
+				})
+			},
+			organizationUpdateInfo(){//提交审核
+				if(!this.isCheck){
+					this.$util.msg('请勾选同意协议',2000);
+					return
+				}
+				if(!this.isMainproCheck){
+					let mainproList = []
+					if(this.firstClubType == '1'){
+						this.mentuzCampList.forEach(item =>{
+							mainproList.push(item.name)
+						})
+					}else{
+						this.medicaCampList.forEach(item =>{
+							mainproList.push(item.name)
+						})
+					}
+					this.mainpro = mainproList.join('/')
+				}
+				let params ={
+						userID:this.userID,
+						clubID:this.clubID,					//会所ID
+						name:this.clubName,
+						linkMan:this.clubContact,
+						contractMobile2:this.mobile,
+						contractMobile:this.newMobile,
+						mobileCode:this.mobileCode,
+						newMobileCode:this.newMobileCode,
+						sname:this.abbreviation,
+						provinceID:this.addressData.provinceID,
+						cityID:this.addressData.cityID,
+						townID:this.addressData.townID,
+						address:this.addressData.addressDetail,
+						socialCreditCode:this.socialCreditCode,
+						businessLicenseImage:this.uploadBusinessImage,
+						headpic:this.uploadMentuzImage,
+						firstClubType:this.isOrganizationType, //机构类型分类 医美:0和生美:1
+						secondClubType:this.secondClubType,		//机构类型二级分类 诊所:1,门诊:2,医院:3
+						department:this.department,				//科室
+						medicalPracticeLicenseImg:this.uploadMedicalImage,//资质图片
+						isAgreed:this.isAgreed,				//是否勾选协议	
+						mainpro:this.mainpro,
+						fax:this.clubFax,
+						contractPhone:this.clubTelePhone,
+						info : this.companyPprofile
+				}
+				console.log(params)
+				organizationModifyUpdate(params).then(response =>{
+					this.$util.msg(response.msg,2000);
+					setTimeout(()=>{
+						this.$api.switchTabTo('/pages/tabBar/home/home')
+					},2000)
+				}).catch(response =>{
+					this.$util.msg(response.msg,2000);
+				})
+			},
+			getMobileCodeFn(){
+				if( this.mobile == ''){
+					this.$util.msg('请输入手机号',2000);
+					return
+				}
+				if(!this.$reg.isMobile(this.mobile)){
+					this.$util.msg('请输入正确的手机号',2000);
+					return
+				}
+				let params = { mobile : this.mobile }
+				this.isMobileDisabled = true;
+				getClubMobileCode(params).then(response =>{
+					this.$util.msg('验证短信已发送',2000);
+					const TIME_COUNT = 60;
+			     	if (!this.codeTime) {
+			       		this.count = TIME_COUNT;
+			       		this.isMobileDisabled = true;
+			       		this.codeTime = setInterval(() => {
+			       			if (this.count > 1 && this.count <= TIME_COUNT) {
+			         			this.count--
+			         			this.mobileCodeText = this.count +'s重新发送'
+			        		} else {
+				         		this.isMobileDisabled = false;
+				         		clearInterval(this.codeTime)
+				         		this.codeTime = null
+								this.mobileCodeText = '获取验证码'
+			        		}
+			       		},1000)
+			      	}		
+				}).catch( response =>{
+					this.$util.msg(response.msg,2000);
+					this.isMobileDisabled = false;
+				})
+			},
+			getNewMobileCodeFn(){
+				if( this.newMobile == ''){
+					this.$util.msg('请输入手机号',2000);
+					return
+				}
+				if(!this.$reg.isMobile(this.newMobile)){
+					this.$util.msg('请输入正确的手机号',2000);
+					return
+				}
+				let params = { newMobile : this.newMobile }
+				this.isNewMobileDisabled = true;
+				getClubNewMobileCode(params).then(response =>{
+					this.$util.msg('验证短信已发送',2000);
+					const TIME_COUNT = 60;
+			     	if (!this.codeTimeNew) {
+			       		this.newCount = TIME_COUNT;
+			       		this.isNewMobileDisabled = true;
+			       		this.codeTimeNew = setInterval(() => {
+			       			if (this.newCount > 1 && this.newCount <= TIME_COUNT) {
+			         			this.newCount
+			         			this.newMobileCodeText = this.newCount +'s重新发送'
+			        		} else {
+				         		this.isNewMobileDisabled = false;
+				         		clearInterval(this.codeTimeNew)
+				         		this.codeTimeNew = null
+								this.newMobileCodeText = '获取验证码'
+			        		}
+			       		},1000)
+			      	}
+				}).catch( res =>{
+					this.$util.msg(response.msg,2000);
+					this.isNewMobileDisabled = false;
+				})
+			},
+			// 三级联动选择
+			showMulLinkageThreePicker() {
+				this.isShowInput = true
+				this.$refs.mpvueCityPicker.show()
+			},
+			onConfirm(e) {
+				console.log('地址',e);
+				this.addressData.address = e.name;
+				this.addressData.townID = e.townCode;
+				this.addressData.cityID = e.cityCode;
+				this.addressData.provinceID = e.provinceCode;
+			},	
+			onTextareaInput(e){
+			   this.addressData.addressDetail = e.detail.value;
+			},
+			chooseBusinessImage() {//营业执照图片上传
+				uploadFileImage().then(res =>{
+					this.uploadBusinessImage = JSON.parse(res.data).data
+				})
+			},
+			chooseMentuzImage() {//门头照图片上传
+				uploadFileImage().then(res =>{
+					this.uploadMentuzImage = JSON.parse(res.data).data
+				})
+			},
+			chooseMedicalImage() {//资质照图片上传
+				uploadFileImage().then(res =>{
+					this.uploadMedicalImage = JSON.parse(res.data).data
+				})
+			},
+			viewBusinessImage(e) {
+				this.myPreviewImageFn(this.uploadBusinessImage)
+			},
+			viewMentuzImage(e) {
+				this.myPreviewImageFn(this.uploadMentuzImage)
+			},
+			viewMedicalImage(e) {
+				this.myPreviewImageFn(this.uploadMedicalImage)
+			},
+			myPreviewImageFn(url){
+				this.isPreviewImage = true
+				let mentuzArray = []
+				mentuzArray.push(url)
+				uni.previewImage({
+					urls: mentuzArray,
+					current: 0
+				});
+			},
+			delBusinessImage(){
+				this.$util.modal('','确定删除营业执照图片吗?','确定','取消',true,() =>{
+					 this.uploadBusinessImage = ''
+				})
+			},
+			delMentuzImage(){
+				this.$util.modal('','确定删除门头照图片吗?','确定','取消',true,() =>{
+					this.uploadMentuzImage = ''
+				})
+			},			
+			delMedicalImage(){
+				this.$util.modal('','确定删除资质图片吗?','确定','取消',true,() =>{
+					this.uploadMedicalImage = ''
+				})
+			},
+			bindPickerChange() {
+				let self = this
+				uni.showActionSheet({
+					title:'标题',
+					itemList: ['医美', '生美'],
+					success: (e) => {
+						self.isOrganizationType = e.tapIndex+1
+						switch(e.tapIndex){
+							case 0:
+								this.organizationTypeText = '医美'
+								break;
+							case 1:
+								this.organizationTypeText = '生美'
+								break;
+						}
+					}
+				})
+			
+			},
+			bindPickerChange2(e) {
+				console.log('picker携带值为:' + e.target.value)
+				this.typtIndex = e.target.value
+				this.isOrganizationType = e.target.value
+			},
+			radioChange(e) {
+				this.secondClubType = e.target.value;
+				if( this.secondClubType == '2' || this.secondClubType == '3'){
+					this.isDepartment = true
+				}else{
+					this.isDepartment = false
+				}
+				for (let i = 0; i < this.beautyList.length; i++) {
+					if (this.beautyList[i].value === this.secondClubType) {
+						this.current = i;
+						break;
+					}
+				}
+			},
+			chooseMaleLike(e){
+				this.isMainproCheck = true
+				this.mainpro = this.checkLikes(e,this.mentuzCampList)
+				console.log(this.mainpro)
+			},
+			chooseMaleLikes(e){
+				this.isMainproCheck = true
+				this.mainpro = this.checkLikes(e,this.medicaCampList)
+				console.log(this.mainpro)
+			},
+			checkLikes(e,list){
+				let items = list
+				let	values = e.detail.value
+				let arr = []
+				for (let i = 0, lenI = items.length; i < lenI; ++i) {
+					const item = items[i]
+					if(values.indexOf(item.value) >= 0){
+						this.$set(item,'checked',true)
+						arr.push(item.name)
+					}else{
+						this.$set(item,'checked',false)
+					}
+				}
+				return arr.join('/')
+			},
+			agreeCheck() {
+				this.isCheck = !this.isCheck
+				if(this.isCheck){
+					this.isAgreed = 1
+				}
+			},
+			onBlurInput(e){//
+				if(e.detail.value ===''){
+					this.isDisabled = true
+				}else{
+					this.isDisabled = false
+				}
+			},
+			showAustomItem() {
+				this.isShowAustomItem = !this.isShowAustomItem
+			},
+			setNewMainpro(arr){//回显处理主营内容
+				let _ARRAY = []
+				arr.split('/').forEach((item,index) =>{
+					let _OBJ = {value:index,name:item,checked:true}
+					_ARRAY.push(_OBJ)
+				})
+				return _ARRAY
+			},
+			addCustomItem(){
+				if(this.isOrganizationType == 0){
+					let item = {value:`${this.mentuzCampList.length+1}`,name:this.customItemValue,checked:true}
+					this.mentuzCampList.push(item)
+				}else{
+					let item = {value:`${this.medicaCampList.length+1}`,name:this.customItemValue,checked:true}
+					this.medicaCampList.push(item)
+				}
+			},
+			showOpenError(){//顶部审核信息详情
+				this.isOpenError = !this.isOpenError
+			},
+			showCheckPhone(){//控制修改手机显隐
+				this.isShowCheckPhone = !this.isShowCheckPhone
+			},
+			steps(index) {//$attrstab切换
+				console.log(index)
+				this.tabCurrentIndex = index;
+			}
+		},
+		onShow() {
+			if(this.isPreviewImage){
+				this.isPreviewImage = false
+				return
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.register{
+		width: 100%;
+		height: auto;
+		border-top: 1px solid #F7F7F7;
+		.model-warp.none{
+			display: none;			
+		}
+		.model-warp.show{
+			display: block;
+		}
+		.register-error{
+			width: 100%;
+			height: auto;
+			position: fixed;
+			top: 0;
+			left: 0;
+			z-index: 999;
+			.error-top{
+				width: 702rpx;
+				padding: 0 24rpx;
+				height: 90rpx;
+				line-height: 90rpx;
+				background: #FF0000;
+				border-bottom: 1px solid #F7F7F7;
+				&.error-top--none{
+					background:#FFFFFF;
+					.name{
+						color: #333333;
+					}
+					.icon{
+						color: #333333;
+					}
+				}
+				.name{
+					font-size: $font-size-32;
+					color: #FFFFFF;
+					float: left;
+				}
+				.icon{
+					float: right;
+					font-size: $font-size-32;
+					color: #FFFFFF;
+				}
+				.icon-xiangxiajiantou{
+					transform: rotate(0deg);
+					transform-origin: center center;
+					float: right;
+					font-size: $font-size-32;
+					color: #FFFFFF;
+					/* transition: transform 0.3s ease;*/
+					transition-property: transform;
+					transition-duration: 0.3s;
+					transition-timing-function: ease;
+					margin-left: 10rpx;
+				}
+				.icon-xiangxiajiantou-active{
+					transform: rotate(180deg);
+					color: #333333;
+				
+				}
+			}
+			.animation{
+				/* transition: transform 0.3s ease;*/
+				transition-property: transform;
+				transition-duration: 0.2s;
+				transition-timing-function: ease;
+			}
+			.error-main{
+				width: 702rpx;
+				height: auto;
+				padding: 24rpx;
+				overflow: hidden;
+				background: #FFFFFF;
+				.error-main-list{
+					width:100% ;
+					height: auto;
+					background: #FFFFFF;
+					.item{
+						height: auto;
+						line-height: 60rpx;
+						font-size: $font-size-28;
+						color: #FF0000;
+						.num{
+							margin-right: 10rpx;
+						}
+					}
+				}
+			}
+			.error-main--hide {
+				padding: 0 24rpx;
+				height: 0px;
+				line-height: 0px;
+			}		
+		}
+		.register-main{
+			width: 100%;
+			height: auto;
+			&.detailed{
+				padding-bottom: 300rpx;
+			}
+			&.first{
+				padding-top: 110rpx;
+			}
+			.register-tips{
+				display: flex;
+				flex-direction: column;
+				align-items: center;
+				line-height: 44rpx;
+				font-size: $font-size-24;
+				color: #FF0000;
+				margin-bottom: 40rpx;
+				.iconfont{
+					font-size: $font-size-24;
+				}
+			}
+			.register-row{
+				width: 702rpx;
+				height: auto;
+				padding: 0 24rpx;
+				margin-bottom: 20rpx;
+				.register-title{
+					line-height: 60rpx;
+					font-size: $font-size-32;
+					color: $text-color;
+					text-align: left;
+					padding-left: 20rpx;
+					.txt{
+						font-size: $font-size-26;
+					}
+				}
+				.row-btn{
+					position: absolute;
+					right: 24rpx;
+					top: 0;
+					line-height: 88rpx;
+					text-align: center;
+					font-size: $font-size-28;
+					color: $color-system;
+				}
+				.register-from{
+					width: 654rpx;
+					height: 40rpx;
+					padding: 24rpx;
+					background: $sub-bg-color;
+					border-radius: 14rpx;
+					position: relative;
+					.label{
+						text-align: left;
+						font-size: $font-size-28;
+						color: #666666;
+						line-height: 40rpx;
+						float: left;
+					}
+					.row-input{
+						width: 440rpx;
+						padding-left:10rpx;
+						font-size: $font-size-28;
+						color: $text-color;
+						line-height: 40rpx;
+						float: left;
+						height: 40rpx;
+						&.none{
+							color: #999999;
+						}
+						&.picker{
+							text-align: left;
+							color: #999999;
+						}
+						&.keshi{
+							width: 550rpx;
+						}
+					}
+					&.code{
+						width: 410rpx;
+						float: left;
+						margin-right: 20rpx;
+						.row-input{
+							width: 390rpx;
+						}
+					}
+					&.btn{
+						width: 224rpx;
+						height: 88rpx;
+						float: left;
+						background: $btn-confirm;
+						padding: 0;
+						.row-input{
+							width: 224rpx;
+							height: 88rpx;
+							line-height: 88rpx;
+							padding: 0;
+							color: #FFFFFF;
+							background: $btn-confirm;
+							text-align: center;
+							border-radius: 14rpx;
+							&.other{
+								width: 224rpx;
+								background: #F7F7F7;
+								margin-right: 20rpx;
+							}
+							&.none{
+								background: #F7F7F7;
+							}
+						}
+						&.disabled{
+							background: #F7F7F7;
+							.row-input{
+								background: #F7F7F7;
+								color: #999999;
+							}
+						}
+					}
+					&.picker{
+						padding: 0 24rpx;
+						width: 654rpx;
+						height: 88rpx;
+						line-height: 88rpx;
+						.label{
+							line-height: 88rpx;
+						}
+						.row-input{
+							width: 470rpx;
+							height: 88rpx;
+							line-height: 88rpx;
+							padding-left: 30rpx;
+						}
+					}
+					&.radio{
+						padding: 0 24rpx;
+						width: 654rpx;
+						height: 288rpx;
+						.row-input{
+							width: 100%;
+							height: 88rpx;
+							line-height: 88rpx;
+							padding-left: 0;
+						}
+						.row-radio{
+							float: left;
+							transform: scale(0.8);
+						}
+						.row-text{
+							width: 100rpx;
+							text-align: center;
+							float: left;
+						}
+					}
+					&.group{
+						padding: 0 24rpx;
+						width: 654rpx;
+						height: auto;
+						background: #FFFFFF;
+						margin-top: 30rpx;
+						.row-input{
+							width: 100%;
+							height: 88rpx;
+							line-height: 88rpx;
+							padding-left: 0;
+						}
+						.row-radio{
+							float: left;
+						}
+						.row-text{
+							width: 100rpx;
+							text-align: center;
+							float: left;
+						}
+					}
+					&.btn{
+						margin-top: 0;
+					}
+					.content-class {
+						width: 520rpx;
+						margin: 20rpx auto;
+						display: flex;
+						flex-flow: row wrap;
+						justify-content: space-between;
+						align-items: center;
+						&.btn{
+							margin: 0 auto;
+							margin-left: 126rpx;
+						}
+						.row-input{
+							display: flex;
+							width: 220rpx;
+							height: 40rpx;
+							padding: 24rpx;
+							text-align: left;
+							border-radius: 10rpx;
+							font-size: $font-size-28;
+							color: $text-color;
+						}
+						.confirm-btn{
+							width: 200rpx;
+							height: 88rpx;
+							border-radius: 10rpx;
+							line-height: 88rpx;
+							text-align: center;
+							&.none{
+								color: #FFFFFF;
+								background: $btn-confirm;
+							}
+							&.disabled{
+								color: #999999;
+							}
+						}
+						.item {
+						  width: 155rpx;
+						  height: 60rpx;
+						  font-size:$font-size-28;
+						  line-height: 60rpx;
+						  border-radius:10rpx;
+						  margin: 10rpx;
+						  text-align: center;
+						  box-sizing: border-box;
+						  border: 1rpx solid #EFEFEF;
+						  checkbox {
+							display: none;
+						  }
+						}
+						.on {
+						  border-color: $color-system;
+						  color:$color-system;
+						}
+					}
+				}
+				.icon-xiayibu{
+					width: 88rpx;
+					height: 88rpx;
+					position: absolute;
+					right: 0;
+					top: 0;
+					line-height: 88rpx;
+					text-align: center;
+				}
+				&.text-textarea{
+					background: #FFFFFF;
+					.textarea{
+						width: 654rpx;
+						height: 180rpx;
+						background: #F7F7F7;
+						padding: 24rpx;
+						font-size: $font-size-28;
+						color: $text-color;
+						z-index: 1;
+						border-radius: 14rpx;
+					}
+					.textarea.hide{
+						opacity: 0;
+					}
+					.textarea.show{
+						color: #999999;
+					}
+				}
+			}
+			.register-picture{
+				height: 102rpx;
+				margin: 40rpx 0 0 0;
+				.label{
+					float: left;
+					font-size: $font-size-28;
+					color: $text-color;
+					line-height: 102rpx;
+					width: 150rpx;
+					text-align: right;
+					&.zz{
+						width: 230rpx;
+					}
+				}
+				.upload-picture{
+					float: left;
+					height: 100rpx;
+					.upload-none{
+						width: 100rpx;
+						height: 100rpx;
+						text-align: center;
+						line-height: 100rpx;
+						color: #999999;
+						border: 1px solid #999999;
+						border-radius: 10rpx;
+						margin: 0 20rpx;
+						.iconfont{
+							font-size: $font-size-28;
+						}
+					}
+					.upload-image{
+						width: 100rpx;
+						height: 100rpx;
+						border-radius: 10rpx;
+						margin: 0 20rpx;
+						position: relative;
+						image{
+							width: 100rpx;
+							height: 100rpx;
+							border-radius: 10rpx;
+						}
+						.upload-del{
+							width: 40rpx;
+							height: 40rpx;
+							position: absolute;
+							top: -20rpx;
+							right: -20rpx;
+							line-height: 40rpx;
+							text-align: center;
+							.iconfont{
+								font-size: $font-size-32;
+								color: #999999;
+							}
+						}
+					}
+				}
+			}
+			.register-input{
+				width: 654rpx;
+				height: 40rpx;
+				padding: 24rpx;
+				margin: 0 auto;
+				margin-bottom: 60rpx;
+				background: #F7F7F7;
+				border-radius: 14rpx;
+				.input{
+					width: 100%;
+					height: 100%;
+					background: #F7F7F7;
+					font-size: $font-size-28;
+					line-height: 40rpx;
+					color: #333333;
+					border-radius: 14rpx;
+				}
+			}
+			.register-fiexd{
+				width: 100%;
+				height: auto;
+				padding: 20rpx 0;
+				position: fixed;
+				bottom: 0;
+				left: 0;
+				z-index: 99;
+				background: #FFFFFF;
+				.register-agree{
+					display: flex;
+					flex-direction: column;
+					align-items: center;
+					margin: 32rpx 0;
+					.agree-text{
+						.checkbox{
+							float: left;
+							margin: 4rpx 6rpx 0 0;
+							color: #999999;
+							font-size: $font-size-32;
+							&.icon-gouxuan{
+								color: $color-system;
+							}
+						}
+						font-size: 20rpx;
+						line-height: 44rpx;
+						color: #999999;
+						text{
+							color:#0091FF;
+						}
+					}
+				}
+			}
+			.register-btn{
+				width: 702rpx;
+				height: 88rpx;
+				border-radius: 14rpx;
+				font-size: $font-size-28;
+				line-height: 88rpx;
+				color: #FFFFFF;
+				margin: 0 auto;
+				text-align: center;
+				background: $btn-confirm;
+				margin-top: 96rpx;
+				&.none{
+					background: #FFFFFF;
+					color: $text-color;
+					margin-top: 0;
+				}
+				&.sub{
+					margin-top: 0;
+				}
+			}
+		}
+	}
+</style>

+ 1133 - 0
market/pages/login/information.vue

@@ -0,0 +1,1133 @@
+<template>
+	<view class="container register" :style="{paddingTop:CustomBar+'px'}">
+		<cu-custom :navbar-data='nvabarData'  @navigateBack="hanldNavigateBack"></cu-custom>
+		<view class="register-main first clearfix">
+			<view class="register-row">
+				<view class="register-title">账户信息</view>
+			</view>
+			<view class="register-row clearfix">
+				<view class="register-from">
+					<view class="label">邮箱:</view>
+					<view class="row-input">{{ email }}</view>
+				</view>
+			</view>
+			<view class="register-row">
+				<view class="register-title">基本信息</view>
+			</view>
+			<view class="register-row clearfix">
+				<view class="register-from">
+					<view class="label">机构名称:</view>
+					<input class="row-input" type="text" v-model="clubName" placeholder="请输入您的机构名称" maxlength="30"/>
+				</view>
+			</view>
+			<view class="register-row clearfix">
+				<view class="register-from">
+					<view class="label">联系人:</view>
+					<input class="row-input" type="text" v-model="clubContact" placeholder="请输入联系姓名" maxlength="6"/>
+				</view>
+			</view>
+			<view class="register-row clearfix">
+				<view class="register-from">
+					<view class="label">手机号:</view>
+					<input class="row-input" type="number" disabled="true" v-model="mobile" placeholder="请输入手机号" maxlength="11"/>
+					<view class="row-btn" @click="showCheckPhone">{{ isShowCheckPhone ? '取消修改' : '修改手机号' }}</view>
+				</view>
+			</view>
+			<view class="register-row clearfix" v-show="isShowCheckPhone">
+				<view class="register-from code">
+					<input class="row-input" type="number" v-model="mobileCode" placeholder="请输入上述手机号的验证码" maxlength="6"/>
+				</view>
+				<view class="register-from btn" :class="[isMobileDisabled  ? 'disabled' : '']">
+					<button class="row-input"  type="button" @click.stop="getMobileCodeFn" :disabled="isMobileDisabled">{{ mobileCodeText }}</button>
+				</view>
+			</view>
+			<view class="register-row clearfix" v-show="isShowCheckPhone">
+				<view class="register-from">
+					<input class="row-input" type="number" v-model="newMobile" placeholder="请输入新手机号" maxlength="11"/>
+				</view>
+			</view>
+			<view class="register-row clearfix" v-show="isShowCheckPhone">
+				<view class="register-from code">
+					<input class="row-input" type="number" v-model="newMobileCode" placeholder="请输入新手机号的验证码" maxlength="6"/>
+				</view>
+				<view class="register-from btn" :class="[isNewMobileDisabled  ? 'disabled' : '']" >
+					<button class="row-input"  type="button" @click.stop="getNewMobileCodeFn" :disabled="isNewMobileDisabled">{{ newMobileCodeText }}</button>
+				</view>
+			</view>
+		</view>
+		<view class="register-main clearfix" >
+			<view class="register-row">
+				<view class="register-title">详细信息<text class="txt">(请尽量填写,有利于快速审核通过)</text></view>
+			</view>
+		</view>
+		<view class="register-main detailed clearfix">
+			<view class="register-row clearfix">
+				<view class="register-from">
+					<view class="label">机构简称:</view>
+					<input class="row-input" type="text" v-model="abbreviation" placeholder="请输入您的机构简称" maxlength="10"/>
+				</view>
+			</view>
+			<view class="register-row clearfix">
+				<view class="register-from"  @click="showMulLinkageThreePicker">
+					<view class="label">机构地址:</view>
+					<text class="row-input" :class="addressData.address === '请选择机构所在地区' ? 'none' : ''">
+						{{addressData.address}}
+					</text>		
+					<text class="iconfont icon-xiayibu"></text>
+				</view>
+			</view>
+			<view class="register-row text-textarea clearfix">
+				<view class="textarea show" v-if="isShowInput">{{addressData.addressDetail ? addressData.addressDetail :'详细地址:如道路、门牌号、小区等'}}</view>
+				<textarea 	v-else
+							class="textarea" 
+							type="text" 
+							v-model="addressData.addressDetail" 
+							placeholder="详细地址:如道路、门牌号、小区等" 
+							placeholder-class="placeholder"
+							maxlength="25"
+							@input="onTextareaInput"
+							:class="isShowInput ? '':''"
+				/>
+			</view>
+			<view class="register-row clearfix">
+				<view class="register-from">
+					<view class="label">营业执照编号:</view>
+					<input class="row-input" type="text" v-model="socialCreditCode" placeholder="请填写社会统一信用代码" maxlength="16"/>
+				</view>
+			</view>
+			<view class="register-row clearfix">
+				<view class="register-picture">
+					<view class="label">营业执照:</view>
+					<view class="upload-picture">
+						<view class="upload-none" v-if="uploadBusinessImage == ''"  @click="chooseBusinessImage"><text class="iconfont icon-jiahao"></text></view>
+						<view class="upload-image" v-else>
+							<image :src="uploadBusinessImage" mode="" @click="viewBusinessImage"></image>
+							<view class="upload-del" @click="delBusinessImage">
+								<text class='iconfont icon-shanchu1'></text>
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+			<view class="register-row clearfix">
+				<view class="register-picture">
+					<view class="label">门头照:</view>
+					<view class="upload-picture">
+						<view class="upload-none" v-if="uploadMentuzImage == ''" @click="chooseMentuzImage"><text class="iconfont icon-jiahao"></text></view>
+						<view class="upload-image" v-else>
+							<image :src="uploadMentuzImage" mode=""  @click="viewMentuzImage"></image>
+							<view class="upload-del" @click="delMentuzImage">
+								<text class='iconfont icon-shanchu1'></text>
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+			<view class="register-row clearfix">
+				<view class="register-from picker">
+					<view class="label">机构类型:</view>
+					<view class="row-input picker" @click="bindPickerChange">{{ organizationTypeText }}</view>
+					<text class="iconfont icon-xiayibu"></text>
+<!-- 				<picker @change="bindPickerChange" :value="index" :range="organizationTypeList" range-key="name">
+						<view class="row-input" :class="[isOrganizationType == 0 ? 'none' : '']">{{organizationTypeList[typtIndex].name}}</view>
+					</picker>
+ -->					
+				</view>
+			</view>
+			<view class="register-row clearfix" v-if="isOrganizationType == 1">
+				<view class="register-from radio">
+					<radio-group @change="radioChange">
+						<label class="row-input" v-for="(item, index) in beautyList" :key="item.value">
+							<radio class="row-radio" :value="item.value" :checked="index === current" color="#E15616"/>
+							<view class="row-text">{{item.name}}</view>
+						</label>
+					</radio-group>
+				</view>
+			</view>
+			<view class="register-row clearfix" v-show="isDepartment">
+				<view class="register-from">
+					<view class="label">科室:</view>
+					<input class="row-input keshi" type="text" v-model="department" placeholder="请填写经营的科室,至少三个,用逗号隔开" maxlength="16"/>
+				</view>
+			</view>
+			<view class="register-row clearfix" v-if="isOrganizationType == 1">
+				<view class="register-picture">
+					<view class="label zz">医疗执业许可证:</view>
+					<view class="upload-picture">
+						<view class="upload-none" v-if="uploadMedicalImage == ''" @click="chooseMedicalImage"><text class="iconfont icon-jiahao"></text></view>
+						<view class="upload-image" v-else>
+							<image :src="uploadMedicalImage" mode=""  @click="viewMedicalImage"></image>
+							<view class="upload-del" @click="delMedicalImage">
+								<text class='iconfont icon-shanchu1'></text>
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+			<view class="register-row clearfix" v-if="isOrganizationType == 1">
+				<view class="register-from group">
+					<view class="label">主营内容:</view>
+					<checkbox-group class="content-class" @change="chooseMaleLike" >
+						<label class="item" v-for="(item, index) in mentuzCampList" :key="index" :class="{on: item.checked}">
+						   <checkbox :value="item.value"></checkbox>
+						   <text class="item-text">{{item.name}}</text>
+						</label>
+				    </checkbox-group>
+				</view>	
+				<view class="register-from group btn">
+					<view class="content-class btn">
+						<view class="item" @click="showAustomItem">
+							<text class="item-text">其他</text>
+						</view>
+					</view>
+				</view>
+				<view class="register-from group btn" v-show="isShowAustomItem">
+					<view class="content-class btn">
+						<input class="row-input other" type="text" v-model="customItemValue" placeholder="请输入自定义项目"  @blur="onBlurInput" maxlength="5"/>
+						<button type="default" 
+								class="confirm-btn" 
+								:class="[isDisabled ? 'disabled' : 'none']" 
+								:disabled="isDisabled"
+								@click.stop="addCustomItem"
+						>确认添加</button>
+					</view>
+				</view>
+			</view>
+			<view class="register-row clearfix" v-if="isOrganizationType == 2">
+				<view class="register-from group">
+					<view class="label">主营内容:</view>
+					<checkbox-group class="content-class" @change="chooseMaleLikes">
+						<label class="item" v-for="(item, index) in medicaCampList" :key="index" :class="{on: item.checked}">
+						   <checkbox :value="item.value"></checkbox>
+						   <text class="item-text">{{item.name}}</text>
+						</label>
+				    </checkbox-group>
+				</view>	
+				<view class="register-from group btn">
+					<view class="content-class btn">
+						<view class="item" @click="showAustomItem">
+							<text class="item-text">其他</text>
+						</view>
+					</view>
+				</view>
+				<view class="register-from group btn" v-show="isShowAustomItem">
+					<view class="content-class btn">
+						<input class="row-input other" type="text" v-model="customItemValue" placeholder="请输入自定义项目"  @blur="onBlurInput" maxlength="5"/>
+						<button type="default" 
+								class="confirm-btn" 
+								:class="[isDisabled ? 'disabled' : 'none']" 
+								:disabled="isDisabled"
+								@click.stop="addCustomItem"
+						>确认添加</button>
+					</view>
+				</view>
+			</view>
+			<view class="register-row clearfix">
+				<view class="register-from">
+					<view class="label">固定电话:</view>
+					<input class="row-input" type="text" v-model="clubTelePhone" placeholder="请填写机构的固定电话" maxlength="15"/>
+				</view>
+			</view>
+			<view class="register-row clearfix">
+				<view class="register-from">
+					<view class="label">传真:</view>
+					<input class="row-input" type="text" v-model="clubFax" placeholder="请填写机构的传真" maxlength="15"/>
+				</view>
+			</view>
+			<view class="register-row text-textarea clearfix">
+				<view class="textarea show" v-if="isCompanyPprofile" @click="showTextarea">{{'请填写公司简介,最多500字'}}</view>
+				<textarea 	v-else
+							class="textarea" 
+							type="text" 
+							v-model="companyPprofile" 
+							placeholder="请填写公司简介,最多500字" 
+							placeholder-class="placeholder"
+							maxlength="500"
+							@input="onTextareaInput"
+							:class="isShowInput ? '':''"
+				/>
+			</view>
+			<view class="register-fiexd clearfix">
+				<view class="register-agree">
+					<view class="agree-text"  @tap.stop="agreeCheck()">
+						<button class="checkbox iconfont" :class="[isCheck ?'icon-gouxuan':'icon-weigouxuan']"></button> 
+						我已阅读并同意
+						<text @click.stop="this.$api.navigateTo('/pages/service/organagree')">《机构协议》</text>
+						<text @click.stop="this.$api.navigateTo('/pages/service/useragree')">《用户协议》</text>及
+						<text @click.stop="this.$api.navigateTo('/pages/service/privacyagree')">《隐私权政策》</text>
+					</view>
+				</view>
+				<view class="register-row">
+					<view class="register-btn sub" @click.stop="organizationUpdateInfo">确定</view>
+				</view>
+			</view>
+			<mpvue-city-picker :themeColor="themeColor"
+								ref="mpvueCityPicker" 
+							    :pickerValueDefault="cityPickerValueDefault"
+								@onCancel="onCancel" 
+								@onConfirm="onConfirm">
+			</mpvue-city-picker>
+		</view>
+	</view>
+</template>
+
+<script>
+	import { mapMutations } from 'vuex';
+	import mpvueCityPicker from '@/components/mpvue-citypicker/mpvueCityPicker.vue'
+	import { organizationUpdateModifyInfo , organizationUpdate  } from "@/api/use.js"
+	import { getClubMobileCode,getClubNewMobileCode,uploadFileImage } from "@/api/utils.js" 
+	var self;
+	export default{
+		components:{
+			mpvueCityPicker
+		},
+		data() {
+			return{
+				nvabarData: {		//顶部自定义导航
+					showCapsule: 1, // 是否显示左上角图标  1表示显示  0表示不显示,
+					showSearch: 0,
+					title: '修改资料', // 导航栏 中间的标题
+				},
+				CustomBar:this.CustomBar,// 顶部导航栏高度
+				isShowCheckPhone:false,		//是否显示修改手机
+				tabCurrentIndex:3,	
+				isPreviewImage:false,   	//预览图片开关
+				isMobileDisabled: false,	//手机验证码按钮控制
+				isNewMobileDisabled: false,	//手机验证码按钮控制
+				userID:'',					//用户ID
+				clubID:'',					//会所ID
+				email:'',					//邮箱
+			    count: '',					//倒计时
+			    newCount: '',					//倒计时
+			    codeTime: null,
+			    codeTimeNew: null,
+				clubName:'',	 			//机构名称
+				abbreviation:'',	 		//机构简称
+				clubContact:'',	 			//联系人
+				mobile:'',					//联系人手机号
+				newMobile:'',				//新联系人手机号
+				mobileCode:'',				//手机号验证码
+				newMobileCode:'',			//新手机号手机验证码
+				mobileCodeText: '获取验证码',
+				newMobileCodeText: '获取验证码',
+				socialCreditCode:'',	//统一社会信用代码
+				isAgreed:0,				//是否勾选协议
+				isDisabled:true,
+				isShowInput:false,
+				isCheck:true,			//是否勾选协议
+				uploadBusinessImage:'',	//营业执照图片
+				uploadMentuzImage:'',  	//门头照图片
+				uploadMedicalImage:'', 	//资质照图片
+				department:'',			//科室
+				isDepartment:false,     //是否显示科室
+				secondClubType:'',		//机构类型二级分类
+				mainpro:'',				//主营内容
+				clubTelePhone:'',		//固定电话
+				clubFax:'',				//传真
+				companyPprofile:'',		//公司简介
+				firstClubType:'',		//机构类型
+				isOrganizationType:0,
+				organizationTypeText:'请选择机构类型',
+				beautyList:[{value:'1',name:'诊所'},{value:'2',name:'门诊'},{value:'3',name:'医院'}],
+				mentuzCampList:[],
+				medicaCampList:[],
+				typtIndex:0,
+				organizationType:0,
+				current:0,
+				isShowAustomItem:false, //是否显示其他添加
+				customItemValue:'', 	//自定义项目
+				isMainproCheck:false,
+				addressData:{
+					address:'请选择机构所在地区',
+					townID:'',			//区ID
+					cityID:'',			//市ID
+					provinceID:'',		//省ID
+					addressDetail: '',	//地址详情
+				},
+			}	
+		},
+		onLoad(option) {
+			this.organizationInfo()
+		},
+		methods:{
+			hanldNavigateBack(){
+				this.$util.modal('','确定放弃本次修改吗?','确定','取消',true,() =>{
+					uni.navigateBack({
+						delta: 1
+					});
+				})
+			},
+			organizationInfo(){
+				this.$api.getStorage().then((resolve) =>{
+					this.userID = resolve.userID
+					organizationUpdateModifyInfo({userID:this.userID}).then(response =>{
+						let organizationClub = response.data.club
+						let organizationUser = response.data.user
+						this.email = organizationUser.email	
+						this.clubID = organizationUser.clubID
+						this.clubName = organizationClub.name
+						this.clubContact = organizationClub.linkMan
+						this.mobile = organizationUser.bindMobile
+						this.abbreviation = organizationClub.sname
+						if( organizationClub.provinceID == null ){
+							this.addressData.provinceID = ''
+						}else{
+							this.addressData.provinceID = organizationClub.provinceID
+						}
+						if( organizationClub.cityID == null ){
+							this.addressData.cityID = ''
+						}else{
+							this.addressData.cityID = organizationClub.cityID
+						}
+						if( organizationClub.townID == null ){
+							this.addressData.townID = ''
+						}else{
+							this.addressData.townID = organizationClub.townID
+						}
+						this.addressData.addressDetail = organizationClub.address ? organizationClub.address : ''
+						this.socialCreditCode = organizationClub.socialCreditCode
+						this.firstClubType = organizationClub.firstClubType
+						this.secondClubType = organizationClub.secondClubType
+						this.addressData.address = organizationClub.provincialAddress ? organizationClub.provincialAddress : ''
+						this.uploadBusinessImage = organizationClub.businessLicenseImage
+						this.uploadMedicalImage = organizationClub.medicalPracticeLicenseImg
+						this.uploadMentuzImage = organizationClub.headpic
+						this.department = organizationClub.department						
+						this.clubTelePhone = organizationClub.contractPhone ? organizationClub.contractPhone : ''
+						this.clubFax = organizationClub.fax ? organizationClub.fax : ''
+						this.companyPprofile = organizationClub.info ? organizationClub.info : ''
+						//机构类型&&主营项目
+						switch(this.firstClubType){
+							case '1':
+								this.organizationTypeText = '医美'
+								this.isOrganizationType = 1
+								break;
+							case '2':
+								this.organizationTypeText = '生美'
+								this.isOrganizationType = 2
+								break;
+							case null:
+								this.organizationTypeText = '请选择机构类型'
+								this.isOrganizationType = 0
+								break;
+						}	
+						if(organizationClub.mainpro!=""){
+							if(this.firstClubType == '1'){
+								this.mentuzCampList = this.setNewMainpro(organizationClub.mainpro)
+							}else{
+								this.medicaCampList = this.setNewMainpro(organizationClub.mainpro)
+							}
+						}
+						//机构类型
+						switch(this.secondClubType){
+							case '1':this.current = 0;break;
+							case '2':this.current = 1;this.isDepartment=true;break;
+							case '3':this.current = 2;this.isDepartment=true;break;
+						}
+					})
+				}).catch(response =>{
+					this.$util.msg(response.msg,2000)
+				})
+			},
+			organizationUpdateInfo(){//提交审核
+				if(!this.isCheck){
+					this.$util.msg('请勾选同意协议',2000);
+					return
+				}
+				if(!this.isMainproCheck){
+					let mainproList = []
+					if(this.firstClubType == '1'){
+						this.mentuzCampList.forEach(item =>{
+							mainproList.push(item.name)
+						})
+					}else{
+						this.medicaCampList.forEach(item =>{
+							mainproList.push(item.name)
+						})
+					}
+					this.mainpro = mainproList.join('/')
+				}
+				let params ={
+						userID:this.userID,
+						clubID:this.clubID,					//会所ID
+						name:this.clubName,
+						linkMan:this.clubContact,
+						contractMobile2:this.mobile,
+						contractMobile:this.newMobile,
+						mobileCode:this.mobileCode,
+						newMobileCode:this.newMobileCode,
+						sname:this.abbreviation,
+						provinceID:this.addressData.provinceID,
+						cityID:this.addressData.cityID,
+						townID:this.addressData.townID,
+						address:this.addressData.addressDetail,
+						socialCreditCode:this.socialCreditCode,
+						businessLicenseImage:this.uploadBusinessImage,
+						headpic:this.uploadMentuzImage,
+						firstClubType:this.isOrganizationType, //机构类型分类 医美:0和生美:1
+						secondClubType:this.secondClubType,		//机构类型二级分类 诊所:1,门诊:2,医院:3
+						department:this.department,				//科室
+						medicalPracticeLicenseImg:this.uploadMedicalImage,//资质图片
+						isAgreed:this.isAgreed,				//是否勾选协议	
+						mainpro:this.mainpro,
+						fax:this.clubFax,
+						contractPhone:this.clubTelePhone,
+						info : this.companyPprofile
+				}
+				console.log(params)
+				organizationUpdate(params).then(response =>{
+					this.$util.msg(response.msg,2000);
+					setTimeout(()=>{
+						this.$api.switchTabTo('/pages/tabBar/user/user')
+					},2000)
+				}).catch(response =>{
+					this.$util.msg(response.msg,2000);
+				})
+			},
+			getMobileCodeFn(){
+				if( this.mobile == ''){
+					this.$util.msg('请输入手机号',2000);
+					return
+				}
+				if(!this.$reg.isMobile(this.mobile)){
+					this.$util.msg('请输入正确的手机号',2000);
+					return
+				}
+				let params = { mobile : this.mobile }
+				this.isMobileDisabled = true;
+				getClubMobileCode(params).then(response =>{
+					this.$util.msg('验证短信已发送',2000);
+					const TIME_COUNT = 60;
+			     	if (!this.codeTime) {
+			       		this.count = TIME_COUNT;
+			       		this.isMobileDisabled = true;
+			       		this.codeTime = setInterval(() => {
+			       			if (this.count > 1 && this.count <= TIME_COUNT) {
+			         			this.count--
+			         			this.mobileCodeText = this.count +'s重新发送'
+			        		} else {
+				         		this.isMobileDisabled = false;
+				         		clearInterval(this.codeTime)
+				         		this.codeTime = null
+								this.mobileCodeText = '获取验证码'
+			        		}
+			       		},1000)
+			      	}		
+				}).catch( response =>{
+					this.$util.msg(response.msg,2000);
+					this.isMobileDisabled = false;
+				})
+			},
+			getNewMobileCodeFn(){
+				if( this.newMobile == ''){
+					this.$util.msg('请输入手机号',2000);
+					return
+				}
+				if(!this.$reg.isMobile(this.newMobile)){
+					this.$util.msg('请输入正确的手机号',2000);
+					return
+				}
+				let params = { newMobile : this.newMobile }
+				this.isNewMobileDisabled = true;
+				getClubNewMobileCode(params).then(response =>{
+					this.$util.msg('验证短信已发送',2000);
+					const TIME_COUNT = 60;
+			     	if (!this.codeTimeNew) {
+			       		this.newCount = TIME_COUNT;
+			       		this.isNewMobileDisabled = true;
+			       		this.codeTimeNew = setInterval(() => {
+			       			if (this.newCount > 1 && this.newCount <= TIME_COUNT) {
+			         			this.newCount
+			         			this.newMobileCodeText = this.newCount +'s重新发送'
+			        		} else {
+				         		this.isNewMobileDisabled = false;
+				         		clearInterval(this.codeTimeNew)
+				         		this.codeTimeNew = null
+								this.newMobileCodeText = '获取验证码'
+			        		}
+			       		},1000)
+			      	}
+				}).catch( res =>{
+					this.$util.msg(response.msg,2000);
+					this.isNewMobileDisabled = false;
+				})
+			},
+			// 三级联动选择
+			showMulLinkageThreePicker() {
+				this.isShowInput = true
+				this.$refs.mpvueCityPicker.show()
+			},
+			onConfirm(e) {
+				console.log('地址',e);
+				this.addressData.address = e.name;
+				this.addressData.townID = e.townCode;
+				this.addressData.cityID = e.cityCode;
+				this.addressData.provinceID = e.provinceCode;
+			},	
+			onTextareaInput(e){
+			   this.addressData.addressDetail = e.detail.value;
+			},
+			chooseBusinessImage() {//营业执照图片上传
+				uploadFileImage().then(res =>{
+					this.uploadBusinessImage = JSON.parse(res.data).data
+				})
+			},
+			chooseMentuzImage() {//门头照图片上传
+				uploadFileImage().then(res =>{
+					this.uploadMentuzImage = JSON.parse(res.data).data
+				})
+			},
+			chooseMedicalImage() {//资质照图片上传
+				uploadFileImage().then(res =>{
+					this.uploadMedicalImage = JSON.parse(res.data).data
+				})
+			},
+			viewBusinessImage(e) {
+				this.myPreviewImageFn(this.uploadBusinessImage)
+			},
+			viewMentuzImage(e) {
+				this.myPreviewImageFn(this.uploadMentuzImage)
+			},
+			viewMedicalImage(e) {
+				this.myPreviewImageFn(this.uploadMedicalImage)
+			},
+			myPreviewImageFn(url){
+				this.isPreviewImage = true
+				let mentuzArray = []
+				mentuzArray.push(url)
+				uni.previewImage({
+					urls: mentuzArray,
+					current: 0
+				});
+			},
+			delBusinessImage(){
+				this.$util.modal('','确定删除营业执照图片吗?','确定','取消',true,() =>{
+					 this.uploadBusinessImage = ''
+				})
+			},
+			delMentuzImage(){
+				this.$util.modal('','确定删除门头照图片吗?','确定','取消',true,() =>{
+					this.uploadMentuzImage = ''
+				})
+			},			
+			delMedicalImage(){
+				this.$util.modal('','确定删除资质图片吗?','确定','取消',true,() =>{
+					this.uploadMedicalImage = ''
+				})
+			},
+			bindPickerChange() {
+				let self = this
+				uni.showActionSheet({
+					title:'标题',
+					itemList: ['医美', '生美'],
+					success: (e) => {
+						self.isOrganizationType = e.tapIndex+1
+						switch(e.tapIndex){
+							case 0:
+								this.organizationTypeText = '医美'
+								break;
+							case 1:
+								this.organizationTypeText = '生美'
+								break;
+						}
+					}
+				})
+			
+			},
+			bindPickerChange2(e) {
+				console.log('picker携带值为:' + e.target.value)
+				this.typtIndex = e.target.value
+				this.isOrganizationType = e.target.value
+			},
+			radioChange(e) {
+				this.secondClubType = e.target.value;
+				if( this.secondClubType == '2' || this.secondClubType == '3'){
+					this.isDepartment = true
+				}else{
+					this.isDepartment = false
+				}
+				for (let i = 0; i < this.beautyList.length; i++) {
+					if (this.beautyList[i].value === this.secondClubType) {
+						this.current = i;
+						break;
+					}
+				}
+			},
+			chooseMaleLike(e){
+				this.isMainproCheck = true
+				this.mainpro = this.checkLikes(e,this.mentuzCampList)
+				console.log(this.mainpro)
+			},
+			chooseMaleLikes(e){
+				this.isMainproCheck = true
+				this.mainpro = this.checkLikes(e,this.medicaCampList)
+				console.log(this.mainpro)
+			},
+			checkLikes(e,list){
+				let items = list
+				let	values = e.detail.value
+				let arr = []
+				for (let i = 0, lenI = items.length; i < lenI; ++i) {
+					const item = items[i]
+					if(values.indexOf(item.value) >= 0){
+						this.$set(item,'checked',true)
+						arr.push(item.name)
+					}else{
+						this.$set(item,'checked',false)
+					}
+				}
+				return arr.join('/')
+			},
+			agreeCheck() {
+				this.isCheck = !this.isCheck
+				if(this.isCheck){
+					this.isAgreed = 1
+				}
+			},
+			onBlurInput(e){//
+				if(e.detail.value ===''){
+					this.isDisabled = true
+				}else{
+					this.isDisabled = false
+				}
+			},
+			showAustomItem() {
+				this.isShowAustomItem = !this.isShowAustomItem
+			},
+			setNewMainpro(arr){//回显处理主营内容
+				let _ARRAY = []
+				arr.split('/').forEach((item,index) =>{
+					let _OBJ = {value:index,name:item,checked:true}
+					_ARRAY.push(_OBJ)
+				})
+				return _ARRAY
+			},
+			addCustomItem(){
+				if(this.isOrganizationType == 0){
+					let item = {value:`${this.mentuzCampList.length+1}`,name:this.customItemValue,checked:true}
+					this.mentuzCampList.push(item)
+				}else{
+					let item = {value:`${this.medicaCampList.length+1}`,name:this.customItemValue,checked:true}
+					this.medicaCampList.push(item)
+				}
+			},
+			showCheckPhone(){//控制修改手机显隐
+				this.isShowCheckPhone = !this.isShowCheckPhone
+			},
+			steps(index) {//$attrstab切换
+				console.log(index)
+				this.tabCurrentIndex = index;
+			}
+		},
+		onShow() {
+			if(this.isPreviewImage){
+				this.isPreviewImage = false
+				return
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.register{
+		width: 100%;
+		height: auto;
+		border-top: 1px solid #F7F7F7;
+		.model-warp.none{
+			display: none;			
+		}
+		.model-warp.show{
+			display: block;
+		}
+		.register-main{
+			width: 100%;
+			height: auto;
+			&.detailed{
+				padding-bottom: 300rpx;
+			}
+			&.first{
+				padding-top: 40rpx;
+			}
+			.register-tips{
+				display: flex;
+				flex-direction: column;
+				align-items: center;
+				line-height: 44rpx;
+				font-size: $font-size-24;
+				color: #FF0000;
+				margin-bottom: 40rpx;
+				.iconfont{
+					font-size: $font-size-24;
+				}
+			}
+			.register-row{
+				width: 702rpx;
+				height: auto;
+				padding: 0 24rpx;
+				margin-bottom: 20rpx;
+				.register-title{
+					line-height: 60rpx;
+					font-size: $font-size-32;
+					color: $text-color;
+					text-align: left;
+					padding-left: 20rpx;
+					.txt{
+						font-size: $font-size-26;
+						font-weight: normal;
+					}
+				}
+				.row-btn{
+					position: absolute;
+					right: 24rpx;
+					top: 0;
+					line-height: 88rpx;
+					text-align: center;
+					font-size: $font-size-28;
+					color: $color-system;
+				}
+				.register-from{
+					width: 654rpx;
+					height: 40rpx;
+					padding: 24rpx;
+					background: $sub-bg-color;
+					border-radius: 14rpx;
+					position: relative;
+					.label{
+						text-align: left;
+						font-size: $font-size-28;
+						color: #666666;
+						line-height: 40rpx;
+						float: left;
+					}
+					.row-input{
+						width: 440rpx;
+						padding-left:10rpx;
+						font-size: $font-size-28;
+						color: $text-color;
+						line-height: 40rpx;
+						float: left;
+						height: 40rpx;
+						&.none{
+							color: #999999;
+						}
+						&.picker{
+							text-align: left;
+							color: #999999;
+						}
+						&.keshi{
+							width: 550rpx;
+						}
+					}
+					&.code{
+						width: 410rpx;
+						float: left;
+						margin-right: 20rpx;
+						.row-input{
+							width: 390rpx;
+						}
+					}
+					&.btn{
+						width: 224rpx;
+						height: 88rpx;
+						float: left;
+						background: $btn-confirm;
+						padding: 0;
+						.row-input{
+							width: 224rpx;
+							height: 88rpx;
+							line-height: 88rpx;
+							padding: 0;
+							color: #FFFFFF;
+							background: $btn-confirm;
+							text-align: center;
+							border-radius: 14rpx;
+							&.other{
+								width: 224rpx;
+								background: #F7F7F7;
+								margin-right: 20rpx;
+							}
+							&.none{
+								background: #F7F7F7;
+							}
+						}
+						&.disabled{
+							background: #F7F7F7;
+							.row-input{
+								background: #F7F7F7;
+								color: #999999;
+							}
+						}
+					}
+					&.picker{
+						padding: 0 24rpx;
+						width: 654rpx;
+						height: 88rpx;
+						line-height: 88rpx;
+						.label{
+							line-height: 88rpx;
+						}
+						.row-input{
+							width: 470rpx;
+							height: 88rpx;
+							line-height: 88rpx;
+							padding-left: 30rpx;
+						}
+					}
+					&.radio{
+						padding: 0 24rpx;
+						width: 654rpx;
+						height: 288rpx;
+						.row-input{
+							width: 100%;
+							height: 88rpx;
+							line-height: 88rpx;
+							padding-left: 0;
+						}
+						.row-radio{
+							float: left;
+							transform: scale(0.8);
+						}
+						.row-text{
+							width: 100rpx;
+							text-align: center;
+							float: left;
+						}
+					}
+					&.group{
+						padding: 0 24rpx;
+						width: 654rpx;
+						height: auto;
+						background: #FFFFFF;
+						margin-top: 30rpx;
+						.row-input{
+							width: 100%;
+							height: 88rpx;
+							line-height: 88rpx;
+							padding-left: 0;
+						}
+						.row-radio{
+							float: left;
+						}
+						.row-text{
+							width: 100rpx;
+							text-align: center;
+							float: left;
+						}
+					}
+					&.btn{
+						margin-top: 0;
+					}
+					.content-class {
+						width: 520rpx;
+						margin: 20rpx auto;
+						display: flex;
+						flex-flow: row wrap;
+						justify-content: space-between;
+						&.btn{
+							margin: 0 auto;
+							margin-left: 126rpx;
+						}
+						.row-input{
+							display: flex;
+							width: 220rpx;
+							height: 40rpx;
+							padding: 24rpx;
+							text-align: left;
+							border-radius: 10rpx;
+							font-size: $font-size-28;
+							color: $text-color;
+						}
+						.confirm-btn{
+							width: 200rpx;
+							height: 88rpx;
+							border-radius: 10rpx;
+							line-height: 88rpx;
+							text-align: center;
+							&.none{
+								color: #FFFFFF;
+								background: $btn-confirm;
+							}
+							&.disabled{
+								color: #999999;
+							}
+						}
+						.item {
+						  width: 155rpx;
+						  height: 60rpx;
+						  font-size:$font-size-28;
+						  line-height: 60rpx;
+						  border-radius:10rpx;
+						  margin: 10rpx;
+						  text-align: center;
+						  box-sizing: border-box;
+						  border: 1rpx solid #EFEFEF;
+						  checkbox {
+							display: none;
+						  }
+						}
+						.on {
+						  border-color: $color-system;
+						  color:$color-system;
+						}
+					}
+				}
+				.icon-xiayibu{
+					width: 88rpx;
+					height: 88rpx;
+					position: absolute;
+					right: 0;
+					top: 0;
+					line-height: 88rpx;
+					text-align: center;
+				}
+				&.text-textarea{
+					background: #FFFFFF;
+					.textarea{
+						width: 654rpx;
+						height: 180rpx;
+						background: #F7F7F7;
+						padding: 24rpx;
+						font-size: $font-size-28;
+						color: $text-color;
+						z-index: 1;
+						border-radius: 14rpx;
+					}
+					.textarea.hide{
+						opacity: 0;
+					}
+					.textarea.show{
+						color: #999999;
+					}
+				}
+			}
+			.register-picture{
+				height: 102rpx;
+				margin: 40rpx 0 0 0;
+				.label{
+					float: left;
+					font-size: $font-size-28;
+					color: $text-color;
+					line-height: 102rpx;
+					width: 150rpx;
+					text-align: right;
+					&.zz{
+						width: 230rpx;
+					}
+				}
+				.upload-picture{
+					float: left;
+					height: 100rpx;
+					.upload-none{
+						width: 100rpx;
+						height: 100rpx;
+						text-align: center;
+						line-height: 100rpx;
+						color: #999999;
+						border: 1px solid #999999;
+						border-radius: 10rpx;
+						margin: 0 20rpx;
+						.iconfont{
+							font-size: $font-size-28;
+						}
+					}
+					.upload-image{
+						width: 100rpx;
+						height: 100rpx;
+						border-radius: 10rpx;
+						margin: 0 20rpx;
+						position: relative;
+						image{
+							width: 100rpx;
+							height: 100rpx;
+							border-radius: 10rpx;
+						}
+						.upload-del{
+							width: 40rpx;
+							height: 40rpx;
+							position: absolute;
+							top: -20rpx;
+							right: -20rpx;
+							line-height: 40rpx;
+							text-align: center;
+							.iconfont{
+								font-size: $font-size-32;
+								color: #999999;
+							}
+						}
+					}
+				}
+			}
+			.register-input{
+				width: 654rpx;
+				height: 40rpx;
+				padding: 24rpx;
+				margin: 0 auto;
+				margin-bottom: 60rpx;
+				background: #F7F7F7;
+				border-radius: 14rpx;
+				.input{
+					width: 100%;
+					height: 100%;
+					background: #F7F7F7;
+					font-size: $font-size-28;
+					line-height: 40rpx;
+					color: #333333;
+					border-radius: 14rpx;
+				}
+			}
+			.register-fiexd{
+				width: 100%;
+				height: auto;
+				padding: 20rpx 0;
+				position: fixed;
+				bottom: 0;
+				left: 0;
+				z-index: 99;
+				background: #FFFFFF;
+				.register-agree{
+					display: flex;
+					flex-direction: column;
+					align-items: center;
+					margin: 32rpx 0;
+					.agree-text{
+						.checkbox{
+							float: left;
+							margin: 4rpx 6rpx 0 0;
+							color: #999999;
+							font-size: $font-size-32;
+							&.icon-gouxuan{
+								color: $color-system;
+							}
+						}
+						font-size: 20rpx;
+						line-height: 44rpx;
+						color: #999999;
+						text{
+							color:#0091FF;
+						}
+					}
+				}
+			}
+			.register-btn{
+				width: 702rpx;
+				height: 88rpx;
+				border-radius: 14rpx;
+				font-size: $font-size-28;
+				line-height: 88rpx;
+				color: #FFFFFF;
+				margin: 0 auto;
+				text-align: center;
+				background: $btn-confirm;
+				margin-top: 96rpx;
+				&.none{
+					background: #FFFFFF;
+					color: $text-color;
+					margin-top: 0;
+				}
+				&.sub{
+					margin-top: 0;
+				}
+			}
+		}
+	}
+</style>

+ 1176 - 0
market/pages/login/register.vue

@@ -0,0 +1,1176 @@
+<template>
+	<view class="container register">
+		<view class="register-tab">
+			<view class="nav-item" :class="{ current: tabCurrentIndex === 1 }" >
+				  账户信息<view class="line"></view>
+			</view>					
+			<view class="nav-item" :class="{ current: tabCurrentIndex === 2 }" >
+				  基本信息<view class="line"></view>
+			</view>
+			<view class="nav-item" :class="{ current: tabCurrentIndex === 3 }" >
+				  详细信息
+			</view>
+		</view>
+		<view class="register-main clearfix" v-if="tabCurrentIndex === 1">
+			<view class="register-row clearfix">
+				<view class="register-from">
+					<view class="label">邮箱:</view>
+					<input class="row-input" type="text" name="input" v-model="registerEmail" placeholder="请输入您的常用邮箱" maxlength="30"/>
+				</view>
+			</view>
+			<view class="register-row clearfix">
+				<view class="register-from code">
+					<view class="label">邮箱验证码:</view>
+					<input class="row-input" type="text"  name="input" v-model="regEmailCode" placeholder="请输入邮箱验证码" maxlength="4"/>
+				</view>
+				<view class="register-from btn" :class="[isEmialDisabled ? 'disabled' : '']">
+					<button class="row-input"  
+							type="button"  
+							@click.stop="getEmailCodeFn"  
+							:disabled="isEmialDisabled">
+							{{ emailCodeText }}
+					</button>
+				</view>
+			</view>
+			<view class="register-row clearfix">
+				<view class="register-from">
+					<view class="label">登录密码:</view>
+					<input class="row-input" type="password" name="input" v-model="password" placeholder="密码必须为8-16位字母数字组合" maxlength="16"/>
+				</view>
+			</view>
+			<view class="register-row clearfix">
+				<view class="register-from">
+					<view class="label">确认密码:</view>
+					<input class="row-input" type="password" name="input" v-model="passwordCheck" placeholder="请确认密码" maxlength="16"/>
+				</view>
+			</view>
+			<view class="register-row clearfix">
+				<view class="register-btn"  @click="registerStepsfirst">下一步</view>
+			</view>
+			<view class="register-row">
+				<view class="register-text">
+					<text class="txt">注:</text>
+					<text>邮件可能存在1-2分钟的延迟,同时请留意垃圾箱邮件!</text>
+				</view>
+			</view>
+		</view>
+		<view class="register-main clearfix" v-if="tabCurrentIndex === 2">
+			<view class="register-row clearfix">
+				<view class="register-from">
+					<view class="label">机构名称:</view>
+					<input class="row-input" type="text" name="input" v-model="clubName" placeholder="请输入您的机构名称" maxlength="30"/>
+				</view>
+			</view>
+			<view class="register-row clearfix">
+				<view class="register-from">
+					<view class="label">联系人:</view>
+					<input class="row-input" type="text" name="input" v-model="clubContact" placeholder="请输入联系姓名" maxlength="6"/>
+				</view>
+			</view>
+			<view class="register-row clearfix">
+				<view class="register-from">
+					<view class="label">手机号:</view>
+					<input class="row-input" type="number" name="input" v-model="registerMobile" placeholder="请输入手机号" maxlength="11"/>
+				</view>
+			</view>
+			<view class="register-row clearfix">
+				<view class="register-from imgcode">
+					<view class="label">图形验证码:</view>
+					<input class="row-input" type="text" name="input" v-model="imageCode" placeholder="请输入图形验证码" maxlength="4"/>
+				</view>
+				<view class="register-from img-btn">
+					<view class="vscodeimg">
+						<image :src="imageCodeUrl" mode=""></image>
+					</view>
+					<view class="vscod-refresh" @click.stop="getVerificationCode">
+						<text class="iconfont icon-shuaxin"></text>
+						<text class="ref-text">刷新</text>
+					</view>
+				</view>
+			</view>
+			<view class="register-row clearfix">
+				<view class="register-from code">
+					<view class="label">短信验证码:</view>
+					<input class="row-input" type="text" v-model="mobileCode" placeholder="请输入短信验证码" maxlength="6"/>
+				</view>
+				<view class="register-from btn" :class="[isMobileDisabled  ? 'disabled' : '']" >
+					<button class="row-input"  
+							type="button" 
+							@click.stop="getMobileCodeFn" 
+							:disabled="isMobileDisabled">
+							{{ mobileCodeText }}
+					</button>
+				</view>
+			</view>
+			<view class="register-row clearfix">
+				<view class="register-btn"  @click="registerStepsTwo">下一步</view>
+			</view>
+			<view class="register-row clearfix">
+				<view class="register-btn none"  @click="steps(1)">上一步</view>
+			</view>
+		</view>
+		<view class="register-main detailed clearfix" v-if="tabCurrentIndex === 3">
+			<view class="register-tips"><text class="iconfont icon-gantanhao-yuankuang">详细信息请尽量填写,有利于快速审核通过</text></view>
+			<view class="register-row clearfix">
+				<view class="register-from">
+					<view class="label">机构简称:</view>
+					<input class="row-input" type="text" v-model="abbreviation" placeholder="请输入您的机构简称" maxlength="10"/>
+				</view>
+			</view>
+			<view class="register-row clearfix">
+				<view class="register-from"  @click="showMulLinkageThreePicker">
+					<view class="label">机构地址:</view>
+					<text class="row-input" :class="addressData.address === '请选择机构所在地区' ? 'none' : ''">
+						{{addressData.address}}
+					</text>		
+					<text class="iconfont icon-xiayibu"></text>
+				</view>
+			</view>
+			<view class="register-row text-textarea clearfix">
+				<view class="textarea show" v-if="isShowInput">{{addressData.addressDetail ? addressData.addressDetail :'详细地址:如道路、门牌号、小区等'}}</view>
+				<textarea 	v-else
+							class="textarea" 
+							type="text" 
+							v-model="addressData.addressDetail" 
+							placeholder="详细地址:如道路、门牌号、小区等" 
+							placeholder-class="placeholder"
+							maxlength="25"
+							@input="onTextareaInput"
+							:class="isShowInput ? '':''"
+				/>
+			</view>
+			<view class="register-row clearfix" >
+				<view class="register-from">
+					<view class="label">营业执照编号:</view>
+					<input class="row-input" type="text" v-model="socialCreditCode" placeholder="请填写社会统一信用代码" maxlength="16"/>
+				</view>
+			</view>
+			<view class="register-row clearfix">
+				<view class="register-picture">
+					<view class="label">营业执照:</view>
+					<view class="upload-picture">
+						<view class="upload-none" v-if="uploadBusinessImage === ''"  @click="chooseBusinessImage"><text class="iconfont icon-jiahao"></text></view>
+						<view class="upload-image" v-else>
+							<image :src="uploadBusinessImage" mode="" @click="viewBusinessImage"></image>
+							<view class="upload-del" @click="delBusinessImage">
+								<text class='iconfont icon-shanchu1'></text>
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+			<view class="register-row clearfix">
+				<view class="register-picture">
+					<view class="label">门头照:</view>
+					<view class="upload-picture">
+						<view class="upload-none" v-if="uploadMentuzImage === ''" @click="chooseMentuzImage"><text class="iconfont icon-jiahao"></text></view>
+						<view class="upload-image" v-else>
+							<image :src="uploadMentuzImage" mode=""  @click="viewMentuzImage"></image>
+							<view class="upload-del" @click="delMentuzImage">
+								<text class='iconfont icon-shanchu1'></text>
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+			<view class="register-row clearfix">
+				<view class="register-from picker">
+					<view class="label">机构类型:</view>
+						<view class="row-input picker" @click="bindPickerChange">{{ organizationTypeText }}</view>
+<!-- 					<picker @change="bindPickerChange" :value="index" :range="organizationTypeList" range-key="name">
+						<view class="row-input" :class="[isOrganizationType == 0 ? 'none' : '']">{{organizationTypeList[typtIndex].name}}</view>
+					</picker> -->
+					<text class="iconfont icon-xiayibu"></text>
+				</view>
+			</view>
+			<view class="register-row clearfix" v-if="isOrganizationType == 1" >
+				<view class="register-from radio">
+					<radio-group @change="radioChange">
+						<label class="row-input" v-for="(item, index) in beautyList" :key="item.value">
+							<radio class="row-radio" :value="item.value" :checked="index === current" color="#E15616"/>
+							<view class="row-text">{{item.name}}</view>
+						</label>
+					</radio-group>
+				</view>
+			</view>
+			<view class="register-row clearfix" v-show="isDepartment" >
+				<view class="register-from">
+					<view class="label">科室:</view>
+					<input class="row-input keshi" type="text" v-model="department" placeholder="请填写经营的科室,至少三个,用逗号隔开" maxlength="16"/>
+				</view>
+			</view>
+			<view class="register-row clearfix" v-if="isOrganizationType == 1">
+				<view class="register-picture">
+					<view class="label zz">医疗执业许可证:</view>
+					<view class="upload-picture">
+						<view class="upload-none" v-if="uploadMedicalImage === ''" @click="chooseMedicalImage"><text class="iconfont icon-jiahao"></text></view>
+						<view class="upload-image" v-else>
+							<image :src="uploadMedicalImage" mode=""  @click="viewMedicalImage"></image>
+							<view class="upload-del" @click="delMedicalImage">
+								<text class='iconfont icon-shanchu1'></text>
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+			<view class="register-row clearfix" v-if="isOrganizationType == 1">
+				<view class="register-from group">
+					<view class="label">主营内容:</view>
+					<checkbox-group class="content-class" @change="chooseMaleLike" >
+						<label class="item" v-for="(item, index) in mentuzCampList" :key="index" :class="{on: item.checked}">
+						   <checkbox :value="item.value"></checkbox>
+						   <text class="item-text">{{item.name}}</text>
+						</label>
+				    </checkbox-group>
+				</view>	
+				<view class="register-from group btn">
+					<view class="content-class btn">
+						<view class="item" @click="showAustomItem">
+							<text class="item-text">其他</text>
+						</view>
+					</view>
+				</view>
+				<view class="register-from group btn" v-show="isShowAustomItem">
+					<view class="content-class btn">
+						<input class="row-input other" type="text" v-model="customItemValue" placeholder="请输入自定义项目"  @blur="onBlurInput" maxlength="5"/>
+						<button type="default" 
+								class="confirm-btn other" 
+								:class="[isDisabled === true ? 'disabled' : 'none']" 
+								:disabled="isDisabled"
+								@click.stop="addCustomItem"
+						>确认添加</button>
+					</view>
+				</view>
+			</view>
+			<view class="register-row clearfix" v-if="isOrganizationType == 2">
+				<view class="register-from group">
+					<view class="label">主营内容:</view>
+					<checkbox-group class="content-class" @change="chooseMaleLikes">
+						<label class="item" v-for="(item, index) in medicaCampList" :key="index" :class="{on: item.checked}">
+						   <checkbox :value="item.value"></checkbox>
+						   <text class="item-text">{{item.name}}</text>
+						</label>
+				    </checkbox-group>
+				</view>	
+				<view class="register-from group btn">
+					<view class="content-class btn">
+						<view class="item" @click="showAustomItem">
+							<text class="item-text">其他</text>
+						</view>
+					</view>
+				</view>
+				<view class="register-from group btn" v-show="isShowAustomItem">
+					<view class="content-class btn">
+						<input class="row-input other" type="text" v-model="customItemValue" placeholder="请输入自定义项目"  @blur="onBlurInput" maxlength="5"/>
+						<button type="default" 
+								class="confirm-btn" 
+								:class="[isDisabled === true ? 'disabled' : 'none']" 
+								:disabled="isDisabled"
+								@click.stop="addCustomItem"
+						>确认添加</button>
+					</view>
+				</view>
+			</view>
+			<view class="register-fiexd clearfix">
+				<view class="register-agree">
+					<view class="agree-text"  @tap.stop="agreeCheck()">
+						<button class="checkbox iconfont" :class="[isCheck?'icon-gouxuan':'icon-weigouxuan']"></button> 
+						我已阅读并同意
+						<text @click.stop="this.$api.navigateTo('/pages/service/organagree')">《机构协议》</text>
+						<text @click.stop="this.$api.navigateTo('/pages/service/useragree')">《用户协议》</text>及
+						<text @click.stop="this.$api.navigateTo('/pages/service/privacyagree')">《隐私权政策》</text>
+					</view>
+				</view>
+				<view class="register-row ">
+					<view class="register-btn sub" @click.stop="registerStepsSub">提交审核</view>
+				</view>
+				<view class="register-row clearfix">
+					<view class="register-btn none"  @click="steps(2)">上一步</view>
+				</view>
+			</view>
+			<mpvue-city-picker :themeColor="themeColor"
+								ref="mpvueCityPicker" 
+							    :pickerValueDefault="cityPickerValueDefault"
+								@onCancel="onCancel" 
+								@onConfirm="onConfirm">
+			</mpvue-city-picker>
+		</view>
+	</view>
+</template>
+
+<script>
+	import { mapMutations } from 'vuex';
+	import mpvueCityPicker from '@/components/mpvue-citypicker/mpvueCityPicker.vue'
+	import authorize from '@/common/config/authorize.js' 
+	import { organizationRegister , organizationVerifyRegisterFirst ,organizationVerifyRegisterTwo } from "@/api/use.js"
+	import { getImageCode, getEmailCode, getMobileCode, uploadFileImage } from "@/api/utils.js"
+	var self;
+	export default{
+		components:{
+			mpvueCityPicker
+		},
+		data() {
+			return{
+				nvabarData: {		//顶部自定义导航
+					showCapsule: 1, // 是否显示左上角图标  1表示显示  0表示不显示,
+					showSearch: 0,
+					title: '注册', // 导航栏 中间的标题
+				},
+				CustomBar:this.CustomBar,// 顶部导航栏高度
+				tabCurrentIndex:1,			//显示step
+				isPreviewImage:false,   	//预览图片开关
+				isEmialDisabled: false,		//验证码按钮控制
+				isMobileDisabled: false,	//手机验证码按钮控制
+			    count: '',					//倒计时
+			    emailCodeText: '获取验证码',
+			    mobileCodeText: '获取验证码',
+			    codeTime: null,
+				registerEmail:'', 		//注册邮箱
+				regEmailCode:'',  		//邮箱验证码
+				password:'',			//密码
+				passwordCheck:'',		//校验密码
+				clubName:'',	 		//机构名称
+				abbreviation:'',	 	//机构简称
+				clubContact:'',	 		//联系人
+				registerMobile:'',		//联系人手机号
+				mobileCode:'',			//手机验证码
+				imageCode:'',			//图形验证码
+				imageCodeUrl:'',		//图形验证码图片
+				imageCodetoken:'',		//图形验证校验
+				socialCreditCode:'',	//统一社会信用代码
+				isAgreed:0,				//是否勾选协议
+				isDisabled:true,
+				isShowInput:false,
+				isCheck:false,			//是否勾选协议
+				uploadBusinessImage:'',	//营业执照图片
+				uploadMentuzImage:'',  	//门头照图片
+				uploadMedicalImage:'', 	//资质照图片
+				department:'',			//科室
+				isDepartment:false,     //是否显示科室
+				secondClubType:'',		//机构类型二级分类
+				mainpro:'',				//主营内容
+				isOrganizationType:0,
+				organizationTypeText:'请选择机构类型',
+				beautyList:[{value:'1',name:'诊所'},{value:'2',name:'门诊'},{value:'3',name:'医院'}],
+				mentuzCampList:[{value:'1',name:'整形'},{value:'2',name:'轻医美'},{value:'3',name:'皮肤科'}],
+				medicaCampList:[
+					{value:'1',name:'美容'},
+					{value:'2',name:'美体'},
+					{value:'3',name:'美发'},
+					{value:'4',name:'皮肤管理'},
+					{value:'5',name:'光电'},
+					{value:'6',name:'综合类'},
+					{value:'7',name:'中医养生'},
+					{value:'8',name:'spa'}
+				],
+				typtIndex:0,
+				organizationType:3,
+				current:0,
+				isShowAustomItem:false, //是否显示其他添加
+				customItemValue:'', 	//自定义项目
+				addressData:{
+					address:'请选择机构所在地区',
+					townID:'',			//区ID
+					cityID:'',			//区ID
+					provinceID:'',		//区ID
+					addressDetail: '',	//地址
+				},
+			}
+		},
+		onLoad(option) {
+			console.log(option)
+		},
+		methods:{
+			hanldNavigateBack(){
+				this.$util.modal('','注册尚未完成,确定放弃注册吗?','确定','取消',true,() =>{
+					uni.navigateBack({
+						delta: 1
+					});
+				})
+			},
+			registerStepsfirst(){
+				let params ={
+						email:this.registerEmail,
+						mailboxCode:this.regEmailCode,
+						password:this.password,
+						passWordConfirm:this.passwordCheck,
+						whichStep:1,
+				}
+				organizationVerifyRegisterFirst(params).then(res =>{
+					console.log(res)
+					this.tabCurrentIndex = 2
+					this.getVerificationCode()
+				}).catch(res =>{
+					this.$util.msg(res.msg,2000);
+				})
+			},
+			registerStepsTwo(){
+				let params ={
+						name:this.clubName,
+						linkMan:this.clubContact,
+						bindMobile:this.registerMobile,
+						activationCode:this.mobileCode,
+						whichStep:2,
+				}
+				organizationVerifyRegisterTwo(params).then(res =>{
+					console.log(res)
+					this.tabCurrentIndex = 3
+				}).catch(res =>{
+					this.$util.msg(res.msg,2000);
+				})
+			},
+			registerStepsSub(){
+				if(!this.isCheck){
+					this.$util.msg('请勾选同意协议',2000);
+					return
+				}
+				let params ={
+						email:this.registerEmail,
+						mailboxCode:this.regEmailCode,
+						password:this.password,
+						passWordConfirm:this.passwordCheck,
+						name:this.clubName,
+						linkMan:this.clubContact,
+						bindMobile:this.registerMobile,
+						activationCode:this.mobileCode,
+						sname:this.abbreviation,
+						provinceID:this.addressData.provinceID,
+						cityID:this.addressData.cityID,
+						townID:this.addressData.townID,
+						address:this.addressData.addressDetail,
+						socialCreditCode:this.socialCreditCode,
+						businessLicenseImage:this.uploadBusinessImage,
+						headpic:this.uploadMentuzImage,
+						firstClubType:this.isOrganizationType, //机构类型分类 医美:0和生美:1
+						secondClubType:this.secondClubType,	//机构类型二级分类 诊所:1,门诊:2,医院:3
+						department:this.department,			//科室
+						medicalPracticeLicenseImg:this.uploadMedicalImage,//资质图片
+						isAgreed:this.isAgreed,				//是否勾选协议	
+						mainpro:this.mainpro,
+						whichStep:3
+				}
+				organizationRegister(params).then(res =>{
+					this.$util.msg('您的机构账号已提交审核',2000);
+					this.$api.switchTabTo('/pages/tabBar/home/home')
+				}).catch(res =>{
+					this.$util.msg(res.msg,2000);
+				})
+			},
+			getEmailCodeFn(){
+				if( this.registerEmail == ''){
+					this.$util.msg('请输入邮箱地址',2000);
+					return
+				}
+				if(!this.$reg.isEmail(this.registerEmail)){
+					this.$util.msg('请输入正确的邮箱地址',2000);
+					return
+				}
+				this.isEmialDisabled = true;
+				getEmailCode({email:this.registerEmail,status:2}).then(res =>{
+					this.$util.msg('邮箱验证码已发送',2000);
+					const TIME_COUNT = 60;
+			     	if (!this.codeTime) {
+			       		this.count = TIME_COUNT;
+						this.isEmialDisabled = true;
+			       		this.codeTime = setInterval(() => {
+			       			if (this.count > 1 && this.count <= TIME_COUNT) {
+			         			this.count--
+			         			this.emailCodeText = this.count +'s重新发送'
+			        		} else {
+				         		clearInterval(this.codeTime)
+				         		this.codeTime = null
+								this.emailCodeText = '获取验证码'
+								this.isEmialDisabled = false;
+			        		}
+			       		},1000)
+			      	}
+				}).catch( res =>{
+					this.$util.msg(res.msg,2000);
+					this.isEmialDisabled = false;
+				})
+			},
+			getMobileCodeFn(){
+				if( this.registerMobile == ''){
+					this.$util.msg('请输入手机号',2000);
+					return
+				}
+				if(!this.$reg.isMobile(this.registerMobile)){
+					this.$util.msg('请输入正确的手机号',2000);
+					return
+				}
+				if( this.imageCode == ''){
+					this.$util.msg('请输入图形验证码',2000);
+					return
+				}
+				let params = {
+						mobile:this.registerMobile,
+						activateCodeType:2,
+						platformType:2,
+						imgCode:this.imageCode,
+						token:this.imageCodetoken,
+					}
+				this.isMobileDisabled = true;
+				getMobileCode(params).then(res =>{
+					this.$util.msg('验证短信已发送',2000);
+					const TIME_COUNT = 60;
+			     	if (!this.codeTime) {
+			       		this.count = TIME_COUNT;
+			       		this.isMobileDisabled = true;
+			       		this.codeTime = setInterval(() => {
+			       			if (this.count > 1 && this.count <= TIME_COUNT) {
+			         			this.count--
+			         			this.mobileCodeText = this.count +'s重新发送'
+			        		} else {
+				         		this.isMobileDisabled = false;
+				         		clearInterval(this.codeTime)
+				         		this.codeTime = null
+								this.mobileCodeText = '获取验证码'
+			        		}
+			       		},1000)
+			      	}
+				}).catch( res =>{
+					this.$util.msg(res.msg,2000);
+					this.isEmialDisabled = false;
+				})
+			},
+			getVerificationCode(){//获取图形验证
+				getImageCode().then(res => {
+					this.imageCodeUrl = res.data.baseImage
+					this.imageCodetoken = res.data.token
+				})
+			},
+			showMulLinkageThreePicker() {//三级地址联动
+				this.isShowInput = true
+				this.$refs.mpvueCityPicker.show()
+			},
+			onConfirm(e) {//获取选择的地址信息
+				console.log('地址',e);
+				this.addressData.address = e.name;
+				this.addressData.townID = e.townCode;
+				this.addressData.cityID = e.cityCode;
+				this.addressData.provinceID = e.provinceCode;
+			},	
+			onTextareaInput(e){//地址详细信息
+			   this.addressData.addressDetail = e.detail.value;
+			},
+			chooseBusinessImage() {//营业执照图片上传
+				uploadFileImage().then(res =>{
+					this.uploadBusinessImage = JSON.parse(res.data).data
+				})
+			},
+			chooseMentuzImage() {//门头照图片上传
+				uploadFileImage().then(res =>{
+					this.uploadMentuzImage = JSON.parse(res.data).data
+				})
+			},
+			chooseMedicalImage() {//资质照图片上传
+				uploadFileImage().then(res =>{
+					this.uploadMedicalImage = JSON.parse(res.data).data
+				})
+			},
+			viewBusinessImage(e) {//预览营业执照图片
+				this.myPreviewImageFn(this.uploadBusinessImage)
+			},
+			viewMentuzImage(e) {//预览门头照图片
+				this.myPreviewImageFn(this.uploadMentuzImage)
+			},
+			viewMedicalImage(e) {//预览资质照图片
+				this.myPreviewImageFn(this.uploadMedicalImage)
+			},
+			myPreviewImageFn(url){//预览图片公共方法
+				this.isPreviewImage = true
+				let mentuzArray = []
+				mentuzArray.push(url)
+				uni.previewImage({
+					urls: mentuzArray,
+					current: 0
+				});
+			},
+			delBusinessImage(){//删除营业执照图片
+				this.$util.modal('','确定删除营业执照图片吗?','确定','取消',true,() =>{
+					 this.uploadBusinessImage = ''
+				})
+			},
+			delMentuzImage(){//删除门头照图片
+				this.$util.modal('','确定删除门头照图片吗?','确定','取消',true,() =>{
+					this.uploadMentuzImage = ''
+				})
+			},			
+			delMedicalImage(){//删除资质图片
+				this.$util.modal('','确定删除资质图片吗?','确定','取消',true,() =>{
+					this.uploadMedicalImage = ''
+				})
+			},
+			bindPickerChange() {//机构类型选择
+				let self = this
+				uni.showActionSheet({
+					title:'标题',
+					itemList: ['医美', '生美'],
+					success: (e) => {
+						self.isOrganizationType = e.tapIndex+1
+						switch(e.tapIndex){
+							case 0:
+								this.organizationTypeText = '医美'
+								break;
+							case 1:
+								this.organizationTypeText = '生美'
+								break;
+						}
+					}
+				})
+			
+			},
+			bindPickerChange2(e) {
+				console.log('picker携带值为:' + e.target.value)
+				this.typtIndex = e.target.value
+				this.isOrganizationType = e.target.value
+			},
+			radioChange(e) {
+				this.secondClubType = e.target.value;
+				if( this.secondClubType == '2' || this.secondClubType == '3'){
+					this.isDepartment = true
+				}else{
+					this.isDepartment = false
+				}
+				for (let i = 0; i < this.beautyList.length; i++) {
+					if (this.beautyList[i].value === this.secondClubType) {
+						this.current = i;
+						break;
+					}
+				}
+			},
+			chooseMaleLike(e){
+				this.mainpro = this.checkLikes(e,this.mentuzCampList)
+				console.log(this.mainpro)
+			},
+			chooseMaleLikes(e){
+				this.mainpro = this.checkLikes(e,this.medicaCampList)
+				console.log(this.mainpro)
+			},
+			checkLikes(e,list){
+				let items = list
+				let	values = e.detail.value
+				let arr = []
+				for (let i = 0, lenI = items.length; i < lenI; ++i) {
+					const item = items[i]
+					if(values.indexOf(item.value) >= 0){
+						this.$set(item,'checked',true)
+						arr.push(item.name)
+					}else{
+						this.$set(item,'checked',false)
+					}
+				}
+				return arr.toString()
+			},
+			agreeCheck() {
+				this.isCheck = !this.isCheck
+				if(this.isCheck){
+					this.isAgreed = 1
+				}
+			},
+			onBlurInput(e){//
+				if(e.detail.value ===''){
+					this.isDisabled = true
+				}else{
+					this.isDisabled = false
+				}
+			},
+			showAustomItem() {
+				this.isShowAustomItem = !this.isShowAustomItem
+			},
+			addCustomItem(){
+				if(this.isOrganizationType == 1){
+					let item = {value:`${this.mentuzCampList.length+1}`,name:this.customItemValue}
+					this.mentuzCampList.push(item)
+				}else{
+					let item = {value:`${this.medicaCampList.length+1}`,name:this.customItemValue}
+					this.medicaCampList.push(item)
+				}
+			},
+			steps(index) {//$attrstab切换
+				console.log(index)
+				this.tabCurrentIndex = index;
+			}
+		},
+		onShow() {
+			if(this.isPreviewImage){
+				this.isPreviewImage = false
+				return
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.register{
+		width: 100%;
+		height: auto;
+		.model-warp.none{
+			display: none;			
+		}
+		.model-warp.show{
+			display: block;
+		}
+		.register-tab{
+			width: 570rpx;
+			height: 60rpx;
+			padding: 60rpx 90rpx;
+			position: relative;
+			.nav-item{
+				width: 142rpx;
+				background: #FFFFFF;
+				line-height: 60rpx;
+				border-radius: 30rpx;
+				text-align: center;
+				color: #999999;
+				font-size:$font-size-26;
+				float: left;
+				margin-right: 72rpx;
+				position: relative;
+				.line{
+					height: 3rpx;
+					width: 50rpx;
+					background: #999999;
+					position: absolute;
+					right: -58rpx;
+					top: 32rpx;
+				}
+				&:last-child{
+					margin-right: 0;
+				}
+				&.current{
+					color:#FFFFFF;
+					background: $btn-confirm;
+					
+				}
+			}
+		}
+		.register-main{
+			width: 100%;
+			height: auto;
+			&.detailed{
+				padding-bottom: 330rpx;
+			}
+			.register-tips{
+				display: flex;
+				flex-direction: column;
+				align-items: center;
+				line-height: 44rpx;
+				font-size: $font-size-24;
+				color: #FF0000;
+				margin-bottom: 40rpx;
+				.iconfont{
+					font-size: $font-size-24;
+				}
+			}
+			.register-row{
+				width: 702rpx;
+				height: auto;
+				padding: 0 24rpx;
+				margin-bottom: 20rpx;
+				.register-text{
+					line-height: 44rpx;
+					margin-top: 100rpx;
+					font-size: $font-size-24;
+					color: #999999;
+					text-align: justify;
+					.txt{
+						margin-right: 15rpx;
+					}
+				}
+				.register-from{
+					width: 654rpx;
+					height: 40rpx;
+					padding: 24rpx;
+					background: $sub-bg-color;
+					border-radius: 14rpx;
+					position: relative;
+					.label{
+						text-align: left;
+						font-size: $font-size-28;
+						color: $text-color;
+						line-height: 40rpx;
+						float: left;
+					}
+					.row-input{
+						width: 440rpx;
+						padding-left:10rpx;
+						font-size: $font-size-28;
+						color: $text-color;
+						line-height: 40rpx;
+						float: left;
+						height: 40rpx;
+						&.none{
+							color: #999999;
+						}
+						&.picker{
+							text-align: left;
+							color: #999999;
+						}
+						&.keshi{
+							width: 550rpx;
+						}
+					}
+					&.img-btn{
+						width: 220rpx;
+						height: 88rpx;
+						padding: 0;
+						float: left;
+						background: #FFFFFF;
+						display: block;
+						.vscodeimg{
+							width: 150rpx;
+							height: 88rpx;
+							float: left;
+							display: flex;
+							flex-direction: column;
+							align-items: center;
+							border-radius: 14rpx;
+							image{
+								width: 150rpx;
+								height: 88rpx;
+								border-radius: 14rpx;
+							}
+						}
+						.vscod-refresh{
+							width: 70rpx;
+							float: right;
+							text-align: right;
+							display: flex;
+							flex-direction: column;
+							align-items: center;
+							line-height: 44rpx;
+							.icon-shuaxin{
+								font-size: 48rpx;
+								color: #333333;
+							}
+							.ref-text{
+								font-size: 24rpx;
+								color: #333333;
+							}
+						}
+					}
+					&.imgcode{
+						width: 410rpx;
+						float: left;
+						margin-right: 20rpx;
+						.row-input{
+							width: 230rpx;
+						}
+					}
+					&.code{
+						width: 410rpx;
+						float: left;
+						margin-right: 20rpx;
+						.row-input{
+							width: 230rpx;
+						}
+					}
+					&.btn{
+						width: 224rpx;
+						height: 88rpx;
+						float: left;
+						background: $btn-confirm;
+						padding: 0;
+						.row-input{
+							width: 224rpx;
+							height: 88rpx;
+							line-height: 88rpx;
+							padding: 0;
+							color: #FFFFFF;
+							background: $btn-confirm;
+							text-align: center;
+							border-radius: 14rpx;
+							&.other{
+								width: 224rpx;
+								background: #F7F7F7;
+								margin-right: 20rpx;
+							}
+							&.none{
+								background: #F7F7F7;
+							}
+						}
+						&.disabled{
+							background: #F7F7F7;
+							.row-input{
+								background: #F7F7F7;
+								color: #999999;
+							}
+						}
+					}
+					&.picker{
+						padding: 0 24rpx;
+						width: 654rpx;
+						height: 88rpx;
+						line-height: 88rpx;
+						.label{
+							line-height: 88rpx;
+						}
+						.row-input{
+							width: 470rpx;
+							height: 88rpx;
+							line-height: 88rpx;
+							padding-left: 30rpx;
+						}
+					}
+					&.radio{
+						padding: 0 24rpx;
+						width: 654rpx;
+						height: 288rpx;
+						.row-input{
+							width: 100%;
+							height: 88rpx;
+							line-height: 88rpx;
+							padding-left: 0;
+						}
+						.row-radio{
+							float: left;
+							transform: scale(0.8);
+						}
+						.row-text{
+							width: 100rpx;
+							text-align: center;
+							float: left;
+						}
+					}
+					&.group{
+						padding: 0 24rpx;
+						width: 654rpx;
+						height: auto;
+						background: #FFFFFF;
+						margin-top: 30rpx;
+						.row-input{
+							width: 100%;
+							height: 88rpx;
+							line-height: 88rpx;
+							padding-left: 0;
+						}
+						.row-radio{
+							float: left;
+						}
+						.row-text{
+							width: 100rpx;
+							text-align: center;
+							float: left;
+						}
+					}
+					&.btn{
+						margin-top: 0;
+					}
+					.content-class {
+						width: 520rpx;
+						margin: 20rpx auto;
+						display: flex;
+						flex-flow: row wrap;
+						justify-content: space-between;
+						align-items: center;
+						&.btn{
+							margin: 0 auto;
+							margin-left: 126rpx;
+						}
+						.row-input{
+							display: flex;
+							width: 220rpx;
+							height: 40rpx;
+							padding: 24rpx;
+							text-align: left;
+							border-radius: 10rpx;
+							font-size: $font-size-28;
+							color: $text-color;
+						}
+						.confirm-btn{
+							width: 200rpx;
+							height: 88rpx;
+							border-radius: 10rpx;
+							line-height: 88rpx;
+							text-align: center;
+							&.other{
+								width: 213rpx;
+							}
+							&.none{
+								color: #FFFFFF;
+								background: $btn-confirm;
+							}
+							&.disabled{
+								color: #999999;
+							}
+						}
+						.item {
+						  width: 155rpx;
+						  height: 60rpx;
+						  font-size:$font-size-28;
+						  line-height: 60rpx;
+						  border-radius:10rpx;
+						  margin: 10rpx;
+						  text-align: center;
+						  box-sizing: border-box;
+						  border: 1rpx solid #EFEFEF;
+						  checkbox {
+							display: none;
+						  }
+						}
+						.on {
+						  border-color: $color-system;
+						  color:$color-system;
+						}
+					}
+				}
+				.icon-xiayibu{
+					width: 88rpx;
+					height: 88rpx;
+					position: absolute;
+					right: 0;
+					top: 0;
+					line-height: 88rpx;
+					text-align: center;
+				}
+				&.text-textarea{
+					background: #FFFFFF;
+					.textarea{
+						width: 654rpx;
+						height: 180rpx;
+						background: #F7F7F7;
+						padding: 24rpx;
+						font-size: $font-size-28;
+						color: $text-color;
+						z-index: 1;
+						border-radius: 14rpx;
+					}
+					.textarea.hide{
+						opacity: 0;
+					}
+					.textarea.show{
+						color: #999999;
+					}
+				}
+			}
+			.register-picture{
+				height: 102rpx;
+				margin: 40rpx 0 0 0;
+				.label{
+					float: left;
+					font-size: $font-size-28;
+					color: $text-color;
+					line-height: 102rpx;
+					width: 150rpx;
+					text-align: right;
+					&.zz{
+						width: 230rpx;
+					}
+				}
+				.upload-picture{
+					float: left;
+					height: 100rpx;
+					.upload-none{
+						width: 100rpx;
+						height: 100rpx;
+						text-align: center;
+						line-height: 100rpx;
+						color: #999999;
+						border: 1px solid #999999;
+						border-radius: 10rpx;
+						margin: 0 20rpx;
+						.iconfont{
+							font-size: $font-size-28;
+						}
+					}
+					.upload-image{
+						width: 100rpx;
+						height: 100rpx;
+						border-radius: 10rpx;
+						margin: 0 20rpx;
+						position: relative;
+						image{
+							width: 100rpx;
+							height: 100rpx;
+							border-radius: 10rpx;
+						}
+						.upload-del{
+							width: 40rpx;
+							height: 40rpx;
+							position: absolute;
+							top: -20rpx;
+							right: -20rpx;
+							line-height: 40rpx;
+							text-align: center;
+							.iconfont{
+								font-size: $font-size-32;
+								color: #999999;
+							}
+						}
+					}
+				}
+			}
+			.register-input{
+				width: 654rpx;
+				height: 40rpx;
+				padding: 24rpx;
+				margin: 0 auto;
+				margin-bottom: 60rpx;
+				background: #F7F7F7;
+				border-radius: 14rpx;
+				.input{
+					width: 100%;
+					height: 100%;
+					background: #F7F7F7;
+					font-size: $font-size-28;
+					line-height: 40rpx;
+					color: #333333;
+					border-radius: 14rpx;
+				}
+			}
+			.register-fiexd{
+				width: 100%;
+				height: auto;
+				position: fixed;
+				bottom: 0;
+				left: 0;
+				z-index: 999;
+				background: #FFFFFF;
+				.register-agree{
+					display: flex;
+					flex-direction: column;
+					align-items: center;
+					margin: 32rpx 0;
+					.agree-text{
+						.checkbox{
+							float: left;
+							margin: 4rpx 6rpx 0 0;
+							color: #999999;
+							font-size: $font-size-32;
+							&.icon-gouxuan{
+								color: $color-system;
+							}
+						}
+						font-size: 20rpx;
+						line-height: 44rpx;
+						color: #999999;
+						text{
+							color:#0091FF;
+						}
+					}
+				}
+			}
+			.register-btn{
+				width: 702rpx;
+				height: 88rpx;
+				border-radius: 14rpx;
+				font-size: $font-size-28;
+				line-height: 88rpx;
+				color: #FFFFFF;
+				margin: 0 auto;
+				text-align: center;
+				background: $btn-confirm;
+				margin-top: 96rpx;
+				&.none{
+					background: #FFFFFF;
+					color: $text-color;
+					margin-top: 0;
+				}
+				&.sub{
+					margin-top: 0;
+				}
+			}
+		}
+	}
+</style>

+ 444 - 0
market/pages/order/create-order.vue

@@ -0,0 +1,444 @@
+<template>
+	<view class="container order clearfix">
+		<!-- 透明模态层 -->
+		<modal-layer v-if='modallayer'></modal-layer>
+		<!-- 地址选择 -->
+		<choice-address ref="choiceAddress" v-if="isAddress" :addressData="addressData"></choice-address>
+		<!-- 商品 -->
+		<goods-list ref='goods' v-if="isRequest" :goodsData="goodsData" @handleGoodList="handChangeInputGoodsList"></goods-list>
+		<!-- 发票信息 -->
+		<invoice-tent ref="invoice" v-if="isRequest" :invoiceData="invoiceData"></invoice-tent>
+		<!-- 运费 -->
+		<freight ref="freight" v-if="isRequest" :freightData="freightData" @showFreightAlert="handFreightAlertShow"></freight>
+		<freight-alert v-if="isfreightTip" ref="csPhone"></freight-alert>
+		<!-- 余额抵扣 -->
+		<view class="invoice-balance">
+			<view class="balabce-t">
+				<view class="balabce-t-le">余额抵扣</view>
+				<view class="balabce-t-ri">
+					<view class="money">
+						<text>可用余额:</text>
+						<text>¥{{userMoney.toFixed(2)}}</text>
+					</view>
+					<view class="checkbox-box">
+						<button class="checkbox iconfont" 
+								hover-class="btn-hover"
+								v-if="userMoney!=0"
+								@click.stop="checkedBalabce"
+								:class="[ischecked ?'icon-gouxuanl':'icon-weigouxuan']"
+						>
+						</button>
+					</view>
+				</view>
+			</view>
+			<view class="balabce-b" :class="{'balabce-b--hide':!ischecked}">	
+				<view class="balabce-b-text animation" :style="{'transform':ischecked?'translateY(0)':'translateY(-50%)','-webkit-transform':ischecked?'translateY(0)':'translateY(-50%)'}">
+					<text>当前使用:¥{{deductMoney.toFixed(2)}},剩余:¥{{surplusMoney.toFixed(2)}}</text>
+				</view>
+			</view>
+		</view>
+		<!-- 底部 -->
+		<view class="footer" :style="{paddingBottom :isIphoneX ? '68rpx' : '0rpx'}">
+			<view class="footer-le">
+				<view class="footer-count">
+					<text>共{{allCount}}件商品</text>
+				</view>
+				<view class="footer-price">
+					<text>总价:<text class="price">¥{{payAllPrice.toFixed(2)}}</text></text>
+				</view>
+			</view>
+			<view class="footer-submit" @click.stop="submit">提交订单</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import choiceAddress from '@/components/module/creatOrder/choiceAddress'  
+	import goodsList from '@/components/module/creatOrder/goodsList'
+	import invoiceTent from '@/components/module/creatOrder/invoiceTent'
+	import freight from '@/components/module/creatOrder/freight'
+	import freightAlert from '@/components/module/modelAlert/freightAlert'
+	import modalLayer from "@/components/modal-layer"
+	import { queryAddressList } from "@/api/cart.js" 
+	import { createOrderInfo,createOrderSubmit,getOrderPostage } from "@/api/order.js" 
+	
+	export default {
+		components:{
+			choiceAddress,
+			goodsList,
+			invoiceTent,
+			freight,
+			freightAlert,
+			modalLayer
+		},
+		data() {
+			return {
+				modallayer:false,
+				orderID:0,
+				productIds:'',			  //获取上一级页面商品信息
+				productCount:'',		  //获取上一级页面商品数量
+				classifyIDS:'',			  //获取上一级页面商品分类
+				userID:'',				  //用户ID
+				cartType:'',			  //购买类型(1购物车提交,2直接购买提交)
+				submitState:'',  		  //提交状态
+				balanceDeductionFlag:2,   //勾选余额的状态(1使用,2不使用)
+				allCount:1,				  //订单提交总数量
+				payAllPrice:0.00,		  //订单提交总金额
+				allPrice:0.00,			  //订单总金额
+				surplusMoney:0.00,		  //显示勾选后的剩余抵扣
+				userMoney:0.00,			  //显示可使用余额
+				deductMoney:0.00,		  //显示已使用的余额
+				addressID:'',			  //地址ID
+				townID:'',				  //区ID
+				isRequest:false,		  //是否加载完成渲染子组件
+				isAddress:false,		  //是否加载完成地址
+				isfreightTip:false,		  //控制邮费弹窗
+				ischecked:false,	      //是否勾选余额
+				addressData:{},			  //初始化地址信息
+				goodsData:[],			  //初始化商品信息
+				invoiceData:{},			  //初始化发票信息
+				freightData:{},			  //邮费数据
+				orderInfo:[],			  //提交的商品信息
+				isIphoneX:this.$store.state.isIphoneX
+			}
+		},
+		onLoad(option){//商品数据
+			let data = JSON.parse(option.data);
+			console.log(data)
+			this.allPrice = data.data.allPrice;
+			this.allCount = data.data.allCount;
+			this.payAllPrice = this.allPrice;
+			// console.log(data)
+			if(option.type =='prodcut'){
+				this.cartType = 2
+				this.productCount = data.data.productCount
+				this.productIds = data.data.productID
+				// this.classifyIDS =  data.data.classifyID
+			}else{
+				this.cartType = 1
+				this.productCount = data.data.productCount
+				this.productIds = data.data.productID
+				// this.classifyIDS =  data.data.classifyID
+			}
+			this.getInitCrearOrder(option);
+			// this.getAddressData()
+		},
+		methods: {
+			getInitCrearOrder(option){//获取订单商品信息&&邮费信息&&发票信息
+				this.$api.getStorage().then((resolve) =>{
+					this.userID = resolve.userID
+					let params ={userId:this.userID,count:this.productCount,productIds:this.productIds}
+					createOrderInfo(params).then(response =>{
+						let resData = response.data
+						this.isRequest = true
+						this.goodsData = resData.shopList
+						this.userMoney = resData.userMoney
+						this.freightData = {freePostFlag:resData.freight}
+						this.invoiceData = resData.invoice
+						this.goodsData = resData.shopList
+					}).catch(response =>{
+						this.$util.msg(response.msg,2000)
+					})
+				})
+			},
+			getAddressData(){//获取地址信息
+				this.$api.getStorage().then((resolve) =>{
+					queryAddressList({pageNum:1,pageSize:1,userID:resolve.userID}).then(response =>{
+						this.isAddress = true
+						this.addressData = {}
+						if(response.data.results != ''){
+							this.addressID = response.data.results[0].addressID;
+							this.townID = response.data.results[0].townID;
+							this.addressData = response.data.results[0];
+						}else{
+							this.addressData = this.addressData;
+						}
+					})
+				})
+			},
+			handChangeInputGoodsList(data){//对应供应商的留言信息
+				this.goodsData = data;
+				// console.log(this.goodsData)
+			},
+			submit(){//提交订单
+				if(this.addressID == ''){
+					this.$util.msg('请先添加收货地址~',2000)
+					return
+				}
+				this.orderInfo = this.goodsData.map(el => {
+					let productInfo = [];
+					el.productsList.forEach(item => {
+						productInfo.push({
+							productId:item.productID,
+							productNum:item.productCount
+						})
+					})
+					if(el.note == null){
+						el.note = ''
+					}else{
+						el.note = el.note
+					}
+					return {shopId:el.shopID,note:el.note,productInfo:productInfo}
+				})
+				let orderInvoice;
+				if(this.invoiceData != null){
+					orderInvoice= Object.assign(this.invoiceData,'',{type:0})
+				}else{
+					orderInvoice ={
+						type:0,
+						invoiceTitleType:'',
+						invoiceTitle:'',
+						corporationTaxNum:'',
+						registeredAddress:'',
+						registeredPhone:'',
+						bankAccountNo:'',
+						openBank:'',
+					}
+				}
+				let param = {
+						orderSource:6,
+						userId:this.userID,
+						cartType:this.cartType,
+						addressId:this.addressID,
+						orderInfo:this.orderInfo,
+						balanceDeductionFlag:this.balanceDeductionFlag,
+						orderShouldPayFee:this.payAllPrice,
+						orderInvoice:orderInvoice
+					}
+				this.modalLayer = true;	
+				// console.log(JSON.stringify(param))
+				createOrderSubmit({'params':JSON.stringify(param)}).then(response =>{
+					if(response.code === 1){
+						this.submitState ='success'
+						let data = {orderID:response.data.orderID}
+						this.$api.navigateTo(`/pages/user/order/order-cashier?type=${this.submitState}&data=${JSON.stringify({data:data})}`)
+					}else if(response.code === 2){
+						this.submitState ='nosuccess'
+						let data = {
+								orderID:response.data.orderID,
+								orderNo:response.data.orderNo,
+								orderMark:response.data.orderMark,
+								payableAmount:response.data.payableAmount
+						}
+						this.$api.navigateTo(`/pages/user/order/order-cashier?type=${this.submitState}&data=${JSON.stringify({data:data})}`)
+					}else{
+						this.$util.msg(response.msg,2000);
+					}
+				}).catch(response =>{
+					
+				})
+			},
+			getPostage(){
+				this.$api.getStorage().then((resolve) =>{
+					let params ={
+							userId:resolve.userID,
+							productIds:this.productIds,
+							totalPrice:this.allPrice,
+							townID:this.addressData.townID
+						}
+					getOrderPostage(params).then(response =>{
+						console.log(response)
+					})	
+				})
+			},
+			handFreightAlertShow(){//显示邮费弹窗
+				this.isfreightTip = true;
+			},
+			hideFreight(){//关闭邮费弹窗
+				this.isfreightTip = false;
+			},
+			checkedBalabce(){//勾选使用余额
+				if(this.userMoney == 0){
+					return
+				}else{
+					this.ischecked = !this.ischecked
+					if(this.ischecked){
+						this.balanceDeductionFlag =1
+						if(this.userMoney>this.payAllPrice){
+							this.payAllPrice =0.00
+							this.deductMoney = this.allPrice				            //勾选后使用抵余额
+							this.surplusMoney = this.userMoney - this.deductMoney	    //勾选后的剩余抵扣
+						}else{
+							this.payAllPrice = this.allPrice - this.userMoney       	//勾选后的总价
+							this.deductMoney = this.userMoney				            //勾选后使用抵余额
+							this.surplusMoney = this.userMoney - this.deductMoney	    //勾选后的剩余抵扣
+						}
+					}else{
+						this.payAllPrice = this.allPrice
+						this.balanceDeductionFlag = 2
+					}
+				}
+			}	
+		},
+		onShow() {
+			// this.addressID = ''		
+			let pages = getCurrentPages();
+			let currPage = pages[pages.length-1];
+			if(currPage.data.select =='select'){
+				this.isAddress = true
+				let SelectData = uni.getStorageSync('selectAddress');
+				this.addressID = SelectData.addressID;
+				this.addressData = SelectData	
+				this.getPostage()
+			}else{
+				this.getAddressData()
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	page {
+		height: auto;
+		background:#F7F7F7;
+	}
+	.btn-hover{
+		background: #FFFFFF;
+	}
+	.animation{
+		/* transition: transform 0.3s ease;*/
+		transition-property: transform;
+		transition-duration: 0.3s;
+		transition-timing-function: ease;
+	}
+	.order{
+		padding-bottom: 134rpx;
+	}
+	.invoice-freight{
+		width: 702rpx;
+		padding: 0 24rpx;
+		height: 86rpx;
+		line-height: 86rpx;
+		font-size: $font-size-28;
+		color: $text-color;
+		background: #FFFFFF;
+		float: left;
+		font-weight: bold;
+		.freight-left{
+			float: left;
+			.icon-yunfeishuoming{
+				height: 100%;
+				padding: 0 15rpx;
+				color: $color-system;
+				font-weight: normal;
+			}
+		}
+		.freight-right{
+			float: right;
+			color: #2A81FF;
+		}
+	}
+	.invoice-balance{
+		width: 702rpx;
+		height: auto;
+		padding:0 24rpx;
+		background: #FFFFFF;
+		float: left;
+		margin-top: 24rpx;
+		margin-bottom: 24rpx;
+		.balabce-t{
+			width: 100%;
+			height: 86rpx;
+			line-height: 86rpx;
+			font-size: $font-size-28;
+			color: $text-color;
+			float: left;
+			.balabce-t-le{
+				float: left;
+				font-weight: bold;
+			}
+			.balabce-t-ri{
+				float: right;
+				display: flex;
+				align-items: center;
+				.money{
+					display: flex;
+					float: left;
+				}
+				.checkbox-box{
+					display: flex;
+					width: 60rpx;
+					float: left;
+					height: 100%;
+					font-size: $font-size-24;
+					.checkbox{
+						width: 40rpx;
+						text-align: right;
+						box-sizing: border-box;
+						text-align: center;
+						text-decoration: none;
+						border-radius: 0;
+						-webkit-tap-highlight-color: transparent;
+						overflow: hidden;
+						color: $color-system;
+					}
+				}	
+			}
+		}
+		.balabce-b{
+			width: 100%;	
+			float: left;
+			overflow: hidden;
+			.balabce-b-text{
+				width: 100%;
+				line-height: 58rpx;
+				font-size: $font-size-24;
+				color: #FF2A2A;
+				text-align: right;
+				float: right;
+			}
+			&.balabce-b--hide {
+				padding: 0 0;
+				height: 0px;
+				line-height: 0px;
+			}	
+		}
+	}
+	.footer{
+		position: fixed;
+		left: 0;
+		bottom: 0;
+		z-index: 995;
+		display: flex;
+		align-items: center;
+		width: 100%;
+		height: 110rpx;
+		line-height: 110rpx;
+		justify-content: space-between;
+		font-size: $font-size-28;
+		background-color: #FFFFFF;
+		z-index: 998;
+		color: $text-color;
+		.footer-le{
+			width:550rpx;
+			height:100%;
+			float: left;
+		}
+		.footer-count{
+			float: left;
+			padding-left: 24rpx;
+			font-weight: bold;
+		}
+		.footer-price{
+			float: right;
+			text-align: right;
+			color: $text-color;
+			font-weight: bold;
+			padding-right: 24rpx;
+			.price{
+				font-size: $font-size-32;
+				color: #FF2A2A;
+			}
+		}
+		.footer-submit{
+			display:flex;
+			align-items:center;
+			justify-content: center;
+			width: 200rpx;
+			height: 100%;
+			color: #FFFFFF;
+			background:linear-gradient(135deg,rgba(242,143,49,1) 0%,rgba(225,86,22,1) 100%);
+		}
+	}
+	
+</style>

+ 631 - 0
market/pages/order/myOrder.vue

@@ -0,0 +1,631 @@
+<template>
+	<view class="container" :style="{paddingTop:navbarHeight+'px'}">
+		<!-- 自定义返回 -->
+		<header-back :systeminfo='systeminfo' :navbar-data='nvabarData' :headerBtnPosi ="headerBtnPosi" :isDelete="isDelete"></header-back>
+		<view class="container-order">
+			<view class="search-input">
+				<template>
+					<view class="gosearch-btn" @click="goSearch()">
+						<text class="iconfont icon-iconfonticonfontsousuo1"></text>
+						<text>美白/润肤</text>
+					</view>
+				</template>
+			</view>
+			<!--选项卡逻辑自己实现即可,此处未做处理-->
+			<tui-tabs :tabs="tabs" 
+					  :isFixed="scrollTop>=0" 
+					  :currentTab="currentTab" 
+					  selectedColor="$color-system" 
+					  sliderBgColor="$color-system"
+					  @change="change"
+					  :marginTop="navbarHeight">
+			</tui-tabs>
+			<view  :class="{'tui-order-list':scrollTop >= 0}" class="clearfix">
+				<!-- 空白页 -->
+				<empty v-if="isEmpty" :typeIndex="currentTab" :navbarHeight="navbarHeight"></empty>
+				<!-- 列表 -->
+				<view v-else class="tui-order-content">
+					<view  class="tui-order-item" v-for="(order,orderIndex) in orderData" :key="orderIndex" >
+						<view class="order-title">
+							<view class="order-title-t">
+								<view class="order-title-num">订单号:{{order.orderNo}}</view>
+								<view class="order-title-tip">{{orderStateExp(order.status)}}</view>
+							</view>
+							<view class="order-title-b">下单时间:{{order.orderTime}}</view>
+						</view>
+						<block v-for="(item,index) in order.shopOrderList" :key="index">
+							<view class="goods-title">
+								<view class="title-logo"><image :src="item.shopLogo" mode=""></image></view>
+								<view class="title-text">{{item.shopName}}</view>
+							</view>
+							<view class="goods-item" v-for="(pros,prosIndex) in item.cmOrderProducts" :key="prosIndex" @click.stop="detail(order.orderID)">
+								<view class="goods-pros-t">
+									<view class="pros-img"><image :src="pros.productImage" alt="" /></view>
+									<view class="pros-product">
+										<view class="producttitle">{{pros.name}}</view>
+										<view class="productspec">规格:{{pros.productUnit}}</view>
+										<view class="productprice">
+											<view class="price">
+												<text>¥{{pros.price}}</text>
+											</view>
+											<view class="count">
+												<text class="small">x</text>{{pros.num}}
+											</view>
+										</view>
+									</view>	
+								</view>
+							</view>	
+						</block>
+						<view class="order-footer">
+							<view class="order-footer-top" v-if="order.discountFee!=0">经理折扣:¥{{orderPriceToFixed(order.discountFee)}}</view>
+							<view class="order-footer-bot">
+								<view class="count">共{{order.productCount}}件商品</view>
+								<view class="money">合计:¥{{orderPriceToFixed(order.payableAmount)}}</view>
+							</view>
+						</view>
+						<!-- 底部button -->
+						<order-button ref="orderButton" 
+									  :status="order.status" 
+									  :orderID="order.orderID" 
+									  @buttonConfirm="handButtonConfirm">
+						</order-button>
+					</view>
+					<!--加载loadding-->
+					<tui-loadmore :visible="loadding" :index="3" type="black"></tui-loadmore>
+					<tui-nomore :visible="!pullUpOn" bgcolor="#F7F7F7" :text='nomoreText'></tui-nomore>
+					<!--加载loadding-->
+				</view>
+			</view>
+		</view>
+		<!-- 分享弹窗 -->
+		<share-alert   v-if="isShareModal"
+					   :orderID="btnoRderID" 
+					   @shareConfirm ='onShareAppMessage'>
+		</share-alert>
+		<!-- 删除订单弹窗 -->
+		<model-alert v-if="isShowDelModal"
+					 :alertText='alertText'
+					 @btnConfirm ='handOrderDetele'>
+		</model-alert>
+		<!-- 取消订单弹窗 -->
+		<cancel-alert v-if="isCenceModal"
+					 :cenceAlertText='cenceAlertText'
+					 @cenceConfirm ='handCenceConfirm'>
+		</cancel-alert>
+		<!-- 透明模态层 -->
+		<modal-layer v-if='isModalLayer'></modal-layer>
+	</view>
+</template>
+
+<script>
+	import headerBack from '@/components/module/headerNavbar/header-back' 		 	 //自定义导航
+	import tuiTabs from "@/components/tui-components/tui-tabs/tui-tabs"
+	import tuiListCell from "@/components/tui-components/list-cell/list-cell"
+	import tuiLoadmore from "@/components/tui-components/loadmore/loadmore"
+	import tuiNomore from "@/components/tui-components/nomore/nomore"
+	import orderButton from '@/components/module/orderDetails/orderListButton'		 //按钮
+	import modalLayer from "@/components/modal-layer"
+	import empty from "@/components/empty";
+	import shareAlert from '@/components/module/modelAlert/shareAlert'			 //分享弹窗
+	import modelAlert from '@/components/module/modelAlert/modelAlert'			 //删除弹窗
+	import cancelAlert from '@/components/module/modelAlert/cancelAlert'		 //取消弹窗
+	export default {
+		components: {
+			empty,
+			tuiTabs,
+			tuiListCell,
+			tuiLoadmore,
+			tuiNomore,
+			orderButton,
+			modalLayer,
+			modelAlert,
+			shareAlert,
+			cancelAlert,
+			headerBack
+		},
+		data() {
+			return {
+				userID:0,
+				orderData: [],
+				btnoRderID: 0, //点击按钮传入的的订单ID
+				currentTab: 0,
+				pageNum: 1,	  //页数
+				pageSize: 10,  //条数
+				scrollTop: 0,
+				deteleType:'',
+				skeletonShow: true,
+				isEmpty: false,
+				isDelete:false,
+				isShareModal: false,//控制分享弹窗
+				isCenceModal: false,//控制取消订单弹窗
+				isShowDelModal: false,//控制删除订单弹窗
+				isModalLayer: false,
+				loadding: false,
+				pullUpOn: true,
+				hasNextPage: false,
+				pullFlag: true,
+				navbarHeight:'',
+				alertText: '确认删除订单吗?',
+				cenceAlertText: '确认取消该订单吗?',
+				nomoreText: '上拉显示更多',
+				tabs: [
+					{name: "全部"},
+					{name: "待付款"}, 
+					{name: "待发货"}, 
+					{name: "已发货"}, 
+					{name: "退货/款"},
+				],
+				headerBtnPosi:	this.setHeaderBtnPosi(), //获取设备顶部胶囊高度
+				systeminfo:  this.setSysteminfo(),		 //获取设备信息
+				nvabarData: {							 //顶部自定义导航
+					showCapsule: 1, // 是否显示左上角图标  1表示显示  0表示不显示
+					title: '我的订单', // 导航栏 中间的标题
+				}
+			}
+		},
+		onLoad(option) {
+			console.log(option)
+			if(option.type ==='detele'){this.isDelete = true}
+			this.currentTab = option.state
+			this.getHeaderTopHeight()//设置自定义导航高度
+		},
+		methods: {
+			getOrderDatainit(index){
+				/**
+				 * @订单初始化加载  仅加载第一页码
+				 * @param:orderState(订单状态:0全部,1待付款,2待发货,3已发货,4退货款)
+				 * @param:userID(用户ID)
+				 * @param:index(页码数)
+				 * @param:pageSize(每页条数)
+				 * @param:organizeID(全局变量组织ID)
+				 */ 
+				// setTimeout(()=>{this.skeletonShow = false},1500)
+				this.$api.getStorage().then((resolve) =>{
+					this.userID = resolve.userID
+					let param = {orderState:index,userID:this.userID,index:1,pageSize:this.pageSize,organizeID:this.userOrganizeID}
+					this.$api.lodingGet('/order/myOrder',param,
+						response => {
+							if(response.code === '1'){
+								let resData = response.data.results
+								this.hasNextPage = response.data.hasNextPage;
+								if(resData && resData.length > 0){
+									this.isEmpty = false;
+									this.orderData = [...resData];
+								}else{
+									this.isEmpty = true
+								}
+								if(this.hasNextPage){
+									this.pullUpOn = false
+									this.nomoreText = '上拉显示更多'
+								}else{
+									if(this.orderData.length < 2){
+										this.pullUpOn = true
+									}else{
+										this.pullUpOn = false
+										this.nomoreText = '已至底部'
+									}
+								}
+							}else{
+								this.$util.msg(response.msg,2000);
+							}
+						}
+					)	
+				})	
+			}, 
+			getOnReachBottomData(index){//上拉加载
+				this.pageNum+=1
+				let param = {orderState:index,userID:this.userID,index:this.pageNum,pageSize:this.pageSize,organizeID:this.userOrganizeID}
+				this.$api.get('/order/myOrder',param,
+					response => {
+						if(response.code === '1'){
+							let resData = response.data.results
+							this.hasNextPage = response.data.hasNextPage;
+							this.orderData = this.orderData.concat(resData)
+							this.pullFlag = false;// 防上拉暴滑
+							setTimeout(()=>{this.pullFlag = true;},500)
+							if(this.hasNextPage){
+								this.pullUpOn = false
+								this.nomoreText = '上拉显示更多'
+							}else{
+								this.loadding = false
+								this.pullUpOn = false
+								this.nomoreText = '已至底部'
+							}
+						}else{
+							this.$util.msg(response.msg,2000);
+						}
+					}
+				)	
+			},
+			change(e) {//切换tab传递当前tab[index]执行初始化方法
+				this.currentTab = e.index
+				this.pageNum = 1
+				this.orderData = []
+				this.pullUpOn = true //切换时隐藏
+				this.loadding =  false //切换时隐藏
+				this.getOrderDatainit(this.currentTab)
+			},
+			detail(id) {//订单详情跳转
+				this.isModalLayer = true;	
+				this.$api.navigateTo(`/pages/user/order/order-details?state=${this.currentTab}&orderID=${id}`)
+			},
+			handButtonConfirm(data) {//获取点击
+				console.log('点击按钮的类型是',data);
+				this.handShowAlert(data)
+				this.btnoRderID = data.orderId
+			},
+			handShowAlert(data) {//执行
+				switch(data.type){
+					case 'delete':
+						this.isShowDelModal = true;
+						break
+					case 'cancel':
+						this.isCenceModal = true;
+						break
+					case 'query':
+						this.isModalLayer = true;
+						this.$api.navigateTo('/pages/user/order/order-logistics?orderID='+data.orderId)
+						break
+					case 'confirm':
+						this.handOrderConfirm(data.orderId);
+						break
+				}
+			},
+			handOrderConfirm (id){//确认收货
+				this.$api.get('/order/affirm',{orderID:id},
+					response => {
+						if(response.code === '1'){
+							this.$util.msg(response.msg,2000,true,'success');
+							this.isShowDelModal = false
+							setTimeout(() => {
+								this.getOrderDatainit(this.currentTab)
+							},2000)
+						}else{
+							this.$util.msg(response.msg,2000);
+						}
+					}
+				)
+			},
+			handOrderDetele (){//删除订单
+				this.$api.get('/order/delete',{orderID:this.btnoRderID},
+					response => {
+						if(response.code === '1'){
+							this.$util.msg(response.msg,2000,true,'success');
+							this.isShowDelModal = false
+							setTimeout(() => {
+								this.orderData = [];
+								this.getOrderDatainit(this.currentTab)
+							},2000)
+						}else{
+							this.$util.msg(response.msg,2000);
+						}
+					}
+				)
+			},
+			handCenceConfirm (){//取消订单
+				this.$api.get('/order/cancel',{orderID:this.btnoRderID},
+					response => {
+						if(response.code === '1'){
+							this.$util.msg(response.msg,2000,true,'success');
+							this.isCenceModal = false
+							setTimeout(() => {
+								this.orderData = [];
+								this.getOrderDatainit(this.currentTab)
+							},2000)
+						}else{
+							this.$util.msg(response.msg,2000);
+						}
+					}
+				)
+			},
+			onShareAppMessage (res){//分享转发
+				this.isShareModal = false
+				if (res.from === 'button') {// 来自页面内转发按钮
+					// console.log(res.target)
+			    }
+				return {
+					title: '您有新的分享订单,快来查看吧~',
+					path: `/pages/user/order/orderShareLogin?orderID=${this.btnoRderID}&userID=${this.userID}`,
+					imageUrl:'https://img.caimei365.com/group1/M00/03/8C/Cmis215XHXSAWWkhAAXDP4-6m_c397.png'
+				}
+			},
+			//订单状态文字和颜色
+			orderStateExp (state){
+				let stateText = '',
+					stateTextObject={
+						4:'交易完成',
+						5:'订单完成',
+						6:'已关闭',
+						7:'交易全退',
+						77:'交易全退',
+						11:'待付款待发货',
+						12:'待付款部分发货',
+						13:'待付款已发货',
+						21:'部分付款待发货',
+						22:'部分付款部分发货',
+						23:'部分付款已发货',
+						31:'已付款待发货',
+						32:'已付款部分发货',
+						33:'已付款已发货',
+						111:'待付款待发货',
+					}
+				Object.keys(stateTextObject).forEach(key => {
+					if(key == state){
+						stateText = stateTextObject[key]
+					}
+				})
+				return stateText;
+			},
+			orderPriceToFixed (n){
+				let price ='';
+				price = n.toFixed(2);
+				return price
+			},
+			getHeaderTopHeight (){ // 状态栏高度
+				let statusBarHeight = this.systeminfo.statusBarHeight
+				let headerPosi = this.headerBtnPosi
+				let btnPosi = { // 胶囊实际位置,坐标信息不是左上角原点
+				      height: headerPosi.height,
+				      width: headerPosi.width,
+				      // 胶囊top - 状态栏高度
+				      top: headerPosi.top - statusBarHeight,
+				      // 胶囊bottom - 胶囊height - 状态栏height (现胶囊bottom 为距离导航栏底部的长度)
+				      bottom: headerPosi.bottom - headerPosi.height - statusBarHeight,
+				      // 屏幕宽度 - 胶囊right
+				      right: this.systeminfo.screenWidth - headerPosi.right
+				}
+				this.navbarHeight= headerPosi.bottom + btnPosi.bottom// 原胶囊bottom + 现胶囊bottom
+			},
+			setHeaderBtnPosi (){
+				// 获得胶囊按钮位置信息
+				let headerBtnPosi = uni.getMenuButtonBoundingClientRect();
+				return headerBtnPosi
+			},
+			setSysteminfo (){
+				let systeminfo;
+				uni.getSystemInfo({ // 获取设备信息
+					success: (res) => {
+						systeminfo = res
+					},
+				})
+				return systeminfo
+			}
+		},
+		// onPullDownRefresh() {
+		// 	if(!this.isEmpty){
+		// 		setTimeout(() => {
+		// 			this.pageNum = 1,
+		// 			this.getOrderDatainit(this.currentTab)
+		// 			uni.stopPullDownRefresh()				
+		// 		}, 200);
+		// 	}
+		// },
+		onReachBottom() {//上滑加载更多
+			if(this.hasNextPage){
+				this.loadding = true
+				this.pullUpOn = true
+				this.getOnReachBottomData(this.currentTab);
+			}	
+		},
+		onPageScroll(e) {
+			this.scrollTop = e.scrollTop;
+		},
+		onShow() {
+			this.isModalLayer = false;	
+			this.getOrderDatainit(this.currentTab)
+		}
+	}
+</script>
+
+<style lang="scss">
+	page{
+		background: #F7F7F7;
+	}
+	.container {
+		padding-bottom: env(safe-area-inset-bottom);
+		height: auto;
+		position: relative;
+	}
+	.tui-order-content{
+		width: 100%;
+		height: auto;
+	}
+	.tui-order-list {
+		margin-top: 80rpx;
+		width: 100%;
+		position: relative;
+	}
+	.tui-order-item {
+		display: flex;
+		flex-direction: column;
+		width: 702rpx;
+		padding:20rpx 24rpx 0 24rpx;
+		background: #fff;
+		border-bottom: 20rpx solid #F7F7F7;
+	}
+	.search-input{
+		width: 100%;
+		height: 80rpx;
+		margin-bottom: 20rpx;
+		.gosearch-btn{
+			/* #ifndef APP-NVUE */
+			display: flex;
+			/* #endif */
+			flex: 1;
+			flex-direction: row;
+			justify-content: center;
+			align-items: center;
+			width: 662rpx;
+			height: 100%;
+			border-radius: 40rpx;
+			background: #F7F7F7;
+			margin: 0 auto;
+			padding:0 20rpx;
+			font-size: 28rpx;
+			line-height: 80rpx;
+			color: #8A8A8A;
+			.icon-iconfonticonfontsousuo1{
+				margin:0 6rpx;
+				font-size: 34rpx;
+				color: #F29857;
+				z-index: 10;
+			}
+		}
+	}
+	.order-title{
+		width: 100%;
+		height: auto;
+		.order-title-t{
+			width: 100%;
+			height: 40rpx;
+			float: left;
+			font-size: $font-size-28;
+			line-height: 40rpx;
+			font-weight: bold;
+			.order-title-num{
+				float: left;
+				text-align: left;
+				color: $color-system;
+			}
+			.order-title-tip{
+				float: right;
+				text-align: right;
+				color: #FF2A2A;
+			}
+		}
+		.order-title-b{
+			width: 100%;
+			height: 40rpx;
+			float: left;
+			margin-top: 8rpx;
+			font-size: $font-size-28;
+			line-height: 40rpx;
+			color: #999999;
+			text-align: left;
+		}
+	}
+	.goods-title{
+		width: 100%;
+		height: 48rpx;
+		float: left;
+		margin-top: 24rpx;
+		.title-logo{
+			width: 48rpx;
+			height: 48rpx;
+			float: left;
+			image{
+				width: 48rpx;
+				height: 48rpx;
+			}
+		}
+		.title-text{
+			float: left;
+			margin-left: 16rpx;
+			font-size: $font-size-28;
+			color: $text-color;
+			text-align: left;
+			line-height: 48rpx;
+			font-weight: bold;
+		}
+	}
+	.goods-item{
+		width: 100%;
+		height: auto;
+	}	
+	.goods-pros-t{
+		display: flex;
+		align-items: center;
+		width: 100%;
+		height: 217rpx;
+		padding:24rpx 0;
+		.pros-img{
+			width: 210rpx;
+			height: 100%;
+			border-radius: 10rpx;
+			margin:0 26rpx 0 0;
+			border:1px solid #f3f3f3;
+			image{
+				width: 100%;
+				height: 100%;
+				border-radius: 10rpx;
+			}
+		}
+	}
+	.pros-product{
+		width: 468rpx;
+		height: 100%;
+		line-height: 36rpx;
+		font-size: $font-size-26;	
+		position: relative;
+		.producttitle{
+			width: 100%;
+			display: inline-block;
+			height: auto;							
+			text-overflow:ellipsis;
+			display: -webkit-box;
+			word-break: break-all;
+			-webkit-box-orient: vertical;
+			-webkit-line-clamp: 2;
+			overflow: hidden;
+			margin-bottom: 8rpx;
+		}
+		.productspec{
+			height: 36rpx;
+			color: #999999;
+		}
+		.productprice{
+			height: 48rpx;
+			position: absolute;
+			width: 100%;
+			bottom: 0;
+			.price{
+				line-height: 48rpx;
+				font-size: $font-size-28;
+				width: 48%;
+				color: #FF2A2A;
+				float: left;
+				font-weight: bold;
+			}
+			.count{
+				height: 100%;
+				float: right;
+				position: relative;
+				.small{
+					color: #666666;
+				}
+			}
+		}
+	}
+	.order-footer{
+		width: 100%;
+		height: 78rpx;
+		float: left;
+		.order-footer-top{
+			width: 100%;
+			height: 34rpx;
+			line-height: 34rpx;
+			font-size: $font-size-24;
+			color: #999999;
+			text-align: right;
+		}
+		.order-footer-bot{
+			width: 100%;
+			float: left;
+			height: 48rpx;
+			line-height: 48rpx;
+			font-size: $font-size-28;
+			font-weight: bold;
+			color: $text-color;
+			.count{
+				width: 50%;
+				float: left;
+				text-align: left;
+			}
+			.money{
+				width: 50%;
+				float: right;
+				text-align: right;
+			}
+		}
+	}
+</style>

+ 314 - 0
market/pages/order/order-details.vue

@@ -0,0 +1,314 @@
+<template>
+	<view class="container details clearfix">
+		<!-- 自定义返回 -->
+		<header-back :systeminfo='systeminfo' :navbar-data='nvabarData' :headerBtnPosi ="headerBtnPosi" :isShare='isOrderShare'></header-back>
+		<view class="container-details" :style="{paddingTop:navbarHeight+'px'}">
+			<!-- 地址选择 -->
+			<order-address ref="orderAddress" v-if="isRequest" :addressData="addressData"></order-address>
+			<!-- 订单信息 -->
+			<order-information ref="information" v-if="isRequest" :information="information"></order-information>
+			<!-- 商品 -->
+			<goods-list ref='goods' v-if="isRequest" :shopOrderData="shopOrderData"></goods-list>
+			<!-- 发票信息 -->
+			<invoice-tent ref="invoice" v-if="isRequest" :orderInvoice="orderInvoice"></invoice-tent>
+			<!-- 转账信息 -->
+			<transfe-record ref="transfe" v-if="isRequest"></transfe-record>
+			<!-- 支付记录 -->
+			<payment-record ref="payment" v-if="isRequest" :discernReceiptList="discernReceiptList" :receiptAmount="receiptAmount"></payment-record>
+			<!-- 退款记录 -->
+			<refund-record ref="refund" v-if="isRequest" :returnedPurchaseList="returnedPurchaseList" :returnedPurchaseFee="returnedPurchaseFee"></refund-record>
+			<!-- 底部button -->
+			<order-button ref="orderButton" 
+						  v-if= "isRequest" 
+						  :status= "btnStatus" 
+						  :shareCode= "shareCode"
+						   @buttonConfirm="handButtonConfirm">
+			</order-button>
+		</view>
+		<share-alert  :orderID="orderID" 
+					  v-if="isShareModal"  
+					  @shareConfirm ='onShareAppMessage'>
+		</share-alert>		
+	</view>
+</template>
+
+<script>
+	import headerBack from '@/components/module/headerNavbar/header-back' 		 	 //自定义导航
+	import orderAddress from '@/components/module/orderDetails/orderAddress' 		 //地址信息
+	import goodsList from '@/components/module/orderDetails/goodsList'		 		 //商品列表
+	import invoiceTent from '@/components/module/orderDetails/invoiceTent'	 		 //发票信息
+	import orderInformation from '@/components/module/orderDetails/orderInformation' //订单信息
+	import transfeRecord from '@/components/module/orderDetails/transfeRecord'		 //转账信息
+	import paymentRecord from '@/components/module/orderDetails/paymentRecord'		 //支付记录
+	import refundRecord from '@/components/module/orderDetails/refundRecord'		 //退款记录
+	import orderButton from '@/components/module/orderDetails/orderButton'			 //底部按钮
+	import shareAlert from '@/components/module/modelAlert/shareAlert.vue'			 //分享弹窗
+	import { queryOrderDetails,cancelOrder,deleteOrder,confirmReceipt } from "@/api/order.js" 
+	export default {
+		components:{
+			headerBack,
+			orderInformation,
+			orderAddress,
+			invoiceTent,
+			goodsList,
+			transfeRecord,
+			paymentRecord,
+			refundRecord,
+			orderButton,
+			shareAlert,
+		},
+		data() {
+			return {
+				state:0,
+				userID:'',
+				orderID:'',
+				shareCode:'',				//分享码
+				shareType:'',               //分享登录页过来记录的状态
+				cellPhone:'',				//客服电话
+				payStatus:0,
+				btnStatus:0,				//按钮组件状态
+				isRequest:false,			//是否加载完成渲染子组件
+				isOrderShare:false,
+				isShareModal:false,
+				addressData:{},				//地址信息初始化
+				information:{},				//订单信息初始化
+				shopOrderData:{},			//商品信息初始化
+				orderInvoice:{},			//发票信息初始化
+				returnedPurchaseList:{},	//退款信息初始化
+				discernReceiptList:{},		//支付信息初始化
+				receiptAmount:0,			//支付金额
+				returnedPurchaseFee:0,		//退款金额
+				navbarHeight:'',
+				headerBtnPosi:	this.setHeaderBtnPosi(), //获取设备顶部胶囊高度
+				systeminfo: this.setSysteminfo(),		 //获取设备信息
+				nvabarData: {							 //顶部自定义导航
+					showCapsule: 1, // 是否显示左上角图标   1表示显示    0表示不显示
+					title: '订单详情', // 导航栏 中间的标题
+				}
+			}
+		},
+		onLoad(option){
+			this.shareType = option.type;
+			this.orderID = option.orderID
+			if(this.shareType ==='share'){
+				this.state = 0
+				this.isOrderShare = true
+			}else if(option.type === 'confim'){
+				this.state = 0
+			}else{
+				this.state = option.state
+			}
+			this.getHeaderTopHeight()
+			this.initOrderDetaileData()
+		},
+		methods: {
+			initOrderDetaileData(){//初始化页面数据@参数:订单ID
+				queryOrderDetails({ orderID : this.orderID }).then(response =>{
+					// console.log(response)
+					let resData = response.data;
+					this.isRequest = true
+					this.userID = resData.order.userID
+					this.shareCode = resData.shareCode
+					this.addressData = resData.userInfo
+					this.information = resData.order
+					this.btnStatus = resData.order.status
+					this.payStatus = resData.order.payStatus
+					this.shopOrderData = resData.shopOrderList
+					this.orderInvoice = resData.orderInvoice
+					this.returnedPurchaseList = resData.returnedPurchaseList
+					this.discernReceiptList = resData.discernReceiptList
+					this.receiptAmount = resData.order.receiptAmount
+					this.returnedPurchaseFee = resData.order.returnedPurchaseFee
+				}).catch(response =>{
+					this.$util.modal('提示','订单查询失败,请稍后重试~','确定','',false,() =>{
+						this.$api.switchTabTo('/pages/tabBar/home/home')
+					})
+				})
+			},
+			handButtonConfirm(data){//监听点击时间的按钮类型并执行...
+				console.log('点击按钮的类型是',data);
+				this.handShowAlert(data)
+			},
+			handShowAlert(type){//判断点击的按钮类型并执行...
+				switch(type){
+					case 'delete':
+						this.handOrderDetele();
+						break
+					case 'cancel':
+						this.handCenceConfirm();
+						break
+					case 'query':
+						this.$api.navigateTo('/pages/user/order/order-logistics?orderID='+this.orderID)
+						break
+					case 'confirm':
+						this.handOrderConfirm()
+				}
+			},
+			handOrderConfirm(){//确认收货
+				this.$util.modal('提示','是否确认收货','确定','取消',true,() =>{
+					confirmReceipt({orderID:this.orderID}).then(response =>{
+						this.$util.msg(response.msg,2000,true,'success');
+						this.initOrderDetaileData()
+					}).catch(response =>{
+						this.$util.msg(response.msg,2000)
+					})
+				})
+			},
+			handOrderDetele(){//删除订单
+				this.$util.modal('提示','确认删除该订单吗?','确定','取消',true,() =>{
+					deleteOrder({orderID:this.orderID}).then(response =>{
+						this.$util.msg(response.msg,2000,true,'success');
+						setTimeout(() => {
+							if(this.shareType ==='share'){
+								this.$api.switchTabTo('/pages/tabBar/user/user')
+							}else{
+								this.$api.redirectTo(`/pages/user/order/order-list?type=detele&state=${this.state}`)
+							}
+						},500)
+					}).catch(response =>{
+						this.$util.msg(response.msg,2000)
+					})
+				})
+			},
+			handCenceConfirm(){//取消订单
+				this.$util.modal('提示','确认取消该订单吗?','确定','取消',true,() =>{
+					cancelOrder({orderID:this.orderID}).then(response =>{
+						this.$util.msg(response.msg,2000,true,'success');
+						this.initOrderDetaileData()
+					}).catch(response =>{
+						this.$util.msg(response.msg,2000)
+					})
+				})
+			},
+			onShareAppMessage(res){//分享转发
+				this.isShareModal = false
+				if (res.from === 'button') {
+					// 来自页面内转发按钮
+					// console.log(res.target)
+			    }
+				return {
+					title: '您有新的分享订单,快来查看吧~',
+					path: `/pages/user/order/orderShareLogin?orderID=${this.orderID}&userID=${this.userID}`,
+					imageUrl:'https://admin-b.caimei365.com/userfiles/1/images/photo/2020/03/%E8%AE%A2%E5%8D%95%E5%88%86%E4%BA%AB%E5%9B%BE%403x.png'
+				}
+			},
+			getHeaderTopHeight(){
+				let statusBarHeight = this.systeminfo.statusBarHeight // 状态栏高度
+				let headerPosi = this.headerBtnPosi
+				let btnPosi = { // 胶囊实际位置,坐标信息不是左上角原点
+				      height: headerPosi.height,
+				      width: headerPosi.width,
+				      // 胶囊top - 状态栏高度
+				      top: headerPosi.top - statusBarHeight,
+				      // 胶囊bottom - 胶囊height - 状态栏height (现胶囊bottom 为距离导航栏底部的长度)
+				      bottom: headerPosi.bottom - headerPosi.height - statusBarHeight,
+				      // 屏幕宽度 - 胶囊right
+				      right: this.systeminfo.screenWidth - headerPosi.right
+				}
+				this.navbarHeight= headerPosi.bottom + btnPosi.bottom// 原胶囊bottom + 现胶囊bottom
+			},
+			setHeaderBtnPosi(){
+				// 获得胶囊按钮位置信息
+				let headerBtnPosi = uni.getMenuButtonBoundingClientRect();
+				return headerBtnPosi
+			},
+			setSysteminfo(){
+				let systeminfo;
+				uni.getSystemInfo({ // 获取设备信息
+					success: (res) => {
+						systeminfo = res
+					},
+				})
+				return systeminfo
+			},
+		},
+		onShow() {
+
+		}
+	}
+</script>
+
+<style lang="scss">
+	page {
+		height: auto;
+		background:#F7F7F7;
+	}
+	.details{
+		padding-bottom: 130rpx;
+	}
+	.btn-hover{
+		background: #FFFFFF;
+	}
+	.animation{
+		/* transition: transform 0.3s ease;*/
+		transition-property: transform;
+		transition-duration: 0.3s;
+		transition-timing-function: ease;
+	}
+	.invoice-balance{
+		width: 702rpx;
+		height: auto;
+		padding:0 24rpx;
+		background: #FFFFFF;
+		float: left;
+		margin-top: 24rpx;
+		margin-bottom: 24rpx;
+		.balabce-t{
+			width: 100%;
+			height: 86rpx;
+			line-height: 86rpx;
+			font-size: $font-size-28;
+			color: $text-color;
+			float: left;
+			.balabce-t-le{
+				float: left;
+				font-weight: bold;
+			}
+			.balabce-t-ri{
+				float: right;
+				display: flex;
+				align-items: center;
+				.money{
+					display: flex;
+					float: left;
+				}
+				.checkbox-box{
+					display: flex;
+					width: 60rpx;
+					float: left;
+					height: 100%;
+					font-size: $font-size-24;
+					.checkbox{
+						width: 40rpx;
+						text-align: right;
+						box-sizing: border-box;
+						text-align: center;
+						text-decoration: none;
+						border-radius: 0;
+						-webkit-tap-highlight-color: transparent;
+						overflow: hidden;
+					}
+				}	
+			}
+		}
+		.balabce-b{
+			width: 100%;	
+			float: left;
+			overflow: hidden;
+			.balabce-b-text{
+				width: 100%;
+				line-height: 58rpx;
+				font-size: $font-size-24;
+				color: #FF2A2A;
+				text-align: right;
+				float: right;
+			}
+			&.balabce-b--hide {
+				padding: 0 0;
+				height: 0px;
+				line-height: 0px;
+			}	
+		}
+	}
+	
+</style>

+ 678 - 0
market/pages/order/order-list.vue

@@ -0,0 +1,678 @@
+<template>
+	<view class="container" :style="{paddingTop:navbarHeight+'px'}">
+		<!-- 自定义返回 -->
+		<header-back :systeminfo='systeminfo' :navbar-data='nvabarData' :headerBtnPosi ="headerBtnPosi" :isDelete="isDelete" @goSearchPath="handlSearchPath"></header-back>
+		<view class="order-section-top" :style="{marginTop:navbarHeight+'px'}">
+			<scroll-view scroll-x scroll-with-animation class="tab-view" :scroll-left="scrollLeft">
+				<view v-for="(item,index) in orderTabBar" :key="index" class="tab-bar-item" :class="[currentTab==index ? 'active' : '']"
+				 :data-current="index" @tap.stop="onClickTab">
+					<text class="tab-bar-title">{{item.text}}</text>
+				</view>
+			</scroll-view>
+		</view>
+		<swiper class="tab-content" :current="currentTab" duration="80" @animationfinish="onChange" :style="{height:winHeight+'px'}" >
+			<swiper-item v-for="(tabItem,index) in orderTabBar" :key="index">
+				<tui-skeleton v-if="skeletonShow" backgroundColor="#fafafa" borderRadius="10rpx" :isLoading	="false" :loadingType="9"></tui-skeleton>
+				<scroll-view scroll-y class="scoll-y tui-skeleton" @scrolltolower="scrolltolower">
+					<view  :class="{'tui-order-list':scrollTop >= 0}" class="tui-skeleton clearfix">
+						<!-- 空白页 -->
+						<empty v-if="tabItem.loaded === true && tabItem.orderList.length === 0" :typeIndex="currentTab" :navbarHeight="navbarHeight"></empty>
+						<!-- 列表 -->
+						<view v-else class="tui-order-content">
+							<view  class="tui-order-item" v-for="(order,orderIndex) in tabItem.orderList" :key="orderIndex" @click.stop="detail(order.orderID)">
+								<view class="order-title">
+									<view class="order-title-t">
+										<view class="order-title-num tui-skeleton-fillet">订单号:{{order.orderNo}}</view>
+										<view class="order-title-tip tui-skeleton-fillet">{{orderStateExp(order.status)}}</view>
+									</view>
+									<view class="order-title-b">下单时间:{{order.orderTime}}</view>
+								</view>
+								<block v-for="(shop,index) in order.shopOrderList" :key="index">
+									<view class="goods-title">
+										<view class="title-logo tui-skeleton-fillet"><image :src="shop.shopLogo" mode=""></image></view>
+										<view class="title-text tui-skeleton-fillet">{{shop.shopName}}</view>
+									</view>
+									<view class="goods-item" v-for="(pros,prosIndex) in shop.orderProductList" :key="prosIndex">
+										<view class="goods-pros-t">
+											<view class="pros-img tui-skeleton-fillet"><image :src="pros.productImage" alt="" /></view>
+											<view class="pros-product">
+												<view class="producttitle tui-skeleton-fillet">{{pros.name}}</view>
+												<view class="productspec tui-skeleton-fillet">规格:{{pros.productUnit}}</view>
+												<view class="productprice">
+													<view class="price tui-skeleton-fillet">
+														<text>¥{{pros.price.toFixed(2)}}</text>
+													</view>
+													<view class="count tui-skeleton-fillet">
+														<text class="small">x</text>{{pros.num}}
+													</view>
+												</view>
+											</view>	
+										</view>
+									</view>	
+								</block>
+								<view class="order-footer">
+									<view class="order-footer-top" v-if="order.discountFee!=0">经理折扣:¥{{orderPriceToFixed(order.discountFee)}}</view>
+									<view class="order-footer-bot">
+										<view class="count tui-skeleton-fillet">共{{order.productCount}}件商品</view>
+										<view class="money tui-skeleton-fillet">应付总额:¥{{orderPriceToFixed(order.payableAmount)}}</view>
+									</view>
+								</view>
+								<!-- 底部button -->
+								<order-button ref="orderButton" 
+											  :status="order.status" 
+											  :orderID="order.orderID" 
+											  @buttonConfirm="handButtonConfirm">
+								</order-button>
+							</view>
+							<!--加载loadding-->
+							<tui-loadmore :visible="loadding" :index="3" type="black"></tui-loadmore>
+							<tui-nomore :visible="!pullUpOn" bgcolor="#F7F7F7" :text='nomoreText'></tui-nomore>
+							<!--加载loadding-->
+						</view>
+					</view>
+				</scroll-view>
+			</swiper-item>
+		</swiper>
+		<!-- 分享弹窗 -->
+		<share-alert   v-if="isShareModal"
+					   :orderID="btnoRderID" 
+					   @shareConfirm ='onShareAppMessage'>
+		</share-alert>
+		<!-- 透明模态层 -->
+		<modal-layer v-if='isModalLayer'></modal-layer>
+	</view>
+</template>
+
+<script>
+	import headerBack from '@/components/module/headerNavbar/header-back' 		 	 //自定义导航
+	import btSearch from '@/components/uni-search/bt-search.vue'						//搜索
+	import tuiSkeleton from "@/components/tui-skeleton/tui-skeleton"
+	import tuiListCell from "@/components/tui-components/list-cell/list-cell"
+	import tuiLoadmore from "@/components/tui-components/loadmore/loadmore"
+	import tuiNomore from "@/components/tui-components/nomore/nomore"
+	import orderButton from '@/components/module/orderDetails/orderListButton'		 //按钮
+	import modalLayer from "@/components/modal-layer"
+	import empty from "@/components/empty";
+	import shareAlert from '@/components/module/modelAlert/shareAlert'			 //分享弹窗
+	import { queryOrderList,cancelOrder,deleteOrder,confirmReceipt } from "@/api/order.js" 
+	
+	export default {
+		components: {
+			headerBack,
+			empty,
+			btSearch,
+			tuiListCell,
+			tuiLoadmore,
+			tuiNomore,
+			orderButton,
+			tuiSkeleton,
+			modalLayer,
+			shareAlert
+		},
+		data() {
+			return {
+				orderTabBar: [{state: 0,text: '全部订单',orderList: []},
+							  {state: 1,text: '待付款',orderList: []},
+							  {state: 2,text: '待确认',orderList: []},
+							  {state: 3,text: '待发货',orderList: []},
+							  {state: 4,text: '已发货',orderList: []},
+							  {state: 5,text: '退货/款',orderList: []},
+							 ],
+				headerBtnPosi:	this.setHeaderBtnPosi(), //获取设备顶部胶囊高度
+				systeminfo:  this.setSysteminfo(),		 //获取设备信息
+				nvabarData: {							 //顶部自定义导航
+					showCapsule: 1, // 是否显示左上角图标  1表示显示  0表示不显示,
+					showSearch: 1,
+					title: '我的订单', // 导航栏 中间的标题
+				},
+				winHeight: "", //窗口高度
+				currentTab: 0, //预设当前项的值
+				scrollLeft: 0 ,//tab标题的滚动条位置
+				userID:0,
+				orderData: [],
+				btnoRderID: 0, //点击按钮传入的的订单ID
+				pageNum: 1,	  //页数
+				pageSize: 10,  //条数
+				scrollTop: 0,
+				deteleType:'',
+				skeletonShow: true,
+				isDelete:false,
+				isClickChange: false,
+				isShareModal: false,//控制分享弹窗
+				isModalLayer: false,
+				loadding: false,
+				pullUpOn: true,
+				hasNextPage: false,
+				pullFlag: true,
+				navbarHeight:'',
+				nomoreText: '上拉显示更多',
+			}
+		},
+		onLoad(e) {
+			let that = this;
+			console.log(e)
+			if(e.type ==='detele'){that.isDelete = true}
+			that.currentTab = e.state
+			that.getHeaderTopHeight()//设置自定义导航高度
+			//  高度自适应
+			uni.getSystemInfo({
+				success: function(res) {
+					let calc = res.windowHeight;
+					that.winHeight = calc;
+				}
+			});
+		},
+		methods: {
+			// 滚动切换标签样式
+			onChange: function(e) {
+				let index = e.target.current || e.detail.current;
+				if (this.isClickChange) {
+					this.currentTab = index;
+					this.isClickChange = false;
+					return;
+				}
+				this.isClickChange = false;
+				this.currentTab = index; 
+				this.checkCor();
+				this.pageNum = 1
+				this.pullUpOn = true //切换时隐藏
+				this.loadding =  false //切换时隐藏
+				this.nomoreText = ''
+				this.getOrderDatainit(this.currentTab,'tabChange')
+			},
+			// 点击标题切换当前页时改变样式
+			onClickTab: function(e) {
+				let tabIndex = e.target.dataset.current || e.currentTarget.dataset.current;
+				if (this.currentTab === tabIndex) {
+					return false;
+				} else {
+					this.isClickChange = true;
+					this.currentTab = tabIndex
+					this.pageNum = 1
+					this.pullUpOn = true //切换时隐藏
+					this.loadding =  false //切换时隐藏
+					this.getOrderDatainit(this.currentTab)
+				}
+			},
+			//判断当前滚动超过一屏时,设置tab标题滚动条。
+			checkCor: function() {
+				if (this.currentTab > 3) {
+					//这里距离按实际计算
+					this.scrollLeft = 300
+				} else {
+					this.scrollLeft = 0
+				}
+			},
+			getOrderDatainit(index,source){
+				/**
+				 * @订单初始化加载  仅加载第一页码
+				 * @param:orderState(订单状态:0全部,1待付款,2待发货,3已发货,4退货款)
+				 * @param:userID(用户ID)
+				 * @param:pageNum(页码数)
+				 * @param:pageSize(每页条数)
+				 * @param:organizeID(全局变量组织ID)
+				 */ 
+				setTimeout(()=>{this.skeletonShow = false},1500)
+				let orderItem = this.orderTabBar[index];
+				let state = orderItem.state;
+				if(source === 'tabChange' && orderItem.loaded === true){
+					//tab切换只有第一次需要加载数据
+					return;
+				}
+				setTimeout(()=>{
+					this.$api.getStorage().then((resolve) =>{
+						this.userID = resolve.userID
+						let params = {orderState:index,userId:this.userID,pageNum:1,pageSize:this.pageSize};
+						queryOrderList(params).then(response =>{
+							let orderList = response.data.results.filter(item=>{
+								//添加不同状态下订单的表现形式
+								item = Object.assign(item, this.orderStateExp(item.state));
+								return item;
+							});
+							orderItem.orderList =[];
+							orderList.forEach(item=>{
+								orderItem.orderList.push(item);
+							})
+							//loaded新字段用于表示数据加载完毕,如果为空可以显示空白页
+							this.$set(orderItem, 'loaded', true);
+							this.hasNextPage = response.data.hasNextPage;
+							if(this.hasNextPage){
+								this.pullUpOn = false
+								this.nomoreText = '上拉显示更多'
+							}else{
+								if(orderItem.orderList.length < 2){
+									this.pullUpOn = true
+								}else{
+									this.pullUpOn = false
+									this.nomoreText = '已至底部'
+								}
+							}
+						}).catch(response =>{
+							this.$util.msg(response.msg,2000);
+						})
+					})
+				}, 600);	
+			}, 
+			getOnReachBottomData(index){//上拉加载
+				this.pageNum+=1
+				let params = {orderState:index,userId:this.userID,pageNum:1,pageSize:this.pageSize};
+				queryOrderList(params).then(response =>{
+					let orderItem = this.orderTabBar[index];
+					let resData = response.data.results
+					this.hasNextPage = response.data.hasNextPage;
+					orderItem.orderList = orderItem.orderList.concat(resData)
+					this.pullFlag = false;// 防上拉暴滑
+					setTimeout(()=>{this.pullFlag = true;},500)
+					if(this.hasNextPage){
+						this.pullUpOn = false
+						this.nomoreText = '上拉显示更多'
+					}else{
+						this.loadding = false
+						this.pullUpOn = false
+						this.nomoreText = '已至底部'
+					}
+				}).catch(response =>{
+					this.$util.msg(response.msg,2000)
+				})
+			},
+			scrolltolower() {
+				if(this.hasNextPage){
+					this.loadding = true
+					this.pullUpOn = true
+					this.getOnReachBottomData(this.currentTab);
+				}	
+			},
+			detail(id) {//订单详情跳转
+				console.log(id)
+				this.isModalLayer = true;	
+				this.$api.navigateTo(`/pages/user/order/order-details?state=${this.currentTab}&orderID=${id}`)
+			},
+			handButtonConfirm(data) {//获取点击
+				console.log('点击按钮的类型是',data);
+				this.handShowAlert(data)
+				this.btnoRderID = data.orderId
+			},
+			handShowAlert(data) {//执行
+				switch(data.type){
+					case 'delete':
+						this.handOrderDetele(data.orderId);
+						break
+					case 'cancel':
+						this.handCenceConfirm(data.orderId)
+						break
+					case 'query':
+						this.isModalLayer = true;
+						this.$api.navigateTo('/pages/user/order/order-logistics?orderID='+data.orderId)
+						break
+					case 'confirm':
+						this.handOrderConfirm(data.orderId);
+						break
+				}
+			},
+			handOrderConfirm (id){//确认收货
+				this.$util.modal('提示','是否确认收货','确定','取消',true,() =>{
+					confirmReceipt({orderID:id}).then(response =>{
+						this.$util.msg(response.msg,2000,true,'success');
+						setTimeout(() => {
+							this.getOrderDatainit(this.currentTab)
+						},2000)
+					}).catch(response =>{
+						this.$util.msg(response.msg,2000)
+					})
+				})
+			},
+			handOrderDetele(id){//删除订单
+				this.$util.modal('提示','确认删除该订单吗?','确定','取消',true,() =>{
+					deleteOrder({orderID:id}).then(response =>{
+						this.$util.msg(response.msg,2000,true,'success');
+						setTimeout(() => {
+							this.getOrderDatainit(this.currentTab)
+						},2000)
+					}).catch(response =>{
+						this.$util.msg(response.msg,2000)
+					})
+				})
+			},
+			handCenceConfirm(id){//取消订单
+				this.$util.modal('提示','确认取消该订单吗?','确定','取消',true,() =>{
+					cancelOrder({orderID:id}).then(response =>{
+						this.$util.msg(response.msg,2000,true,'success');
+						setTimeout(() => {
+							this.getOrderDatainit(this.currentTab)
+						},2000)
+					}).catch(response =>{
+						this.$util.msg(response.msg,2000)
+					})
+				})
+			},
+			handlSearchPath(){
+				this.$api.navigateTo('/pages/search/search-order')
+			},
+			onShareAppMessage (res){//分享转发
+				this.isShareModal = false
+				if (res.from === 'button') {// 来自页面内转发按钮
+					// console.log(res.target)
+			    }
+				return {
+					title: '您有新的分享订单,快来查看吧~',
+					path: `/pages/user/order/orderShareLogin?orderID=${this.btnoRderID}&userID=${this.userID}`,
+					imageUrl:'https://admin-b.caimei365.com/userfiles/1/images/photo/2020/03/%E8%AE%A2%E5%8D%95%E5%88%86%E4%BA%AB%E5%9B%BE%403x.png'
+				}
+			},
+			//订单状态文字和颜色
+			orderStateExp (state){
+				let stateText = '',
+					stateTextObject={
+						4:'交易完成',
+						5:'订单完成',
+						6:'已关闭',
+						7:'交易全退',
+						77:'交易全退',
+						11:'待付款待发货',
+						12:'待付款部分发货',
+						13:'待付款已发货',
+						21:'部分付款待发货',
+						22:'部分付款部分发货',
+						23:'部分付款已发货',
+						31:'已付款待发货',
+						32:'已付款部分发货',
+						33:'已付款已发货',
+						111:'待付款待发货',
+					}
+				Object.keys(stateTextObject).forEach(key => {
+					if(key == state){
+						stateText = stateTextObject[key]
+					}
+				})
+				return stateText;
+			},
+			orderPriceToFixed (n){
+				let price ='';
+				price = n.toFixed(2);
+				return price
+			},
+			getHeaderTopHeight (){ // 状态栏高度
+				let statusBarHeight = this.systeminfo.statusBarHeight
+				let headerPosi = this.headerBtnPosi
+				let btnPosi = { // 胶囊实际位置,坐标信息不是左上角原点
+				      height: headerPosi.height,
+				      width: headerPosi.width,
+				      // 胶囊top - 状态栏高度
+				      top: headerPosi.top - statusBarHeight,
+				      // 胶囊bottom - 胶囊height - 状态栏height (现胶囊bottom 为距离导航栏底部的长度)
+				      bottom: headerPosi.bottom - headerPosi.height - statusBarHeight,
+				      // 屏幕宽度 - 胶囊right
+				      right: this.systeminfo.screenWidth - headerPosi.right
+				}
+				this.navbarHeight= headerPosi.bottom + btnPosi.bottom// 原胶囊bottom + 现胶囊bottom
+			},
+			setHeaderBtnPosi (){
+				// 获得胶囊按钮位置信息
+				let headerBtnPosi = uni.getMenuButtonBoundingClientRect();
+				return headerBtnPosi
+			},
+			setSysteminfo (){
+				let systeminfo;
+				uni.getSystemInfo({ // 获取设备信息
+					success: (res) => {
+						systeminfo = res
+					},
+				})
+				return systeminfo
+			}
+		},
+		onPageScroll(e) {
+			this.scrollTop = e.scrollTop;
+		},
+		onShow() {
+			this.isModalLayer = false;
+			this.getOrderDatainit(this.currentTab)
+		}
+	}
+</script>
+
+<style lang="scss">
+	/*tabbar start*/
+	::-webkit-scrollbar {
+		width: 0;
+		height: 0;
+		color: transparent;
+	}
+	.order-section-top{
+		width: 100%;
+		position: fixed;
+		top: 0;
+		left: 0;
+		z-index: 99;
+		background: #FFFFFF;
+	}
+	.tab-view::before {
+		content: '';
+		position: absolute;
+		border-bottom: 1rpx solid #eaeef1;
+		-webkit-transform: scaleY(0.5);
+		transform: scaleY(0.5);
+		bottom: 0;
+		right: 0;
+		left: 0;
+	}
+	.tab-view {
+		width: 100%;
+		height: 80rpx;
+		overflow: hidden;
+		box-sizing: border-box;
+		background: #fff;
+		white-space: nowrap;
+		border-top: 1px solid #F7F7F7;
+	}
+	.tab-bar-item {
+		padding: 0;
+		height: 80rpx;
+		min-width: 80rpx;
+		line-height: 80rpx;
+		margin: 0 28rpx;
+		display: inline-block;
+		text-align: center;
+		box-sizing: border-box;
+	}
+	.tab-bar-title {
+		height: 80rpx;
+		line-height: 80rpx;
+		font-size:$font-size-28;
+		color: $text-color;
+	}
+
+	.active {
+		border-bottom: 6rpx solid $color-system;
+	}
+
+	.active .tab-bar-title {
+		color: $color-system !important;
+	}
+
+	/*tabbar end*/
+	.scoll-y {
+		height: 100%;
+	}
+	page{
+		background: #F7F7F7;
+	}
+	.container {
+		padding-bottom: env(safe-area-inset-bottom);
+		height: auto;
+		position: relative;
+	}
+	.tui-order-content{
+		width: 100%;
+		height: auto;
+	}
+	.tui-order-list {
+		margin-top: 90rpx;
+		width: 100%;
+		position: relative;
+	}
+	.tui-order-item {
+		display: flex;
+		flex-direction: column;
+		width: 702rpx;
+		padding:20rpx 24rpx 0 24rpx;
+		background: #fff;
+		border-bottom: 20rpx solid #F7F7F7;
+	}
+	.order-title{
+		width: 100%;
+		height: auto;
+		.order-title-t{
+			width: 100%;
+			height: 40rpx;
+			float: left;
+			font-size: $font-size-28;
+			line-height: 40rpx;
+			font-weight: bold;
+			.order-title-num{
+				float: left;
+				text-align: left;
+				color: $color-system;
+			}
+			.order-title-tip{
+				float: right;
+				text-align: right;
+				color: #FF2A2A;
+			}
+		}
+		.order-title-b{
+			width: 100%;
+			height: 40rpx;
+			float: left;
+			margin-top: 8rpx;
+			font-size: $font-size-28;
+			line-height: 40rpx;
+			color: #999999;
+			text-align: left;
+		}
+	}
+	.goods-title{
+		width: 100%;
+		height: 48rpx;
+		float: left;
+		margin-top: 24rpx;
+		.title-logo{
+			width: 48rpx;
+			height: 48rpx;
+			float: left;
+			image{
+				width: 48rpx;
+				height: 48rpx;
+			}
+		}
+		.title-text{
+			float: left;
+			margin-left: 16rpx;
+			font-size: $font-size-28;
+			color: $text-color;
+			text-align: left;
+			line-height: 48rpx;
+			font-weight: bold;
+		}
+	}
+	.goods-item{
+		width: 100%;
+		height: auto;
+	}	
+	.goods-pros-t{
+		display: flex;
+		align-items: center;
+		width: 100%;
+		height: 217rpx;
+		padding:24rpx 0;
+		.pros-img{
+			width: 210rpx;
+			height: 100%;
+			border-radius: 10rpx;
+			margin:0 26rpx 0 0;
+			border:1px solid #f3f3f3;
+			image{
+				width: 100%;
+				height: 100%;
+				border-radius: 10rpx;
+			}
+		}
+	}
+	.pros-product{
+		width: 468rpx;
+		height: 100%;
+		line-height: 36rpx;
+		font-size: $font-size-26;	
+		position: relative;
+		.producttitle{
+			width: 100%;
+			display: inline-block;
+			height: auto;							
+			text-overflow:ellipsis;
+			display: -webkit-box;
+			word-break: break-all;
+			-webkit-box-orient: vertical;
+			-webkit-line-clamp: 2;
+			overflow: hidden;
+			margin-bottom: 8rpx;
+		}
+		.productspec{
+			height: 36rpx;
+			color: #999999;
+		}
+		.productprice{
+			height: 48rpx;
+			position: absolute;
+			width: 100%;
+			bottom: 0;
+			.price{
+				line-height: 48rpx;
+				font-size: $font-size-28;
+				width: 48%;
+				color: #FF2A2A;
+				float: left;
+				font-weight: bold;
+			}
+			.count{
+				height: 100%;
+				float: right;
+				position: relative;
+				.small{
+					color: #666666;
+				}
+			}
+		}
+	}
+	.order-footer{
+		width: 100%;
+		height: 78rpx;
+		float: left;
+		.order-footer-top{
+			width: 100%;
+			height: 34rpx;
+			line-height: 34rpx;
+			font-size: $font-size-24;
+			color: #999999;
+			text-align: right;
+		}
+		.order-footer-bot{
+			width: 100%;
+			float: left;
+			height: 48rpx;
+			line-height: 48rpx;
+			font-size: $font-size-28;
+			font-weight: bold;
+			color: $text-color;
+			.count{
+				width: 50%;
+				float: left;
+				text-align: left;
+			}
+			.money{
+				width: 50%;
+				float: right;
+				text-align: right;
+			}
+		}
+	}
+</style>

+ 215 - 0
market/pages/order/order-sharedetails.vue

@@ -0,0 +1,215 @@
+<template>
+	<view class="container details clearfix">
+		<!-- 地址选择 -->
+		<order-address ref="orderAddress" v-if="isRequest" :addressData="addressData" ></order-address>
+		<!-- 订单信息 -->
+		<order-information ref="information" v-if="isRequest" :information="information"></order-information>
+		<!-- 商品 -->
+		<goods-list ref='goods' v-if="isRequest" :shopOrderData="shopOrderData"></goods-list>
+		<!-- 发票信息 -->
+		<invoice-tent ref="invoice" v-if="isRequest" :orderInvoice="orderInvoice"></invoice-tent>
+		<!-- 转账记录 -->
+		<transfe-record ref="transfe" v-if="isRequest"></transfe-record>
+		<!-- 支付记录 -->
+		<payment-record ref="payment" v-if="isRequest" :discernReceiptList="discernReceiptList" :receiptAmount="receiptAmount"></payment-record>
+		<!-- 退款记录 -->
+		<refund-record ref="refund" v-if="isRequest" :returnedPurchaseList="returnedPurchaseList" :returnedPurchaseFee="returnedPurchaseFee"></refund-record>
+		<!-- 底部button -->
+		<view class="button-content" :style="{paddingBottom :isIphoneX ? '68rpx' : '0rpx'}">
+			<view class="btn btn-query" v-if="btnState.isQuery" @click.stop="queryLogistics">查看物流</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import orderAddress from '@/components/module/orderDetails/orderAddress' 		 //地址信息
+	import goodsList from '@/components/module/orderDetails/goodsList'		 		 //商品列表
+	import invoiceTent from '@/components/module/orderDetails/invoiceTent'	 		 //发票信息
+	import orderInformation from '@/components/module/orderDetails/orderInformation' //订单信息
+	import transfeRecord from '@/components/module/orderDetails/transfeRecord'		 //转账信息
+	import paymentRecord from '@/components/module/orderDetails/paymentRecord'		 //支付记录
+	import refundRecord from '@/components/module/orderDetails/refundRecord'		 //退款记录
+	import { queryOrderDetails } from "@/api/order.js"
+	
+	export default {
+		components:{
+			orderInformation,
+			orderAddress,
+			invoiceTent,
+			goodsList,
+			transfeRecord,
+			paymentRecord,
+			refundRecord,
+		},
+		data() {
+			return {
+				status:'',
+				userID:'',
+				orderID:'',
+				cellPhone:'',				//客服电话
+				btnStatus:0,				//按钮组件状态
+				isRequest:false,			//是否加载完成渲染子组件
+				addressData:{},				//地址信息初始化
+				information:{},				//订单信息初始化
+				shopOrderData:{},			//商品信息初始化
+				orderInvoice:{},			//发票信息初始化
+				returnedPurchaseList:{},	//退款信息初始化
+				discernReceiptList:{},		//支付信息初始化
+				receiptAmount:0,			//支付金额
+				returnedPurchaseFee:0,		//退款金额
+				isIphoneX:this.$store.state.isIphoneX,
+				btnState:{
+					isQuery:false
+				},
+				mapStateArr:[
+					{label:'isQuery',val:[4,5,12,13,33,22,23,32,77],status: true},
+				]
+			}
+		},
+		onLoad(option){
+			this.orderID = option.orderID
+			// this.orderID = 11315
+			this.initOrderDetaileData()
+		},
+		methods: {
+			initOrderDetaileData(){//初始化页面数据@参数:订单ID
+				queryOrderDetails({ orderID : this.orderID }).then(response =>{
+					let resData = response.data;
+					this.isRequest = true
+					this.userID = resData.order.userID
+					this.status = resData.order.status
+					this.addressData = resData.userInfo
+					this.information = resData.order
+					this.shopOrderData = resData.shopOrderList
+					this.orderInvoice = resData.orderInvoice
+					this.returnedPurchaseList = resData.returnedPurchaseList
+					this.discernReceiptList = resData.discernReceiptList
+					this.receiptAmount = resData.order.receiptAmount
+					this.returnedPurchaseFee = resData.order.returnedPurchaseFee
+					this.mapStateArr.forEach(el => {
+						el.val.forEach(value => {
+							if(this.status === value){
+								this.btnState[el.label] = el.status
+							}
+						})
+					})
+				}).catch(response =>{
+					this.$util.msg(response.msg,2000);
+				})
+			},
+			queryLogistics(){//跳转查询物流页面
+				this.$api.navigateTo('/pages/user/order/order-logistics?orderID='+this.orderID)
+			},
+		},
+		onShow() {
+
+		}
+	}
+</script>
+
+<style lang="scss">
+	page {
+		height: auto;
+		background:#F7F7F7;
+	}
+	.details{
+		padding-bottom: 130rpx;
+	}
+	.btn-hover{
+		background: #FFFFFF;
+	}
+	.animation{
+		/* transition: transform 0.3s ease;*/
+		transition-property: transform;
+		transition-duration: 0.3s;
+		transition-timing-function: ease;
+	}
+	.invoice-balance{
+		width: 702rpx;
+		height: auto;
+		padding:0 24rpx;
+		background: #FFFFFF;
+		float: left;
+		margin-top: 24rpx;
+		margin-bottom: 24rpx;
+		.balabce-t{
+			width: 100%;
+			height: 86rpx;
+			line-height: 86rpx;
+			font-size: $font-size-28;
+			color: $text-color;
+			float: left;
+			.balabce-t-le{
+				float: left;
+				font-weight: bold;
+			}
+			.balabce-t-ri{
+				float: right;
+				display: flex;
+				align-items: center;
+				.money{
+					display: flex;
+					float: left;
+				}
+				.checkbox-box{
+					display: flex;
+					width: 60rpx;
+					float: left;
+					height: 100%;
+					font-size: $font-size-24;
+					.checkbox{
+						width: 40rpx;
+						text-align: right;
+						box-sizing: border-box;
+						text-align: center;
+						text-decoration: none;
+						border-radius: 0;
+						-webkit-tap-highlight-color: transparent;
+						overflow: hidden;
+					}
+				}	
+			}
+		}
+		.balabce-b{
+			width: 100%;	
+			float: left;
+			overflow: hidden;
+			.balabce-b-text{
+				width: 100%;
+				line-height: 58rpx;
+				font-size: $font-size-24;
+				color: #FF2A2A;
+				text-align: right;
+				float: right;
+			}
+			&.balabce-b--hide {
+				padding: 0 0;
+				height: 0px;
+				line-height: 0px;
+			}	
+		}
+	}
+	.button-content{
+		width: 702rpx;
+		padding:0 24rpx;
+		height: auto;
+		background: #ffffff;
+		position: fixed;
+		bottom: 0;
+		left:0 ;
+		.btn{
+			width: 160rpx;
+			height:  64rpx;
+			margin:22rpx;
+			line-height: 64rpx;
+			font-size:$font-size-26;
+			color: #FFFFFF;
+			text-align: center;
+			float: right;
+		}
+		.btn-query{
+			background:linear-gradient(135deg,rgba(255,212,129,1) 0%,rgba(198,129,0,1) 100%);
+		}
+	}
+	
+</style>

+ 187 - 0
market/pages/order/orderShareLogin.vue

@@ -0,0 +1,187 @@
+<template>
+	<view class="container login" v-if="isShareStatus">
+		<view class="login-main">
+			<image class="logo" :src="imagePath" mode=""></image>
+		</view>
+		<view class="login-input">
+			<input type="number" 
+				   v-model="shareCode"  
+				   maxlength="4" 
+				   class="input" 
+				   placeholder="请输入分享码"
+			/>
+		</view>
+		<view class="login-btn"  @click="goLogin">查看订单</view>
+	</view>
+</template>
+<script>
+	import authorize from '@/common/config/authorize.js' 
+	import { orderShareCode } from "@/api/order.js" 
+	export default{
+		data() {
+			return{
+				imagePath:'https://img.caimei365.com/group1/M00/03/83/Cmis214FbbCAQhKoAAKWfqqSIds292.png',
+				shareCode:'',  		//获取用户登录的邀请码
+				isUserInfo:false,	//控制显示授权弹窗
+				nickName:'',		//存储用户名
+				userInfo:'',		//存储微信用户授权信息
+				orderID:0,			//订单ID
+				userID:0			,//分享人的用户ID
+				isShareStatus:false,
+			}
+		},
+		onLoad(e) {
+			console.log(e)
+			this.orderID = e.orderID
+			this.userID = e.userID
+		},
+		methods:{
+			initQueryUser(){
+				authorize.getCode('weixin').then(wechatcode =>{
+					let params ={
+							code:wechatcode,
+							orderID:this.orderID,
+							userID:this.userID,
+							shareCode:this.shareCode
+						}
+					orderShareCode(params).then(response =>{
+						console.log(response)
+						if (response.code === 0) {
+							if(response.data == true){
+								console.log('同为会所运营人员查看订单详情')
+								this.$api.navigateTo(`/pages/user/order/order-details?type=share&orderID=${this.orderID}`)
+							}else{
+								console.log('游客第二次查看订单详情')
+								this.$api.redirectTo(`/pages/user/order/order-sharedetails?orderID=${this.orderID}`)
+							}
+						}else if(response.code === -2){
+							this.$util.modal('提示',response.msg,'确定','',false,() =>{
+								 this.$api.switchTabTo('/pages/tabBar/home/home')
+							})
+						}else{
+							this.isShareStatus = true
+						}
+					})
+				})
+			},
+			goLogin() {
+				if(this.shareCode == ''){
+					this.$util.msg('请联系分享人获取分享码',2000);
+					return
+				}
+				if(!this.$api.isNumber(this.shareCode)){
+					this.$util.msg('分享码格式不正确',2000);
+					return
+				}
+				authorize.getCode('weixin').then(wechatcode =>{
+					let params ={
+							code:wechatcode,
+							orderID:this.orderID,
+							userID:this.userID,
+							shareCode:this.shareCode
+						}
+					orderShareCode(params).then(response =>{
+						if (response.code === 0) {
+							console.log('游客第一次查看订单详情')
+							this.$api.redirectTo('/pages/user/order/order-sharedetails?orderID='+this.orderID)
+						}else{
+							this.$util.msg(response.msg,2000);
+						}
+					})
+				})
+			},
+		},
+		onShow() {
+			this.initQueryUser()
+		}
+	}
+</script>
+
+<style lang="scss">
+	.login{
+		width: 100%;
+		height:100%;
+		background: #FFFFFF;
+		.model-warp.none{
+			display: none;			
+		}
+		.model-warp.show{
+			display: block;
+		}
+		.login-main{
+			width: 100%;
+			display: flex;
+			flex-direction: column;
+			align-items: center;
+			padding: 128rpx 0;
+			.logo{
+				width: 658rpx;
+				height: 354rpx;
+				display: block;
+			}
+		}
+		.login-input{
+			width: 654rpx;
+			height: 40rpx;
+			padding: 24rpx;
+			margin: 0 auto;
+			margin-bottom: 60rpx;
+			background: #F7F7F7;
+			.input{
+				width: 100%;
+				height: 100%;
+				background: #F7F7F7;
+				font-size: $font-size-28;
+				border-radius: 14rpx;  
+				line-height: 40rpx;
+				color: #333333;
+			}
+		}
+		.login-btn{
+			width: 702rpx;
+			height: 88rpx;
+			font-size: $font-size-28;
+			line-height: 88rpx;
+			color: #FFFFFF;
+			margin: 0 auto;
+			margin-top: 100rpx;
+			text-align: center;
+			background: $btn-confirm;
+			border-radius: 14rpx;
+		}
+		.model-authorization{
+			width: 100%;
+			height: 100%;
+			position: fixed;
+			top: 0;
+			left: 0;
+			z-index: 999;
+			.authorization{
+				width: 518rpx;
+				height: 320rpx;
+				position: absolute;
+				background: rgba(255,255,255,.7);
+				left: 0;
+				right: 0;
+				bottom: 0;
+				top: 0;
+				margin: auto;
+				.to-btn{
+					position: absolute;
+					top: 0;
+					left: 0;
+					right: 0;
+					bottom: 0;
+					margin: auto;
+					width: 70%;
+					height: 88rpx;
+					font-size: $font-size-28;
+					line-height: 88rpx;
+					color: #FFFFFF;
+					text-align: center;
+					border-radius: 44rpx;
+				}
+			}
+		}
+	}
+</style>

+ 29 - 10
market/pages/user/user.vue

@@ -17,12 +17,13 @@
 			</view>
 			<!-- 订单 -->
 			<view class="user-order">
-				<view class="tab-title">
+				<view class="tab-title" @click="navigator('/market/pages/order/order-list?state=0')">
 					<text class="cell-tit">我的订单</text>
-					<text class="cell-more iconfont icon-xiayibu">查看更多</text>
+					<text class="cell-more">查看更多</text>
+					<text class="iconfont icon-xiayibu"></text>
 				</view>
 				<view class="order-section">
-					<view class="order-item" @click="navigator('/pages/user/order/order-list?state=1')" hover-class="common-hover"  :hover-stay-time="50">
+					<view class="order-item" @click="navigator('/market/pages/order/order-list?state=1')" hover-class="common-hover"  :hover-stay-time="50">
 						<view class="order-icon">
 							<image src="../../../static/temp/order1@3x.png" mode=""></image>
 							<text 	v-if="paymentCount >0" 
@@ -33,7 +34,7 @@
 						</view>
 						<text class="order-t">待付款</text>
 					</view>
-					<view class="order-item" @click="navigator('/pages/user/order/order-list?state=2')"  hover-class="common-hover" :hover-stay-time="50">
+					<view class="order-item" @click="navigator('/market/pages/order/order-list?state=2')"  hover-class="common-hover" :hover-stay-time="50">
 						<view class="order-icon">
 							<image src="../../../static/temp/order2@3x.png" mode=""></image>
 							<text  v-if="waitShipmentsCount >0" 
@@ -44,7 +45,7 @@
 						</view>
 						<text class="order-t">待发货</text>
 					</view>
-					<view class="order-item" @click="navigator('/pages/user/order/order-list?state=3')" hover-class="common-hover"  :hover-stay-time="50">
+					<view class="order-item" @click="navigator('/market/pages/order/order-list?state=3')" hover-class="common-hover"  :hover-stay-time="50">
 						<view class="order-icon">
 							<image src="../../../static/temp/order3@3x.png" mode=""></image>
 							<text   v-if="shipmentsCount >0" 
@@ -55,7 +56,7 @@
 						</view>
 						<text class="order-t">待确认</text>
 					</view>
-					<view class="order-item" @click="navigator('/pages/user/order/order-list?state=4')" hover-class="common-hover"  :hover-stay-time="50">
+					<view class="order-item" @click="navigator('/market/pages/order/order-list?state=5')" hover-class="common-hover"  :hover-stay-time="50">
 						<view class="order-icon">
 							<image src="../../../static/temp/order4@3x.png" mode=""></image>
 							<text 	v-if="salesReturnCount >0" 
@@ -66,7 +67,7 @@
 						</view>
 						<text class="order-t">已发货</text>
 					</view>
-					<view class="order-item" @click="navigator('/pages/user/order/order-list?state=0')" hover-class="common-hover"  :hover-stay-time="50">
+					<view class="order-item" @click="navigator('/market/pages/order/order-list?state=4')" hover-class="common-hover"  :hover-stay-time="50">
 						<view class="order-icon">
 							<image src="../../../static/temp/order5@3x.png" mode=""></image>
 						</view>
@@ -115,9 +116,9 @@
 				isShowNoLogin:false,
 				isIphoneX:this.$store.state.isIphoneX,
 				firstList:[
-					{name:'机构列表',path:'/pages/user/operator/list'},
-					{name:'帮机构下单',path:'/pages/login/information'},
-					{name:'拉机构上线',path:'/pages/user/address/address'}
+					{name:'机构列表',path:'/market/pages/club/list'},
+					{name:'帮机构下单',path:'/market/pages/club/club-list'},
+					{name:'拉机构上线',path:'/market/pages/login/register'}
 				],
 			}
 		},
@@ -300,10 +301,28 @@
 		color: #333333;
 		text-align:left;
 		border-bottom: 1px solid #F8F8F8;
+		position: relative;
 		.cell-tit{
 			font-size: $font-size-28;
 			color: $text-color;
 		}
+		.cell-more{
+			float: right;
+			line-height: 80rpx;
+			font-size: $font-size-28;
+			color: $text-color;
+			padding-right: 40rpx;
+		}
+		.iconfont{
+			width: 30rpx;
+			height: 80rpx;
+			line-height: 80rpx;
+			text-align: center;
+			position: absolute;
+			right: 0;
+			top: 0;
+			display: block;
+		}
 	}
 	.order-section{
 		display: flex;

+ 63 - 0
pages.json

@@ -263,6 +263,69 @@
 					"style": {
 						"navigationBarTitleText": "账户中心"
 					}
+				},
+				{
+					"path": "pages/order/create-order",
+					"style": {
+						"navigationBarTitleText": "确认订单"
+					}
+				},
+				{
+					"path": "pages/order/order-details",
+					"style": {
+						"navigationBarTitleText": "订单详情",
+						"navigationStyle":"custom"
+					}
+				},
+				{
+					"path": "pages/order/order-list",
+					"style": {
+						"navigationBarTitleText": "订单列表",
+						"navigationStyle":"custom"
+					}
+				},
+				{
+					"path": "pages/order/order-sharedetails",
+					"style": {
+						"navigationBarTitleText": "订单详情",
+						"navigationStyle":"custom"
+					}
+				},
+				{
+					"path": "pages/order/orderShareLogin",
+					"style": {
+						"navigationBarTitleText": "订单详情"
+					}
+				},
+				{
+					"path": "pages/club/list",
+					"style": {
+						"navigationBarTitleText": "机构列表"
+					}
+				},
+				{
+					"path": "pages/club/club-list",
+					"style": {
+						"navigationBarTitleText": "帮下单机构列表"
+					}
+				},
+				{
+					"path": "pages/login/register",
+					"style": {
+						"navigationBarTitleText": "拉机构上线"
+					}
+				},
+				{
+					"path": "pages/login/information",
+					"style": {
+						"navigationBarTitleText": "修改资料"
+					}
+				},
+				{
+					"path": "pages/login/apply",
+					"style": {
+						"navigationBarTitleText": "修改申请信息"
+					}
 				}
 			]
 		}

+ 0 - 38
pages/user/order/confirmation.vue

@@ -1,38 +0,0 @@
-<template>
-	<view class="confirmation">
-		<view class="cart-content empty" :class="showEmptyClass">
-			<view  class="empty-container">
-				<image class="empty-container-image" src="https://img.caimei365.com/group1/M00/03/71/Cmis2F3wna-AX-p9AAEv0C5HQdI477.png" mode="aspectFit"></image>
-				<text class="error-text">本页面正在开发中,敬请期待~~</text>
-				<view class="login-btn"  @click="goIndex">回到商城首页</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default{
-		data(){
-			return{
-				
-			}
-		},
-		onLoad() {
-			
-		},
-		methods:{
-			goIndex(){
-				uni.switchTab({
-				    url: '/pages/tabBar/home/home'
-				});
-			}
-		},
-		onShow() {
-			
-		}
-	}
-</script>
-
-<style>
-	
-</style>