长页联调

master
yujialong 2 years ago
parent 676542f494
commit fa3304b0e2
  1. BIN
      src/assets/images/exp/1.png
  2. BIN
      src/assets/images/exp/2.png
  3. BIN
      src/assets/images/exp/3.png
  4. BIN
      src/assets/images/exp/4.png
  5. BIN
      src/assets/images/exp/5.png
  6. BIN
      src/assets/images/exp/6.png
  7. BIN
      src/assets/images/exp/7.png
  8. BIN
      src/assets/images/survey1.png
  9. BIN
      src/assets/images/survey2.png
  10. 21
      src/components/modules/module.vue
  11. 302
      src/const/modules.js
  12. 1
      src/mixins/page/index.js
  13. 178
      src/pages/column/page/exp.vue
  14. 129
      src/pages/column/page/survey.vue
  15. 2
      src/pages/column/page/userSharing.vue
  16. 12
      src/router/modules/column.js

Binary file not shown.

After

Width:  |  Height:  |  Size: 436 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 270 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 604 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 219 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 285 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 256 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

@ -13,6 +13,7 @@
accept=".jpg,.png,.jpeg" accept=".jpg,.png,.jpeg"
:on-success="res => uploadSuccess(res, scope.row)" :on-success="res => uploadSuccess(res, scope.row)"
:show-file-list="false" :show-file-list="false"
:headers="headers"
:action="api.upload"> :action="api.upload">
<img v-if="scope.row.pic" :src="scope.row.pic" class="avatar"> <img v-if="scope.row.pic" :src="scope.row.pic" class="avatar">
<div class="uploader-default" v-else> <div class="uploader-default" v-else>
@ -68,6 +69,7 @@
accept=".jpg,.png,.jpeg" accept=".jpg,.png,.jpeg"
:on-success="res => uploadSuccess(res, data.form)" :on-success="res => uploadSuccess(res, data.form)"
:show-file-list="false" :show-file-list="false"
:headers="headers"
:action="api.upload"> :action="api.upload">
<img v-if="data.form[item.prop]" :src="data.form[item.prop]" class="avatar"> <img v-if="data.form[item.prop]" :src="data.form[item.prop]" class="avatar">
<div class="uploader-default" v-else> <div class="uploader-default" v-else>
@ -78,6 +80,15 @@
<p>只支持.jpg,.png格式</p> <p>只支持.jpg,.png格式</p>
</div> </div>
</el-upload> </el-upload>
<el-upload
v-if="item.type === 'video'"
accept=".mp4,.mov,.avi"
:on-success="res => uploadSuccess(res, data.form, item)"
:file-list="fileList"
:headers="headers"
:action="api.upload">
<el-button>上传视频</el-button>
</el-upload>
<div v-if="item.type === 'link'" class="flex"> <div v-if="item.type === 'link'" class="flex">
<el-input class="m-r-10" v-model="data.form.link.linkName"></el-input> <el-input class="m-r-10" v-model="data.form.link.linkName"></el-input>
<el-button @click="toLink(data.form)">设置链接</el-button> <el-button @click="toLink(data.form)">设置链接</el-button>
@ -137,6 +148,7 @@
import Link from '@/components/modules/link' import Link from '@/components/modules/link'
import Content from '@/components/modules/content' import Content from '@/components/modules/content'
import Editor from '@tinymce/tinymce-vue' import Editor from '@tinymce/tinymce-vue'
import Setting from '@/setting'
import Util from '@/libs/util' import Util from '@/libs/util'
import editorConfig from '@/components/editor' import editorConfig from '@/components/editor'
export default { export default {
@ -149,6 +161,9 @@ export default {
}, },
data() { data() {
return { return {
headers: {
token: Util.local.get(Setting.tokenKey)
},
rules: {}, rules: {},
linkVisible: false, linkVisible: false,
linkForm: {}, linkForm: {},
@ -182,6 +197,7 @@ export default {
name: '2' name: '2'
}, },
], ],
fileList: [],
columnProps: { columnProps: {
checkStrictly: true, checkStrictly: true,
value: 'id', value: 'id',
@ -279,8 +295,9 @@ export default {
this.$emit('update:visible', false) this.$emit('update:visible', false)
}, },
// //
uploadSuccess(res, row) { uploadSuccess(res, row, item = {}) {
this.$set(row, 'pic', res.url) this.$set(row, item.type === 'video' ? 'video' : 'pic', res.url)
console.log("🚀 ~ file: module.vue:299 ~ uploadSuccess ~ res, row", res, row, item)
}, },
// //
delRow(list, i) { delRow(list, i) {

@ -4185,4 +4185,306 @@ export default {
} }
}, },
], ],
exp: [
{
type: 'introduce',
forms: [
{
type: 'upload',
prop: 'pic',
label: '图片',
required: true,
crop: false
},
{
type: 'input',
prop: 'title',
label: '标题',
required: true
},
{
type: 'link',
prop: 'link',
label: '链接'
}
],
form: {
pic: '',
title: '',
link: {
linkName: '无',
connectionType: 1,
columnId: [],
articleId: '',
linkAddress : '',
site: '',
otherColumnId: [],
otherArticleId: '',
isOpen: 1
},
isEnable: 1
},
list: [
{
pic: 'http://10.10.11.7/images/talent/1.png',
title: 'EDUCATION & COLLABORATION',
link: {
linkName: '无',
connectionType: 1,
columnId: [],
articleId: '',
linkAddress : '',
site: '',
otherColumnId: [],
otherArticleId: '',
isOpen: 1
},
isEnable: 1
}
]
},
{
type: 'form',
forms: [
{
type: 'upload',
prop: 'pic',
label: '图片',
required: true
},
{
type: 'textarea',
prop: 'des',
label: '描述'
}
],
form: {
pic: 'http://10.10.11.7/images/exp/1.png',
des: ` 科学实验站是S³FEL面向国家重大需求、聚焦科学前沿和引领地区产业发展的关键,旨在重点探究量子材料、能源催化、生物医药、大气与星际科学、原子分子科学等领域的关键技术和科学难题。S³FEL的供光具有超高时间分辨(40飞秒)、超高重复频率(最高百万赫兹)和超高亮度(电子束能量达2.5 Gev)的特点。
S³FEL可在原子尺度上研究复杂生物分子和材料的结构及组成进而绘制病毒或细胞的原子量级三维精细结构有助于科学家更深入地了解生物分子的结构和功能为新药研发提供依据在能源催化领域S³FEL可研究飞秒内的化学变化如化学键的形成和断裂反应体系中电荷和能量的转移反应过程中催化剂表面结构的动态演变等 有助于科学家更好地研究复杂催化过程的反应机理和动力学过程进而提高传统能源的利用效率加快新能源开发S³FEL还可用于探索极端电场或磁场强度下的物质变化如研究星云和恒星的演变探索生命的起源等`
}
},
{
type: 'form',
forms: [
{
type: 'input',
prop: 'title',
label: '标题',
required: true
}
],
form: {
title: '量子材料'
}
},
{
type: 'form',
forms: [
{
type: 'input',
prop: 'title',
label: '标题',
required: true
}
],
form: {
title: '能源催化'
}
},
{
type: 'form',
forms: [
{
type: 'input',
prop: 'title',
label: '标题',
required: true
}
],
form: {
title: '生物医药'
}
},
{
type: 'form',
forms: [
{
type: 'input',
prop: 'title',
label: '标题',
required: true
}
],
form: {
title: '大气雾霾与团簇研究'
}
},
{
type: 'form',
forms: [
{
type: 'input',
prop: 'title',
label: '标题',
required: true
}
],
form: {
title: '星际化学'
}
},
{
type: 'form',
forms: [
{
type: 'input',
prop: 'title',
label: '标题',
required: true
}
],
form: {
title: '原子分子物理'
}
},
],
survey: [
{
type: 'introduce',
forms: [
{
type: 'upload',
prop: 'pic',
label: '图片',
required: true,
crop: false
},
{
type: 'input',
prop: 'title',
label: '标题',
required: true
},
{
type: 'link',
prop: 'link',
label: '链接'
}
],
form: {
pic: '',
title: '',
link: {
linkName: '无',
connectionType: 1,
columnId: [],
articleId: '',
linkAddress : '',
site: '',
otherColumnId: [],
otherArticleId: '',
isOpen: 1
},
isEnable: 1
},
list: [
{
pic: 'http://10.10.11.7/images/talent/1.png',
title: 'EDUCATION & COLLABORATION',
link: {
linkName: '无',
connectionType: 1,
columnId: [],
articleId: '',
linkAddress : '',
site: '',
otherColumnId: [],
otherArticleId: '',
isOpen: 1
},
isEnable: 1
}
]
},
{
type: 'form',
forms: [
{
type: 'upload',
prop: 'pic',
label: '图片',
required: true
},
{
type: 'textarea',
prop: 'des',
label: '描述'
}
],
form: {
pic: 'http://10.10.11.7/images/exp/1.png',
des: ` 科学实验站是S³FEL面向国家重大需求、聚焦科学前沿和引领地区产业发展的关键,旨在重点探究量子材料、能源催化、生物医药、大气与星际科学、原子分子科学等领域的关键技术和科学难题。S³FEL的供光具有超高时间分辨(40飞秒)、超高重复频率(最高百万赫兹)和超高亮度(电子束能量达2.5 Gev)的特点。
S³FEL可在原子尺度上研究复杂生物分子和材料的结构及组成进而绘制病毒或细胞的原子量级三维精细结构有助于科学家更深入地了解生物分子的结构和功能为新药研发提供依据在能源催化领域S³FEL可研究飞秒内的化学变化如化学键的形成和断裂反应体系中电荷和能量的转移反应过程中催化剂表面结构的动态演变等 有助于科学家更好地研究复杂催化过程的反应机理和动力学过程进而提高传统能源的利用效率加快新能源开发S³FEL还可用于探索极端电场或磁场强度下的物质变化如研究星云和恒星的演变探索生命的起源等`
}
},
{
type: 'form',
forms: [
{
type: 'upload',
prop: 'pic',
label: '图片',
required: true
},
{
type: 'textarea',
prop: 'des',
label: '描述'
}
],
form: {
pic: 'http://10.10.11.7/images/exp/1.png',
des: ` 科学实验站是S³FEL面向国家重大需求、聚焦科学前沿和引领地区产业发展的关键,旨在重点探究量子材料、能源催化、生物医药、大气与星际科学、原子分子科学等领域的关键技术和科学难题。S³FEL的供光具有超高时间分辨(40飞秒)、超高重复频率(最高百万赫兹)和超高亮度(电子束能量达2.5 Gev)的特点。
S³FEL可在原子尺度上研究复杂生物分子和材料的结构及组成进而绘制病毒或细胞的原子量级三维精细结构有助于科学家更深入地了解生物分子的结构和功能为新药研发提供依据在能源催化领域S³FEL可研究飞秒内的化学变化如化学键的形成和断裂反应体系中电荷和能量的转移反应过程中催化剂表面结构的动态演变等 有助于科学家更好地研究复杂催化过程的反应机理和动力学过程进而提高传统能源的利用效率加快新能源开发S³FEL还可用于探索极端电场或磁场强度下的物质变化如研究星云和恒星的演变探索生命的起源等`
}
},
{
type: 'form',
forms: [
{
type: 'video',
prop: 'video',
label: '视频',
required: true
},
{
type: 'textarea',
prop: 'des',
label: '描述'
}
],
form: {
video: '',
des: ` 2006年,世界上第一台软X射线自由电子激光(简称FLASH)诞生于德国汉堡同步加速器实验室。 FLASH首次发出波长短至13.5 纳米、每秒150次脉冲、脉冲激光能量高达170 微焦的激光,并首次得到了非晶样品的高分辨率衍射图像。2009年,世界第一台硬X 射线自由电子线性相干光源 (简称LCLS)成功出光。 LCLS可提供更高亮度和更好横向相干性的XFEL脉冲,且脉冲亮度高达13.6 GeV。
我国在自由电子激光领域建成和在建的装置共有四台分别是由中国科学院大连化学物理研究所牵头建设的大连相干光源出光低重复频率主要工作在极紫外波段由中国科学院上海应用物理研究所牵头建设的软X射线自由电子激光装置 2021年建成出光低重复频率主要工作在软X射线波段由上海科技大学牵头建设的硬X射线自由电子激光装置建设中高重复频率主要工作在硬X射线波段由深圳综合粒子设施研究院牵头建设的深圳中能高重复频率X射线自由电子激光`
}
},
{
type: 'form',
forms: [
{
type: 'editor',
prop: 'des',
label: '描述'
}
],
form: {
des: ` S³FEL是光明科学城大科学装置集群的重要成员,建设地点位于深圳市光明区北片区,毗邻莲塘水库,占地面积约40万平方米,其中S³FEL装置的主体建筑总长约1800米。`
}
},
],
} }

