From f09d9ec905b6247b36a394158662fe90d02197a5 Mon Sep 17 00:00:00 2001
From: xuxueyang <xuxy@fengyuntec.com>
Date: 星期一, 15 七月 2024 14:59:36 +0800
Subject: [PATCH] fix bug

---
 sub_pages/supplier/supplier-info/supplier-info.vue                                 | 1193 +++++++++++++++++++-----------------
 uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue         |    5 
 sub_pages/supplier/flower-manage/flower-add.vue                                    |   62 +
 common/global.scss                                                                 |    6 
 mixin/mixin.js                                                                     |    3 
 uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.vue |  677 ++++++++++---------
 uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-picker.js      |    4 
 7 files changed, 1,046 insertions(+), 904 deletions(-)

diff --git a/common/global.scss b/common/global.scss
index ca95a4d..0523aa9 100644
--- a/common/global.scss
+++ b/common/global.scss
@@ -99,10 +99,10 @@
 			font-weight: 400;
 			font-size: 28rpx;
 			line-height: 58rpx;
-			padding: 8rpx 30rpx;
+			padding: 8rpx 24rpx;
 			color: #33a868;
-			margin-left: 13rpx;
-			margin-right: 13rpx;
+			margin-left: 6rpx;
+			margin-right: 6rpx;
 			border: 2rpx solid #F1F5F2;
 		}
 		.value-item.cur{
diff --git a/mixin/mixin.js b/mixin/mixin.js
index 0435a8b..a2ac9ad 100644
--- a/mixin/mixin.js
+++ b/mixin/mixin.js
@@ -24,6 +24,9 @@
 			cache_user: state => {
 				return state.currentInfo || {}
 			},
+			sign: state => {
+				return state.sign || {}
+			},
 			// currentEnId: state=>{
 			// 	// console.log('currentEnId',state.currentInfo.enId,state.currentInfo)
 			// 	return state.currentInfo.enId || ''
diff --git a/sub_pages/supplier/flower-manage/flower-add.vue b/sub_pages/supplier/flower-manage/flower-add.vue
index e9dee4a..2aff894 100644
--- a/sub_pages/supplier/flower-manage/flower-add.vue
+++ b/sub_pages/supplier/flower-manage/flower-add.vue
@@ -27,7 +27,7 @@
 				</view>
 			</view>
 			<view class="form-item before-line">
-				<view class="label required">商品名称</view>
+				<view class="label">商品名称</view>
 				<view class="m-l-a m-r-0 flex">
 					<input v-model="dto.name" placeholder="请选择分类" disabled
 						style="margin-top: 16px;text-align: right;"></input>
@@ -35,7 +35,7 @@
 				</view>
 			</view>
 			<view class="form-item before-line">
-				<view class="label required">商品单位</view>
+				<view class="label">商品单位</view>
 				<view class="m-l-a m-r-0 flex">
 					<input v-model="dto.unit" placeholder="请选择分类" disabled
 						style="margin-top: 16px;text-align: right;"></input>
@@ -44,7 +44,7 @@
 			</view>
 
 			<view class="form-item before-line">
-				<view class="label required">商品颜色</view>
+				<view class="label">商品颜色</view>
 				<!-- 	<view class="m-l-a m-r-0 flex " :class="[!dto.color?'desc-gray':'']" @click="()=>{
 					show_select_color=true
 				}">
@@ -77,7 +77,7 @@
 			</view>
 
 			<view class="form-item before-line bottom-border-no">
-				<view class="label required" style="width: 400rpx;">商品轮播图(300*160px)</view>
+				<view class="label " style="width: 400rpx;">商品轮播图(300*160px)</view>
 				<view class="m-l-a m-r-0 flex">
 					<!-- :style="{'background-image':dto.icon&&`url('${dto.icon}')`||''}" -->
 					<view class="component-button-upload" @click="uploadIcon('bannerList')">
@@ -147,7 +147,7 @@
 
 
 			<view class="form-item before-line">
-				<view class="label required">商品视频</view>
+				<view class="label">商品视频</view>
 				<view class="m-l-a m-r-0 flex">
 					<!-- :style="{'background-image':dto.icon&&`url('${dto.icon}')`||''}" -->
 					<view class="component-button-upload m-r-15" @click="uploadIcon('video')">
@@ -229,6 +229,16 @@
 					stock: 0,
 					params: [], //id,value
 				},
+				requireFields: [{
+					name: '商品分类',
+					key: 'category'
+				},{
+					name: '列表封面图',
+					key: 'cover'
+				},{
+					name: '商品等级',
+					key: 'level'
+				}],
 				show_select_category: false,
 				show_select_level: false,
 				columns_categorys: [],
