实验报告修改及成绩列表

dev_2022-05-11
yujialong 3 years ago
parent e8a6237ce5
commit 23bf70ff73
  1. 2
      src/api/index.js
  2. BIN
      src/assets/img/point.png
  3. BIN
      src/assets/img/report2.png
  4. BIN
      src/assets/img/report3.png
  5. BIN
      src/assets/img/report4.png
  6. BIN
      src/assets/img/report5.png
  7. 1
      src/layouts/header/index.vue
  8. 6
      src/pages/achievement/ass/index.vue
  9. 14
      src/pages/achievement/list/index.vue
  10. 617
      src/pages/achievement/show/index.vue
  11. 4
      src/pages/achievement/teach/index.vue
  12. 4
      src/pages/assessment/add/index.vue
  13. 3
      src/pages/assessment/list/index.vue
  14. 1
      src/pages/course/contentSettings/index.vue
  15. 1
      src/pages/evaluation/list/index.vue
  16. 20
      src/pages/project/list/index.vue
  17. 2
      src/pages/station/list/index.vue
  18. 6
      src/pages/system/list/role.vue
  19. 3
      src/router/index.js
  20. 17
      src/styles/common.scss

@ -74,7 +74,7 @@ export default {
getPracticeDetail: `${host}occupationlab/achievement/getPracticeDetail`, // 管理端练习成绩详情 getPracticeDetail: `${host}occupationlab/achievement/getPracticeDetail`, // 管理端练习成绩详情
myClass: `${host}occupationlab/achievement/myClass`, // 教师端:我的班级 myClass: `${host}occupationlab/achievement/myClass`, // 教师端:我的班级
deleteReportById: `${host}occupationlab/achievement/deleteReportById`, // 批量删除成绩管理中的项目/批量删除成绩管理中的考核 deleteReportById: `${host}occupationlab/achievement/deleteReportById`, // 批量删除成绩管理中的项目/批量删除成绩管理中的考核
experimentOverview: `${host}occupationlab/achievement/reportDetail`, // 查看实验报告 reportDetail: `${host}occupationlab/achievement/reportDetail`, // 查看实验报告
schoolCourseByAchievement: `${host}nakadai/nakadai/curriculum/schoolCourseByAchievement`, // 获取学校购买订单后的课程 schoolCourseByAchievement: `${host}nakadai/nakadai/curriculum/schoolCourseByAchievement`, // 获取学校购买订单后的课程
spliceClass: `${host}occupationlab/achievement/spliceClass`, spliceClass: `${host}occupationlab/achievement/spliceClass`,

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

@ -58,7 +58,6 @@ export default {
]) ])
}, },
mounted() { mounted() {
console.log(33, this.customer, this.userName)
this.getSystemDetail(); this.getSystemDetail();
this.getUserDetail(); this.getUserDetail();
}, },

