300 lines
8.9 KiB
Vue
300 lines
8.9 KiB
Vue
<template>
|
||
<basic-container>
|
||
<!--搜索栏-->
|
||
<el-form size="small" label-position="right" style="padding-left: 10px; padding-right: 10px" :inline="true">
|
||
<el-row :span="24">
|
||
<el-form-item label="文章名称:">
|
||
<el-input v-model="query.articleTitle"></el-input>
|
||
</el-form-item>
|
||
<el-form-item label="作者:">
|
||
<el-input v-model="query.author"></el-input>
|
||
</el-form-item>
|
||
<el-form-item label="发稿日期:">
|
||
<el-date-picker v-model="query.searchDate" type="daterange" range-separator="至" start-placeholder="开始日期"
|
||
end-placeholder="结束日期" value-format="yyyy-MM-dd">
|
||
</el-date-picker>
|
||
</el-form-item>
|
||
<div class="searchBtn">
|
||
<el-button type="primary" size="small" icon="el-icon-search" @click="searchChange">搜 索</el-button>
|
||
<el-button size="small" icon="el-icon-delete" @click="searchReset">清 空</el-button>
|
||
</div>
|
||
</el-row>
|
||
</el-form>
|
||
<!--搜索栏-->
|
||
<avue-crud :option="option" :data="data" :page="page" v-model="form" @on-load="onLoad" @row-update="rowUpdate"
|
||
@row-save="rowSave" @row-del="rowDel" @current-change="currentChange" @size-change="sizeChange"
|
||
@selection-change="selectionChange" @refresh-change="refreshChange">
|
||
<template slot="headPic" slot-scope="{ row }">
|
||
<img class="img" :src="row.headPic" alt="" srcset="" />
|
||
</template>
|
||
<template slot="menu" slot-scope="{row}">
|
||
<el-button type="text" @click="editNewsInfo(row.id)" icon="el-icon-edit">修改</el-button>
|
||
<!--<el-button type="text" @click="setCover(row.id)">设置为封面</el-button>-->
|
||
<el-button type="text" v-if="row.status==0" @click="release(row.id,'release')">发布</el-button>
|
||
<el-button type="text" v-if="row.status==1" @click="release(row.id,'offShelf')">下架</el-button>
|
||
</template>
|
||
<template slot="menuLeft">
|
||
<el-button @click="addNewsInfo" icon="el-icon-plus" type="primary">添加文章</el-button>
|
||
</template>
|
||
<template slot="sort" slot-scope="{row}">
|
||
<el-button type="text" @click="orderItem(row,'ascs')">上移</el-button>
|
||
<el-button type="text" @click="orderItem(row,'desc')">下移</el-button>
|
||
</template>
|
||
<template slot="articleTitle" slot-scope="{row}">
|
||
<span class="articleTitle" @click="showNewsDetail(row.id)">{{row.articleTitle}}</span>
|
||
</template>
|
||
<template slot="articleSrcUrl" slot-scope="{row}">
|
||
<a :href="row.articleSrcUrl" style="color: #6699FF;" target="blank">{{row.articleSrcUrl}}</a>
|
||
</template>
|
||
</avue-crud>
|
||
<!-- <news-detail ref="detail"></news-detail>-->
|
||
</basic-container>
|
||
</template>
|
||
<script>
|
||
import { getList, delNews, order, release } from "@/api/manage/news";
|
||
// import newsDetail from './Dialog/newsDetail'
|
||
export default {
|
||
components:{
|
||
// newsDetail
|
||
},
|
||
name: "manage_jlhome_news",
|
||
data() {
|
||
return {
|
||
data: [],
|
||
selectionList: [],
|
||
query: {},
|
||
form: {},
|
||
drawer: false,
|
||
option: {
|
||
border: true,
|
||
index: true,
|
||
indexLabel: "序号",
|
||
labelWidth: 100,
|
||
selection: false,
|
||
align: "center",
|
||
editBtn: false,
|
||
delBtn: true,
|
||
addBtn: false,
|
||
|
||
addText: '文章信息',
|
||
column: [
|
||
{
|
||
label: "文章名称",
|
||
prop: "articleTitle",
|
||
slot:true,
|
||
},
|
||
{
|
||
label: "首页图",
|
||
prop: "headPic",
|
||
slot: true,
|
||
type: "upload",
|
||
span: 12,
|
||
showFileList: false,
|
||
listType: "picture-img",
|
||
multiple: false,
|
||
|
||
},
|
||
{
|
||
label: "发稿日期",
|
||
prop: "createTime",
|
||
type: "date",
|
||
formslot: true,
|
||
format: "yyyy-MM-dd",
|
||
editDisplay: false,
|
||
addDisplay: false,
|
||
},
|
||
{
|
||
label: "分类",
|
||
prop: "typeName",
|
||
},
|
||
{
|
||
label: "文章原地址",
|
||
prop: "articleSrcUrl",
|
||
slot:true
|
||
},
|
||
{
|
||
label: "作者",
|
||
prop: "author",
|
||
},
|
||
{
|
||
label: "上传人",
|
||
prop: "createUserName",
|
||
addDisplay: false,
|
||
editDisplay: false,
|
||
},
|
||
{
|
||
label: '状态',
|
||
prop: 'status',
|
||
addDisplay: false,
|
||
editDisplay: false,
|
||
dicData: [
|
||
{
|
||
label: '已发布',
|
||
value: '1'
|
||
}, {
|
||
label: '未发布',
|
||
value: '0'
|
||
}
|
||
]
|
||
},
|
||
{
|
||
label: "排序",
|
||
prop: "sort",
|
||
addDisplay: false,
|
||
editDisplay: false,
|
||
slot: true,
|
||
},
|
||
],
|
||
group: [
|
||
{
|
||
label: "文章内容",
|
||
column: [
|
||
{
|
||
label: '文章内容',
|
||
prop: 'newsInfo',
|
||
formslot: true
|
||
|
||
}
|
||
]
|
||
},
|
||
],
|
||
},
|
||
|
||
|
||
page: {
|
||
currentPage: 1,
|
||
pageSize: 10,
|
||
total: 0,
|
||
},
|
||
};
|
||
},
|
||
|
||
methods: {
|
||
currentChange(current) {
|
||
this.page.currentPage = current;
|
||
this.onLoad(this.page);
|
||
},
|
||
sizeChange(size) {
|
||
this.page.pageSize = size;
|
||
this.onLoad(this.page);
|
||
},
|
||
selectionChange(select) {
|
||
this.selectionList = select;
|
||
},
|
||
searchChange() {
|
||
if (this.query.searchDate) {
|
||
this.query['beginTime'] = this.query.searchDate[0];
|
||
this.query['endTime'] = this.query.searchDate[1];
|
||
}
|
||
this.onLoad(this.page, this.query);
|
||
},
|
||
searchReset() {
|
||
this.query = {};
|
||
this.onLoad(this.page);
|
||
},
|
||
refreshChange() {
|
||
this.page.currentPage = 1;
|
||
this.onLoad(this.page)
|
||
},
|
||
onLoad(page, params = {}) {
|
||
getList(
|
||
page.currentPage,
|
||
page.pageSize,
|
||
Object.assign(this.query, params)
|
||
).then((res) => {
|
||
const data = res.data.data;
|
||
this.data = data.records;
|
||
this.data.forEach(ele => {
|
||
if (ele.articleTitle.length > 15) {
|
||
ele.articleTitle = ele.articleTitle.slice(0, 15) + '...';
|
||
}
|
||
});
|
||
this.page.total = data.total;
|
||
});
|
||
},
|
||
/**添加文章 */
|
||
addNewsInfo() {
|
||
this.$router.push({ name: '添加/修改文章article', params: { type: 'add', id: null } })
|
||
},
|
||
/*修改文章内容*/
|
||
editNewsInfo(id) {
|
||
this.$router.push({ name: '添加/修改文章article', params: { type: 'edit', id: id } })
|
||
},
|
||
/*删除文章*/
|
||
rowDel(row) {
|
||
this.$confirm('是否确认删除该文章?', {
|
||
confirmButtonText: "确定",
|
||
cancelButtonText: "取消",
|
||
type: "warning"
|
||
}).then(() => {
|
||
return delNews(row.id)
|
||
}).then(() => {
|
||
this.$message.success('删除成功!')
|
||
this.onLoad(this.page)
|
||
})
|
||
},
|
||
|
||
/*设置为封面*/
|
||
|
||
/*排序*/ //当order==total时,不能下移
|
||
orderItem(row, type) {
|
||
if (type == 'ascs') {
|
||
order(row.id, Number(row.sort), 1).then(() => {
|
||
this.onLoad(this.page)
|
||
})
|
||
}
|
||
else if (type == 'desc') {
|
||
order(row.id, Number(row.sort), 0).then(() => {
|
||
this.onLoad(this.page)
|
||
})
|
||
}
|
||
},
|
||
release(id, type) {
|
||
if (type == 'release') {
|
||
this.$confirm("是否确定发布此篇文章?", {
|
||
confirmButtonText: "确定",
|
||
cancelButtonText: "取消",
|
||
type: "warning"
|
||
}).then(() => {
|
||
release(id,1).then(() => {
|
||
this.$message.success('发布成功');
|
||
this.onLoad(this.page)
|
||
})
|
||
});
|
||
}
|
||
else if(type=='offShelf'){
|
||
this.$confirm("是否确定下架此篇文章?", {
|
||
confirmButtonText: "确定",
|
||
cancelButtonText: "取消",
|
||
type: "warning"
|
||
}).then(() => {
|
||
release(id,0).then(() => {
|
||
this.$message.success('下架成功');
|
||
this.onLoad(this.page)
|
||
})
|
||
});
|
||
}
|
||
|
||
},
|
||
showNewsDetail(id){//点击文章名称预览文章内容
|
||
this.$refs.detail.open(id)
|
||
}
|
||
},
|
||
};
|
||
</script>
|
||
<style>
|
||
.img {
|
||
width: 100%;
|
||
height: auto;
|
||
}
|
||
|
||
.searchBtn {
|
||
display: inline-block;
|
||
margin-bottom: 18px;
|
||
}
|
||
.articleTitle{
|
||
color: #6699FF;
|
||
cursor: pointer;
|
||
}
|
||
</style>
|