Files
cmanager/src/views/manage/jlhome/article/allArticle/index.vue

300 lines
8.9 KiB
Vue
Raw Normal View History

2024-02-02 15:04:47 +08:00
<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>