覆盖文件
This commit is contained in:
parent
9f7b0a5454
commit
7ae9cc1ca6
14
.env
14
.env
@ -2,23 +2,23 @@
|
||||
VITE_API_PREFIX = '/api'
|
||||
|
||||
# 接口地址,可在其它环境配置文件进行覆盖
|
||||
VITE_API_URL = 'http://localhost:10010'
|
||||
VITE_API_URL = 'http://82.157.20.36:10020'
|
||||
|
||||
# 静态资源地址
|
||||
VITE_RESOURCE_PREFIX = 'http://localhost:10010/resource'
|
||||
VITE_RESOURCE_PREFIX = '/resource'
|
||||
|
||||
# 站点配置
|
||||
# - 站点标题
|
||||
VITE_SITE_TITLE = '天津市南开区智慧云平台'
|
||||
VITE_SITE_TITLE = '天津市南开区民政局'
|
||||
# - 站点副标题
|
||||
VITE_SITE_SUB_TITLE = ''
|
||||
# - 主办单位
|
||||
VITE_SITE_ORGANIZATION = '天津市南开区民政局'
|
||||
# - 备案号
|
||||
VITE_SITE_ICP = '津ICP备2021010010号-3'
|
||||
VITE_SITE_ICP = '津ICP备13005196号-1'
|
||||
# - 地址
|
||||
VITE_SITE_ADDRESS = '天津市南开区'
|
||||
VITE_SITE_ADDRESS = '天津市南开区红旗南路263号'
|
||||
|
||||
# SEO配置
|
||||
VITE_SEO_KEYWORDS = '天津市南开区民政局'
|
||||
VITE_SEO_DESCRIPTION = '天津市南开区民政局'
|
||||
VITE_SEO_KEYWORDS = '天津市,民政局,南开区民政局'
|
||||
VITE_SEO_DESCRIPTION = '天津市、民政局、南开区民政局'
|
||||
|
@ -1,4 +1,4 @@
|
||||
VITE_APP_ENV = 'production'
|
||||
|
||||
# 接口地址
|
||||
VITE_API_URL = 'http://localhost:10010/'
|
||||
VITE_API_URL = 'http://82.157.20.36:10020/'
|
||||
|
@ -1,4 +1,4 @@
|
||||
VITE_APP_ENV = 'staging'
|
||||
|
||||
# 接口地址
|
||||
VITE_API_URL = 'http://localhost:10010/'
|
||||
VITE_API_URL = 'http://82.157.20.36:10020/'
|
||||
|
@ -1,4 +1,3 @@
|
||||
@import "variables";
|
||||
html body {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
@ -8,7 +7,7 @@ html body {
|
||||
font-family: var(--font-family-base);
|
||||
min-width: var(--body-min-width);
|
||||
.content-wrap {
|
||||
max-width: var(--page-width);
|
||||
width: var(--page-width);
|
||||
margin: 0 auto;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
@ -63,22 +62,3 @@ html body {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
// 首页内容宽度
|
||||
@media (max-width: $--mobile-max-width) {
|
||||
html body {
|
||||
--page-width: 100%;
|
||||
--body-min-width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
// 移动端
|
||||
@media (max-width: $--mobile-max-width) {
|
||||
html body {
|
||||
// 边距
|
||||
--gap: 15px;
|
||||
--gap-mini: 8px;
|
||||
--gap-midele: 20px;
|
||||
--gap-large: 25px;
|
||||
--gap-huge: 30px;
|
||||
}
|
||||
}
|
@ -31,10 +31,4 @@ body {
|
||||
|
||||
// 覆盖element-plus的默认字体大小
|
||||
--el-font-size-base: var(--font-size-base);
|
||||
// 边距
|
||||
--gap: 20px;
|
||||
--gap-mini: 10px;
|
||||
--gap-midele: 30px;
|
||||
--gap-large: 40px;
|
||||
--gap-huge: 50px;
|
||||
}
|
||||
|
@ -3,7 +3,7 @@
|
||||
<li v-for="article in articles" :key="article.uid">
|
||||
<nuxt-link :to="`/article/${article.uid}`" target="_blank">
|
||||
<span class="title" v-html="getTitle(article)"></span>
|
||||
<span v-if="article.updatedAt" class="date">{{ article.updatedAt }}</span>
|
||||
<span class="date">{{ article.updatedAt }}</span>
|
||||
</nuxt-link>
|
||||
</li>
|
||||
</ul>
|
||||
@ -56,7 +56,6 @@ ul.article-list {
|
||||
padding: 15px 10px 15px 25px;
|
||||
color: var(--font-color);
|
||||
text-decoration: none;
|
||||
gap: 20px;
|
||||
&:hover {
|
||||
color: var(--primary-color);
|
||||
}
|
||||
@ -78,6 +77,7 @@ ul.article-list {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
padding-right: 20px;
|
||||
// 关键字
|
||||
:deep(em) {
|
||||
font-style: normal;
|
||||
|
@ -27,7 +27,6 @@ export default {
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
@import "@/assets/style/variables";
|
||||
.article-preview {
|
||||
--article-title: 30px;
|
||||
--article-content-font-size: 16px;
|
||||
@ -39,7 +38,7 @@ export default {
|
||||
font-size: var(--article-title);
|
||||
line-height: 50px;
|
||||
font-weight: bold;
|
||||
padding: 0 var(--gap);
|
||||
padding: 0 20px;
|
||||
word-break: break-all;
|
||||
}
|
||||
// 文章信息
|
||||
@ -47,11 +46,11 @@ export default {
|
||||
color: var(--color-gray);
|
||||
line-height: 36px;
|
||||
border-bottom: 1px solid var(--border-color);
|
||||
padding: 0 var(--gap);
|
||||
padding: 0 20px;
|
||||
}
|
||||
// 文章内容
|
||||
article {
|
||||
padding: 0 var(--gap-midele);
|
||||
padding: 0 30px;
|
||||
overflow: hidden;
|
||||
font-size: var(--article-content-font-size);
|
||||
color: var(--article-content-font-color);
|
||||
@ -61,31 +60,4 @@ export default {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: $--mobile-max-width) {
|
||||
.article-preview {
|
||||
--article-title: 20px;
|
||||
// 标题
|
||||
h2 {
|
||||
font-size: var(--article-title);
|
||||
line-height: 25px;
|
||||
padding: 20px;
|
||||
margin: 0;
|
||||
}
|
||||
// 文章信息
|
||||
.article-information {
|
||||
line-height: 25px;
|
||||
padding: 0 10px;
|
||||
}
|
||||
// 文章内容
|
||||
article {
|
||||
padding: 10px;
|
||||
font-size: var(--article-content-font-size);
|
||||
line-height: 1.5;
|
||||
:deep(iframe) {
|
||||
width: 100%!important;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
@ -10,7 +10,7 @@
|
||||
class="swiper-container"
|
||||
ref="swiper"
|
||||
:speed="500"
|
||||
:slidesPerView="numberColumns"
|
||||
:slidesPerView="4"
|
||||
:loop="true"
|
||||
:autoplay="{
|
||||
delay: 1500,
|
||||
@ -53,10 +53,7 @@ export default {
|
||||
computed: {
|
||||
// 获取图标
|
||||
getIcons () {
|
||||
if (
|
||||
this.icons.length < this.numberColumns + 1 ||
|
||||
this.icons.length > this.numberColumns + 3
|
||||
) {
|
||||
if (this.icons.length < 5 || this.icons.length > 7) {
|
||||
return this.icons
|
||||
}
|
||||
return [...this.icons, ...this.icons]
|
||||
@ -64,7 +61,6 @@ export default {
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
numberColumns: 4,
|
||||
modules: []
|
||||
}
|
||||
},
|
||||
@ -72,45 +68,20 @@ export default {
|
||||
getImageURL
|
||||
},
|
||||
created () {
|
||||
if (this.$device.isMobile) {
|
||||
this.numberColumns = 2
|
||||
}
|
||||
this.modules = [Autoplay]
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import "@/assets/style/variables";
|
||||
.special-column {
|
||||
--height: 100px;
|
||||
--img-border-radius: 20px;
|
||||
// 标题宽度
|
||||
--title-width: 34px
|
||||
}
|
||||
@media (max-width: $--mobile-max-width) {
|
||||
.special-column {
|
||||
--height: 50px;
|
||||
--img-border-radius: 10px;
|
||||
// 标题宽度
|
||||
--title-width: 40px
|
||||
}
|
||||
.title-wrap > label{
|
||||
overflow: hidden;
|
||||
font-size: 12px!important;
|
||||
text-overflow: ellipsis;
|
||||
-webkit-line-clamp: 2;
|
||||
-webkit-box-orient: vertical;
|
||||
}
|
||||
}
|
||||
.special-column {
|
||||
display: flex;
|
||||
// 标题
|
||||
.title-wrap {
|
||||
height: var(--height);
|
||||
width: var(--title-width);
|
||||
height: 100px;
|
||||
width: 40px;
|
||||
margin: auto 20px auto 0;
|
||||
padding: 0 var(--gap-mini);
|
||||
padding: 0 14px;
|
||||
background: linear-gradient(90deg, var(--primary-color-light) 0%, var(--primary-color) 100%);
|
||||
border-radius: 10px;
|
||||
text-align: center;
|
||||
@ -139,10 +110,13 @@ export default {
|
||||
// 轮播列表
|
||||
.swiper-wrap {
|
||||
width: calc(100% - 80px);
|
||||
height: calc(50% - 10px);
|
||||
height: 100px;
|
||||
flex-grow: 1;
|
||||
overflow: hidden;
|
||||
// 轮播项
|
||||
.swiper-slide {
|
||||
// 给定最大宽度,避免swiper没有计算出width时图片临时性展示过大
|
||||
max-width: 25%;
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
padding: 0 10px;
|
||||
@ -155,14 +129,13 @@ export default {
|
||||
}
|
||||
& > a {
|
||||
display: block;
|
||||
height: 100px;
|
||||
cursor: pointer;
|
||||
img {
|
||||
width: 90%;
|
||||
height: var(--height);
|
||||
border-radius: var(--img-border-radius);
|
||||
margin-left: var(--gap);
|
||||
border-radius: 20px;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
<div v-if="pageCount > 1" class="pagination">
|
||||
<div class="pagination-content">
|
||||
<!-- 总数 -->
|
||||
<span class="pagination-info d-none d-sm-block">共 <em>{{ modelValue.total }}</em> 条</span>
|
||||
<span class="pagination-info">共 <em>{{ modelValue.total }}</em> 条</span>
|
||||
<ul>
|
||||
<!-- 上一页 -->
|
||||
<li :class="{ disabled: modelValue.page <= 1 }">
|
||||
@ -58,7 +58,7 @@
|
||||
</li>
|
||||
</ul>
|
||||
<!-- 跳转 -->
|
||||
<div class="pagination-info pagination-jump d-none d-sm-block">
|
||||
<div class="pagination-info pagination-jump">
|
||||
前往
|
||||
<el-input-number
|
||||
v-model="targetPage"
|
||||
@ -96,7 +96,7 @@ export default {
|
||||
}
|
||||
},
|
||||
// 最多一次性展示多少个页码
|
||||
baseLimitPageCount: {
|
||||
limitPageCount: {
|
||||
type: Number,
|
||||
default: 5
|
||||
}
|
||||
@ -107,14 +107,6 @@ export default {
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
// 限制页数
|
||||
limitPageCount () {
|
||||
// 移动端时
|
||||
if (this.$device.isMobile) {
|
||||
return 3
|
||||
}
|
||||
return this.baseLimitPageCount
|
||||
},
|
||||
// 最大同时展示的页码数量,其中4 = 首页 + 页面控制按钮 + 尾页 + 页面控制按钮
|
||||
maxPageCount () {
|
||||
return this.limitPageCount + 4
|
||||
|
@ -1,13 +1,6 @@
|
||||
<template>
|
||||
<div class="pop-up-select">
|
||||
<div class="pop-up-select" @mouseover="active = true" @mouseout="active = false">
|
||||
<span>{{ title }} <el-icon><ElIconArrowUpBold/></el-icon></span>
|
||||
<!-- 事件遮罩 -->
|
||||
<div
|
||||
class="event-mask"
|
||||
@click="active = !active"
|
||||
v-on:[mouseover]="active = true"
|
||||
@mouseout="active = false"
|
||||
/>
|
||||
<ul
|
||||
:class="{ active: active, leave: !active }"
|
||||
@mouseover="active = true"
|
||||
@ -31,11 +24,6 @@ export default {
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
mouseover () {
|
||||
return this.$device.isMobile ? '' : 'mouseover'
|
||||
}
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
active: false
|
||||
@ -45,8 +33,6 @@ export default {
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
@import "@/assets/style/variables";
|
||||
|
||||
.pop-up-select {
|
||||
position: relative;
|
||||
height: 40px;
|
||||
@ -54,20 +40,12 @@ export default {
|
||||
border: 1px solid #e4e7ed;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
.event-mask {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
||||
&>span {
|
||||
width: 100%;
|
||||
padding: 5px 20px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
white-space: nowrap;
|
||||
.el-icon {
|
||||
color: #aaa;
|
||||
font-size: 18px;
|
||||
@ -118,12 +96,4 @@ export default {
|
||||
max-height: 300px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: $--mobile-max-width) {
|
||||
.pop-up-select {
|
||||
span {
|
||||
padding: 5px 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
@ -56,7 +56,6 @@ export default {
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
@import "@/assets/style/variables";
|
||||
.segment-selector {
|
||||
font-size: 14px;
|
||||
display: flex;
|
||||
@ -74,7 +73,6 @@ export default {
|
||||
flex-wrap: wrap;
|
||||
line-height: 30px;
|
||||
gap: 5px;
|
||||
margin-bottom: 8px;
|
||||
li {
|
||||
height: 30px;
|
||||
padding: 0 10px;
|
||||
@ -90,21 +88,4 @@ export default {
|
||||
}
|
||||
}
|
||||
}
|
||||
@media (max-width: $--mobile-max-width) {
|
||||
.segment-selector {
|
||||
font-size: 12px;
|
||||
label {
|
||||
width: 60px;
|
||||
font-size: 12px;
|
||||
line-height: 27px;
|
||||
}
|
||||
ul {
|
||||
li {
|
||||
padding: 0 7px;
|
||||
height: 27px;
|
||||
line-height: 27px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
@ -4,9 +4,8 @@
|
||||
<img src="/images/link.png" alt="">
|
||||
<h3>网站导航</h3>
|
||||
</div>
|
||||
<ul class="row">
|
||||
<ul>
|
||||
<li
|
||||
class="col-6 col-lg-3"
|
||||
v-for="(title, index) in navList"
|
||||
v-show="data[index] != null && data[index].length > 0"
|
||||
:key="title"
|
||||
@ -32,14 +31,13 @@ export default {
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
navList: ['国家级链接', '省级链接', '市级链接', '其他链接']
|
||||
navList: ['国家级链接', '市级链接', '友情链接', '其他链接']
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
@import "@/assets/style/variables";
|
||||
.website-nav-wrap {
|
||||
margin: 0 auto;
|
||||
display: flex;
|
||||
@ -93,22 +91,9 @@ export default {
|
||||
}
|
||||
}
|
||||
}
|
||||
&.row {
|
||||
--bs-gutter-x: 1rem;
|
||||
gap: 10px 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@media (max-width: $--mobile-max-width) {
|
||||
.title-wrap {
|
||||
width: 20px;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
h3 {
|
||||
padding: 2px!important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
:deep(.el-dropdown-menu__item) {
|
||||
min-width: 220px;
|
||||
a {
|
||||
|
@ -64,7 +64,7 @@ export default {
|
||||
// 搜索按钮
|
||||
:deep(.el-input-group__append) {
|
||||
padding: 0 10px;
|
||||
width: 75px;
|
||||
width: 65px;
|
||||
background-color: var(--primary-color-dark-deep);
|
||||
box-shadow: none;
|
||||
font-size: var(--font-size-base);
|
||||
|
@ -29,11 +29,10 @@ export default {
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
@import "@/assets/style/variables";
|
||||
.web-footer {
|
||||
height: 100%;
|
||||
background-color: var(--primary-color-dark);
|
||||
padding: var(--gap-huge) 0;
|
||||
padding: 50px 0;
|
||||
color: var(--color-white);
|
||||
.content-wrap {
|
||||
text-align: center;
|
||||
@ -56,12 +55,4 @@ export default {
|
||||
}
|
||||
}
|
||||
}
|
||||
@media (max-width: $--mobile-max-width) {
|
||||
.web-footer {
|
||||
.content-wrap {
|
||||
margin-top: 0;
|
||||
font-size: 12px!important;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
@ -1,15 +1,11 @@
|
||||
<template>
|
||||
<div class="web-header">
|
||||
<!-- 菜单窗口 d-block d-sm-none":在xs(默认宽度576px)展示 -->
|
||||
<div class="categories-window-wrap d-block d-sm-none">
|
||||
<CategoriesStarterButton :categories="categories"/>
|
||||
</div>
|
||||
<div class="content-wrap row">
|
||||
<div class="title-wrap col-12 col-lg-6">
|
||||
<div class="content-wrap">
|
||||
<div class="title-wrap">
|
||||
<h1>{{ title }}</h1>
|
||||
<h2>{{ subTitle }}</h2>
|
||||
</div>
|
||||
<div class="search-wrap col-12 col-lg-6">
|
||||
<div class="search-wrap">
|
||||
<SearchInput/>
|
||||
</div>
|
||||
</div>
|
||||
@ -18,16 +14,10 @@
|
||||
|
||||
<script>
|
||||
import SearchInput from './SearchInput'
|
||||
import CategoriesStarterButton from './CategoriesStarterButton.vue'
|
||||
|
||||
export default {
|
||||
name: 'WebHeader',
|
||||
components: { CategoriesStarterButton, SearchInput },
|
||||
props: {
|
||||
categories: {
|
||||
required: true
|
||||
}
|
||||
},
|
||||
components: { SearchInput },
|
||||
async setup () {
|
||||
return {
|
||||
title: import.meta.env.VITE_SITE_TITLE,
|
||||
@ -38,14 +28,12 @@ export default {
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
@import "@/assets/style/variables";
|
||||
.web-header {
|
||||
padding: 50px 0;
|
||||
background: linear-gradient(to bottom, var(--primary-color), var(--primary-color-light));
|
||||
color: var(--color-white);
|
||||
position: relative;
|
||||
.content-wrap {
|
||||
max-width: var(--page-width);
|
||||
width: var(--page-width);
|
||||
margin: 0 auto;
|
||||
display: flex;
|
||||
align-items: flex-end;
|
||||
@ -53,7 +41,6 @@ export default {
|
||||
// 标题
|
||||
.title-wrap {
|
||||
flex-grow: 1;
|
||||
text-align: center;
|
||||
h1,h2 {
|
||||
margin: 0;
|
||||
}
|
||||
@ -62,7 +49,7 @@ export default {
|
||||
}
|
||||
h2 {
|
||||
color: var(--primary-color-light-deep);
|
||||
font-size: var(--font-size-base)
|
||||
font-size: 16px;
|
||||
}
|
||||
a {
|
||||
color: var(--primary-color-light-deep);
|
||||
@ -71,26 +58,6 @@ export default {
|
||||
// 搜索
|
||||
.search-wrap {
|
||||
flex-shrink: 0;
|
||||
text-align: center;
|
||||
margin-top: 10px;
|
||||
}
|
||||
}
|
||||
.categories-window-wrap {
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
left: 10px;
|
||||
}
|
||||
}
|
||||
@media (max-width: $--mobile-max-width) {
|
||||
.web-header {
|
||||
background-size: auto 100%;
|
||||
}
|
||||
.title-wrap {
|
||||
h1 {
|
||||
font-size: 26px!important;
|
||||
}
|
||||
h2 {
|
||||
font-size: 12px!important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
27
kit.json
Normal file
27
kit.json
Normal file
@ -0,0 +1,27 @@
|
||||
{
|
||||
"name":"我的项目-eva-cms-website-gov",
|
||||
"space":"Eva",
|
||||
"service":{
|
||||
"eva-cms-website-gov":{
|
||||
"version":"1.0.0.3",
|
||||
"variables":[
|
||||
{
|
||||
"name":"title",
|
||||
"inputType":"input",
|
||||
"value":"nankaiWebSite"
|
||||
},
|
||||
{
|
||||
"name":"subTitle",
|
||||
"inputType":"input",
|
||||
"value":"南开民政局"
|
||||
},
|
||||
{
|
||||
"name":"_plugins",
|
||||
"inputType":"_plugins",
|
||||
"value":[]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"plugins":{}
|
||||
}
|
@ -6,11 +6,8 @@
|
||||
<Meta type="description" :content="siteConfig.description"/>
|
||||
</Head>
|
||||
<header>
|
||||
<WebHeader :categories="categories"/>
|
||||
<!-- 栏目树 d-none d-sm-block:在xs(默认宽度576px)隐藏 -->
|
||||
<div class="d-none d-sm-block">
|
||||
<Categories :categories="categories"/>
|
||||
</div>
|
||||
<WebHeader/>
|
||||
<Categories :categories="categories"/>
|
||||
</header>
|
||||
<main>
|
||||
<!-- 修改el语言为中文 -->
|
||||
@ -18,13 +15,13 @@
|
||||
<div class="content-wrap category-detail-wrap">
|
||||
<!-- 页面面包屑 -->
|
||||
<PageBreadCrumb :data="breadcrumbs"/>
|
||||
<div class="detail-wrap__body row">
|
||||
<!-- 栏目树 d-none d-sm-block:在xs(默认宽度576px)隐藏 -->
|
||||
<div class="d-none d-sm-block detail-wrap__categories col-4 col-lg-3">
|
||||
<div class="detail-wrap__body">
|
||||
<!-- 栏目树 -->
|
||||
<div class="detail-wrap__categories">
|
||||
<CategoryTree :data="subCategories" :selected="selectedCategory.uid"/>
|
||||
</div>
|
||||
<!-- 主要内容 -->
|
||||
<div class="detail-wrap__content col-12 col-lg-9">
|
||||
<div class="detail-wrap__content">
|
||||
<slot></slot>
|
||||
</div>
|
||||
</div>
|
||||
@ -97,11 +94,8 @@ export default {
|
||||
// 内容
|
||||
.detail-wrap__content {
|
||||
flex-grow: 1;
|
||||
padding: 0 var(--gap) 10px 0;
|
||||
padding: 10px 30px;
|
||||
overflow: hidden;
|
||||
&.col-12 {
|
||||
padding: 0 10px;
|
||||
}
|
||||
& > h2 {
|
||||
font-size: var(--font-size-large);
|
||||
margin: 0;
|
||||
|
@ -6,11 +6,8 @@
|
||||
<Meta type="description" :content="siteConfig.description"/>
|
||||
</Head>
|
||||
<header>
|
||||
<WebHeader :categories="categories"/>
|
||||
<!-- 栏目树 d-none d-sm-block:在xs(默认宽度576px)隐藏 -->
|
||||
<div class="d-none d-sm-block">
|
||||
<Categories :categories="categories"/>
|
||||
</div>
|
||||
<WebHeader/>
|
||||
<Categories :categories="categories"/>
|
||||
</header>
|
||||
<main>
|
||||
<!-- 修改el语言为中文 -->
|
||||
|
@ -4,10 +4,6 @@ export default defineNuxtConfig({
|
||||
compatibilityDate: '2024-07-10',
|
||||
devtools: { enabled: true },
|
||||
sitemap,
|
||||
devServer: {
|
||||
host: '0.0.0.0',
|
||||
port: 3000,
|
||||
},
|
||||
app: {
|
||||
// head配置
|
||||
head: {
|
||||
@ -29,9 +25,7 @@ export default defineNuxtConfig({
|
||||
// 全局样式
|
||||
'@/assets/style/app.scss',
|
||||
'@/assets/style/theme.scss',
|
||||
'@/public/icons/cms/iconfont.css',
|
||||
// 引入Bootstrap的样式文件
|
||||
'bootstrap/dist/css/bootstrap.css'
|
||||
'@/public/icons/cms/iconfont.css'
|
||||
],
|
||||
vite: {
|
||||
css: {
|
||||
@ -51,12 +45,12 @@ export default defineNuxtConfig({
|
||||
changeOrigin: true,
|
||||
rewrite: (path:any) => path.replace(new RegExp(`^${import.meta.env.VITE_API_PREFIX}`), '')
|
||||
},
|
||||
// 资源代理
|
||||
[import.meta.env.VITE_RESOURCE_PREFIX]: {
|
||||
target: `${import.meta.env.VITE_API_URL}${import.meta.env.VITE_RESOURCE_PREFIX}`,
|
||||
changeOrigin: true,
|
||||
rewrite: (path:any) => path.replace(new RegExp(`^${import.meta.env.VITE_RESOURCE_PREFIX}`), '')
|
||||
}
|
||||
// // 资源代理
|
||||
// [import.meta.env.VITE_RESOURCE_PREFIX]: {
|
||||
// target: `${import.meta.env.VITE_API_URL}${import.meta.env.VITE_RESOURCE_PREFIX}`,
|
||||
// changeOrigin: true,
|
||||
// rewrite: (path:any) => path.replace(new RegExp(`^${import.meta.env.VITE_RESOURCE_PREFIX}`), '')
|
||||
// }
|
||||
},
|
||||
}
|
||||
},
|
||||
@ -67,8 +61,7 @@ export default defineNuxtConfig({
|
||||
// 导入element-plus图标
|
||||
'@pinia/nuxt',
|
||||
'nuxt-swiper',
|
||||
'@nuxtjs/sitemap',
|
||||
'@nuxtjs/device'
|
||||
'@nuxtjs/sitemap'
|
||||
],
|
||||
plugins: [
|
||||
'~/plugins/nprogress.js',
|
||||
|
39
package-lock.json
generated
39
package-lock.json
generated
@ -8,11 +8,9 @@
|
||||
"hasInstallScript": true,
|
||||
"dependencies": {
|
||||
"@element-plus/icons-vue": "^2.3.1",
|
||||
"@nuxtjs/device": "^3.2.4",
|
||||
"@nuxtjs/sitemap": "^6.1.2",
|
||||
"@pinia/nuxt": "^0.5.3",
|
||||
"axios": "^1.7.4",
|
||||
"bootstrap": "^5.3.0-alpha1",
|
||||
"element-plus": "^2.8.0",
|
||||
"nprogress": "^0.2.0",
|
||||
"nuxt": "^3.12.4",
|
||||
@ -1595,14 +1593,6 @@
|
||||
"@jridgewell/sourcemap-codec": "^1.5.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@nuxtjs/device": {
|
||||
"version": "3.2.4",
|
||||
"resolved": "https://registry.npmmirror.com/@nuxtjs/device/-/device-3.2.4.tgz",
|
||||
"integrity": "sha512-jIvN6QeodBNrUrL/1FCHk4bebsiLsGHlJd8c/m2ksLrGY4IZ0npA8IYhDTdYV92epGxoe8+3iZOzCjav+6TshQ==",
|
||||
"dependencies": {
|
||||
"defu": "^6.1.4"
|
||||
}
|
||||
},
|
||||
"node_modules/@nuxtjs/sitemap": {
|
||||
"version": "6.1.2",
|
||||
"resolved": "https://registry.npmmirror.com/@nuxtjs/sitemap/-/sitemap-6.1.2.tgz",
|
||||
@ -2003,13 +1993,10 @@
|
||||
"integrity": "sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw=="
|
||||
},
|
||||
"node_modules/@popperjs/core": {
|
||||
"version": "2.11.8",
|
||||
"resolved": "https://registry.npmmirror.com/@popperjs/core/-/core-2.11.8.tgz",
|
||||
"integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/popperjs"
|
||||
}
|
||||
"name": "@sxzz/popperjs-es",
|
||||
"version": "2.11.7",
|
||||
"resolved": "https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz",
|
||||
"integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ=="
|
||||
},
|
||||
"node_modules/@rollup/plugin-alias": {
|
||||
"version": "5.1.1",
|
||||
@ -3356,24 +3343,6 @@
|
||||
"resolved": "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz",
|
||||
"integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="
|
||||
},
|
||||
"node_modules/bootstrap": {
|
||||
"version": "5.3.0-alpha1",
|
||||
"resolved": "https://registry.npmmirror.com/bootstrap/-/bootstrap-5.3.0-alpha1.tgz",
|
||||
"integrity": "sha512-ABZpKK4ObS3kKlIqH+ZVDqoy5t/bhFG0oHTAzByUdon7YIom0lpCeTqRniDzJmbtcWkNe800VVPBiJgxSYTYew==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/twbs"
|
||||
},
|
||||
{
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/bootstrap"
|
||||
}
|
||||
],
|
||||
"peerDependencies": {
|
||||
"@popperjs/core": "^2.11.6"
|
||||
}
|
||||
},
|
||||
"node_modules/brace-expansion": {
|
||||
"version": "1.1.11",
|
||||
"resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||
|
@ -18,11 +18,9 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@element-plus/icons-vue": "^2.3.1",
|
||||
"@nuxtjs/device": "^3.2.4",
|
||||
"@nuxtjs/sitemap": "^6.1.2",
|
||||
"@pinia/nuxt": "^0.5.3",
|
||||
"axios": "^1.7.4",
|
||||
"bootstrap": "^5.3.0-alpha1",
|
||||
"element-plus": "^2.8.0",
|
||||
"nprogress": "^0.2.0",
|
||||
"nuxt": "^3.12.4",
|
||||
|
@ -62,17 +62,15 @@ export default {
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
@import "@/assets/style/variables";
|
||||
|
||||
.content-wrap {
|
||||
background: var(--color-white);
|
||||
padding: var(--gap-midele);
|
||||
padding: 30px;
|
||||
.content {
|
||||
border: 1px solid var(--border-color);
|
||||
// 附件
|
||||
.attachment-wrap {
|
||||
border-top: 1px solid var(--border-color);
|
||||
border-radius: 10px;
|
||||
padding: 20px 30px;
|
||||
h4 {
|
||||
color: var(--primary-color-dark);
|
||||
margin: 0;
|
||||
@ -97,26 +95,4 @@ export default {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: $--mobile-max-width) {
|
||||
.content-wrap {
|
||||
padding: 10px;
|
||||
.content {
|
||||
.attachment-wrap {
|
||||
padding: 10px 20px;
|
||||
ul {
|
||||
margin-top: 8px;
|
||||
li {
|
||||
padding: 2px 0;
|
||||
a {
|
||||
.el-icon {
|
||||
margin-right: 3px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
@ -4,30 +4,30 @@
|
||||
<!-- 第一部分 -->
|
||||
<div class="block row row-wrap">
|
||||
<!-- 轮播图 -->
|
||||
<div class="col-12 col-lg-6" :style="{ height: $device.isMobile ? '220px' : '420px'}">
|
||||
<div>
|
||||
<Carousel :data="carouselList"/>
|
||||
</div>
|
||||
<div class="col-12 col-lg-6">
|
||||
<div>
|
||||
<DataListTabs :data="dtData"/>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 第二部分 -->
|
||||
<div class="block row">
|
||||
<div class="col-12 col-lg-6">
|
||||
<div>
|
||||
<DataListTabs :data="ldzcData"/>
|
||||
</div>
|
||||
<div class="col-12 col-lg-6">
|
||||
<div>
|
||||
<DataListTabs :data="dwgkData"/>
|
||||
</div>
|
||||
</div>
|
||||
<!-- 第三部分 -->
|
||||
<ul class="block row row-wrap" style="padding-bottom: 0;">
|
||||
<li class="col-12 col-lg-4"><DataListTabs :data="tzggData"/></li>
|
||||
<li class="col-12 col-lg-4"><DataListTabs :data="pqgsTabs"/></li>
|
||||
<li class="col-12 col-lg-4"><DataListTabs :data="phgsTabs"/></li>
|
||||
<li class="col-12 col-lg-4"><DataListTabs :data="bdcdjznTabs"/></li>
|
||||
<li class="col-12 col-lg-4"><DataListTabs :data="wlaqxcTabs"/></li>
|
||||
<li class="col-12 col-lg-4"><DataListTabs :data="djgzTabs"/></li>
|
||||
<ul class="block row row-wrap col-3" style="padding-bottom: 0;">
|
||||
<li><DataListTabs :data="tzggData"/></li>
|
||||
<li><DataListTabs :data="pqgsTabs"/></li>
|
||||
<li><DataListTabs :data="phgsTabs"/></li>
|
||||
<li><DataListTabs :data="bdcdjznTabs"/></li>
|
||||
<li><DataListTabs :data="wlaqxcTabs"/></li>
|
||||
<li><DataListTabs :data="djgzTabs"/></li>
|
||||
</ul>
|
||||
<!-- 专题专栏 -->
|
||||
<div class="block">
|
||||
@ -67,7 +67,7 @@ export default {
|
||||
targetType: 'CATEGORY'
|
||||
}))
|
||||
const categoryTitleMap = {
|
||||
snyw: '省内要闻',
|
||||
snyw: '区内要闻',
|
||||
gnyw: '国内要闻',
|
||||
ldzc: '领导之窗',
|
||||
dwgk: '单位概况',
|
||||
@ -81,7 +81,7 @@ export default {
|
||||
const categoryUtil = new CategoryUtil(pageData.CATEGORIES_TREE)
|
||||
const getTab = (categoryUid, data = []) => {
|
||||
const category = categoryUtil.getCategory(categoryUid)
|
||||
if (category == null) {
|
||||
if (category == null) {1
|
||||
throw new Error(`找不到栏目,UID: ${categoryUid}`)
|
||||
}
|
||||
return {
|
||||
@ -127,15 +127,9 @@ export default {
|
||||
</script>
|
||||
<style scoped lang="scss">
|
||||
.default-layout {
|
||||
& > :deep(main) {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
.content-wrap {
|
||||
// 数据块的高度
|
||||
--data-block-height: 360px;
|
||||
flex-grow: 1;
|
||||
overflow: hidden;
|
||||
// 网站导航
|
||||
.website-nav {
|
||||
padding: 15px 20px;
|
||||
@ -158,7 +152,7 @@ export default {
|
||||
}
|
||||
}
|
||||
.block {
|
||||
padding: var(--gap);
|
||||
padding: 20px;
|
||||
background-color: #fff;
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
@ -166,6 +160,7 @@ export default {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
& > * {
|
||||
width: 49%;
|
||||
flex-shrink: 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
@ -175,6 +170,7 @@ export default {
|
||||
}
|
||||
&.col-3 {
|
||||
& > * {
|
||||
width: 32%;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
}
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 7.8 KiB |
BIN
public/favicon1.ico
Normal file
BIN
public/favicon1.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.2 KiB |
Binary file not shown.
Before Width: | Height: | Size: 7.1 KiB After Width: | Height: | Size: 1.1 KiB |
BIN
public/images/background1.jpg
Normal file
BIN
public/images/background1.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.1 KiB |
@ -71,7 +71,7 @@ export function getImageURL (fileKey) {
|
||||
if (fileKey.startsWith('http://') || fileKey.startsWith('https://')) {
|
||||
return fileKey
|
||||
}
|
||||
return `${import.meta.env.VITE_RESOURCE_PREFIX}/oss/image?f=${fileKey}`
|
||||
return `https://nankaicms.adl66.com/Api/Client/resource/oss/image?f=${fileKey}`
|
||||
}
|
||||
|
||||
/**
|
||||
@ -85,7 +85,7 @@ export function getAttachURL (fileKey, filename) {
|
||||
if (fileKey.startsWith('http://') || fileKey.startsWith('https://')) {
|
||||
return fileKey
|
||||
}
|
||||
return `${import.meta.env.VITE_RESOURCE_PREFIX}/oss/attach?f=${fileKey}&fn=${filename}`
|
||||
return `https://nankaicms.adl66.com/Api/Client/resource/oss/attach?f=${fileKey}&fn=${filename}`
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user