231 lines
4.5 KiB
Vue
231 lines
4.5 KiB
Vue
<script setup lang="ts">
|
|
// 引入状态管理
|
|
import { getCmsArticle } from '~/api/cms/cmsArticle';
|
|
|
|
const route = useRoute();
|
|
const router = useRouter();
|
|
import { getNavIdByParamsId } from '~/utils/common';
|
|
import { listCmsNavigation } from '~/api/cms/cmsNavigation';
|
|
import useFormData from '~/utils/use-form-data';
|
|
import type { CmsArticle } from '~/api/cms/cmsArticle/model';
|
|
import Content from '~/components/Content.vue';
|
|
|
|
definePageMeta({
|
|
layout: false
|
|
});
|
|
|
|
const articleId = ref();
|
|
|
|
// 配置信息
|
|
const { form, assignFields } = useFormData<CmsArticle>({
|
|
// 文章id
|
|
articleId: undefined,
|
|
// 文章模型
|
|
model: undefined,
|
|
// 文章标题
|
|
title: undefined,
|
|
// 分类类型
|
|
type: undefined,
|
|
// 展现方式
|
|
showType: undefined,
|
|
// 文章类型
|
|
categoryId: undefined,
|
|
// 文章分类
|
|
categoryName: undefined,
|
|
parentId: undefined,
|
|
// 封面图
|
|
image: undefined,
|
|
// 附件
|
|
files: undefined,
|
|
// 附件
|
|
fileList: [],
|
|
// 缩列图
|
|
thumbnail: undefined,
|
|
// 视频地址
|
|
video: undefined,
|
|
// 上传的文件类型
|
|
accept: undefined,
|
|
// 来源
|
|
source: undefined,
|
|
// 标签
|
|
tags: undefined,
|
|
// 文章内容
|
|
content: undefined,
|
|
// 文章编辑器
|
|
editor: undefined,
|
|
// 虚拟阅读量
|
|
virtualViews: undefined,
|
|
// 实际阅读量
|
|
actualViews: undefined,
|
|
// 访问权限
|
|
permission: undefined,
|
|
// 访问密码
|
|
password: undefined,
|
|
password2: undefined,
|
|
// 用户ID
|
|
userId: undefined,
|
|
// 用户昵称
|
|
nickname: undefined,
|
|
// 账号
|
|
username: undefined,
|
|
// 用户头像
|
|
// userAvatar: undefined,
|
|
author: undefined,
|
|
// 所属门店ID
|
|
shopId: undefined,
|
|
//
|
|
likes: undefined,
|
|
// 排序
|
|
sortNumber: undefined,
|
|
// 备注
|
|
comments: undefined,
|
|
// 状态
|
|
status: undefined,
|
|
// 创建时间
|
|
createTime: undefined,
|
|
// 更新时间
|
|
updateTime: undefined,
|
|
// 租户ID
|
|
tenantId: undefined,
|
|
// 租户名称
|
|
tenantName: undefined,
|
|
// 租户logo
|
|
logo: undefined,
|
|
// 详情页路径
|
|
detail: undefined
|
|
});
|
|
|
|
// 请求数据
|
|
const reload = async () => {
|
|
await getCmsArticle(articleId.value)
|
|
.then(data => {
|
|
assignFields(data);
|
|
})
|
|
.catch(() => {
|
|
navigateTo('/404');
|
|
});
|
|
|
|
// seo
|
|
useSeoMeta({
|
|
description: form?.comments,
|
|
keywords: form.title,
|
|
titleTemplate: `${form?.title}` + ' - %s'
|
|
});
|
|
};
|
|
|
|
watch(
|
|
() => route.params.id,
|
|
id => {
|
|
articleId.value = getNavIdByParamsId(id);
|
|
reload();
|
|
},
|
|
{ immediate: true }
|
|
);
|
|
</script>
|
|
|
|
<template>
|
|
<div class="page">
|
|
<h1 class="title">{{ form?.title }}</h1>
|
|
<div class="head"></div>
|
|
<!-- 内容组件 -->
|
|
<Content class="content text-lg py-5" :editor="form?.editor" :data="form.content" />
|
|
</div>
|
|
</template>
|
|
<style>
|
|
body {
|
|
font-size: 16px;
|
|
color: #000;
|
|
background-color: #999;
|
|
padding: 0;
|
|
margin: 0;
|
|
}
|
|
</style>
|
|
<style scoped lang="scss">
|
|
* {
|
|
box-sizing: border-box;
|
|
font-family: 'Helvetica', 'Hiragino Sans GB', 'Microsoft Yahei', sans-serif;
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
|
|
a {
|
|
color: #27ae60;
|
|
text-decoration: none;
|
|
}
|
|
|
|
img {
|
|
border: 0;
|
|
max-width: 100%;
|
|
}
|
|
|
|
table {
|
|
border: 1px solid #aaa;
|
|
border-collapse: collapse;
|
|
margin-top: 10px;
|
|
width: 100%;
|
|
}
|
|
|
|
table th {
|
|
background-color: #d5d5d5;
|
|
border: 1px solid #aaa;
|
|
padding: 5px 15px 5px 6px;
|
|
text-align: left;
|
|
vertical-align: baseline;
|
|
font-size: 14px;
|
|
}
|
|
|
|
table td {
|
|
background-color: #efefef;
|
|
border: 1px solid #aaa;
|
|
padding: 6px 15px 6px 6px;
|
|
vertical-align: text-top;
|
|
font-size: 12px;
|
|
}
|
|
|
|
.page {
|
|
background-color: #fff;
|
|
padding: 20px 40px;
|
|
width: 100%;
|
|
max-width: 1024px;
|
|
margin: 0 auto;
|
|
}
|
|
|
|
p {
|
|
margin: 0 0 20px 0;
|
|
line-height: 28px;
|
|
}
|
|
|
|
.title {
|
|
line-height: 50px;
|
|
font-size: 24px;
|
|
font-weight: 100;
|
|
font-family:
|
|
PingFang SC,
|
|
Verdana,
|
|
Helvetica Neue,
|
|
Microsoft Yahei,
|
|
Hiragino Sans GB,
|
|
Microsoft Sans Serif,
|
|
WenQuanYi Micro Hei,
|
|
sans-serif;
|
|
text-align: center;
|
|
}
|
|
|
|
.head {
|
|
line-height: 50px;
|
|
margin: 0 0 40px 0;
|
|
border-bottom: 1px dashed #ccc;
|
|
font-size: 14px;
|
|
text-align: center;
|
|
color: #666;
|
|
}
|
|
|
|
.foot {
|
|
padding: 20px 0;
|
|
line-height: 24px;
|
|
border-top: 1px dashed #ccc;
|
|
font-size: 14px;
|
|
color: #666;
|
|
}
|
|
</style>
|