Compare commits

..

No commits in common. 'master' and 'V1.0.2' have entirely different histories.

  1. 1502
      src/const/modules.js
  2. 2
      src/pages/article/add/editor.js
  3. 13
      src/pages/article/add/index.vue
  4. 248
      src/pages/article/list/index.vue
  5. 12
      src/pages/column/page/application.vue
  6. 4
      src/pages/column/page/contactUs.vue
  7. 26
      src/pages/column/page/governance.vue
  8. 56
      src/store/modules/user.js

File diff suppressed because it is too large Load Diff

@ -309,7 +309,7 @@ export default {
title: '人物详情', description: '', content: ` title: '人物详情', description: '', content: `
<div class="tiny-wrap"> <div class="tiny-wrap">
<div class="people"> <div class="people">
<img class="pic" src="https://www.iasf.ac.cn/images/team/5.png"/> <img class="pic" src="https://new.iasf.ac.cn/images/team/5.png"/>
<div class="texts"> <div class="texts">
<h6>谢明远 XIE Mingyuan</h6> <h6>谢明远 XIE Mingyuan</h6>
<div class="text"> <div class="text">

@ -532,9 +532,9 @@ export default {
classificationId: [ classificationId: [
{ required: false, message: '请选择所属分类', trigger: 'change' } { required: false, message: '请选择所属分类', trigger: 'change' }
], ],
// eventProfile: [ eventProfile: [
// { required: true, message: '', trigger: 'blur' } { required: true, message: '请输入活动简介', trigger: 'blur' }
// ], ],
releaseTime: [ releaseTime: [
{ required: true, message: '请选择发布日期', trigger: 'change' } { required: true, message: '请选择发布日期', trigger: 'change' }
], ],
@ -1313,12 +1313,7 @@ export default {
this.$post(this.api.updateArticle, form).then(res => { this.$post(this.api.updateArticle, form).then(res => {
this.updateFile(fileId, form, form.id) this.updateFile(fileId, form, form.id)
Util.successMsg('修改成功') Util.successMsg('修改成功')
if (next) { next ? next() : this.$router.push(`list?columnId=` + form.columnId + (form.columnId != this.originColumnId ? '&last=1' : '')) // last
next()
} else {
// last
form.columnId != this.originColumnId ? this.$router.push(`list?columnId=${form.columnId}&last=1`) : this.$router.back()
}
}).catch(err => { }).catch(err => {
this.submiting = false this.submiting = false
}) })

@ -3,100 +3,189 @@
<div style="width: 218px;border-right: 1px solid #EBEDF0"> <div style="width: 218px;border-right: 1px solid #EBEDF0">
<p class="page-name mb">全部栏目</p> <p class="page-name mb">全部栏目</p>
<div style="height: calc(100vh - 190px);overflow: auto"> <div style="height: calc(100vh - 190px);overflow: auto">
<el-tree ref="column" :data="columns" highlight-current :expand-on-click-node="false" default-expand-all <el-tree ref="column"
:props="defaultProps" node-key="id" @node-click="initData"> :data="columns"
<span class="custom-tree-node" slot-scope="{ node, data }"> highlight-current
<span class="org-name" :title="node.label">{{ node.label }}</span> :expand-on-click-node="false"
default-expand-all
:props="defaultProps"
node-key="id"
@node-click="initData">
<span class="custom-tree-node"
slot-scope="{ node, data }">
<span class="org-name"
:title="node.label">{{ node.label }}</span>
</span> </span>
</el-tree> </el-tree>
</div> </div>
</div> </div>
<div class="p-l-20" style="width: calc(100% - 219px);"> <div class="p-l-20"
style="width: calc(100% - 219px);">
<div class="tool"> <div class="tool">
<div class="search-wrap"> <div class="search-wrap">
<el-select v-model="field" @change="initData"> <el-select v-model="field"
<el-option v-for="(item, i) in keywords" :key="i" :label="item.name" :value="item.id"> @change="initData">
<el-option v-for="(item, i) in keywords"
:key="i"
:label="item.name"
:value="item.id">
</el-option> </el-option>
</el-select> </el-select>
<el-input class="keyword" :placeholder="'请输入' + keywords.find(e => e.id === field).name" <el-input class="keyword"
v-model.trim="keyword" clearable></el-input> :placeholder="'请输入' + keywords.find(e => e.id === field).name"
v-model.trim="keyword"
clearable></el-input>
</div> </div>
<div class="actions"> <div class="actions">
<el-dropdown class="setting" trigger="click" :hide-on-click="false"> <el-dropdown class="setting"
<img class="icon" src="@/assets/images/setting.png" alt=""> trigger="click"
:hide-on-click="false">
<img class="icon"
src="@/assets/images/setting.png"
alt="">
<el-dropdown-menu> <el-dropdown-menu>
<el-dropdown-item> <el-dropdown-item>
<el-button @click="resetColumns" type="text">列重置</el-button> <el-button @click="resetColumns"
type="text">列重置</el-button>
</el-dropdown-item> </el-dropdown-item>
<el-dropdown-item v-for="(column, i) in settings" :key="i" :divided="i === 0"> <el-dropdown-item v-for="(column, i) in settings"
:key="i"
:divided="i === 0">
<el-checkbox v-model="column.show">{{ column.name }}</el-checkbox> <el-checkbox v-model="column.show">{{ column.name }}</el-checkbox>
</el-dropdown-item> </el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
<el-button v-auth="'/site/list:' + siteName + ':内容管理:文章管理:新增'" type="primary" @click="add">新增</el-button> <el-button v-auth="'/site/list:' + siteName + ':内容管理:文章管理:新增'"
<el-button v-auth="'/site/list:' + siteName + ':内容管理:文章管理:删除'" @click="batchDel">删除</el-button> type="primary"
@click="add">新增</el-button>
<el-button v-auth="'/site/list:' + siteName + ':内容管理:文章管理:删除'"
@click="batchDel">删除</el-button>
</div> </div>
</div> </div>
<el-table :data="list" class="table" ref="table" header-align="center" @selection-change="handleSelectionChange" <el-table :data="list"
row-key="id" @sort-change="sortChange"> class="table"
<el-table-column v-if="settings[0].show" type="selection" width="55" align="center" ref="table"
:reserve-selection="true"></el-table-column> header-align="center"
<el-table-column type="index" width="60" label="序号" 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">
<template scope="scope"> <template scope="scope">
<span>{{ (page - 1) * pageSize + scope.$index + 1 }}</span> <span>{{(page - 1) * pageSize + scope.$index + 1}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column v-if="settings[1].show" show-overflow-tooltip prop="title" label="标题" align="center" <el-table-column v-if="settings[1].show"
min-width="150"></el-table-column> show-overflow-tooltip
<el-table-column v-if="settings[2].show" prop="columnName" label="栏目" align="center" prop="title"
min-width="120"></el-table-column> label="标题"
<el-table-column v-if="settings[3].show" prop="classificationName" label="所属分类" align="center" align="center"
min-width="120"></el-table-column> min-width="150"></el-table-column>
<el-table-column v-if="settings[4].show" prop="typeId" label="栏目类型" align="center" min-width="100"> <el-table-column v-if="settings[2].show"
prop="columnName"
label="栏目"
align="center"
min-width="120"></el-table-column>
<el-table-column v-if="settings[3].show"
prop="classificationName"
label="所属分类"
align="center"
min-width="120"></el-table-column>
<el-table-column v-if="settings[4].show"
prop="typeId"
label="栏目类型"
align="center"
min-width="100">
<template slot-scope="scope"> <template slot-scope="scope">
{{ types.find(e => e.id === scope.row.typeId).name }} {{ types.find(e => e.id === scope.row.typeId).name }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column v-if="settings[5].show" prop="founderName" label="录入人" align="center" <el-table-column v-if="settings[5].show"
min-width="80"></el-table-column> prop="founderName"
<el-table-column v-if="settings[6].show" prop="editorName" label="修改人" align="center" label="录入人"
min-width="80"></el-table-column> align="center"
<el-table-column v-if="settings[7].show" prop="updateTime" label="修改日期" align="center" min-width="150" min-width="80"></el-table-column>
sortable="custom"></el-table-column> <el-table-column v-if="settings[6].show"
<el-table-column v-if="settings[8].show" prop="releaseTime" label="发布日期" align="center" min-width="100" prop="editorName"
sortable="custom"></el-table-column> label="修改人"
<el-table-column v-if="settings[9].show" prop="totalBrowsing" label="总浏览" align="center" align="center"
min-width="70"></el-table-column> min-width="80"></el-table-column>
<el-table-column v-if="settings[10].show" prop="workNumber" label="状态" align="center" min-width="80"> <el-table-column v-if="settings[7].show"
prop="updateTime"
label="修改日期"
align="center"
min-width="150"
sortable="custom"></el-table-column>
<el-table-column v-if="settings[8].show"
prop="releaseTime"
label="发布日期"
align="center"
min-width="100"
sortable="custom"></el-table-column>
<el-table-column v-if="settings[9].show"
prop="totalBrowsing"
label="总浏览"
align="center"
min-width="70"></el-table-column>
<el-table-column v-if="settings[10].show"
prop="workNumber"
label="状态"
align="center"
min-width="80">
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.isRelease ? '已发布' : '草稿' }} {{ scope.row.isRelease ? '已发布' : '草稿' }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column v-auth="'/site/list:' + siteName + ':内容管理:文章管理:置顶'" prop="sequence" label="置顶" align="center" <el-table-column v-auth="'/site/list:' + siteName + ':内容管理:文章管理:置顶'"
min-width="80" sortable="custom"> prop="sequence"
label="置顶"
align="center"
min-width="80"
sortable="custom">
<template slot-scope="scope"> <template slot-scope="scope">
<i v-if="scope.row.isRelease" :class="['squ-icon', scope.row.isTop ? 'el-icon-check' : 'el-icon-close']" <i v-if="scope.row.isRelease"
@click="sticky(scope.row)"></i> :class="['squ-icon', scope.row.isTop ? 'el-icon-check' : 'el-icon-close']"
@click="sticky(scope.row)"></i>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column v-if="settings[11].show" label="操作" align="center" width="190"> <el-table-column v-if="settings[11].show"
label="操作"
align="center"
width="190">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button v-auth="'/site/list:' + siteName + ':内容管理:文章管理:预览'" type="text" <el-button v-auth="'/site/list:' + siteName + ':内容管理:文章管理:预览'"
@click="preview(scope.row)">预览</el-button> type="text"
<el-button v-auth="'/site/list:' + siteName + ':内容管理:文章管理:编辑'" type="text" @click="preview(scope.row)">预览</el-button>
@click="edit(scope.row)">编辑</el-button> <el-button v-auth="'/site/list:' + siteName + ':内容管理:文章管理:编辑'"
<el-button v-auth="'/site/list:' + siteName + ':内容管理:文章管理:删除'" type="text" type="text"
@click="handleDelete(scope.row)">删除</el-button> @click="edit(scope.row)">编辑</el-button>
<el-switch v-if="scope.row.isRelease" v-auth="'/site/list:' + siteName + ':内容管理:文章管理:禁用'" class="m-l-10" <el-button v-auth="'/site/list:' + siteName + ':内容管理:文章管理:删除'"
v-model="scope.row.isDisable" :active-value="0" :inactive-value="1" type="text"
@change="switchOff($event, scope.row, scope.$index)"> @click="handleDelete(scope.row)">删除</el-button>
<el-switch v-if="scope.row.isRelease"
v-auth="'/site/list:' + siteName + ':内容管理:文章管理:禁用'"
class="m-l-10"
v-model="scope.row.isDisable"
:active-value="0"
:inactive-value="1"
@change="switchOff($event, scope.row, scope.$index)">
</el-switch> </el-switch>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<div class="pagination"> <div class="pagination">
<el-pagination background @current-change="currentChange" :current-page="page" layout="total, prev, pager, next" <el-pagination background
:total="total"></el-pagination> @current-change="currentChange"
:current-page="page"
layout="total, prev, pager, next"
:total="total"></el-pagination>
</div> </div>
</div> </div>
</div> </div>
@ -137,9 +226,9 @@ export default {
name: '修改人' name: '修改人'
} }
], ],
keyword: this.$route.query.keyword || '', keyword: '',
list: [], list: [],
page: +this.$route.query.page || 1, page: 1,
pageSize: 10, pageSize: 10,
total: 0, total: 0,
modifiedTimeSort: '', modifiedTimeSort: '',
@ -247,7 +336,7 @@ export default {
// //
getData () { getData () {
const id = this.$refs.column.getCurrentKey() const id = this.$refs.column.getCurrentKey()
this.$router.push(`/article?columnId=${id}&page=${this.page}&keyword=${this.keyword || ''}`).catch(e => { }) this.$router.push(`/article?columnId=${id}`).catch(e => { })
const keyword = encodeURI(this.keyword) const keyword = encodeURI(this.keyword)
const data = { const data = {
siteId: this.$store.state.content.site.id, siteId: this.$store.state.content.site.id,
@ -405,35 +494,30 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
.custom-tree-node { .custom-tree-node {
display: inline-flex; display: inline-flex;
align-items: center; align-items: center;
} }
.name { .name {
display: inline-block; display: inline-block;
max-width: 160px; max-width: 160px;
margin-right: 20px; margin-right: 20px;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
} }
.squ-icon { .squ-icon {
font-size: 16px; font-size: 16px;
font-weight: 600; font-weight: 600;
cursor: pointer; cursor: pointer;
color: #f70000; color: #f70000;
&.el-icon-check {
&.el-icon-check { color: #05991e;
color: #05991e; }
}
} }
/deep/.squ-input { /deep/.squ-input {
width: auto; width: auto;
.el-input__inner {
.el-input__inner { width: 60px;
width: 60px; padding: 0 10px;
padding: 0 10px; }
}
} }
</style> </style>

@ -82,7 +82,7 @@
</div> </div>
<ul class="news"> <ul class="news">
<li> <li>
<img src="https://www.iasf.ac.cn/images/home/3.png" alt=""> <img src="https://new.iasf.ac.cn/images/home/3.png" alt="">
<div class="texts"> <div class="texts">
<h6>2022 New Year Message from President Sun Dongbai</h6> <h6>2022 New Year Message from President Sun Dongbai</h6>
<p class="des">2021 is another challenging year for the Institute of Advanced Science Facilities, <p class="des">2021 is another challenging year for the Institute of Advanced Science Facilities,
@ -92,7 +92,7 @@
</div> </div>
</li> </li>
<li> <li>
<img src="https://www.iasf.ac.cn/images/home/3.png" alt=""> <img src="https://new.iasf.ac.cn/images/home/3.png" alt="">
<div class="texts"> <div class="texts">
<h6>2022 New Year Message from President Sun Dongbai</h6> <h6>2022 New Year Message from President Sun Dongbai</h6>
<p class="des">2021 is another challenging year for the Institute of Advanced Science Facilities, <p class="des">2021 is another challenging year for the Institute of Advanced Science Facilities,
@ -102,7 +102,7 @@
</div> </div>
</li> </li>
<li> <li>
<img src="https://www.iasf.ac.cn/images/home/3.png" alt=""> <img src="https://new.iasf.ac.cn/images/home/3.png" alt="">
<div class="texts"> <div class="texts">
<h6>2022 New Year Message from President Sun Dongbai</h6> <h6>2022 New Year Message from President Sun Dongbai</h6>
<p class="des">2021 is another challenging year for the Institute of Advanced Science Facilities, <p class="des">2021 is another challenging year for the Institute of Advanced Science Facilities,
@ -112,7 +112,7 @@
</div> </div>
</li> </li>
<li> <li>
<img src="https://www.iasf.ac.cn/images/home/3.png" alt=""> <img src="https://new.iasf.ac.cn/images/home/3.png" alt="">
<div class="texts"> <div class="texts">
<h6>2022 New Year Message from President Sun Dongbai</h6> <h6>2022 New Year Message from President Sun Dongbai</h6>
<p class="des">2021 is another challenging year for the Institute of Advanced Science Facilities, <p class="des">2021 is another challenging year for the Institute of Advanced Science Facilities,
@ -122,7 +122,7 @@
</div> </div>
</li> </li>
<li> <li>
<img src="https://www.iasf.ac.cn/images/home/3.png" alt=""> <img src="https://new.iasf.ac.cn/images/home/3.png" alt="">
<div class="texts"> <div class="texts">
<h6>2022 New Year Message from President Sun Dongbai</h6> <h6>2022 New Year Message from President Sun Dongbai</h6>
<p class="des">2021 is another challenging year for the Institute of Advanced Science Facilities, <p class="des">2021 is another challenging year for the Institute of Advanced Science Facilities,
@ -132,7 +132,7 @@
</div> </div>
</li> </li>
<li> <li>
<img src="https://www.iasf.ac.cn/images/home/3.png" alt=""> <img src="https://new.iasf.ac.cn/images/home/3.png" alt="">
<div class="texts"> <div class="texts">
<h6>2022 New Year Message from President Sun Dongbai</h6> <h6>2022 New Year Message from President Sun Dongbai</h6>
<p class="des">2021 is another challenging year for the Institute of Advanced Science Facilities, <p class="des">2021 is another challenging year for the Institute of Advanced Science Facilities,

@ -91,8 +91,8 @@ export default {
.block { .block {
padding: 2rem 0; padding: 2rem 0;
background: url(https://www.iasf.ac.cn/images/contactUs/3.png) 0 130px no-repeat, background: url(https://new.iasf.ac.cn/images/contactUs/3.png) 0 130px no-repeat,
url(https://www.iasf.ac.cn/images/contactUs/4.png) bottom right no-repeat; url(https://new.iasf.ac.cn/images/contactUs/4.png) bottom right no-repeat;
background-color: #f7f8fa; background-color: #f7f8fa;
} }

@ -34,23 +34,21 @@
</div> </div>
</div> </div>
<div class="c-wrap"> <div class="cards">
<div class="cards"> <ul>
<ul> <li v-for="(item, i) in modules[2].list" :key="i">{{ item.title }}</li>
<li v-for="(item, i) in modules[2].list" :key="i">{{ item.title }}</li> <div class="cover" @click="toSet(2)">点击配置文本</div>
</ul> </ul>
</div> </div>
<div class="block committee gray"> <div class="block committee gray">
<div class="inner c-wrap"> <div class="inner c-wrap">
<div class="left"> <div class="left">
<h2>{{ modules[2].list[curYear].list[0].title }}</h2> <h2>{{ modules[2].list[curYear].list[0].title }}</h2>
<div class="text" v-html="modules[2].list[curYear].list[0].des"></div> <div class="text" v-html="modules[2].list[curYear].list[0].des"></div>
</div>
<img class="pic" :src="modules[2].list[curYear].list[0].pic" alt="">
</div> </div>
<img class="pic" :src="modules[2].list[curYear].list[0].pic" alt="">
</div> </div>
<div class="cover" @click="toSet(2)">点击配置文本</div>
</div> </div>
</div> </div>

@ -6,35 +6,35 @@ import addRoutes from '@/libs/route/addRoutes'
* 用户信息 * 用户信息
* */ * */
export default { export default {
namespaced: true, namespaced: true,
state: { state: {
avatar: 'https://www.iasf.ac.cn/images/avatar.png', avatar: 'https://new.iasf.ac.cn/images/avatar.png',
userId: '', userId: '',
userName: '', userName: '',
crumbs: '' crumbs: ''
},
mutations: {
setAvatar: (state, avatar) => {
if (avatar) state.avatar = avatar
}, },
setUserId: (state, userId) => { mutations: {
state.userId = userId setAvatar: (state, avatar) => {
if (avatar) state.avatar = avatar
},
setUserId: (state, userId) => {
state.userId = userId
},
setUserName: (state, userName) => {
state.userName = userName
},
setCrumbs: (state, crumbs) => {
state.crumbs = crumbs
}
}, },
setUserName: (state, userName) => { actions: {
state.userName = userName logout({ commit, state, dispatch }) {
}, return new Promise((resolve, reject) => {
setCrumbs: (state, crumbs) => { util.local.remove(Setting.storeKey)
state.crumbs = crumbs util.local.remove(Setting.tokenKey)
} location.reload()
}, resolve()
actions: { })
logout ({ commit, state, dispatch }) { }
return new Promise((resolve, reject) => {
util.local.remove(Setting.storeKey)
util.local.remove(Setting.tokenKey)
location.reload()
resolve()
})
} }
}
}; };
Loading…
Cancel
Save