dev_2020-03-03
luoJunYong.123 3 years ago
commit d42c759edc
  1. 10414
      package-lock.json
  2. 5
      package.json
  3. 7
      src/api/index.js
  4. BIN
      src/assets/img/bug.png
  5. BIN
      src/assets/img/func.png
  6. BIN
      src/assets/img/index/pro-bg4-1.png
  7. BIN
      src/assets/img/index/pro-bg5-1.png
  8. BIN
      src/assets/img/optimize.png
  9. BIN
      src/assets/img/update.png
  10. 5
      src/components/breadcrumb/index.vue
  11. 18
      src/layouts/header/index.vue
  12. 99
      src/layouts/navbar/index.vue
  13. 40
      src/pages/account/login/index.vue
  14. 12
      src/pages/ass/list/index.vue
  15. 24
      src/pages/index/list/index.vue
  16. 6
      src/pages/info/details/index.vue
  17. 90
      src/pages/info/list/index.vue
  18. 101
      src/pages/log/list/index.vue
  19. 6
      src/pages/record/list/ass.vue
  20. 17
      src/pages/record/list/index.vue
  21. 8
      src/pages/record/list/practice.vue
  22. 46
      src/pages/record/show/index.vue
  23. 8
      src/pages/setting/person/info.vue
  24. 5
      src/pages/station/preview/index.vue
  25. 1
      src/setting.js

10414
package-lock.json generated

File diff suppressed because it is too large Load Diff

