目录代码整合

This commit is contained in:
aixianling
2022-05-10 20:02:37 +08:00
parent 71049f7f65
commit 036ee91533
324 changed files with 4 additions and 8321 deletions

View File

@@ -0,0 +1,278 @@
<template>
<ai-list class="news-list" isTabs>
<template slot="content">
<ai-search-bar>
<template slot="left">
<ai-select
v-model="searchObj.type"
@change="page.current = 1, getList()"
placeholder="选择新闻类别"
:selectList="$dict.getDict('newsCenterType')">
</ai-select>
</template>
<template slot="right">
<el-input
v-model="searchObj.title"
size="small"
placeholder="搜索标题/发布地区"
clearable
v-throttle="() => {page.current = 1, getList()}"
@clear="page.current = 1, searchObj.title = '', getList()"
suffix-icon="iconfont iconSearch"/>
</template>
</ai-search-bar>
<ai-search-bar>
<template slot="left">
<el-dropdown @visible-change="v=>isClick=v" @command="addNews"
v-if="permissions('app_appnewscenterinfo_edit')">
<el-button type="primary" icon="iconfont iconAdd" size="small">发布新闻
<i class="el-icon--right" :class="dropIcon"></i>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="video">发布视频</el-dropdown-item>
<el-dropdown-item command="article">发布文章</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
</ai-search-bar>
<ai-table
:tableData="tableData"
:col-configs="colConfigs"
:total="total"
stripe
:current.sync="page.current"
:size.sync="page.size"
@getList="getList">
<el-table-column slot="title" label="标题" width="280" align="left" show-overflow-tooltip>
<template slot-scope="{ row }">
<span style="color: #2266FF;margin-right:40px;" v-if="row.isTop == 1">[置顶]</span>
<span>{{ row.title }}</span>
</template>
</el-table-column>
<el-table-column slot="options" label="操作" fixed="right" width="260" align="center">
<template slot-scope="{ row }">
<div class="table-options">
<el-button type="text" title="取消置顶" v-if="row.isTop==1" @click="setTop(row)">取消置顶</el-button>
<el-button type="text" title="置顶" v-else @click="setTop(row)">置顶</el-button>
<el-button type="text" title="取消发布" v-if="+row.status" @click="changeStatus(row)">取消发布</el-button>
<el-button type="text" v-else title="发布" @click="changeStatus(row)">发布</el-button>
<el-button type="text" title="查看" @click="hangeleDetail(row)"
:disabled="!permissions('app_appnewscenterinfo_detail')">查看
</el-button>
<el-button type="text" title="编辑" @click="handleEdit(row)"
:disabled="!permissions('app_appnewscenterinfo_edit')">编辑
</el-button>
<el-button type="text" title="删除" @click="handleDelete(row)"
:disabled="!permissions('app_appnewscenterinfo_del')">删除
</el-button>
<el-button type="text" title="分享" @click="handleCopyShare(row)">小程序链接</el-button>
</div>
</template>
</el-table-column>
</ai-table>
</template>
</ai-list>
</template>
<script>
import moment from "dayjs"
export default {
name: "newsList",
props: {
instance: Function,
dict: Object,
permissions: Function,
areaId: String
},
data() {
return {
tableData: [],
total: 0,
isClick: false,
page: {
current: 1,
size: 10
},
searchObj: {
title: '',
type: ''
},
}
},
computed: {
colConfigs() {
return [
{slot: 'title', label: '标题', width: 280},
{
prop: 'type', label: '类别', align: 'center',
render: (h, {row}) => {
return h('span', null, this.dict.getLabel('newsCenterType', +row.type))
}
},
{
prop: 'policyType', label: '类型', align: 'center',
render: (h, {row}) => {
return h('span', null, this.dict.getLabel('newsCenterPolicyType', +row.policyType))
}
},
{
prop: 'viewCount', label: '浏览/播放量', align: "center",
render: (h, {row}) => {
return h('span', null, row.viewCount >= 10000 ? ((row.viewCount / 10000).toFixed(2) + '万') : row.viewCount)
}
},
{prop: 'msgCount', label: '评论数', align: "center"},
{prop: 'areaName', label: '发布地区', align: 'center'},
{prop: 'createTime', label: '发布时间'},
{
prop: 'status', label: '发布状态', align: 'center',
render: (h, {row}) => {
return h('span', {
style: {
color: row.status ? this.$dict.getColor('newsCenterStatus', row.status) : 'auto'
}
}, this.$dict.getLabel('newsCenterStatus', row.status))
}
},
{slot: 'options', label: '操作'}
]
},
dropIcon() {
return this.isClick ? 'el-icon-arrow-up' : 'el-icon-arrow-down'
},
},
methods: {
/**
* 查看详情
* */
hangeleDetail(row) {
if (+row.type) {
this.$emit("goPage", {key: "videoDetail", row});
} else {
this.$emit("goPage", {key: "newsDetail", row});
}
},
/**
* 编辑
* */
handleEdit(row) {
if (+row.type) {
this.$emit("goPage", {key: "addVideo", row});
} else {
this.$emit("goPage", {key: "addArticle", row});
}
},
/**
* 修改新闻中心状态-发布、取消发布
* */
changeStatus(row) {
const msg = +row.status ? "是否取消发布" : "是否发布";
this.$confirm(msg).then(() => this.changeInfo(row));
},
/**
* 置顶新闻
* */
setTop(row) {
const msg = !row.topping ? "是否要置顶" : "是否要取消置顶"
this.$confirm(msg).then(() => this.setTopInfo(row));
},
/**
* 删除新闻
* */
handleDelete({id}) {
this.$confirm("是否要删除").then(() => this.deleteInfo(id));
},
resetSearch() {
this.searchObj.title = "";
this.searchObj.type = "";
this.getList();
},
/**
* 添加新闻、视频
* */
addNews(command) {
switch (command) {
case "video":
this.$emit('goPage', {key: "addVideo"});
break;
case "article":
this.$emit('goPage', {key: "addArticle"});
break;
}
},
/**
* 修改发布状态
* */
changeInfo({id, status}) {
const msg = +status ? "取消发布成功" : "发布成功";
status = +status ? 0 : 1;
this.instance.post(`/app/appnewscenterinfo/release?id=${id}&status=${status}`).then(() => {
this.$message.success(msg);
this.getList();
})
},
/**
* 置顶新闻
* */
setTopInfo(row) {
const msg = !row.topping ? "置顶成功" : "取消置顶成功";
this.instance.post(`/app/appnewscenterinfo/topping?id=${row.id}&areaId=${this.areaId}`).then(() => {
this.$message.success(msg);
this.getList();
})
},
/**
* 删除新闻
* @param id
*/
deleteInfo(id) {
this.instance.post(`/app/appnewscenterinfo/delete?ids=${id}`).then(() => {
this.$message.success("删除成功");
this.getList();
})
},
getList() {
this.instance.post(`/app/appnewscenterinfo/list`, null, {
params: {
...this.page,
...this.searchObj,
areaId: this.areaId
}
}).then(res => {
if (res && res.data) {
this.tableData = res.data.records.map(e => {
return {
...e,
createTime: +e.status ? moment(e.createTime).format("YYYY-MM-DD HH:mm") : ''
}
});
this.total = res.data.total;
}
})
},
handleCopyShare(row) {
navigator.clipboard.writeText(`/subPages/live/newsDetail?id=${row.id}`)
this.$message.success("小程序链接已复制!")
}
},
created() {
this.dict.load('newsCenterType', 'newsCenterStatus', 'newsCenterPolicyType').then(() => this.getList());
},
}
</script>
<style lang="scss" scoped>
.news-list {
height: 100%;
overflow: auto;
background: #f3f6f9;
::v-deep.has-gutter th:nth-child(1) div {
margin-left: 40px;
}
}
</style>