alioss V2.3.0
yujialong 2 years ago
parent 4e745615fb
commit d543dbf308
  1. 293
      src/pages/account/login/index.vue
  2. 77
      src/pages/activity/list/index.vue
  3. 20
      src/pages/activity/manage/manage/index.vue
  4. 304
      src/pages/station/preview/index.vue

@ -4,46 +4,77 @@
<div class="form">
<h6 class="title">欢迎使用请登录</h6>
<ul class="tab">
<li v-for="(item,index) in tabList" :key="index" :class="{active: form.distinguish == item.id}" @click="typeClick(item)">{{item.label}}</li>
<li v-for="(item,index) in tabList"
:key="index"
:class="{active: form.distinguish == item.id}"
@click="typeClick(item)">{{item.label}}</li>
</ul>
<el-form :model="form" :rules="rules" ref="form" style="margin-top: 20px">
<el-form :model="form"
:rules="rules"
ref="form"
style="margin-top: 20px">
<!-- 学号工号 -->
<div v-show="!form.distinguish">
<el-form-item class="school-select" prop="schoolId">
<el-form-item class="school-select"
prop="schoolId">
<label class="label school"></label>
<el-select v-model="form.schoolId" clearable filterable placeholder="请选择学校">
<el-option v-for="(item, i) in schoolList" :key="i" :label="item.schoolName" :value="item.schoolId"></el-option>
<el-select v-model="form.schoolId"
clearable
filterable
placeholder="请选择学校">
<el-option v-for="(item, i) in schoolList"
:key="i"
:label="item.schoolName"
:value="item.schoolId"></el-option>
</el-select>
</el-form-item>
<div class="items">
<el-form-item prop="type" style="width: 35%;margin-right: 15px">
<el-form-item prop="type"
style="width: 35%;margin-right: 15px">
<label class="label workNumber"></label>
<el-select v-model="form.type" placeholder="请选择类型" @change="typeChange">
<el-option label="学生学号" :value="1"></el-option>
<el-option label="老师工号" :value="0"></el-option>
<el-select v-model="form.type"
placeholder="请选择类型"
@change="typeChange">
<el-option label="学生学号"
:value="1"></el-option>
<el-option label="老师工号"
:value="0"></el-option>
</el-select>
</el-form-item>
<el-form-item class="flex-1" prop="workNumber">
<el-form-item class="flex-1"
prop="workNumber">
<label class="label account"></label>
<el-input v-model.trim="form.workNumber" :placeholder="'请输入' + (form.type ? '学生学号' : '老师工号')" @keyup.enter.native="submit"></el-input>
<el-input v-model.trim="form.workNumber"
:placeholder="'请输入' + (form.type ? '学生学号' : '老师工号')"
@keyup.enter.native="submit"></el-input>
</el-form-item>
</div>
</div>
<!-- 手机号登录 -->
<el-form-item v-show="form.distinguish === 1" prop="account">
<el-form-item v-show="form.distinguish === 1"
prop="account">
<label class="label account"></label>
<el-input v-model.trim="form.account" placeholder="请输入账号" @keyup.enter.native="submit"></el-input>
<el-input v-model.trim="form.account"
placeholder="请输入账号"
@keyup.enter.native="submit"></el-input>
</el-form-item>
<template v-if="form.distinguish === 2">
<el-form-item prop="account">
<label class="label account"></label>
<el-input v-model.trim="form.account" placeholder="请输入手机号/邮箱" @keyup.enter.native="submit"></el-input>
<el-input v-model.trim="form.account"
placeholder="请输入手机号/邮箱"
@keyup.enter.native="submit"></el-input>
</el-form-item>
<el-form-item prop="code">
<label class="label code"></label>
<div class="ver-code">
<el-input v-model="form.code" placeholder="请输入验证码" maxlength="6" @keyup.enter.native="submit"></el-input>
<el-button type="text" @click="sendPhoneCodeLogin" :disabled="phoneDisabledLogin">{{ phoneBtnTextLogin }}
<el-input v-model="form.code"
placeholder="请输入验证码"
maxlength="6"
@keyup.enter.native="submit"></el-input>
<el-button type="text"
@click="sendPhoneCodeLogin"
:disabled="phoneDisabledLogin">{{ phoneBtnTextLogin }}
</el-button>
</div>
</el-form-item>
@ -51,76 +82,116 @@
<template v-if="form.distinguish !== 2">
<el-form-item prop="password">
<label class="password label"></label>
<el-input
type="password"
<el-input type="password"
placeholder="请输入密码"
v-model.trim="form.password"
@keyup.enter.native="submit"
>
@keyup.enter.native="submit">
</el-input>
</el-form-item>
<el-form-item prop="code">
<label class="label code"></label>
<el-input
placeholder="请输入验证码"
<el-input placeholder="请输入验证码"
v-model.trim="form.code"
@keyup.enter.native="submit"
>
@keyup.enter.native="submit">
</el-input>
<img @click="getVerImg" :src="verificationIMG" class="ver-img" alt="">
<img @click="getVerImg"
:src="verificationIMG"
class="ver-img"
alt="">
</el-form-item>
</template>
<div class="bottom">
<el-link v-if="toMatch" :underline="false" type="primary" @click="toAccount">暂无账号点击申请</el-link>
<el-checkbox v-show="!form.distinguish" v-model="setDefault">设置为默认学校</el-checkbox>
<el-link v-if="toMatch"
:underline="false"
type="primary"
@click="toAccount">暂无账号点击申请</el-link>
<el-checkbox v-show="!form.distinguish"
v-model="setDefault">设置为默认学校</el-checkbox>
</div>
<el-button class="submit" type="primary" @click="submit">登录</el-button>
<el-button class="submit"
type="primary"
@click="submit">登录</el-button>
</el-form>
</div>
</div>
<el-dialog title="绑定手机号" :visible.sync="phoneVisible" :close-on-click-modal="false" width="30%">
<el-dialog title="绑定手机号"
:visible.sync="phoneVisible"
:close-on-click-modal="false"
width="30%">
<div style='padding: 0 13px 20px 13px;'>
依据国家政策法规需绑定手机号进行网络实名才可登录使用本平台
</div>
<el-form label-width="60px">
<el-form-item label="手机号">
<el-input style="width: 100%;" placeholder="请输入手机号" v-model="phone" maxlength="11" @change="phoneChange"></el-input>
<el-input style="width: 100%;"
placeholder="请输入手机号"
v-model="phone"
maxlength="11"
@change="phoneChange"></el-input>
</el-form-item>
<el-form-item label="验证码">
<div class="ver-code">
<el-input v-model="phoneCode" placeholder="请输入验证码" maxlength="6"></el-input>
<el-button style="top: 1px" type="text" @click="sendPhoneCode(1)" :disabled="binding === '' || phoneDisabled">{{ phoneBtnText }}
<el-input v-model="phoneCode"
placeholder="请输入验证码"
maxlength="6"></el-input>
<el-button style="top: 1px"
type="text"
@click="sendPhoneCode(1)"
:disabled="binding === '' || phoneDisabled">{{ phoneBtnText }}
</el-button>
</div>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button size="small" @click="phoneVisible = false"> </el-button>
<el-button size="small" type="primary" @click="phoneSubmit"> </el-button>
<span slot="footer"
class="dialog-footer">
<el-button size="small"
@click="phoneVisible = false"> </el-button>
<el-button size="small"
type="primary"
@click="phoneSubmit"> </el-button>
</span>
</el-dialog>
<el-dialog title="请选择" :visible.sync="selectVisible" :close-on-click-modal="false" custom-class="select-dia" width="643px">
<el-dialog title="请选择"
:visible.sync="selectVisible"
:close-on-click-modal="false"
custom-class="select-dia"
width="643px">
<ul class="port">
<li :class="{active: selectedRole === 1}" @click="selectRole(1)">
<img src="@/assets/img/login/male.png" alt="">
<li :class="{active: selectedRole === 1}"
@click="selectRole(1)">
<img src="@/assets/img/login/male.png"
alt="">
<p>学生端</p>
</li>
<li :class="{active: selectedRole === 2}" @click="selectRole(2)">
<img src="@/assets/img/login/female.png" alt="">
<li :class="{active: selectedRole === 2}"
@click="selectRole(2)">
<img src="@/assets/img/login/female.png"
alt="">
<p>教师管理端</p>
</li>
</ul>
</el-dialog>
<el-dialog title="请选择您要登录的用户" :visible.sync="userVisible" :close-on-click-modal="false" custom-class="user-dia" width="500px">
<el-dialog title="请选择您要登录的用户"
:visible.sync="userVisible"
:close-on-click-modal="false"
custom-class="user-dia"
width="500px">
<p class="tips">该手机号已绑定以下用户信息</p>
<ul class="users">
<li :class="{isEnable: !user.isEnable}" v-for="(user, i) in users" :key="i" @click="chooseUser(user)">
<li :class="{isEnable: !user.isEnable}"
v-for="(user, i) in users"
:key="i"
@click="chooseUser(user)">
<span>{{ user.schoolName }}{{ user.userName }}{{ user.workNumber }}{{ user.isEnable ? '' : '(已禁用)'}}</span>
<i class="el-icon-right"></i>
</li>
</ul>
</el-dialog>
<el-dialog :visible.sync="infoVisible" :close-on-click-modal="false" custom-class="info-dia" :show-close="false" width="400px">
<el-dialog :visible.sync="infoVisible"
:close-on-click-modal="false"
custom-class="info-dia"
:show-close="false"
width="400px">
<div class="info-header">
<i class="el-icon-warning"></i>
提示
@ -128,58 +199,115 @@
<div class="info-wrap">
<p class="tips">该手机号已与以下用户绑定</p>
<ul class="users">
<li v-for="(user, i) in infos" :key="i">
<li v-for="(user, i) in infos"
:key="i">
<span>{{ user.userName }}{{ user.schoolName }}</span>
</li>
</ul>
<div class="info-footer">
<el-button size="small" type="primary" @click="bindPhone">是本人继续绑定</el-button>
<el-button class="unbind" size="small" @click="unbindPhone">不是本人解绑以上用户并绑定新用户</el-button>
<el-button size="small"
type="primary"
@click="bindPhone">是本人继续绑定</el-button>
<el-button class="unbind"
size="small"
@click="unbindPhone">不是本人解绑以上用户并绑定新用户</el-button>
</div>
</div>
</el-dialog>
<!-- 购买弹框 -->
<el-dialog title="温馨提示" :visible.sync="buyVisible" width="400px" center :close-on-click-modal="false">
<el-dialog title="温馨提示"
:visible.sync="buyVisible"
width="400px"
center
:close-on-click-modal="false">
<div class="buy">
<p class="tips">您所选择的院校暂未在本平台开通组织账号请通知院校老师联系下方二维码客服咨询</p>
<img src="@/assets/img/wechat-code.jpeg" alt="">
<img src="@/assets/img/wechat-code.jpeg"
alt="">
</div>
</el-dialog>
<el-dialog title="账号申请" :visible.sync="accountVisible" :close-on-click-modal="false" width="500px" @close="accountClose">
<el-form class="dia-form" ref="accountForm" label-width="110px" :model="accountForm" :rules="accountRules">
<el-form-item prop="schoolId" label="所属院校">
<el-select class="w-100" v-model="accountForm.schoolId" filterable placeholder="请选择院校" @change="schoolChange">
<el-option v-for="(item, i) in schoolList" :key="i" :label="item.schoolName" :value="item.schoolId"></el-option>
<el-dialog title="账号申请"
:visible.sync="accountVisible"
:close-on-click-modal="false"
width="500px"
@close="accountClose">
<el-form class="dia-form"
ref="accountForm"
label-width="110px"
:model="accountForm"
:rules="accountRules">
<el-form-item prop="schoolId"
label="所属院校">
<el-select class="w-100"
v-model="accountForm.schoolId"
filterable
placeholder="请选择院校"
@change="schoolChange">
<el-option v-for="(item, i) in schoolList"
:key="i"
:label="item.schoolName"
:value="item.schoolId"></el-option>
</el-select>
</el-form-item>
<el-form-item prop="workNumber" label="学号">
<el-input placeholder="申请后无法修改,请确认填写正确" v-model="accountForm.workNumber" @change="workNumberChange"></el-input>
<el-form-item prop="workNumber"
label="学号">
<el-input placeholder="申请后无法修改,请确认填写正确"
v-model="accountForm.workNumber"
@change="workNumberChange"></el-input>
</el-form-item>
<el-form-item prop="userName" label="姓名">
<el-input placeholder="请输入姓名" v-model="accountForm.userName" :disabled="formEnable"></el-input>
<el-form-item prop="userName"
label="姓名">
<el-input placeholder="请输入姓名"
v-model="accountForm.userName"
:disabled="formEnable"></el-input>
</el-form-item>
<el-form-item prop="phone" label="手机号">
<el-input placeholder="请输入手机号" maxlength="11" v-model.trim="accountForm.phone" :disabled="formEnable"></el-input>
<el-form-item prop="phone"
label="手机号">
<el-input placeholder="请输入手机号"
maxlength="11"
v-model.trim="accountForm.phone"
:disabled="formEnable"></el-input>
</el-form-item>
<el-form-item prop="code" label="验证码">
<el-form-item prop="code"
label="验证码">
<div class="ver-code">
<el-input v-model="accountForm.code" placeholder="请输入验证码" maxlength="6" :disabled="formEnable"></el-input>
<el-button style="top: 1px" type="text" @click="sendCode" :disabled="phoneDisabled && formEnable">{{ phoneBtnText }}
<el-input v-model="accountForm.code"
placeholder="请输入验证码"
maxlength="6"
:disabled="formEnable"></el-input>
<el-button style="top: 1px"
type="text"
@click="sendCode"
:disabled="phoneDisabled && formEnable">{{ phoneBtnText }}
</el-button>
</div>
</el-form-item>
<el-form-item prop="password" label="登录密码">
<el-input placeholder="请输入登录密码" type="password" maxlength="6" v-model="accountForm.password" :disabled="formEnable"></el-input>
<el-form-item prop="password"
label="登录密码">
<el-input placeholder="请输入登录密码"
type="password"
maxlength="6"
v-model="accountForm.password"
:disabled="formEnable"></el-input>
</el-form-item>
<el-form-item prop="rePassword" label="确认登录密码">
<el-input placeholder="请再次输入登录密码" type="password" maxlength="6" v-model="accountForm.rePassword" :disabled="formEnable"></el-input>
<el-form-item prop="rePassword"
label="确认登录密码">
<el-input placeholder="请再次输入登录密码"
type="password"
maxlength="6"
v-model="accountForm.rePassword"
:disabled="formEnable"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button v-if="!formEnable" size="small" type="primary" @click="accountSubmit">申请</el-button>
<el-button size="small" @click="accountVisible = false">取消</el-button>
<span slot="footer"
class="dialog-footer">
<el-button v-if="!formEnable"
size="small"
type="primary"
@click="accountSubmit">申请</el-button>
<el-button size="small"
@click="accountVisible = false">取消</el-button>
</span>
</el-dialog>
<v-footer ref="footer"></v-footer>
@ -746,7 +874,7 @@ export default {
<style scoped lang="scss">
.wrap {
min-height: 100%;
background-color: #F3F6FA;
background-color: #f3f6fa;
}
.ver-code {
position: relative;
@ -770,7 +898,7 @@ export default {
justify-content: space-between;
align-items: center;
margin-bottom: 24px;
border-bottom: 2px solid #E1E6F2;
border-bottom: 2px solid #e1e6f2;
li {
padding: 18px 0;
margin-bottom: -1px;
@ -782,7 +910,7 @@ export default {
margin-right: 0;
}
&.active {
color: $main-color;;
color: $main-color;
border-bottom-color: $main-color;
}
}
@ -800,7 +928,7 @@ export default {
.title {
margin-bottom: 25px;
font-size: 26px;
color: #0B1D30;
color: #0b1d30;
letter-spacing: 4px;
}
}
@ -812,8 +940,8 @@ export default {
height: 52px;
padding: 0 20px 0 34px;
line-height: 50px;
background-color: #FBFBFB;
border: 1px solid #E1E6F2;
background-color: #fbfbfb;
border: 1px solid #e1e6f2;
border-radius: 4px !important;
}
.bottom {
@ -856,7 +984,7 @@ export default {
top: 105%;
left: auto;
right: 0;
color: #FFA94E;
color: #ffa94e;
}
.submit {
width: 100%;
@ -874,12 +1002,12 @@ export default {
padding: 18px 0;
font-size: 12px;
text-align: center;
background-color: #F3F6FA;
background-color: #f3f6fa;
a {
color:#B1B4B8;
color: #b1b4b8;
font-size: 12px;
&:hover {
opacity: .8;
opacity: 0.8;
}
}
}
@ -894,9 +1022,10 @@ export default {
margin-right: 86px;
}
&:hover img {
opacity: .9;
opacity: 0.9;
}
&.active p, &:hover p {
&.active p,
&:hover p {
background-color: #9278ff;
}
}

@ -3,15 +3,22 @@
<div class="search">
<h6>创业活动</h6>
<div class="input">
<img src="@/assets/img/search.png" alt="">
<input type="text" placeholder="请输入关键词" v-model="keyword">
<img src="@/assets/img/search.png"
alt="">
<input type="text"
placeholder="请输入关键词"
v-model="keyword">
</div>
</div>
<div class="main">
<div class="center-wrap list-inner">
<ul v-if="token" class="nav">
<li :class="{ active: form.whetherToSignUp === item.id }" v-for="(item, index) in typeList" :key="index" @click="changeType(item.id)">{{ item.name }}
<ul v-if="token"
class="nav">
<li :class="{ active: form.whetherToSignUp === item.id }"
v-for="(item, index) in typeList"
:key="index"
@click="changeType(item.id)">{{ item.name }}
</li>
</ul>
<div class="list-wrap">
@ -20,19 +27,26 @@
<div>
<dl>
<dt>筛选排序</dt>
<dd v-for="(item, i) in sorts" :key="i" :class="{active: form.filterSort == item.id}" @click="changeSort(item.id)">{{ item.name }}</dd>
<dd v-for="(item, i) in sorts"
:key="i"
:class="{active: form.filterSort == item.id}"
@click="changeSort(item.id)">{{ item.name }}</dd>
</dl>
</div>
<el-button type="primary" @click="$router.push('manage')">我的项目</el-button>
<el-button type="primary"
@click="$router.push('manage')">我的项目</el-button>
</div>
<div class="list">
<template v-if="listData.length">
<ul>
<li v-for="(item,index) in listData" :key="index" @click="toDetail(item)">
<li v-for="(item,index) in listData"
:key="index"
@click="toDetail(item)">
<div class="left">
<div class="cover">
<img :src="item.coverUrl || 'https://huoran.oss-cn-shenzhen.aliyuncs.com/20230515/jpg/1657937339328520192.jpg'" alt="">
<img :src="item.coverUrl || 'https://huoran.oss-cn-shenzhen.aliyuncs.com/20230515/jpg/1657937339328520192.jpg'"
alt="">
</div>
<div class="info">
<div class="title">{{ item.projectName }}</div>
@ -54,8 +68,10 @@
</div>
<div class="right">
<p class="status"
:class="{wait: item.status == 0,signing: item.status == 2,signed: item.status == 1,playing: item.status == 4,finish: item.status == 3 || item.status == 4}" @click.stop="signup(item)">{{ statusList[item.status] }}</p>
<p class="end-text" v-if="item.end">
:class="{wait: item.status == 0,signing: item.status == 2,signed: item.status == 1,playing: item.status == 4,finish: item.status == 3 || item.status == 4}"
@click.stop="signup(item)">{{ statusList[item.status] }}</p>
<p class="end-text"
v-if="item.end">
距离{{ endList[item.status] }}还有
<em>{{ item.end }}</em>
</p>
@ -63,7 +79,9 @@
</li>
</ul>
<div class="pagination">
<el-pagination background layout="total, prev, pager, next" :total="totals"
<el-pagination background
layout="total, prev, pager, next"
:total="totals"
@current-change="handleCurrentChange"
:current-page="page">
</el-pagination>
@ -72,7 +90,8 @@
<template v-else>
<div class="empty">
<div>
<img src="@/assets/img/none.png" alt="">
<img src="@/assets/img/none.png"
alt="">
<p>暂无赛事</p>
</div>
</div>
@ -82,15 +101,24 @@
</div>
</div>
<el-dialog title="报名" :visible.sync="signupVisible" :close-on-click-modal="false" width="300px">
<el-dialog title="报名"
:visible.sync="signupVisible"
:close-on-click-modal="false"
width="300px">
<el-form class="dia-form">
<el-form-item>
<el-input placeholder="请输入4位数大赛邀请码" maxlength="4" v-model="invitationCode"></el-input>
<el-input placeholder="请输入4位数大赛邀请码"
maxlength="4"
v-model="invitationCode"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button size="small" type="primary" @click="signupSubmit">报名</el-button>
<el-button size="small" @click="signupVisible = false">取消</el-button>
<span slot="footer"
class="dialog-footer">
<el-button size="small"
type="primary"
@click="signupSubmit">报名</el-button>
<el-button size="small"
@click="signupVisible = false">取消</el-button>
</span>
</el-dialog>
</div>
@ -516,11 +544,11 @@ export default {
font-size: 14px;
color: #fff;
white-space: nowrap;
background-color: #52C41A;
background-color: #52c41a;
border-radius: 4px;
@include ellipsis();
&.wait {
background-color: #FAAD14;
background-color: #faad14;
}
&.signing {
@ -528,7 +556,7 @@ export default {
}
&.signed {
background-color: #52C41A;
background-color: #52c41a;
}
&.playing {
background-color: #f96d6d;
@ -547,7 +575,7 @@ export default {
cursor: pointer;
&:hover {
opacity: .9;
opacity: 0.9;
}
&.disabled {
@ -558,7 +586,7 @@ export default {
.end-text {
margin-top: 10px;
color: rgba(0, 0, 0, .65);
color: rgba(0, 0, 0, 0.65);
font-size: 12px;
white-space: nowrap;
@ -597,7 +625,7 @@ export default {
margin-bottom: 10px;
font-size: 20px;
font-weight: 500;
color: #0B1D30;
color: #0b1d30;
word-break: break-all;
@include mul-ellipsis(2);
}
@ -614,7 +642,8 @@ export default {
}
}
.label, .val {
.label,
.val {
font-size: 14px;
color: #666;
white-space: nowrap;

@ -1,15 +1,23 @@
<template>
<div>
<el-card shadow="hover" class="m-b-20">
<el-card shadow="hover"
class="m-b-20">
<div class="flex-between">
<el-page-header @back="back" :content="name + '/管理'"></el-page-header>
<el-page-header @back="back"
:content="name + '/管理'"></el-page-header>
</div>
</el-card>
<div class="page" style="margin-bottom: 24px">
<div class="page"
style="margin-bottom: 24px">
<div class="tabs">
<a class="item" v-for="(item,index) in tabs" :key="index" :class="{active: index == active}" @click="tabChange(index)">{{ item }}</a>
<a class="item"
v-for="(item,index) in tabs"
:key="index"
:class="{active: index == active}"
@click="tabChange(index)">{{ item }}</a>
</div>
<MatchDetail v-if="active == 'tab1'" ref="detail" />
<MatchDetail v-if="active == 'tab1'"
ref="detail" />
<MatchProgress v-else-if="active == 'tab2'" />
<notice v-else-if="active == 'tab3'" />
<MatchSignup v-else-if="active == 'tab4'" />
@ -114,7 +122,7 @@ export default {
display: flex;
align-items: center;
padding: 0 24px;
border-bottom: 1px solid rgba(0, 0, 0, .06);
border-bottom: 1px solid rgba(0, 0, 0, 0.06);
.item {
position: relative;
padding: 20px 0;

@ -2,36 +2,53 @@
<div class="wrap">
<breadcrumb :data="'实验台/' + curriculumName"></breadcrumb>
<div class="flex">
<div class="cover" :class="{'is-word': showMask1}">
<div class="cover"
:class="{'is-word': showMask1}">
<!--实验台不显示课程封面-->
<img v-if="coverUrl" :src="coverUrl" alt="" width="100%" height="100%">
<img v-if="coverUrl"
:src="coverUrl"
alt=""
width="100%"
height="100%">
<template v-else-if="iframeSrc">
<iframe class="inner fileIframe" id="fileIframe" :src="iframeSrc" frameborder="0"></iframe>
<iframe class="inner fileIframe"
id="fileIframe"
:src="iframeSrc"
frameborder="0"></iframe>
<template v-if="showMask">
<div class="mask" style="width:100%;background: #393A3D;height: 30px;top: 53px;"></div>
<div class="mask" style="width:100%;background: #393A3D;height: 30px;top: 53px;"></div>
<div class="mask"
style="width:100%;background: #393A3D;height: 30px;top: 53px;"></div>
<div class="mask"
style="width:100%;background: #393A3D;height: 30px;top: 53px;"></div>
</template>
<template v-if="showMask1">
<div class="word-mask" style="height: 40px;"></div>
<div class="word-mask"
style="height: 40px;"></div>
<div class="word-mask2"
style="top: 55px;left: 28%;width: 44%;height: calc(100% - 80px);"></div>
</template>
<template v-if="showMask2">
<div class="excel-mask1" style="height: 48px;"></div>
<div class="excel-mask1"
style="height: 48px;"></div>
</template>
</template>
<div class="pdf" v-else-if="pdfSrc">
<img class="full" src="@/assets/img/screen/full.png" alt="" @click="fullScreen">
<div class="pdf"
v-else-if="pdfSrc">
<img class="full"
src="@/assets/img/screen/full.png"
alt=""
@click="fullScreen">
<p class="arrow">
<span @click="changePdfPage(0)" class="turn el-icon-arrow-left"
<span @click="changePdfPage(0)"
class="turn el-icon-arrow-left"
:class="{grey: currentPage==1}"></span>
{{ currentPage }} / {{ pageCount }}
<span @click="changePdfPage(1)" class="turn el-icon-arrow-right"
<span @click="changePdfPage(1)"
class="turn el-icon-arrow-right"
:class="{grey: currentPage==pageCount}"></span>
</p>
<div style='color:#393A3D;height: 30px;background: #393A3D;'></div>
<pdf
class="pdf-wrap"
<pdf class="pdf-wrap"
:src="pdfSrc"
:page="currentPage"
@num-pages="pageCount=$event"
@ -39,51 +56,88 @@
@loaded="loadPdfHandler">
</pdf>
</div>
<div class="inner" v-else-if="playAuth">
<div class="video_wid" id="player"></div>
<div class="inner"
v-else-if="playAuth">
<div class="video_wid"
id="player"></div>
</div>
</div>
<div class="catalog">
<el-button v-if="!overdue" class="renew" type="primary" size="small" @click="showBuy">续费</el-button>
<a v-else class="entry" @click="entry"></a>
<el-button v-if="!overdue"
class="renew"
type="primary"
size="small"
@click="showBuy">续费</el-button>
<a v-else
class="entry"
@click="entry"></a>
<div class="list">
<h4 class="title">{{ courseName }}</h4>
<div>
<h6 class="pro-title">我的学习进度</h6>
<el-progress :stroke-width="12" :percentage="schedule" :format="percentFormat" :text-color="'#fff'"></el-progress>
<el-progress :stroke-width="12"
:percentage="schedule"
:format="percentFormat"
:text-color="'#fff'"></el-progress>
</div>
<div class="types">
<div :class="['item', { active: type === 1 }]" @click="typeChange(1)">
<div :class="['item', { active: type === 1 }]"
@click="typeChange(1)">
<i class="icon el-icon-notebook-2"></i> 目录
</div>
<div :class="['item', { active: type === 2 }]" @click="typeChange(2)">
<div :class="['item', { active: type === 2 }]"
@click="typeChange(2)">
<i class="icon el-icon-timer"></i> 学习进度
</div>
</div>
<div class="chapters">
<template v-if="type === 1">
<template v-if="chapterList.length">
<div class="chapter" v-for="(item,index) in chapterList" :key="index">
<div class="chapter"
v-for="(item,index) in chapterList"
:key="index">
<div class="chapterName">{{ item.name }}</div>
<div class="section" v-if="item.subsectionList.length">
<p class="sectionName" :class="{active: curLink === `${item.name}${section.name}`}" v-for="(section,i) in item.subsectionList" :key="i" @click="preview(section, item.name)">
<img v-if="section.fileType === 'pptx'" src="@/assets/img/exts/ppt.png" alt="">
<img v-else-if="section.fileType === 'mp4'" src="@/assets/img/exts/video.png" alt="">
<img v-else-if="section.fileType === 'doc' || section.fileType === 'docx'" src="@/assets/img/exts/word.png" alt="">
<img v-else-if="section.fileType === 'txt'" src="@/assets/img/exts/txt.png" alt="">
<img v-else-if="section.fileType === 'pdf'" src="@/assets/img/exts/pdf.png" alt="">
<img v-else src="@/assets/img/exts/pic.png" alt="">
<div class="section"
v-if="item.subsectionList.length">
<p class="sectionName"
:class="{active: curLink === `${item.name}${section.name}`}"
v-for="(section,i) in item.subsectionList"
:key="i"
@click="preview(section, item.name)">
<img v-if="section.fileType === 'pptx'"
src="@/assets/img/exts/ppt.png"
alt="">
<img v-else-if="section.fileType === 'mp4'"
src="@/assets/img/exts/video.png"
alt="">
<img v-else-if="section.fileType === 'doc' || section.fileType === 'docx'"
src="@/assets/img/exts/word.png"
alt="">
<img v-else-if="section.fileType === 'txt'"
src="@/assets/img/exts/txt.png"
alt="">
<img v-else-if="section.fileType === 'pdf'"
src="@/assets/img/exts/pdf.png"
alt="">
<img v-else
src="@/assets/img/exts/pic.png"
alt="">
{{ section.name }}
</p>
</div>
</div>
</template>
</template>
<div v-else class="section">
<p class="sectionName" v-for="(item, i) in progressList" :key="i" :title="item.projectName">
<div v-else
class="section">
<p class="sectionName"
v-for="(item, i) in progressList"
:key="i"
:title="item.projectName">
{{ i + 1 }}.
{{ item.projectName }}
<i :class="['icon', item.whetherToStudyOrNot ? 'el-icon-success' : 'circle']" @click.stop="studySection(item)"></i>
<i :class="['icon', item.whetherToStudyOrNot ? 'el-icon-success' : 'circle']"
@click.stop="studySection(item)"></i>
</p>
</div>
</div>
@ -92,38 +146,43 @@
</div>
<div class="tabs">
<a class="item" v-for="(item, i) in tabs" :key="i" :class="{active: item.id == active}" @click="tabChange(item)">{{ item.name }}</a>
<a class="item"
v-for="(item, i) in tabs"
:key="i"
:class="{active: item.id == active}"
@click="tabChange(item)">{{ item.name }}</a>
</div>
<div class="tab-content">
<template v-if="active === 1">
<div class="page">
<h6 class="l-title">
<img src="@/assets/img/course1.png" alt="">
课程简介
</h6>
<p class="intro" v-html="briefIntroduction"></p>
</div>
<div class="page">
<h6 class="l-title">
<img src="@/assets/img/course2.png" alt="">
课程目标
</h6>
<p class="intro" v-html="teachingObjectives"></p>
<p class="intro"
v-html="briefIntroduction"></p>
</div>
</template>
<template v-if="active === 2">
<div class="page">
<template v-if="showNoteAdd">
<el-form class="form" ref="form" label-width="120px" center>
<el-form-item class="required" label="笔记标题">
<el-input placeholder="请输入笔记标题" v-model="noteForm.noteName" maxlength="30" style="width: 400px"></el-input>
<el-form class="form"
ref="form"
label-width="120px"
center>
<el-form-item class="required"
label="笔记标题">
<el-input placeholder="请输入笔记标题"
v-model="noteForm.noteName"
maxlength="30"
style="width: 400px"></el-input>
</el-form-item>
<el-form-item class="required" label="笔记内容">
<Editor api-key='rnk6zw9v267xqz7pf98twt1vmrvltmd436je7a642pckltda' v-model="noteForm.noteContent" :init="editorConfig" />
<el-form-item class="required"
label="笔记内容">
<Editor api-key='rnk6zw9v267xqz7pf98twt1vmrvltmd436je7a642pckltda'
v-model="noteForm.noteContent"
:init="editorConfig" />
</el-form-item>
</el-form>
<div class="text-right">
<el-button type="primary" @click="submitNote">保存</el-button>
<el-button type="primary"
@click="submitNote">保存</el-button>
</div>
</template>
<template v-else>
@ -131,26 +190,34 @@
<ul class="filter">
<li>
<label>搜索</label>
<el-input placeholder="请输入标题" v-model="noteKeyword" clearable></el-input>
<el-input placeholder="请输入标题"
v-model="noteKeyword"
clearable></el-input>
</li>
</ul>
<div>
<el-button type="primary" @click="addNote">新增笔记</el-button>
<el-button type="primary"
@click="addNote">新增笔记</el-button>
</div>
</div>
<el-timeline class="timeline">
<el-timeline-item placement="top" v-for="(item, i) in notes" :key="i">
<el-timeline-item placement="top"
v-for="(item, i) in notes"
:key="i">
<p class="sign">{{ item.createTime }}</p>
<div class="ver">
<div>
{{ item.noteName }}
<span class="action">
<i class="el-icon-edit-outline" @click="editNote(item)"></i>
<i class="el-icon-delete" @click="delNote(item)"></i>
<i class="el-icon-edit-outline"
@click="editNote(item)"></i>
<i class="el-icon-delete"
@click="delNote(item)"></i>
</span>
</div>
</div>
<div class="des" v-html="item.noteContent"></div>
<div class="des"
v-html="item.noteContent"></div>
</el-timeline-item>
</el-timeline>
</template>
@ -158,83 +225,129 @@
</template>
<template v-if="active === 4">
<div class="page">
<quill ref="quill" :border="true" v-model="msg" :height="150" :toTop="false" />
<quill ref="quill"
:border="true"
v-model="msg"
:height="150"
:toTop="false" />
<ul class="msg">
<li v-for="(item, i) in msgs" :key="i">
<li v-for="(item, i) in msgs"
:key="i">
<div class="li-wrap">
<img :src="item.avatar" alt="" class="avatar">
<img :src="item.avatar"
alt=""
class="avatar">
<div class="texts">
<h6>
<span class="name">{{ item.userName }}</span>
发表于 {{ item.createDate }}
</h6>
<div class="des" v-html="item.content"></div>
<div class="des"
v-html="item.content"></div>
</div>
<div class="action">
<i class="icon el-icon-chat-dot-square"></i>
<i class="icon el-icon-delete"></i>
<img class="icon" src="@/assets/img/like.png" alt="">
<img class="icon"
src="@/assets/img/like.png"
alt="">
</div>
</div>
<div class="reply" v-if="item.showReply">
<quill :border="true" v-model="item.replyContent" :toTop="false" :height="150" />
<div class="reply"
v-if="item.showReply">
<quill :border="true"
v-model="item.replyContent"
:toTop="false"
:height="150" />
<div class="m-t-10 text-right">
<el-button type="primary" size="mini">提交</el-button>
<el-button type="primary"
size="mini">提交</el-button>
</div>
</div>
<ul class="msg children" v-if="item.showChildren">
<li v-for="(reply,i) in item.children" :key="i">
<ul class="msg children"
v-if="item.showChildren">
<li v-for="(reply,i) in item.children"
:key="i">
<div class="li-wrap">
<img class="avatar" :src="reply.avatar" alt="">
<img class="avatar"
:src="reply.avatar"
alt="">
<div class="texts">
<div class="name">{{reply.userName}}</div>
<div class="des" v-html="reply.content"></div>
<div class="des"
v-html="reply.content"></div>
<div class="date">{{reply.createDate}}</div>
</div>
<div class="action">
<i class="icon el-icon-chat-dot-square"></i>
<i class="icon el-icon-delete"></i>
<img class="icon" src="@/assets/img/like.png" alt="">
<img class="icon"
src="@/assets/img/like.png"
alt="">
</div>
</div>
<div class="reply" v-if="reply.showReply">
<quill :border="true" v-model="reply.replyContent" :toTop="false" :height="150" />
<div class="reply"
v-if="reply.showReply">
<quill :border="true"
v-model="reply.replyContent"
:toTop="false"
:height="150" />
<div class="m-t-10 text-right">
<el-button type="primary" size="mini">提交</el-button>
<el-button type="primary"
size="mini">提交</el-button>
</div>
</div>
</li>
</ul>
<div v-if="item.getCommentReplyNum" class="toggle"><span @click="item.showChildren = !item.showChildren">{{item.showChildren ? '收起所有回复' : `查看所有${item.getCommentReplyNum}条回复`}} <i class="el-icon-arrow-down"></i></span></div>
<div v-if="item.getCommentReplyNum"
class="toggle"><span @click="item.showChildren = !item.showChildren">{{item.showChildren ? '收起所有回复' : `查看所有${item.getCommentReplyNum}条回复`}} <i class="el-icon-arrow-down"></i></span></div>
</li>
</ul>
</div>
</template>
</div>
<el-dialog title="请选择项目" v-loading="loading" :visible.sync="projectVisible" width="828px" custom-class="project-dia" :close-on-click-modal="false">
<el-dialog title="请选择项目"
v-loading="loading"
:visible.sync="projectVisible"
width="828px"
custom-class="project-dia"
:close-on-click-modal="false">
<ul class="projects">
<li v-for="(item, i) in projects" :key="i" :class="{active: curProject == item.projectId}" @click="selectProject(item)">
<img src="@/assets/img/project.png" alt="">
<li v-for="(item, i) in projects"
:key="i"
:class="{active: curProject == item.projectId}"
@click="selectProject(item)">
<img src="@/assets/img/project.png"
alt="">
<span>{{ i + 1 }}. {{ item.projectName }}</span>
</li>
</ul>
<span slot="footer" class="dialog-footer">
<el-button size="small" @click="projectVisible = false"> </el-button>
<el-button size="small" type="primary" @click="toSub"> </el-button>
<span slot="footer"
class="dialog-footer">
<el-button size="small"
@click="projectVisible = false"> </el-button>
<el-button size="small"
type="primary"
@click="toSub"> </el-button>
</span>
</el-dialog>
<!-- 购买弹框 -->
<el-dialog title="温馨提示" :visible.sync="buyVisible" width="420px" center :close-on-click-modal="false">
<el-dialog title="温馨提示"
:visible.sync="buyVisible"
width="420px"
center
:close-on-click-modal="false">
<div class="buy">
<p class="tips">该课程订阅期限已到期请联系院校管理员续费</p>
</div>
</el-dialog>
<pdfDia :key="pdfVisible" :visible.sync="pdfVisible" :src.sync="pdfSrc"/>
<pdfDia :key="pdfVisible"
:visible.sync="pdfVisible"
:src.sync="pdfSrc" />
</div>
</template>
@ -252,7 +365,7 @@ export default {
components: { pdf, breadcrumb, pdfDia, quill, Editor },
data () {
return {
mallId: this.$route.query.mallId,
mallId: this.$route.query.mallId || '',
editorConfig,
startTime: Date.now(), //
systemIds: '',
@ -676,6 +789,7 @@ export default {
util.cookies.set('courseId', this.courseId)
util.cookies.set('curriculumName', escape(this.curriculumName))
util.cookies.set('systemId', id)
util.cookies.set('mallId', this.mallId)
util.cookies.set('fromManager', '', -1)
util.cookies.set('competitionId', '', -1)
// 8pythoncookiesystemId
@ -711,9 +825,10 @@ export default {
</script>
<style lang="scss" scoped>
@import "../../../styles/page/station.scss";
@import '../../../styles/page/station.scss';
$height: 700px;
.video_wid,.cover{
.video_wid,
.cover {
position: relative;
width: 76%;
height: $height !important;
@ -743,7 +858,8 @@ $height: 700px;
.fileIframe {
height: $height !important;
}
.video_wid,.inner{
.video_wid,
.inner {
width: 100%;
height: 100% !important;
border: 0;
@ -775,7 +891,7 @@ $height: 700px;
background: url(../../../assets/img/entry.png) 0 0/100% 100% no-repeat;
cursor: pointer;
&:hover {
opacity: .9;
opacity: 0.9;
}
}
.types {
@ -921,10 +1037,10 @@ $height: 700px;
}
.el-image-viewer__wrapper {
transform: translateY(-10px);
transition: transform .5s;
transition: transform 0.5s;
&.active {
transform: translateY(0)
transform: translateY(0);
}
}
.el-image-viewer__close {
@ -1038,12 +1154,12 @@ $height: 700px;
width: 238px;
padding: 16px;
margin: 0 20px 20px 0;
background-color: #F6F8FA;
background-color: #f6f8fa;
border-radius: 16px;
cursor: pointer;
&:hover {
span {
color: #007EFF;
color: #007eff;
}
}
&:nth-child(3n) {
@ -1077,8 +1193,8 @@ $height: 700px;
border-bottom: 3px solid transparent;
cursor: pointer;
&.active {
color: #007EFF;
border-color: #007EFF;
color: #007eff;
border-color: #007eff;
}
}
}

Loading…
Cancel
Save