@ -8,7 +8,7 @@
"build": "vue-cli-service build"
},
"dependencies": {
"axios": "^0.18.0",
"axios": "^0.26.1",
"babel-polyfill": "^6.26.0",
"core-js": "^2.6.10",
"echarts": "^4.9.0",
@ -18,15 +18,12 @@
"js-cookie": "^2.2.1",
"jspdf": "^2.4.0",
"mavon-editor": "^2.9.1",
"postcss-px2rem": "^0.3.0",
"px2rem-loader": "^0.1.9",
"vue": "^2.6.14",
"vue-cropperjs": "^3.0.0",
"vue-i18n": "^8.26.5",
"vue-pdf": "^4.3.0",
"vue-quill-editor": "^3.0.6",
"vue-router": "^3.5.3",
"vue-schart": "^2.0.0",
"vuedraggable": "^2.24.3",
"vuex": "^3.6.2",
"wow.js": "^1.2.2"

@ -12,8 +12,9 @@ export default {
verification: `${host}users/users/user/captcha`,// 验证码图片
logoDetail: `${host}occupationlab/sys/logo/detail`, //查看系统设置信息
isClient: `${host}users/users/user/isClient`,
platformLogList: `${host}/nakadai/log/platformLogList`,
platformLogList: `${host}nakadai/log/platformLogList`,
logNotification: `${host}nakadai/log/logNotification`,
//实验台
curriculumDetail: `${host}nakadai/nakadai/curriculum/curriculumDetail`, // 课程详情
curriculumChapter: `${host}nakadai/curriculum/chapter/queryChaptersAndSubsections`, // 根据课程id查询章节小节,树状结构
@ -43,6 +44,8 @@ export default {
reportDetail: `${host}occupationlab/achievement/reportDetail`, // 成绩报告详情
updateReport: `${host}occupationlab/achievement/updateReport`, // 更新成绩报告
schoolCourseByAchievement: `${host}nakadai/nakadai/curriculum/schoolCourseByAchievement`, // 获取学校购买订单后的课程
exportLabReport: `${host}occupationlab/achievement/exportLabReport`,
exportBankExperimentReport: `${host}occupationlab/achievement/exportBankExperimentReport`,
// 考核列表
pageStuAssessment: `${host}occupationlab/assessment/pageStuAssessment`, // 学生端——学生考核列表
@ -63,6 +66,8 @@ export default {
queryAllColumns: `${host}occupationlab/enterprise/information/column/queryAllColumns`, // 栏目树
queryArticleByCondition: `${host}occupationlab/enterprise/information/article/queryArticleByCondition`, // 文章列表分页条件查询
getArticle: `${host}occupationlab/enterprise/information/article/getArticle`, // 根据id查询文章
firstLevelColumn: `${host}occupationlab/enterprise/information/column/firstLevelColumn`,
secondaryColumnsByFirst: `${host}occupationlab/enterprise/information/column/secondaryColumnsByFirst`,
// 线上赛事
onlineContestQuery: `${host}occupationlab/enterprise/match/onlineContest/onlineContestQuery`, // 线上赛事列表分页条件查询

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

After

Width:  |  Height:  |  Size: 315 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 MiB

After

Width:  |  Height:  |  Size: 638 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

@ -6,7 +6,7 @@
<el-breadcrumb-item
v-if="index != pages.length - 1"
:key="index"
:to="{ path: route }">
:to="{ path: route, query }">
{{item}}
</el-breadcrumb-item>
<el-breadcrumb-item
@ -29,6 +29,9 @@ export default {
route: {
type: String,
default: 'list'
},
query: {
type: Object
}
},
data() {

@ -80,12 +80,12 @@ export default {
}).catch(err => {})
},
toPersonal() {
//
if (this.isIndex) {
window.open(this.$router.resolve('/setting/person').href)
} else {
this.customerName || this.$router.push("/setting/person") //
}
//
if (this.isIndex) {
window.open(this.$router.resolve('/setting/person').href)
} else {
this.customerName || this.$router.push("/setting/person") //
}
},
toIndex() {
this.$refs.nav.jump({
@ -93,7 +93,13 @@ export default {
})
},
toLogin() {
if (util.cookies.get('serverLogin') === 'true' && util.local.get('oc_server_token')) {
window.open(process.env.NODE_ENV === 'development' ?
'http://192.168.31.125:8081/#/index' :
`${location.origin}/admin/#/index`)
} else {
window.open(this.$router.resolve('/login').href)
}
}
}
};

@ -1,7 +1,12 @@
<template>
<div>
<ul class="nav">
<li v-for="(item,index) in menus" :key="index" :class="{active: active == item.index}" @click="jump(item)">{{item.title}}</li>
<li v-for="(item, i) in menus" :key="i" :class="{active: active == item.index}" @click="jump(item)">
{{item.title}}
<ul :class="['children', {show: $route.path !== '/info/details' && active === '/info/list'}]" v-if="item.index === '/info/list'">
<li v-for="(column, i) in columns" :key="i" :class="{active: columnActive === column.id}" @click="toInfo($event, column)">{{ column.name }}</li>
</ul>
</li>
</ul>
</div>
</template>
@ -64,18 +69,22 @@ export default {
title: "开发者平台"
},
{
index: "/log",
title: "有什么新功能"
index: "/log/list",
title: "更新日志"
}
],
menus: []
menus: [],
columns: [], //
columnActive: this.$route.query.parentId
};
},
mounted() {
const path = this.$route.path
this.menus = Setting.whiteList.find(e => e === path) ? this.touristMenu : this.loginedMenu
this.token && this.getColumns()
},
methods: {
//
jump(item) {
const { index } = item
//
@ -92,10 +101,23 @@ export default {
location.reload()
} else {
this.active = index
this.$router.push(index).catch(err => {})
this.columnActive = ''
index === '/info/list' || this.$router.push(index).catch(err => {})
token !== this.token && location.reload() // tokentoken
}
}
}
},
//
async getColumns() {
const res = await this.$get(this.api.firstLevelColumn)
this.columns = res.data
},
//
toInfo(e, column) {
e.stopPropagation()
const { id } = column
this.columnActive = id
this.$router.push(`/info?parentId=${id}&name=${column.name}`)
}
}
};
@ -103,25 +125,62 @@ export default {
<style lang="scss" scoped>
.nav{
position: absolute;
top: 0;
left: 50%;
display: flex;
transform: translateX(-50%);
& > li{
position: relative;
padding: 0 15px;
margin: 0 20px;
font-size: 16px;
line-height: 60px;
color: #3F3F3F;
white-space: nowrap;
cursor: pointer;
border-bottom: 4px solid transparent;
&.active{
color: $main-color;
border-bottom-color: $main-color;
}
}
.children {
position: absolute;
top: 0;
top: 64px;
left: 50%;
display: flex;
display: none;
background-color: #fff;
border-bottom-left-radius: 6px;
border-bottom-right-radius: 6px;
box-shadow: 0px 2px 10px 0px rgba(0, 0, 0, 0.15);
transform: translateX(-50%);
li{
padding: 0 15px;
margin: 0 20px;
font-size: 16px;
line-height: 60px;
color: #3F3F3F;
white-space: nowrap;
cursor: pointer;
border-bottom: 4px solid transparent;
&.active{
color: $main-color;
border-bottom-color: $main-color;
&.show {
display: flex;
}
& > li {
padding: 0 20px;
margin: 0 20px;
color: #333;
line-height: 64px;
cursor: pointer;
&:before {
content: '';
display: inline-block;
width: 3px;
height: 3px;
margin-right: 10px;
vertical-align: middle;
background-color: #333;
}
&.active {
color: $main-color;
&:before {
background-color: $main-color;
}
}
}
}
}
@media (max-width: 1430px) {
.nav {

@ -151,13 +151,26 @@ export default {
this.$refs.form.clearValidate();
this.loginRules.account[0].message = tab.id === "1" ? "请输入账号" : "请输入手机号/邮箱";
},
//
reloadIndex() {
window.opener && window.opener.location.reload()
},
//
setLogin() {
util.local.set(Setting.tokenKey, this.token, Setting.tokenExpires)
util.successMsg('登录成功')
window.opener && window.opener.location.reload() //
const redirect = this.$route.query.redirect ? decodeURIComponent(this.$route.query.redirect) : "/station"
this.$router.replace(redirect)
util.cookies.remove('serverLogin')
this.reloadIndex()
// true
this.$get(this.api.logNotification).then(res => {
const history = this.$route.query.redirect
const redirect = res.notification ?
'/log' :
history ?
decodeURIComponent(history) :
'/station'
util.successMsg('登录成功')
this.$router.replace(redirect)
}).catch(res => {})
},
submitFormLogin() { //
this.$refs.form.validate(valid => {
@ -200,8 +213,13 @@ export default {
if (val === 1) {
this.setLogin()
} else {
location.href = `${location.origin}/admin/#/redirect?auth=${window.btoa(this.token)}`
// location.href = 'http://192.168.31.125:8081/#/redirect?auth=' + btoa(this.token)
util.cookies.set('serverLogin', true, {
expires: new Date(Date.now() + 15 * 60 * 1000)
})
this.reloadIndex()
location.href = process.env.NODE_ENV === 'development' ?
'http://192.168.31.125:8081/#/redirect?auth=' + btoa(this.token) :
`${location.origin}/admin/#/redirect?auth=${window.btoa(this.token)}`
}
},
phoneCountdown() {
@ -257,13 +275,9 @@ export default {
util.successMsg("绑定成功");
this.form.phone = this.phone;
this.phoneVisible = false;
util.local.set(Setting.tokenKey, res.token, Setting.tokenExpires);
let redirect = this.$route.query.redirect ? decodeURIComponent(this.$route.query.redirect) : "/index";
this.$router.replace(redirect);
util.successMsg("登录成功");
}).catch(res => {
});
this.token = res.token
this.setLogin()
}).catch(res => {})
}
}
};

@ -442,7 +442,6 @@ export default {
this.invitationCode = "";
},
goSubSystem() {
let host = this.host
let token = util.local.get(Setting.tokenKey)
const classId = this.classId
const classItem = this.classList.find(e => e.id == classId)
@ -453,20 +452,13 @@ export default {
util.cookies.set("className", classItem ? encodeURI(classItem.className) : '')
util.cookies.set("projectId", this.projectId)
util.cookies.set("courseId", this.cid)
util.cookies.set("curriculumName", escape(this.curRow.sysName));
util.cookies.set("startTime", this.curRow.startTime)
util.cookies.set("stopTime", this.curRow.stopTime)
util.cookies.set("systemId", curriculumId);
let href = ''
let domainName = ''
domainName = host.slice(0,host.length-6)
if (curriculumId == 11){
//线
// href = `http://124.71.12.62/${this.url}/#/index/list?token=${token}&cid=${this.cid}&systemId=${this.systemId}&projectId=${this.projectId}&assessmentId=${this.assessmentId}&classId=${this.classId}&stopTime=${this.stopTime}`;
// href = `http://www.huorantech.cn/${this.url}/#/index/list?token=${token}&cid=${this.cid}&systemId=${this.systemId}&projectId=${this.projectId}&assessmentId=${this.assessmentId}&classId=${this.classId}&stopTime=${this.stopTime}`;
//
href = `${domainName}/${this.url}/#/index/list?token=${token}&cid=${this.cid}&systemId=${this.systemId}&projectId=${this.projectId}&assessmentId=${this.assessmentId}&classId=${this.classId}&stopTime=${this.stopTime}`;
// href = `http://192.168.31.125:8093/#/index/list?token=${token}&cid=${this.cid}&systemId=${this.systemId}&projectId=${this.projectId}&assessmentId=${this.assessmentId}&classId=${this.classId}&stopTime=${this.stopTime}`;
href = `${Setting.systemPath}/#/index/list?token=${token}&cid=${this.cid}&systemId=${this.systemId}&projectId=${this.projectId}&assessmentId=${this.assessmentId}&classId=${this.classId}&stopTime=${this.stopTime}`;
} else {
if(process.env.NODE_ENV === 'development') {
href = 'http://192.168.31.125:8080/#/'

@ -157,7 +157,6 @@
<img src="@/assets/img/index/pro-bg3-5.png" alt="" class="bg2 wow fadeInDown" data-wow-delay="0.7s">
<img src="@/assets/img/index/pro-bg4-1.png" alt="" class="bg3 wow fadeInDown" data-wow-delay="0.2s">
<img src="@/assets/img/index/pro-bg4-2.png" alt="" class="bg4 wow fadeInDown" data-wow-delay="0.2s">
<img src="@/assets/img/index/pro-bg4-3.png" alt="" class="bg5 wow fadeInDown" data-wow-delay="0.6s">
</div>
<div class="text">
<img src="@/assets/img/index/index21.png" alt="" class="icon wow fadeInLeft" data-wow-delay="0.5s">
@ -590,26 +589,20 @@ export default {
top: 40px;
left: 30px;
width: 530px;
box-shadow: 2px 2px 3px #f1f1f1, -2px -2px 4px #f1f1f1;
}
.bg4 {
top: -20px;
left: 80px;
width: 140px;
}
.bg5 {
bottom: 0px;
left: 50px;
width: 130px;
top: 140px;
left: -20px;
width: 120px;
height: 100px;
}
&:hover {
.bg3 {
transform: scale(1.1);
}
.bg4 {
transform: translate(40px, 0px);
}
.bg5 {
transform: translate(20px, -60px) scale(1.2);
transform: translate(135px, 70px);
}
}
}
@ -634,18 +627,19 @@ export default {
top: 40px;
left: 30px;
width: 530px;
box-shadow: 2px 2px 3px #f1f1f1, -2px -2px 4px #f1f1f1;
}
.bg4 {
top: 150px;
right: 40px;
width: 300px;
width: 295px;
}
&:hover {
.bg3 {
transform: scale(1.1);
}
.bg4 {
transform: translate(-75px, 20px) scale(1.1);
transform: translate(-80px, 25px) scale(1.1);
}
}
}

@ -1,6 +1,6 @@
<template>
<div class="wrap">
<breadcrumb ref="breadcrumb" data="资讯"></breadcrumb>
<breadcrumb ref="breadcrumb" data="资讯" :query="breadcrumbQuery"></breadcrumb>
<div class="page">
<h6 class="title">{{title}}</h6>
<div class="metas">
@ -29,6 +29,10 @@ export default {
return {
firstName: this.$route.query.first,
secondName: this.$route.query.second,
breadcrumbQuery: {
parentId: this.$route.query.parentId,
name: this.$route.query.first
},
id: this.$route.query.id,
coverUrl: '',
author: '',

@ -10,26 +10,10 @@
:default-active="defaultIndex"
@select="initData">
<template v-for="item in menuList">
<template v-if="item.secondColumn.length">
<el-submenu :index="item.id" :key="item.id">
<template slot="title">
<i :class="item.icon"></i>
<span slot="title">{{ item.name }}</span>
</template>
<template v-for="subItem in item.secondColumn">
<el-menu-item
:index="subItem.id"
:key="subItem.id"
>{{ subItem.name }}</el-menu-item>
</template>
</el-submenu>
</template>
<template v-else>
<el-menu-item :index="item.id" :key="item.id">
<i :class="item.icon"></i>
<span slot="title">{{ item.name }}</span>
</el-menu-item>
</template>
<el-menu-item :index="item.id" :key="item.id">
<i :class="item.icon"></i>
<span slot="title">{{ item.name }}</span>
</el-menu-item>
</template>
</el-menu>
</div>
@ -88,9 +72,7 @@ export default {
totals: 0,
listData: [],
loadIns: null,
columnId: '',
firstName: '',
secondName: ''
columnId: ''
};
},
watch: {
@ -99,6 +81,9 @@ export default {
this.searchTimer = setTimeout(() => {
this.getData()
},500)
},
$route() {
this.getData()
}
},
mounted() {
@ -110,29 +95,25 @@ export default {
"setColumnId"
]),
getData() {
this.setColumnId("");
let data = {
page: this.pageNo,
size: this.pageSize
}
const parentId = this.$route.query.parentId
this.setColumnId('')
this.loadIns = Loading.service()
this.$get(this.api.queryAllColumns,data).then(res => {
this.menuList = res.columnTree
this.$get(this.api.secondaryColumnsByFirst, {
parentId
}).then(res => {
const { data } = res
this.menuList = data
// ,
if(this.historyId){
this.defaultIndex = this.historyId
this.getContent(this.historyId)
const historyId = this.historyId
if(historyId && data.find(e => e.id === historyId)){
this.defaultIndex = historyId
this.getContent(historyId)
}else{
//
if(this.menuList[0].secondColumn.length){
this.getContent(this.menuList[0].secondColumn[0].id)
this.defaultIndex = this.menuList[0].secondColumn[0].id
}else{
this.getContent(this.menuList[0].id)
this.defaultIndex = this.menuList[0].id
}
const id = data.length ? data[0].id : parentId
this.getContent(id)
this.defaultIndex = id
}
}).catch(res => {
this.loadIns.close()
});
@ -144,28 +125,11 @@ export default {
getContent(index,indexPath){
if(indexPath) this.loadIns = Loading.service()
this.columnId = index
let data = {
this.$get(`${this.api.queryArticleByCondition}/${this.pageNo}/${this.pageSize}`, {
name: this.keyword,
columnId: index,
port: 0
}
let list = this.menuList
list.map(n => {
if(n.secondColumn.length){
n.secondColumn.map(e => {
if(e.id == index){
this.firstName = n.name
this.secondName = e.name
}
})
}else{
if(n.id == index){
this.firstName = n.name
this.secondName = ''
}
}
})
this.$get(`${this.api.queryArticleByCondition}/${this.pageNo}/${this.pageSize}`,data).then(res => {
}).then(res => {
this.listData = res.articleList
this.totals = res.total
this.listData.map(n => {
@ -181,8 +145,10 @@ export default {
this.getContent(this.columnId);
},
toArticle(id){
this.setColumnId(this.columnId);
this.$router.push(`/info/details?id=${id}&first=${this.firstName}&second=${this.secondName}`)
const columnId = this.columnId
const list = this.menuList
this.setColumnId(columnId)
this.$router.push(`/info/details?parentId=${this.$route.query.parentId}&id=${id}&first=${this.$route.query.name}&second=${list.length ? list.find(e => e.id === columnId).name : ''}`)
}
}
};

@ -1,21 +1,26 @@
<template>
<div class="wrap">
<el-timeline>
<el-timeline-item v-for="(item, i) in listData" :key="i" :timestamp="item.updateTime" placement="top" color="#007EFF">
<el-card>
<h6>{{ platformList.find(e => e.id === item.platformId).name + item.versionName }}</h6>
<div class="top">
<img width="450" src="@/assets/img/update.png" alt="">
<p>给用户带来更好的服务与体验是我们不断优化和迭代产品的动力</p>
</div>
<div class="timeline">
<div class="item" v-for="(item, i) in listData" :key="i">
<span class="date">{{ item.updateTime }}</span>
<div class="right">
<h6>{{ item.versionName }}</h6>
<img v-if="item.coverUrl" :src="item.coverUrl" alt="" class="cover">
<ul class="detail">
<li v-for="(item, i) in item.logContents" :key="i">
<p class="name">{{ funcList.find(e => e.id === item.type).name }}</p>
<div class="val">
<p class="" v-for="(item, i) in item.content" :key="i">{{ item }}</p>
</div>
</li>
</ul>
</el-card>
</el-timeline-item>
</el-timeline>
<li v-for="(item, i) in item.logContents" :key="i">
<p class="name"><img :src="require('@/assets/img/' + funcList.find(e => e.id === item.type).icon + '.png')" alt=""> {{ funcList.find(e => e.id === item.type).name }}</p>
<div class="val">
<p class="" v-for="(item, i) in item.content" :key="i">{{ item }}</p>
</div>
</li>
</ul>
</div>
</div>
</div>
</div>
</template>
@ -30,15 +35,18 @@ export default {
funcList: [
{
id: 0,
name: '新功能'
name: '新功能',
icon: 'func'
},
{
id: 1,
name: '修复'
name: '修复',
icon: 'bug'
},
{
id: 2,
name: '优化'
name: '优化',
icon: 'optimize'
}
]
}
@ -63,15 +71,45 @@ export default {
</script>
<style lang="scss" scoped>
.wrap{
padding-top: 50px;
background-color: #fff;
/deep/.el-card__body {
padding-left: 30px;
.wrap {
padding: 50px 0 20px;
background-color: #000;
.top {
margin-bottom: 100px;
text-align: center;
img {
margin: 30px 0;
}
p {
color: #e9e9e9;
}
}
.timeline {
display: flex;
flex-direction: column;
width: 1000px;
margin: 0 auto;
}
.item {
display: flex;
justify-content: center;
margin-bottom: 30px;
}
.date {
width: 300px;
margin-right: 100px;
text-align: right;
color: #cbcbcb;
font-size: 14px;
}
.right {
flex: 1;
color: #fff;
}
h6 {
margin-bottom: 15px;
font-size: 18px;
margin-bottom: 15px;
font-size: 18px;
line-height: 1;
}
.cover {
max-width: 400px;
@ -82,9 +120,15 @@ export default {
margin-bottom: 20px;
}
.name {
display: flex;
align-items: center;
margin-bottom: 5px;
font-size: 14px;
color: $main-color;
color: #fff;
img {
width: 20px;
margin-right: 8px;
}
}
.val {
font-size: 15px;
@ -92,13 +136,14 @@ export default {
white-space: pre-wrap;
p {
position: relative;
color: #a3a3a3;
&:before {
content: '';
position: absolute;
top: 11px;
left: -10px;
display: inline-block;
width: 5px;
height: 5px;
margin: 0 15px 0 8px;
vertical-align: middle;
border-radius: 20px;
background-color: $main-color;
}

@ -49,10 +49,8 @@ export default {
}
},
mounted() {
if (this.curriculumId) {
this.page = 1;
this.getData();
}
this.page = 1
this.getData()
},
methods: {
...mapActions({

@ -76,7 +76,12 @@ export default {
data() {
return {
curriculumId: "",
curriculumList: [],
curriculumList: [
{
cid: '',
curriculumName: '不限'
}
],
overview: {},
active: "practice",
tabList: {
@ -105,18 +110,18 @@ export default {
getschoolCourse() { //
this.$get(this.api.schoolCourseByAchievement).then(res => {
if (res.data && res.data.length) {
this.curriculumList = res.data;
this.curriculumList = [...this.curriculumList, ...res.data]
this.curriculumId = this.currId || this.curriculumList[0].cid
console.log(22, this.curriculumId)
}
}).catch(err => {
console.log(err);
});
},
getData() { //
this.$get(this.api.experimentOverview).then(res => {
this.overview = res.data;
}).catch(err => {
});
this.$get(this.api.experimentOverview).then(res => {
this.overview = res.data;
}).catch(err => {})
},
exportData() { //
if (this.active == "practice") {

@ -38,10 +38,8 @@ export default {
}
},
mounted() {
if (this.curriculumId) {
this.page = 1;
this.getData();
}
this.page = 1
this.getData()
},
methods: {
...mapActions({
@ -70,7 +68,7 @@ export default {
},
toDetails(row) {
this.setCurriculum(this.curriculumId)
this.$router.push(`/record/details?curriculumId=${this.curriculumId}&projectId=${row.projectId}`);
this.$router.push(`/record/details?curriculumId=${this.$parent.curriculumList.find(e => e.curriculumName === row.curriculumName).cid}&projectId=${row.projectId}`);
}
}
};

@ -63,8 +63,8 @@
</li>
<li>
<label>学生班级</label>
<el-input v-if="editing" v-model="infoData.workNumber"></el-input>
<span v-else>{{ infoData.workNumber }}</span>
<el-input v-if="editing" v-model="infoData.className"></el-input>
<span v-else>{{ infoData.className }}</span>
</li>
<li>
<label>指导老师</label>
@ -197,9 +197,22 @@ export default {
getData() { //
this.$get(`${this.api.reportDetail}?reportId=${this.reportId}`).then(res => {
this.form = res.report
this.expData = res.userScores
this.project = this.expData.find(e => e.lcRuleRecords) // lcRuleRecords
let form = this.form;
const list = res.userScores
this.project = list.find(e => e.lcRuleRecords) // lcRuleRecords
let form = this.form
form.className = this.className
if (this.project) {
list.map(e => {
e.assessmentPoint = ''
e.referenceAnswer = ''
e.answer = ''
e.lcRuleRecords.map((n, i) => {
e.assessmentPoint += `${i + 1}.${n.name}`
e.referenceAnswer += `${i + 1}.${n.ruleAnswer}`
e.answer += `${i + 1}.${n.userAnswer}`
})
})
}
this.infoData = {
workNumber: form.workNumber,
experimentalClassName: form.experimentalClassName,
@ -210,10 +223,31 @@ export default {
score: form.score,
userName: form.userName
}
this.expData = list
form.assessmentId && (this.breadPath = ['实验记录', '实验报告'])
}).catch(res => {})
},
exportPage() { //
exportPage() {
const form = JSON.parse(JSON.stringify(this.form))
const list = JSON.parse(JSON.stringify(this.expData))
list.map((e, i) => {
e.id = i + 1
if (e.referenceAnswer && typeof e.referenceAnswer === 'string') e.referenceAnswer = e.referenceAnswer.replace(/<[^>]+>/g, '').replace(/(&nbsp;|&amp;|%s)/g, '').replace(/>/g, '&gt;').replace(/</g, '&lt;')
if (e.answer && typeof e.answer === 'string') e.answer = e.answer.replace(/<[^>]+>/g, '').replace(/(&nbsp;|&amp;|%s)/g, '').replace(/>/g, '&gt;').replace(/</g, '&lt;')
})
for (const i in form) {
if (form[i] && typeof form[i] === 'string') form[i] = form[i].replace(/<[^>]+>/g, '')
}
form.purpose = form.purpose.replace(/<[^>]+>/g, '')
this.$post(this.project ? this.api.exportBankExperimentReport : this.api.exportLabReport, {
...form,
experimentalData: list
}).then(res => {
console.log(res)
util.downloadFileDirect(`实验报告.docx`,new Blob([res]))
}).catch(res => {})
},
exportPage1() { //
this.loading = true;
this.loadIns = Loading.service({
background: "#fff"

@ -51,8 +51,8 @@
<el-date-picker size="small" placeholder="请选择时间" v-model="form.dateBirth" :clearable="false" type="date" format="yyyy-MM-dd" value-format="yyyy-MM-dd"></el-date-picker>
</li>
<li>
<label></label>
<el-input size="small" placeholder="请输入证" v-model="form.idNumber" clearable></el-input>
<label>身份</label>
<el-input size="small" placeholder="请输入身份证" v-model="form.idNumber" clearable></el-input>
</li>
</div>
<div class="line info">
@ -64,7 +64,7 @@
</li>
<li>
<label>当前所在学校</label>
<el-input size="small" placeholder="请输入学校" v-model="form.schoolName" clearable></el-input>
<el-input size="small" readonly placeholder="请输入学校" v-model="form.schoolName" clearable></el-input>
</li>
</div>
</ul>
@ -450,7 +450,7 @@ export default {
}).catch(res => {})
},
save() {
if (this.form.idNumber && !/(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)/.test(this.form.idNumber)) return util.warningMsg("请输入正确的证号码");
if (this.form.idNumber && !/(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)/.test(this.form.idNumber)) return util.warningMsg("请输入正确的身份证号码");
let form = this.form;
let personalFileList = []
this.archivesList.forEach((n,k) => {

@ -95,6 +95,7 @@ export default {
components: { pdf, breadcrumb },
data() {
return {
systemIds: '',
courseId: this.$route.query.courseId,
curriculumName: this.$route.query.curriculumName,
video: "http://liuwanr.oss-cn-shenzhen.aliyuncs.com/mp4/20200519/1589871025648.mp4",
@ -148,6 +149,7 @@ export default {
this.briefIntroduction = data.briefIntroduction;
this.teachingObjectives = data.teachingObjectives;
this.assessmentList = data.assessmentConfig;
this.systemIds = data.systemIds
},
async getChapter() {
let res = await this.$get(`${this.api.curriculumChapter}/${this.courseId}`);
@ -277,7 +279,7 @@ export default {
this.currentPage = 1;
},
goSystem() { //
let id = this.assessmentList[0].systemId;
const id = this.systemIds
let href = ''
let token = util.local.get(Setting.tokenKey);
let roleId = this.roleId == 4 ? 0 : 1;
@ -303,6 +305,7 @@ export default {
util.cookies.set("stopTime", "", -1);
util.cookies.set("token", token);
util.cookies.set("courseId", this.courseId);
util.cookies.set("curriculumName", escape(this.curriculumName));
util.cookies.set("systemId", id);
location.href = href;
}

@ -40,6 +40,7 @@ if (isHh) {
// host = "http://www.occupationlab.com:9000/";//线上
host = "http://39.108.250.202:9000/"; // 中台测试服
systemPath = `http://192.168.31.155:8093`
systemPath = `http://192.168.31.125:8093`
// host = "http://192.168.31.137:9000"; // 赓
// host = "http://192.168.31.151:9000/"; // 榕
title = "职站";

Loading…
Cancel
Save