Просмотр исходного кода

修改城市下拉组件/修改申请码页面/修改部分页面显示问题

空白格 3 лет назад
Родитель
Сommit
94dde8441f

+ 133 - 18
h5_web/pages/applyEducationCode/applyEducationCode.vue

@@ -29,12 +29,29 @@
 			<u-form-item label="政治面貌:" prop="politOutlook" :required="true">
 				<u-input v-model="form.politOutlook" placeholder="请选择您的政治面貌" type="select" @click="politOutlookShow = true"/>
 			</u-form-item>
-			<u-form-item label="户籍类别:" prop="houseType" :required="true">
-				<u-input v-model="form.houseType" placeholder="请选择您的户籍类型" type="select" @click="houseTypeShow = true"/>
+			<u-form-item label="户籍类别:" prop="houseTypeId" :required="true">
+				<u-radio-group v-model="form.houseTypeId" @change="houseTypeChange">
+					<u-radio v-for="(item, index) in houseTypeList" :key="index" :name="item.value">
+						{{ item.label }}
+					</u-radio>
+				</u-radio-group>
 			</u-form-item>
 			<u-form-item label="户籍地:" prop="veteHousehRegi" :required="true">
 				<u-input v-model="form.veteHousehRegi" placeholder="请选择您的户籍地" type="select" @click="regionShow = true"/>
 			</u-form-item>
+			<u-form-item label="户籍区域:" prop="" :required="true">
+				<u-input v-model="form.veteHousehArea" placeholder="请选择您的户籍区域" type="select" @click="areaShow = true"/>
+			</u-form-item>
+			<u-form-item label="就业状况:" prop="jobStatus" :required="true">
+				<u-radio-group v-model="form.jobStatus" @change="employmentStatusChange">
+					<u-radio v-for="(item, index) in employmentStatusList" :key="index" :name="item.value">
+						{{ item.label }}
+					</u-radio>
+				</u-radio-group>
+			</u-form-item>
+			<u-form-item label="薪资范围:" prop="salaryRange" :required="true">
+				<u-input v-model="form.salaryRange" placeholder="请选择您的薪资范围" type="select" @click="salaryRangeShow = true"/>
+			</u-form-item>
 			<u-form-item label="现家庭详细地址:" label-position="top" label-width="200" label-align="left" prop="veteResiAddress" :required="true">
 				<u-input v-model="form.veteResiAddress" placeholder="请输入您的现家庭详细地址" />
 			</u-form-item>
@@ -81,16 +98,23 @@
 		<!-- 政治面貌下拉 -->
 		<u-select v-model="politOutlookShow" :list="politOutlookList" @confirm="politOutlookChange" :default-value="politOutlookIndex"/>
 		
-		<!-- 户籍地 -->
-		<u-picker mode="region" v-model="regionShow" :default-region='["贵州省", "贵阳市", "南明区"]' @confirm="regionConfirm"/>
+		<!-- 户籍地下拉 -->
+		<city-select-province v-model="regionShow" :default-region="['贵州省', '贵阳市']" @city-change="regionConfirm"/>
+		
+		<!-- 户籍区域下拉 -->
+		<u-city-select v-model="areaShow" :default-region="[]" @city-change="areaConfirm"/>
 		
-		<!-- 户籍类型下拉 -->
-		<u-select v-model="houseTypeShow" :list="houseTypeList" @confirm="houseTypeChange" :default-value="houseTypeIndex"/>
+		<!-- 工资范围下拉 -->
+		<u-select v-model="salaryRangeShow" :list="salaryRangeList" @confirm="salaryRangeChange" :default-value="salaryRangeIndex"/>
 	</view>
 </template>
 
 <script>
