From 7e247648201b208cfb5a5901803f784b7dbda948 Mon Sep 17 00:00:00 2001 From: xuxueyang <xuxy@fengyuntec.com> Date: 星期三, 31 七月 2024 01:54:17 +0800 Subject: [PATCH] 1 --- sub_pages/customer/customer-info/customer-info.vue | 612 ++++++++++++++++++++++++++++--------------------------- 1 files changed, 309 insertions(+), 303 deletions(-) diff --git a/sub_pages/customer/customer-info/customer-info.vue b/sub_pages/customer/customer-info/customer-info.vue index 527fb66..8d30ff2 100644 --- a/sub_pages/customer/customer-info/customer-info.vue +++ b/sub_pages/customer/customer-info/customer-info.vue @@ -1,372 +1,378 @@ <template> - <view class="container-page" style="padding: 0rpx;"> - <view v-if="source==='step'" class="" style="padding-top:40rpx"> - <u-steps current="0"> - <u-steps-item title="信息填写" class="u-steps-item" style="font-size: 28rpx;"> - </u-steps-item> - <u-steps-item title="提交申请" class="u-steps-item"></u-steps-item> - </u-steps> - </view> - <view class="p20"> - <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 class="container-page" style="padding: 0rpx;"> + <view v-if="source==='step'" class="" style="padding-top:40rpx"> + <u-steps current="0"> + <u-steps-item title="信息填写" class="u-steps-item" style="font-size: 28rpx;"> + </u-steps-item> + <u-steps-item title="提交申请" class="u-steps-item"></u-steps-item> + </u-steps> + </view> + <view class="p20"> + <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> + </view> - <view class="form-item before-line"> - <view class="label ">地区</view> + <view class="form-item before-line"> + <view class="label ">地区</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']) || '' }}{{ + <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> + </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 ">地址</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 class="form-item before-line"> + <view class="label ">地址</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 ">店铺简介</view> - <view class="m-l-a m-r-0 flex1"> - <view class="m-t-12 m-b-12"> - <u-textarea v-model="dto.description" placeholder="请输入店铺简介"> + </view> + </view> + <view class="form-item before-line"> + <view class="label ">店铺简介</view> + <view class="m-l-a m-r-0 flex1"> + <view class="m-t-12 m-b-12"> + <u-textarea v-model="dto.description" placeholder="请输入店铺简介"> - </u-textarea> - </view> - <!-- <input v-model="dto.description" placeholder="请输入地址"--> - <!-- style="margin-top: 16px;text-align: right;"></input>--> + </u-textarea> + </view> + <!-- <input v-model="dto.description" placeholder="请输入地址"--> + <!-- style="margin-top: 16px;text-align: right;"></input>--> - </view> - </view> + </view> + </view> - <view class="form-item before-line m-t-20" @click="uploadIcon"> - <view class="label ">上传店铺封面</view> - <view class="m-l-a m-r-0 flex m-b-12"> - <view class="component-button-upload"> + <view class="form-item before-line m-t-20" @click="uploadIcon"> + <view class="label ">上传店铺封面</view> + <view class="m-l-a m-r-0 flex m-b-12"> + <view class="component-button-upload"> - </view> + </view> - </view> - </view> + </view> + </view> - <view class="flex p20" style="padding-top: 0rpx;padding-bottom: 10rpx" - v-if="dto.cover"> - <view class="m-t-12 m-r-10"> - <image class="banner-img" :src="dto.cover" @click.stop="previewImg(dto.cover)"> + <view class="flex p20" style="padding-top: 0rpx;padding-bottom: 10rpx" v-if="dto.cover"> + <view class="m-t-12 m-r-10"> + <image class="banner-img" :src="dto.cover" @click.stop="previewImg(dto.cover)"> - </image> - <view class="t-red text-center" @click.stop="dto.cover=''">删除</view> - </view> - </view> + </image> + <view class="t-red text-center" @click.stop="dto.cover=''">删除</view> + </view> + </view> - <view class="button-green-1 m-t-20 button-fixed-bottom before-line " @click="submit"> - {{ source === 'step' ? '下一步' : '更新' }} + <view class="button-green-1 m-t-20 button-fixed-bottom before-line " @click="submit"> + {{ source === 'step' ? '下一步' : '更新' }} - </view> + </view> - </view> + </view> - <view style="min-height: 200rpx;"> - - </view> + <view style="min-height: 200rpx;"> + + </view> - </view> + </view> </template> <script> -import environments from '@/environments' + import environments from '@/environments' -import { - mapState -} from 'vuex' + import { + mapState + } from 'vuex' -export default { + export default { - data() { - return { - id: '', - source: '', + data() { + return { + id: '', + source: '', - refresh: false, - api: '', - dto: { - cover: '', - address: '', - id: '', - userId: '', - name: '', - description: '', - province: '', - city: '', - region: '', - }, - requireFields: [ + refresh: false, + api: '', + dto: { + cover: '', + address: '', + id: '', + userId: '', + name: '', + description: '', + province: '', + city: '', + region: '', + }, + requireFields: [ - { - name: '店铺名称', - key: 'name' - } - ], - regionDataPlus: [], - } - }, - onLoad(options) { - //判断是不是来自登录步骤,是等话需要从缓存里面拿信息 - this.source = options.source || '' + { + name: '店铺名称', + key: 'name' + } + ], + regionDataPlus: [], + } + }, + onLoad(options) { + //判断是不是来自登录步骤,是等话需要从缓存里面拿信息 + this.source = options.source || '' - if (this.source === 'step') { - var tjson = this.$storage.getItem('cache_customer_info') - if (tjson) { - this.dto = { - ...this.dto, - ...JSON.parse(tjson) - } - } - } else { - this.getCurrentInfo() - } + if (this.source === 'step') { + var tjson = this.$storage.getItem('cache_customer_info') + if (tjson) { + this.dto = { + ...this.dto, + ...JSON.parse(tjson) + } + } + } else { + this.getCurrentInfo() + } - this.init_area() -// www.hmyxianhua.com/wx-jump + this.init_area() + // www.hmyxianhua.com/wx-jump - }, + }, - 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 - } + 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 == 2) { + if (!!e.detail.value[0]) + this.dto.province = e.detail.value[0].value + if (!!e.detail.value[0]) + this.dto.city = e.detail.value[0].value + if (!!e.detail.value[1]) + this.dto.region = e.detail.value[1].value + } else 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() + 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')) || [] - }, + } + }, + 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')) || [] + }, - async getCurrentInfo() { - this.$message.showLoading() - const { - code, - data - } = await this.$http.request('get', "/api/current/customer", {}) - if (code === 0) { - this.dto = { - ...data, + async getCurrentInfo() { + this.$message.showLoading() + const { + code, + data + } = await this.$http.request('get', "/api/current/customer", {}) + if (code === 0) { + this.dto = { + ...data, - } - this.dto.userId = this.currentInfo.id + } + this.dto.userId = this.currentInfo.id - } + } - this.$message.hideLoading() - }, - async submit() { - for (var field of this.requireFields) { - if (!this.dto[field.key]) { - this.$message.showToast(`${field.name}信息未填写`) - return - } - } - await this.$message.confirm(`是否确定提交更新信息`) - if (this.source === 'step') { - //先保存下来,进入下一步,然后注册成功后再保存 - this.$storage.setItem("cache_customer_info", JSON.stringify({ - ...this.dto - })) + this.$message.hideLoading() + }, + async submit() { + for (var field of this.requireFields) { + if (!this.dto[field.key]) { + this.$message.showToast(`${field.name}信息未填写`) + return + } + } + await this.$message.confirm(`是否确定提交更新信息`) + if (this.source === 'step') { + //先保存下来,进入下一步,然后注册成功后再保存 + this.$storage.setItem("cache_customer_info", JSON.stringify({ + ...this.dto + })) - uni.navigateTo({ - url: '/pages/login/supplier-reg?source=step' - }) + uni.navigateTo({ + url: '/pages/login/supplier-reg?source=step' + }) - } else { - var dto = { - ...this.dto, - } - this.$message.showLoading() - const re = await this.$http.request('post', '/api/customer/addOrUpdate', { - data: dto - }) - this.$message.hideLoading() - if (re.code == 2000 || re.code == 0) { - this.$message.showToast('操作成功') - this.$store.dispatch('getCurrentInfo') - this.backpage() - } else { - console.log('error re', re) - if (re.code === 30000 && Array.isArray(re.msg)) { - this.$message.showToast('字段未填写完整') - } - } - } + } else { + var dto = { + ...this.dto, + } + this.$message.showLoading() + const re = await this.$http.request('post', '/api/customer/addOrUpdate', { + data: dto + }) + this.$message.hideLoading() + if (re.code == 2000 || re.code == 0) { + this.$message.showToast('操作成功') + this.$store.dispatch('getCurrentInfo') + this.backpage() + } else { + console.log('error re', re) + if (re.code === 30000 && Array.isArray(re.msg)) { + this.$message.showToast('字段未填写完整') + } + } + } - }, + }, - uploadIcon() { - 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') { - 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() - that.dto.cover = (pic || {}).url || '' - console.log('pic', that.dto) + uploadIcon() { + 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') { + 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() + that.dto.cover = (pic || {}).url || '' + console.log('pic', that.dto) - that.$forceUpdate() - }).catch(res => { - that.$message.hideLoading() + that.$forceUpdate() + }).catch(res => { + that.$message.hideLoading() - }) - } - } - }) - }, + }) + } + } + }) + }, - }, - computed: { - ...mapState(['currentInfo']) - }, - components: {} -} + }, + computed: { + ...mapState(['currentInfo']) + }, + components: {} + } </script> <style lang="scss" scoped> -.banner-img { - width: 96rpx; - height: 96rpx; - border-radius: 4rpx; - border: 2rpx dashed #CECECE; -} + .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; + .form-item { + // padding: 40rpx; + border-bottom: 2rpx solid #F3F3F3; + display: flex; + // height: 100px; - .label { - width: 300rpx; - line-height: 60px; + .label { + width: 300rpx; + line-height: 60px; - } + } - .flex { - line-height: 60px; + .flex { + line-height: 60px; - .flex1 { - flex: 1; - text-align: center; - color: var(--selfblue) - } + .flex1 { + flex: 1; + text-align: center; + color: var(--selfblue) + } - } -} + } + } -.form-item.bottom-border-no { - border-bottom: none; -} + .form-item.bottom-border-no { + border-bottom: none; + } -.container-page { - padding: 40rpx; - background-color: #FFFFFF; - // min-height: calc(100vh - 80rpx); - min-height: 100vh; -} + .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 { + 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-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-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-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-4 { + border: 1px solid #F56c6c; + color: #F56c6c; + background-color: rgb(254, 243, 243); + } </style> \ No newline at end of file -- Gitblit v1.9.3