@ -42,7 +42,7 @@
<el-button type="primary" @click="exportData">导出</el-button> <el-button type="primary" @click="exportData">导出</el-button>
</div> </div>
</div> </div>
<el-table :data="listData" class="table" stripe header-align="center" @selection-change="handleSelectionChange" row-key="reportId"> <el-table :data="listData" class="table" ref="table" stripe header-align="center" @selection-change="handleSelectionChange" row-key="reportId">
<el-table-column type="selection" width="55" align="center" :reserve-selection="true"></el-table-column> <el-table-column type="selection" width="55" align="center" :reserve-selection="true"></el-table-column>
<el-table-column type="index" width="100" label="序号" align="center"> <el-table-column type="index" width="100" label="序号" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
@ -122,7 +122,6 @@ export default {
this.classInfo.push(classInfo[i]) this.classInfo.push(classInfo[i])
} }
} }
console.log(this.classInfo)
for(var i=0;i<this.classInfo.length;i++){ for(var i=0;i<this.classInfo.length;i++){
let id = this.classInfo[i].id let id = this.classInfo[i].id
this.classInfo[i].id = id.toString() this.classInfo[i].id = id.toString()
@ -179,8 +178,6 @@ export default {
} }
}, },
show(row) { show(row) {
// console.log(row)
if (this.systemId == 2) { if (this.systemId == 2) {
this.$router.push(`showexperimentOption?id=${row.reportId}&stuId=${row.userId}&studentName=${row.studentName}&class=${row.class}`); this.$router.push(`showexperimentOption?id=${row.reportId}&stuId=${row.userId}&studentName=${row.studentName}&class=${row.class}`);
} else if (this.systemId == 3) { } else if (this.systemId == 3) {
@ -246,6 +243,7 @@ export default {
} }
this.$post(`${this.api.deleteExperimentalReport}`,ids).then(res => { this.$post(`${this.api.deleteExperimentalReport}`,ids).then(res => {
util.successMsg("删除成功"); util.successMsg("删除成功");
this.$refs.table.clearSelection()
this.getData(); this.getData();
}).catch(res => { }).catch(res => {
}); });

@ -89,7 +89,7 @@
<el-table-column label="操作" align="center" min-width="300"> <el-table-column label="操作" align="center" min-width="300">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button v-if="auth('练习成绩管理') || auth('考核成绩管理')" type="text" @click="entry(scope.row)">成绩管理</el-button> <el-button v-if="auth('练习成绩管理') || auth('考核成绩管理')" type="text" @click="entry(scope.row)">成绩管理</el-button>
<el-button type="text" v-if="scope.row.isDel == 1" @click="handleDelete(scope.row)" >删除</el-button> <el-button type="text" v-if="(scope.row.isAdmin === 1 && (scope.row.isDel === 1 || scope.row.courseDel === 1)) || (scope.row.isAdmin === 0 && scope.row.isDel === 1)" @click="handleDelete(scope.row)" >删除</el-button>
<el-button type="text" v-else style='color:#999' >删除</el-button> <el-button type="text" v-else style='color:#999' >删除</el-button>
</template> </template>
</el-table-column> </el-table-column>
@ -176,7 +176,6 @@ export default {
}, },
mounted() { mounted() {
let per = this.$route.query.per let per = this.$route.query.per
console.log(per)
if(per == '1'){ if(per == '1'){
per = 1 per = 1
}else{ }else{
@ -209,16 +208,19 @@ export default {
this.loadIns = Loading.service({ this.loadIns = Loading.service({
background: "rgba(255,255,255,.6)" background: "rgba(255,255,255,.6)"
}); });
const curriculumId = this.curriculumId
const curr = this.curriculumList.find(e => e.cid == curriculumId)
let data = { let data = {
classId: this.classId, classId: this.classId,
permissions: this.projectPermissions, permissions: this.projectPermissions,
curriculumId: this.curriculumId, curriculumId,
keyWord: this.keyword, keyWord: this.keyword,
startTime: this.startingtime, startTime: this.startingtime,
endTime: this.endTime, endTime: this.endTime,
month: this.month, month: this.month,
pageNum: this.page, pageNum: this.page,
pageSize: this.pageSize pageSize: this.pageSize,
systemId: curr ? curr.systemId : ''
}; };
this.$post(this.api.getAchievementInfo, data).then(res => { this.$post(this.api.getAchievementInfo, data).then(res => {
if(this.projectPermissions == 0){ if(this.projectPermissions == 0){
@ -241,8 +243,8 @@ export default {
this.getData(); this.getData();
}, },
disabledSelection(row, index) { // disabledSelection(row, index) { //
if (row.isDel == 0) return false; if ((row.isAdmin === 1 && (row.isDel === 1 || row.courseDel === 1)) || (row.isAdmin === 0 && row.isDel === 1)) return true
return true; return false
}, },
entry(row) { // entry(row) { //
if (this.projectPermissions === 1) { if (this.projectPermissions === 1) {

@ -1,263 +1,168 @@
<template> <template>
<div class="box"> <div class="wrap">
<el-row :gutter="24">
<el-col :span="24">
<el-card shadow="hover" class="m-b-20"> <el-card shadow="hover" class="m-b-20">
<div class="flex-between"> <el-page-header @back="$router.back()" content="查看报告"></el-page-header>
<el-page-header @back="goBack" content="查看报告"></el-page-header>
</div>
</el-card> </el-card>
<div id="pdfDom"> <div class="content">
<h6 style="text-align: center;font-size: 20px">标准实验报告</h6> <h6 class="r-title">标准实验报告</h6>
<div class="flex-center m-b-20 user_header"> <div class="info">
<p class="addhr_tag"></p> <h6 class="l-title">
<span style="font-size: 18px">基本信息</span> <img src="@/assets/img/info1.png" alt="">
</div> 基本信息
</h6>
<div> <ul :class="['info-list', {edit: editing}]">
<el-table :data="infoData" class="info-table" stripe header-align="center"> <li>
<el-table-column prop="userName" label="学生姓名" align="center"> <label>学生姓名</label>
</el-table-column> <el-input v-if="editing" v-model="infoData.userName" disabled></el-input>
<el-table-column prop="workNumber" label="学生学号" align="center"> <span v-else>{{ infoData.userName }}</span>
</el-table-column> </li>
<el-table-column prop="className" label="学生班级" align="center"> <li>
</el-table-column> <label>学生学号</label>
<el-table-column prop="instructor" label="指导老师" align="center"> <el-input v-if="editing" v-model="infoData.workNumber" disabled></el-input>
</el-table-column> <span v-else>{{ infoData.workNumber }}</span>
<el-table-column prop="period" label="实验学时" align="center"> </li>
</el-table-column> <li>
<el-table-column prop="submitTime" label="实验时间" align="center"> <label>实验时间</label>
</el-table-column> <el-input v-if="editing" v-model="infoData.submitTime" disabled></el-input>
<el-table-column prop="score" label="实验成绩" align="center"> <span v-else>{{ infoData.submitTime }}</span>
</el-table-column> </li>
</el-table> <li>
<label>实验成绩</label>
<el-input v-if="editing" v-model="infoData.score" disabled></el-input>
<div v-else class="score-wrap">
<em>{{ infoData.score }}</em>
<img src="@/assets/img/point.png" alt="">
</div> </div>
</li>
<li>
<label>学生班级</label>
<el-input v-if="editing" v-model="infoData.workNumber"></el-input>
<span v-else>{{ infoData.workNumber }}</span>
</li>
<li>
<label>指导老师</label>
<el-input v-if="editing" v-model="infoData.instructor"></el-input>
<span v-else>{{ infoData.instructor }}</span>
</li>
<li>
<label>实验学时</label>
<el-input v-if="editing" v-model="infoData.period"></el-input>
<span v-else>{{ infoData.period }}</span>
</li>
</ul>
<div class="m-b-20"> <div class="m-b-20">
<div class="meta-title-wrap"> <h6 class="l-title">
<p class="meta-title"><img src="@/assets/img/cup.png" alt=""> 实验项目名称</p> <img src="@/assets/img/report2.png" alt="">
</div> 实验项目名称
<el-input v-model="form.projectName" type="textarea" :disabled="true" rows="5"></el-input> </h6>
<el-input v-if="editing" v-model="form.projectName" type="textarea"></el-input>
<div v-else class="pre-wrap" v-html="form.projectName"></div>
</div> </div>
<div class="m-b-20"> <div class="m-b-20">
<div class="meta-title-wrap"> <h6 class="l-title">
<p class="meta-title">实验目的</p> <img src="@/assets/img/report3.png" alt="">
</div> 实验目的
<!-- <el-input v-model="form.purpose" type="textarea" :disabled="true" rows="5"></el-input> --> </h6>
<div class="pre-wrap" v-html="form.purpose"></div> <div :class="['pre-wrap', {edit: editing}]" v-html="form.purpose"></div>
</div> </div>
<div class="m-b-20"> <div class="m-b-20">
<div class="meta-title-wrap"> <h6 class="l-title">
<p class="meta-title">实验数据</p> <img src="@/assets/img/report4.png" alt="">
</div> 实验数据
<el-table :data="expData" class="table" stripe border header-align="center"> </h6>
<el-table-column type="index" label="序号" align="center" width="80"> <el-table :data="expData" class="table" border stripe header-align="center">
<el-table-column type="index" label="序号" align="center" width="60">
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.$index + 1 }} {{ scope.$index + 1 }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="judgmentName" label="判分点" align="center" min-width="200"> <el-table-column prop="judgmentName" label="判分点" width="270" align="center"></el-table-column>
</el-table-column> <el-table-column v-if='project' prop="judgmentName" label="考核点" align="center" width="150">
<el-table-column v-if='project' prop="userAnswer" label="考核点" align="center" >
<template slot-scope="scope"> <template slot-scope="scope">
<div v-for="(item, index) in scope.row.lcRuleRecords"> <div v-for="(item, index) in scope.row.lcRuleRecords" :key="index">
<span>
<span>{{index+1}}. </span>{{item.name}} <span>{{index+1}}. </span>{{item.name}}
</span>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="answer" label="参考答案" align="center" min-width="400"> <el-table-column prop="ruleAnswer" label="参考答案" style='word-wrap: break-word' align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if='scope.row.lcRuleRecords'> <div v-if='scope.row.lcRuleRecords'>
<div v-for="(item, index) in scope.row.lcRuleRecords"> <div v-for="(item, index) in scope.row.lcRuleRecords" :key="index">
<span>
<span>{{index+1}}. </span>{{item.ruleAnswer}} <span>{{index+1}}. </span>{{item.ruleAnswer}}
</span>
</div> </div>
</div> </div>
<div v-else v-html='scope.row.referenceAnswer'> <div v-else v-html="scope.row.referenceAnswer"></div>
<!-- {{scope.row.referenceAnswer}}-->
</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="userAnswer" label="学生答案" align="center" min-width="400"> <el-table-column prop="userAnswer" label="学生答案" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if='scope.row.lcRuleRecords'> <div v-if='scope.row.lcRuleRecords'>
<div v-for="(item, index) in scope.row.lcRuleRecords"> <div v-for="(item, index) in scope.row.lcRuleRecords" :key="index">
<span v-if='item.userAnswer'>
<span>{{index+1}}. </span>{{item.userAnswer}} <span>{{index+1}}. </span>{{item.userAnswer}}
</span>
<span v-else>
<span>{{index+1}}. </span>未填写
</span>
</div> </div>
</div> </div>
<div v-else v-html='scope.row.answer' style='white-space: pre-wrap'> <div v-else v-html='scope.row.answer' style='white-space: pre-wrap'></div>
<!-- {{scope.row.answer}}-->
</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="score" label="得分" width="80" align="center"></el-table-column>
<el-table-column prop="score" label="得分" align="center" width="80">
</el-table-column>
</el-table> </el-table>
</div> </div>
<div class="m-b-20"> <div class="m-b-20">
<div class="meta-title-wrap"> <h6 class="l-title">
<p class="meta-title">实验总结与体会</p> <img src="@/assets/img/report5.png" alt="">
实验总结与体会
</h6>
<quill v-if="editing" :border="true" v-model="form.summarize" :minHeight="150" :height="150" />
<div v-else class="pre-wrap" v-html="form.summarize"></div>
</div> </div>
<el-input type="textarea" v-model="form.summarize" rows="5" disabled></el-input>
</div> </div>
</div> </div>
</el-col>
</el-row>
</div> </div>
</template> </template>
<script> <script>
import { mapState } from "vuex";
import util from "@/libs/util";
export default { export default {
data() { data() {
return { return {
reportId: this.$route.query.reportId,
projectId: this.$route.query.projectId,
title: "实验报告", title: "实验报告",
form: { form: {
analysis: "", className: "",
conclusion: "", instructor: "",
content: ``,
data: "",
purpose: ``,
experimentId: "",
experimentalClassName: "",
improvement: "",
laboratory: "",
period: "", period: "",
principle: "", projectName: "",
proName: "",
score: 0,
step: ``,
submitTime: "",
summarize: "", summarize: "",
instructor: "",
userId: this.userId,
userName: "",
workNumber: ""
}, },
type: this.$route.query.type, infoData: {},
id: this.$route.query.id,
recordId: this.$route.query.recordId,
reportId: this.$route.query.reportId,
projectId: this.$route.query.projectId,
studentId: this.$route.query.studentId,
infoData: [],
expData: [], expData: [],
accountData: [], editing: false,
showData: "1", loadIns: null,
autograph: "1", loading: false,
pages: 1, project:false
ipVisible: false,
project:false,
fileList: [{ name: "food.jpeg", url: "https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100" }, {
name: "food2.jpeg",
url: "https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100"
}],
conclusionOptions: [
{
value: 1,
label: "结论符合预期"
}
]
}; };
}, },
computed: {
...mapState("user", [
"userId"
])
},
mounted() { mounted() {
this.getData()
this.getData();
}, },
methods: { methods: {
getData() { getData() { //
if (this.type) { this.$get(`${this.api.reportDetail}?reportId=${this.reportId}`).then(res => {
let data = { this.form = res.report
reportId: this.reportId this.expData = res.userScores
}; this.project = this.expData.find(e => e.lcRuleRecords) // lcRuleRecords
this.$get(this.api.experimentOverview, data).then(res => {
this.form = res.report;
let expData = res.userScores;
let form = this.form;
let score = form.score;
for(var i=0;i<expData.length;i++){
console.log(expData[i].referenceAnswer)
if (expData[i].referenceAnswer != undefined && expData[i].referenceAnswer){
console.log('123')
this.project = false
}else{
console.log('456')
this.project = true
}
}
if (expData) {
if (score) {
expData.map(n => {
if (n.isError) {
score -= n.codeScore;
n.codeScore = 0;
}
});
form.score = score;
}
this.expData = expData;
}
this.infoData.push({
workNumber: form.workNumber,
experimentalClassName: form.experimentalClassName,
instructor: form.instructor,
period: form.period,
laboratory: form.laboratory,
submitTime: form.submitTime,
score: form.score,
userName: form.userName,
className:form.className,
});
}).catch(res => {
});
} else {
let data = {
studentId: this.studentId,
projectId: this.projectId,
// recordId: this.id,
reportId: this.reportId
};
this.$get(this.api.experimentOverview, data).then(res => {
console.log(res)
this.form = res.report ? res.report : {};
let expData = res.userScores;
let form = this.form; let form = this.form;
let score = form.score; this.infoData = {
for(var i=0;i<expData.length;i++){
console.log(expData[i].referenceAnswer)
if (expData[i].referenceAnswer != undefined && expData[i].referenceAnswer){
console.log('123')
this.project = false
}else{
console.log('456')
this.project = true
}
}
if (expData) {
if (score) {
expData.map(n => {
if (n.isError) {
score -= n.codeScore;
n.codeScore = 0;
}
});
form.score = score;
}
this.expData = expData;
}
this.infoData.push({
workNumber: form.workNumber, workNumber: form.workNumber,
experimentalClassName: form.experimentalClassName, experimentalClassName: form.experimentalClassName,
instructor: form.instructor, instructor: form.instructor,
@ -265,244 +170,136 @@ export default {
laboratory: form.laboratory, laboratory: form.laboratory,
submitTime: form.submitTime, submitTime: form.submitTime,
score: form.score, score: form.score,
userName: form.userName, userName: form.userName
className:form.className,
});
}).catch(res => {
});
} }
}, }).catch(res => {})
handleRemove(file, fileList) {
console.log(file, fileList);
},
handlePreview(file) {
console.log(file);
},
saveAdd() {
let data = {
systemId: this.configId,
systemName: this.form.systemName,
systemType: this.form.systemType,
systemAttribution: this.form.systemAttribution
};
if (this.configId) {
this.$post(this.api.updateServiceConfig, data).then((res) => {
util.successMsg("编辑成功");
this.goBack();
}).catch((res) => {
});
} else {
this.$post(this.api.updateServiceConfig, data).then((res) => {
util.successMsg("添加成功");
this.goBack();
}).catch((res) => {
});
}
},
handlePictureCardPreview(file) {
this.dialogImageUrl = file.url;
this.dialogVisible = true;
},
SpanMethod({ row, column, rowIndex, columnIndex }) {
if (rowIndex % 2 === 0) {
if (columnIndex === 6) {
if (!row.Intranet) {
return [1, 2];
}
}
// else if (columnIndex === 1) {
// return [0, 0];
// }
}
},
goBack() {
this.$router.back();
},
exportPage() {
var title = this.title;
html2Canvas(document.querySelector("#pdfDom"), {
allowTaint: true
}).then(function(canvas) {
let contentWidth = canvas.width;
let contentHeight = canvas.height;
let pageHeight = contentWidth / 592.28 * 841.89;
let leftHeight = contentHeight;
let position = 0;
let imgWidth = 595.28;
let imgHeight = 592.28 / contentWidth * contentHeight;
let pageData = canvas.toDataURL("image/jpeg", 1.0);
let PDF = new JsPDF("", "pt", "a4");
if (leftHeight < pageHeight) {
PDF.addImage(pageData, "JPEG", 0, 0, imgWidth, imgHeight);
} else {
while (leftHeight > 0) {
PDF.addImage(pageData, "JPEG", 0, position, imgWidth, imgHeight);
leftHeight -= pageHeight;
position -= 841.89;
if (leftHeight > 0) {
PDF.addPage();
}
}
}
PDF.save(title + ".pdf");
}
);
} }
} }
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.box { .wrap {
//padding: 0 20px; padding: 12px 300px 20px;
//background-color: #fff;
} }
code, kbd, samp{
/deep/ .el-textarea.is-disabled .el-textarea__inner { font-family: 'PingFang SC', "Helvetica Neue", Helvetica, "microsoft yahei", arial, STHeiTi, sans-serif;
color: #777; word-wrap: break-word;
background-color: #e5dfff; white-space: pre-wrap;
} }
/deep/ pre{
.pre-wrap { white-space: pre-wrap; /* css-3 */
min-height: 117px; white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
padding: 5px 15px; white-space: pre-wrap; /* Opera 4-6 */
color: #777; white-space: -o-pre-wrap; /* Opera 7 */
background-color: #e5dfff; word-wrap: break-word; /* Internet Explorer 5.5+ */
word-break:break-all;
overflow:hidden;
font-size: 12px;
font-weight:400;
font-family:'PingFang SC', "Helvetica Neue", Helvetica, "microsoft yahei", arial, STHeiTi, sans-serif
} }
.content {
#pdfDom { padding: 16px 40px;
padding: 50px;
background: #fff; background: #fff;
/deep/ .info-table { &.loading {
padding-top: 30px;
}
.r-title {
margin-bottom: 40px; margin-bottom: 40px;
border: 0; font-size: 24px;
th { text-align: center;
background-color: #fff !important; color: #333;
.cell {
color: #444;
line-height: 35px;
} }
.info {
padding: 20px 16px;
border: 1px solid #E1E6F2;
} }
.l-title {
tr { display: flex;
border: 0; align-items: center;
padding: 5px 8px;
margin-bottom: 12px;
font-size: 14px;
color: #333;
background-color: #f7f5ff;
} }
.info-list {
tr:hover, tr:hover > td { display: flex;
background-color: #e5dfff !important; flex-wrap: wrap;
padding: 10px 0 0 20px;
li {
display: inline-flex;
width: 25%;
padding: 0 10px;
margin-bottom: 34px;
}
&.edit {
li {
align-items: center;
} }
td {
border: {
left: 4px solid #fff;
right: 4px solid #fff;
} }
label {
&:first-child { font-size: 14px;
border-left: 0; color: #333;
white-space: nowrap;
} }
span {
&:last-child { min-width: 150px;
border-right: 0; padding: 0 10px 3px;
border-bottom: 1px solid #E1E6F2;
}
/deep/.el-input {
width: 174px;
}
}
.score-wrap {
position: relative;
min-width: 150px;
border-bottom: 1px solid #E1E6F2;
em {
position: absolute;
top: -12px;
left: 30px;
font-family: din;
font-size: 30px;
font-weight: 600;
color: #0B1D30;
} }
img {
background-color: #e5dfff; position: absolute;
border-bottom: 0; bottom: -15px;
left: 0;
}
}
/deep/.el-textarea .el-textarea__inner, .pre-wrap {
min-height: 72px;
padding: 10px 16px;
font-size: 14px;
color: #333;
&.edit {
color: #ABB3C6;
border: 1px solid #CACFDB;
border-radius: 4px;
background-color: #F6F7F9;
} }
} }
/deep/ .table th { /deep/ .table th {
background-color: #e1eaff !important; background-color: #e5dfff !important;
.cell { .cell {
line-height: 35px; line-height: 35px;
color: #555555; color: #555555;
} }
} }
} }
/deep/ pre, code, kbd, samp{ @media (max-width: 1650px) {
font-family: 'PingFang SC', "Helvetica Neue", Helvetica, "microsoft yahei", arial, STHeiTi, sans-serif; .wrap {
word-wrap: break-word; padding: 12px 200px 20px;
white-space: pre-wrap;
}
/deep/ pre{
white-space: pre-wrap;
}
/deep/ .cell {
font-size: 12px;
}
/deep/ .el-row {
padding-top: 20px;
margin: 0 !important;
}
.form-item {
display: flex;
align-items: center;
}
.form-item .el-input {
width: auto;
}
.form-item span {
margin-right: 10px;
}
.meta-title-wrap {
display: flex;
justify-content: space-between;
align-items: center;
span {
font-size: 13px;
color: #444;
}
} }
.flex-between {
span {
font-size: 13px;
color: #444;
} }
@media (max-width: 1430px) {
.wrap {
padding: 12px 100px 20px;
} }
.meta-title {
display: flex;
align-items: center;
padding: 10px 20px;
margin-bottom: 10px;
font-size: 16px;
color: #fff;
background-color: #9278ff;
img {
width: 20px;
margin-right: 10px;
}
}
.step-title {
margin-bottom: 10px;
font-size: 16px;
color: #9278ff;
}
.bd-title {
padding-top: 20px;
border-top: 1px dashed #ccc;
}
pre {
white-space: pre-wrap; /* css-3 */
white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
white-space: pre-wrap; /* Opera 4-6 */
white-space: -o-pre-wrap; /* Opera 7 */
word-wrap: break-word; /* Internet Explorer 5.5+ */
word-break:break-all;
overflow:hidden;
font-size: 12px;
font-weight:400;
font-family:'PingFang SC', "Helvetica Neue", Helvetica, "microsoft yahei", arial, STHeiTi, sans-serif
} }
</style> </style>

@ -42,7 +42,7 @@
<el-button type="primary" @click="exportData">导出</el-button> <el-button type="primary" @click="exportData">导出</el-button>
</div> </div>
</div> </div>
<el-table :data="listData" class="table" stripe header-align="center" @selection-change="handleSelectionChange" row-key="reportId"> <el-table :data="listData" class="table" ref="table" stripe header-align="center" @selection-change="handleSelectionChange" row-key="reportId">
<el-table-column type="selection" width="55" align="center" :reserve-selection="true"></el-table-column> <el-table-column type="selection" width="55" align="center" :reserve-selection="true"></el-table-column>
<el-table-column type="index" width="100" label="序号" align="center"> <el-table-column type="index" width="100" label="序号" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
@ -181,7 +181,6 @@ export default {
} }
}, },
handleDelete(row) { // handleDelete(row) { //
console.log(row)
this.$confirm("确定要删除吗?", "提示", { this.$confirm("确定要删除吗?", "提示", {
type: "warning" type: "warning"
}).then(() => { }).then(() => {
@ -201,7 +200,6 @@ export default {
let ids = this.multipleSelection.map(item => { let ids = this.multipleSelection.map(item => {
return item.reportId; return item.reportId;
}); });
console.log(ids)
this.$post(this.api.deleteExperimentalReport, ids).then(res => { this.$post(this.api.deleteExperimentalReport, ids).then(res => {
this.multipleSelection = []; this.multipleSelection = [];
this.$refs.table.clearSelection(); this.$refs.table.clearSelection();

@ -264,7 +264,6 @@ export default {
]) ])
}, },
mounted() { mounted() {
// console.log(22,this.assFields)
this.date = [util.formatDate("yyyy-MM-dd hh:mm:ss", new Date(new Date().getTime() + 300000)), util.formatDate("yyyy-MM-dd hh:mm:ss", new Date(new Date().getTime() + 300000))]; this.date = [util.formatDate("yyyy-MM-dd hh:mm:ss", new Date(new Date().getTime() + 300000)), util.formatDate("yyyy-MM-dd hh:mm:ss", new Date(new Date().getTime() + 300000))];
this.form.id && this.getData(); this.form.id && this.getData();
this.recoveryData(); this.recoveryData();
@ -321,7 +320,6 @@ export default {
}); });
// //
this.allCheckedNodes = [...checked.checkedNodes, ...checked.halfCheckedNodes]; this.allCheckedNodes = [...checked.checkedNodes, ...checked.halfCheckedNodes];
// console.log(this.allCheckedNodes)
}, },
filterNode(value, data) { // filterNode(value, data) { //
if (!value) return true; if (!value) return true;
@ -378,7 +376,6 @@ export default {
this.$get(this.api.schoolCourse).then(res => { this.$get(this.api.schoolCourse).then(res => {
this.curriculumList = res.data; this.curriculumList = res.data;
if (this.curriculumList.length) { if (this.curriculumList.length) {
console.log(this.form.curriculumId)
if (this.form.curriculumId){ if (this.form.curriculumId){
for(let i=0;i<this.curriculumList.length; i++) { for(let i=0;i<this.curriculumList.length; i++) {
if(this.curriculumList[i].cid == this.form.curriculumId){ if(this.curriculumList[i].cid == this.form.curriculumId){
@ -418,7 +415,6 @@ export default {
handlePage() { handlePage() {
let result = this.projectDataAll.slice((this.page - 1) * this.pageSize, this.page * this.pageSize); let result = this.projectDataAll.slice((this.page - 1) * this.pageSize, this.page * this.pageSize);
this.projectData = result; this.projectData = result;
console.log(this.projectData)
}, },
initData() { initData() {
this.page = 1; this.page = 1;

@ -235,7 +235,6 @@ export default {
}, },
methods: { methods: {
pickerInput(){ pickerInput(){
console.log(this.date)
this.form.month = '6' this.form.month = '6'
}, },
beginTimer() { beginTimer() {
@ -345,7 +344,6 @@ export default {
this.$router.push(`add?id=${row.id}`); this.$router.push(`add?id=${row.id}`);
}, },
show(row) { show(row) {
console.log(row)
this.$router.push(`/achievement/ass?id=${row.id}&classId=${row.classId}&projectId=${row.projectId}&classInfo=${JSON.stringify(row.classInfo)}&experimentalName=${row.experimentalName}&class=${row.experimentalClassName}`); this.$router.push(`/achievement/ass?id=${row.id}&classId=${row.classId}&projectId=${row.projectId}&classInfo=${JSON.stringify(row.classInfo)}&experimentalName=${row.experimentalName}&class=${row.experimentalClassName}`);
}, },
start(row) { start(row) {
@ -407,7 +405,6 @@ export default {
}).catch(res => { }).catch(res => {
}); });
if(this.multipleSelection.length === this.listData.length && this.pageNum>1) { if(this.multipleSelection.length === this.listData.length && this.pageNum>1) {
console.log(this.pageNum - 1)
this.handleCurrentChange(this.pageNum - 1) this.handleCurrentChange(this.pageNum - 1)
} }
}).catch(() => { }).catch(() => {

@ -461,7 +461,6 @@ export default {
this.sectionId = ""; this.sectionId = "";
}, },
preview(row) { preview(row) {
// console.log(JSON.stringify(row));
if (this.transferType(row.fileType) == "视频") { if (this.transferType(row.fileType) == "视频") {
this.$get(`${this.api.getPlayAuth}/${row.fileId}`).then(res => { this.$get(`${this.api.getPlayAuth}/${row.fileId}`).then(res => {
this.playAuth = res.data.playAuth; this.playAuth = res.data.playAuth;

@ -549,7 +549,6 @@ export default {
}, },
uploadSuccess(res, file, fileList) { uploadSuccess(res, file, fileList) {
this.uploadFaild = false; this.uploadFaild = false;
console.log(JSON.stringify(res));
let { message, status, data } = res; let { message, status, data } = res;
if (status === 200) { if (status === 200) {
util.successMsg(`上传成功:${data.successNum},上传失败:${data.failureNum}`); util.successMsg(`上传成功:${data.successNum},上传失败:${data.failureNum}`);

@ -63,28 +63,28 @@
<el-table :data="listData" class="table" ref="table" stripe header-align="center" <el-table :data="listData" class="table" ref="table" stripe header-align="center"
@selection-change="handleSelectionChange"> @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"></el-table-column> <el-table-column type="selection" width="55" align="center" :selectable="disabledSelection"></el-table-column>
<el-table-column type="index" width="100" label="序号" align="center"> <el-table-column type="index" width="100" label="序号" align="center">
<template slot-scope="scope">{{ scope.$index + (page - 1) * pageSize + 1 }}</template> <template slot-scope="scope">{{ scope.$index + (page - 1) * pageSize + 1 }}</template>
</el-table-column> </el-table-column>
<el-table-column prop="projectName" label="实验项目名称" align="center"></el-table-column> <el-table-column prop="projectName" label="实验项目名称" align="center" show-overflow-tooltip></el-table-column>
<el-table-column prop="founder" label="创建人" align="center"> <el-table-column prop="founder" label="创建人" width="150" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
{{ founderKeys[scope.row.founder] }} {{ founderKeys[scope.row.founder] }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="权限" align="center"> <el-table-column label="权限" width="120" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
{{ permissionsKeys[scope.row.permissions] }} {{ permissionsKeys[scope.row.permissions] }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="createTime" label="创建时间" align="center"></el-table-column> <el-table-column prop="createTime" label="创建时间" width="150" align="center"></el-table-column>
<el-table-column prop="status" label="状态" align="center"> <el-table-column prop="status" label="状态" width="100" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
{{ stateKeys[scope.row.state] }} {{ stateKeys[scope.row.state] }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作"> <el-table-column label="操作" width="250">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" @click="edit(scope.row,'0',queryData.founder)">查看</el-button> <el-button type="text" @click="edit(scope.row,'0',queryData.founder)">查看</el-button>
<el-button v-if="scope.row.founder && (roleName.includes('超级') || roleName === scope.row.roleName || (roleName === '管理员' && !scope.row.roleName.includes('超级')))" type="text" @click="edit(scope.row,'1',queryData.founder)">编辑</el-button> <el-button v-if="scope.row.founder && (roleName.includes('超级') || roleName === scope.row.roleName || (roleName === '管理员' && !scope.row.roleName.includes('超级')))" type="text" @click="edit(scope.row,'1',queryData.founder)">编辑</el-button>
@ -278,6 +278,11 @@ export default {
this.page = 1; this.page = 1;
this.getData(); this.getData();
}, },
disabledSelection(row, index) { //
const roleName = this.roleName
if (row.founder && (roleName.includes('超级') || roleName === row.roleName || (roleName === '管理员' && !row.roleName.includes('超级')))) return true
return false
},
handleCurrentChange(val) { // handleCurrentChange(val) { //
this.page = val; this.page = val;
this.getData(); this.getData();
@ -310,6 +315,7 @@ export default {
}).then(() => { }).then(() => {
this.$post(`${this.api.deleteProjectManage}?projectIds=${ids}&platformId=${this.queryData.platformId}`).then(res => { this.$post(`${this.api.deleteProjectManage}?projectIds=${ids}&platformId=${this.queryData.platformId}`).then(res => {
util.successMsg("删除成功"); util.successMsg("删除成功");
this.$refs.table.clearSelection()
this.getData(); this.getData();
}).catch(err => { }).catch(err => {
console.log(err); console.log(err);

@ -89,13 +89,13 @@ export default {
} }
.station { .station {
min-height: calc(100vh - 520px);
background: url(../../../assets/img/station1.png) (top left)/auto no-repeat, background: url(../../../assets/img/station1.png) (top left)/auto no-repeat,
url(../../../assets/img/station2.png) bottom right/auto no-repeat; url(../../../assets/img/station2.png) bottom right/auto no-repeat;
.inner { .inner {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
width: 1072px; width: 1072px;
min-height: calc(100vh - 520px);
padding-top: 60px; padding-top: 60px;
margin: 0 auto; margin: 0 auto;
} }

@ -15,9 +15,9 @@
<el-table :data="listData" class="table" ref="table" stripe header-align="center" @selection-change="handleSelectionChange" :row-key="getRowKeys"> <el-table :data="listData" class="table" ref="table" stripe header-align="center" @selection-change="handleSelectionChange" :row-key="getRowKeys">
<el-table-column type="selection" width="55" align="center" :selectable="practiceSelectable" :reserve-selection="true"></el-table-column> <el-table-column type="selection" width="55" align="center" :selectable="practiceSelectable" :reserve-selection="true"></el-table-column>
<el-table-column type="index" width="100" label="序号" align="center"></el-table-column> <el-table-column type="index" width="60" label="序号" align="center"></el-table-column>
<el-table-column prop="roleName" label="角色名称" align="center" width="200"></el-table-column> <el-table-column prop="roleName" label="角色名称" align="center" min-width="250" show-overflow-tooltip></el-table-column>
<el-table-column label="角色描述" align="center"> <el-table-column label="角色描述" min-width="400" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<el-input placeholder="该角色用于管理全部功能权限" v-model="scope.row.remark" disabled></el-input> <el-input placeholder="该角色用于管理全部功能权限" v-model="scope.row.remark" disabled></el-input>
</template> </template>

@ -59,7 +59,6 @@ function getPermission() {
let data = res.permissionMenu[0].children; let data = res.permissionMenu[0].children;
if (data.length > 0) { if (data.length > 0) {
console.log(11, data)
data.forEach(e => { data.forEach(e => {
// 第一级路由,需要根据匹配到的path,塞进对应的路由children里 // 第一级路由,需要根据匹配到的path,塞进对应的路由children里
let str = e.path.split("/")[1]; let str = e.path.split("/")[1];
@ -79,7 +78,6 @@ function getPermission() {
e.children.forEach(i => { e.children.forEach(i => {
// 避免重复生成路由 // 避免重复生成路由
if (i.path && permissionRouters[index] && !permissionRouters[index].children.some(e => i.path === e.path)) { if (i.path && permissionRouters[index] && !permissionRouters[index].children.some(e => i.path === e.path)) {
// console.log(i.path,'当前二级路由的路径')
let obj = { let obj = {
path: i.path, path: i.path,
name: arr[index] + "-" + i.path.split("/").pop(), name: arr[index] + "-" + i.path.split("/").pop(),
@ -228,7 +226,6 @@ function getPermission() {
}); });
console.log(permissionRouters, "处理好的"); console.log(permissionRouters, "处理好的");
const station = permissionRouters.findIndex(e => e.name === 'station') const station = permissionRouters.findIndex(e => e.name === 'station')
console.log(333, station)
if (station !== -1) { if (station !== -1) {
permissionRouters[station].children.push({ permissionRouters[station].children.push({
name: `stationPreview`, name: `stationPreview`,

@ -361,3 +361,20 @@
.el-switch__label span { .el-switch__label span {
font-size: 12px; font-size: 12px;
} }
.el-tooltip__popper.is-dark {
padding: 18px 20px;
color: #606266;
line-height: 1.8;
background-color: #fff;
border: .0625rem solid #ebeef5;
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
border-radius: 4px;
}
.el-tooltip__popper[x-placement^="top"] {
.popper__arrow {
border-top-color: #fff;
&:after {
border-top-color: #fff;
}
}
}
Loading…
Cancel
Save