2025-04-21 17:39:41 +08:00
|
|
|
|
<template>
|
|
|
|
|
<div class="person-msg">
|
|
|
|
|
<u-form ref="thirdForm" :model="form" :rules="rules" :label-width="200">
|
|
|
|
|
<h4>基础信息</h4>
|
|
|
|
|
<u-form-item prop="storeName" label="店铺名称">
|
|
|
|
|
<u-input
|
|
|
|
|
type="text"
|
|
|
|
|
v-model="form.storeName"
|
|
|
|
|
placeholder="请填写店铺名称"
|
|
|
|
|
/>
|
|
|
|
|
</u-form-item>
|
|
|
|
|
|
|
|
|
|
<u-form-item prop="storeLogo" label="店铺logo">
|
|
|
|
|
<!-- <Upload
|
|
|
|
|
ref="uploadLogo"
|
|
|
|
|
:show-upload-list="false"
|
|
|
|
|
:on-success="handleSuccess"
|
|
|
|
|
:format="['jpg', 'jpeg', 'png', 'gif']"
|
|
|
|
|
:max-size="2048"
|
|
|
|
|
:before-upload="beforeUpload"
|
|
|
|
|
:on-format-error="handleFormatError"
|
|
|
|
|
:on-exceeded-size="handleMaxSize"
|
|
|
|
|
:on-error="uploadErr"
|
|
|
|
|
multiple
|
|
|
|
|
:action="action"
|
|
|
|
|
:headers="accessToken"
|
|
|
|
|
>
|
|
|
|
|
<Button type="info" :loading="uploadLoading">上传logo</Button>
|
|
|
|
|
</Upload> -->
|
|
|
|
|
|
|
|
|
|
<u-upload
|
|
|
|
|
:header="{ accessToken: storage.getAccessToken() }"
|
|
|
|
|
max-count="1"
|
|
|
|
|
:action="action"
|
|
|
|
|
@on-uploaded="onUploadedtwo"
|
2025-04-25 18:20:19 +08:00
|
|
|
|
@on-remove="onRemove"
|
2025-04-21 17:39:41 +08:00
|
|
|
|
style="margin-left: 30px"
|
|
|
|
|
></u-upload>
|
|
|
|
|
<div class="describe">请压缩图片在2M以内,格式为gif,jpg,png</div>
|
|
|
|
|
</u-form-item>
|
|
|
|
|
<u-form-item prop="goodsManagementCategory" label="店铺经营类目">
|
|
|
|
|
<u-checkbox-group
|
|
|
|
|
@change="checkboxGroupChange"
|
|
|
|
|
style="margin-left: 30px"
|
|
|
|
|
>
|
|
|
|
|
<u-checkbox
|
|
|
|
|
v-model="item.checked"
|
|
|
|
|
v-for="(item, index) in cateList"
|
|
|
|
|
:key="index"
|
|
|
|
|
:name="item.id"
|
|
|
|
|
>{{ item.name }}</u-checkbox
|
|
|
|
|
>
|
|
|
|
|
</u-checkbox-group>
|
|
|
|
|
</u-form-item>
|
|
|
|
|
<u-form-item prop="storeCenter" label="店铺所在地">
|
|
|
|
|
<u-input
|
|
|
|
|
v-model="form.___path"
|
|
|
|
|
type="select"
|
|
|
|
|
@click="showPicker"
|
|
|
|
|
placeholder="请选择所在地区"
|
|
|
|
|
/>
|
|
|
|
|
</u-form-item>
|
|
|
|
|
|
|
|
|
|
<u-form-item prop="storeAddressDetail" label="店铺详细地址">
|
|
|
|
|
<u-input
|
|
|
|
|
type="text"
|
|
|
|
|
v-model="form.storeAddressDetail"
|
|
|
|
|
placeholder="请填写店铺详细地址"
|
|
|
|
|
/>
|
|
|
|
|
</u-form-item>
|
|
|
|
|
<u-form-item prop="storeDesc" label="店铺简介">
|
|
|
|
|
<u-input
|
|
|
|
|
type="textarea"
|
|
|
|
|
v-model="form.storeDesc"
|
|
|
|
|
maxlength="200"
|
|
|
|
|
show-word-limit
|
|
|
|
|
:rows="4"
|
|
|
|
|
placeholder="请输入店铺简介"
|
|
|
|
|
/>
|
|
|
|
|
</u-form-item>
|
|
|
|
|
|
|
|
|
|
<u-form-item>
|
|
|
|
|
<!-- <button @click="uni.navigateBack()" :style="{background:'#F50505'}">返回</button> -->
|
|
|
|
|
<button
|
|
|
|
|
type="primary"
|
|
|
|
|
:style="{ background: '#FE3C3C' }"
|
|
|
|
|
@click="next"
|
|
|
|
|
class="bunem"
|
|
|
|
|
>
|
|
|
|
|
提交平台审核
|
|
|
|
|
</button>
|
|
|
|
|
</u-form-item>
|
|
|
|
|
</u-form>
|
|
|
|
|
<!-- <Modal title="View Image" v-model="visible">
|
|
|
|
|
<img :src="previewPicture" v-if="visible" style="width: 100%" />
|
|
|
|
|
</Modal> -->
|
|
|
|
|
<!-- <lili-map ref="liliMap" @getAddress="getAddress" :useApi="false"></lili-map> -->
|
|
|
|
|
<m-city
|
|
|
|
|
:provinceData="list"
|
|
|
|
|
headTitle="区域选择"
|
|
|
|
|
ref="cityPicker"
|
|
|
|
|
@funcValue="getpickerParentValue"
|
|
|
|
|
pickerSize="4"
|
|
|
|
|
></m-city>
|
|
|
|
|
<u-toast ref="uToast" />
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
<script>
|
|
|
|
|
import storage from "@/utils/storage.js";
|
|
|
|
|
import { upload } from "@/api/common.js";
|
|
|
|
|
import { applyThird } from "@/api/goods";
|
|
|
|
|
import gkcity from "@/components/m-city/m-city.vue";
|
|
|
|
|
import { getCategoryList, getMon } from "@/api/goods.js";
|
|
|
|
|
export default {
|
|
|
|
|
components: {
|
|
|
|
|
"m-city": gkcity,
|
|
|
|
|
},
|
|
|
|
|
data() {
|
|
|
|
|
return {
|
|
|
|
|
cateList: [],
|
|
|
|
|
list: [
|
|
|
|
|
{
|
|
|
|
|
id: "",
|
|
|
|
|
localName: "请选择",
|
|
|
|
|
children: [],
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
storage: storage,
|
|
|
|
|
loading: false, // 加载状态
|
|
|
|
|
uploadLoading: false, // 上传加载状态
|
|
|
|
|
action: upload, // 上传地址
|
|
|
|
|
accessToken: {}, // 验证token
|
|
|
|
|
previewPicture: "", // 预览图片
|
|
|
|
|
address: "", // 回显地址
|
|
|
|
|
visible: false, // 图片预览
|
|
|
|
|
form: {
|
|
|
|
|
// 表单数据
|
|
|
|
|
storeLogo: [],
|
|
|
|
|
},
|
|
|
|
|
rules: {
|
|
|
|
|
// 验证规则
|
|
|
|
|
goodsManagementCategory: [
|
|
|
|
|
{ required: true, message: "请选择店铺经营类目" },
|
|
|
|
|
],
|
|
|
|
|
storeName: [{ required: true, message: "请填写店铺名称" }],
|
|
|
|
|
storeLogo: [{ required: true, message: "请上传店铺logo" }],
|
|
|
|
|
storeDesc: [{ required: true, message: "请填写店铺简介" }],
|
|
|
|
|
storeCenter: [{ required: true, message: "请选择店铺位置" }],
|
|
|
|
|
storeAddressIdPath: [{ required: true, message: "请选择店铺位置" }],
|
|
|
|
|
storeAddressDetail: [{ required: true, message: "请输入店铺详细地址" }],
|
|
|
|
|
},
|
|
|
|
|
categoryList: [], // 分类数据
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
methods: {
|
|
|
|
|
checkboxGroupChange(e) {
|
|
|
|
|
this.form.goodsManagementCategory = e;
|
|
|
|
|
this.form.goodsManagementCategory =
|
|
|
|
|
this.form.goodsManagementCategory.join(",");
|
|
|
|
|
console.log(this.form);
|
|
|
|
|
},
|
|
|
|
|
getCategoryList() {
|
|
|
|
|
getCategoryList(0).then((res) => {
|
|
|
|
|
res.data.result.forEach((item) => {
|
|
|
|
|
item.checked = false; // 初始化每个项目的checked属性为false
|
|
|
|
|
});
|
|
|
|
|
this.cateList = res.data.result;
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
showPicker() {
|
|
|
|
|
this.$refs.cityPicker.show();
|
|
|
|
|
},
|
|
|
|
|
// 三级地址联动回调
|
|
|
|
|
getpickerParentValue(e) {
|
|
|
|
|
// 将需要绑定的地址设置为空,并赋值
|
|
|
|
|
this.form.storeAddressIdPath = [];
|
|
|
|
|
this.form.storeAddressPath = [];
|
|
|
|
|
let name = "";
|
|
|
|
|
|
|
|
|
|
e.forEach((item, index) => {
|
|
|
|
|
if (item.id) {
|
|
|
|
|
// 遍历数据
|
|
|
|
|
this.form.storeAddressIdPath.push(item.id);
|
|
|
|
|
this.form.storeAddressPath.push(item.localName);
|
|
|
|
|
name += item.localName;
|
|
|
|
|
this.form.___path = name;
|
|
|
|
|
}
|
|
|
|
|
if (index == e.length - 1) {
|
|
|
|
|
//如果是最后一个
|
|
|
|
|
let _town = item.children.filter((_child) => {
|
|
|
|
|
return _child.id == item.id;
|
|
|
|
|
});
|
|
|
|
|
this.$set(
|
|
|
|
|
this.form,
|
|
|
|
|
"storeCenter",
|
|
|
|
|
_town[0].center.split(",")[0] + "," + _town[0].center.split(",")[1]
|
|
|
|
|
);
|
|
|
|
|
this.form.storeAddressIdPath = this.form.storeAddressIdPath.join(",");
|
|
|
|
|
this.form.storeAddressPath = this.form.storeAddressPath.join(",");
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
console.log(this.form);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// 店铺logo
|
|
|
|
|
onUploadedtwo(lists) {
|
|
|
|
|
lists.forEach((item) => {
|
|
|
|
|
this.form.storeLogo.push(item.response.result);
|
|
|
|
|
});
|
|
|
|
|
},
|
2025-04-25 18:20:19 +08:00
|
|
|
|
onRemove(lists) {
|
|
|
|
|
this.form.storeLogo = [];
|
|
|
|
|
},
|
2025-04-21 17:39:41 +08:00
|
|
|
|
// 下一步
|
|
|
|
|
next() {
|
|
|
|
|
this.$refs.thirdForm.validate((valid) => {
|
|
|
|
|
if (valid) {
|
|
|
|
|
this.loading = true;
|
|
|
|
|
let params = JSON.parse(JSON.stringify(this.form));
|
|
|
|
|
params.storeLogo = this.form.storeLogo.toString();
|
|
|
|
|
params.goodsManagementCategory =
|
|
|
|
|
this.form.goodsManagementCategory.toString();
|
|
|
|
|
|
|
|
|
|
applyThird(params)
|
|
|
|
|
.then((res) => {
|
|
|
|
|
this.loading = false;
|
2025-04-25 18:20:19 +08:00
|
|
|
|
// uni.showToast({
|
|
|
|
|
// title: "请正确输入",
|
|
|
|
|
// icon: "none",
|
|
|
|
|
// duration: 1500,
|
|
|
|
|
// });
|
2025-04-21 17:39:41 +08:00
|
|
|
|
setTimeout(() => {
|
2025-04-30 14:42:40 +08:00
|
|
|
|
uni.navigateTo({
|
2025-04-21 17:39:41 +08:00
|
|
|
|
url: "/pages/tabbar/user/my",
|
|
|
|
|
});
|
|
|
|
|
}, 1000);
|
|
|
|
|
})
|
|
|
|
|
.catch(() => {
|
|
|
|
|
uni.showToast({
|
|
|
|
|
title: "请正确输入",
|
|
|
|
|
icon: "none",
|
|
|
|
|
duration: 1500,
|
|
|
|
|
});
|
|
|
|
|
this.loading = false;
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
uni.showToast({
|
|
|
|
|
title: "请正确输入",
|
|
|
|
|
icon: "none",
|
|
|
|
|
duration: 1500,
|
|
|
|
|
});
|
|
|
|
|
console.log("error");
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
mounted() {
|
|
|
|
|
this.getCategoryList();
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
</script>
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
|
.person-msg {
|
|
|
|
|
padding: 10px;
|
|
|
|
|
}
|
|
|
|
|
h4 {
|
|
|
|
|
margin-bottom: 10px;
|
|
|
|
|
padding: 0 10px;
|
|
|
|
|
border: 1px solid #ddd;
|
|
|
|
|
background-color: #f8f8f8;
|
|
|
|
|
font-weight: bold;
|
|
|
|
|
color: #333;
|
|
|
|
|
font-size: 14px;
|
|
|
|
|
line-height: 40px;
|
|
|
|
|
text-align: left;
|
|
|
|
|
}
|
|
|
|
|
.ivu-input-wrapper {
|
|
|
|
|
width: 300px;
|
|
|
|
|
}
|
|
|
|
|
.img-list {
|
|
|
|
|
display: inline-block;
|
|
|
|
|
margin: 10px;
|
|
|
|
|
width: 100px;
|
|
|
|
|
height: auto;
|
|
|
|
|
position: relative;
|
|
|
|
|
.cover {
|
|
|
|
|
display: none;
|
|
|
|
|
position: absolute;
|
|
|
|
|
top: 0;
|
|
|
|
|
bottom: 0;
|
|
|
|
|
left: 0;
|
|
|
|
|
right: 0;
|
|
|
|
|
background: rgba(0, 0, 0, 0.6);
|
|
|
|
|
width: inherit;
|
|
|
|
|
height: inherit;
|
|
|
|
|
align-items: center;
|
|
|
|
|
justify-content: space-around;
|
|
|
|
|
i {
|
|
|
|
|
color: #fff;
|
|
|
|
|
font-size: 30px;
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
&:hover .cover {
|
|
|
|
|
display: flex;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.describe {
|
|
|
|
|
font-size: 12px;
|
|
|
|
|
color: #999;
|
|
|
|
|
}
|
|
|
|
|
.bunem {
|
|
|
|
|
width: 309px;
|
2025-04-25 18:20:19 +08:00
|
|
|
|
margin-top: 20px;
|
|
|
|
|
height: 32px;
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: #ffffff;
|
|
|
|
|
margin-bottom: 35px;
|
|
|
|
|
align-items: center;
|
|
|
|
|
justify-content: center;
|
|
|
|
|
color: #fff;
|
|
|
|
|
font-size: 14px;
|
2025-04-21 17:39:41 +08:00
|
|
|
|
}
|
|
|
|
|
::v-deep {
|
|
|
|
|
.u-checkbox__icon-wrap--checked {
|
|
|
|
|
border-color: #fe3c3c !important;
|
|
|
|
|
background-color: #fe3c3c !important;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</style>
|