+	import citySelectProvince  from '../../uview-ui/components/u-city-select-province/u-city-select-province.vue'
 	export default {
+		components: {
+			citySelectProvince
+		},
 		data() {
 			return {
 				// 上传地址
@@ -110,14 +134,16 @@
 					politOutlook: '',
 					politOutlookId:'',
 					veteHousehRegi: '',
+					veteHousehArea: '',
 					veteResiAddress: '',
 					veteDateBirth:'',
 					veteStatus: '1',
 					veteAttribute: '',
-					houseType: '',
-					houseTypeId: '',
-					veteDateBirth: '',
-					files: []
+					files: [],
+					jobStatus: '',
+					jobStatusId: '',
+					salaryRange: '',
+					salaryRangeId: ''
 				},
 				// 表单验证
 				rules: {
@@ -148,36 +174,56 @@
 						{
 							required: true,
 							message: '请选择户籍',
+							trigger: ['change', 'blur'],
 						}
 					],
 					veteResiAddress:[
 						{
 							required: true,
 							message: '请填写详细地址',
+							trigger: ['change', 'blur'],
 						}
 					],
 					nation:[
 						{
 							required: true,
 							message: '请填写民族',
+							trigger: ['change', 'blur'],
 						}
 					],
 					degrEduc:[
 						{
 							required: true,
 							message: '请选择文化程度',
+							trigger: ['change', 'blur'],
 						}
 					],
 					politOutlook:[
 						{
 							required: true,
 							message: '请选择政治面貌',
+							trigger: ['change', 'blur']
 						}
 					],
-					houseType:[
+					houseTypeId:[
 						{
 							required: true,
 							message: '请选择户籍类别',
+							trigger: ['change', 'blur']
+						}
+					],
+					salaryRange: [
+						{
+							required: true,
+							message: '请选择薪资范围',
+							trigger: ['change', 'blur']
+						}
+					],
+					jobStatus: [
+						{
+							required: true,
+							message: '请选择就业状态',
+							trigger: ['change', 'blur']
 						}
 					]
 				},
@@ -194,14 +240,24 @@
 				// 户籍类型
 				houseTypeShow: false,
 				houseTypeList: [],
-				houseTypeIndex: []
+				houseTypeIndex: [],
+				// 户籍区域
+				areaShow: false,
+				// 薪资范围
+				salaryRangeShow: false,
+				salaryRangeList: [],
+				salaryRangeIndex: [],
+				// 就业状态
+				employmentStatusList: []
 			}
 		},
 		onLoad() {
-			this.getVeteEducData();
 			this.getVeteDegrEduc();
 			this.getVetePolitOutlook();
 			this.getVeteHouseType();
+			this.getSalaryRange();
+			this.getEmploymentStatus();
+			this.getVeteEducData();
 		},
 		onReady() {
 			this.$refs.uForm.setRules(this.rules);
@@ -292,7 +348,13 @@
 			 * 户籍地
 			 */
 			regionConfirm(e){
-				this.form.veteHousehRegi = `${e.province.label}-${e.city.label}-${e.area.label}`
+				this.form.veteHousehRegi = `${e.province.label}-${e.city.label}`
+			},
+			/**
+			 * 户籍区域
+			 */
+			areaConfirm(e) {
+				this.form.veteHousehArea = `${e.province.label}-${e.city.label}-${e.area.label}`
 			},
 			/**
 			 * 获取户籍类别
@@ -310,11 +372,63 @@
 				});
 			},
 			/**
-			 * 户籍类别下拉变化
+			 * 户籍类别单选触发
+			 */
+			houseTypeChange(val){
+				this.houseTypeList.forEach(item => {
+					if (item.value === val) {
+						this.form.houseType = item.label
+					}
+				})
+			},
+			/**
+			 * 就业状态单选触发
+			 * @param { String } val
+			 */
+			employmentStatusChange(val) {
+				// this.employmentStatusList.forEach(item => {
+				// 	if (item.value === val) {
+				// 		this.form.jobStatus = 
+				// 	}
+				// })
+			},
+			/**
+			 * 获取薪资范围
+			 */
+			getSalaryRange(){
+				this.$u.api.getDictdataUrl({ key:'salary_range' }).then(res => {
+					if(res.code === 200){						
+						this.salaryRangeList = res.data.map(item => {
+							return {
+								...item,
+								value: item.text
+							}
+						});
+					}
+				});
+			},
+			/**
+			 * 薪资范围
+			 * @param {Object} e
 			 */
-			houseTypeChange(e){
-				this.form.houseType = e[0].label;
-				this.form.houseTypeId = e[0].value;
+			salaryRangeChange(e) {
+				this.form.salaryRange = e[0].label
+				this.form.salaryRangeId = e[0].value
+			},
+			/**
+			 * 就业状态
+			 */
+			getEmploymentStatus(){
+				this.$u.api.getDictdataUrl({ key:'member_job_status' }).then(res => {
+					if(res.code === 200){						
+						this.employmentStatusList = res.data.map(item => {
+							return {
+								...item,
+								value: item.text
+							}
+						});
+					}
+				});
 			},
 			/**
 			 * @param { String } val
@@ -392,6 +506,7 @@
 				});
 			},
 			submit() {
+				console.log(this.form)
 				this.$refs.uForm.validate(valid => {
 					if (valid) {
 						if (this.form.files.length < 1){

+ 1 - 0
h5_web/pages/businessDetails/businessDetails.scss

@@ -49,6 +49,7 @@
 				width: 139rpx;
 				height: 139rpx;
 				border-radius: 50%;
+				background-color: rgba($color: #fff, $alpha: 0.8);
 			}
 		}
 		&-name {

+ 2 - 2
h5_web/pages/businessDetails/businessDetails.vue

@@ -40,8 +40,8 @@
 					<view class="address">
 						<view>公司地址:{{ companyInfo.companyAddress }}</view>
 						<view>
-							<image src="../../static/img/dingwei.png"/>
-							查看位置
+							<!-- <image src="../../static/img/dingwei.png"/>
+							查看位置 -->
 						</view>
 					</view>
 				</view>

+ 1 - 1
h5_web/pages/cooperativeEnterprise/cooperativeEnterprise.vue

@@ -56,7 +56,7 @@
 						</view>
 					</view>
 					<view class="enterprose-list-content-item-right">
-						<u-icon name="arrow-right"/>
+						<u-icon name="arrow-right" color="#d2d3d5"/>
 					</view>
 				</view>
 			</view>

+ 7 - 3
h5_web/pages/evaluationIntention/evaluationIntention.vue

@@ -35,7 +35,7 @@
 				<u-form-item label="工作城市" prop="cityName" required>
 					<u-input v-model="intentionForm.workCity" type="select" @click="workCityClick" placeholder="请选择工作城市"/>
 					<!-- <u-select v-model="cityShow" :list="cityList" @confirm="cityConfirm"></u-select> -->
-					<u-city-select v-if="cityShow" v-model="cityShow" :default-region="defaultRegion" @city-change="cityConfirm"/>
+					<city-select-unlimited v-if="cityShow" v-model="cityShow" :default-region="defaultRegion" @city-change="cityConfirm"/>
 				</u-form-item>
 				<!-- <u-form-item label="期望职位" prop="position" required>
 					<u-input v-model="intentionForm.position" type="select" @click="positionShow = true" placeholder="请选择期望职位"/>
@@ -87,7 +87,11 @@
 
 <script>
 	import { industry } from './industry.js';
+	import citySelectUnlimited from '../../uview-ui/components/u-city-select-unlimited/u-city-select-unlimited.vue'
 	export default {
+		components: {
+			citySelectUnlimited
+		},
 		data() {
 			return {
 				list: [
@@ -226,8 +230,8 @@
 						this.evaluateForm.content = data.selfAssessment
 						// this.intentionForm.position = res.data.expectedPost
 						// this.intentionForm.industry = res.data.expectedIndustry
-						this.intentionForm.expectedLowestSalary = String(data.expectedLowestSalary)
-						this.intentionForm.expectedHighestSalary = String(data.expectedHighestSalary)
+						this.intentionForm.expectedLowestSalary = data.expectedLowestSalary ? String(data.expectedLowestSalary) : ''
+						this.intentionForm.expectedHighestSalary = data.expectedHighestSalary ? String(data.expectedHighestSalary) : ''
 						if (data.provinceName) {
 							this.intentionForm.workCity = data.provinceName + '-' + data.cityName + '-' + data.areaName
 						}

+ 1 - 1
h5_web/pages/mine/mine.scss

@@ -14,7 +14,7 @@
 	}
 	
 	&-info {
-		margin-top: -430rpx;
+		margin-top: -500rpx;
 		
 		&-header {
 			display: flex;

+ 2 - 2
h5_web/pages/myResume/myResume.vue

@@ -28,7 +28,7 @@
 		<view class="resume-base-info">
 			<view class="resume-base-info-left">
 				<view class="title">基本信息</view>
-				<view class="resume-base-info-item">退役军人 · {{ getAge(memberinfo.menBirth) }}岁 · {{ memberinfo.politOutlook }} · {{ memberinfo.degrEduc }}</view>
+				<view class="resume-base-info-item">退役军人 · {{ memberinfo.menBirth ? getAge(memberinfo.menBirth) : '-' }}岁 · {{ memberinfo.politOutlook || '-' }} · {{ memberinfo.degrEduc || '-' }}</view>
 				<view class="resume-base-info-phone">
 					电话:<text class="icon-phone-icon"></text> {{ memberinfo.mobile }}
 				</view>
@@ -55,7 +55,7 @@
 		<view class="resume-self-evaluation">
 			<view class="resume-self-evaluation-left">
 				<view class="title">自我评价</view>
-				<view class="supple" v-if="memberinfo.selfAssessment === ''">暂未补充自我评价...</view>
+				<view class="supple" v-if="!memberinfo.selfAssessment">暂未补充自我评价...</view>
 				
 				<view class="resume-self-evaluation-info" v-else>
 					<view class="rsei-box">{{ memberinfo.selfAssessment }}</view>

+ 1 - 0
h5_web/pages/schoolDetails/schoolDetails.scss

@@ -26,6 +26,7 @@
 				width: 139rpx;
 				height: 139rpx;
 				border-radius: 50%;
+				background-color: rgba($color: #fff, $alpha: 0.8);
 			}
 		}
 		&-name {

+ 2 - 2
h5_web/pages/schoolDetails/schoolDetails.vue

@@ -44,12 +44,12 @@
 					<view>联系人:{{ schoolInfo.linkUser || '-' }}</view>
 					<view>联系电话:{{ schoolInfo.linkPhone || '-' }}</view>
 					<view>地址:{{ schoolInfo.schoolAddress || '-' }}</view>
-					<view class="address">
+					<!-- <view class="address">
 						<view>
 							<image src="../../static/img/dingwei.png"/>
 							查看位置
 						</view>
-					</view>
+					</view> -->
 				</view>
 			</view>
 			

+ 1 - 1
h5_web/pages/schools/schools.vue

@@ -26,7 +26,7 @@
 						</view>
 					</view>
 					<view class="school-list-item-right">
-						<u-icon name="arrow-right" />
+						<u-icon name="arrow-right" color="#d2d3d5"/>
 					</view>
 				</view>
 			</view>

+ 238 - 0
h5_web/uview-ui/components/u-city-select-province/u-city-select-province.vue

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

+ 238 - 0
h5_web/uview-ui/components/u-city-select-unlimited/u-city-select-unlimited.vue

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

Разница между файлами не показана из-за своего большого размера
+ 10780 - 0
h5_web/uview-ui/libs/util/areaUnlimited.js


Разница между файлами не показана из-за своего большого размера
+ 1245 - 0
h5_web/uview-ui/libs/util/cityUnlimited.js


+ 107 - 0
h5_web/uview-ui/libs/util/provinceUnlimited.js

@@ -0,0 +1,107 @@
+var provinceData = [{
+	"label": "不限",
+	"value": "0"
+},{
+	"label": "北京市",
+	"value": "110000"
+}, {
+	"label": "天津市",
+	"value": "120000"
+}, {
+	"label": "河北省",
+	"value": "130000"
+}, {
+	"label": "山西省",
+	"value": "140000"
+}, {
+	"label": "内蒙古自治区",
+	"value": "150000"
+}, {
+	"label": "辽宁省",
+	"value": "210000"
+}, {
+	"label": "吉林省",
+	"value": "220000"
+}, {
+	"label": "黑龙江省",
+	"value": "230000"
+}, {
+	"label": "上海市",
+	"value": "310000"
+}, {
+	"label": "江苏省",
+	"value": "320000"
+}, {
+	"label": "浙江省",
+	"value": "330000"
+}, {
+	"label": "安徽省",
+	"value": "340000"
+}, {
+	"label": "福建省",
+	"value": "350000"
+}, {
+	"label": "江西省",
+	"value": "360000"
+}, {
+	"label": "山东省",
+	"value": "370000"
+}, {
+	"label": "河南省",
+	"value": "410000"
+}, {
+	"label": "湖北省",
+	"value": "420000"
+}, {
+	"label": "湖南省",
+	"value": "430000"
+}, {
+	"label": "广东省",
+	"value": "440000"
+}, {
+	"label": "广西壮族自治区",
+	"value": "450000"
+}, {
+	"label": "海南省",
+	"value": "460000"
+}, {
+	"label": "重庆市",
+	"value": "500000"
+}, {
+	"label": "四川省",
+	"value": "510000"
+}, {
+	"label": "贵州省",
+	"value": "520000"
+}, {
+	"label": "云南省",
+	"value": "530000"
+}, {
+	"label": "西藏自治区",
+	"value": "540000"
+}, {
+	"label": "陕西省",
+	"value": "610000"
+}, {
+	"label": "甘肃省",
+	"value": "620000"
+}, {
+	"label": "青海省",
+	"value": "630000"
+}, {
+	"label": "宁夏回族自治区",
+	"value": "640000"
+}, {
+	"label": "新疆维吾尔自治区",
+	"value": "650000"
+}, {
+	"label": "台湾",
+	"value": "660000"
+}, {
+	"label": "香港",
+	"value": "670000"
+}, {
+	"label": "澳门",
+	"value": "680000"
+}];
+export default provinceData;