dataSetting.vue 6.2 KB
<template>
	<view class="data_setting">
		<u--form :model="form" ref="uForm" labelWidth="140">
			<!-- 注册信息 -->
			<view class="card">
				<!-- 企业名称 -->
				<view class="item">
					<u-form-item label="企业名称" prop="businessName">
						<u-input v-model="form.businessName" border="none" placeholder="请输入企业名称" inputAlign="right"/>
					</u-form-item>
				</view>
				<!-- 球馆名称 -->
				<view class="item">
					<u-form-item label="球馆名称" prop="gymName">
						<u-input v-model="form.gymName" border="none" placeholder="请输入球馆名称" inputAlign="right"/>
					</u-form-item>
				</view>
				<!-- 统一社会信用代码 -->
				<u-form-item label="统一社会信用代码" prop="businessLicenseNo" labelPosition="top">
					<view class="m-top10">
						<u-input v-model="form.businessLicenseNo" border="none" placeholder="请输入统一社会信用代码" />
					</view>
				</u-form-item>
			</view>
			<!-- 联系人信息 -->
			<view class="card">
				<!-- 联系人姓名 -->
				<view class="item">
					<u-form-item label="企业联系人姓名" prop="contacts">
						<u-input v-model="form.contacts" border="none" placeholder="请输入姓名" inputAlign="right" />
					</u-form-item>
				</view>
				<!-- 联系人电话 -->
				<view class="item">
					<u-form-item label="企业联系人电话" prop="contactsPhone">
						<u-input v-model="form.contactsPhone" border="none" placeholder="请输入企业联系人电话" inputAlign="right"/>
					</u-form-item>
				</view>
				<!-- 球馆地址 -->
				<u-form-item label="门店地址" prop="address" labelPosition="top">
					<view class="m-top10">
						<u-input v-model="form.address" border="none" suffixIcon="map" placeholder="请输入球馆地址" @focus="getMapLocation" />
					</view>
				</u-form-item>
			</view>
			<!-- 营业执照 -->
			<view class="card">
				<view class="item">
					<u-form-item>
						<text>营业执照</text>	
					</u-form-item>
				</view>
				<view class="item">
					<u-form-item>
						<view class="dis-flex">
							<u-upload
								:fileList="mainCoverList"
								@afterRead="afterRead"
								@delete="deletePic"
								name="mainCover"
								multiple
								:maxCount="1"
							/>
							<view class="dis-flex flex-dir-column flex-y-center flex-x-center f-28 l-h-38">
								<text class="col-3d">请上传营业执照副本彩色扫描件</text>
								<text style="color: #FF0006;">文件大小:1M以内,建议比例4:3</text>
							</view>
						</view>
					</u-form-item>
				</view>
			</view>
			<!-- 球馆形象图 -->
			<view class="card">
				<view class="item">
					<u-form-item >
						<text>门店形象图</text>	
					</u-form-item>
				</view>
				<u-form-item>
					<u-upload
						:fileList="detailList"
						@afterRead="afterRead"
						@delete="deletePic"
						name="detail"
						multiple
						:maxCount="10"
					/>
				</u-form-item>
			</view>
		</u--form>
		<view class="footer">
			<u-button shape="circle" text="保存" color="#333333" @click="submit"></u-button>
		</view>
	</view>
</template>

<script>
	import upload from '@/mixins/upload.js'
	import { mapGetters } from 'vuex'
	import { updateBusinessInfo, getBusinessInfo } from '@/api/user.js'
	import { pro_http } from '@/utils/baseUrl.js'
	export default {
		mixins: [upload],
		data() {
			return {
				form: {
					businessName: '', // 企业名称
					gymName: '', // 球馆名称
					businessLicenseNo: '', // 统一社会信用代码
					contacts: '', // 联系人
					contactsPhone: '', // 联系人电话
					province: '', // 省
					city: '', // 市
					county: '', // 县
					address: '', // 地址
					gymPicture: '' // 球馆图片
				},
				rules: {
					businessName: [
						{ required: true, message: '请输入企业名称', trigger: ['blur', 'change'] }
					],
					gymName: [
						{ required: true, message: '请输入球馆名称', trigger: ['blur', 'change'] }
					],
					businessLicenseNo: [
						{ required: true, message: '请输入信用代码', trigger: ['blur', 'change'] }
					],
					contacts: [
						{ required: true, message: '请输入联系人', trigger: ['blur', 'change'] }
					],
					contactsPhone: [
						{ required: true, message: '请输入联系人电话', trigger: ['blur', 'change'] },
						{
							validator: (rule, value, callback) => {
								return uni.$u.test.mobile(value)
							},
							message: '手机号码不正确',
							trigger: ['change'],
						}
					],
					address: [
						{ required: true, message: '请输入地址', trigger: ['blur', 'change'] }
					],
				}
			}
		},
		onReady() {
		//如果需要兼容微信小程序,并且校验规则中含有方法等,只能通过setRules方法设置规则。
			this.$refs.uForm.setRules(this.rules)
		},
		computed: { ...mapGetters(['userInfo']) },
		mounted() {
			this.form = this.userInfo
			// 获取场地图片并回显到页面
			let imgList = this.form.gymPicture.split(',')
			let img = imgList.map(item => {
				return { url: pro_http + item, fileName: item }
			})
			// 回显到图片列表
			this.detailList.push(...img)
			// 回显营业执照
			this.mainCoverList.push({ url: pro_http + this.form.businessLicensePicture, fileName: this.form.businessLicensePicture })
		},
		methods: {
			submit() {
				// 营业执照设置
				if(this.mainCoverList.length > 0) {
					this.form.businessLicensePicture = this.mainCoverList.map(item => item.fileName).join()
				}
				// 场地照片设置
				if(this.detailList.length > 0) {
					this.form.gymPicture = this.detailList.map(item => item.fileName).join()
				}
				this.$refs.uForm.validate().then(async valid => {
					await updateBusinessInfo(this.form)
					this.$store.dispatch('UserInfo')
					uni.$u.toast('更新成功')
					uni.navigateBack()
				}).catch(errors => {
					uni.$u.toast('校验失败')
				})
			}
		}
	}
</script>

<style lang="scss" scoped>
.data_setting{
	padding-top: 20rpx;
	background-color: #F6F7FB;
	padding-bottom: 150rpx;
	.card{
		padding: 30rpx;
		background-color: #fff;
		margin-bottom: 20rpx;
		.item{
			border-bottom: 2rpx solid #eee;
		}
	}
	.footer{
		position: fixed;
		bottom: 0;
		left: 0;
		width: 100%;
		padding: 24rpx 30rpx;
		z-index: 99;
		box-sizing: border-box;
		background-color: #fff;
	}
}
</style>