You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
251 lines
8.3 KiB
251 lines
8.3 KiB
<!-- @format -->
|
|
|
|
<template>
|
|
<ns-view-list-table ref="nsTableRef" v-bind="tableConfig" rowKey="uuid" />
|
|
</template>
|
|
|
|
<script lang="ts">
|
|
import { defineComponent, ref } from 'vue';
|
|
import { dateUtil } from '/nerv-lib/saas';
|
|
import { useRouter } from 'vue-router';
|
|
import { http } from '/nerv-lib/util/http';
|
|
import { NsMessage } from '/nerv-lib/component/message';
|
|
|
|
export default defineComponent({
|
|
name: 'ArticleIndex',
|
|
setup() {
|
|
const router = useRouter();
|
|
const nsTableRef = ref();
|
|
|
|
const request = (api: string, params: object) => {
|
|
http.post(api, params).then(() => {
|
|
NsMessage.success('操作成功');
|
|
nsTableRef.value.nsTableRef.reload();
|
|
});
|
|
};
|
|
const tableConfig = {
|
|
title: '文章管理',
|
|
api: {
|
|
method: 'POST',
|
|
url: '/api/content/objs/admin/cms/bg/article/pageList',
|
|
},
|
|
params: {
|
|
page: 0,
|
|
pageSize: 10,
|
|
folderCode: 'mobileArticleManager',
|
|
},
|
|
formConfig: {
|
|
schemas: [
|
|
{
|
|
field: 'titleLike',
|
|
label: '文章标题',
|
|
component: 'NsInput',
|
|
componentProps: {
|
|
placeholder: '请输入',
|
|
},
|
|
},
|
|
{
|
|
field: 'articleStatus',
|
|
label: '状态',
|
|
component: 'NsSelect',
|
|
defaultValue: '',
|
|
componentProps: {
|
|
placeholder: '请选择',
|
|
options: [
|
|
{ label: '全部', value: '' },
|
|
{ label: '未上架', value: 1 },
|
|
{ label: '审核中', value: 2 },
|
|
{ label: '已上架', value: 3 },
|
|
{ label: '未通过', value: 6 },
|
|
],
|
|
},
|
|
},
|
|
{
|
|
field: 'tagUuidList',
|
|
label: '文章标签',
|
|
component: 'nsSelectApi',
|
|
componentProps: {
|
|
params: { folderCode: 'mobileArticleManager' },
|
|
mode: 'multiple',
|
|
api: '/api/content/objs/admin/cms/bg/articleTag/allList',
|
|
autoSelectFirst: false,
|
|
resultField: 'data',
|
|
labelField: 'tagName',
|
|
valueField: 'uuid',
|
|
immediate: true,
|
|
placeholder: '请选择',
|
|
showSearch: true,
|
|
filterOption: (input, option) => {
|
|
return option.tagName.indexOf(input) >= 0;
|
|
},
|
|
dropdownReload: true,
|
|
},
|
|
},
|
|
],
|
|
},
|
|
headerActions: [
|
|
{
|
|
label: '新增文章',
|
|
name: 'ArticleAdd',
|
|
type: 'primary',
|
|
handle: ({}, name) => {
|
|
router.push({ name, query: {} });
|
|
},
|
|
},
|
|
],
|
|
rowSelection: null,
|
|
columns: [
|
|
{
|
|
title: '文章ID',
|
|
dataIndex: 'articleCode',
|
|
textNumber: 5,
|
|
customRender: ({ record: { articleCommonVO }, column }) => {
|
|
return articleCommonVO[column.dataIndex];
|
|
},
|
|
},
|
|
{
|
|
title: '文章标题',
|
|
dataIndex: 'title',
|
|
textNumber: 5,
|
|
customRender: ({ record: { articleCommonVO }, column }) => {
|
|
return articleCommonVO[column.dataIndex];
|
|
},
|
|
},
|
|
{
|
|
title: '文章标签',
|
|
dataIndex: 'tagNameList',
|
|
textNumber: 5,
|
|
textEllipsis: true,
|
|
customRender: ({ record: { tagNameList }, column }) => {
|
|
return (tagNameList && tagNameList.join(',')) || '-';
|
|
},
|
|
},
|
|
{
|
|
title: '信息来源',
|
|
dataIndex: 'articleSource',
|
|
textNumber: 5,
|
|
customRender: ({ record: { articleCommonVO }, column }) => {
|
|
return articleCommonVO[column.dataIndex];
|
|
},
|
|
},
|
|
{
|
|
title: '上架时间',
|
|
dataIndex: 'publishTime',
|
|
textNumber: 10,
|
|
customRender: ({ record: { articleCommonVO }, column }) => {
|
|
return articleCommonVO[column.dataIndex] || '-';
|
|
},
|
|
},
|
|
{
|
|
title: '状态',
|
|
dataIndex: 'articleStatus',
|
|
textNumber: 5,
|
|
customCell: ({ articleCommonVO: { articleStatus } }) => {
|
|
return {
|
|
style: { color: articleStatus == 3 ? 'green' : articleStatus == 6 ? 'red' : '' },
|
|
};
|
|
},
|
|
customRender: ({ record: { articleCommonVO }, column }) => {
|
|
return ['', '未上架', '待审核', '已上架', '', '', '未通过'][
|
|
articleCommonVO[column.dataIndex]
|
|
];
|
|
},
|
|
},
|
|
{
|
|
title: '是否置顶',
|
|
textNumber: 4,
|
|
dataIndex: 'isTop',
|
|
customRender: ({ record: { articleCommonVO }, column }) => {
|
|
return ['否', '是'][articleCommonVO[column.dataIndex]];
|
|
},
|
|
},
|
|
|
|
{
|
|
title: '创建人',
|
|
dataIndex: 'createUserName',
|
|
textNumber: 5,
|
|
customRender: ({ record: { articleCommonVO }, column }) => {
|
|
return articleCommonVO[column.dataIndex];
|
|
},
|
|
},
|
|
{
|
|
title: '创建时间',
|
|
dataIndex: 'createTime',
|
|
// textNumber: 9,
|
|
customRender: ({ record: { articleCommonVO }, column }) => {
|
|
return articleCommonVO[column.dataIndex];
|
|
},
|
|
},
|
|
],
|
|
columnActions: {
|
|
title: '操作',
|
|
autoMergeAction: false,
|
|
actionNumber: 3,
|
|
actions: [
|
|
{
|
|
label: '查看',
|
|
name: 'ArticleDetail',
|
|
ifShow: ({ articleCommonVO: { articleStatus } }) => [2, 3].includes(articleStatus),
|
|
handle: ({ articleCommonVO: { uuid } }, name) => {
|
|
router.push({ name, query: { uuid } });
|
|
},
|
|
},
|
|
{
|
|
label: '编辑',
|
|
name: 'ArticleEdit',
|
|
ifShow: ({ articleCommonVO: { articleStatus } }) => [1, 6].includes(articleStatus),
|
|
handle: ({ articleCommonVO: { uuid } }, name) => {
|
|
router.push({ name, query: { uuid } });
|
|
},
|
|
},
|
|
{
|
|
label: '置顶',
|
|
name: 'ArticleManageTop',
|
|
confirm: true,
|
|
ifShow: ({ articleCommonVO: { articleStatus, isTop } }) =>
|
|
articleStatus == 3 && isTop == 0,
|
|
handle: ({ articleCommonVO: { uuid } }, name) => {
|
|
request('/api/content/objs/admin/cms/bg/article/top', { uuid });
|
|
},
|
|
},
|
|
{
|
|
label: '取消置顶',
|
|
name: 'ArticleManageCancleTop',
|
|
confirm: true,
|
|
ifShow: ({ articleCommonVO: { articleStatus, isTop } }) =>
|
|
articleStatus == 3 && isTop == 1,
|
|
handle: ({ articleCommonVO: { uuid } }, name) => {
|
|
request('/api/content/objs/admin/cms/bg/article/top', { uuid });
|
|
},
|
|
},
|
|
{
|
|
label: '删除',
|
|
dynamicParams: 'uuid',
|
|
name: 'ArticleManageDelete',
|
|
confirm: true,
|
|
ifShow: ({ articleCommonVO: { articleStatus } }) => [1, 6].includes(articleStatus),
|
|
handle: ({ articleCommonVO: { uuid } }, name) => {
|
|
request('/api/content/objs/admin/cms/bg/article/batchDel', { uuids: [uuid] });
|
|
},
|
|
},
|
|
{
|
|
label: '下架',
|
|
dynamicParams: 'uuid',
|
|
name: 'ArticleManageReaded',
|
|
confirm: true,
|
|
ifShow: ({ articleCommonVO: { articleStatus } }) => [3].includes(articleStatus),
|
|
handle: ({ articleCommonVO: { uuid } }, name) => {
|
|
request('/api/content/objs/admin/cms/bg/article/withdrawn', { uuid });
|
|
},
|
|
},
|
|
],
|
|
},
|
|
};
|
|
return {
|
|
tableConfig,
|
|
nsTableRef,
|
|
};
|
|
},
|
|
});
|
|
</script>
|
|
<style lang="less" scoped></style>
|
|
|