Init project

This commit is contained in:
lifizer
2023-09-20 21:49:33 +08:00
parent 85a5989c96
commit c9ceac9f37
710 changed files with 125705 additions and 0 deletions
+154
View File
@@ -0,0 +1,154 @@
<template>
<view class="pkg-join-index">
<image class="img-banner" :src="images.topImage" mode="scaleToFill"/>
<view class="box flex flex-col ai-center">
<image class="img-title" :src="webUrl+'/20230413103123003753.png'" mode="scaleToFill"/>
<!-- <view class="content flex ai-center">-->
<!-- <image class="img-fire" :src="webUrl+'/20230413103130660107.png'" mode="scaleToFill"/>-->
<!-- <view class="txt flex ai-center">目前已有-->
<!-- <text>{{ count }}</text>-->
<!-- 人参加活动-->
<!-- </view>-->
<!-- </view>-->
</view>
<image class="img-item" :src="images.goodSupplierImage"
@click="goto('goods_supplier')" v-show="partnerType==='province_partner'||partnerType===''"/>
<image class="img-item" :src="images.wenwanSupplierImage"
@click="goto('wenwan_supplier')" v-show="partnerType==='pioneer'||partnerType===''"/>
<image class="img-item" :src="images.hotelImage"
@click="goto('shop')" v-show="partnerType==='pioneer'||partnerType===''"/>
</view>
</template>
<script>
import {getCount, getImages, getShopData} from "@/api/join";
export default {
name: "pkgJoinIndex",
data() {
return {
webUrl: this.$VUE_APP_RESOURCES_URL,
partnerId: "",
partnerType: "",
count: 0,
hasHotel: null,
hasSupplier: null,
images: null
}
},
onLoad(options) {
this.partnerId = options.partnerId || "";
getCount().then(({data}) => this.count = data.count);
getImages().then(({data}) => this.images = data);
getShopData(this.partnerId).then(({data}) => {
this.partnerType = data.partnerType;
this.hasHotel = data.hasHotel;
this.hasSupplier = data.hasSupplier;
})
},
methods: {
goto(target) {
switch (target) {
case "goods_supplier":
if (this.hasSupplier === 1) {
uni.showToast({
title: "您已成为供应商/员工,无需重复申请",
icon: "none"
})
} else {
this.$yrouter.push(`/pkg_join/views/supplier?type=goods_supplier&partnerId=${this.partnerId}`)
}
break;
case "wenwan_supplier":
if (this.hasSupplier === 1) {
uni.showToast({
title: "您已成为供应商/员工,无需重复申请",
icon: "none"
})
} else {
this.$yrouter.push(`/pkg_join/views/supplier?type=wenwan_supplier&partnerId=${this.partnerId}`)
}
break;
case "shop":
if (this.hasHotel === 1) {
uni.showToast({
title: "您已开通店铺,无需重复申请",
icon: "none"
})
} else {
this.$yrouter.push('/pkg_join/views/shop?partnerId=' + this.partnerId)
}
break;
}
}
}
}
</script>
<style scoped lang="less">
.pkg-join-index {
image {
vertical-align: middle;
}
.img-banner {
width: 750rpx;
height: 378rpx;
}
.img-title {
width: 556rpx;
height: 104rpx;
margin: 20rpx 0;
}
.img-fire {
width: 56rpx;
height: 56rpx;
margin-right: 4rpx;
}
.img-item {
width: 682rpx;
height: 320rpx;
margin: 0 34rpx 46rpx;
}
.box {
width: 682rpx;
//height: 240rpx;
margin: 24rpx auto 30rpx;
border-radius: 40rpx;
background: rgba(255, 0, 85, 0.02);
}
.content {
width: 516rpx;
height: 64rpx;
box-sizing: border-box;
padding: 0 28rpx;
border-radius: 36rpx;
background: rgba(255, 86, 74, 0.08);
}
.txt {
color: #FF564A;
font-size: 32rpx;
font-weight: bold;
text {
display: inline-flex;
align-items: center;
height: 40rpx;
margin: 0 8rpx;
padding: 0 18rpx;
border-radius: 8rpx;
background: #FF0055;
color: #FFFFFF;
font-size: 28rpx;
}
}
}
</style>
+497
View File
@@ -0,0 +1,497 @@
<template>
<u--form :model="form" errorType="toast" labelWidth="216rpx" ref="shopForm">
<view class="box-state" v-if="stateTitle && isDraft!==1">
<u-alert :center="stateType==='primary'" :title="stateTitle" :type="stateType"/>
</view>
<u-cell-group title="店铺基本信息" :border="false" :customStyle="{'fontSize':'40rpx'}">
<u-form-item prop="name">
<u-cell title="店铺名称" :border="false">
<template #icon>
<text class="required">*</text>
</template>
<template #value>
<u-input v-model="form.name" border="none" placeholder="请填写店铺名称"/>
</template>
</u-cell>
</u-form-item>
<u-form-item prop="cover">
<u-cell title="店铺封面图" :border="false">
<template #icon>
<text class="required">*</text>
</template>
</u-cell>
<u-cell :border="false">
<template #title>
<view class="box-upload" @click="chooseLogoImg('shop')">
<view class="btn-upload" v-if="form.cover.length===0 || form.cover==null">上传图片</view>
<image class="img-preview" :src="form.cover" v-else/>
</view>
</template>
</u-cell>
</u-form-item>
<u-form-item prop="pics">
<u-cell title="店铺图片" :border="false">
<template #label>
<u-upload
:fileList="pics"
@afterRead="afterRead"
@delete="deletePic"
name="pics"
multiple
:maxCount="9"
></u-upload>
</template>
</u-cell>
</u-form-item>
<u-form-item prop="typeText">
<u-cell title="店铺类型" :border="false" isLink @click="showType=true">
<template #icon>
<text class="required">*</text>
</template>
<template #value>
<u--text :text="form.typeText" v-if="form.typeText"></u--text>
<u--text text="请选择类型" color="#c0c4cc" v-else></u--text>
</template>
</u-cell>
</u-form-item>
<u-picker :show="showType" :defaultIndex="indexType" :columns="columnsType" keyName="name"
@confirm="confirmType" @cancel="cancelType"/>
<u-form-item prop="contact">
<u-cell title="联系人姓名" :border="false">
<template #icon>
<text class="required">*</text>
</template>
<template #value>
<u-input v-model="form.contact" border="none" placeholder="请填写联系方式"/>
</template>
</u-cell>
</u-form-item>
<u-form-item prop="phone">
<u-cell title="联系方式" :border="false">
<template #icon>
<text class="required">*</text>
</template>
<template #value>
<u-input v-model="form.phone" border="none" placeholder="请填写联系方式"/>
</template>
</u-cell>
</u-form-item>
<u-form-item prop="area">
<u-cell title="省市区" :border="false" isLink>
<template #icon>
<text class="required">*</text>
</template>
<template #value>
<view class="u-text__value" :class="{'area-item':form.area.length===0}">
<CitySelect ref="cityselect" :defaultValue="form.area" @callback="result" :items="district"/>
</view>
</template>
</u-cell>
</u-form-item>
<u-form-item prop="address">
<u-cell title="详细地址" :border="false">
<template #icon>
<text class="required">*</text>
</template>
<template #value>
<u-input v-model="form.address" border="none" placeholder="请填写详细地址"/>
</template>
</u-cell>
</u-form-item>
<u-form-item prop="position">
<u-cell title="地理定位选择" :border="false" isLink @click="chooLocation">
<template #icon>
<text class="required">*</text>
</template>
<template #value>
<u--text :text="form.position" v-if="form.position"></u--text>
<u--text text="请选择" color="#c0c4cc" v-else></u--text>
</template>
</u-cell>
</u-form-item>
<u-form-item prop="content">
<u-cell title="一句话介绍" :border="false">
<template #icon>
<text class="required">*</text>
</template>
</u-cell>
<view class="content-section">
<u-cell :border="false">
<template #title>
<view class="line">
<u-input v-model="form.content" border="none" placeholder="请填写一句话..."/>
</view>
</template>
</u-cell>
</view>
</u-form-item>
<u-form-item prop="desc">
<view class="content-section">
<u-cell title="店铺简介" :border="false">
<template #label>
<view class="line">
<u--textarea v-model="form.desc" border="none" placeholder="请填写店铺简介..."></u--textarea>
</view>
</template>
</u-cell>
</view>
</u-form-item>
</u-cell-group>
<view class="btn-submit btn-remove" v-if="reviewStatus===0 && isDraft!==1" @click="showRemove=true">撤销申请</view>
<view class="btn-submit" @click="onSubmit" v-else>提交申请</view>
<u-modal :show="showRemove" content="您确定撤销申请吗?" showCancelButton @cancel="showRemove=false"
@confirm="onRemove"></u-modal>
<u-popup :show="show" mode="center" round="10" closeable @close="show=false">
<view class="popup-body">
<view class="tc bold">入驻申请须知</view>
<view class="content" v-html="notice"></view>
<view class="agree-box">
<checkbox-group @change="changeAgree">
<label>
<checkbox value="yes" style="transform:scale(0.8)"/>
</label>
<text>我已仔细阅读并同意</text>
</checkbox-group>
</view>
<u-button type="error" text="确定" :disabled="!isAgree" @click="save"></u-button>
</view>
</u-popup>
</u--form>
</template>
<script>
import CitySelect from "@/components/CitySelect";
import {getShopData, getShopInfo, removeApply, saveShop} from "@/api/join";
import {getCity} from "@/api/user";
import {chooseImage, moreImage, uploadImage} from "@/utils";
export default {
name: "pkgJoinShop",
components: {
CitySelect
},
data() {
return {
partnerId: null,
pics: [],
form: {
name: "",
cover: "",
type: 0,
typeText: "",
phone: "",
area: "",
address: "",
position: "",
content: ""
},
rules: {
'name': {
type: 'string',
required: true,
message: '请填写店铺名称',
trigger: ['blur', 'change']
},
'cover': {
type: 'string',
required: true,
message: '请上传店铺封面图',
trigger: ['blur', 'change']
},
'typeText': {
type: 'string',
required: true,
message: '请选择店铺类型',
trigger: ['blur', 'change']
},
'contact': {
type: 'string',
required: true,
message: '请填写联系人姓名',
trigger: ['blur', 'change']
},
'phone': {
type: 'string',
required: true,
message: '请填写联系方式',
trigger: ['blur', 'change']
},
'area': {
type: 'string',
required: true,
message: '请选择所在省市',
trigger: ['blur', 'change']
},
'address': {
type: 'string',
required: true,
message: '请填写详细地址',
trigger: ['blur', 'change']
},
'position': {
type: 'string',
required: true,
message: '请选择定位信息',
trigger: ['blur', 'change']
},
'content': {
type: 'string',
required: true,
message: '请填写介绍内容',
trigger: ['blur', 'change']
}
},
showType: false,
columnsType: [],
indexType: [0],
district: [],
address: {},
isAgree: false,
show: false,
notice: "",
showRemove: false,
isDraft: null,
reviewStatus: null,
stateTitle: "",
stateType: "primary",
isPass: false
}
},
onLoad(options) {
this.partnerId = options.partnerId;
},
onReady() {
this.$refs.shopForm.setRules(this.rules);
this.init();
},
methods: {
init() {
getCity().then(({data}) => {
this.district = data;
});
getShopData().then(({data}) => {
this.columnsType.push(data.hotelTypeList);
this.notice = data.merchantApplyNotice;
this.initInfo();
});
},
initInfo() {
getShopInfo().then(({data}) => {
if (data.partnerId != null) {
this.partnerId = data.partnerId;
}
this.isDraft = data.isDraft;
this.reviewStatus = data.reviewStatus;
switch (data.reviewStatus) {
case 0:
this.stateTitle = "审核中";
this.stateType = "primary";
break;
case 1:
this.isPass = true;
break;
case 2:
this.stateTitle = "审核驳回:" + data.reviewMsg;
this.stateType = "error";
break;
}
if (data.hotelInfo) {
this.pics = [];
this.form = data.hotelInfo;
let temp = this.form.pics.split(",");
if (temp.length > 0) {
temp.map(item => {
if (item.length > 0) {
this.pics.push({url: item})
}
})
}
this.indexType = this.columnsType[0].findIndex(item => item.id === this.form.type);
if (this.indexType != -1) {
this.form.typeText = this.columnsType[0][this.indexType].name;
}
this.form.position = this.$forceToDecimal(this.form.longitude, 6) + ',' + this.$forceToDecimal(this.form.latitude, 6);
this.form.area = `${this.form.provinceName} ${this.form.cityName} ${this.form.areaName}`;
}
});
},
chooseLogoImg() {
chooseImage(img => {
this.form.cover = img;
});
},
chooseShopImg() {
let that = this;
let count = 0;
moreImage(9, (img, total) => {
if (img) that.pics.push(img);
count++;
if (count === total) {
that.form.pics = that.pics.join(",");
}
})
},
// 删除图片
deletePic(event) {
this[`${event.name}`].splice(event.index, 1)
},
afterRead(event) {
let that = this;
if (event.file.length > 0) {
event.file.map(item => {
uploadImage(item.url, img => {
that.pics.push({url: img})
})
})
}
},
// 回调参数为包含column indexs、value、values
confirmType(e) {
this.indexType = e.indexs;
this.form.type = e.value[0].id;
this.form.typeText = e.value[0].name;
this.showType = false;
},
cancelType() {
this.showType = false;
},
// 省市区
result(values) {
this.address = {
province: values.province.name || "",
city: values.city.name || "",
district: values.district.name || "",
provinceId: values.province.id,
cityId: values.city.id,
areaId: values.district.id
};
this.form.area = `${this.address.province} ${this.address.city} ${this.address.district}`;
this.form.provinceId = values.province.id;
this.form.cityId = values.city.id;
this.form.areaId = values.district.id;
},
// 定位
chooLocation() {
let that = this;
uni.chooseLocation({
success: function (res) {
that.form.address = res.address;
that.form.longitude = that.$forceToDecimal(res.longitude, 6);
that.form.latitude = that.$forceToDecimal(res.latitude, 6);
that.form.position = that.$forceToDecimal(res.longitude, 6) + ',' + that.$forceToDecimal(res.latitude, 6);
}
});
},
onSubmit() {
if (this.reviewStatus === 0) return;
this.$refs.shopForm.validate().then(res => {
// 校验通过
this.show = true;
}).catch(errors => {
// 校验失败
})
},
onRemove() {
removeApply().then(res => {
uni.showToast({
title: res.msg,
icon: "none",
duration: 3000,
success:()=> {
this.showRemove = false;
setTimeout(()=>{
uni.navigateBack();
},3000)
}
})
});
},
changeAgree(event) {
this.isAgree = event.detail.value.length > 0
},
save() {
this.form.pics = "";
this.pics.map(item => {
this.form.pics += (item.url + ",");
})
this.form.pics = this.form.pics.substring(0, this.form.pics.length - 1);
saveShop(this.form, this.partnerId).then(res => {
if (res.status === 200) {
uni.showToast({
title: "您的入驻申请已提交成功,请耐心等待审核",
icon: "none",
success: () => {
this.initInfo();
this.show = false;
}
})
}
}).catch(err => {
uni.showToast({
title: err.msg,
icon: "none",
success: () => {
this.show = false;
}
})
})
}
}
}
</script>
<style lang="less">
@import "@/assets/css/pkg_join.less";
/deep/ .cityselect-nav {
.item {
font-size: 30rpx !important;
}
}
/deep/ .cityselect-item {
.cityselect-item-box {
font-size: 30rpx !important;
}
}
</style>
+780
View File
@@ -0,0 +1,780 @@
<template>
<view>
<u--form :model="formSupplier" errorType="toast" labelWidth="216rpx" ref="supplierForm">
<view class="box-state" v-if="stateTitle && isDraft!==1">
<u-alert :center="stateType==='primary'" :title="stateTitle" :type="stateType"/>
</view>
<u-cell-group :title="infoTitle+'供应商基本信息'" :border="false" :customStyle="{'fontSize':'40rpx'}">
<u-form-item prop="name">
<u-cell title="供应商名称" :border="false">
<template #icon>
<text class="required">*</text>
</template>
<template #value>
<u-input v-model="formSupplier.name" border="none" placeholder="请填写供应商名称"/>
</template>
</u-cell>
</u-form-item>
<u-form-item prop="avatar">
<u-cell title="头像" :border="false">
<template #label>
<view class="box-upload" @click="chooseLogoImg('supplier')">
<view class="btn-upload" v-if="formSupplier.avatar.length===0">上传图片</view>
<image class="img-preview" :src="formSupplier.avatar" v-else/>
</view>
</template>
</u-cell>
</u-form-item>
<u-form-item prop="contact">
<u-cell title="联系人姓名" :border="false">
<template #icon>
<text class="required">*</text>
</template>
<template #value>
<u-input v-model="formSupplier.contact" border="none" placeholder="请填写联系人姓名"/>
</template>
</u-cell>
</u-form-item>
<u-form-item prop="phone">
<u-cell title="联系方式" :border="false">
<template #icon>
<text class="required">*</text>
</template>
<template #value>
<u-input v-model="formSupplier.phone" border="none" placeholder="请填写联系方式"/>
</template>
</u-cell>
</u-form-item>
<u-form-item prop="qualification">
<view class="licence-section">
<u-cell title="营业执照" :border="false">
<template #icon>
<text class="required">*</text>
</template>
</u-cell>
</view>
<view class="licence-image">
<u-cell :border="false">
<template #title>
<view class="box-upload" @click="chooseLogoImg('licence')">
<view class="btn-upload" v-if="formSupplier.qualification.length===0">上传图片</view>
<image class="img-preview" :src="formSupplier.qualification" v-else/>
</view>
</template>
</u-cell>
</view>
</u-form-item>
<!-- <u-form-item prop="typeText">-->
<!-- <u-cell title="类型" :border="false" isLink @click="showSupplierType=true">-->
<!-- <template #icon>-->
<!-- <text class="required">*</text>-->
<!-- </template>-->
<!-- <template #value>-->
<!-- <u&#45;&#45;text :text="formSupplier.typeText" v-if="formSupplier.typeText"></u&#45;&#45;text>-->
<!-- <u&#45;&#45;text text="请选择类型" color="#c0c4cc" v-else></u&#45;&#45;text>-->
<!-- </template>-->
<!-- </u-cell>-->
<!-- </u-form-item>-->
<!-- <u-picker :show="showSupplierType" :defaultIndex="indexSupplierType" :columns="columnsSupplierType"-->
<!-- keyName="value"-->
<!-- @confirm="confirmSupplierType" @cancel="cancelType"/>-->
<u-form-item prop="area">
<u-cell title="省市区" :border="false" isLink>
<template #icon>
<text class="required">*</text>
</template>
<template #value>
<view class="u-text__value" :class="{'area-item':formSupplier.area.length===0}">
<CitySelect ref="cityselect" :defaultValue="formSupplier.area" @callback="resultSupplier"
:items="district"/>
</view>
</template>
</u-cell>
</u-form-item>
<u-form-item prop="address">
<u-cell title="详细地址" :border="false">
<template #icon>
<text class="required">*</text>
</template>
<template #value>
<u-input v-model="formSupplier.address" border="none" placeholder="请填写详细地址"/>
</template>
</u-cell>
</u-form-item>
<u-form-item prop="position">
<u-cell title="地理定位选择" :border="false" isLink @click="chooLocation('supplier')">
<template #icon>
<text class="required">*</text>
</template>
<template #value>
<u--text :text="formSupplier.position" v-if="formSupplier.position"></u--text>
<u--text text="请选择" color="#c0c4cc" v-else></u--text>
</template>
</u-cell>
</u-form-item>
</u-cell-group>
</u--form>
<u--form :model="form" errorType="toast" labelWidth="216rpx" ref="shopForm">
<u-cell-group title="店铺基本信息" :border="false" :customStyle="{'fontSize':'40rpx'}">
<u-form-item prop="name">
<u-cell title="店铺名称" :border="false">
<template #icon>
<text class="required">*</text>
</template>
<template #value>
<u-input v-model="form.name" border="none" placeholder="请填写店铺名称"/>
</template>
</u-cell>
</u-form-item>
<u-form-item prop="cover">
<u-cell title="店铺封面图" :border="false">
<template #icon>
<text class="required">*</text>
</template>
</u-cell>
<u-cell :border="false">
<template #title>
<view class="box-upload" @click="chooseLogoImg('shop')">
<view class="btn-upload" v-if="form.cover.length===0 || form.cover==null">上传图片</view>
<image class="img-preview" :src="form.cover" v-else/>
</view>
</template>
</u-cell>
</u-form-item>
<u-form-item prop="pics">
<u-cell title="店铺图片" :border="false">
<template #label>
<u-upload
:fileList="pics"
@afterRead="afterRead"
@delete="deletePic"
name="pics"
multiple
:maxCount="9"
></u-upload>
</template>
</u-cell>
</u-form-item>
<u-form-item prop="typeText">
<u-cell title="店铺类型" :border="false" isLink @click="showType=true">
<template #icon>
<text class="required">*</text>
</template>
<template #value>
<u--text :text="form.typeText" v-if="form.typeText"></u--text>
<u--text text="请选择类型" color="#c0c4cc" v-else></u--text>
</template>
</u-cell>
</u-form-item>
<u-picker :show="showType" :defaultIndex="indexType" :columns="columnsType" keyName="name"
@confirm="confirmType" @cancel="cancelType"/>
<u-form-item prop="contact">
<u-cell title="联系人姓名" :border="false">
<template #icon>
<text class="required">*</text>
</template>
<template #value>
<u-input v-model="form.contact" border="none" placeholder="请填写联系方式"/>
</template>
</u-cell>
</u-form-item>
<u-form-item prop="phone">
<u-cell title="联系方式" :border="false">
<template #icon>
<text class="required">*</text>
</template>
<template #value>
<u-input v-model="form.phone" border="none" placeholder="请填写联系方式"/>
</template>
</u-cell>
</u-form-item>
<u-form-item prop="area">
<u-cell title="省市区" :border="false" isLink>
<template #icon>
<text class="required">*</text>
</template>
<template #value>
<view class="u-text__value" :class="{'area-item':form.area.length===0}">
<CitySelect ref="cityselect" :defaultValue="form.area" @callback="result" :items="district"/>
</view>
</template>
</u-cell>
</u-form-item>
<u-form-item prop="address">
<u-cell title="详细地址" :border="false">
<template #icon>
<text class="required">*</text>
</template>
<template #value>
<u-input v-model="form.address" border="none" placeholder="请填写详细地址"/>
</template>
</u-cell>
</u-form-item>
<u-form-item prop="position">
<u-cell title="地理定位选择" :border="false" isLink @click="chooLocation">
<template #icon>
<text class="required">*</text>
</template>
<template #value>
<u--text :text="form.position" v-if="form.position"></u--text>
<u--text text="请选择" color="#c0c4cc" v-else></u--text>
</template>
</u-cell>
</u-form-item>
<u-form-item prop="content">
<u-cell title="一句话介绍" :border="false">
<template #icon>
<text class="required">*</text>
</template>
</u-cell>
<view class="content-section">
<u-cell :border="false">
<template #title>
<view class="line">
<u-input v-model="form.content" border="none" placeholder="请填写一句话..."/>
</view>
</template>
</u-cell>
</view>
</u-form-item>
<u-form-item prop="desc">
<view class="content-section">
<u-cell title="店铺简介" :border="false">
<template #label>
<view class="line">
<u--textarea v-model="form.desc" border="none" placeholder="请填写店铺简介..."></u--textarea>
</view>
</template>
</u-cell>
</view>
</u-form-item>
</u-cell-group>
<view class="btn-submit btn-remove" v-if="reviewStatus===0 && isDraft!==1" @click="showRemove=true">撤销申请
</view>
<view class="btn-submit" @click="onSubmit" v-else>提交申请</view>
</u--form>
<u-modal :show="showRemove" content="您确定撤销申请吗?" showCancelButton @cancel="showRemove=false"
@confirm="onRemove"></u-modal>
<u-popup :show="show" mode="center" round="10" closeable @close="show=false">
<view class="popup-body">
<view class="tc bold">入驻申请须知</view>
<view class="content" v-html="notice"></view>
<view class="agree-box">
<checkbox-group @change="changeAgree">
<label>
<checkbox value="yes" style="transform:scale(0.8)"/>
</label>
<text>我已仔细阅读并同意</text>
</checkbox-group>
</view>
<u-button type="error" text="确定" :disabled="!isAgree" @click="save"></u-button>
</view>
</u-popup>
</view>
</template>
<script>
import CitySelect from "@/components/CitySelect";
import {getShopData, getShopInfo, removeApply, saveSupplier, saveWenwanSupplier} from "@/api/join";
import {getCity} from "@/api/user";
import {chooseImage, moreImage, uploadImage} from "@/utils";
export default {
name: "pkgJoinSupplier",
components: {
CitySelect
},
data() {
return {
partnerId: "",
infoTitle: "",
pics: [],
formSupplier: {
name: "",
avatar: "",
contact: "",
phone: "",
qualification: "",
subType: "",
area: "",
address: "",
position: "",
},
form: {
name: "",
cover: "",
type: 0,
typeText: "",
phone: "",
area: "",
address: "",
position: "",
content: ""
},
rulesSupplier: {
'name': {
type: 'string',
required: true,
message: '请填写供应商名称',
trigger: ['blur', 'change']
},
'contact': {
type: 'string',
required: true,
message: '请填写联系人姓名',
trigger: ['blur', 'change']
},
'phone': {
type: 'string',
required: true,
message: '请填写联系方式',
trigger: ['blur', 'change']
},
'qualification': {
type: 'string',
required: true,
message: '请上传营业执照',
trigger: ['blur', 'change']
},
'typeText': {
type: 'string',
required: true,
message: '请选择类型',
trigger: ['blur', 'change']
},
'area': {
type: 'string',
required: true,
message: '请选择所在省市',
trigger: ['blur', 'change']
},
'address': {
type: 'string',
required: true,
message: '请填写详细地址',
trigger: ['blur', 'change']
},
'position': {
type: 'string',
required: true,
message: '请选择定位信息',
trigger: ['blur', 'change']
}
},
rules: {
'name': {
type: 'string',
required: true,
message: '请填写店铺名称',
trigger: ['blur', 'change']
},
'cover': {
type: 'string',
required: true,
message: '请上传店铺封面图',
trigger: ['blur', 'change']
},
'typeText': {
type: 'string',
required: true,
message: '请选择店铺类型',
trigger: ['blur', 'change']
},
'contact': {
type: 'string',
required: true,
message: '请填写联系人姓名',
trigger: ['blur', 'change']
},
'phone': {
type: 'string',
required: true,
message: '请填写联系方式',
trigger: ['blur', 'change']
},
'area': {
type: 'string',
required: true,
message: '请选择所在省市',
trigger: ['blur', 'change']
},
'address': {
type: 'string',
required: true,
message: '请填写详细地址',
trigger: ['blur', 'change']
},
'position': {
type: 'string',
required: true,
message: '请选择定位信息',
trigger: ['blur', 'change']
},
'content': {
type: 'string',
required: true,
message: '请填写介绍内容',
trigger: ['blur', 'change']
}
},
showType: false,
columnsType: [],
indexType: [0],
showSupplierType: false,
columnsSupplierType: [],
indexSupplierType: [0],
district: [],
isAgree: false,
show: false,
notice: "",
showRemove: false,
isDraft: null,
reviewStatus: null,
stateTitle: "",
stateType: "primary",
isPass: false
}
},
onLoad(options) {
this.partnerId = options.partnerId || "";
this.formSupplier.subType = options.type;
this.infoTitle = options.type === "goods_supplier" ? "特产" : "文玩";
uni.setNavigationBarTitle({
title: this.infoTitle + "供应商入驻"
})
},
onReady() {
this.$refs.shopForm.setRules(this.rules);
this.$refs.supplierForm.setRules(this.rulesSupplier);
this.init();
},
methods: {
init() {
getCity().then(({data}) => {
this.district = data;
});
getShopData().then(({data}) => {
this.columnsType.push(data.hotelTypeList);
this.columnsSupplierType.push(data.supplierTypeList);
this.notice = data.merchantApplyNotice;
this.initInfo();
});
},
initInfo() {
getShopInfo().then(({data}) => {
if (data.partnerId != null) {
this.partnerId = data.partnerId;
}
this.isDraft = data.isDraft;
this.reviewStatus = data.reviewStatus;
switch (data.reviewStatus) {
case 0:
this.stateTitle = "审核中";
this.stateType = "primary";
break;
case 1:
this.isPass = true;
break;
case 2:
this.stateTitle = "审核驳回:" + data.reviewMsg;
this.stateType = "error";
break;
}
if (data.hotelInfo) {
this.pics = [];
this.form = data.hotelInfo;
let temp = this.form.pics.split(",");
if (temp.length > 0) {
this.pics = [];
temp.map(item => {
if (item.length > 0) {
this.pics.push({url: item})
}
})
}
this.indexType = this.columnsType[0].findIndex(item => item.id === this.form.type);
this.form.typeText = this.columnsType[0][this.indexType].name;
this.form.position = this.$forceToDecimal(this.form.longitude, 6) + ',' + this.$forceToDecimal(this.form.latitude, 6);
this.form.area = `${this.form.provinceName} ${this.form.cityName} ${this.form.areaName}`;
}
if (data.supplierInfo) {
if (this.infoTitle === "特产" && data.applyType !== 1) return;
if (this.infoTitle === "文玩" && data.applyType !== 3) return;
this.formSupplier = data.supplierInfo;
this.indexSupplierType = this.columnsSupplierType[0].findIndex(item => item.key === this.formSupplier.subType);
this.formSupplier.typeText = this.columnsSupplierType[0][this.indexSupplierType].value;
this.formSupplier.position = this.$forceToDecimal(this.formSupplier.longitude, 6) + ',' + this.$forceToDecimal(this.formSupplier.latitude, 6);
this.formSupplier.area = `${this.formSupplier.provinceName} ${this.formSupplier.cityName} ${this.formSupplier.areaName}`;
}
});
},
chooseLogoImg(target) {
chooseImage(img => {
switch (target) {
case "supplier":
this.formSupplier.avatar = img;
break;
case "licence":
this.formSupplier.qualification = img;
break;
case "shop":
this.form.cover = img;
break;
}
});
},
chooseShopImg() {
let that = this;
let count = 0;
moreImage(9, (img, total) => {
if (img) that.pics.push(img);
count++;
if (count === total) {
that.form.pics = that.pics.join(",");
}
})
},
// 删除图片
deletePic(event) {
this[`${event.name}`].splice(event.index, 1)
},
afterRead(event) {
let that = this;
if (event.file.length > 0) {
event.file.map(item => {
uploadImage(item.url, img => {
that.pics.push({url: img})
})
})
}
},
// 回调参数为包含column indexs、value、values
confirmType(e) {
this.indexType = e.indexs;
this.form.type = e.value[0].id;
this.form.typeText = e.value[0].name;
this.showType = false;
},
confirmSupplierType(e) {
this.indexSupplierType = e.indexs;
this.formSupplier.subType = e.value[0].key;
this.formSupplier.typeText = e.value[0].value;
this.showSupplierType = false;
},
cancelType() {
this.showType = false;
this.showSupplierType = false;
},
resultSupplier(values) {
let address = {
province: values.province.name || "",
city: values.city.name || "",
district: values.district.name || "",
provinceId: values.province.id,
cityId: values.city.id,
areaId: values.district.id
};
this.formSupplier.area = `${address.province} ${address.city} ${address.district}`;
this.formSupplier.provinceId = values.province.id;
this.formSupplier.cityId = values.city.id;
this.formSupplier.areaId = values.district.id;
},
// 省市区
result(values) {
let address = {
province: values.province.name || "",
city: values.city.name || "",
district: values.district.name || "",
provinceId: values.province.id,
cityId: values.city.id,
areaId: values.district.id
};
this.form.area = `${address.province} ${address.city} ${address.district}`;
this.form.provinceId = values.province.id;
this.form.cityId = values.city.id;
this.form.areaId = values.district.id;
},
// 定位
chooLocation(target) {
let that = this;
uni.chooseLocation({
success: function (res) {
if (target === "supplier") {
that.formSupplier.address = res.address;
that.formSupplier.longitude = that.$forceToDecimal(res.longitude, 6);
that.formSupplier.latitude = that.$forceToDecimal(res.latitude, 6);
that.formSupplier.position = that.$forceToDecimal(res.longitude, 6) + ',' + that.$forceToDecimal(res.latitude, 6);
} else {
that.form.address = res.address;
that.form.longitude = that.$forceToDecimal(res.longitude, 6);
that.form.latitude = that.$forceToDecimal(res.latitude, 6);
that.form.position = that.$forceToDecimal(res.longitude, 6) + ',' + that.$forceToDecimal(res.latitude, 6);
}
}
});
},
onSubmit() {
let that = this;
this.$refs.shopForm.validate().then(res => {
// 校验通过
this.$refs.supplierForm.validate().then(() => {
that.show = true;
})
}).catch(errors => {
// 校验失败
})
},
onRemove() {
removeApply().then(res => {
uni.showToast({
title: res.msg,
icon: "none",
duration: 3000,
success: () => {
this.showRemove = false;
setTimeout(()=>{
uni.navigateBack();
},3000)
}
})
});
},
changeAgree(event) {
this.isAgree = event.detail.value.length > 0
},
save() {
this.form.pics = "";
this.pics.map(item => {
this.form.pics += (item.url + ",");
})
if (this.infoTitle === "特产") {
saveSupplier(this.form, this.formSupplier, this.partnerId).then(res => {
if (res.status === 200) {
uni.showToast({
title: "您的入驻申请已提交成功,请耐心等待审核",
icon: "none",
success: () => {
this.initInfo();
this.show = false;
}
})
}
}).catch(err => {
uni.showToast({
title: err.msg,
icon: "none",
success: () => {
this.show = false;
}
})
})
} else {
saveWenwanSupplier(this.form, this.formSupplier, this.partnerId).then(res => {
if (res.status === 200) {
uni.showToast({
title: "您的入驻申请已提交成功,请耐心等待审核",
icon: "none",
success: () => {
this.initInfo();
this.show = false;
}
})
}
}).catch(err => {
uni.showToast({
title: err.msg,
icon: "none",
success: () => {
this.show = false;
}
})
})
}
}
}
}
</script>
<style lang="less">
@import "@/assets/css/pkg_join.less";
.licence-image {
.u-cell__body {
padding-top: 0 !important;
}
.box-upload {
margin-top: 0;
}
}
/deep/ .cityselect-nav {
.item {
font-size: 30rpx !important;
}
}
/deep/ .cityselect-item {
.cityselect-item-box {
font-size: 30rpx !important;
}
}
</style>