提交 a1b41e2a authored 作者: 王鹏飞's avatar 王鹏飞

chore: update

上级 bd1671bc
......@@ -12,37 +12,37 @@ export function getArticle(params) {
export function getArticleDetail(id) {
return httpRequest.get(`/api/microservices/api/article/${id}/info`)
}
export function formCommit(data) {
return httpRequest.post('/api/microservices/api/v3/apply/teacher-form', data)
}
// 获取轮播
export function getBanner(params) {
return httpRequest.get('/api/microservices/api/carousel/list', { params })
}
// 发送验证码
export function sendCheckedCode(data) {
export function sendCode(data) {
return httpRequest.post('/api/usercenter/user/send-code', data)
}
// 注册
export function register(data) {
return httpRequest.post('/api/usercenter/user/register', data)
}
// 注册
export function register2(data) {
// 注册并登录
export function registerAndLogin(data) {
return httpRequest.post('/api/usercenter/user/register-and-login-by-mobile', data)
}
// 获取用户信息
export function getUserInfo() {
export function getUser() {
return httpRequest.get('/api/passport/account/get-user-info')
}
// 表单回显
export const getFormDetail = (params) => {
return httpRequest.get('/api/microservices/api/v3/apply/teacher-form-detail', { params })
// 提交报名信息
export function submitForm(data) {
return httpRequest.post('/api/microservices/api/v3/apply/student-form', data)
}
// 下单
export function getOrder(data) {
return httpRequest.post('/api/microservices/api/v3/apply/unified-order', data)
// 获取报名信息
export function getFormDetail(params) {
return httpRequest.get('/api/microservices/api/v3/apply/student-form-detail', { params })
}
// 创建订单
export function createOrder(data) {
return httpRequest.post('/api/microservices/api/v3/apply/student-unified-order', data)
}
// 查看订单状态
export function checkPay(id) {
......@@ -50,20 +50,17 @@ export function checkPay(id) {
}
// 支付完成通知
export function payEnd(data) {
return httpRequest.post('/api/microservices/api/v3/apply/pay-end', data)
return httpRequest.post('/api/microservices/api/v3/apply/student-pay-end', data)
}
// 更新用户信息
export function updateUserInfo(data) {
export function updateUser(data) {
return httpRequest.post('/api/usercenter/user/update-user', data)
}
// 获取证书
export function getCard(params) {
export function getCertCard(params) {
return httpRequest.get('/api/cert/api/v1/cert/detail', { params })
}
/**
* 提交留咨信息
*/
export function postNes(data) {
// 提交留咨信息
export function submitApplicationForm(data) {
return httpRequest.post('/api/enrollment/v1.0/applications', data)
}
<template>
<el-button v-bind="$attrs" :disabled="currentDisabled" @click="start">{{ currentValue }}</el-button>
</template>
<script>
export default {
name: 'Countdown',
props: {
step: { type: Number, default: 1000 },
disabled: { type: Boolean, default: false },
seconds: { type: Number, default: 60 },
defaultValue: { type: String, default: '获取验证码' },
},
data() {
return {
currentDisabled: false,
currentSeconds: 0,
timer: null,
}
},
watch: {
disabled: {
immediate: true,
handler(value) {
this.currentDisabled = value
},
},
},
computed: {
currentValue() {
const longTime = this.seconds - this.currentSeconds
return longTime < this.seconds ? `${longTime}秒后重发` : this.defaultValue
},
},
methods: {
genTimer() {
this.clearTimer()
this.timer = setInterval(() => {
this.currentSeconds++
if (this.currentSeconds === this.seconds) {
this.stop()
}
}, this.step)
},
clearTimer() {
this.timer && clearInterval(this.timer)
},
start() {
this.currentDisabled = true
this.genTimer()
this.$emit('start')
},
stop() {
this.clearTimer()
this.currentSeconds = 0
this.currentDisabled = false
this.$emit('stop')
},
},
}
</script>
......@@ -13,6 +13,7 @@
<template v-if="Object.values(user).length">
<div class="login-name">
<span class="name">{{ user.realname || user.username }}</span>
&nbsp;&nbsp;
<span @click="handleLogout">退出</span>
</div>
</template>
......@@ -45,7 +46,7 @@ export default {
{ name: '首页', path: '/index' },
{ name: '通知公告', path: '/news' },
{ name: '商务数据分析技术-智能数据分析与实战应用', path: '/product' },
{ name: '技能培训', path: '/teacher' },
{ name: '技能培训', path: '/train' },
// { name: '教科研服务', path: '/service' },
{ name: '认证中心', path: '/attestation' },
],
......
<template>
<div class="reg-form-box">
<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm forms">
<el-form-item label="学校" prop="region">
<el-select v-model="ruleForm.region" placeholder="请选择学校" class="width100">
<el-option label="学校一" value="shanghai"></el-option>
<el-option label="学校二" value="beijing"></el-option>
</el-select>
</el-form-item>
<el-form-item label="姓名" prop="name">
<el-input v-model="ruleForm.name" placeholder="请输入您的姓名"></el-input>
</el-form-item>
<el-form-item label="手机号" prop="phone">
<el-input v-model="ruleForm.phone" placeholder="请输入您的手机号"></el-input>
</el-form-item>
<el-form-item label="验证码" prop="code">
<el-input v-model="ruleForm.phone" placeholder="请输入您的手机号"></el-input>
</el-form-item>
<el-form-item label="身份证号" prop="codeId">
<el-input v-model="ruleForm.codeId" placeholder="请输入您的身份证号"></el-input>
</el-form-item>
<el-form-item label="密码" prop="pass">
<el-input type="password" v-model="ruleForm.pass" placeholder="请输入您的密码"></el-input>
</el-form-item>
<el-form-item label="确认密码" prop="checkPass">
<el-input type="password" v-model="ruleForm.checkPass" placeholder="请输入您的密码"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm('ruleForm')" class="sub-btn">立即注册</el-button>
<!-- <el-button @click="resetForm('ruleForm')">重置</el-button> -->
</el-form-item>
</el-form>
</div>
</template>
<script>
export default {
data() {
const checkPhone = (rule, value, callback) => {
const reg = /^(13[0-9]|14[01456879]|15[0-3,5-9]|16[2567]|17[0-8]|18[0-9]|19[0-3,5-9])\d{8}$/
if (!reg.test(value)) {
return callback(new Error())
}
}
const checkCodeId = (rule, value, callback) => {
const reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
if (!reg.test(value)) {
return callback(new Error())
}
}
const validatePass = (rule, value, callback) => {
if (value === '') {
callback(new Error('请输入密码!'))
} else {
if (this.ruleForm.checkPass !== '') {
this.$refs.ruleForm.validateField('checkPass')
}
callback()
}
}
const validatePass2 = (rule, value, callback) => {
if (value === '') {
callback(new Error('请再次输入密码'))
} else if (value !== this.ruleForm.pass) {
callback(new Error('两次输入密码不一致!'))
} else {
callback()
}
}
return {
ruleForm: {
name: '',
region: '',
phone: '',
codeId: '',
delivery: false,
type: [],
checkPass: '',
pass: '',
code: ''
},
rules: {
name: [{ required: true, message: '请输入姓名', trigger: 'blur' }],
region: [{ required: true, message: '请选择学校', trigger: 'change' }],
phone: [
{ required: true, message: '请输入手机号', trigger: 'blur' },
{ required: true, message: '手机号不正确', validator: checkPhone, trigger: 'blur' }
],
code: [
{ required: true, message: '请输入验证码', trigger: 'blur' },
{ validator: validatePass, trigger: 'blur' }
],
codeId: [
{ required: true, message: '请输入身份证号', trigger: 'blur' },
{ required: true, message: '身份证号不正确', validator: checkCodeId, trigger: 'blur' }
],
pass: [
{ required: true, message: '请输入密码', trigger: 'blur' },
{ validator: validatePass, trigger: 'blur' }
],
checkPass: [
{ required: true, message: '请输入密码', trigger: 'blur' },
{ validator: validatePass2, trigger: 'blur' }
]
}
}
},
methods: {
isRules(n) {
console.log(n)
},
submitForm(formName) {
this.$refs[formName].validate(valid => {
if (valid) {
alert('submit!')
} else {
console.log('error submit!!')
return false
}
})
},
resetForm(formName) {
this.$refs[formName].resetFields()
}
}
}
</script>
<style lang="scss" scoped>
.reg-form-box {
width: 380px;
margin: 0 auto;
padding: 24px 0;
.width100 {
width: 100%;
}
}
::v-deep {
.forms {
i {
font-size: 20px;
}
input {
border-radius: 4px;
}
}
}
.sub-btn {
width: 270px;
height: 40px;
background: linear-gradient(315deg, rgba(225, 47, 116, 0.83) 0%, #c01540 100%);
border-radius: 4px;
}
</style>
......@@ -42,9 +42,9 @@ export default {
},
methods: {
// 获取证书列表
handleGetCard() {
handlegetCertCard() {
const params = { project_prefix: 'x1' }
api.getCard(params).then((res) => {
api.getCertCard(params).then((res) => {
this.cardList = res.data?.list
})
},
......@@ -59,7 +59,7 @@ export default {
},
mounted() {
// 获取证书
this.handleGetCard()
this.handlegetCertCard()
},
}
</script>
......
......@@ -33,7 +33,7 @@
</template>
<script>
import { postNes } from '@/api/article'
import { submitApplicationForm } from '@/api/article'
export default {
components: {},
data() {
......@@ -66,7 +66,7 @@ export default {
}
}
this.form = Object.assign(this.form, { comment: `#咨询产品:${this.f1};#院校名称:${this.f2};#院系:${this.f3}` })
postNes(this.form)
submitApplicationForm(this.form)
.then((res) => {
if (res && res.status === 200) {
this.$message({
......
<template>
<div class="book-detail-box content-max-width">
<!-- <breadcrumb class="content-max-width crumb" :data="crumbData"/> -->
<div class="bool-det-top">
<div class="item-box">
<img src="https://zws-imgs-pub.ezijing.com/static/public/7c63bd40600a040f867fe4db9014fb7c.png" />
<div class="right-content">
<div class="title">《金融产品数字化营销职业技能等级认证教材》(初级)</div>
<div class="des-box">
<p>
<span>教材简介:</span
><i
>本系列教材紧跟金融各行业数字化转型和职业教育的人才培养发展的需求,随行业的数字化转型、数字化营销工具和专业升级等情况及时动态更新。教材设置了思维导图、学习目标、案例实践、问题思考等板块,以职业技能等级标准为依据,结合行业企业用人技能要求的紧迫程度,设计教材内容和框架体系。确定教材各案例实践涵盖的职业技能等级工作任务与就业面向相匹配,以真实案例实践为驱动,促进学生深刻掌握先进技术能力。</i
>
</p>
<p class="align-r"><span>定价:</span><i>¥39</i></p>
<p class="align-r cen"><span>数量:</span><input type="text" /></p>
<div class="buy-btn">购买</div>
</div>
</div>
</div>
<div class="v-code-box" v-if="false">
<div class="block"></div>
<div class="text">手机扫码浏览</div>
</div>
</div>
<div class="book-det-bottom">
<div class="fix-left">
<div class="material">
<div class="title">教材介绍</div>
<div class="content">
本系列教材紧跟金融各行业数字化转型和职业教育的人才培养发展的需求,随行业的数字化转型、数字化营销工具和专业升级等情况及时动态更新。教材设置了思维导图、学习目标、案例实践、问题思考等板块,以职业技能等级标准为依据,结合行业企业用人技能要求的紧迫程度,设计教材内容和框架体系。确定教材各案例实践涵盖的职业技能等级工作任务与就业面向相匹配,以真实案例实践为驱动,促进学生深刻掌握先进技术能力。
</div>
<div class="info">
<p><span>作者:</span>赵瑾龙</p>
<p><span>出版时间:</span>2020.10.10</p>
<p><span>ISBN:</span>2020.10.19—2020.11.20</p>
<p><span>发行日期:</span>2020.20.20</p>
</div>
</div>
<div class="catalog">
<div class="title">目录</div>
<ul>
<li>
<div class="chapter">第一章</div>
<!-- @click="goChapter" -->
<div class="node">第一节</div>
</li>
<li>
<div class="chapter">第一章</div>
<div class="node">第一节</div>
</li>
<li>
<div class="chapter">第一章</div>
<div class="node">第一节</div>
</li>
</ul>
</div>
</div>
<div class="author">
<div class="title">作者</div>
<div class="item">
<div class="info-box">
<img src="https://zws-imgs-pub.ezijing.com/static/public/f064b2cb83039e1d4754993167d73864.png" />
<div class="info">
<div class="name">赵瑾龙</div>
<div class="xx">研究院</div>
</div>
</div>
<div class="intr">
<div class="name">简介:</div>
<div class="text">
赵瑾龙先生是中国人民银行研究生部经济学博士,现任香港致富证券有限公司首席经济学家,兼任研究院院长、清华大学五道口金融学院硕士生导师、紫荆-印第安纳大学kelley商学院金融学硕士项目责任教授,他主要研究方向是宏观经济、货币政策和投资策略。
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import breadcrumb from '@/components/breadcrumb.vue'
export default {
components: {
breadcrumb,
},
data() {
return {
crumbData: [
{
path: '/',
name: '首页',
},
{
path: '/textBook',
name: '教材中心',
},
{
name: '金融数字化营销',
},
],
}
},
methods: {
goChapter() {
this.$router.push({
path: '/textBook/chapter',
})
},
},
}
</script>
<style lang="scss" scoped>
.content-max-width {
width: 1200px;
margin: 0 auto;
}
.buy-btn {
width: 150px;
height: 36px;
background: linear-gradient(315deg, rgba(225, 47, 116, 0.83) 0%, #c01540 100%);
border-radius: 4px;
text-align: center;
font-size: 14px;
color: #ffffff;
line-height: 36px;
margin-top: 16px;
cursor: pointer;
}
.book-det-bottom {
display: flex;
.catalog {
.title {
font-size: 18px;
font-weight: bold;
color: #c80046;
line-height: 25px;
margin-bottom: 24px;
}
ul {
li {
width: 729px;
padding: 16px 0;
border-top: 1px solid #eee;
.chapter {
font-size: 18px;
font-weight: bofld;
color: #262626;
line-height: 25px;
}
.node {
font-size: 14px;
color: #7d7d7d;
line-height: 20px;
margin-top: 12px;
cursor: pointer;
}
}
}
}
.author {
margin-left: auto;
.title {
font-size: 18px;
font-weight: bold;
color: #c80046;
line-height: 25px;
margin-bottom: 24px;
}
.item {
width: 280px;
border-top: 1px solid #eee;
margin-top: 24px;
.info-box {
padding-top: 16px;
display: flex;
align-items: center;
img {
width: 80px;
height: 80px;
}
.info {
margin-left: 16px;
.name {
font-size: 18px;
font-weight: bold;
color: #2b2b2b;
line-height: 25px;
}
.xx {
font-size: 14px;
color: #888888;
line-height: 20px;
margin-top: 12px;
}
}
}
.intr {
margin-top: 16px;
display: flex;
.name {
font-size: 14px;
font-weight: bold;
color: #262626;
line-height: 20px;
white-space: nowrap;
}
.text {
font-size: 14px;
color: #7d7d7d;
line-height: 20px;
}
}
}
}
}
.bool-det-top {
display: flex;
padding-top: 24px;
}
.book-detail-box {
.v-code-box {
width: 136px;
margin-left: 24px;
// margin-top: 24px;
.block {
width: 136px;
height: 136px;
background: #d8d8d8;
border: 1px solid #979797;
}
.text {
font-size: 14px;
color: #222222;
line-height: 20px;
margin-top: 8px;
text-align: center;
}
}
.item-box {
// padding: 24px 0;
// border-bottom: 1px solid #eee;
display: flex;
img {
width: 258px;
height: 143px;
display: block;
}
.right-content {
margin-left: 24px;
.title {
font-size: 18px;
font-weight: bold;
color: #c01540;
line-height: 25px;
}
.des-box {
// width: 523px;
margin-top: 24px;
p {
input {
width: 70px;
height: 40px;
border: 1px solid #ccc;
border-radius: 4px;
outline: none;
padding-left: 10px;
}
// text-align: right;
font-size: 14px;
color: #666666;
line-height: 20px;
margin-bottom: 8px;
display: flex;
&.cen {
align-items: center;
}
&.align-r {
text-align: right;
}
span {
width: 70px;
font-size: 14px;
font-weight: bold;
color: #222222;
line-height: 20px;
white-space: nowrap;
}
i {
width: 523px;
font-style: normal;
font-size: 14px;
color: #717171;
line-height: 20px;
text-align: left;
}
}
}
.detail-btn {
color: #fff;
text-align: center;
line-height: 36px;
width: 96px;
height: 36px;
background: linear-gradient(315deg, rgba(225, 47, 116, 0.83) 0%, #c01540 100%);
border-radius: 4px;
margin-top: 16px;
}
}
}
}
.crumb {
padding-top: 24px;
}
.material {
width: 729px;
margin: 56px 0 30px;
.title {
line-height: 57px;
border-bottom: 1px solid #ddd;
font-size: 18px;
font-weight: bold;
color: #c80046;
}
.content {
font-size: 14px;
color: #717171;
line-height: 20px;
margin-top: 16px;
}
.info {
margin-top: 16px;
font-size: 14px;
color: #262626;
line-height: 20px;
p {
margin-bottom: 14px;
}
span {
font-weight: bold;
}
}
}
</style>
<template>
<div>
<img src="https://webapp-pub.ezijing.com/project/x-new/ser-banner.png" class="banner" />
<section class="section">
<h1 class="pt-100">教材中心</h1>
<p class="describe">
“金融产品数字化营销职业技能等级证书”的系列教材,由紫荆教育组织国内数字化营销理论研究的顶级院校学者教授,以及金融行业龙头机构的资深专家和一线实践精英携手编著,具有理论扎实、观点前沿、讲解详实、案例丰富、流程科学、实操精准的特点,在国内金融产品数字化营销领域,尚属首创。<br />
项目导学:以思维导图的形式勾勒出本项目的核心知识点,便于学生整体把握项目的主要知识内容和学习要求。<br />
学习目标:明确给出任务的知识目标和能力目标,便于学生对照检查学习效果。<br />
任务导入:基于工作领域职业能力分析,精心设计典型工作任务,明确提出任务要求,引导学生开展典型、真实的职业实践。<br />
任务实施:以任务为导向,以工作过程为主线,设计完成典型工作任务的业务“流程图”。<br />
知识链接:围绕学习目标,针对“任务实施”所需知识,以“必需、够用”为原则,选取核心知识点。<br />
项目测评:依据金融产品数字化营销职业技能等级标准实务考核要求,设计重要知识点测评试题,方便学生及时检验项目实务知识学习效果。
</p>
<img
src="https://webapp-pub.ezijing.com/project/x-new/ser-img1.png"
style="display: block; width: 908px; margin: 0 auto 80px" />
<img src="https://webapp-pub.ezijing.com/project/x-new/ser-img2.png" />
<h1 class="pt-80">课程中心</h1>
<p class="describe">
信息化、数字化教学资源是促进书证融通的重要因素之一,紫荆教育信息化、数字化资源立足“辅教辅学”的功能定位,遵循“一体化设计、结构化课程、颗粒化资源”的建构逻辑完成资源整合,通过提供教学视频、PPT、课程大纲、题库、试卷、实践案例等,使教师教学准备工作更加便利化,帮助教师“好上课”;
通过符合学生年龄特点、兴趣爱好的图文、音频等资源,引发学生学习兴趣,帮助老师将重难点课程内容化抽象为形象,通过项目、任务激发学生学习动机,使得被动接受的学生主动获取知识,从而引发学生自主学习能力、自主探索能力,提升课堂实施的有效性,帮助教师“上好课”。
</p>
<div class="card-list">
<div class="card-list_item">
<div class="item-title">线上课程研发</div>
<div class="item-con1">课程内容设置<br />课程师资匹配<br />课程制作方案</div>
</div>
<div class="card-list_item">
<div class="item-title">课程制作</div>
<div class="item-con2">
<p>
课程录制&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;课程剪辑<br />
课程编辑&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;课程成片
</p>
<div class="tips">(课程录制,满足各种需求。不同形式拥有专属的场地)</div>
</div>
</div>
<div class="card-list_item">
<div class="item-title">线下课程开发</div>
<div class="item-con2">
<p>
教学设计&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;教务计划<br />
实施执行方案
</p>
<div class="tips">(全国三大教学基地,10多间不同需求的教室与会议室)</div>
</div>
</div>
</div>
<h1 class="pt-100">双创中心</h1>
<p class="describe">
紫荆教育融合校企资源,打造与传统教学模式不同的创新能力培养体系,从而促进教育体系的改革创新,并联合院校申报双创项目。
双创项目建设包括创新训练项目、创业训练项目和创业实践项目三类。
</p>
<div class="card-center">
<div class="card-center_item">
<img src="https://webapp-pub.ezijing.com/project/x-new/ser-img3.png" />
<div class="item-con">
<h2>创新训练项目</h2>
<p>
在校生个人或团队在导师指导下,自主完成创新性研究项目设计、研究项目实施、研究报告撰写、成果(学术)交流等工作。
</p>
</div>
</div>
<div class="card-center_item">
<div class="item-con">
<h2>创业训练项目</h2>
<p>在校生团队在导师指导下,完成商业计划书编制、可行性研究、企业模拟运行、创业报告撰写等工作。</p>
</div>
<img style="margin-top: 53px" src="https://webapp-pub.ezijing.com/project/x-new/ser-img4.png" />
</div>
<div class="card-center_item">
<img src="https://webapp-pub.ezijing.com/project/x-new/ser-img5.png" />
<div class="item-con">
<h2>创业实践项目</h2>
<p>
学生团队在学校导师和企业导师共同指导下,基于前期创新创业训练项目的成果,开发具有市场前景的创新性产品或者服务,开展创业实践活动。
</p>
</div>
</div>
</div>
<h1 class="pt-100">科研中心</h1>
<p class="describe">
在科研创新方面紫荆教育和学校共同成立“科研创新”专家组,由教科研专家、行业/企业资深人士、学校骨干教师等组成,专门承接教育科研项目的选题、申报,研究与实施等。
</p>
<img style="margin-bottom: 100px" src="https://webapp-pub.ezijing.com/project/x-new/ser-foot.png" />
</section>
</div>
</template>
<script>
export default {
components: {},
data() {
return {}
},
methods: {},
}
</script>
<style lang="scss" scoped>
.section {
width: 1200px;
margin: 0 auto;
}
.banner {
width: 100%;
display: block;
}
.pt-80 {
padding-top: 80px;
}
.pt-100 {
padding-top: 100px;
}
h1 {
font-size: 32px;
font-weight: bold;
color: #333333;
line-height: 34px;
text-align: center;
margin-bottom: 50px;
}
.describe {
font-size: 18px;
color: #666666;
line-height: 36px;
margin-bottom: 50px;
}
.describe-img {
width: 100%;
display: block;
}
.card-list {
display: flex;
justify-content: space-between;
.card-list_item {
width: 380px;
height: 220px;
background-color: #fff;
}
.item-title {
line-height: 50px;
background: #aa1941;
text-align: center;
font-size: 20px;
font-weight: bold;
color: #ffffff;
}
.item-con1 {
font-size: 18px;
color: #424242;
line-height: 36px;
text-align: center;
margin-top: 37px;
}
.item-con2 {
p {
font-size: 18px;
color: #424242;
line-height: 36px;
text-align: center;
margin-top: 37px;
}
.tips {
font-size: 14px;
color: #666666;
margin-top: 25px;
text-align: center;
}
}
}
.card-center {
display: flex;
justify-content: space-between;
.card-center_item {
background-color: #fff;
width: 380px;
height: 420px;
}
.item-con {
padding: 25px 22px 0;
h2 {
font-weight: bold;
font-size: 18px;
color: #424242;
line-height: 30px;
}
p {
font-size: 18px;
color: #666;
line-height: 30px;
}
}
}
</style>
差异被折叠。
<template>
<div>
<img class="banner" src="/images/banner2.png" />
<section class="section">
<h1 class="pt-80">技能培训公告</h1>
<notice></notice>
<div class="nav-list">
<div class="nav-list_item" v-for="(item, index) in navList" :key="index" @click="register(item)">
<div class="item-icon">
<img class="n-active" :src="item.icon" />
<img class="active" :src="item.aIcon" />
</div>
<div class="item-txt">{{ item.text }}</div>
</div>
</div>
<h2 class="pt-80" id="md1" style="text-align: center">技能培训报名</h2>
<h3 style="margin-top: 50px">一、培训目标</h3>
<p class="des">
培训目标:培养初级商务数据分析师。<br />
学员通过本阶段课程学习,了解商务数据分析师相关岗位要求和岗位基础知识,学会数据采集、清洗、处理、可视化和基础分析技能,使学员能够胜任商务数据分析师基础岗位工作。在工作中为企业决策提供基础数据与依据。
</p>
<h3>二、培训对象</h3>
<p class="des">企业职工、职业院校学生、退伍军人</p>
<h3>三、培训方式</h3>
<p class="des">
根据“金融产品数字化营销职业技能等级证书”试点工作需求,分批次(分区域)开展师资培训。培训采取结构化、多元化的培训方式设计,包含在线视频、专题授课、案例研讨、实践演练、互动讨论、汇报展示、整体考核等。
</p>
<h3>四、培训内容</h3>
<p class="des">
1.1+X证书制度的意义与政策解读<br />
2.金融产品数字化营销发展现状与前景展望<br />
3.职业技能等级标准解读<br />
4.核心知识串讲与互动交流<br />
5.实训案例剖析与互动交流<br />
6.课程考试
</p>
<h3>五、培训费用</h3>
<p class="des">详见每期技能培训通知。</p>
<div class="t-btn">
<div class="name">通知关注:</div>
<router-link to="/news">
<div class="btn">通知</div>
</router-link>
</div>
<div class="t-btn">
<div class="name">报名入口:</div>
<router-link to="/train">
<div class="btn">报名</div>
</router-link>
</div>
<div class="pt-box">
<h1 id="md2">学习平台</h1>
<div class="flex">
<img src="https://webapp-pub.ezijing.com/project/x-new/train-dn.png" />
<div class="pt-right">
<div class="txt">
紫荆教育为师生精心打造综合一体化学习平台,可实现考核体系的标准化,数据资源的统一化,师资学习的多元化,以及学习管理的系统化,最终形成学、练、训、考、评、管一体的数字化营销学习平台。
</div>
<a target="_blank" href="https://x-learning.ezijing.com/course/learn">
<div class="btn">进入系统</div>
</a>
</div>
</div>
</div>
</section>
<vue-passport ref="passport" @ready="onReady" :options="options"></vue-passport>
</div>
</template>
<script>
import notice from '@/components/notice.vue'
export default {
components: {
notice,
},
data() {
return {
navList: [
{
icon: 'https://webapp-pub.ezijing.com/project/x-new/train-icon1.png',
aIcon: 'https://webapp-pub.ezijing.com/project/x-new/train-icon-a1.png',
text: '注册账号',
isRegister: true,
},
{
icon: 'https://webapp-pub.ezijing.com/project/x-new/train-icon2.png',
aIcon: 'https://webapp-pub.ezijing.com/project/x-new/train-icon-a2.png',
text: '技能培训报名',
id: 'md1',
},
{
icon: 'https://webapp-pub.ezijing.com/project/x-new/train-icon3.png',
aIcon: 'https://webapp-pub.ezijing.com/project/x-new/train-icon-a3.png',
text: '学习平台',
id: 'md2',
},
{
icon: 'https://webapp-pub.ezijing.com/project/x-new/train-icon4.png',
aIcon: 'https://webapp-pub.ezijing.com/project/x-new/train-icon-a4.png',
text: '证书查询',
path: '/queryCard',
},
],
isLogin: false,
options: {
baseUrl: import.meta.env.VITE_API_BASE_URL,
register: {
data: {
username: `ezijing-${new Date().getTime()}`,
},
fields: ['account', 'code', 'password'],
},
login: {
account: {
onSuccess: this.loginSuccess,
},
phone: {
onSuccess: this.loginSuccess,
},
},
},
}
},
mounted() {},
methods: {
register(n) {
if (n.isRegister) {
this.passport.register()
return false
}
if (n.id) {
const element = document.getElementById(n.id)
if (element) {
const offsetTop = element.getBoundingClientRect().top + window.scrollY
window.scrollTo({
top: offsetTop,
behavior: 'smooth',
})
}
return false
}
if (n.path) {
this.$router.push(n)
}
},
onReady(isLogin, user = {}) {
this.user = user
window.sessionStorage.userInfo = JSON.stringify(user)
},
loginSuccess(data) {
this.passport.checkLoginStatus((isLogin, user = {}) => {
window.sessionStorage.userInfo = JSON.stringify(user)
this.isLogin = isLogin
this.user = user
this.$router.push('/my')
})
window.location.reload()
},
},
computed: {
passport() {
return this.$refs.passport
},
},
}
</script>
<style lang="scss" scoped>
.section {
width: 1200px;
margin: 0 auto;
}
.banner {
width: 100%;
display: block;
}
h1 {
font-size: 32px;
font-weight: bold;
color: #333333;
line-height: 34px;
text-align: center;
margin-bottom: 50px;
}
.pt-80 {
padding-top: 80px;
}
.pt-100 {
padding-top: 100px;
}
.nav-list {
display: flex;
justify-content: space-between;
padding-top: 60px;
.nav-list_item {
width: 264px;
height: 264px;
background: #ffffff;
box-shadow: 0px 2px 12px 1px rgba(0, 0, 0, 0.1);
cursor: pointer;
&:hover {
background-color: #aa1941;
.item-icon {
.n-active {
display: none;
}
.active {
display: block;
}
}
.item-txt {
color: #fff;
}
}
.item-icon {
height: 150px;
display: flex;
justify-content: center;
align-items: center;
margin-top: 20px;
.active {
display: none;
}
}
.item-txt {
font-size: 22px;
color: #333333;
text-align: center;
}
}
}
h2 {
font-size: 24px;
color: #333333;
}
h3 {
color: #333333;
font-size: 20px;
margin-bottom: 5px;
}
.des {
font-size: 18px;
margin-bottom: 40px;
line-height: 30px;
color: #333333;
}
.t-btn {
display: flex;
align-items: center;
margin-bottom: 20px;
.name {
font-size: 18px;
color: #333333;
}
.btn {
width: 150px;
background: #aa1941;
border-radius: 6px 6px 6px 6px;
color: #fff;
text-align: center;
line-height: 40px;
}
}
.pt-box {
padding-top: 40px;
padding-bottom: 40px;
.flex {
display: flex;
margin-top: 35px;
img {
min-width: 293px;
display: block;
}
.pt-right {
margin-left: 70px;
.txt {
font-size: 18px;
color: #333333;
line-height: 30px;
}
.btn {
width: 150px;
line-height: 40px;
background: #aa1941;
border-radius: 6px 6px 6px 6px;
text-align: center;
color: #fff;
cursor: pointer;
margin-top: 60px;
}
}
}
}
.new-list {
display: flex;
justify-content: space-between;
margin-bottom: 100px;
.new-list_item {
box-shadow: 0px 2px 12px 1px rgba(0, 0, 0, 0.1);
background-color: #fff;
width: 380px;
height: 560px;
box-sizing: border-box;
padding: 60px 30px 30px;
.new-item_title {
font-size: 20px;
font-weight: bold;
color: #333333;
line-height: 100%;
margin-bottom: 30px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.new-item_con {
font-size: 16px;
color: #333333;
line-height: 26px;
height: 234px;
display: -webkit-box !important;
overflow: hidden;
text-overflow: ellipsis;
word-break: break-all;
-webkit-box-orient: vertical;
-webkit-line-clamp: 9;
}
.new-item_btn {
font-size: 16px;
color: #aa1941;
line-height: 100%;
margin: 20px 0;
}
}
}
</style>
......@@ -3,11 +3,8 @@
<img :src="data.imgUri" />
<div class="right-content">
<div class="title">{{ data.title }}</div>
<!-- v-html="data.additional" -->
<div class="des-box">
<!-- <p class="ind">计划时间:3.24-3.26</p> -->
<p>计划时间:{{ data.time }}</p>
<!-- <p class="ind">ISBN:基础数据维护及档案管理</p> -->
<p>计划人数:{{ data.count }}</p>
</div>
<router-link :to="`/train/detail?id=${data.id}`" v-if="data.activeIndex === 1">
......@@ -16,38 +13,12 @@
<div class="detail-btn" v-if="data.activeIndex === 2">敬请期待</div>
<div class="detail-btn finished" v-if="data.activeIndex === 3">圆满结束</div>
</div>
<!-- <div class="right-time">
<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.published_time)
let reData = ''
if (type === 'w') {
reData = new Array('星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六')[date.getDay()]
} else {
reData = date.getMonth() + 1 + '月' + date.getDate() + '日'
}
return reData
}
},
data: { type: Object, default: () => ({}) },
},
}
</script>
......@@ -98,27 +69,4 @@ export default {
}
}
}
.right-time {
margin-left: auto;
width: 77px;
height: 59px;
background: url(https://zws-imgs-pub.ezijing.com/static/public/30ec4d9c7c282da2e3dae066b00b180b.png);
background-size: 100% 100%;
position: relative;
.week {
text-align: center;
font-size: 12px;
color: #ffffff;
line-height: 12px;
margin-top: 6px;
}
.time {
margin-top: 8px;
text-align: center;
font-size: 16px;
font-weight: bold;
color: #666666;
line-height: 22px;
}
}
</style>
......@@ -4,28 +4,28 @@
<i class="el-icon-close" @click="$emit('closePayPop')"></i>
<div class="tips-cen">
<div class="name">活动名称:</div>
<div class="js">2024年第一期“1+X金融产品数字化营销职业技能等级证书(高级)”技能培训班</div>
<div class="js">{{ train.title }}</div>
</div>
<div class="tips-cen mar-t-20">
<div class="name">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;用:</div>
<div class="money">3800<span></span></div>
<div class="money">{{ train.price }}<span></span></div>
</div>
<div class="tips-top">
<div class="name">支付方式:</div>
<div class="pay-method">
<div :class="payMethod == 2 ? 'li active' : 'li'" @click="tabPayMethod(2)">
<div :class="payMethod == 2 ? 'li active' : 'li'" @click="changePayMethod(2)">
<div class="select-icon"></div>
<div class="icon"></div>
<div class="pay-text">支付宝支付</div>
</div>
<div :class="payMethod == 1 ? 'li active' : 'li'" @click="tabPayMethod(1)">
<div :class="payMethod == 1 ? 'li active' : 'li'" @click="changePayMethod(1)">
<div class="select-icon"></div>
<div class="icon"></div>
<div class="pay-text">微信支付</div>
</div>
</div>
</div>
<div class="pay-btn" @click="getOrder">去支付</div>
<div class="pay-btn" @click="createOrder">去支付</div>
<div class="tips-text">注:请核对报名表信息,支付后将不能修改报名信息。</div>
</div>
<div class="content-box ewm-code" v-if="isCodeShow">
......@@ -44,58 +44,52 @@
import * as api from '@/api/article'
import QrcodeVue from 'qrcode.vue'
export default {
components: {
QrcodeVue,
},
components: { QrcodeVue },
props: {
formData: {
type: Object,
},
periods: {
type: Number,
default: '1',
},
form: { type: Object },
train: { type: Object },
},
data() {
return {
payMethod: 2,
isCodeShow: false,
product_id: '6787934443077107712',
payInfo: {},
time: null,
timer: null,
}
},
methods: {
tabPayMethod(n) {
changePayMethod(n) {
this.payMethod = n
},
getOrder() {
const param = {
pay_type: this.payMethod,
product_id: this.product_id,
form_id: this.formData.id && this.formData.id.toString(),
}
async createOrder() {
const loading = this.$loading({
lock: true,
text: 'Loading',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)',
})
api.getOrder(param).then((res) => {
if (res.code === 200) {
this.payInfo = res.data
this.isCodeShow = true
clearInterval(this.time)
this.time = setInterval(() => {
this.checkPay(res.data.pay_order_id, res.data.order_no)
}, 2000)
loading.close()
} else {
this.$message.error(res.msg)
loading.close()
}
// isCodeShow = true
})
await api
.createOrder({
pay_type: this.payMethod,
shop_id: this.train.shop_id,
spu_id: this.train.shop_id,
sku_id: this.train.sku_id,
form_id: this.form.id,
})
.then((res) => {
if (res.code === 200) {
this.payInfo = res.data
this.isCodeShow = true
clearInterval(this.timer)
this.timer = setInterval(() => {
this.checkPay(res.data.pay_order_id, res.data.order_no)
}, 2000)
loading.close()
} else {
this.$message.error(res.msg)
loading.close()
}
})
},
checkPay(id, order_no) {
api.checkPay(id).then((res) => {
......@@ -108,29 +102,27 @@ export default {
})
this.payEnd(order_no)
this.$emit('payStatus')
clearInterval(this.time)
clearInterval(this.timer)
} else if (order.status !== 0) {
clearInterval(this.time)
clearInterval(this.timer)
}
}
// isCodeShow = true
})
},
closeClear() {
this.isCodeShow = false
this.$emit('closePayPop')
// clearInterval()
},
payEnd(orderOn) {
const param = {
order_no: orderOn,
form_id: this.formData.id.toString(),
form_id: this.form.id.toString(),
}
api.payEnd(param).then((res) => {})
},
},
beforeDestroy() {
// clearInterval(this.time)
clearInterval(this.timer)
},
}
</script>
......
<template>
<div class="search-box">
<el-input
class="input"
placeholder="请输入内容"
v-model="input">
<i slot="prefix" class="el-input__icon el-icon-search"></i>
</el-input>
<div class="search-btn">查询</div>
</div>
</template>
<script>
export default {
data() {
return {
input: ''
}
}
}
</script>
<style lang="scss" scoped>
.search-box{
display: flex;
justify-content: center;
align-items: center;
.input{
width: 328px;
border-radius: 4px;
margin: 0 12px 0 0;
}
.search-btn{
text-align: center;
line-height: 32px;
width: 60px;
height: 32px;
background: linear-gradient(312deg, rgba(192, 21, 64, 0.67) 0%, #C01540 100%);
border-radius: 4px;
font-size: 14px;
color: #FFFFFF;
cursor: pointer;
}
}
</style>
差异被折叠。
......@@ -7,7 +7,6 @@
<div class="item-box">
<img :src="detail.imgUri" />
<div class="right-content">
<!-- <div class="title">《金融产品数字化营销职业技能等级认证教材》(初级)</div> -->
<div class="des-box">
<p>活动类型:技能培训</p>
<p>培训形式:{{ detail.form || '线上直播' }}</p>
......@@ -22,12 +21,7 @@
</div>
<div class="content-card" v-if="detail.excerpt != null">
<div class="tit">最新会议</div>
<div class="text" v-html="detail.excerpt">
生实解着利土具度海张际取得时美议九报当社并因或争拉青再大精周不院指权展理会后市中议候只土写海院油称县白力反油子特军再六红省采大队清
</div>
<!-- <div class="btn-boxs">
<div class="btns">确定</div>
</div> -->
<div class="text" v-html="detail.excerpt"></div>
</div>
</div>
<div class="new-contents content-max-width">
......@@ -51,8 +45,6 @@
<div class="p">
<div class="name">日程安排:</div>
<div class="cont" v-html="detail.content"></div>
<!-- <div class="cont">
</div> -->
</div>
<div class="p">
<div class="name">培训QQ群:</div>
......@@ -72,15 +64,12 @@
</div>
</template>
<script>
import item from './components/item.vue'
import * as api from '@/api/article'
import item from './components/listItem.vue'
import breadcrumb from '@/components/breadcrumb.vue'
import datalist from './data.js'
export default {
components: {
item,
breadcrumb,
},
components: { item, breadcrumb },
data() {
return {
datalist,
......@@ -93,16 +82,6 @@ export default {
return this.datalist.find((item) => item.id === id) || {}
},
},
mounted() {
// this.getData()
},
methods: {
getData() {
api.getArticleDetail(this.$route.query.id).then((res) => {
this.data = res.data
})
},
},
}
</script>
<style lang="scss" scoped>
......@@ -111,10 +90,8 @@ export default {
margin: 0 auto;
}
.train-detail-box {
display: flex;
padding-top: 12px;
.title {
width: 753px;
line-height: 50px;
border-bottom: 1px solid #eee;
font-size: 18px;
......@@ -122,9 +99,7 @@ export default {
color: #c01540;
}
}
.content-left {
width: 753px;
}
.item-box {
padding: 24px 0 0;
// border-bottom: 1px solid #eee;
......@@ -226,7 +201,7 @@ export default {
text-align: right;
}
.cont {
width: 357px;
flex: 1;
font-size: 14px;
color: #7d7d7d;
line-height: 20px;
......
差异被折叠。
<template>
<div>
<!-- <breadcrumb class="content-max-width crumb" :data="crumbData"/> -->
<div class="form-box">
<el-form ref="form" :model="form" label-width="80px" class="forms">
<el-form-item label="姓名" label-width="100px">
<el-input v-model="form.i1"></el-input>
</el-form-item>
<el-form-item label="性别" label-width="100px">
<el-select v-model="form.i2" placeholder="请选择" class="width100">
<el-option label="男" value="shanghai"></el-option>
<el-option label="女" value="beijing"></el-option>
</el-select>
</el-form-item>
<el-form-item label="名族" label-width="100px">
<el-input v-model="form.i3"></el-input>
</el-form-item>
<el-form-item label="职务" label-width="100px">
<el-input v-model="form.i4"></el-input>
</el-form-item>
<el-form-item label="手机号码" label-width="100px">
<el-input v-model="form.i5"></el-input>
</el-form-item>
<el-form-item label="身份证号" label-width="100px">
<el-input v-model="form.i6"></el-input>
</el-form-item>
<el-form-item label="邮箱" label-width="100px">
<el-input v-model="form.i7"></el-input>
</el-form-item>
<el-form-item label="单/合住" label-width="100px">
<el-select v-model="form.i8" placeholder="请选择" class="width100">
<el-option label="单住" value="shanghai"></el-option>
<el-option label="合住" value="beijing"></el-option>
</el-select>
</el-form-item>
<el-form-item label="抬头" label-width="100px">
<el-input v-model="form.i9"></el-input>
</el-form-item>
<el-form-item label="税号" label-width="100px">
<el-input v-model="form.i10"></el-input>
</el-form-item>
<el-form-item label="地址" label-width="100px">
<el-input v-model="form.i11"></el-input>
</el-form-item>
<el-form-item label="开户行、账号" label-width="100px">
<el-input v-model="form.i12"></el-input>
</el-form-item>
<!-- <el-form-item label="付款方式" label-width="100px">
<el-select v-model="form.i9" placeholder="请选择" class="width100">
<el-option label="微信" value="shanghai"></el-option>
<el-option label="支付宝" value="beijing"></el-option>
</el-select>
</el-form-item> -->
<!-- <el-form-item label="身份证号" label-width="100px">
<el-input v-model="form.i10"></el-input>
</el-form-item>
<el-form-item label="地址" label-width="100px">
<el-input type="textarea" v-model="form.i11"></el-input>
</el-form-item>
<el-form-item label="培训需求" label-width="100px">
<el-input type="textarea" v-model="form.i12"></el-input>
</el-form-item> -->
<!-- <el-form-item label-width="100px">
<el-upload
class="upload-demo"
drag
action="https://jsonplaceholder.typicode.com/posts/"
multiple>
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
<div class="el-upload__tip" slot="tip">只能上传jpg/png文件,且不超过500kb</div>
</el-upload>
</el-form-item> -->
<el-form-item label="填写模板" label-width="100px">
<span style="color: #0053c6; cursor: pointer">下载Excel模板</span>
<el-upload
style="margin-left: auto"
class="upload-demo"
action="/api/microservices/admin_api/file/upload"
:on-success="handleChange">
<el-button size="small" type="primary">点击上传</el-button>
<div slot="tip" class="el-upload__tip">请下载模板后,按照模板格式填写完整资料后,上传报名表。</div>
</el-upload>
</el-form-item>
<el-form-item label-width="100px">
<el-button type="primary" @click="onSubmit">提交</el-button>
<el-button @click="back">返回</el-button>
</el-form-item>
</el-form>
</div>
</div>
</template>
<script>
import * as api from '@/api/article'
import breadcrumb from '@/components/breadcrumb.vue'
export default {
components: {
breadcrumb,
},
data() {
return {
file: '',
fileList: [],
crumbData: [
{
path: '/',
name: '首页',
},
{
name: '技能培训',
},
],
form: {
i1: '',
i2: '',
i3: '',
i4: '',
i5: '',
i6: '',
i7: '',
i8: '',
i9: '',
i10: '',
i11: '',
i12: '',
},
formName: {
i1: '姓名',
i2: '性别',
i3: '名族',
i4: '职务',
i5: '手机号码',
i6: '身份证号',
i7: '邮箱',
i8: '单/合住',
i9: '抬头',
i10: '税号',
i11: '地址',
i12: '开户行、账号',
},
}
},
methods: {
onSubmit() {
let flag = true
Object.keys(this.form).map((item) => {
if (item === 'i11' || item === 'i12') {
} else {
if (this.form[item] === '') {
flag = false
}
}
})
if (!flag) {
this.$message('请完善信息')
} else {
const param = {}
param.tag = 2
param.url = this.file
const formData = {}
Object.keys(this.form).map((name) => {
formData[this.formName[name]] = this.form[name]
})
param.table_content = JSON.stringify(formData)
api.formCommit(param).then((res) => {
this.$message({
message: '提交成功',
type: 'success',
})
})
}
},
handleChange(data) {
this.file = data.data[0].full_path
},
back() {
this.$router.go(-1)
},
},
}
</script>
<style lang="scss" scoped>
.content-max-width {
width: 1112px;
margin: 24px auto 0 auto;
}
.form-box {
padding: 30px 0;
width: 430px;
margin: 0 auto;
.width100 {
width: 100%;
}
}
.reg-form-box {
width: 380px;
margin: 0 auto;
padding: 24px 0;
}
::v-deep {
.forms {
i {
font-size: 20px;
}
input {
border-radius: 4px;
}
}
}
</style>
差异被折叠。
<template>
<div class="content-max-width">
<div class="new-tits">技能培训报名</div>
<screen-tabs
class="screen-tabs-box"
:activeIndex.sync="tabsIndex"
:data="screenTabsData"
@tabChange="HandleTabChange"></screen-tabs>
<div class="train-mian">
<ul>
<template v-for="(item, index) in tabsContentList">
<li :key="index" v-if="tabsIndex === 0 || tabsIndex === item.activeIndex">
<listItem :data="item" />
</li>
</template>
</ul>
<div class="calendar">
<inlineCalendar mode="during"></inlineCalendar>
<div class="btn-box">
<div class="btn">确定</div>
</div>
</div>
</div>
</div>
</template>
<script>
import screenTabs from '@/components/tabs/screenTabs.vue'
import noData from '@/components/noData.vue'
import listItem from './components/listItem.vue'
import datalist from './data.js'
export default {
components: { screenTabs, listItem, noData },
data() {
return {
tabsIndex: 1,
tabsContentList: datalist,
screenTabsData: {
name: '筛选:',
options: ['全部', '正在进行', '未开始', '已结束'],
},
}
},
methods: {
HandleTabChange(index) {
this.tabsIndex = index
},
},
}
</script>
<style lang="scss" scoped>
.crumb {
padding-top: 24px;
}
.pagination {
padding: 24px 0;
display: flex;
justify-content: center;
}
.content-max-width {
width: 1112px;
margin: 0 auto;
}
.btn-tabs-box {
padding: 24px 0;
justify-content: left;
}
.train-mian {
display: flex;
ul {
width: 700px;
}
.calendar {
width: 336px;
height: 385px;
background: #ffffff;
box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, 0.06);
margin-left: auto;
.btn-box {
width: 100%;
border-top: 1px solid #eee;
overflow: hidden;
.btn {
margin-top: 10px;
width: 62px;
height: 36px;
background: linear-gradient(315deg, rgba(225, 47, 116, 0.83) 0%, #c01540 100%);
border-radius: 4px;
text-align: center;
line-height: 36px;
color: #fff;
font-size: 14px;
float: right;
margin-right: 24px;
cursor: pointer;
}
}
}
}
::v-deep {
.m-row {
&::before {
background-color: #fff !important;
}
}
.m-week-header {
background: #fff;
}
.m-calendar {
.m-toolbar {
height: 58px;
background: #fff;
border-bottom: 1px solid #eee;
margin-bottom: 10px;
}
}
.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;
}
}
.new-tits {
text-align: center;
font-size: 20px;
font-weight: bold;
color: #444444;
line-height: 33px;
margin-bottom: 16px;
margin-top: 36px;
}
</style>
......@@ -13,23 +13,17 @@ const routes = [
{ path: '', component: () => import('@/pages/home/index.vue') },
// 工作动态
{ path: '/news', component: () => import('@/pages/news/index.vue') },
// 工作动态详情
{ path: '/news/detail', component: () => import('@/pages/news/detail.vue') },
// 1+x产品
{ path: '/product', component: () => import('@/pages/product/index.vue') },
// 技能培训
{ path: '/teacher', component: () => import('@/pages/teachers/index.vue') },
// 证书成绩查询
{ path: '/attestation', component: () => import('@/pages/attestation/index.vue') },
// // 教学服务
{ path: '/service', component: () => import('@/pages/service/index.vue') },
// 技能培训
{ path: '/train', component: () => import('@/pages/train/index.vue') },
// 技能培训详情
{ path: '/train/list', component: () => import('@/pages/train/list.vue') },
{ path: '/train/detail', component: () => import('@/pages/train/detail.vue') },
// 技能培训详情->报名
{ path: '/train/form', component: () => import('@/pages/train/form.vue') },
{ path: '/school/form', component: () => import('@/pages/train/form2.vue') },
{ path: '/register', component: () => import('@/pages/account/register.vue') },
// 证书成绩查询
{ path: '/queryCard', component: () => import('@/pages/home/queryCard.vue') },
],
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论