2022-8-5 门店

master
271556543@qq.com 4 years ago
parent ef1cda986c
commit 98f36794d4

@ -31,3 +31,11 @@ export function update(data){
data data
}) })
} }
export function destroy(params){
return request({
method:'get',
url:'/api/admin/advertisement/destroy',
params
})
}

@ -0,0 +1,43 @@
//门店管理
import request from '@/utils/request'
export function index(params){
return request({
method:'get',
url:'/api/admin/shop/index',
params
})
}
export function store(data){
return request({
method:'post',
url:'/api/admin/shop/store',
data
})
}
export function show(params){
return request({
method:'get',
url:'/api/admin/shop/show',
params
})
}
export function save(data){
return request({
method:'post',
url:'/api/admin/shop/save',
data
})
}
export function destroy(params){
return request({
method:'get',
url:'/api/admin/shop/destroy',
params
})
}

@ -1,14 +1,16 @@
<!--新增门店--> <!--新增门店-->
<template> <template>
<div> <div>
<xy-dialog :is-show.sync="isShow" title="新增门店" type="form" :form="form" :rules="rules"> <xy-dialog :is-show.sync="isShow" :title="type === 'add' ? '新增门店' : '编辑门店'" type="form" :form="form" :rules="rules" @submit="submit">
<template v-slot:belongsMerchant> <template v-slot:belongsMerchant>
<div class="xy-table-item"> <div class="xy-table-item">
<div class="xy-table-item-label"> <div class="xy-table-item-label">
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>所属商家 <span style="color: red;font-weight: 600;padding-right: 4px;">*</span>所属商家
</div> </div>
<div class="xy-table-item-content"> <div class="xy-table-item-content">
<el-select clearable placeholder="请选择所属商家" v-model="form.belongsMerchant" style="width: 300px;"/> <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>
</div> </div>
</div> </div>
</template> </template>
@ -28,7 +30,7 @@
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>密码 <span style="color: red;font-weight: 600;padding-right: 4px;">*</span>密码
</div> </div>
<div class="xy-table-item-content"> <div class="xy-table-item-content">
<el-input clearable placeholder="请填写密码" v-model="form.password" style="width: 300px;"/> <el-input v-model="showPassword" show-password type="password" clearable placeholder="请填写密码" style="width: 300px;" @input="e => form.password = e"/>
</div> </div>
</div> </div>
</template> </template>
@ -99,11 +101,27 @@
</template> </template>
<script> <script>
import {show,save,store} from '@/api/shop'
import { Message } from 'element-ui'
export default { export default {
data() { data() {
return { return {
isShow:false, merchants:[
{
value:1,
label:'测试商户1'
},
{
value:2,
label:'测试商户2'
},
],
//
type:'add',
id:null,
isShow:false,
showPassword:'',//
form:{ form:{
belongsMerchant:'', belongsMerchant:'',
name:'', name:'',
@ -161,21 +179,86 @@ export default {
} }
}, },
methods: { methods: {
// submit(){
mapClick(r,p){ if(this.type === 'add'){
this.$nextTick(()=>{ store({
this.form.lat = p merchant_id:this.form.belongsMerchant,
this.form.lng = r 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:{ watch:{
map(newVal){ map(newVal){
console.log(newVal)
if(!newVal) return if(!newVal) return
this.form.lat = newVal[1] this.form.lat = newVal[1]
this.form.lng = newVal[0] this.form.lng = newVal[0]
this.form.address = newVal[2] this.form.address = newVal[2]
},
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{
this.form = {
belongsMerchant:'',
name:'',
password:'',
contact:'',
contactNumber:'',
address:'',
lng:'',//
lat:'',//
}
}
} }
}, },
mounted() { mounted() {

File diff suppressed because one or more lines are too long

@ -12,8 +12,8 @@
<div class="selects-item"> <div class="selects-item">
<div class="selects-item-label">发布系统</div> <div class="selects-item-label">发布系统</div>
<Select placeholder="选择发布系统" style="width: 150px;" clearable> <Select v-model="select.system" placeholder="选择发布系统" style="width: 150px;" clearable>
<Option></Option> <Option v-for="item in systems" :key="item.value" :value="item.value">{{ item.label }}</Option>
</Select> </Select>
</div> </div>
@ -46,29 +46,34 @@
<xy-table <xy-table
:list="list" :list="list"
:table-item="table" :table-item="table"
@editor="editorShow"> @editor="editorShow"
@delete="deleteAd">
</xy-table> </xy-table>
<div style="display: flex;justify-content: flex-end;"> <div style="display: flex;justify-content: flex-end;">
<Page :total="total" show-elevator /> <Page :total="total" show-elevator @on-change="pageChange"/>
</div> </div>
<!-- 新增--> <!-- 新增-->
<add-ad ref="addAd" @refresh="getAds"></add-ad> <add-ad ref="addAd" :systems="systems" @refresh="getAds"></add-ad>
</div> </div>
</template> </template>
<script> <script>
import {index} from "@/api/ad" import {index,destroy} from "@/api/ad"
import {getparameter} from '@/api/system/dictionary'
import {parseTime} from '@/utils'
import addAd from './components/addAd' import addAd from './components/addAd'
import { Message } from 'element-ui'
export default { export default {
components:{ components:{
addAd addAd
}, },
data() { data() {
return { return {
systems:[],
select:{ select:{
pageSize:10, pageSize:10,
pageIndex:1, pageIndex:1,
@ -79,7 +84,7 @@ export default {
}, },
total:0, total:0,
list:[{}], list:[],
table:[ table:[
{ {
label:'图片', label:'图片',
@ -147,21 +152,40 @@ export default {
label:'有效期', label:'有效期',
width: 220, width: 220,
customFn:(row)=>{ customFn:(row)=>{
return (<div>{row.valid_time_begin} - {row.valid_time_over}</div>) return (<div>{parseTime(new Date(row.valid_time_begin),'{y}-{m}-{d}')} - {parseTime(new Date(row.valid_time_over),'{y}-{m}-{d}')}</div>)
} }
}, },
{ {
label:'创建人/创建时间', label:'创建人/创建时间',
width: 220, width: 220,
prop:'created_at' prop:'created_at',
formatter:(cell, data, value) => {
return parseTime(new Date(value),'{y}-{m}-{d}') || ''
}
} }
], ],
} }
}, },
methods: { methods: {
//
async getSystem(){
let res = await getparameter({number:'system'})
this.systems = res.detail.map(item => {
return {
label:item.value,
value:item.id
}
})
},
async getAds(){ async getAds(){
console.log(this.select) const res = await index({
const res = await index() name:this.select.name,
origin_system:this.select.system,
page_size:this.select.pageSize,
create_begin:this.select.createDate[0],
create_over:this.select.createDate[1],
page:this.select.pageIndex
})
this.list = res.data this.list = res.data
}, },
@ -175,14 +199,28 @@ export default {
effectiveDate:[] effectiveDate:[]
} }
}, },
pageChange(e){
this.select.pageIndex = e
this.getAds()
},
editorShow(row){ editorShow(row){
this.$refs['addAd'].type = 'editor' this.$refs['addAd'].type = 'editor'
this.$refs['addAd'].id = row.id this.$refs['addAd'].id = row.id
this.$refs['addAd'].isShow = true this.$refs['addAd'].isShow = true
},
deleteAd(row){
destroy({id:row.id}).then(res => {
Message({
type:'success',
message:'删除成功'
})
this.getAds()
})
} }
}, },
mounted() { mounted() {
this.getSystem()
this.getAds() this.getAds()
} }

@ -41,9 +41,7 @@
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>跳转方向 <span style="color: red;font-weight: 600;padding-right: 4px;">*</span>跳转方向
</div> </div>
<div class="xy-table-item-content"> <div class="xy-table-item-content">
<el-select clearable placeholder="请选择跳转方向" v-model="form.to" style="width: 300px;"> <el-input clearable placeholder="请填写跳转方向" v-model="form.to" style="width: 300px;"/>
<el-option v-for="item in toUrls" :key="item.value" :value="item.value" :label="item.label"></el-option>
</el-select>
</div> </div>
</div> </div>
</template> </template>
@ -94,17 +92,24 @@
<span style="color: red;font-weight: 600;padding-right: 4px;">*</span>图片 <span style="color: red;font-weight: 600;padding-right: 4px;">*</span>图片
</div> </div>
<div class="xy-table-item-content"> <div class="xy-table-item-content">
<img v-if="form.img" :src="form.img" class="avatar"> <div v-if="form.img" style="position: relative;">
<img :src="form.img" class="avatar">
<Button shape="circle" icon="md-close" type="error" size="small" class="img__delete" @click="form.img = ''"></Button>
</div>
<el-upload <el-upload
v-else v-else
accept="picture"
:limit="1"
class="avatar-uploader" class="avatar-uploader"
list-type="picture-card" list-type="picture-card"
action="/api/admin/upload-file" action="/api/admin/upload-file"
:show-file-list="false" :show-file-list="true"
:on-error="uploadFail" :on-error="uploadFail"
:on-success="uploadSuccess"> :on-success="uploadSuccess"
:before-upload="uploadBefore">
<i class="el-icon-plus avatar-uploader-icon"></i> <i class="el-icon-plus avatar-uploader-icon"></i>
</el-upload> </el-upload>
<div style="font-size: 10px;">建议尺寸 800*450像素</div>
</div> </div>
</div> </div>
</template> </template>
@ -117,13 +122,17 @@ import {store,show,update} from '@/api/ad'
import {getparameter} from '@/api/system/dictionary' import {getparameter} from '@/api/system/dictionary'
import { Message } from 'element-ui' import { Message } from 'element-ui'
export default { export default {
props:{
systems:{
type:Array
}
},
data() { data() {
return { return {
id:'', id:'',
type:'add', type:'add',
isShow:false, isShow:false,
systems:[],
toUrls:[],
types:[{label:'首页轮播图',value:1}], types:[{label:'首页轮播图',value:1}],
states:[ states:[
{ {
@ -157,7 +166,7 @@ export default {
{required:true,message:"请选择发布系统"} {required:true,message:"请选择发布系统"}
], ],
to:[ to:[
{required:true,message:"请选择跳转方向"} {required:true,message:"请填写跳转方向"}
], ],
state:[ state:[
{required:true,message:"请选择状态"} {required:true,message:"请选择状态"}
@ -175,16 +184,7 @@ export default {
} }
}, },
methods: { methods: {
//
async getSystem(){
let res = await getparameter({number:'system'})
this.systems = res.detail.map(item => {
return {
label:item.value,
value:item.id
}
})
},
async getToUrl(){ async getToUrl(){
let res = await getparameter({number:'toUrl'}) let res = await getparameter({number:'toUrl'})
this.toUrls = res.detail.map(item => { this.toUrls = res.detail.map(item => {
@ -203,6 +203,17 @@ export default {
console.log(response) console.log(response)
this.form.img = response.url this.form.img = response.url
}, },
uploadBefore(file){
console.log(file)
if((file.size/1000) > 2024){
Message({
type:'warning',
message:'上传图片大小超过2M'
})
return false
}
},
submit(){ submit(){
console.log(this.form) console.log(this.form)
@ -289,8 +300,6 @@ export default {
watch:{ watch:{
isShow(val){ isShow(val){
if(val){ if(val){
this.getSystem()
this.getToUrl()
if(this.type === 'editor'){ if(this.type === 'editor'){
this.getDetailAd() this.getDetailAd()
@ -302,8 +311,16 @@ export default {
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.img__delete{
position: absolute;
top: 3px;
right: 15px;
}
</style> </style>
<style>
<style lang="scss">
.avatar-uploader .el-upload { .avatar-uploader .el-upload {
border: 1px dashed #d9d9d9; border: 1px dashed #d9d9d9;
border-radius: 6px; border-radius: 6px;
@ -324,7 +341,7 @@ export default {
} }
.avatar { .avatar {
width: 120px; width: 120px;
height: 120px;
display: block; display: block;
border-radius: 6px;
} }
</style> </style>

Loading…
Cancel
Save