@@ -276,10 +286,10 @@
 			}).then(res => {
 				var data = res.data
 				this.columns_levels = [data || []]
-				this.columns_levels[0].unshift({
-					label: '全部',
-					value: ''
-				})
+				// this.columns_levels[0].unshift({
+				// 	label: '全部',
+				// 	value: ''
+				// })
 
 			})
 			if (options.id) {
@@ -500,6 +510,16 @@
 
 			},
 			async submit() {
+				for (var field of this.requireFields) {
+					if (!this.dto[field.key]) {
+						this.$message.showToast(`${field.name}信息未填写`)
+						return
+					}
+				}
+				if(this.dto.params.length<1){
+					this.$message.showToast('商品参数详情未设置')
+					return
+				}
 				// if (!this.dto.applicationType) {
 				// 	this.$message.showToast('未选择类型')
 				// 	return
@@ -532,6 +552,12 @@
 					this.$store.dispatch('sign_add', 'flower');
 
 					this.backpage()
+				} else {
+					console.log('error re', re)
+					if (re.code === 30000 && Array.isArray(re.msg)) {
+						this.$message.showToast('字段未填写完整')
+
+					}
 				}
 			},
 			async deleteBanner(index) {
@@ -544,8 +570,15 @@
 				const that = this
 				if (key == 'video') {
 					uni.chooseVideo({
+						maxDuration: 30,
 						sourceType: ['camera', 'album'],
 						success: function(res) {
+							// console.log('res',res)
+							// size: 11082508
+							if (res.size > 1024 * 1024 * 50) {
+								that.$message.confirm('视频最多支持50M大小,超出大小限制')
+								return
+							}
 							if (res.tempFilePath) {
 								console.log('res.tempFilePath', res.tempFilePath)
 								that.$message.showLoading()
@@ -572,12 +605,15 @@
 						count: 1, // 最多可以选择的图片张数,默认9
 						sizeType: ['compressed'], //original 原图,compressed 压缩图,默认二者都有
 						sourceType: ['camera', 'album'], //album 从相册选图,camera 使用相机,默认二者都有。如需直接开相机或直接选相册,请只使用一个选项
-						success: function({
-							errMsg,
-							tempFiles
-						}) {
+						success: function(res) {
+							let errMsg = res.errMsg
+							let tempFiles = res.tempFiles
 							if (errMsg === 'chooseImage:ok') {
 								// console.log(tempFiles[0])
+								if (tempFiles[0].size > 1024 * 1024 * 5) {
+									that.$message.confirm('图片最多支持5M大小,超出大小限制')
+									return
+								}
 								that.$message.showLoading()
 								that.$http.upload(tempFiles[0].path).then(async res => {
 									console.log('res1', res)
diff --git a/sub_pages/supplier/supplier-info/supplier-info.vue b/sub_pages/supplier/supplier-info/supplier-info.vue
index 5199068..c4a3c95 100644
--- a/sub_pages/supplier/supplier-info/supplier-info.vue
+++ b/sub_pages/supplier/supplier-info/supplier-info.vue
@@ -1,566 +1,631 @@
-<template>
-	<view class="container-page">
-		<view>
-			<view class="form-item">
-				<view class="label required">店铺类型</view>
-				<view class="m-l-a m-r-0 flex " :class="[!dto.typeId?'desc-gray':'']" @click="()=>{
-					if(!id){
-						show_select_type=true
-					}
-				}">
-					<view>{{dto.typeName || '请选择'}}</view>
-					<u-icon class="m-l-a" name="arrow-right"></u-icon>
-				</view>
-				<!-- 	<view class="m-l-a m-r-0 flex " :class="[!dto.typeId?'desc-gray':'']">
-					<uni-data-picker @change="(e)=>{PickData('typeId','typeStr',e)}" placeholder="请选择"
-						:localdata="columns_types">
-						{{dto.typeStr || '请选择'}}
-					</uni-data-picker>
-					<u-icon class="m-l-a" name="arrow-right"></u-icon>
-				</view> -->
-			</view>
-			<view class="form-item before-line">
-				<view class="label required">店铺名称</view>
-				<view class="m-l-a m-r-0 flex">
-					<input v-model="dto.name" placeholder="请输入店铺名称" style="margin-top: 16px;text-align: right;"></input>
-
-				</view>
-			</view>
-			<view class="form-item bottom-border-no">
-				<view class="label required" style="width: 360rpx;">店铺头像(750*750px)</view>
-				<view class="m-l-a m-r-0 flex m-t-20 m-b-20">
-					<view class="component-button-upload" @click="uploadIcon('cover')">
-
-					</view>
-				</view>
-			</view>
-			<view v-if="dto.cover">
-				<view class="flex p20 form-item bottom-border-no" style="padding-top: 0rpx;padding-bottom: 10rpx">
-					<view class="m-r-10 ">
-						<image class="banner-img" :src="dto.cover" @click.stop="previewImg(dto.cover)">
-
-						</image>
-						<view class="t-red text-center" @click.stop="deleteImg('cover','')">删除</view>
-					</view>
-				</view>
-			</view>
-			<u-divider></u-divider>
-
-			<view class="form-item before-line">
-				<view class="label required">联系人姓名</view>
-				<view class="m-l-a m-r-0 flex">
-					<input v-model="dto.contactName" placeholder="请输入联系人姓名"
-						style="margin-top: 16px;text-align: right;"></input>
-
-				</view>
-			</view>
-			<view class="form-item before-line">
-				<view class="label required">联系方式</view>
-				<view class="m-l-a m-r-0 flex">
-					<input v-model="dto.contactTel" placeholder="请输入联系方式"
-						style="margin-top: 16px;text-align: right;"></input>
-
-				</view>
-			</view>
-			<view class="form-item before-line">
-				<view class="label required">集货站</view>
-				<view class="m-l-a m-r-0 flex " :class="[!dto.stationId?'desc-gray':'']" @click="()=>{
-					if(!id){
-						show_select_station=true
-					}
-				}">
-					<view>{{dto.stationName || '请选择'}}</view>
-					<u-icon class="m-l-a" name="arrow-right"></u-icon>
-				</view>
-				<!-- 			<view class="m-l-a m-r-0 flex " :class="[!dto.stationId?'desc-gray':'']">
-					<uni-data-picker @change="(e)=>{PickData('stationId','stationStr',e)}" placeholder="请选择"
-						:localdata="columns_station">
-						{{dto.typeStr || '请选择'}}
-					</uni-data-picker>
-					<u-icon class="m-l-a" name="arrow-right"></u-icon>
-				</view> -->
-
-			</view>
-			<view class="form-item before-line">
-				<view class="label required">地区</view>
-				<!-- 			<view class="m-l-a m-r-0 flex " :class="[!dto.applicationType?'desc-gray':'']" @click="()=>{
-					if(!id){
-						show_select_type=true
-					}
-				}">
-					<view>{{dto.applicationTypeStr||dto.applicationType || '请选择'}}</view>
-					
-					
-					<u-icon class="m-l-a" name="arrow-right"></u-icon>
-				</view> -->
-				<view class="m-l-a m-r-0 flex " :class="[!dto['province']?'desc-gray':'']">
-					<uni-data-picker @change="(e)=>{PickArea(dto,e)}" placeholder="" :localdata="regionDataPlus">
-						{{ dto['province'] || '请选择' }}{{ dto['city'] && ('/' + dto['city']) || '' }}{{
-								                  dto['region'] && ('/' + dto['region']) || ''
-								                }}
-					</uni-data-picker>
-					<u-icon class="m-l-a" name="arrow-right"></u-icon>
-				</view>
-
-			</view>
-			<view class="form-item before-line">
-				<view class="label required">地址</view>
-				<view class="m-l-a m-r-0 flex">
-					<input v-model="dto.address" placeholder="请输入地址"
-						style="margin-top: 16px;text-align: right;"></input>
-
-				</view>
-			</view>
-			<view class="form-item before-line">
-				<view class="label required">店铺简介</view>
-			</view>
-			<view class="flex">
-				<u--textarea v-model="dto.description" placeholder="请输入店铺简介"></u--textarea>
-			</view>
-			<view class="form-item before-line m-t-20">
-				<view class="label required">选择审核方式</view>
-				<view class="m-l-a m-r-0 flex">
-
-					<u-radio-group v-model="dto.idcardType" placement="row">
-						<u-radio :customStyle="{'margin-bottom': '8px','margin-right': '8px','font-size':'28rpx'}"
-							v-for="(item, index) in shTypeList" :key="index" :label="item.name" :name="item.name">
-						</u-radio>
-					</u-radio-group>
-				</view>
-			</view>
-			<view class="form-item bottom-border-no before-line m-t-20 p-b-20" v-if="dto.idcardType=='身份证'">
-				<view class="label required">身份证正反面</view>
-				<view class="m-l-a m-r-0 flex">
-					<!-- 					<view class="component-button-upload m-r-15" @click="uploadIcon('idCards')">
-
-					</view> -->
-					<view class="component-button-upload" @click="uploadIcon('idCards')">
-
-					</view>
-				</view>
-			</view>
-			<view class="flex p20" style="padding-top: 0rpx;padding-bottom: 10rpx"
-				v-if="dto.idcardType=='身份证'&&dto.idCards&&dto.idCards.length>0">
-				<view class="m-t-12 m-r-10 " v-for="(tBanner,index) of dto.idCards" :key="index">
-					<image class="banner-img" :src="tBanner.url" @click.stop="previewImg(tBanner.url)">
-
-					</image>
-					<view class="t-red text-center" @click.stop="deleteImg('idCards',index)">删除</view>
-				</view>
-			</view>
-			<view class="form-item bottom-border-no before-line m-t-20 p-b-20" v-if="dto.idcardType=='营业执照'">
-				<view class="label required">营业执照</view>
-				<view class="m-l-a m-r-0 flex">
-					<view class="component-button-upload m-r-15" @click="uploadIcon('pictures')">
-
-					</view>
-
-				</view>
-			</view>
-			<view class="flex p20" style="padding-top: 0rpx;padding-bottom: 10rpx"
-				v-if="dto.idcardType=='营业执照'&&dto.pictures&&dto.pictures.length>0">
-				<view class="m-t-12 m-r-10 " v-for="(tBanner,index) of dto.pictures" :key="index">
-					<image class="banner-img" :src="tBanner.url" @click.stop="previewImg(tBanner.url)">
-
-					</image>
-					<view class="t-red text-center" @click.stop="deleteImg('pictures',index)">删除</view>
-				</view>
-			</view>
-
-
-
-			<view class="button-green-1 m-t-20 button-fixed-bottom before-line " @click="submit">
-				提交审核
-			</view>
-
-		</view>
-
-		<view style="min-height: 200rpx;">
-			&nbsp;
-		</view>
-		<u-picker @confirm="select_type" keyName="name" @cancel="show_select_type=false" :show="show_select_type"
-			:columns="columns_types"></u-picker>
-
-		<u-picker @confirm="select_station" keyName="name" @cancel="show_select_station=false"
-			:show="show_select_station" :columns="columns_station"></u-picker>
-
-
-	</view>
-</template>
-
-<script>
-	import environments from '@/environments'
-
-	import {
-		mapState
-	} from 'vuex'
-
-	export default {
-
-		data() {
-			return {
-				id: '',
-				refresh: false,
-				api: '',
-				dto: {
-					id: '',
-					pictures: [],
-					idCards: [],
-					cover: '',
-					idcardType: '身份证',
-					description: '',
-					address: '',
-					stationId: '',
-					stationName: '',
-					id: '',
-					userId: '',
-					name: '',
-					typeId: '',
-					typeName: '',
-					contactName: '',
-					contactTel: '',
-					province: '',
-					city: '',
-					region: '',
-				},
-				show_select_type: false,
-				show_select_station: false,
-				columns_types: [],
-				columns_station: [],
-
-				//审核方式
-				shTypeList: [{
-						name: '身份证',
-						disabled: false
-					},
-					{
-						name: '营业执照',
-						disabled: false
-					}
-				],
-				regionDataPlus: [],
-			}
-		},
-		onLoad(options) {
-			if (options.id) {
-				this.id = options.id
-				this.getDetail()
-			} else {
-				this.getCurrentInfo()
-				//类型和集火站
-				this.$http.request('get', '/api/station/list', {
-					params: {}
-				}).then(res => {
-					var data = res.data
-					this.columns_station = [data || []]
-					// this.columns_station = (data || []).map(item => {
-					// 	return {
-					// 		...item,
-					// 		code: item.id,
-					// 		text: item.name,
-					// 	}
-					// })
-				})
-				//类型和集火站
-				this.$http.request('get', '/api/supplier/type/list', {
-					params: {}
-				}).then(res => {
-					var data = res.data
-					this.columns_types = [data || []]
-					// this.columns_types = (data || []).map(item => {
-					// 	return {
-					// 		...item,
-					// 		code: item.id,
-					// 		text: item.name,
-					// 	}
-					// })
-					// console.log('columns_types', this.columns_types)
-				})
-				this.init_area()
-			}
-
-		},
-
-		methods: {
-			PickArea(item, e) {
-				console.log('PickArea', item, e)
-				if (e.detail.value) {
-					this.dto.province = ''
-					this.dto.city = ''
-					this.dto.region = ''
-					if(e.detail.value.length<=3){
-						if (!!e.detail.value[0])
-							this.dto.province = e.detail.value[0].value
-						if (!!e.detail.value[1])
-							this.dto.city = e.detail.value[1].value
-						if (!!e.detail.value[2])
-							this.dto.region = e.detail.value[2].value
-					}else{
-						//说明有重复的
-						var plusnum = e.detail.value.length - 3
-						if (!!e.detail.value[plusnum+0])
-							this.dto.province = e.detail.value[plusnum+0].value
-						if (!!e.detail.value[plusnum+1])
-							this.dto.city = e.detail.value[plusnum+1].value
-						if (!!e.detail.value[plusnum+2])
-							this.dto.region = e.detail.value[plusnum+2].value
-					}
-
-					this.$forceUpdate()
-
-				}
-			},
-			PickData(valueKey, nameKey, e) {
-				// console.log('PickArea', item, e)
-				if (e.detail.value) {
-					if (!!e.detail.value[0])
-						this.dto[valueKey] = e.detail.value[0].value || e.detail.value[0].id
-					if (nameKey) {
-						this.dto[nameKey] = e.detail.value[0].label || e.detail.value[0].name || e.detail.value[0].value
-					}
-					this.$forceUpdate()
-
-				}
-			},
-			async init_area() {
-				const res = await this.$http.request('get', '/api/pub/china/area/json')
-				// console.log('area', JSON.parse(res.data))
-				this.regionDataPlus = res.data && JSON.parse(res.data.replaceAll('code', 'value').replaceAll('name',
-					'text')) || []
-					
-				console.log('area', this.regionDataPlus)
-
-
-			},
-
-			select_type(e) {
-				this.show_select_type = false
-				this.dto.typeName = e.value[0].name
-				this.dto.typeId = e.value[0].id
-			},
-			select_station(e) {
-				this.show_select_station = false
-				this.dto.stationName = e.value[0].name
-				this.dto.stationId = e.value[0].id
-			},
-			async getCurrentInfo() {
-				this.$message.showLoading()
-				const {
-					code,
-					data
-				} = await this.$http.request('get', "/api/current/supplier", {})
-				if (code == 0) {
-					this.dto = {
-						...data,
-
-					}
-					if (!this.dto.pictures) {
-						this.dto.pictures = []
-					} else if (typeof this.dto.pictures == 'string') {
-						this.dto.pictures = JSON.parse(this.dto.pictures)
-					}
-					if (!this.dto.idCards) {
-						this.dto.idCards = []
-					} else if (typeof this.dto.idCards == 'string') {
-						this.dto.idCards = JSON.parse(this.dto.idCards)
-					}
-
-					if (this.dto.idcardType == '1') {
-						this.dto.idcardType = '身份证'
-					}
-					this.dto.userId = this.currentInfo.id
-
-				}
-
-				this.$message.hideLoading()
-			},
-			async getDetail() {
-				this.$message.showLoading()
-				const {
-					code,
-					data
-				} = await this.$http.request('get', "/api/supplier/addOrUpdate/detail/" + this.id, {})
-				if (code == 0) {
-					this.dto = {
-						...data,
-
-					}
-					if (!this.dto.pictures) {
-						this.dto.pictures = []
-					} else if (typeof this.dto.pictures == 'string') {
-						this.dto.pictures = JSON.parse(this.dto.pictures)
-					}
-					if (!this.dto.idCards) {
-						this.dto.idCards = []
-					} else if (typeof this.dto.idCards == 'string') {
-						this.dto.idCards = JSON.parse(this.dto.idCards)
-					}
-					if (this.dto.idcardType == '1') {
-						this.dto.idcardType = '身份证'
-					}
-				}
-
-				this.$message.hideLoading()
-
-			},
-			async submit() {
-
-				await this.$message.confirm(`是否确定提交/修改店铺信息`)
-
-
-				var dto = {
-					...this.dto,
-					idcardType: this.dto.idcardType === '身份证' ? "1" : '2'
-				}
-				this.$message.showLoading()
-				const re = await this.$http.request('post', '/api/supplier/addOrUpdate', {
-					data: dto
-				})
-				this.$message.hideLoading()
-				if (re.code == 2000 || re.code == 0) {
-					this.$message.showToast('操作成功')
-					//需要标记加一下
-					this.$store.dispatch('sign_add', 'info');
-					this.$store.dispatch('getCurrentInfo')
-
-					this.backpage()
-				}
-			},
-
-			async deleteImg(key, index) {
-				await this.$message.confirm('是否确认删除此图片')
-				if (Array.isArray(this.dto[key])) {
-					this.dto[key].splice(index, 1)
-
-				} else {
-					this.dto[key] = ''
-				}
-				this.$forceUpdate()
-			},
-			uploadIcon(key) {
-				const that = this
-				uni.chooseImage({
-					count: 1, // 最多可以选择的图片张数,默认9
-					sizeType: ['original', 'compressed'], //original 原图,compressed 压缩图,默认二者都有
-					sourceType: ['camera', 'album'], //album 从相册选图,camera 使用相机,默认二者都有。如需直接开相机或直接选相册,请只使用一个选项
-					success: function({
-						errMsg,
-						tempFiles
-					}) {
-						if (errMsg === 'chooseImage:ok') {
+<template>
+	<view class="container-page">
+		<view>
+			<view class="form-item">
+				<view class="label required">店铺类型</view>
+				<view class="m-l-a m-r-0 flex " :class="[!dto.typeId?'desc-gray':'']" @click="()=>{
+					if(!id){
+						show_select_type=true
+					}
+				}">
+					<view>{{dto.typeName || '请选择'}}</view>
+					<u-icon class="m-l-a" name="arrow-right"></u-icon>
+				</view>
+				<!-- 	<view class="m-l-a m-r-0 flex " :class="[!dto.typeId?'desc-gray':'']">
+					<uni-data-picker @change="(e)=>{PickData('typeId','typeStr',e)}" placeholder="请选择"
+						:localdata="columns_types">
+						{{dto.typeStr || '请选择'}}
+					</uni-data-picker>
+					<u-icon class="m-l-a" name="arrow-right"></u-icon>
+				</view> -->
+			</view>
+			<view class="form-item before-line">
+				<view class="label required">店铺名称</view>
+				<view class="m-l-a m-r-0 flex">
+					<input v-model="dto.name" placeholder="请输入店铺名称" style="margin-top: 16px;text-align: right;"></input>
+
+				</view>
+			</view>
+			<view class="form-item bottom-border-no">
+				<view class="label required" style="width: 360rpx;">店铺头像(750*750px)</view>
+				<view class="m-l-a m-r-0 flex m-t-20 m-b-20">
+					<view class="component-button-upload" @click="uploadIcon('cover')">
+
+					</view>
+				</view>
+			</view>
+			<view v-if="dto.cover">
+				<view class="flex p20 form-item bottom-border-no" style="padding-top: 0rpx;padding-bottom: 10rpx">
+					<view class="m-r-10 ">
+						<image class="banner-img" :src="dto.cover" @click.stop="previewImg(dto.cover)">
+
+						</image>
+						<view class="t-red text-center" @click.stop="deleteImg('cover','')">删除</view>
+					</view>
+				</view>
+			</view>
+			<u-divider></u-divider>
+
+			<view class="form-item before-line">
+				<view class="label required">联系人姓名</view>
+				<view class="m-l-a m-r-0 flex">
+					<input v-model="dto.contactName" placeholder="请输入联系人姓名"
+						style="margin-top: 16px;text-align: right;"></input>
+
+				</view>
+			</view>
+			<view class="form-item before-line">
+				<view class="label required">联系方式</view>
+				<view class="m-l-a m-r-0 flex">
+					<input v-model="dto.contactTel" placeholder="请输入联系方式"
+						style="margin-top: 16px;text-align: right;"></input>
+
+				</view>
+			</view>
+			<view class="form-item before-line">
+				<view class="label required">集货站</view>
+				<view class="m-l-a m-r-0 flex " :class="[!dto.stationId?'desc-gray':'']" @click="()=>{
+					if(!id){
+						show_select_station=true
+					}
+				}">
+					<view>{{dto.stationName || '请选择'}}</view>
+					<u-icon class="m-l-a" name="arrow-right"></u-icon>
+				</view>
+				<!-- 			<view class="m-l-a m-r-0 flex " :class="[!dto.stationId?'desc-gray':'']">
+					<uni-data-picker @change="(e)=>{PickData('stationId','stationStr',e)}" placeholder="请选择"
+						:localdata="columns_station">
+						{{dto.typeStr || '请选择'}}
+					</uni-data-picker>
+					<u-icon class="m-l-a" name="arrow-right"></u-icon>
+				</view> -->
+
+			</view>
+			<view class="form-item before-line">
+				<view class="label required">地区</view>
+				<!-- 			<view class="m-l-a m-r-0 flex " :class="[!dto.applicationType?'desc-gray':'']" @click="()=>{
+					if(!id){
+						show_select_type=true
+					}
+				}">
+					<view>{{dto.applicationTypeStr||dto.applicationType || '请选择'}}</view>
+					
+					
+					<u-icon class="m-l-a" name="arrow-right"></u-icon>
+				</view> -->
+				<view class="m-l-a m-r-0 flex " :class="[!dto['province']?'desc-gray':'']">
+					<uni-data-picker :area="true" @change="(e)=>{PickArea(dto,e)}" placeholder=""
+						:localdata="regionDataPlus">
+						{{ dto['province'] || '请选择' }}{{ dto['city'] && ('/' + dto['city']) || '' }}{{
+								                  dto['region'] && ('/' + dto['region']) || ''
+								                }}
+					</uni-data-picker>
+					<u-icon class="m-l-a" name="arrow-right"></u-icon>
+				</view>
+
+			</view>
+			<view class="form-item before-line">
+				<view class="label required">地址</view>
+				<view class="m-l-a m-r-0 flex">
+					<input v-model="dto.address" placeholder="请输入地址"
+						style="margin-top: 16px;text-align: right;"></input>
+
+				</view>
+			</view>
+			<view class="form-item before-line">
+				<view class="label required">店铺简介</view>
+			</view>
+			<view class="flex">
+				<u--textarea v-model="dto.description" placeholder="请输入店铺简介"></u--textarea>
+			</view>
+			<view class="form-item before-line m-t-20">
+				<view class="label required">选择审核方式</view>
+				<view class="m-l-a m-r-0 flex">
+
+					<u-radio-group v-model="dto.idcardType" placement="row">
+						<u-radio :customStyle="{'margin-bottom': '8px','margin-right': '8px','font-size':'28rpx'}"
+							v-for="(item, index) in shTypeList" :key="index" :label="item.name" :name="item.name">
+						</u-radio>
+					</u-radio-group>
+				</view>
+			</view>
+			<view class="form-item bottom-border-no before-line m-t-20 p-b-20" v-if="dto.idcardType=='身份证'">
+				<view class="label required">身份证正反面</view>
+				<view class="m-l-a m-r-0 flex">
+					<!-- 					<view class="component-button-upload m-r-15" @click="uploadIcon('idCards')">
+
+					</view> -->
+					<view class="component-button-upload" @click="uploadIcon('idCards')">
+
+					</view>
+				</view>
+			</view>
+			<view class="flex p20" style="padding-top: 0rpx;padding-bottom: 10rpx"
+				v-if="dto.idcardType=='身份证'&&dto.idCards&&dto.idCards.length>0">
+				<view class="m-t-12 m-r-10 " v-for="(tBanner,index) of dto.idCards" :key="index">
+					<image class="banner-img" :src="tBanner.url" @click.stop="previewImg(tBanner.url)">
+
+					</image>
+					<view class="t-red text-center" @click.stop="deleteImg('idCards',index)">删除</view>
+				</view>
+			</view>
+			<view class="form-item bottom-border-no before-line m-t-20 p-b-20" v-if="dto.idcardType=='营业执照'">
+				<view class="label required">营业执照</view>
+				<view class="m-l-a m-r-0 flex">
+					<view class="component-button-upload m-r-15" @click="uploadIcon('pictures')">
+
+					</view>
+
+				</view>
+			</view>
+			<view class="flex p20" style="padding-top: 0rpx;padding-bottom: 10rpx"
+				v-if="dto.idcardType=='营业执照'&&dto.pictures&&dto.pictures.length>0">
+				<view class="m-t-12 m-r-10 " v-for="(tBanner,index) of dto.pictures" :key="index">
+					<image class="banner-img" :src="tBanner.url" @click.stop="previewImg(tBanner.url)">
+
+					</image>
+					<view class="t-red text-center" @click.stop="deleteImg('pictures',index)">删除</view>
+				</view>
+			</view>
+
+
+
+			<view class="button-green-1 m-t-20 button-fixed-bottom before-line " @click="submit">
+				提交审核
+			</view>
+
+		</view>
+
+		<view style="min-height: 200rpx;">
+			&nbsp;
+		</view>
+		<u-picker @confirm="select_type" keyName="name" @cancel="show_select_type=false" :show="show_select_type"
+			:columns="columns_types"></u-picker>
+
+		<u-picker @confirm="select_station" keyName="name" @cancel="show_select_station=false"
+			:show="show_select_station" :columns="columns_station"></u-picker>
+
+
+	</view>
+</template>
+
+<script>
+	import environments from '@/environments'
+
+	import {
+		mapState
+	} from 'vuex'
+
+	export default {
+
+		data() {
+			return {
+				id: '',
+				refresh: false,
+				api: '',
+				dto: {
+					id: '',
+					pictures: [],
+					idCards: [],
+					cover: '',
+					idcardType: '身份证',
+					description: '',
+					address: '',
+					stationId: '',
+					stationName: '',
+					id: '',
+					userId: '',
+					name: '',
+					typeId: '',
+					typeName: '',
+					contactName: '',
+					contactTel: '',
+					province: '',
+					city: '',
+					region: '',
+				},
+				requireFields: [{
+						name: '店铺类型',
+						key: 'typeId'
+					},
+					{
+						name: '店铺名称',
+						key: 'name'
+					},
+					{
+						name: '店铺头像',
+						key: 'cover'
+					},
+					{
+						name: '联系人姓名',
+						key: 'contactName'
+					},
+					{
+						name: '联系方式',
+						key: 'contactTel'
+					},
+					{
+						name: '集货站',
+						key: 'stationId'
+					},
+					{
+						name: '地区',
+						key: 'province'
+					},
+					{
+						name: '地址',
+						key: 'address'
+					},
+					{
+						name: '店铺简介',
+						key: 'description'
+					},
+				],
+				show_select_type: false,
+				show_select_station: false,
+				columns_types: [],
+				columns_station: [],
+
+				//审核方式
+				shTypeList: [{
+						name: '身份证',
+						disabled: false
+					},
+					{
+						name: '营业执照',
+						disabled: false
+					}
+				],
+				regionDataPlus: [],
+			}
+		},
+		onLoad(options) {
+			if (options.id) {
+				this.id = options.id
+				this.getDetail()
+			} else {
+				this.getCurrentInfo()
+				//类型和集火站
+				this.$http.request('get', '/api/station/list', {
+					params: {}
+				}).then(res => {
+					var data = res.data
+					this.columns_station = [data || []]
+					// this.columns_station = (data || []).map(item => {
+					// 	return {
+					// 		...item,
+					// 		code: item.id,
+					// 		text: item.name,
+					// 	}
+					// })
+				})
+				//类型和集火站
+				this.$http.request('get', '/api/supplier/type/list', {
+					params: {}
+				}).then(res => {
+					var data = res.data
+					this.columns_types = [data || []]
+					// this.columns_types = (data || []).map(item => {
+					// 	return {
+					// 		...item,
+					// 		code: item.id,
+					// 		text: item.name,
+					// 	}
+					// })
+					// console.log('columns_types', this.columns_types)
+				})
+				this.init_area()
+			}
+
+		},
+
+		methods: {
+			PickArea(item, e) {
+				console.log('PickArea', item, e)
+				if (e.detail.value) {
+					this.dto.province = ''
+					this.dto.city = ''
+					this.dto.region = ''
+					if (e.detail.value.length <= 3) {
+						if (!!e.detail.value[0])
+							this.dto.province = e.detail.value[0].value
+						if (!!e.detail.value[1])
+							this.dto.city = e.detail.value[1].value
+						if (!!e.detail.value[2])
+							this.dto.region = e.detail.value[2].value
+					} else {
+						//说明有重复的
+						var plusnum = e.detail.value.length - 3
+						if (!!e.detail.value[plusnum + 0])
+							this.dto.province = e.detail.value[plusnum + 0].value
+						if (!!e.detail.value[plusnum + 1])
+							this.dto.city = e.detail.value[plusnum + 1].value
+						if (!!e.detail.value[plusnum + 2])
+							this.dto.region = e.detail.value[plusnum + 2].value
+					}
+
+					this.$forceUpdate()
+
+				}
+			},
+			PickData(valueKey, nameKey, e) {
+				// console.log('PickArea', item, e)
+				if (e.detail.value) {
+					if (!!e.detail.value[0])
+						this.dto[valueKey] = e.detail.value[0].value || e.detail.value[0].id
+					if (nameKey) {
+						this.dto[nameKey] = e.detail.value[0].label || e.detail.value[0].name || e.detail.value[0].value
+					}
+					this.$forceUpdate()
+
+				}
+			},
+			async init_area() {
+				const res = await this.$http.request('get', '/api/pub/china/area/json')
+				// console.log('area', JSON.parse(res.data))
+				this.regionDataPlus = res.data && JSON.parse(res.data.replaceAll('code', 'value').replaceAll('name',
+					'text')) || []
+
+				// console.log('area', this.regionDataPlus)
+
+
+			},
+
+			select_type(e) {
+				this.show_select_type = false
+				this.dto.typeName = e.value[0].name
+				this.dto.typeId = e.value[0].id
+			},
+			select_station(e) {
+				this.show_select_station = false
+				this.dto.stationName = e.value[0].name
+				this.dto.stationId = e.value[0].id
+			},
+			async getCurrentInfo() {
+				this.$message.showLoading()
+				const {
+					code,
+					data
+				} = await this.$http.request('get', "/api/current/supplier", {})
+				if (code == 0) {
+					this.dto = {
+						...data,
+
+					}
+					if (!this.dto.pictures) {
+						this.dto.pictures = []
+					} else if (typeof this.dto.pictures == 'string') {
+						this.dto.pictures = JSON.parse(this.dto.pictures)
+					}
+					if (!this.dto.idCards) {
+						this.dto.idCards = []
+					} else if (typeof this.dto.idCards == 'string') {
+						this.dto.idCards = JSON.parse(this.dto.idCards)
+					}
+
+					if (this.dto.idcardType == '1') {
+						this.dto.idcardType = '身份证'
+					} else {
+						this.dto.idcardType = '营业执照'
+					}
+					this.dto.userId = this.currentInfo.id
+
+				}
+
+				this.$message.hideLoading()
+			},
+			async getDetail() {
+				this.$message.showLoading()
+				const {
+					code,
+					data
+				} = await this.$http.request('get', "/api/supplier/addOrUpdate/detail/" + this.id, {})
+				if (code == 0) {
+					this.dto = {
+						...data,
+
+					}
+					if (!this.dto.pictures) {
+						this.dto.pictures = []
+					} else if (typeof this.dto.pictures == 'string') {
+						this.dto.pictures = JSON.parse(this.dto.pictures)
+					}
+					if (!this.dto.idCards) {
+						this.dto.idCards = []
+					} else if (typeof this.dto.idCards == 'string') {
+						this.dto.idCards = JSON.parse(this.dto.idCards)
+					}
+					if (this.dto.idcardType == '1') {
+						this.dto.idcardType = '身份证'
+					} else {
+						this.dto.idcardType = '营业执照'
+					}
+				}
+
+				this.$message.hideLoading()
+
+			},
+			async submit() {
+				for (var field of this.requireFields) {
+					if (!this.dto[field.key]) {
+						this.$message.showToast(`${field.name}信息未填写`)
+						return
+					}
+				}
+				if (this.dto.idcardType == '身份证' && this.dto.idCards.length == 0) {
+					this.$message.showToast(`${this.dto.idcardType}信息未填写`)
+					return
+				}
+				if (this.dto.idcardType !== '身份证' && this.dto.pictures.length == 0) {
+					this.$message.showToast(`${this.dto.idcardType}信息未填写`)
+					return
+				}
+				await this.$message.confirm(`是否确定提交/修改店铺信息`)
+
+
+				var dto = {
+					...this.dto,
+					idcardType: this.dto.idcardType === '身份证' ? "1" : '2'
+				}
+				this.$message.showLoading()
+				const re = await this.$http.request('post', '/api/supplier/addOrUpdate', {
+					data: dto
+				})
+				this.$message.hideLoading()
+				if (re.code == 2000 || re.code == 0) {
+					this.$message.showToast('操作成功')
+					//需要标记加一下
+					this.$store.dispatch('sign_add', 'info');
+					this.$store.dispatch('getCurrentInfo')
+
+					this.backpage()
+				} else {
+					console.log('error re', re)
+					if (re.code === 30000 && Array.isArray(re.msg)) {
+						this.$message.showToast('字段未填写完整')
+
+					}
+				}
+			},
+
+			async deleteImg(key, index) {
+				await this.$message.confirm('是否确认删除此图片')
+				if (Array.isArray(this.dto[key])) {
+					this.dto[key].splice(index, 1)
+
+				} else {
+					this.dto[key] = ''
+				}
+				this.$forceUpdate()
+			},
+			uploadIcon(key) {
+				const that = this
+				uni.chooseImage({
+					count: 1, // 最多可以选择的图片张数,默认9
+					sizeType: ['original', 'compressed'], //original 原图,compressed 压缩图,默认二者都有
+					sourceType: ['camera', 'album'], //album 从相册选图,camera 使用相机,默认二者都有。如需直接开相机或直接选相册,请只使用一个选项
+					success: function({
+						errMsg,
+						tempFiles
+					}) {
+						if (errMsg === 'chooseImage:ok') {
 							// console.log(tempFiles[0])
-							that.$message.showLoading()
-							that.$http.upload(tempFiles[0].path).then(async res => {
-								var pic = res.data && res.data.length > 0 && res.data[
-									0] || {}
-								that.$message.hideLoading()
-								if (Array.isArray(that.dto[key])) {
-									that.dto[key].push(pic || '')
-
-								} else {
-									that.dto[key] = (pic || {}).url || ''
-
-								}
-								that.$forceUpdate()
-							}).catch(res => {
-								that.$message.hideLoading()
-
-							})
-						}
-					}
-				})
-			},
-
-		},
-		computed: {
-			...mapState(['currentInfo'])
-		},
-		components: {}
-	}
-</script>
-
-<style lang="scss" scoped>
-	.banner-img {
-		width: 96rpx;
-		height: 96rpx;
-		border-radius: 4rpx;
-		border: 2rpx dashed #CECECE;
-	}
-
-	.form-item {
-		// padding: 40rpx;
-		border-bottom: 2rpx solid #F3F3F3;
-		display: flex;
-		// height: 100px;
-
-		.label {
-			width: 300rpx;
-			line-height: 60px;
-
-		}
-
-		.flex {
-			line-height: 60px;
-
-			.flex1 {
-				flex: 1;
-				text-align: center;
-				color: var(--selfblue)
-			}
-
-
-		}
-	}
-
-	.form-item.bottom-border-no {
-		border-bottom: none;
-	}
-
-	.container-page {
-		padding: 40rpx;
-		background-color: #FFFFFF;
-		// min-height: calc(100vh - 80rpx);
-		min-height: 100vh;
-	}
-
-	.style {
-		width: fit-content;
-		margin: 0 auto;
-		line-height: 64rpx;
-		border-radius: 8rpx;
-		padding-left: 20rpx;
-		padding-right: 20rpx;
-		// padding-top: 5rpx;
-		// padding-bottom: 5rpx;
-		border: 2rpx solid var(--selfblue);
-		background-color: var(--selfbluebg);
-		min-width: 100rpx;
-	}
-
-
-	.style-1 {
-		border: 1px solid rgb(122, 187, 255);
-		border: 1px solid #409EFF;
-		color: #409EFF;
-		background-color: rgb(240, 247, 255);
-	}
-
-	.style-2 {
-		border: 1px solid rgb(255, 184, 78);
-		border: 1px solid #FE9044;
-		color: #FE9044;
-		background-color: rgb(255, 247, 235);
-	}
-
-	.style-3 {
-		border: 1px solid #19be6b;
-		color: #19be6b;
-		background-color: rgb(231, 244, 238);
-	}
-
-	.style-4 {
-		border: 1px solid #F56c6c;
-		color: #F56c6c;
-		background-color: rgb(254, 243, 243);
-	}
+							if (tempFiles[0].size > 1024 * 1024 * 5) {
+								that.$message.confirm('图片最多支持5M大小,超出大小限制')
+								return
+							}
+							that.$message.showLoading()
+							that.$http.upload(tempFiles[0].path).then(async res => {
+								var pic = res.data && res.data.length > 0 && res.data[
+									0] || {}
+								that.$message.hideLoading()
+								if (Array.isArray(that.dto[key])) {
+									that.dto[key].push(pic || '')
+
+								} else {
+									that.dto[key] = (pic || {}).url || ''
+
+								}
+								that.$forceUpdate()
+							}).catch(res => {
+								that.$message.hideLoading()
+
+							})
+						}
+					}
+				})
+			},
+
+		},
+		computed: {
+			...mapState(['currentInfo'])
+		},
+		components: {}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.banner-img {
+		width: 96rpx;
+		height: 96rpx;
+		border-radius: 4rpx;
+		border: 2rpx dashed #CECECE;
+	}
+
+	.form-item {
+		// padding: 40rpx;
+		border-bottom: 2rpx solid #F3F3F3;
+		display: flex;
+		// height: 100px;
+
+		.label {
+			width: 300rpx;
+			line-height: 60px;
+
+		}
+
+		.flex {
+			line-height: 60px;
+
+			.flex1 {
+				flex: 1;
+				text-align: center;
+				color: var(--selfblue)
+			}
+
+
+		}
+	}
+
+	.form-item.bottom-border-no {
+		border-bottom: none;
+	}
+
+	.container-page {
+		padding: 40rpx;
+		background-color: #FFFFFF;
+		// min-height: calc(100vh - 80rpx);
+		min-height: 100vh;
+	}
+
+	.style {
+		width: fit-content;
+		margin: 0 auto;
+		line-height: 64rpx;
+		border-radius: 8rpx;
+		padding-left: 20rpx;
+		padding-right: 20rpx;
+		// padding-top: 5rpx;
+		// padding-bottom: 5rpx;
+		border: 2rpx solid var(--selfblue);
+		background-color: var(--selfbluebg);
+		min-width: 100rpx;
+	}
+
+
+	.style-1 {
+		border: 1px solid rgb(122, 187, 255);
+		border: 1px solid #409EFF;
+		color: #409EFF;
+		background-color: rgb(240, 247, 255);
+	}
+
+	.style-2 {
+		border: 1px solid rgb(255, 184, 78);
+		border: 1px solid #FE9044;
+		color: #FE9044;
+		background-color: rgb(255, 247, 235);
+	}
+
+	.style-3 {
+		border: 1px solid #19be6b;
+		color: #19be6b;
+		background-color: rgb(231, 244, 238);
+	}
+
+	.style-4 {
+		border: 1px solid #F56c6c;
+		color: #F56c6c;
+		background-color: rgb(254, 243, 243);
+	}
 </style>
\ No newline at end of file
diff --git a/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue b/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue
index e0aa39f..be4efe9 100644
--- a/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue
+++ b/uni_modules/uni-data-picker/components/uni-data-picker/uni-data-picker.vue
@@ -49,6 +49,7 @@
 			<data-picker-view class="picker-view" ref="pickerView" v-model="dataValue" :localdata="localdata"
 				:preload="preload" :collection="collection" :field="field" :orderby="orderby" :where="where"
 				:key="showpicker"
+				:area="area"
 				:step-searh="stepSearh" :self-field="selfField" :parent-field="parentField" :managed-mode="true"
 				:map="map" :ellipsis="ellipsis" @change="onchange" @datachange="ondatachange" @nodeclick="onnodeclick">
 			</data-picker-view>
@@ -132,6 +133,10 @@
 			ellipsis: {
 				type: Boolean,
 				default: true
+			},
+			area:{
+				type: Boolean,
+				default: false
 			}
 		},
 		data() {
diff --git a/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-picker.js b/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-picker.js
index 328a3db..40ded6b 100644
--- a/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-picker.js
+++ b/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-picker.js
@@ -92,6 +92,10 @@
       type: Boolean,
       default: false
     },
+	area:{
+		type: Boolean,
+		default: false
+	},
     map: {
       type: Object,
       default () {
diff --git a/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.vue b/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.vue
index 10d3e29..49454b5 100644
--- a/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.vue
+++ b/uni_modules/uni-data-picker/components/uni-data-pickerview/uni-data-pickerview.vue
@@ -1,324 +1,353 @@
-<template>
-  <view class="uni-data-pickerview">
-    <scroll-view v-if="!isCloudDataList" class="selected-area" scroll-x="true">
-      <view class="selected-list">
-          <view 
-            class="selected-item"
-            v-for="(item,index) in selected"
-            :key="index"
-            :class="{
-              'selected-item-active':index == selectedIndex
-            }"
-            @click="handleSelect(index)"
-          >
-            <text>{{item.text || ''}}</text>
-          </view>
-      </view>
-    </scroll-view>
-    <view class="tab-c">
-      <scroll-view class="list" :scroll-y="true">
-        <view class="item" :class="{'is-disabled': !!item.disable}" v-for="(item, j) in dataList[selectedIndex]" :key="j"
-          @click="handleNodeClick(item, selectedIndex, j)">
-          <text class="item-text">{{item[map.text]}}</text>
-          <view class="check" v-if="selected.length > selectedIndex && item[map.value] == selected[selectedIndex].value"></view>
-        </view>
-      </scroll-view>
-
-      <view class="loading-cover" v-if="loading">
-        <uni-load-more class="load-more" :contentText="loadMore" status="loading"></uni-load-more>
-      </view>
-      <view class="error-message" v-if="errorMessage">
-        <text class="error-text">{{errorMessage}}</text>
-      </view>
-    </view>
-  </view>
-</template>
-
-<script>
-  import dataPicker from "./uni-data-picker.js"
-
-  /**
-   * DataPickerview
-   * @description uni-data-pickerview
-   * @tutorial https://ext.dcloud.net.cn/plugin?id=3796
-   * @property {Array} localdata 本地数据,参考
-   * @property {Boolean} step-searh = [true|false] 是否分布查询
-   * @value true 启用分布查询,仅查询当前选中节点
-   * @value false 关闭分布查询,一次查询出所有数据
-   * @property {String|DBFieldString} self-field 分布查询当前字段名称
-   * @property {String|DBFieldString} parent-field 分布查询父字段名称
-   * @property {String|DBCollectionString} collection 表名
-   * @property {String|DBFieldString} field 查询字段,多个字段用 `,` 分割
-   * @property {String} orderby 排序字段及正序倒叙设置
-   * @property {String|JQLString} where 查询条件
-   */
-  export default {
-    name: 'UniDataPickerView',
-    emits: ['nodeclick', 'change', 'datachange', 'update:modelValue'],
-    mixins: [dataPicker],
-    props: {
-      managedMode: {
-        type: Boolean,
-        default: false
-      },
-      ellipsis: {
-        type: Boolean,
-        default: true
-      }
-    },
-    created() {
-		console.log('created picker')
-      if (!this.managedMode) {
-        this.$nextTick(() => {
-          this.loadData();
-        })
-      }
-    },
-    methods: {
-      onPropsChange() {
-        this._treeData = [];
-        this.selectedIndex = 0;
-        this.$nextTick(() => {
-          this.loadData();
-        })
-      },
-      handleSelect(index) {
-        this.selectedIndex = index;
-      },
-      handleNodeClick(item, i, j) {
-        if (item.disable) {
-          return;
-        }
-
-        const node = this.dataList[i][j];
-        const text = node[this.map.text];
-        const value = node[this.map.value];
-
-        if (i < this.selected.length - 1) {
-          this.selected.splice(i, this.selected.length - i)
-          this.selected.push({
-            text,
-            value
-          })
-        } else if (i === this.selected.length - 1) {
-          this.selected.splice(i, 1, {
-            text,
-            value
-          })
-        }
-
-        if (node.isleaf) {
-          this.onSelectedChange(node, node.isleaf)
-          return
-        }
-
-        const {
-          isleaf,
-          hasNodes
-        } = this._updateBindData()
-
-        // 本地数据
-        if (this.isLocalData) {
-          this.onSelectedChange(node, (!hasNodes || isleaf))
-        } else if (this.isCloudDataList) { // Cloud 数据 (单列)
-          this.onSelectedChange(node, true)
-        } else if (this.isCloudDataTree) { // Cloud 数据 (树形)
-          if (isleaf) {
-            this.onSelectedChange(node, node.isleaf)
-          } else if (!hasNodes) { // 请求一次服务器以确定是否为叶子节点
-            this.loadCloudDataNode((data) => {
-              if (!data.length) {
-                node.isleaf = true
-              } else {
-                this._treeData.push(...data)
-                this._updateBindData(node)
-              }
-              this.onSelectedChange(node, node.isleaf)
-            })
-          }
-        }
-      },
-      updateData(data) {
-        this._treeData = data.treeData
-        this.selected = data.selected
-        if (!this._treeData.length) {
-          this.loadData()
-        } else {
-          //this.selected = data.selected
-          this._updateBindData()
-        }
-      },
-      onDataChange() {
-        this.$emit('datachange');
-      },
-      onSelectedChange(node, isleaf) {
-        if (isleaf) {
-          this._dispatchEvent()
-        }
-
-        if (node) {
-          this.$emit('nodeclick', node)
-        }
-      },
-      _dispatchEvent() {
-        this.$emit('change', this.selected.slice(0))
-      }
-    }
-  }
-</script>
-
-<style lang="scss">
-	$uni-primary: #007aff !default;
-
-	.uni-data-pickerview {
-		flex: 1;
-		/* #ifndef APP-NVUE */
-		display: flex;
-		/* #endif */
-		flex-direction: column;
-		overflow: hidden;
-		height: 100%;
-	}
-
-  .error-text {
-    color: #DD524D;
-  }
-
-  .loading-cover {
-    position: absolute;
-    left: 0;
-    top: 0;
-    right: 0;
-    bottom: 0;
-    background-color: rgba(255, 255, 255, .5);
-    /* #ifndef APP-NVUE */
-    display: flex;
-    /* #endif */
-    flex-direction: column;
-    align-items: center;
-    z-index: 1001;
-  }
-
-  .load-more {
-    /* #ifndef APP-NVUE */
-    margin: auto;
-    /* #endif */
-  }
-
-  .error-message {
-    background-color: #fff;
-    position: absolute;
-    left: 0;
-    top: 0;
-    right: 0;
-    bottom: 0;
-    padding: 15px;
-    opacity: .9;
-    z-index: 102;
-  }
-
-  /* #ifdef APP-NVUE */
-  .selected-area {
-    width: 750rpx;
-  }
-  /* #endif */
-
-  .selected-list {
-    /* #ifndef APP-NVUE */
-    display: flex;
-    flex-wrap: nowrap;
-    /* #endif */
-    flex-direction: row;
-    padding: 0 5px;
-    border-bottom: 1px solid #f8f8f8;
-  }
-
-  .selected-item {
-    margin-left: 10px;
-    margin-right: 10px;
-    padding: 12px 0;
-    text-align: center;
-    /* #ifndef APP-NVUE */
-    white-space: nowrap;
-    /* #endif */
-  }
-
-  .selected-item-text-overflow {
-    width: 168px;
-    /* fix nvue */
-    overflow: hidden;
-    /* #ifndef APP-NVUE */
-    width: 6em;
-    white-space: nowrap;
-    text-overflow: ellipsis;
-    -o-text-overflow: ellipsis;
-    /* #endif */
-  }
-
-	.selected-item-active {
-		border-bottom: 2px solid $uni-primary;
-	}
-
-	.selected-item-text {
-		color: $uni-primary;
-	}
-
-  .tab-c {
-    position: relative;
-    flex: 1;
-    /* #ifndef APP-NVUE */
-    display: flex;
-    /* #endif */
-    flex-direction: row;
-    overflow: hidden;
-  }
-
-  .list {
-    flex: 1;
-  }
-
-  .item {
-    padding: 12px 15px;
-    /* border-bottom: 1px solid #f0f0f0; */
-    /* #ifndef APP-NVUE */
-    display: flex;
-    /* #endif */
-    flex-direction: row;
-    justify-content: space-between;
-  }
-
-  .is-disabled {
-    opacity: .5;
-  }
-
-  .item-text {
-    /* flex: 1; */
-    color: #333333;
-  }
-
-  .item-text-overflow {
-    width: 280px;
-    /* fix nvue */
-    overflow: hidden;
-    /* #ifndef APP-NVUE */
-    width: 20em;
-    white-space: nowrap;
-    text-overflow: ellipsis;
-    -o-text-overflow: ellipsis;
-    /* #endif */
-  }
-
-	.check {
-		margin-right: 5px;
-		border: 2px solid $uni-primary;
-		border-left: 0;
-		border-top: 0;
-		height: 12px;
-		width: 6px;
-		transform-origin: center;
-		/* #ifndef APP-NVUE */
-		transition: all 0.3s;
-		/* #endif */
-		transform: rotate(45deg);
-	}
-</style>
+<template>
+	<view class="uni-data-pickerview">
+		<scroll-view v-if="!isCloudDataList" class="selected-area" scroll-x="true">
+			<view class="selected-list">
+				<view class="selected-item" v-for="(item,index) in selected" :key="index" :class="{
+              'selected-item-active':index == selectedIndex
+            }" @click="handleSelect(index)">
+					<text>{{item.text || ''}}</text>
+				</view>
+			</view>
+		</scroll-view>
+		<view class="tab-c">
+			<!-- 	<view>
+				selected:{{JSON.stringify(selected)}}
+			</view> -->
+			<!-- v-if="!area||!selected|| selected.length==0||area&&selected&&selected.length>0&&(item[map.text]!==selected[selected.length-1].text)" -->
+			<scroll-view class="list" :scroll-y="true">
+				<view v-for="(item, j) in dynamicList" :key="j">
+					<view class="item" :class="{'is-disabled': !!item.disable}" v-show="!item.hide"
+						@click="handleNodeClick(item, selectedIndex, j)">
+						<text class="item-text">{{item[map.text]}}</text>
+						<view class="check"
+							v-if="selected.length > selectedIndex && item[map.value] == selected[selectedIndex].value">
+						</view>
+					</view>
+				</view>
+
+			</scroll-view>
+
+			<view class="loading-cover" v-if="loading">
+				<uni-load-more class="load-more" :contentText="loadMore" status="loading"></uni-load-more>
+			</view>
+			<view class="error-message" v-if="errorMessage">
+				<text class="error-text">{{errorMessage}}</text>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import dataPicker from "./uni-data-picker.js"
+
+	/**
+	 * DataPickerview
+	 * @description uni-data-pickerview
+	 * @tutorial https://ext.dcloud.net.cn/plugin?id=3796
+	 * @property {Array} localdata 本地数据,参考
+	 * @property {Boolean} step-searh = [true|false] 是否分布查询
+	 * @value true 启用分布查询,仅查询当前选中节点
+	 * @value false 关闭分布查询,一次查询出所有数据
+	 * @property {String|DBFieldString} self-field 分布查询当前字段名称
+	 * @property {String|DBFieldString} parent-field 分布查询父字段名称
+	 * @property {String|DBCollectionString} collection 表名
+	 * @property {String|DBFieldString} field 查询字段,多个字段用 `,` 分割
+	 * @property {String} orderby 排序字段及正序倒叙设置
+	 * @property {String|JQLString} where 查询条件
+	 */
+	export default {
+		name: 'UniDataPickerView',
+		emits: ['nodeclick', 'change', 'datachange', 'update:modelValue'],
+		mixins: [dataPicker],
+		props: {
+			managedMode: {
+				type: Boolean,
+				default: false
+			},
+			ellipsis: {
+				type: Boolean,
+				default: true
+			}
+		},
+		computed: {
+			dynamicList() {
+				var lastnodes = []
+				if (this.selected && this.selected.length > 0) {
+					for (var name of this.selected) {
+						lastnodes.push(name.text)
+					}
+					// lastnode = this.selected[this.selectedIndex].text
+				}
+				var arr = []
+				console.log('lastnodes', lastnodes)
+				if (this.dataList && this.dataList[this.selectedIndex]) {
+					for (var item of this.dataList[this.selectedIndex]) {
+						if (lastnodes.indexOf(item[this.map.text]) >= 0) {
+							item.hide = true
+							arr.push(item)
+						} else {
+							item.hide = false
+							arr.push(item)
+						}
+					}
+				}
+				return arr
+			}
+		},
+		created() {
+			console.log('created picker')
+			if (!this.managedMode) {
+				this.$nextTick(() => {
+					this.loadData();
+				})
+			}
+		},
+		methods: {
+			onPropsChange() {
+				this._treeData = [];
+				this.selectedIndex = 0;
+				this.$nextTick(() => {
+					this.loadData();
+				})
+			},
+			handleSelect(index) {
+				this.selectedIndex = index;
+			},
+			handleNodeClick(item, i, j) {
+				if (item.disable) {
+					return;
+				}
+
+				const node = this.dataList[i][j];
+				const text = node[this.map.text];
+				const value = node[this.map.value];
+
+				if (i < this.selected.length - 1) {
+					this.selected.splice(i, this.selected.length - i)
+					this.selected.push({
+						text,
+						value
+					})
+				} else if (i === this.selected.length - 1) {
+					this.selected.splice(i, 1, {
+						text,
+						value
+					})
+				}
+
+				if (node.isleaf) {
+					this.onSelectedChange(node, node.isleaf)
+					return
+				}
+
+				const {
+					isleaf,
+					hasNodes
+				} = this._updateBindData()
+
+				// 本地数据
+				if (this.isLocalData) {
+					this.onSelectedChange(node, (!hasNodes || isleaf))
+				} else if (this.isCloudDataList) { // Cloud 数据 (单列)
+					this.onSelectedChange(node, true)
+				} else if (this.isCloudDataTree) { // Cloud 数据 (树形)
+					if (isleaf) {
+						this.onSelectedChange(node, node.isleaf)
+					} else if (!hasNodes) { // 请求一次服务器以确定是否为叶子节点
+						this.loadCloudDataNode((data) => {
+							if (!data.length) {
+								node.isleaf = true
+							} else {
+								this._treeData.push(...data)
+								this._updateBindData(node)
+							}
+							this.onSelectedChange(node, node.isleaf)
+						})
+					}
+				}
+			},
+			updateData(data) {
+				this._treeData = data.treeData
+				this.selected = data.selected
+				if (!this._treeData.length) {
+					this.loadData()
+				} else {
+					//this.selected = data.selected
+					this._updateBindData()
+				}
+			},
+			onDataChange() {
+				this.$emit('datachange');
+			},
+			onSelectedChange(node, isleaf) {
+				if (isleaf) {
+					this._dispatchEvent()
+				}
+
+				if (node) {
+					this.$emit('nodeclick', node)
+				}
+			},
+			_dispatchEvent() {
+				this.$emit('change', this.selected.slice(0))
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	$uni-primary: #007aff !default;
+
+	.uni-data-pickerview {
+		flex: 1;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: column;
+		overflow: hidden;
+		height: 100%;
+	}
+
+	.error-text {
+		color: #DD524D;
+	}
+
+	.loading-cover {
+		position: absolute;
+		left: 0;
+		top: 0;
+		right: 0;
+		bottom: 0;
+		background-color: rgba(255, 255, 255, .5);
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: column;
+		align-items: center;
+		z-index: 1001;
+	}
+
+	.load-more {
+		/* #ifndef APP-NVUE */
+		margin: auto;
+		/* #endif */
+	}
+
+	.error-message {
+		background-color: #fff;
+		position: absolute;
+		left: 0;
+		top: 0;
+		right: 0;
+		bottom: 0;
+		padding: 15px;
+		opacity: .9;
+		z-index: 102;
+	}
+
+	/* #ifdef APP-NVUE */
+	.selected-area {
+		width: 750rpx;
+	}
+
+	/* #endif */
+
+	.selected-list {
+		/* #ifndef APP-NVUE */
+		display: flex;
+		flex-wrap: nowrap;
+		/* #endif */
+		flex-direction: row;
+		padding: 0 5px;
+		border-bottom: 1px solid #f8f8f8;
+	}
+
+	.selected-item {
+		margin-left: 10px;
+		margin-right: 10px;
+		padding: 12px 0;
+		text-align: center;
+		/* #ifndef APP-NVUE */
+		white-space: nowrap;
+		/* #endif */
+	}
+
+	.selected-item-text-overflow {
+		width: 168px;
+		/* fix nvue */
+		overflow: hidden;
+		/* #ifndef APP-NVUE */
+		width: 6em;
+		white-space: nowrap;
+		text-overflow: ellipsis;
+		-o-text-overflow: ellipsis;
+		/* #endif */
+	}
+
+	.selected-item-active {
+		border-bottom: 2px solid $uni-primary;
+	}
+
+	.selected-item-text {
+		color: $uni-primary;
+	}
+
+	.tab-c {
+		position: relative;
+		flex: 1;
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		overflow: hidden;
+	}
+
+	.list {
+		flex: 1;
+	}
+
+	.item {
+		padding: 12px 15px;
+		/* border-bottom: 1px solid #f0f0f0; */
+		/* #ifndef APP-NVUE */
+		display: flex;
+		/* #endif */
+		flex-direction: row;
+		justify-content: space-between;
+	}
+
+	.is-disabled {
+		opacity: .5;
+	}
+
+	.item-text {
+		/* flex: 1; */
+		color: #333333;
+	}
+
+	.item-text-overflow {
+		width: 280px;
+		/* fix nvue */
+		overflow: hidden;
+		/* #ifndef APP-NVUE */
+		width: 20em;
+		white-space: nowrap;
+		text-overflow: ellipsis;
+		-o-text-overflow: ellipsis;
+		/* #endif */
+	}
+
+	.check {
+		margin-right: 5px;
+		border: 2px solid $uni-primary;
+		border-left: 0;
+		border-top: 0;
+		height: 12px;
+		width: 6px;
+		transform-origin: center;
+		/* #ifndef APP-NVUE */
+		transition: all 0.3s;
+		/* #endif */
+		transform: rotate(45deg);
+	}
+</style>
\ No newline at end of file

--
Gitblit v1.9.3