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.

265 lines
8.0 KiB

3 years ago
<!--新增门店-->
<template>
<div>
3 years ago
<xy-dialog ref="dialog" :is-show.sync="isShow" :title="type === 'add' ? '新增门店' : '编辑门店'" type="form" :form="form" :rules="rules" @submit="submit">
3 years ago
<template v-slot:belongsMerchant>
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>所属商家
</div>
<div class="xy-table-item-content">
3 years ago
<el-select clearable placeholder="请选择所属商家" v-model="form.belongsMerchant" style="width: 300px;">
<el-option v-for="item in merchants" :key="item.value" :value="item.value" :label="item.label"></el-option>
</el-select>
3 years ago
</div>
</div>
</template>
<template v-slot:name>
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>名称
</div>
<div class="xy-table-item-content">
<el-input clearable placeholder="请填写活动名称" v-model="form.name" style="width: 300px;"/>
</div>
</div>
</template>
<template v-slot:password>
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>密码
</div>
<div class="xy-table-item-content">
3 years ago
<el-input v-model="showPassword" show-password type="password" clearable placeholder="请填写密码" style="width: 300px;" @input="e => form.password = e"/>
3 years ago
</div>
</div>
</template>
<template v-slot:address>
3 years ago
<div class="xy-table-item" style="margin-bottom: 20px;">
<div class="xy-table-item-label">
地址选择
</div>
<div class="xy-table-item-content">
3 years ago
<avue-input-map style="width: 300px;" :params="option" placeholder="请选择地图" v-model="map" ></avue-input-map>
3 years ago
</div>
</div>
3 years ago
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>地址
</div>
<div class="xy-table-item-content">
<el-input clearable placeholder="请填写地址" v-model="form.address" style="width: 300px;"/>
</div>
</div>
</template>
<template v-slot:contact>
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>联系人
</div>
<div class="xy-table-item-content">
<el-input clearable placeholder="请填写联系人" v-model="form.contact" style="width: 300px;"/>
</div>
</div>
</template>
<template v-slot:contactNumber>
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>联系电话
</div>
<div class="xy-table-item-content">
<el-input clearable placeholder="请填写联系电话" v-model="form.contactNumber" style="width: 300px;"/>
</div>
</div>
</template>
<template v-slot:lng>
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>经度
</div>
<div class="xy-table-item-content">
<el-input disabled clearable placeholder="请填写经度" v-model="form.lng" style="width: 120px;"/>
3 years ago
</div>
</div>
</template>
<template v-slot:lat>
3 years ago
<div class="xy-table-item">
<div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>纬度
</div>
<div class="xy-table-item-content">
<el-input disabled clearable placeholder="请填写纬度" v-model="form.lat" style="width: 120px;"/>
3 years ago
</div>
</div>
</template>
<template v-slot:extraFormBottom>
3 years ago
</template>
3 years ago
</xy-dialog>
</div>
</template>
<script>
3 years ago
import {show,save,store} from '@/api/shop'
import { Message } from 'element-ui'
3 years ago
export default {
data() {
return {
3 years ago
merchants:[
{
value:1,
label:'测试商户1'
},
{
value:2,
label:'测试商户2'
},
],
//测试
3 years ago
3 years ago
type:'add',
id:null,
isShow:false,
showPassword:'',//展示的密码
3 years ago
form:{
belongsMerchant:'',
name:'',
password:'',
contact:'',
contactNumber:'',
3 years ago
address:'',
lng:'',//经度
lat:'',//纬度
},
3 years ago
rules:{
belongsMerchant:[
{required:true,message:'请选择所属商家'}
],
name:[
{required:true,message:'请填写名称'}
],
password:[
{required:true,message:'请填写密码'}
],
contact:[
{required:true,message:'请填写联系人'}
],
contactNumber:[
3 years ago
{required:true,message:'请填写联系电话'},
3 years ago
{pattern: /^[1][3-9][\d]{9}/,message:'手机号格式错误'}
3 years ago
],
address:[
{required:true,message:'请填写地址'}
],
lng:[
{required:true,message:'请选择定位'}
],
lat:[
{required:true,message:'请选择定位'}
]
},
map:{
},
option: {
column: [
{
label: '坐标',
prop: 'map',
type: 'map',
//高德初始化参数
params:{
zoom: 10,
// zoomEnable: false,
// dragEnable: false,
}
}]
3 years ago
}
}
},
methods: {
3 years ago
submit(){
if(this.type === 'add'){
store({
merchant_id:this.form.belongsMerchant,
name:this.form.name,
password:this.form.password,
address:this.form.address,
contact:this.form.contact,
phone:this.form.contactNumber,
longitude:this.form.lng,
latitude:this.form.lat,
state:1
}).then(res => {
Message({
type:'success',
message:'添加成功'
})
this.isShow = false
this.showPassword = ''
this.$emit('refresh')
})
return
}
if(this.type === 'editor'){
save({
id:this.id,
merchant_id:this.form.belongsMerchant,
name:this.form.name,
password:this.form.password,
address:this.form.address,
contact:this.form.contact,
phone:this.form.contactNumber,
longitude:this.form.lng,
latitude:this.form.lat,
state:1
}).then(res => {
Message({
type:'success',
message:'编辑门店成功'
})
this.isShow = false
this.showPassword = ''
this.$emit('refresh')
})
return
}
}
},
watch:{
map(newVal){
3 years ago
if(!newVal) return
this.form.lat = newVal[1]
this.form.lng = newVal[0]
this.form.address = newVal[2]
3 years ago
},
async isShow(newVal){
if(newVal){
if(this.type === 'editor'){
const res = await show({id:this.id})
this.form.address = res.address
this.form.contact = res.contact
this.form.name = res.name
this.form.password = res.password
this.form.contactNumber = res.phone
this.form.belongsMerchant = res.merchant_id
this.form.lat = res.latitude
this.form.lng = res.longitude
}
}else{
3 years ago
this.$refs['dialog'].reset()
3 years ago
}
}
},
mounted() {
}
3 years ago
}
</script>
<style scoped lang="scss">
</style>