From f8867b8df117d1ac0f1311970994e15059c3da03 Mon Sep 17 00:00:00 2001
From: xuxueyang <xuxy@fengyuntec.com>
Date: 星期四, 05 九月 2024 15:57:36 +0800
Subject: [PATCH] add 兼容扫码问题
---
sub_pages/customer/customer-info/customer-info.vue | 647 ++++++++++++++++++++++++++++++----------------------------
1 files changed, 336 insertions(+), 311 deletions(-)
diff --git a/sub_pages/customer/customer-info/customer-info.vue b/sub_pages/customer/customer-info/customer-info.vue
index e89a270..3512e0b 100644
--- a/sub_pages/customer/customer-info/customer-info.vue
+++ b/sub_pages/customer/customer-info/customer-info.vue
@@ -1,373 +1,398 @@
<template>
- <view class="container-page" style="padding: 0rpx;">
- <view v-if="source==='step'" class="m-t-20">
- <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) {
+ console.log('customer-info options', 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)
+ }
+ }
+ if (options.partnerUserId) {
+ this.dto.partnerUserId = options.partnerUserId || ''
+ }
+ if (options.partnerUserName) {
+ this.dto.partnerUserName = options.partnerUserName || ''
+ }
+ if (this.dto.partnerUserId && this.dto.partnerUserName) {
+ uni.setNavigationBarTitle({
+ title: '注册并绑定合伙人: ' + this.dto.partnerUserName
+ })
+ }
+ } else {
+ this.getCurrentInfo()
+ }
- this.init_area()
+ 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 == 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()
+
+ }
+ },
+ async init_area() {
+ var a = this.$storage.getItem('cache_area')
+ if (a) {
+ this.regionDataPlus = JSON.parse(a) || []
+ } else {
+ 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')) || []
+ this.$storage.setItem('cache_area', JSON.stringify(this.regionDataPlus))
+ }
+
+ },
- },
+ async getCurrentInfo() {
+ this.$message.showLoading()
+ const {
+ code,
+ data
+ } = await this.$http.request('get', "/api/current/customer", {})
+ if (code === 0) {
+ this.dto = {
+ ...data,
- 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.dto.userId = this.currentInfo.id
- 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')) || []
- },
+ 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'
+ })
+
+ } 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('字段未填写完整')
+ }
+ }
+ }
+
+ },
- async getCurrentInfo() {
- this.$message.showLoading()
- const {
- code,
- data
- } = await this.$http.request('get', "/api/current/customer", {})
- if (code === 0) {
- this.dto = {
- ...data,
+ 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)
- }
- this.dto.userId = this.currentInfo.id
+ that.$forceUpdate()
+ }).catch(res => {
+ that.$message.hideLoading()
- }
+ })
+ }
+ }
+ })
+ },
- 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'
- })
-
- } 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)
-
- 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