H5端齐采药项目,uniapp框架
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

550 lines
13 KiB

<template>
<page-meta :page-style="themeColor"></page-meta>
<div>
<div class="view">
<div class="item">
<div class="title">
店铺名称
<span class="star">*</span>
</div>
<div class="input">
<u-input placeholder="请填写公司或店铺名称" v-model="form.title"></u-input>
</div>
</div>
<!-- <div class="item">
<div class="title">
店铺编号<span class="star">*</span>
</div>
<div class="input">
<u-input placeholder="请填写店铺编号" v-model="form.store_code"></u-input>
</div>
</div> -->
<div class="item">
<div class="title">
店铺类型
<!-- <span class="star">*</span> -->
</div>
<div class="input">
<div class="picker">
<div class="select" @click="isShowStoreType()">
<div class="left" :style="{ color: form.store_type ? '#222' : '' }">
{{ form.store_type || '请填写店铺类型' }}
</div>
<div class="right">
<u-icon name="arrow-right" color="#c6c6c6"></u-icon>
</div>
</div>
</div>
</div>
</div>
<div class="item">
<div class="title">
联系人
<span class="star">*</span>
</div>
<div class="input">
<u-input placeholder="请填写联系人" v-model="form.contacts"></u-input>
</div>
</div>
<div class="item">
<div class="title">
电话号码
<span class="star">*</span>
</div>
<div class="input">
<u-input placeholder="请填写电话号码" type="number" v-model="form.phone"></u-input>
</div>
</div>
<div class="item">
<div class="title">电子邮箱</div>
<div class="input">
<u-input placeholder="请填写电子邮箱" v-model="form.email"></u-input>
</div>
</div>
<div class="item">
<div class="title">联系地址</div>
<div class="input">
<u-input placeholder="请填写联系地址" v-model="form.address"></u-input>
</div>
</div>
<div class="item">
<div class="title">
所属地
<span class="star">*</span>
</div>
<pick-regions :default-regions="defaultRegions" @getRegions="handleGetRegions">
<div class="picker">
<div class="select">
<div class="left" :style="{ color: addressName ? '#222' : '' }">
{{ addressName || '请选择所属地' }}
</div>
<div class="right">
<u-icon name="arrow-right" color="#c6c6c6"></u-icon>
</div>
</div>
</div>
</pick-regions>
</div>
<div class="item">
<div class="title">
营业资质或医疗机构许可证
<span class="star">*</span>
<div class="sub_title">请上传营业执照</div>
</div>
<div class="upload" @click="upload('license')">
<div class="box" v-if="!form.license">
<image :src="$util.img('/upload/weapp/user/jia1.png')" mode=""
style="width: 48rpx; height: 48rpx;"></image>
<div class="desc">上传图片</div>
<div class="text">文件大小不超过10M支持JPG\PNG\JPEG格式</div>
</div>
<image class="cover" :src="$util.img(form.license)" mode="aspectFill"
style="width: 100%; height: 100%;"></image>
</div>
</div>
<div class="item">
<div class="title">
药品经营许可证
<span class="star">*</span>
<div class="sub_title">请上传药品经营许可证</div>
</div>
<div class="upload" @click="upload('drugs_license')">
<div class="box" v-if="!form.drugs_license">
<image :src="$util.img('/upload/weapp/user/jia1.png')" mode=""
style="width: 48rpx; height: 48rpx;"></image>
<div class="desc">上传图片</div>
<div class="text">文件大小不超过10M支持JPG\PNG\JPEG格式</div>
</div>
<image class="cover" :src="$util.img(form.drugs_license)" mode="aspectFill"
style="width: 100%; height: 100%;"></image>
</div>
</div>
<div class="item">
<div class="title">
法人身份证
<span class="star">*</span>
<div class="sub_title">请上传法人身份证</div>
</div>
<div class="upload" @click="upload('card_images')">
<div class="box" v-if="!form.card_images">
<image :src="$util.img('/upload/weapp/user/jia1.png')" mode=""
style="width: 48rpx; height: 48rpx;"></image>
<div class="desc">上传图片</div>
<div class="text">文件大小不超过10M支持JPG\PNG\JPEG格式</div>
</div>
<image class="cover" :src="$util.img(form.card_images)" mode="aspectFill"
style="width: 100%; height: 100%;"></image>
</div>
</div>
<div class="item">
<div class="title">
法人委托书
<div class="sub_title">请上传法人委托书</div>
</div>
<div class="upload" @click="upload('trust_book_images')">
<div class="box" v-if="!form.trust_book_images">
<image :src="$util.img('/upload/weapp/user/jia1.png')" mode=""
style="width: 48rpx; height: 48rpx;"></image>
<div class="desc">上传图片</div>
<div class="text">文件大小不超过10M支持JPG\PNG\JPEG格式</div>
</div>
<image class="cover" :src="$util.img(form.trust_book_images)" mode="aspectFill"
style="width: 100%; height: 100%;"></image>
</div>
</div>
<div class="item">
<div class="title">
发票信息
<div class="sub_title">请上传发票信息</div>
</div>
<div class="upload" @click="upload('invoice_images')">
<div v-if="form.invoice_images" @click.stop="form.invoice_images = ''">
<u-icon name="close-circle-fill" color="red" size="20"
style="position: absolute;right: -10rpx;top:-10rpx;z-index:1"></u-icon>
</div>
<div class="box" v-else>
<image :src="$util.img('/upload/weapp/user/jia1.png')" mode=""
style="width: 48rpx; height: 48rpx;"></image>
<div class="desc">上传图片</div>
<div class="text">文件大小不超过10M,支持JPG\PNG\JPEG格式</div>
</div>
<image class="cover" :src="$util.img(form.invoice_images)" mode="aspectFill"
style="width: 100%; height: 100%;"></image>
</div>
</div>
<div class="item">
<div class="title">
店铺logo
<!-- <span class="star">*</span> -->
<div class="sub_title">请上传店铺logo</div>
</div>
<div class="upload" @click="upload('logo')">
<div v-if="form.logo" @click.stop="form.logo = ''">
<u-icon name="close-circle-fill" color="red" size="20"
style="position: absolute;right: -10rpx;top:-10rpx;z-index:1"></u-icon>
</div>
<div class="box" v-else>
<image :src="$util.img('/upload/weapp/user/jia1.png')" mode=""
style="width: 48rpx; height: 48rpx;"></image>
<div class="desc">上传图片</div>
<div class="text">文件大小不超过10M,支持JPG\PNG\JPEG格式</div>
</div>
<image class="cover" :src="$util.img(form.logo)" mode="aspectFill"
style="width: 100%; height: 100%;"></image>
</div>
</div>
</div>
<div class="btnBox">
<div class="btn" @click="submit">确认</div>
</div>
<u-action-sheet :show="showStoreType" :actions="storeTypeList" @close="showStoreType = false"
@select="selectStoreType"></u-action-sheet>
</div>
</template>
<script>
import pickRegions from './components/pick-regions/pick-regions.vue';
export default {
components: {
pickRegions
},
data() {
return {
form: {
store_code: '',
store_type: '',
contacts: '',
phone: '',
email: '',
address: '',
province_id: '',
city_id: '',
district_id: '',
license: '',
drugs_license: '',
card_images: '',
trust_book_images: '',
invoice_images: '',
title: '',
logo: ''
},
defaultRegions: [],
addressName: '',
id: '',
showStoreType: false,
storeTypeList: []
};
},
onLoad(opt) {
if (opt.id) {
this.id = opt.id;
uni.setNavigationBarTitle({
title: '修改店铺'
});
this.getStoreInfo();
} else {
uni.setNavigationBarTitle({
title: '新增店铺'
});
}
this.getStoreTypeList();
},
methods: {
isShowStoreType() {
this.showStoreType = true;
},
selectStoreType(index) {
this.form.store_type = index.name;
console.log(this.form.store_type);
},
getStoreTypeList() {
this.storeTypeList = [];
this.$api.sendRequest({
url: '/api/member/getStoreTypeList',
success: res => {
res.data.forEach(item => {
this.storeTypeList.push({ name: item });
});
console.log(this.storeTypeList);
}
});
},
getStoreInfo(id) {
this.$api.sendRequest({
url: '/api/member/getStoreInfo',
data: {
id: this.id
},
success: ({ data }) => {
data.trust_book_images = data.trust_book_images[0];
data.card_images = data.card_images[0];
this.form = data;
this.addressName = data.province_name + data.city_name + data.district_name;
}
});
},
submit() {
let {
title,
contacts,
phone,
province_id,
license,
drugs_license,
card_images,
trust_book_images,
invoice_images,
logo
} = this.form;
console.log(this.form);
if (!title) {
this.$util.showToast({
title: '请填写公司或店铺名称'
});
return;
}
if (!contacts) {
this.$util.showToast({
title: '请填写联系人'
});
return;
}
if (!phone) {
this.$util.showToast({
title: '请填写电话号码'
});
return;
}
if (!province_id) {
this.$util.showToast({
title: '请选择所属地'
});
return;
}
if (!license) {
this.$util.showToast({
title: '请上传营业执照'
});
return;
}
if (!drugs_license) {
this.$util.showToast({
title: '请上传药品经营许可证'
});
return;
}
if (!card_images) {
this.$util.showToast({
title: '请上传法人身份证'
});
return;
}
// if (!trust_book_images.length) {
// this.$util.showToast({
// title: '请上传法人委托书'
// });
// return;
// }
let url = this.id ? '/api/member/editStore' : '/api/member/addStore';
this.$api.sendRequest({
url,
data: this.form,
success: res => {
this.$util.showToast({
title: res.message
});
setTimeout(() => {
uni.navigateBack({
delta: 1
});
}, 800);
}
});
},
delImg(type, index) {
this.form[type].splice(index, 1);
},
// 获取选择的地区
handleGetRegions(regions) {
this.defaultRegions = regions;
this.addressName = '';
let arr = ['province_id', 'city_id', 'district_id'].map((v, i) => {
this.form[v] = regions[i].value;
this.addressName += regions[i].label;
});
},
// 上传图片
upload(type, size = 1) {
this.$util.upload(
size, {
path: 'storeRegister'
},
res => {
if (size == 1) {
this.form[type] = res[0];
} else {
this.form[type] = [...this.form[type], ...res];
}
}
);
}
}
};
</script>
<style lang="scss" scoped>
.view {
background-color: #fff;
padding: 30rpx 30rpx 160rpx;
.cover {
border-radius: 16rpx;
width: 100%;
height: 332rpx;
margin: 24rpx 0;
display: block;
}
.item {
margin-bottom: 48rpx;
.title {
font-size: 28rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #222222;
.star {
margin-left: 8rpx;
font-size: 28rpx;
font-family: PingFangSC-Regular, PingFang SC;
color: #f33b50;
}
.sub_title {
font-size: 24rpx;
font-family: PingFangSC-Regular, PingFang SC;
color: #999999;
}
}
.input {
margin-top: 24rpx;
::v-deep {
.u-input--radius {
background: #f6f6f6;
border-radius: 16rpx;
border: 0;
padding: 20rpx 28rpx !important;
}
}
}
.picker {
.select {
margin-top: 24rpx;
height: 80rpx;
background: #f6f6f6;
border-radius: 16rpx;
display: flex;
align-items: center;
.left {
margin-left: 28rpx;
font-size: 28rpx;
font-family: PingFangSC-Regular, PingFang SC;
color: #bfbfbf;
flex-grow: 1;
}
.right {
margin-right: 24rpx;
}
}
}
.upload {
margin-top: 24rpx;
height: 320rpx;
background: #f6f6f6;
border-radius: 16rpx;
position: relative;
.box {
text-align: center;
position: absolute;
transform: translate(-50%, -50%);
left: 50%;
top: 50%;
width: 800rpx;
.desc {
margin-top: 16rpx;
font-size: 28rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #bfbfbf;
}
.text {
margin-top: 8rpx;
font-size: 24rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #bfbfbf;
}
}
}
}
}
.btnBox {
box-sizing: border-box;
width: 100%;
position: fixed;
bottom: 0;
padding: 32rpx;
background-color: #fff;
// box-shadow: 0px 4px 12px 0px rgba(0,0,0,0.3);
.btn {
display: flex;
justify-content: center;
align-items: center;
height: 80rpx;
background: $base-color;
border-radius: 16rpx;
font-size: 28rpx;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 600;
color: #ffffff;
}
}
</style>