2022-8-5 门店

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

@ -31,3 +31,11 @@ export function update(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>
<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>
<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-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>
</template>
@ -28,7 +30,7 @@
<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.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>
</template>
@ -99,11 +101,27 @@
</template>
<script>
import {show,save,store} from '@/api/shop'
import { Message } from 'element-ui'
export default {
data() {
return {
isShow:false,
merchants:[
{
value:1,
label:'测试商户1'
},
{
value:2,
label:'测试商户2'
},
],
//
type:'add',
id:null,
isShow:false,
showPassword:'',//
form:{
belongsMerchant:'',
name:'',
@ -161,21 +179,86 @@ export default {
}
},
methods: {
//
mapClick(r,p){
this.$nextTick(()=>{
this.form.lat = p
this.form.lng = r
})
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){
console.log(newVal)
if(!newVal) return
this.form.lat = newVal[1]
this.form.lng = newVal[0]
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() {

File diff suppressed because one or more lines are too long

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

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

Loading…
Cancel
Save