yujialong 2 years ago
parent 08d20f3a8d
commit 0e329753a9
  1. BIN
      src/assets/images/page/deviceIntroBeam.png
  2. BIN
      src/assets/images/page/deviceIntroLayout.png
  3. BIN
      src/assets/images/page/deviceIntroLinear.png
  4. BIN
      src/assets/images/page/overviewLocation.png
  5. 0
      src/assets/images/page/overviewTrailer.png
  6. 5
      src/components/modules/link.vue
  7. 116
      src/const/modules.js
  8. 2
      src/layouts/header/index.vue
  9. 6
      src/layouts/navbar/index.vue
  10. 2
      src/mixins/page/index.js
  11. 30
      src/pages/article/add/editor.js
  12. 122
      src/pages/article/add/index.vue
  13. 28
      src/pages/article/list/index.vue
  14. 6
      src/pages/column/add/index.vue
  15. 14
      src/pages/column/page/science.vue
  16. 14
      src/pages/column/page/talent.vue
  17. 14
      src/pages/column/page/userSharing.vue
  18. 2
      src/pages/site/list/index.vue
  19. 4
      src/pages/user/list/index.vue
  20. 2
      src/setting.js
  21. 22
      src/styles/page/page.scss

Binary file not shown.

After

Width:  |  Height:  |  Size: 444 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 396 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 566 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 945 KiB

Before

Width:  |  Height:  |  Size: 474 KiB

After

Width:  |  Height:  |  Size: 474 KiB

