提交 4b0c22f6 authored 作者: lihuihui's avatar lihuihui

开发1+x项目站

上级 e79161e1
module.exports = {
domain: 'dev.ezijing.com',
url: 'https://sofia2.ezijing.com/api',
url: 'https://x2.ezijing.com/api',
isEnableToIphoneDebugger: false,
apiBaseURL: '/api',
webpack: {
......@@ -11,9 +11,9 @@ module.exports = {
regeneratorRuntime: 'window.regeneratorRuntime'
},
devServer: {
proxy: {
/* 多个代理 */
// '/api': {
// proxy: {
// /* 多个代理 */
// '/api/microservices': {
// target: $GLOBAL.webConf.url,
// selfHandleResponse: false,
// // selfHandleResponse: true, // 自定义 响应结构
......@@ -28,7 +28,7 @@ module.exports = {
// '^/api': '/' // 需要rewrite重写的
// }
// }
}
// }
}
},
ProvidePlugin: {},
......
<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.12.0</center>
</body>
</html>
<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.12.0</center>
</body>
</html>
import { articleApi } from '@api'
export default class ArticleAction {
getAllClassify (obj) { return articleApi.getAllClassify(obj).then(res => res) }
getArticle (obj) { return articleApi.getArticle(obj).then(res => res) }
getArticleDetail (id) { return articleApi.getArticleDetail(id).then(res => res) }
}
import { reportApi } from '@api'
export default class ReportAction {
/* zws项目内容获取 */
getContent (name) { return reportApi.getContent(name).then(res => res) }
/* zws新闻/消息获取 */
getNews (obj) { return reportApi.getNews(obj).then(res => res) }
/* 获取当前状态 */
getStatus (obj) { return reportApi.getStatus(obj).then(res => res) }
/* 获取测评系统测试地址 */
getexamTestUrl () { return reportApi.getexamTestUrl().then(res => res) }
}
import LoginAction from './LoginAction'
import ReportAction from './ReportAction'
// import LoginAction from './LoginAction'
import ArticleAction from './ArticleAction'
let loginAction = new LoginAction()
// let loginAction = new LoginAction()
let reportAction = new ReportAction()
let articleAction = new ArticleAction()
const cAction = {
loginAction,
reportAction
// loginAction,
articleAction
}
/**
......
import BaseAPI from './base_api'
export default class ScoreAPI extends BaseAPI {
// 获取文章分类
getAllClassify = (obj = {}) => this.get('/microservices/api/category/articles', obj, {})
// 获取文章
getArticle = (obj = {}) => this.get('/microservices/api/article/list', obj, {})
// 获取文章详情
getArticleDetail = (id) => this.get(`/microservices/api/article/${id}/info`)
}
import LoginAPI from './login_api'
import ReportAPI from './report_api'
// import LoginAPI from './login_api'
import ArticleAPI from './article_api'
let loginApi = new LoginAPI(webConf)
// let loginApi = new LoginAPI(webConf)
let reportApi = new ReportAPI(webConf)
let articleApi = new ArticleAPI(webConf)
export { loginApi, reportApi }
export { articleApi }
import BaseAPI from './base_api'
export default class ScoreAPI extends BaseAPI {
/**
* 获取我的学分信息
*/
getContent = name =>
this.get(
`/v1/cms/projects/1000/contents/${encodeURIComponent(decodeURIComponent(name))}?sites=sofia.ezijing.com`,
{
addhost: 'zws-api.ezijing.com',
Host: 'zws-api.ezijing.com'
}
)
}
import BaseAPI from './base_api'
import _ from 'lodash'
export default class LoginAPI extends BaseAPI {
/**
* 调用登录接口
* @param {[string]} obj.login_name 用户名
* @param {[string]} obj.password 密码 md5加密
* @param {[string]} obj.service 这里 一直是定值 sofia.ezijing.com
*/
userLogin = (obj = {}) => this.post('/user_center/login', _.assignIn(obj, { service: 'sofia.ezijing.com' }), { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } })
/**
* 调用退出登录
* @param {[string]} obj.service 这里 一直是定值 sofia.ezijing.com
*/
outLogin = (obj = {}) => this.post('/user_center/logout', _.assignIn(obj, { service: 'sofia.ezijing.com' }), { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } })
/**
* 当前登录用户,检测是否该系统有权限
* /user_center/get_user_info
*/
getInfo = () => this.get('/passport/account/get-user-info', {}, { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } })
/**
* 发送验证码
* @param {[string]} obj.mobile 手机号
* @param {[string]} obj.service 这里 一直是定值 sofia.ezijing.com
*/
sendCode = (obj = {}) => this.post('/user_center/send_login_code', _.assignIn(obj, { service: 'sofia.ezijing.com' }), { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } })
/**
* 验证码登录
* @param {[string]} obj.mobile 手机号
* @param {[string]} obj.code 验证码
* @param {[string]} obj.service 这里 一直是定值 sofia.ezijing.com
*/
codeLogin = (obj = {}) => this.post('/user_center/code_login', _.assignIn(obj, { service: 'sofia.ezijing.com' }), { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } })
/**
* 发送重置密码验证码
* @param {[string]} obj.contact 手机号/邮箱
* @param {[string]} obj.source_type 值 3
* @param {[string]} obj.service 这里 一直是定值 sofia.ezijing.com
*/
sendResetPwdCode = (obj = {}) => this.post('/user_center/send_reset_password_code', _.assignIn(obj, { service: 'sofia.ezijing.com' }), { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } })
/**
* 重置密码验证码确认
* @param {[string]} obj.contact 手机号/邮箱
* @param {[string]} obj.code 验证码
* @param {[string]} obj.service 这里 一直是定值 sofia.ezijing.com
*/
validateCode = (obj = {}) => this.post('/user_center/validate_code', _.assignIn(obj, { service: 'sofia.ezijing.com' }), { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } })
/**
* 重置密码
* @param {[string]} obj.contact 手机号/邮箱
* @param {[string]} obj.code 验证码
* @param {[string]} obj.new_password 新的密码
* @param {[string]} obj.service 这里 一直是定值 sofia.ezijing.com
*/
resetPwd = (obj = {}) => this.post('/user_center/reset_password', _.assignIn(obj, { service: 'sofia.ezijing.com' }), { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } })
/**
* 个人信息 - 修改密码
* @param {[string]} obj.old_password 验证码
* @param {[string]} obj.new_password 新的密码
* @param {[string]} obj.service 这里 一直是定值 sofia.ezijing.com
*/
updatePwd = (obj = {}) => this.post('/user_center/change_password', _.assignIn(obj, { service: 'sofia.ezijing.com' }), { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } })
/**
* 个人信息 - 上传头像
*/
updatePic = (obj = {}) => this.post('/v3/storage/upload/avatar', obj, { headers: { 'Content-Type': 'multipart/form-data' } })
/**
* 注册
*/
register = (obj = {}) => this.post('/v3/storage/upload/avatar', obj, { headers: { 'Content-Type': 'multipart/form-data' } })
}
import BaseAPI from '@/api/base_api'
const httpRequest = new BaseAPI(webConf)
const projectId = webConf.others.projectId
/**
* 获取用户信息
*/
export function getUser() {
return httpRequest.get('/passport/account/get-user-info')
}
/**
* 修改用户信息
*/
export function updateUser(data) {
return httpRequest.post('/usercenter/user/update-user', data)
}
/**
* 修改密码
*/
export function updatePassword(data) {
return httpRequest.post('/usercenter/user/update-pwd', data)
}
/**
* 发送验证码
*/
export function sendCode(data) {
return httpRequest.post('/usercenter/user/send-code', data)
}
/**
* 获取报名信息
*/
export function getApplication(params) {
return httpRequest.get(`/enrollment/v1.0/application-materials/${projectId}`, params)
}
/**
* 获取报名信息
*/
export function updateApplication(data) {
return httpRequest.post(`/enrollment/v1.0/application-materials/${projectId}/put`, data, {
headers: { 'Content-Type': 'application/json' }
})
}
/**
* 获取报名审核状态
*/
export function getApplicationStatus() {
return httpRequest.get(`/enrollment/v1.0/application-materials/profile/${projectId}`)
}
/**
* 获取支付二维码
*/
export function getOrder(params) {
return httpRequest.get(
`/enrollment/v1.0/application-materials/payment-records/request/${projectId}/APPLICATION_FEE`,
params
)
}
/**
* 检查支付状态
*/
export function checkPay(id, params) {
return httpRequest.get(
`/enrollment/v1.0/application-materials/payment-records/check-status/${projectId}/APPLICATION_FEE/${id}`,
params
)
}
/**
* 写推荐信
*/
export function addLetter(userId, letterId, data) {
return httpRequest.post(
`/enrollment/v1.0/application-materials/reco-letters/submit/${projectId}/${userId}/${letterId}/put`,
data,
{
headers: { 'Content-Type': 'application/json' }
}
)
}
/**
* 更换推荐人
*/
export function updateProvider(letterId, data) {
return httpRequest.post(
`/enrollment/v1.0/application-materials/reco-letters/change-provider/${projectId}/${letterId}/put`,
data,
{
headers: { 'Content-Type': 'application/json' }
}
)
}
/**
* 再次邀请
*/
export function sendToProvider(letterId) {
return httpRequest.get(
`/enrollment/v1.0/application-materials/reco-letters/send-invitation-to-provider/${projectId}/${letterId}`
)
}
/**
* 退出登录
*/
export function logout() {
return httpRequest.get('/passport/rest/logout')
}
/**
* 更改附件状态
*/
export function changeFileStatus(userId, recordId, status) {
return httpRequest.get(
`/enrollment/v1.0/application-materials/attachments/change-status/${projectId}/${userId}/${recordId}`,
{ status }
)
}
import BaseAPI from './base_api'
export default class ScoreAPI extends BaseAPI {
//zws/v1/cms/news
/**
* zws项目内容获取
*/
getContent = name =>
this.get(
`zws/v1/cms/projects/1000/contents/${encodeURIComponent(decodeURIComponent(name))}?sites=sofia.ezijing.com`,
{}
)
/**
* zws新闻/消息获取
*/
getNews = (obj = {}) => this.get('/zws/v1/cms/news', obj, {})
/**
* 获取当前状态值
* project_id [int] 项目id
*/
getStatus = (obj = {}) => this.get('zws/v1/enrollment/submissions', obj, {})
/**
* 获取测评系统测试地址
*/
getexamTestUrl = () => this.get('usercenter/v1/evaluation/get-address', {}, {})
}
......@@ -39,7 +39,7 @@ export default {
{ title: '首页', path: '/index' },
{ title: '工作动态', path: '/news', children: { path: ['/news/detail'] } },
{ title: '教材中心', path: '/textBook', children: { path: ['/textBook/detail', '/textBook/chapter'] }},
{ title: '师资培训', path: '/train', children: { path: ['/train/detail', 'train/form'] } },
{ title: '师资培训', path: '/train', children: { path: ['/train/detail', '/train/form'] } },
{ title: '考核站点', path: '/site' },
{ title: '证书成绩查询', path: '/query' }
],
......@@ -88,7 +88,7 @@ export default {
},
methods: {
closeMask(blo) {
this.isLogin = blo
// this.isLogin = blo
},
handleLogin() {
this.passport.login()
......@@ -103,13 +103,13 @@ export default {
this.$router.push('/')
},
onReady(isLogin, user = {}) {
this.isLogin = isLogin
// this.isLogin = isLogin
this.user = user
window.G.UserInfo = user
},
loginSuccess(data) {
this.passport.checkLoginStatus((isLogin, user = {}) => {
this.isLogin = isLogin
// this.isLogin = isLogin
this.user = user
this.$router.push('/my')
})
......
......@@ -20,12 +20,22 @@
<div :class="tabsIndex ? 'btn active' : 'btn'" @click="tabs(1)">活动公告</div>
</div>
<div class="news-content">
<div class="title">关于1+X金融数字化营销证书考核站点申报的通知</div>
<div class="title" v-if="list[0]">{{ list[0].excerpt }}</div>
<ul>
<li><span><router-link to="/news/detail">大数据全国分布</router-link></span></li>
<li><span><router-link to="/news/detail">关于举办1+X金融数字化营销证书师</router-link></span></li>
<li><span><router-link to="/news/detail">关于举办1+X金融数字化营销证书师资培训的通知</router-link></span></li>
<li><span><router-link to="/news/detail">关于举办1+X金融数字化营销证书师资培训的通知,北京(项…</router-link></span><div class="more"><router-link to="/news">更多</router-link></div></li>
<template v-for="(item, index) in list">
<template v-if="index <= 3">
<router-link to="/news/detail" :key="index">
<li>
<span>
{{ item.title }}
</span>
<div class="more" v-if="list.length - 1 == index">
<router-link to="/news">更多</router-link>
</div>
</li>
</router-link>
</template>
</template>
</ul>
</div>
</div>
......@@ -41,7 +51,7 @@
<span>活动报名</span>
<div class="icon"></div>
</div>
<div class="btn">
<div class="btn" @click="goPage('https://vslc.ncb.edu.cn/ncb_admin/#/login?systemType=3', 1)">
<span>试点申报</span>
<div class="icon"></div>
</div>
......@@ -71,7 +81,7 @@
</li>
<li>
<div class="entrance">
<div class="btn">
<div class="btn" @click="goPage('https://x-exam.ezijing.com/login/6747074947782279168', 1)">
<span>考试软件</span>
<div class="icon"></div>
</div>
......@@ -83,6 +93,7 @@
</template>
<script>
import action from '@action'
import { Swiper, SwiperSlide, directive, pagination } from 'vue-awesome-swiper'
import 'swiper/swiper-bundle.css'
export default {
......@@ -96,7 +107,8 @@ export default {
},
data() {
const _this = this
return {
return {//this.$store.state.classify
articleClassify: this.$store.state.classify,
tabsIndex: 0,
swiperList: [
{
......@@ -116,7 +128,8 @@ export default {
}
},
swiperIndex: 0,
videoShow: false
videoShow: false,
list: []
}
},
computed: {
......@@ -124,6 +137,9 @@ export default {
return this.$refs.mySwiper.$swiper
}
},
mounted() {
this.newsList()
},
methods: {
tabs(n) {
this.tabsIndex = n
......@@ -136,6 +152,28 @@ export default {
path: path
})
}
},
newsList() {
const loading = this.$loading({
lock: true,
text: 'Loading',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'//
})
if (!Object.keys(this.$store.state.classify).length) {
setTimeout(() => {
this.articleClassify = this.$store.state.classify
this.newsList()
}, 2000)
} else {
const findId = this.articleClassify.children.find(item => {
return item.display_name === '新闻动态'
})
action.articleAction.getArticle({ category_id: findId.id }).then(res => {
this.list = res.data.list
loading.close()
})
}
}
}
}
......
<template>
<div class="item-box">
<div class="title">关于1+X金融数字化营销证书考核站点申报的通知</div>
<div class="time">2020.11.11</div>
<div class="content">亲以引红些它准济始所正八传代或务立只调儿次国起界状与省省温存声历从安革之周特治劳高消数白参军权被又影由区近。应认标风内听本多历起持极矿二习决组状火四专放内又过响知水个实百别得号科能局品走积关效准规并酸把华起思国查其影中根越干认路识者议政效历从安革之周特治劳高消数白参军权被又影由区近。应认标风内听本多历起持极矿二习决组状火四专放内又过响知水个实百别得号科能局品走积关效准规并酸把华起思国查其影中根越干认路识者议政效</div>
<router-link to="/news/detail"><div class="detail-btn">查看详情</div></router-link>
<div class="title">{{ data.title }}</div>
<div class="time">{{ data.created_at }}</div>
<div class="content" v-html="data.content"></div>
<router-link :to="`/news/detail?id=${data.id}`"><div class="detail-btn">查看详情</div></router-link>
</div>
</template>
<script>
export default {
props: {
data: {
type: Object,
default: {}
}
}
}
</script>
<style lang="scss" scoped>
......
<template>
<div class="news-detail-box">
<div class="title">关于1+X金融数字化营销证书考核站点申报的通知</div>
<div class="content content-max-width">往价计子断选社界他界四收半很导条回于问个地给资政色金美关做除当打目商马层消酸龙信样世手除制二美信很按划从专我。时先革自好利治条每部教最运则府完接上立什线为象律然对就率则适第变一需党事连识接月报专各口细信要指有飞应组必飞队知从好作用直矿里。已量少查市平料通题界期下干报必决离制所体把成清示果等看书气住更克等发般产元界儿合。给办手生命二也飞法设能速光信要指有飞应组必飞队知从好作用直矿里。已量少查市平料通题界期下干报必决离制所体把成清示果等看书气住更克等发般产元界儿合。给办手生命二也飞法设能速光信要指有飞应组必飞队知从好作用直矿里。已量少查市平料通题界期下干报必决离制所体把成清示果等看书气住更克等发般产元界儿合。给办手生命二也飞法设能速光</div>
<div class="title">{{ data.title }}</div>
<div class="content content-max-width" v-html="data.content"></div>
</div>
</template>
<script>
import action from '@action'
export default {
components: {
},
data() {
return {
data: {}
}
},
mounted() {},
mounted() {
this.getData()
},
methods: {
getData() {
action.articleAction.getArticleDetail(this.$route.query.id).then(res => {
this.data = res.data
})
}
}
}
</script>
......
......@@ -2,18 +2,17 @@
<div class="news-box">
<btn-tabs class="tabs-box" :data="tabsData"></btn-tabs>
<ul class="content-max-width">
<li>
<item></item>
</li>
<li>
<item></item>
<template v-for="(item, index) in list">
<li :key="index">
<item :data="item"></item>
</li>
</template>
</ul>
<div class="pagination">
<el-pagination
:page-size="100"
:page-size="pages.page_size"
layout="prev, pager, next, jumper"
:total="1000">
:total="pages.total">
</el-pagination>
</div>
</div>
......@@ -21,6 +20,7 @@
<script>
import item from './components/listItem'
import btnTabs from '@/components/tabs/btnTabs'
import action from '@action'
export default {
components: {
item,
......@@ -28,13 +28,44 @@ export default {
},
data() {
return {
articleClassify: this.$store.state.classify,
tabsData: {
options: ['新闻动态', '活动公告']
},
list: [],
pages: {}
}
}
},
mounted() {},
created() {
},
mounted() {
this.newsList()
},
methods: {
newsList() {
const loading = this.$loading({
lock: true,
text: 'Loading',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
})
if (!Object.keys(this.$store.state.classify).length) {
setTimeout(() => {
this.articleClassify = this.$store.state.classify
this.newsList()
}, 2000)
} else {
const findId = this.articleClassify.children.find(item => {
return item.display_name === '新闻动态'
})
console.log(findId.id)
action.articleAction.getArticle({ category_id: findId.id }).then(res => {
this.list = res.data.list
this.pages = res.data.pages
loading.close()
})
}
}
}
}
</script>
......
<template>
<div>
<div class="site-box">
<div class="title">考核站点</div>
<div class="content">
<div class="site-box" v-if="list.length">
<div class="title">{{ list[0].title }}</div>
<div class="content" v-html="list[0].content">
证书成绩查询请前往职业技能等级证书信息管理服务平台(网址: https://vslc.ncb.edu.cn )进行查询。
</div>
<div class="btn" @click="goDetail">去查询</div>
</div>
<img src="https://zws-imgs-pub.ezijing.com/static/public/ad80cb2d9e46fbc063919ecc1f55578c.png" alt="">
<img :src="list[0].cover_pc_url" alt="">
</div>
</template>
<script>
import action from '@action'
export default {
data() {
return {//this.$store.state.classify
articleClassify: this.$store.state.classify,
list: []
}
},
mounted() {
this.newsList()
},
methods: {
goDetail() {
window.open('https://vslc.ncb.edu.cn')
},
newsList() {
const loading = this.$loading({
lock: true,
text: 'Loading',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
})
if (!Object.keys(this.$store.state.classify).length) {
setTimeout(() => {
this.articleClassify = this.$store.state.classify
this.newsList()
}, 2000)
} else {
const findId = this.articleClassify.children.find(item => {
return item.display_name === '证书成绩查询'
})
action.articleAction.getArticle({ category_id: findId.id }).then(res => {
this.list = res.data.list
loading.close()
})
}
}
}
}
......
<template>
<div>
<div class="site-box">
<div class="title">考核站点</div>
<div class="content">
证书成绩查询请前往职业技能等级证书信息管理服务平台(网址: https://vslc.ncb.edu.cn )进行查询。
<div class="detail-box" :style="setHeight">
<div class="title">请选择机构类型</div>
<div class="card-box">
<div class="card">
<div class="tit">院校</div>
<div class="icon1"></div>
<div class="btn" @click="goPage('https://vslc.ncb.edu.cn/ncb_admin/#/login?systemType=3')">点击选择</div>
</div>
<div class="card">
<div class="tit">培训评价组织</div>
<div class="icon2"></div>
<div class="btn" @click="goPage('https://vslc.ncb.edu.cn/ncb_admin/#/login?systemType=2')">点击选择</div>
</div>
<div class="btn" @click="goDetail">去查询</div>
</div>
<img src="https://zws-imgs-pub.ezijing.com/static/public/ad80cb2d9e46fbc063919ecc1f55578c.png" alt="">
</div>
</template>
<script>
export default {
computed: {
setHeight() {
return `height: ${document.documentElement.clientHeight}px`
}
},
methods: {
goDetail() {
window.open('https://vslc.ncb.edu.cn')
goPage(url) {
window.open(url)
}
}
}
</script>
<style lang="scss" scoped>
.site-box{
width: 650px;
margin: 0 auto;
body{
width: 100%;
height: 100%;
}
.detail-box{
width: 100%;
height: 100%;
background: url(https://zws-imgs-pub.ezijing.com/static/public/9de4efa3d87e1ce5ab1ab4561cf2b3a1.png) center;
background-size: cover;
.title{
text-align: center;
padding: 80px 0;
font-size: 24px;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #C01540;
line-height: 33px;
}
.card-box{
display: flex;
justify-content: center;
.card{
width: 250px;
height: 314px;
background: #FFFFFF;
box-shadow: 0px 2px 10px 0px rgba(0, 0, 0, 0.05);
border-radius: 4px;
&:nth-child(1){
margin-right: 180px;
}
.tit{
font-size: 18px;
font-weight: bold;
color: #222222;
line-height: 18px;
margin: 24px 0;
text-align: center;
padding: 40px 0;
}
.content{
font-size: 14px;
color: #666666;
line-height: 20px;
.icon1{
margin: 0 auto;
width: 88px;
height: 100px;
background: url(https://zws-imgs-pub.ezijing.com/static/public/24e834ede8334617a09c493ac35822d0.png);
background-size: 100% 100%;
margin-bottom: 40px;
}
.icon2{
margin: 0 auto;
width: 101px;
height: 100px;
background: url(https://zws-imgs-pub.ezijing.com/static/public/04f69710ea011f233709e593ac0cd88b.png);
background-size: 100% 100%;
margin-bottom: 40px;
}
.btn{
text-align: center;
margin: 0 auto;
width: 96px;
height: 36px;
background: linear-gradient(315deg, rgba(225, 47, 116, 0.83) 0%, #C01540 100%);
border-radius: 4px;
font-size: 14px;
color: #FFFFFF;
line-height: 20px;
margin: 24px auto;
line-height: 36px;
text-align: center;
cursor: pointer;
}
}
img{
width: 876px;
display: block;
margin: 0 auto 24px auto;
}
}
}
</style>
<template>
<div class="site-box">
<div class="title">考核站点</div>
<div class="content">
<div class="site-box" v-if="list.length">
<div class="title">{{ list[0].title }}</div>
<div class="content" v-html="list[0].content">
有关单位意向申报成为1+X职业技能等级证书考核站点,请按要求登录政府网站申请试点院校业务平台(网址: https://vslc.ncb.edu.cn )输入试点院校管理员的账号密码,在考试管理菜单中,打开申报考点栏目,即可自主申报考核站点
</div>
<div class="btn" @click="goDetail">去申请</div>
</div>
</template>
<script>
import action from '@action'
export default {
data() {
return {//this.$store.state.classify
articleClassify: this.$store.state.classify,
list: []
}
},
mounted() {
this.newsList()
},
methods: {
goDetail() {
this.$router.push({
path: '/site/detail'
})
},
newsList() {
const loading = this.$loading({
lock: true,
text: 'Loading',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'//
})
if (!Object.keys(this.$store.state.classify).length) {
setTimeout(() => {
this.articleClassify = this.$store.state.classify
this.newsList()
}, 2000)
} else {
const findId = this.articleClassify.children.find(item => {
return item.display_name === '考核站点'
})
action.articleAction.getArticle({ category_id: findId.id }).then(res => {
this.list = res.data.list
loading.close()
})
}
}
}
}
......
<template>
<div class="item-box">
<img src="https://zws-imgs-pub.ezijing.com/static/public/7c63bd40600a040f867fe4db9014fb7c.png" alt="">
<img :src="data.cover_pc_url" alt="">
<div class="right-content">
<div class="title">关于1+X金融数字化营销证书考核站点申报的通知</div>
<div class="des-box">
<div class="title">{{ data.title }}</div>
<div class="des-box" v-html="data.content">
<p class="ind">作者:基础数据维护及档案管理</p>
<p>出版时间:基础数据维护及档案管理</p>
<p class="ind">ISBN:基础数据维护及档案管理</p>
<p>书籍简介:基础数据维护及档案管理</p>
</div>
<router-link to="/train/detail">
<router-link :to="`/train/detail?id=${data.id}`">
<div class="detail-btn">查看详情</div>
</router-link>
</div>
<div class="right-time">
<div class="week">星期四</div>
<div class="time">12月29日</div>
<div class="week">{{ setDate('w') }}</div>
<div class="time">{{ setDate('m') }}</div>
</div>
</div>
</template>
<script>
export default {
props: {
data: {
type: Object,
default: {}
}
},
data() {
return {
input: ''
}
},
computed: {
setDate() {
return (type) => {
const date = new Date(this.data.created_at)
let reData = ''
if (type === 'w') {
reData = new Array("星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六")[date.getDay()]
} else {
reData = date.getMonth() + 1 +'月'+ date.getDate() +'日'
}
return reData
}
}
}
}
</script>
......
<template>
<div class="train-detail-box content-max-width">
<div class="content-left">
<div class="title">智能处理与应用</div>
<div class="title">{{ data.title }}</div>
<div class="item-box">
<img src="https://zws-imgs-pub.ezijing.com/static/public/7c63bd40600a040f867fe4db9014fb7c.png" alt="">
<div class="right-content">
<!-- <div class="title">关于1+X金融数字化营销证书考核站点申报的通知</div> -->
<div class="des-box">
<div class="des-box" v-html="data.content">
<p class="ind">作者:基础数据维护及档案管理</p>
<p>出版时间:基础数据维护及档案管理</p>
<p class="ind">ISBN:基础数据维护及档案管理</p>
......@@ -20,18 +20,34 @@
</div>
<div class="content-card">
<div class="tit">最新会议</div>
<div class="text">生实解着利土具度海张际取得时美议九报当社并因或争拉青再大精周不院指权展理会后市中议候只土写海院油称县白力反油子特军再六红省采大队清</div>
<div class="btn-boxs">
<div class="text" v-html="data.excerpt">生实解着利土具度海张际取得时美议九报当社并因或争拉青再大精周不院指权展理会后市中议候只土写海院油称县白力反油子特军再六红省采大队清</div>
<!-- <div class="btn-boxs">
<div class="btns">确定</div>
</div>
</div> -->
</div>
</div>
</template>
<script>
import item from './components/item'
import action from '@action'
export default {
components: {
item
},
data() {
return {
data: {}
}
},
mounted() {
this.getData()
},
methods: {
getData() {
action.articleAction.getArticleDetail(this.$route.query.id).then(res => {
this.data = res.data
})
}
}
}
</script>
......
......@@ -5,12 +5,11 @@
<screen-tabs class="screen-tabs-box" :data="screenTabsData"></screen-tabs>
<div class="train-mian">
<ul>
<li>
<item />
</li>
<li>
<item />
<template v-for="(item, index) in list">
<li :key="index">
<item :data="item"></item>
</li>
</template>
</ul>
<div class="calendar">
<inlineCalendar mode="during"></inlineCalendar>
......@@ -21,9 +20,9 @@
</div>
<div class="pagination">
<el-pagination
:page-size="100"
:page-size="pages.page_size"
layout="prev, pager, next, jumper"
:total="1000">
:total="pages.total">
</el-pagination>
</div>
</template>
......@@ -34,6 +33,7 @@
</div>
</template>
<script>
import action from '@action'
import btnTabs from '@/components/tabs/btnTabs'
import screenTabs from '@/components/tabs/screenTabs'
import noData from '@/components/tabs/noData'
......@@ -49,22 +49,49 @@ export default {
},
data() {
return {
articleClassify: this.$store.state.classify,
list: [],
tabsIndex: 0,
value3: '',
btnTabsData: {
options: ['新闻动态', '活动公告']
options: ['会议报名', '核心专家']
},
screenTabsData: {
name: '筛选:',
options: ['全部', '正在进行', '未开始', '已结束']
},
pages: {}
}
}
},
mounted() {},
mounted() {
this.newsList()
},
methods: {
tabsChange(i) {
console.log(111)
this.tabsIndex = i
},
newsList() {
const loading = this.$loading({
lock: true,
text: 'Loading',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'//
})
if (!Object.keys(this.$store.state.classify).length) {
setTimeout(() => {
this.articleClassify = this.$store.state.classify
this.newsList()
}, 2000)
} else {
const findId = this.articleClassify.children.find(item => {
return item.display_name === '会议报名'
})
action.articleAction.getArticle({ category_id: findId.id }).then(res => {
this.list = res.data.list
this.pages = res.data.pages
loading.close()
})
}
}
}
}
......@@ -134,5 +161,17 @@ export default {
.m-during{
background: #C01540 !important;
}
.m-prev-btn{
width: 11px !important;
height: 18px !important;
background-image: url(https://zws-imgs-pub.ezijing.com/static/public/8cc2155bd9f98ae7e50d64bf4bad9e6a.png) !important;
background-size: 100% 100% !important;
}
.m-next-btn{
width: 11px !important;
height: 18px !important;
background-image: url(https://zws-imgs-pub.ezijing.com/static/public/ef4abd96b29419b0eb182c291f802488.png) !important;
background-size: 100% 100% !important;
}
}
</style>
......@@ -31,5 +31,7 @@ export default [
// 证书成绩查询
{ path: '/register', component: () => import('@/pages/account/register.vue') }
]
}
},
// 考核站点详情
{ path: '/site/detail', component: () => import('@/pages/site/detail.vue') }
]
import Vue from 'vue'
import Vuex from 'vuex'
// import router from '@/router'
import { logout } from '@/api/my'
import action from '@action'
Vue.use(Vuex)
export default new Vuex.Store({
state: {},
const store = new Vuex.Store({
state: {
classify: {}
},
getters: {},
mutations: {},
mutations: {
setClassify(state, classify) {
state.classify = classify
}
},
actions: {
logout() {
return logout().then(() => {
// router.push('/')
window.location.href = '/'
})
},
getClassify({ commit }) {
action.articleAction.getAllClassify().then(response => {
commit('setClassify', response.data)
})
}
}
})
export default store
store.dispatch('getClassify')
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论