@ -75,7 +75,6 @@ export default {
}, },
// 展开模块设置 // 展开模块设置
toSet(i, listIndex) { toSet(i, listIndex) {
console.log("🚀 ~ file: index.js:78 ~ toSet ~ i", i,this.modules)
this.curModule = i this.curModule = i
this.curData = JSON.parse(JSON.stringify(this.modules[i])) this.curData = JSON.parse(JSON.stringify(this.modules[i]))
const { type } = this.curData const { type } = this.curData

@ -0,0 +1,178 @@
<template>
<div class="wrap">
<div class="actions">
<p class="page-name">页面设置/装置介绍-实验站</p>
<div>
<el-button type="primary" @click="preview">预览</el-button>
<el-button @click="save(0)">保存为草稿</el-button>
<el-button type="primary" @click="save(1)">发布</el-button>
<el-button @click="back">放弃编辑</el-button>
</div>
</div>
<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="cover" @click="toSet(0)">点击更换banner与链接</div>
</div>
<div class="block station">
<div class="inner c-wrap">
<h6>实验线站</h6>
<p class="en">EXPERIMENT STATIONS</p>
<img class="pic" :src="modules[1].form.pic" alt="">
<div class="des">{{ modules[1].form.des }}</div>
<div class="cover" @click="toSet(1)">点击更改图片与概述</div>
</div>
</div>
<ul class="list">
<li class="item1">
<img src="@/assets/images/exp/2.png" alt="">
<h6>{{ modules[2].form.title }}</h6>
<div class="cover" @click="toSet(2)">点击更改标题</div>
</li>
<li class="item2">
<img src="@/assets/images/exp/3.png" alt="">
<h6>{{ modules[3].form.title }}</h6>
<div class="cover" @click="toSet(3)">点击更改标题</div>
</li>
<li class="item3">
<img src="@/assets/images/exp/4.png" alt="">
<h6>{{ modules[4].form.title }}</h6>
<div class="cover" @click="toSet(4)">点击更改标题</div>
</li>
<li class="item4">
<img src="@/assets/images/exp/5.png" alt="">
<h6>{{ modules[5].form.title }}</h6>
<div class="cover" @click="toSet(5)">点击更改标题</div>
</li>
<li class="item5">
<img src="@/assets/images/exp/6.png" alt="">
<h6>{{ modules[6].form.title }}</h6>
<div class="cover" @click="toSet(6)">点击更改标题</div>
</li>
<li class="item6">
<img src="@/assets/images/exp/7.png" alt="">
<h6>{{ modules[7].form.title }}</h6>
<div class="cover" @click="toSet(7)">点击更改标题</div>
</li>
</ul>
</div>
<Module ref="module" :data.sync="curData" :visible.sync="diaVisible" @moduleSubmit="moduleSubmit" />
</div>
</template>
<script>
import mixins from '@/mixins/page'
import Modules from '@/const/modules'
export default {
mixins: [mixins],
data() {
return {
modules: Modules.exp
}
},
mounted() {
this.$store.commit('user/setCrumbs', [
{
name: '站点管理',
route: '/site'
},
{
name: '内容管理',
route: '/column'
},
{
name: '栏目管理',
route: '/column'
},
{
name: '装置介绍-实验站'
}
])
},
methods: {
}
};
</script>
<style lang="scss" scoped>
@import "../../../styles/page/page.scss";
.station {
.inner {
width: 1200px;
}
h6 {
position: relative;
font-size: 48px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #333333;
line-height: 1;
}
.en {
margin-bottom: 20px;
font-size: 45px;
font-family: AppleSystemUIFont;
color: #E4E4E4;
line-height: 1;
}
.pic {
width: 100%;
height: 604px;
}
.des {
margin-top: 55px;
font-size: 18px;
color: #333;
line-height: 34px;
overflow: visible;
}
}
.list {
display: flex;
flex-wrap: wrap;
margin-top: 30px;
li {
position: relative;
height: 542px;
}
img {
width: 100%;
height: 100%;
}
h6 {
position: absolute;
top: 192px;
left: 60px;
font-size: 30px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 500;
color: #fff;
}
.item1, .item2 {
width: 25%;
}
.item3 {
width: 50%;
}
.item4 {
width: 40%;
}
.item5 {
width: 32%;
}
.item6 {
width: 28%;
}
}
</style>

@ -0,0 +1,129 @@
<template>
<div class="wrap">
<div class="actions">
<p class="page-name">页面设置/概况</p>
<div>
<el-button type="primary" @click="preview">预览</el-button>
<el-button @click="save(0)">保存为草稿</el-button>
<el-button type="primary" @click="save(1)">发布</el-button>
<el-button @click="back">放弃编辑</el-button>
</div>
</div>
<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="cover" @click="toSet(0)">点击更换banner与链接</div>
</div>
<ul class="tabs wow fadeInLeft">
<template v-for="(item, i) in tabs">
<li :class="{active: i == active}" :key="i" @click="tabChange(i)">{{ item }}</li>
</template>
</ul>
<div class="tab-content">
<div v-if="active === 2" class="c-wrap">
<video v-if="modules[3].form.video" class="video" ref="video" autoplay controls loop>
<source :src="modules[3].form.video" type="video/mp4">
您的浏览器不支持 video 标签
</video>
<div class="text">{{ modules[3].form.des }}</div>
<div class="cover" @click="toSet(3)">点击更换视频与描述</div>
</div>
<div v-if="active === 3" class="c-wrap">
<div v-html="modules[4].form.des"></div>
<div class="cover" @click="toSet(4)">点击更换描述</div>
</div>
</div>
</div>
<Module ref="module" :data.sync="curData" :visible.sync="diaVisible" @moduleSubmit="moduleSubmit" />
</div>
</template>
<script>
import mixins from '@/mixins/page'
import Modules from '@/const/modules'
export default {
mixins: [mixins],
data() {
return {
modules: Modules.survey,
active: 2,
tabs: ['S³FEL介绍', '发展历程', 'S³FEL宣传片', '地理位置', '机构设置']
}
},
mounted() {
this.$store.commit('user/setCrumbs', [
{
name: '站点管理',
route: '/site'
},
{
name: '内容管理',
route: '/column'
},
{
name: '栏目管理',
route: '/column'
},
{
name: '概况'
}
])
},
methods: {
// tab
tabChange(i) {
this.active = i
},
}
};
</script>
<style lang="scss" scoped>
@import "../../../styles/page/page.scss";
.wrap {
background: url(../../../assets/images/survey1.png) (0 559px)/auto no-repeat,
url(../../../assets/images/survey2.png) (bottom right)/auto no-repeat;
}
.tabs {
display: flex;
justify-content: center;
box-shadow: 0px 2px 10px 0px rgba(223,223,223,0.28);
li {
padding: 25px 19px;
margin: 0 10px;
font-size: 22px;
color: #333;
border-bottom: 4px solid transparent;
text-shadow: 0px 2px 14px rgba(167,167,167,0.26);
cursor: pointer;
&.active {
color: #1583FF;
border-bottom-color: #1583FF;
}
}
}
.tab-content {
width: 1000px;
padding: 77px 0;
margin: 0 auto;
}
.video {
width: 100%;
margin-bottom: 55px;
}
.text {
font-size: 18px;
color: #020202;
line-height: 32px;
}
</style>

@ -1,7 +1,7 @@
<template> <template>
<div class="wrap"> <div class="wrap">
<div class="actions"> <div class="actions">
<p class="page-name">页面设置/RESEARCH</p> <p class="page-name">页面设置/用户共享</p>
<div> <div>
<el-button type="primary" @click="preview">预览</el-button> <el-button type="primary" @click="preview">预览</el-button>
<el-button @click="save(0)">保存为草稿</el-button> <el-button @click="save(0)">保存为草稿</el-button>

@ -96,6 +96,18 @@ export default {
path: `userSharing`, path: `userSharing`,
component: () => import('@/pages/column/page/userSharing'), component: () => import('@/pages/column/page/userSharing'),
meta: { title: '用户共享' } meta: { title: '用户共享' }
},
{
name: `${pre}exp`,
path: `exp`,
component: () => import('@/pages/column/page/exp'),
meta: { title: '装置介绍-实验站' }
},
{
name: `${pre}survey`,
path: `survey`,
component: () => import('@/pages/column/page/survey'),
meta: { title: '概况' }
} }
] ]
} }

Loading…
Cancel
Save