@ -153,11 +153,12 @@ export default {
// /
const id = this.data.connectionType === 1 ? this.data.columnId[this.data.columnId.length - 1] : this.data.otherColumnId[this.data.otherColumnId.length - 1]
id && this.$post(this.api.queryArticle, {
siteId: this.site.id,
siteId: this.data.connectionType === 1 ? this.site.id : this.data.site,
columnIds: [id],
pageNum: 1,
pageSize: 1000,
title: ''
title: '',
isDisable: 0
}).then(({ data }) => {
this.articles = data.records.filter(e => e.isRelease) //
}).catch(err => {})

@ -3491,14 +3491,13 @@ export default {
],
science: [
{
type: 'introduce',
type: 'form',
forms: [
{
type: 'upload',
prop: 'pic',
label: '图片',
required: true,
crop: false
required: true
},
{
type: 'input',
@ -3510,11 +3509,16 @@ export default {
type: 'link',
prop: 'link',
label: '链接'
},
{
type: 'textarea',
prop: 'des',
label: '描述'
}
],
form: {
pic: '',
title: '',
pic: 'http://10.10.11.7/images/science/1.png',
title: '科普之窗',
link: {
linkName: '无',
connectionType: 1,
@ -3526,26 +3530,8 @@ export default {
otherArticleId: '',
isOpen: 1
},
isEnable: 1
},
list: [
{
pic: 'http://10.10.11.7/images/edu/1.png',
title: '科普之窗',
link: {
linkName: '无',
connectionType: 1,
columnId: [],
articleId: '',
linkAddress : '',
site: '',
otherColumnId: [],
otherArticleId: '',
isOpen: 1
},
isEnable: 1
}
]
des: '向全世界科技界实行开放共享,促进信息、材料、能源、生物、环境、化学等多个基础科学领域的极速发展。'
}
},
{
type: 'form',
@ -3658,14 +3644,13 @@ export default {
],
talent: [
{
type: 'introduce',
type: 'form',
forms: [
{
type: 'upload',
prop: 'pic',
label: '图片',
required: true,
crop: false
required: true
},
{
type: 'input',
@ -3677,11 +3662,16 @@ export default {
type: 'link',
prop: 'link',
label: '链接'
},
{
type: 'textarea',
prop: 'des',
label: '描述'
}
],
form: {
pic: '',
title: '',
pic: 'http://10.10.11.7/images/talent/1.png',
title: '人才队伍',
link: {
linkName: '无',
connectionType: 1,
@ -3693,26 +3683,8 @@ export default {
otherArticleId: '',
isOpen: 1
},
isEnable: 1
},
list: [
{
pic: 'http://10.10.11.7/images/talent/1.png',
title: '人才队伍',
link: {
linkName: '无',
connectionType: 1,
columnId: [],
articleId: '',
linkAddress : '',
site: '',
otherColumnId: [],
otherArticleId: '',
isOpen: 1
},
isEnable: 1
}
]
des: 'S³FEL正大力引进国内、外高端创新人才和团队,成长为竞争力和影响力卓越的世界一流科学大装置。'
}
},
{
type: 'form',
@ -3856,7 +3828,7 @@ export default {
},
list: [
{
pic: 'http://10.10.11.7/images/telent/2.png',
pic: 'http://10.10.11.7/images/talent/2.png',
title: '这是一条描述',
link: {
linkName: '无',
@ -3872,7 +3844,7 @@ export default {
isEnable: 1
},
{
pic: 'http://10.10.11.7/images/telent/3.png',
pic: 'http://10.10.11.7/images/talent/3.png',
title: '这是一条描述',
link: {
linkName: '无',
@ -3888,7 +3860,7 @@ export default {
isEnable: 1
},
{
pic: 'http://10.10.11.7/images/telent/2.png',
pic: 'http://10.10.11.7/images/talent/2.png',
title: '这是一条描述',
link: {
linkName: '无',
@ -4006,14 +3978,13 @@ export default {
],
userSharing: [
{
type: 'introduce',
type: 'form',
forms: [
{
type: 'upload',
prop: 'pic',
label: '图片',
required: true,
crop: false
required: true
},
{
type: 'input',
@ -4025,11 +3996,16 @@ export default {
type: 'link',
prop: 'link',
label: '链接'
},
{
type: 'textarea',
prop: 'des',
label: '描述'
}
],
form: {
pic: '',
title: '',
pic: 'http://10.10.11.7/images/userSharing/1.png',
title: '用户共享',
link: {
linkName: '无',
connectionType: 1,
@ -4041,26 +4017,8 @@ export default {
otherArticleId: '',
isOpen: 1
},
isEnable: 1
},
list: [
{
pic: 'http://10.10.11.7/images/talent/1.png',
title: '用户共享',
link: {
linkName: '无',
connectionType: 1,
columnId: [],
articleId: '',
linkAddress : '',
site: '',
otherColumnId: [],
otherArticleId: '',
isOpen: 1
},
isEnable: 1
}
]
des: '向全世界科技界实行开放共享,促进信息、材料、能源、生物、环境、化学等多个基础科学领域的极速发展。'
}
},
{
type: 'form',
@ -4259,7 +4217,7 @@ export default {
}
],
form: {
pic: 'http://10.10.11.7/images/exp/1.png',
pic: 'http://10.10.11.7/images/exp/2.png',
des: ` 科学实验站是S³FEL面向国家重大需求、聚焦科学前沿和引领地区产业发展的关键,旨在重点探究量子材料、能源催化、生物医药、大气与星际科学、原子分子科学等领域的关键技术和科学难题。S³FEL的供光具有超高时间分辨(40飞秒)、超高重复频率(最高百万赫兹)和超高亮度(电子束能量达2.5 Gev)的特点。
S³FEL可在原子尺度上研究复杂生物分子和材料的结构及组成进而绘制病毒或细胞的原子量级三维精细结构有助于科学家更深入地了解生物分子的结构和功能为新药研发提供依据在能源催化领域S³FEL可研究飞秒内的化学变化如化学键的形成和断裂反应体系中电荷和能量的转移反应过程中催化剂表面结构的动态演变等 有助于科学家更好地研究复杂催化过程的反应机理和动力学过程进而提高传统能源的利用效率加快新能源开发S³FEL还可用于探索极端电场或磁场强度下的物质变化如研究星云和恒星的演变探索生命的起源等`

@ -70,7 +70,7 @@ export default {
}
},
mounted() {
this.getSite()
this.btns.includes('/site/list') && this.getSite()
this.setContent()
},
methods: {

@ -151,10 +151,6 @@ export default {
index: 'content',
title: '内容管理',
subs: [
// {
// index: '/page',
// title: ''
// },
{
index: '/column',
title: '栏目管理'
@ -192,6 +188,7 @@ export default {
}
},
created() {
//
const { path } = this.$route
this.collapse = !!this.sites[0].subs.find(e => path.includes(e.index))
if (this.collapse) this.siteActive = '/' + path.split('/')[1]
@ -204,6 +201,7 @@ export default {
//
menuSelect(index) {
this.collapse = false
//
if (index.includes('/')) {
this.$router.push(index)
} else {

@ -127,7 +127,7 @@ export default {
json: this.handleJson()
}).then(res => {
load.close()
window.open((Setting.isDev ? `http://${location.hostname}:8095` : 'http://10.10.11.7/front') + `/#/${this.$route.query.path}?id=${this.columnId}&preview=1&siteId=${this.$route.query.siteId}`)
window.open((Setting.isDev ? `http://${location.hostname}:8095` : 'http://10.10.11.7') + `/#/${this.$route.query.path}?id=${this.columnId}&preview=1&siteId=${this.$route.query.siteId}`)
}).catch(err => {
load.close()
})

@ -314,21 +314,21 @@ export default {
powerpaste_word_import: 'clean',
powerpaste_html_import: 'clean',
// 自定义上传
images_upload_handler: (blobInfo, progress) => new Promise((resolve, reject) => {
const form = new FormData()
form.append('file', blobInfo.blob())
Axios({
method: 'post',
url: Api.upload,
data: form,
headers: {
'Content-Type': 'multipart/form-data',
token: Util.local.get(Setting.tokenKey)
},
}).then(({ data }) => {
resolve(data.url)
}).catch(res => {})
}),
images_upload_handler: function (blobInfo, succFun, failFun) {
const form = new FormData()
form.append('file', blobInfo.blob()),
Axios({
method: 'post',
url: Api.upload,
data: form,
headers: {
'Content-Type': 'multipart/form-data',
token: Util.local.get(Setting.tokenKey)
},
}).then(({ data }) => {
succFun(data.url)
}).catch(res => {})
},
//自定义文件选择器的回调内容 此方法只有在点击上方图片按钮才会触发
file_picker_callback: function (callback, value, meta) {
if (meta.filetype === 'file') {

@ -44,27 +44,16 @@
ref="column"
v-model="form.columnId"
:options="columns"
:props="columnProps"></el-cascader>
:props="columnProps"
@change="columnChange"></el-cascader>
</el-form-item>
<el-form-item v-if="form.articleTemplate === 25" prop="classificationId" label="所属分类">
<el-select style="width: 234px;" v-model="form.classificationId">
<template v-for="item in classifications">
<el-option
v-if="item.classificationName"
:key="item.id"
:label="item.classificationName"
:value="item.id">
</el-option>
</template>
</el-select>
<el-button class="set-btn" type="primary" @click="setClass">设置</el-button>
</el-form-item>
<el-form-item v-else prop="releaseTime" label="发布日期">
<el-form-item prop="releaseTime" label="发布日期">
<el-date-picker
v-model="form.releaseTime"
type="date"
placeholder="选择日期"
format="yyyy-MM-dd"
:clearable="false"
value-format="yyyy-MM-dd">
</el-date-picker>
</el-form-item>
@ -91,6 +80,37 @@
</el-date-picker>
</el-form-item>
</div>
<div class="item-line">
<el-form-item prop="periodicalName" label="刊物名称">
<el-input
placeholder="请输入刊物名称"
v-model="form.periodicalName"
clearable
maxlength="50"
class="inline-input"
></el-input>
</el-form-item>
<div style="display: inline-flex;">
<el-form-item prop="reel" label="卷" style="margin-right: 0;">
<el-input
placeholder="请输入"
v-model="form.reel"
clearable
maxlength="50"
style="width: 110px"
></el-input>
</el-form-item>
<el-form-item prop="documentNumber" label="文献号" label-width="80px">
<el-input
placeholder="请输入"
v-model="form.documentNumber"
clearable
maxlength="50"
style="width: 110px"
></el-input>
</el-form-item>
</div>
</div>
<el-form-item prop="author" label="作者">
<el-input
style="width: 940px"
@ -116,6 +136,7 @@
v-model="form.time"
type="datetimerange"
range-separator="~"
:clearable="false"
start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker>
@ -171,15 +192,29 @@
</el-form-item>
</div>
<template v-if="form.articleTemplate === 25">
<el-form-item prop="offlineLocation" label="线下地点">
<el-input
style="width: 940px"
placeholder="请输入线下地点"
v-model="form.offlineLocation"
clearable
maxlength="100"
></el-input>
</el-form-item>
<div class="item-line">
<el-form-item prop="classificationId" label="所属分类">
<el-select style="width: 234px;" v-model="form.classificationId">
<template v-for="item in classifications">
<el-option
v-if="item.classificationName"
:key="item.id"
:label="item.classificationName"
:value="item.id">
</el-option>
</template>
</el-select>
<el-button class="set-btn" type="primary" @click="setClass">设置</el-button>
</el-form-item>
<el-form-item prop="offlineLocation" label="线下地点">
<el-input
placeholder="请输入线下地点"
v-model="form.offlineLocation"
clearable
maxlength="100"
></el-input>
</el-form-item>
</div>
<el-form-item prop="keynoteSpeaker" label="主讲人">
<el-input
style="width: 940px"
@ -292,6 +327,12 @@
:rows="3"
></el-input>
</el-form-item>
<el-form-item prop="articleKeyWord" label="关键字">
<el-input
style="width: 940px"
v-model="form.articleKeyWord"
></el-input>
</el-form-item>
<el-form-item prop="mainBody" label="摘要">
<Editor api-key='rnk6zw9v267xqz7pf98twt1vmrvltmd436je7a642pckltda' v-model="form.mainBody" :init="editorConfig" />
</el-form-item>
@ -512,8 +553,12 @@ export default {
articleTemplate: '',
doi: '',
quote: '',
articleKeyWord: '',
publicationTypeId: '',
publicationYear: '',
periodicalName: '',
reel: '',
documentNumber: '',
activityEndTime: '',
activityStartTime: '',
time: '',
@ -697,13 +742,6 @@ export default {
this.form.id ? this.getData() : this.getColumn()
}).catch(err => {})
},
// id
getId(list, ids) {
list.forEach(e => {
e.ids = ids ? [...ids, e.id] : [e.id]
e.children.length ? this.getId(e.children, e.ids) : delete e.children
})
},
//
getArticle() {
// /
@ -715,7 +753,8 @@ export default {
columnIds: [id],
pageNum: 1,
pageSize: 1000,
title: ''
title: '',
isDisable: 0
}).then(({ data }) => {
this[inner ? 'articles' : 'otherArticles'] = data.records.filter(e => e.isRelease) //
}).catch(err => {})
@ -745,7 +784,8 @@ export default {
columnIds: [column[column.length - 1]], // ididid
pageNum: 1,
pageSize: 1000,
title: ''
title: '',
isDisable: 0
}).then(res => {
this[connectionType === 1 ? 'articles' : 'otherArticles'] = res.data.records
// /
@ -797,6 +837,22 @@ export default {
this.form.articleTemplate = id
this.handleRules()
},
//
columnChange(val) {
const checked = this.$refs.column.getCheckedNodes()
if (checked && checked.length) {
//
this.columnInfo = checked[checked.length - 1].data
this.getClassification()
}
},
// id
getId(list, ids) {
list.forEach(e => {
e.ids = ids ? [...ids, e.id] : [e.id]
e.children.length ? this.getId(e.children, e.ids) : delete e.children
})
},
//
getSite() {
this.$post(this.api.site, {

@ -35,7 +35,7 @@
<el-button v-auth="'/site/list:' + siteName + ':内容管理:文章管理:删除'" @click="batchDel">删除</el-button>
</div>
</div>
<el-table :data="list" class="table" ref="table" header-align="center" @selection-change="handleSelectionChange" row-key="id">
<el-table :data="list" class="table" ref="table" header-align="center" @selection-change="handleSelectionChange" row-key="id" @sort-change="sortChange">
<el-table-column v-if="settings[0].show" type="selection" width="55" align="center" :reserve-selection="true"></el-table-column>
<el-table-column type="index" width="60" label="序号" align="center"></el-table-column>
<el-table-column v-if="settings[1].show" show-overflow-tooltip prop="title" label="标题" align="center" min-width="150"></el-table-column>
@ -47,8 +47,8 @@
</el-table-column>
<el-table-column v-if="settings[4].show" prop="founderName" label="录入人" align="center" min-width="80"></el-table-column>
<el-table-column v-if="settings[5].show" prop="editorName" label="修改人" align="center" min-width="80"></el-table-column>
<el-table-column v-if="settings[6].show" prop="updateTime" label="修改日期" align="center" min-width="140"></el-table-column>
<el-table-column v-if="settings[7].show" prop="releaseTime" label="发布日期" align="center" min-width="140"></el-table-column>
<el-table-column v-if="settings[6].show" prop="updateTime" label="修改日期" align="center" min-width="140" sortable="custom"></el-table-column>
<el-table-column v-if="settings[7].show" prop="releaseTime" label="发布日期" align="center" min-width="140" sortable="custom"></el-table-column>
<el-table-column v-if="settings[8].show" prop="totalBrowsing" label="总浏览" align="center" min-width="80"></el-table-column>
<el-table-column v-if="settings[9].show" prop="workNumber" label="状态" align="center" min-width="80">
<template slot-scope="scope">
@ -116,6 +116,8 @@ export default {
page: 1,
pageSize: 10,
total: 0,
modifiedTimeSort: '',
publicationTimeSort: 0,
multipleSelection: [],
originSettings: [],
settings: [
@ -215,7 +217,7 @@ export default {
const id = this.$refs.column.getCurrentKey()
this.$router.push(`/article?columnId=${id}`).catch(e => {})
const { keyword } = this
this.$post(this.api.queryArticle, {
const data = {
siteId: this.$store.state.content.site.id,
columnIds: [id],
pageNum: this.page,
@ -224,7 +226,10 @@ export default {
founder: this.field === 'founder' ? keyword : '',
column: this.field === 'column' ? keyword : '',
editor: this.field === 'editor' ? keyword : ''
}).then(({ data }) => {
}
if (this.modifiedTimeSort !== '') data.modifiedTimeSort = this.modifiedTimeSort
if (this.publicationTimeSort !== '') data.publicationTimeSort = this.publicationTimeSort
this.$post(this.api.queryArticle, data).then(({ data }) => {
this.list = data.records
this.total = +data.total
}).catch(err => {})
@ -287,6 +292,19 @@ export default {
this.setColumn(this.$refs.column.getCurrentNode())
this.$router.push(`add?columnId=${this.$refs.column.getCurrentKey()}&columnName=${this.$refs.column.getCurrentNode().columnName}`)
},
//
sortChange(column) {
// 0 1
if (column.prop === 'updateTime') {
this.modifiedTimeSort = column.order ? column.order === 'ascending' ? 1 : 0 : ''
if (column.order) this.publicationTimeSort = ''
}
if (column.prop === 'releaseTime') {
this.publicationTimeSort = column.order ? column.order === 'ascending' ? 1 : 0 : ''
if (column.order) this.modifiedTimeSort = ''
}
this.getData()
},
//
preview(row) {
window.open((Setting.isDev ? `http://${location.hostname}:8095` : this.$store.state.content.site.domainName) + `/#/article?articleId=${row.id}&siteId=${this.$refs.column.getCurrentNode().siteId}&id=${row.columnId}`)

@ -407,7 +407,8 @@ export default {
columnIds: [id],
pageNum: 1,
pageSize: 1000,
title: ''
title: '',
isDisable: 0
}).then(({ data }) => {
this[inner ? 'articles' : 'otherArticles'] = data.records.filter(e => e.isRelease) //
}).catch(err => {})
@ -430,7 +431,8 @@ export default {
columnIds: [column[column.length - 1]], // ididid
pageNum: 1,
pageSize: 1000,
title: ''
title: '',
isDisable: 0
}).then(res => {
this[connectionType === 1 ? 'articles' : 'otherArticles'] = res.data.records
// /

@ -12,13 +12,13 @@
<div class="modules">
<div class="relative">
<el-carousel height="480px" :indicator-position="modules[0].list.filter(e => e.isEnable).length > 1 ? '' : 'none'">
<template v-for="(item, i) in modules[0].list">
<el-carousel-item v-if="item.pic && item.isEnable" :key="i">
<img width="100%" height="100%" :src="item.pic" alt="">
</el-carousel-item>
</template>
</el-carousel>
<div class="single-banner">
<img class="banner-img" :src="modules[0].form.pic" alt="">
<div class="texts">
<h6 class="banner-title">{{ modules[0].form.title }}</h6>
<p class="banner-des">{{ modules[0].form.des }}</p>
</div>
</div>
<div class="cover" @click="toSet(0)">点击更换banner与链接</div>
</div>

@ -12,13 +12,13 @@
<div class="modules">
<div class="relative">
<el-carousel height="480px" :indicator-position="modules[0].list.filter(e => e.isEnable).length > 1 ? '' : 'none'">
<template v-for="(item, i) in modules[0].list">
<el-carousel-item v-if="item.pic && item.isEnable" :key="i">
<img width="100%" height="100%" :src="item.pic" alt="">
</el-carousel-item>
</template>
</el-carousel>
<div class="single-banner">
<img class="banner-img" :src="modules[0].form.pic" alt="">
<div class="texts">
<h6 class="banner-title">{{ modules[0].form.title }}</h6>
<p class="banner-des">{{ modules[0].form.des }}</p>
</div>
</div>
<div class="cover" @click="toSet(0)">点击更换banner与链接</div>
</div>

@ -12,13 +12,13 @@
<div class="modules">
<div class="relative">
<el-carousel height="480px" :indicator-position="modules[0].list.filter(e => e.isEnable).length > 1 ? '' : 'none'">
<template v-for="(item, i) in modules[0].list">
<el-carousel-item v-if="item.pic && item.isEnable" :key="i">
<img width="100%" height="100%" :src="item.pic" alt="">
</el-carousel-item>
</template>
</el-carousel>
<div class="single-banner">
<img class="banner-img" :src="modules[0].form.pic" alt="">
<div class="texts">
<h6 class="banner-title">{{ modules[0].form.title }}</h6>
<p class="banner-des">{{ modules[0].form.des }}</p>
</div>
</div>
<div class="cover" @click="toSet(0)">点击更换banner与链接</div>
</div>

@ -100,7 +100,7 @@ export default {
},
//
toIndex(row) {
window.open((Setting.isDev ? `http://${location.hostname}:8095` : row.domainName) + `/#/column?siteId=${row.id}`)
window.open((Setting.isDev ? `http://${location.hostname}:8095` : row.domainName) + `#/column?siteId=${row.id}`)
},
//
content(row) {

@ -102,10 +102,10 @@
<el-table-column v-if="settings[3].show" prop="jobNumber" label="工号" min-width="100"></el-table-column>
<el-table-column v-if="settings[4].show" prop="phone" label="手机号" min-width="100" show-overflow-tooltip></el-table-column>
<el-table-column v-if="settings[5].show" prop="deptArchitectureName" label="所在部门" min-width="100"></el-table-column>
<el-table-column v-if="settings[6].show" prop="createTime" label="创建日期" min-width="140"></el-table-column>
<el-table-column v-if="settings[6].show" prop="createTime" label="创建日期" min-width="150"></el-table-column>
<el-table-column v-if="settings[7].show" prop="roleName" label="授权角色" show-overflow-tooltip min-width="100"></el-table-column>
<el-table-column v-if="settings[8].show" prop="groupName" label="用户组" min-width="100"></el-table-column>
<el-table-column v-if="settings[9].show" prop="lastLoginTime" label="最后登录时间" min-width="140"></el-table-column>
<el-table-column v-if="settings[9].show" prop="lastLoginTime" label="最后登录时间" min-width="150"></el-table-column>
<el-table-column v-if="settings[10].show" label="操作" width="180">
<template slot-scope="scope">
<el-button v-auth type="text" @click="queryStaff(scope.row,true)">查看</el-button>

@ -5,7 +5,7 @@ const url = location.host;
const isDev = process.env.NODE_ENV === 'development' // 开发环境
let host = `${location.origin}/`
if (isDev) {
host = 'http://192.168.31.51:10000/'
host = 'http://192.168.31.151:10000/'
}
const Setting = {

@ -36,6 +36,28 @@
width: 1505px;
}
}
.single-banner {
position: relative;
color: #fff;
.banner-img {
width: 100%;
height: 480px;
}
.texts {
position: absolute;
top: 160px;
left: 267px;
}
.banner-title {
margin-bottom: 19px;
font-size: 48px;
font-family: PingFangSC-Medium, PingFang SC;
}
.banner-des {
font-size: 24px;
font-family: PingFangSC-Medium, PingFang SC;
}
}
.gray {
background-color: #F2F6F8;
}

Loading…
Cancel
Save