Browse Source

轮播图

master
song 3 years ago
parent
commit
366620c351
  1. 16
      src/api/carousel.js
  2. 106
      src/components/Banner/detailsOfDistribution.vue
  3. 21
      src/components/Banner/index.vue

16
src/api/carousel.js

@ -33,6 +33,22 @@ export function POST_DELETE_CAROUSEL(params) {
})
}
/**
* 添加轮播图
* @param params
* @returns {Promise<T | never>}
* @constructor
*/
export function ADD_CAROUSEL(params) {
return request({
url: `${carousel}/addCarousel`,
method: 'post',
data:params
}).then(res => {
return res.data
})
}
/**
* 修改轮播图
* @param params

106
src/components/Banner/detailsOfDistribution.vue

@ -1,8 +1,8 @@
<template>
<div class="container">
<div class="title">修改轮播图</div>
<el-form :model="formLabelAlign" ref="formLabelAlign" label-width="80px" class="demo-ruleForm">
<el-form-item label="图片:">
<el-form :model="formLabelAlign" :rules="rules" ref="ruleForm" label-width="80px" class="demo-ruleForm">
<el-form-item label="图片:" prop="url">
<el-upload
class="avatar-uploader"
:action="`${BASE_API}/file/upload`"
@ -14,23 +14,22 @@
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item>
<el-form-item label="位置:">
{{ formLabelAlign.showPage }}
<el-form-item label="位置:" prop="showPage">
<el-cascader
v-modal="formLabelAlign.showPage"
v-model="formLabelAlign.showPage"
:props="props"
:options="tabList"
@change="handleChange">
</el-cascader>
</el-form-item>
<el-form-item label="状态:">
<el-form-item label="状态:" prop="recStatus">
<el-radio-group v-model="formLabelAlign.recStatus" @change="changeStatus">
<el-radio :label="0">正常</el-radio>
<el-radio :label="1">禁用</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="updateCarousel(formLabelAlign)">确定</el-button>
<el-button type="primary" @click="submit(formLabelAlign)">确定</el-button>
<el-button @click="$emit('close')">取消</el-button>
</el-form-item>
</el-form>
@ -41,20 +40,21 @@
import {BASE_API} from '../../config';
import {tabList} from '../../filters/code';
import {
ADD_CAROUSEL,
UPDATE_CAROUSEL,
} from '@/api/carousel';
import Alert from "@/utils/alert";
export default {
name: "detailsOfDistribution",
props: ['currList'],
props: ['currList', 'showAdd'],
data() {
return {
labelPosition: 'right',
formLabelAlign: {
url: '',
showPage: [],
recStatus: ''
showPage: ['00', '0000'],
recStatus: 0
},
BASE_API,
tabList,
@ -63,20 +63,34 @@
label: 'title',
children: 'children'
},
rules: {
url: [
{ required: true, message: '请上传图片', trigger: 'change' }
],
showPage: [
{ type: 'array', required: true, message: '请选择位置', trigger: 'change' }
],
recStatus: [
{ required: true, message: '请选择状态', trigger: 'change' }
],
}
}
},
mounted() {
console.log('this.currList: ', this.currList);
if(!this.currList) return
const { url, showPage, recStatus } = this.currList
let item = this.formLabelAlign
item.url = url;
item.showPage[0] = showPage.slice(0, 2);
item.showPage[1] = showPage;
item.recStatus = recStatus;
this.formLabelAlign = {...item}
console.log('this.formLabelAlign: ', this.formLabelAlign);
if(this.currList && this.currList && !this.showAdd){
const { id, url, showPage, recStatus } = this.currList
this.formLabelAlign.id = id;
this.formLabelAlign.url = url;
this.formLabelAlign.showPage.splice(0, 1, showPage.slice(0, 2))
this.formLabelAlign.showPage.splice(1, 1, showPage)
this.formLabelAlign.recStatus = recStatus;
}else{
const code = localStorage.getItem('code')
if(!code) return
this.formLabelAlign.showPage.splice(0, 1, code.slice(0, 2))
this.formLabelAlign.showPage.splice(1, 1, code)
}
},
methods: {
@ -104,23 +118,54 @@
//
handleChange(value) {
console.log(value);
this.formLabelAlign.showPage = value
},
//
changeStatus(value){
console.log('value: ', value);
this.formLabelAlign.recStatus = value;
},
submit(formName) {
this.$refs.ruleForm.validate((valid) => {
if (valid) {
if(this.showAdd){
this.addCarousel(formName)
}else{
this.updateCarousel(formName)
}
} else {
console.log('error submit!!');
return false;
}
});
},
/**
* 添加轮播图
*/
async addCarousel(formName){
const { url, showPage, recStatus } = formName;
const params = {
url,
showPage: showPage[1],
recStatus
};
await ADD_CAROUSEL(params).then((res) => {
if(res.code === 200){
Alert.success('添加成功');
this.$emit('close', true)
}else{
Alert.fail(res.msg || '添加失败');
}
})
},
/**
* 修改轮播图
*/
async updateCarousel(formName){
console.log('formName: ', formName);
const { url, showPage, recStatus } = formName;
const { id } = this.currList;
const { id, url, showPage, recStatus } = formName;
const params = {
id,
url,
@ -148,4 +193,15 @@
font-weight: bold;
text-align: center;
}
.avatar-uploader-icon {
display: inline-block;
border: 1px dashed #d9d9d9;
font-size: 28px;
color: #8c939d;
width: 178px;
height: 178px;
line-height: 178px;
text-align: center;
}
</style>

21
src/components/Banner/index.vue

@ -3,7 +3,9 @@
<el-button
type="primary"
icon="el-icon-plus"
style="margin-bottom: 15px;">
style="margin-bottom: 15px;"
@click="addModal"
>
添加
</el-button>
<div class="table">
@ -89,8 +91,8 @@
<el-dialog
width="600px"
:show-close="false"
:visible.sync="isEdit">
<details-of-distribution ref="distribution" :currList="currList" v-if="isEdit" @close="close"></details-of-distribution>
:visible.sync="showModal">
<details-of-distribution ref="distribution" :show-add="showAdd" :currList="currList" v-if="showModal" @close="close"></details-of-distribution>
</el-dialog>
</div>
</template>
@ -119,13 +121,14 @@
return {
count: 0,
id: '',
isEdit: false,
showModal: false,
tabList,
lists: [],
currList: null,
pageSize: 10,
pageNum: 1,
visible: false,
showAdd: true,
params: {
from: 0,
size: pageSize,
@ -192,8 +195,14 @@
return item.title
},
addModal(){
this.showModal = true;
this.showAdd = true;
},
editModal(currList) {
this.isEdit = true;
this.showModal = true;
this.showAdd = false;
// this.id = id;
this.currList = currList
},
@ -218,7 +227,7 @@
//
close(type){
this.isEdit = false
this.showModal = false
if(type){
this.getList()
}

Loading…
Cancel
Save