| | |
| | | <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;"> |
| | | |
| | | </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;">
|
| | |
|
| | | </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> |