From ff3b5c2ba2a757f050cf833f1af340f384874934 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期四, 04 七月 2024 17:08:04 +0800
Subject: [PATCH] 教学资源加班级
---
src/views/exam/paper/list.vue | 2
src/api/meet.js | 75 ++++---
src/store/modules/enumItem.js | 28 +-
src/views/train/data-list/index.vue | 23 +
src/views/train/index.vue | 68 ++++--
src/views/education/resource/list.vue | 204 +++++++++++--------
src/views/meet/index.vue | 32 +-
src/views/exam/exam/MarkPaper.vue | 6
src/views/exam/paper/edit.vue | 108 +++++++---
9 files changed, 330 insertions(+), 216 deletions(-)
diff --git a/src/api/meet.js b/src/api/meet.js
index 72e9cc8..e5db7b1 100644
--- a/src/api/meet.js
+++ b/src/api/meet.js
@@ -1,61 +1,68 @@
-import axios from "./request";
+import axios from './request'
// 鑾峰彇浼氳琛ㄥ垎椤�
export const getMeets = (params) => {
- return axios({
- url: "/api/admin/meet/page",
- method: "GET",
- params: params
- })
+ return axios({
+ url: '/api/admin/meet/page',
+ method: 'GET',
+ params: params
+ })
}
// 鑾峰彇浼氳琛ㄥ垪琛�
export const getMeetList = () => {
- return axios({
- url: "/api/admin/meet/list",
- method: "GET"
- })
+ return axios({
+ url: '/api/admin/meet/list',
+ method: 'GET'
+ })
}
// 閫氳繃id鑾峰彇浼氳琛�
export const getMeetById = (params) => {
- return axios({
- url: "/api/admin/meet/" + params,
- method: "GET"
- })
+ return axios({
+ url: '/api/admin/meet/' + params,
+ method: 'GET'
+ })
}
// 閫氳繃id鍒犻櫎浼氳琛�
export const deleteMeetById = (params) => {
- return axios({
- url: "/api/admin/meet/" + params,
- method: "DELETE"
- })
+ return axios({
+ url: '/api/admin/meet/' + params,
+ method: 'DELETE'
+ })
}
// 鎵归噺鍒犻櫎浼氳琛�
export const deleteMeetByIds = (params) => {
- return axios({
- url: "/api/admin/meet/batch",
- method: "DELETE",
- data: params
- })
+ return axios({
+ url: '/api/admin/meet/batch',
+ method: 'DELETE',
+ data: params
+ })
}
// 淇敼浼氳琛�
export const editMeet = (params) => {
- return axios({
- url: "/api/admin/meet/",
- method: "PUT",
- data: params
- })
+ return axios({
+ url: '/api/admin/meet/',
+ method: 'PUT',
+ data: params
+ })
}
-
+// 淇敼浼氳琛�
+export const startMeet = (params) => {
+ return axios({
+ url: '/api/admin/meet/start',
+ method: 'PUT',
+ data: params
+ })
+}
// 娣诲姞浼氳琛�
export const addMeet = (params) => {
- return axios({
- url: "/api/admin/meet/",
- method: "POST",
- data: params
- })
+ return axios({
+ url: '/api/admin/meet/',
+ method: 'POST',
+ data: params
+ })
}
diff --git a/src/store/modules/enumItem.js b/src/store/modules/enumItem.js
index 861a788..40697c3 100644
--- a/src/store/modules/enumItem.js
+++ b/src/store/modules/enumItem.js
@@ -3,9 +3,12 @@
user: {
sexEnum: [{ key: 1, value: '鐢�' }, { key: 2, value: '濂�' }],
statusEnum: [{ key: 1, value: '鍚敤' }, { key: 2, value: '绂佺敤' }],
- levelEnum: [{ key: 1, value: '涓�骞寸骇' }, { key: 2, value: '浜屽勾绾�' }, { key: 3, value: '涓夊勾绾�' }, { key: 4, value: '鍥涘勾绾�' }, { key: 5, value: '浜斿勾绾�' }, { key: 6, value: '鍏勾绾�' },
- { key: 7, value: '鍒濅竴' }, { key: 8, value: '鍒濅簩' }, { key: 9, value: '鍒濅笁' },
- { key: 10, value: '楂樹竴' }, { key: 11, value: '楂樹簩' }, { key: 12, value: '楂樹笁' }],
+ levelEnum: [{ key: 1, value: '涓�骞寸骇' }, { key: 2, value: '浜屽勾绾�' }, { key: 3, value: '涓夊勾绾�' }, {
+ key: 4,
+ value: '鍥涘勾绾�'
+ }, { key: 5, value: '浜斿勾绾�' }, { key: 6, value: '鍏勾绾�' },
+ { key: 7, value: '鍒濅竴' }, { key: 8, value: '鍒濅簩' }, { key: 9, value: '鍒濅笁' },
+ { key: 10, value: '楂樹竴' }, { key: 11, value: '楂樹簩' }, { key: 12, value: '楂樹笁' }],
roleEnum: [{ key: 1, value: '瀛︾敓' }, { key: 2, value: '鏁欏笀' }, { key: 3, value: '绠$悊鍛�' }],
statusTag: [{ key: 1, value: 'success' }, { key: 2, value: 'danger' }],
statusBtn: [{ key: 1, value: '绂佺敤' }, { key: 2, value: '鍚敤' }]
@@ -15,15 +18,18 @@
paperTypeEnum: [{ key: 1, value: '鍥哄畾璇曞嵎' }, { key: 2, value: '闅忔満璇曞嵎' }, { key: 3, value: '闅忓簭璇曞嵎' }]
},
question: {
- typeEnum: [{ key: 1, value: '鍗曢�夐' }, { key: 2, value: '澶氶�夐' }, { key: 3, value: '鍒ゆ柇棰�' }, { key: 4, value: '濉┖棰�' }, { key: 5, value: '绠�绛旈' }, { key: 6, value: '璇煶棰�' }, { key: 7, value: '璁$畻棰�' }, { key: 8, value: '鍒嗘瀽棰�' }],
+ typeEnum: [{ key: 1, value: '鍗曢�夐' }, { key: 2, value: '澶氶�夐' }, { key: 3, value: '鍒ゆ柇棰�' }, {
+ key: 4,
+ value: '濉┖棰�'
+ }, { key: 5, value: '绠�绛旈' }, { key: 6, value: '璇煶棰�' }, { key: 7, value: '璁$畻棰�' }, { key: 8, value: '鍒嗘瀽棰�' }],
editUrlEnum: [{ key: 1, value: '/exam/question/edit/singleChoice', name: '鍗曢�夐' },
- { key: 2, value: '/exam/question/edit/multipleChoice', name: '澶氶�夐' },
- { key: 3, value: '/exam/question/edit/trueFalse', name: '鍒ゆ柇棰�' },
- { key: 4, value: '/exam/question/edit/gapFilling', name: '濉┖棰�' },
- { key: 5, value: '/exam/question/edit/shortAnswer', name: '绠�绛旈' },
- { key: 6, value: '/exam/question/edit/audio', name: '璇煶棰�' },
- { key: 7, value: '/exam/question/edit/calculate', name: '璁$畻棰�' },
- { key: 8, value: '/exam/question/edit/analysis', name: '鍒嗘瀽棰�' }],
+ { key: 2, value: '/exam/question/edit/multipleChoice', name: '澶氶�夐' },
+ { key: 3, value: '/exam/question/edit/trueFalse', name: '鍒ゆ柇棰�' },
+ { key: 4, value: '/exam/question/edit/gapFilling', name: '濉┖棰�' },
+ { key: 5, value: '/exam/question/edit/shortAnswer', name: '绠�绛旈' },
+ { key: 6, value: '/exam/question/edit/audio', name: '璇煶棰�' },
+ { key: 7, value: '/exam/question/edit/calculate', name: '璁$畻棰�' },
+ { key: 8, value: '/exam/question/edit/analysis', name: '鍒嗘瀽棰�' }],
answer: {
doRightTag: [{ key: true, value: 'success' }, { key: false, value: 'danger' }, { key: null, value: 'warning' }],
doRightEnum: [{ key: true, value: '姝g‘' }, { key: false, value: '閿欒' }, { key: null, value: '寰呮壒鏀�' }],
diff --git a/src/views/education/resource/list.vue b/src/views/education/resource/list.vue
index 04229c2..cde0a54 100644
--- a/src/views/education/resource/list.vue
+++ b/src/views/education/resource/list.vue
@@ -3,7 +3,13 @@
<div class="search">
<el-form :inline="true" :model="searchForm" class="demo-form-inline">
<el-form-item label="涓婚">
- <el-input v-model="searchForm.introduction" size="small" placeholder="涓婚鍐呭" clearable @clear="page"></el-input>
+ <el-input v-model="searchForm.introduction" size="small" placeholder="涓婚鍐呭" clearable
+ @clear="page"></el-input>
+ </el-form-item>
+ <el-form-item label="鐝骇">
+ <el-select v-model="searchForm.classId" clearable @clear="page" @change="page" placeholder="鐝骇">
+ <el-option v-for="item in classesIds" :key="item.id" :label="item.className" :value="item.id"/>
+ </el-select>
</el-form-item>
<el-form-item label="绉戠洰">
<el-select v-model="searchForm.subjectId" clearable @clear="page" @change="page" placeholder="绉戠洰">
@@ -21,11 +27,12 @@
</div>
</div>
-
<el-table :data="tableData" border @selection-change="handleSelectionChange" style="width: 100%">
<el-table-column type="selection" width="55">
</el-table-column>
<el-table-column fixed prop="introduction" label="涓婚绠�浠�">
+ </el-table-column>
+ <el-table-column prop="className" label="鐝骇">
</el-table-column>
<el-table-column prop="typeName" label="绉戠洰">
</el-table-column>
@@ -34,26 +41,30 @@
<el-table-column label="鏂囦欢鍐呭" width="240">
<template slot-scope="scope">
<video controls v-if="scope.row.contentType === 'video'" :src="'/api/files/' + scope.row.contentUrl.url"
- class="showContent" />
+ class="showContent"/>
<el-image v-if="scope.row.contentType === 'img'" :src="'/api/files/' + scope.row.contentUrl.url"
class="showContent"></el-image>
<!-- <img v-if="scope.row.contentType === 'img'" :src="'/api/files/' + scope.row.contentUrl.url"
class="showContent" /> -->
<el-link type="primary" v-if="scope.row.contentType === 'pdf'" class="showContent"
- @click="checkPdf('/api/files/' + scope.row.contentUrl.url)">鐐瑰嚮鏌ョ湅</el-link>
+ @click="checkPdf('/api/files/' + scope.row.contentUrl.url)">鐐瑰嚮鏌ョ湅
+ </el-link>
</template>
</el-table-column>
<el-table-column prop="attachment" label="闄勪欢">
<template slot-scope="scope">
<div v-for="item in scope.row.attachment" :key="item.url">
- <el-link type="primary" :href="'/api/upload/download?url=' + item.url +'&fileName=' + item.name" >{{ item.name }}</el-link>
+ <el-link type="primary" :href="'/api/upload/download?url=' + item.url +'&fileName=' + item.name">
+ {{ item.name }}
+ </el-link>
</div>
</template>
</el-table-column>
<el-table-column fixed="right" label="鎿嶄綔" width="140">
<template slot-scope="scope">
<el-button @click="handleUpdate(scope.row)" type="primary" size="small"
- style="margin-right: 5px">淇敼</el-button>
+ style="margin-right: 5px">淇敼
+ </el-button>
<el-popconfirm :title="getTitle(scope.row.typeName)" @confirm="remove(scope.row.id)">
<el-button slot="reference" type="danger" size="small">鍒犻櫎</el-button>
</el-popconfirm>
@@ -62,13 +73,22 @@
</el-table>
<pagination v-show="total > 0" :total="total" :page.sync="searchForm.pageNum" :limit.sync="searchForm.pageSize"
- @pagination="page" />
+ @pagination="page"/>
<el-dialog :title="dialogTitle" :visible.sync="open" width="600px" :close-on-click-modal="false"
:before-close="handleClose">
<el-form label-position="left" label-width="120px" ref="form" :rules="rules" :model="form">
<el-form-item label="涓婚绠�浠�" prop="introduction">
<el-input v-model="form.introduction" placeholder="涓婚鍐呭"></el-input>
+ </el-form-item>
+ <el-form-item label="鐝骇" >
+ <el-select
+ v-model="form.classId"
+ placeholder="鐝骇"
+ clearable
+ >
+ <el-option v-for="item in classesIds" :key="item.id" :label="item.className" :value="item.id"/>
+ </el-select>
</el-form-item>
<el-form-item label="绉戠洰" prop="subjectId">
<el-select v-model="form.subjectId" placeholder="绉戠洰">
@@ -85,11 +105,11 @@
</el-form-item>
<el-form-item label="涓婁紶鏂囦欢(涓�涓�)" prop="contentUrl">
<upload v-show="form.contentType" ref="upload" :fileUrl="form.contentUrl" :fileType="form.contentType"
- :fileSizeLimitM="1024" :uploadNum="1" @getUploadUrl="getUploadUrl" @removeFile="removeFile" />
+ :fileSizeLimitM="1024" :uploadNum="1" @getUploadUrl="getUploadUrl" @removeFile="removeFile"/>
</el-form-item>
<el-form-item label="闄勪欢(鏈�澶�3涓�)" prop="attachment">
<upload :fileSizeLimitM="1024" :uploadNum="3" :fileUrl="form.attachment"
- @getUploadUrl="getUploadAttachmentUrl" @removeFile="removeAttachmentFile" />
+ @getUploadUrl="getUploadAttachmentUrl" @removeFile="removeAttachmentFile"/>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
@@ -105,26 +125,29 @@
</template>
<script>
-import Pagination from '@/components/Pagination';
-import EducationResourceAPI from '@/api/educationResource';
-import SubjectAPI from '@/api/subject';
-import Upload from '@/components/UploadC';
+import Pagination from '@/components/Pagination'
+import EducationResourceAPI from '@/api/educationResource'
+import SubjectAPI from '@/api/subject'
+import Upload from '@/components/UploadC'
+import { myClasses } from '@/api/classes'
-import VueOfficePdf from '@vue-office/pdf';
+import VueOfficePdf from '@vue-office/pdf'
+
export default {
name: 'type',
components: { Upload, Pagination, VueOfficePdf },
computed: {
fileContentUrl: () => {
- return this.form ? this.form.contentUrl ? [this.form.contentUrl] : [] : [];
+ return this.form ? this.form.contentUrl ? [this.form.contentUrl] : [] : []
}
},
- data() {
+ data () {
return {
pdf: '',
dialogTitle: '娣诲姞瀛︿範鍐呭',
ids: [],
typeList: [],
+ classesIds: [],
searchForm: {
pageNum: 1,
pageSize: 5,
@@ -139,6 +162,7 @@
contentType: 'video',
introduction: '',
belongType: 2,
+ classId: null,
contentUrl: [],
attachment: [],
temp: []
@@ -157,101 +181,107 @@
{ required: true, message: '璇烽�夋嫨鏂囦欢绫诲瀷', trigger: 'change' }
]
}
- };
+ }
},
methods: {
- checkPdf(url) {
- this.pdf = url;
- this.pdfDialog = true;
+ // 鑾峰彇鎴戠殑鐝骇
+ getClasses () {
+ myClasses().then(re => {
+ this.classesIds = re.data.data
+ })
},
- closePdfDialog() {
- this.pdfDialog = false;
+ checkPdf (url) {
+ this.pdf = url
+ this.pdfDialog = true
},
- rendered() {
+ closePdfDialog () {
+ this.pdfDialog = false
+ },
+ rendered () {
},
- fileChange() {
- this.form.contentUrl = [];
+ fileChange () {
+ this.form.contentUrl = []
},
- handleSelectionChange(val) {
- this.ids = val.map(item => item.id);
+ handleSelectionChange (val) {
+ this.ids = val.map(item => item.id)
},
- typeFormatter(row) {
+ typeFormatter (row) {
if (row.contentType === 'video') {
- return "瑙嗛";
+ return '瑙嗛'
}
if (row.contentType === 'img') {
- return "鍥剧墖";
+ return '鍥剧墖'
}
if (row.contentType === 'pdf') {
- return "PDF";
+ return 'PDF'
}
},
- clearFile() {
- this.form.contentUrl = [];
- this.$refs.upload.clearFile();
+ clearFile () {
+ this.form.contentUrl = []
+ this.$refs.upload.clearFile()
},
- removeFile() {
- this.form.contentUrl = [];
+ removeFile () {
+ this.form.contentUrl = []
},
removeAttachmentFile (fileList, fileName) {
- this.form.attachment = fileList.filter(item => item.name !== fileName);
+ this.form.attachment = fileList.filter(item => item.name !== fileName)
},
getUploadAttachmentUrl (uploadData) {
- this.form.attachment = uploadData;
+ this.form.attachment = uploadData
},
getUploadUrl (uploadData) {
- this.form.contentUrl = uploadData;
+ this.form.contentUrl = uploadData
},
remove (id) {
EducationResourceAPI.remove([id]).then(res => {
if (res.code === 1) {
- this.$message.success('鍒犻櫎鎴愬姛');
+ this.$message.success('鍒犻櫎鎴愬姛')
this.page()
}
- });
+ })
},
- batchRemove() {
+ batchRemove () {
if (this.ids.length < 1) {
- this.$message.warning("璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁");
+ this.$message.warning('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁')
}
EducationResourceAPI.remove(this.ids).then(res => {
if (res.code === 1) {
- this.$message.success('鍒犻櫎鎴愬姛');
- this.ids = [];
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.ids = []
}
- });
+ })
},
getTitle (typeName) {
- return '纭畾瑕佸垹闄�' + typeName + '杩欎釜鏂囦欢鍚楋紵';
+ return '纭畾瑕佸垹闄�' + typeName + '杩欎釜鏂囦欢鍚楋紵'
},
handlerSubmit () {
this.$refs['form'].validate((valid) => {
if (valid) {
- const temp = JSON.parse(JSON.stringify(this.form));
+ const temp = JSON.parse(JSON.stringify(this.form))
// this.form.contentUrl = this.form.contentUrl[0]
- temp.contentUrl = temp.contentUrl[0];
+ temp.contentUrl = temp.contentUrl[0]
if (temp.id) {
EducationResourceAPI.update(temp).then(res => {
if (res.code === 1) {
- this.$message.success('淇敼鎴愬姛');
- this.open = false;
- this.page();
+ this.$message.success('淇敼鎴愬姛')
+ this.open = false
+ this.page()
}
- });
+ })
} else {
EducationResourceAPI.add(temp).then(res => {
if (res.code === 1) {
- this.$message.success('娣诲姞鎴愬姛');
- this.open = false;
- this.page();
+ this.$message.success('娣诲姞鎴愬姛')
+ this.open = false
+ this.page()
}
- });
+ })
}
}
- });
+ })
},
- resetForm() {
+ resetForm () {
this.form = {
contentType: 'video',
introduction: '',
@@ -259,45 +289,48 @@
contentUrl: [],
attachment: [],
temp: []
- };
+ }
},
- handleClose() {
- this.open = false;
- this.resetForm();
+ handleClose () {
+ this.open = false
+ this.resetForm()
},
- handlerAdd() {
- this.resetForm();
- this.open = true;
- this.dialogTitle = '娣诲姞瀛︿範鍐呭';
+ handlerAdd () {
+ this.resetForm()
+ this.open = true
+ this.dialogTitle = '娣诲姞瀛︿範鍐呭'
},
- page() {
+ page () {
EducationResourceAPI.page(this.searchForm).then(res => {
if (res.code === 1) {
- this.tableData = res.data;
- this.total = res.total;
+ this.tableData = res.data
+ this.total = res.total
}
- });
+ })
},
- handleUpdate(row) {
- this.form.id = row.id;
- this.form.contentType = row.contentType;
- this.form.contentUrl = [row.contentUrl] || [];
- this.form.attachment = row.attachment || [];
- this.form.introduction = row.introduction;
- this.form.belongType = row.belongType;
- this.dialogTitle = '淇敼瀛︿範鍐呭';
- this.open = true;
+ handleUpdate (row) {
+ this.form.id = row.id
+ this.form.contentType = row.contentType
+ this.form.classesId = row.classesId
+ this.form.subjectId = row.subjectId
+ this.form.contentUrl = [row.contentUrl] || []
+ this.form.attachment = row.attachment || []
+ this.form.introduction = row.introduction
+ this.form.belongType = row.belongType
+ this.dialogTitle = '淇敼瀛︿範鍐呭'
+ this.open = true
}
},
- mounted() {
- this.page();
+ mounted () {
+ this.page()
+ this.getClasses()
SubjectAPI.list().then(res => {
if (res.code === 1) {
- this.typeList = res.data;
+ this.typeList = res.data
}
- });
+ })
}
-};
+}
</script>
<style scoped>
@@ -314,6 +347,7 @@
.search {
margin-top: 10px;
}
+
::v-deep .el-image__error {
position: absolute;
top: 0;
diff --git a/src/views/exam/exam/MarkPaper.vue b/src/views/exam/exam/MarkPaper.vue
index 657ee0f..89565ff 100644
--- a/src/views/exam/exam/MarkPaper.vue
+++ b/src/views/exam/exam/MarkPaper.vue
@@ -71,12 +71,6 @@
>
</el-table-column>
<el-table-column
- align="center"
- prop="phone"
- label="绯荤粺鑷姩浼板垎(閫夋嫨棰樺瀷)"
- >
- </el-table-column>
- <el-table-column
label="鎿嶄綔"
align="center"
width="300px"
diff --git a/src/views/exam/paper/edit.vue b/src/views/exam/paper/edit.vue
index 53411d1..a5c7d8e 100644
--- a/src/views/exam/paper/edit.vue
+++ b/src/views/exam/paper/edit.vue
@@ -1,11 +1,6 @@
<template>
<div class="app-container">
<el-form :model="form" ref="form" label-width="150px" v-loading="formLoading" :rules="rules">
- <el-form-item label="瀛︾锛�" prop="subjectId" required>
- <el-select v-model="form.subjectId" placeholder="瀛︾">
- <el-option v-for="item in subjects" :key="item.id" :label="item.name" :value="item.id"/>
- </el-select>
- </el-form-item>
<el-form-item label="璇曞嵎绫诲瀷锛�" prop="paperType" required>
<el-select v-model="form.paperType" placeholder="璇曞嵎绫诲瀷">
<el-option v-for="item in paperTypeEnum" :key="item.key" :value="item.key" :label="item.value"></el-option>
@@ -77,14 +72,15 @@
</el-form-item>
<!-- 棰樼洰閰嶇疆淇℃伅 闅忔満璇曞嵎鎴栨柊寤洪殢搴忔墠鏄剧ず -->
<el-form-item v-show="form.paperType ===2 || (form.paperType ===3 && !form.id)" :key="index"
- :label="translateQuestionType(item.questionType)+'锛�'" v-for="(item,index) in form.questionSetting">
+ :label="translateQuestionType(item.questionType)+'锛�'" v-for="(item,index) in form.questionSetting"
+ >
<div>
<span style="margin-right: 10px">{{ '鏍囬' }}</span>
<el-input v-model="item.title" style="margin-bottom: 20px;margin-right: 30px;width: 800px"/>
- <el-button type="primary" @click=addToQuestionSetting(item.questionType) >娣诲姞</el-button>
+ <el-button type="primary" @click=addToQuestionSetting(item.questionType)>娣诲姞</el-button>
- <div style="display: flex;" :key="index" v-for="(setting,index) in item.settingList">
- <span style="margin-right: 10px;margin-bottom: 10px;">{{ '闅惧害' }}</span>
+ <div style="display: flex;margin-bottom: 10px;" :key="index" v-for="(setting,index) in item.settingList">
+ <span style="margin-right: 10px;">{{ '闅惧害' }}</span>
<el-rate v-model="setting.difficult" :precision="0" :min="0" style="margin-right: 25px;padding: 5px 0"/>
<span style="margin-right: 10px">{{ '绉戠洰' }}</span>
<el-select v-model="setting.subjectId" placeholder="瀛︾" style="margin-right: 25px">
@@ -93,7 +89,9 @@
<span style="margin-right: 10px">{{ '鏁伴噺' }}</span>
<el-input-number v-model="setting.num" :precision="0" :min="0" style="margin-right: 25px"/>
<span style="margin-right: 10px">{{ '姣忛鍒嗘暟' }}</span>
- <el-input-number v-model="setting.score" :min="0" :precision="1"/>
+ <el-input-number v-model="setting.score" :min="0" :precision="1" style="margin-right: 25px"/>
+ <el-button type="danger" icon="el-icon-delete" circle
+ @click="removeQuestionSetting(item,index)"></el-button>
</div>
</div>
@@ -129,6 +127,11 @@
<el-form :model="questionPage.queryParam" ref="queryForm" :inline="true">
<el-form-item label="ID锛�">
<el-input v-model="questionPage.queryParam.id" clearable></el-input>
+ </el-form-item>
+ <el-form-item label="瀛︾锛�">
+ <el-select v-model="questionPage.queryParam.subjectIdInt" placeholder="瀛︾">
+ <el-option v-for="item in subjects" :key="item.id" :label="item.name" :value="item.id"/>
+ </el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="queryForm">鏌ヨ</el-button>
@@ -171,7 +174,6 @@
return {
form: {
id: null,
- subjectId: null,
paperType: 1,
name: '',
num: 0,
@@ -243,12 +245,6 @@
subjects: [],
formLoading: false,
rules: {
- level: [
- { required: true, message: '璇烽�夋嫨骞寸骇', trigger: 'change' }
- ],
- subjectId: [
- { required: true, message: '璇烽�夋嫨瀛︾', trigger: 'change' }
- ],
paperType: [
{ required: true, message: '璇烽�夋嫨璇曞嵎绫诲瀷', trigger: 'change' }
],
@@ -264,6 +260,7 @@
showDialog: false,
queryParam: {
id: null,
+ subjectIdInt: null,
questionType: [],
subjectId: [],
pageIndex: 1,
@@ -386,6 +383,13 @@
addQuestion (titleItem) {
this.currentTitleItem = titleItem
this.questionPage.queryParam.questionType = []
+ if (!titleItem.questionType) {
+ this.$message({
+ message: '璇峰厛閫夋嫨棰樺瀷',
+ type: 'warning'
+ })
+ return
+ }
this.questionPage.queryParam.questionType.push(titleItem.questionType)
this.questionPage.showDialog = true
this.search()
@@ -405,8 +409,12 @@
this.updateTotalScore()
this.form.num = this.form.num - 1
},
+ removeQuestionSetting (item, index) {
+ item.settingList.splice(index, 1)
+ },
queryForm () {
this.questionPage.queryParam.pageIndex = 1
+ this.questionPage.queryParam.subjectId = [this.questionPage.queryParam.subjectIdInt]
this.search()
},
confirmQuestionSelect () {
@@ -420,8 +428,6 @@
this.questionPage.showDialog = false
},
search () {
- this.questionPage.queryParam.subjectId = []
- this.questionPage.queryParam.subjectId.push(this.form.subjectId)
this.questionPage.listLoading = true
questionApi.pageList(this.questionPage.queryParam).then(data => {
const re = data.data
@@ -448,14 +454,46 @@
deductTypeScore: 0,
visibility: '1',
questionSetting: [
- { questionType: 1, title: '鍗曢�夐', score: null, num: null },
- { questionType: 2, title: '澶氶�夐', score: null, num: null },
- { questionType: 3, title: '鍒ゆ柇棰�', score: null, num: null },
- { questionType: 4, title: '濉┖棰�', score: null, num: null },
- { questionType: 5, title: '绠�绛旈', score: null, num: null },
- { questionType: 6, title: '璇煶棰�', score: null, num: null },
- { questionType: 7, title: '璁$畻棰�', score: null, num: null },
- { questionType: 8, title: '鍒嗘瀽棰�', score: null, num: null },
+ {
+ title: '鍗曢�夐',
+ questionType: 1,
+ settingList: [{ difficult: null, score: null, num: null, subjectId: null }]
+ },
+ {
+ title: '澶氶�夐',
+ questionType: 2,
+ settingList: [{ difficult: null, score: null, num: null, subjectId: null }]
+ },
+ {
+ title: '鍒ゆ柇棰�',
+ questionType: 3,
+ settingList: [{ difficult: null, score: null, num: null, subjectId: null }]
+ },
+ {
+ title: '濉┖棰�',
+ questionType: 4,
+ settingList: [{ difficult: null, score: null, num: null, subjectId: null }]
+ },
+ {
+ title: '绠�绛旈',
+ questionType: 5,
+ settingList: [{ difficult: null, score: null, num: null, subjectId: null }]
+ },
+ {
+ title: '璇煶棰�',
+ questionType: 6,
+ settingList: [{ difficult: null, score: null, num: null, subjectId: null }]
+ },
+ {
+ title: '璁$畻棰�',
+ questionType: 7,
+ settingList: [{ difficult: null, score: null, num: null, subjectId: null }]
+ },
+ {
+ title: '鍒嗘瀽棰�',
+ questionType: 8,
+ settingList: [{ difficult: null, score: null, num: null, subjectId: null }]
+ }
],
questionTitleList: []
}
@@ -470,8 +508,10 @@
totalNum () {
if (this.form.paperType === 2 || this.form.paperType === 3) {
let total = 0
- for (let item of this.form.questionSetting) {
- total += parseInt(item.num || 0, 10)
+ for (let settings of this.form.questionSetting) {
+ for (let item of settings.settingList) {
+ total += parseInt(item.num || 0, 10)
+ }
}
this.form.num = total
return total
@@ -482,10 +522,12 @@
totalScore () {
if (this.form.paperType === 2 || this.form.paperType === 3) {
let total = 0
- for (let item of this.form.questionSetting) {
- const num = parseInt(item.num || 0, 10)
- const score = parseFloat(item.score || 0)
- total += num * score
+ for (let settings of this.form.questionSetting) {
+ for (let item of settings.settingList) {
+ const num = parseInt(item.num || 0, 10)
+ const score = parseFloat(item.score || 0)
+ total += num * score
+ }
}
this.form.score = total.toFixed(1)
return total.toFixed(1) // 淇濈暀涓�浣嶅皬鏁�
diff --git a/src/views/exam/paper/list.vue b/src/views/exam/paper/list.vue
index 16e86fe..322bd4d 100644
--- a/src/views/exam/paper/list.vue
+++ b/src/views/exam/paper/list.vue
@@ -7,7 +7,7 @@
<el-form-item>
<el-button type="primary" @click="submitForm">鏌ヨ</el-button>
<router-link :to="{path:'/exam/paper/edit'}" class="link-left">
- <el-button type="primary">娣诲姞</el-button>
+ <el-button type="primary" >娣诲姞</el-button>
</router-link>
</el-form-item>
</el-form>
diff --git a/src/views/meet/index.vue b/src/views/meet/index.vue
index da6cafb..f5e576a 100644
--- a/src/views/meet/index.vue
+++ b/src/views/meet/index.vue
@@ -1,17 +1,23 @@
<template>
- <div id="meet" ref="meet" />
+ <div id="meet" ref="meet">
+ <div>
+ <span>
+ {{ '156165165' }}
+ </span>
+ </div>
+ </div>
</template>
<script>
-let jitsiApi = null;
+let jitsiApi = null
export default {
- mounted() {
- const width = window.innerWidth;
- const height = window.innerHeight;
- const domain = this.$route.query.domain;
- const roomName = this.$route.query.roomName;
- const userInfoStr = this.$route.query.userInfoStr;
- const userInfo = userInfoStr ? JSON.parse(userInfoStr) : null;
+ mounted () {
+ const width = window.innerWidth
+ const height = window.innerHeight
+ const domain = this.$route.query.domain
+ const roomName = this.$route.query.roomName
+ const userInfoStr = this.$route.query.userInfoStr
+ const userInfo = userInfoStr ? JSON.parse(userInfoStr) : null
const options = {
roomName: roomName,
width: width,
@@ -28,12 +34,12 @@
}
},
toolbarButtons: ['whiteboard']
- };
- jitsiApi = new window.JitsiMeetExternalAPI(domain, options);
+ }
+ jitsiApi = new window.JitsiMeetExternalAPI(domain, options)
jitsiApi.addListener('readyToClose', () => {
- window.close();
- });
+ window.close()
+ })
}
}
diff --git a/src/views/train/data-list/index.vue b/src/views/train/data-list/index.vue
index 8ae8f7f..8a0c81e 100644
--- a/src/views/train/data-list/index.vue
+++ b/src/views/train/data-list/index.vue
@@ -14,6 +14,10 @@
<div class="info-text">{{ item.teacherName }}</div>
</div>
<div class="info-time">
+ <div class="info-label">鐘舵��:</div>
+ <div class="info-text">{{ translateStatus(item.status) }}</div>
+ </div>
+ <div class="info-time">
<div class="info-label">寮�濮嬫椂闂�:</div>
<div class="info-text">{{ item.startTime }}</div>
</div>
@@ -22,7 +26,7 @@
<div class="info-text">{{ item.endTime }}</div>
</div>
<div class="button-container">
- <el-button @click="start(item)">寮�濮嬩笂璇�</el-button>
+ <el-button v-if="item.status!==2" @click="start(item)">寮�濮嬩笂璇�</el-button>
<el-button @click="handleUpdate(item)">缂栬緫</el-button>
<el-button @click="remove(item)">鍒犻櫎</el-button>
</div>
@@ -42,16 +46,25 @@
},
methods: {
handleUpdate (item) {
- this.$emit('handleUpdate',item)
+ this.$emit('handleUpdate', item)
},
remove (item) {
- this.$emit('remove',item)
+ this.$emit('remove', item)
},
start (item) {
- this.$emit('start',item)
+ this.$emit('start', item)
+ },
+ translateStatus (status) {
+ if (status === 0) {
+ return '寰呭紑濮�'
+ } else if (status === 1) {
+ return '杩涜涓�'
+ } else {
+ return '宸茬粨鏉�'
+ }
}
}
-};
+}
</script>
<style lang="scss" scoped>
diff --git a/src/views/train/index.vue b/src/views/train/index.vue
index 9a574a4..2e5f472 100644
--- a/src/views/train/index.vue
+++ b/src/views/train/index.vue
@@ -9,15 +9,16 @@
<div class="card-header">
<div class="header-tab">
<el-tabs v-model="activeName" @tab-click="handleClick">
- <el-tab-pane label="鍏ㄩ儴" name="1"></el-tab-pane>
- <el-tab-pane label="鏈紑濮�" name="2"></el-tab-pane>
- <el-tab-pane label="杩涜涓�" name="3"></el-tab-pane>
- <el-tab-pane label="宸茬粨鏉�" name="4"></el-tab-pane>
+ <el-tab-pane label="鍏ㄩ儴" name="all"></el-tab-pane>
+ <el-tab-pane label="鏈紑濮�" name="0"></el-tab-pane>
+ <el-tab-pane label="杩涜涓�" name="1"></el-tab-pane>
+ <el-tab-pane label="宸茬粨鏉�" name="2"></el-tab-pane>
</el-tabs>
</div>
<div class="header-search">
- <el-input v-model="queryParam.meetName" @input="getList" clearable @clear="getList" placeholder="璇疯緭鍏ヨ绋嬪悕绉�"/>
- <el-button type="primary" class="ml-4" @click="getList" >鎼滅储</el-button>
+ <el-input v-model="queryParam.meetName" @input="getList" clearable @clear="getList"
+ placeholder="璇疯緭鍏ヨ绋嬪悕绉�"/>
+ <el-button type="primary" class="ml-4" @click="getList">鎼滅储</el-button>
</div>
<div>
<el-button type="primary" @click="handleAdd()">娣诲姞</el-button>
@@ -26,23 +27,25 @@
<div class="card-main flex-1 my-5 relative">
<div class="main-content absolute top-0 bottom-0 left-0 right-0">
- <DataList :tableData="tableData" @handleUpdate="handleUpdate" @remove = "remove" @start = "start"></DataList>
+ <DataList :tableData="tableData" @handleUpdate="handleUpdate" @remove="remove"
+ @start="start"></DataList>
<div id="meet" ref="meet"></div>
</div>
</div>
- <pagination v-show="total>0" :total="total" :page.sync="queryParam.pageIndex" :limit.sync="queryParam.pageSize"
+ <pagination v-show="total>0" :total="total" :page.sync="queryParam.pageIndex"
+ :limit.sync="queryParam.pageSize"
@pagination="getList"/>
</div>
</el-card>
<!-- 娣诲姞浼氳瀵硅瘽妗� -->
<el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
- <el-form label-width="80px" ref="form" :model="form" :rules="rules" >
- <el-form-item label="鎴块棿鍚�" prop="meetName" >
+ <el-form label-width="80px" ref="form" :model="form" :rules="rules">
+ <el-form-item label="鎴块棿鍚�" prop="meetName">
<el-input v-model="form.meetName" placeholder="璇疯緭鍏ユ埧闂村悕" style="width: 300px"></el-input>
</el-form-item>
- <el-form-item label="鐝骇" >
+ <el-form-item label="鐝骇">
<el-select
v-model="form.classesId"
placeholder="鐝骇"
@@ -51,18 +54,18 @@
<el-option v-for="item in classesIds" :key="item.id" :label="item.className" :value="item.id"/>
</el-select>
</el-form-item>
- <el-form-item label="涓婅鏃堕棿" prop="time" >
- <el-date-picker
- v-model="form.time"
- type="datetimerange"
- format="yyyy-MM-dd HH:mm:ss"
- value-format="yyyy-MM-dd HH:mm:ss"
- range-separator="鑷�"
- start-placeholder="寮�濮嬫棩鏈�"
- end-placeholder="缁撴潫鏃ユ湡">
- </el-date-picker>
+ <el-form-item label="涓婅鏃堕棿" prop="time">
+ <el-date-picker
+ v-model="form.time"
+ type="datetimerange"
+ format="yyyy-MM-dd HH:mm:ss"
+ value-format="yyyy-MM-dd HH:mm:ss"
+ range-separator="鑷�"
+ start-placeholder="寮�濮嬫棩鏈�"
+ end-placeholder="缁撴潫鏃ユ湡">
+ </el-date-picker>
</el-form-item>
- <el-form-item label="鐘舵��" >
+ <el-form-item label="鐘舵��">
<el-radio v-model="form.status" :label="0">寰呭紑濮�</el-radio>
<el-radio v-model="form.status" :label="1">杩涜涓�</el-radio>
<el-radio v-model="form.status" :label="2">宸茬粨鏉�</el-radio>
@@ -83,11 +86,11 @@
<script>
import DataList from './data-list/index.vue'
import Pagination from '@/components/Pagination'
-import { getMeets,addMeet,editMeet,deleteMeetById } from '@/api/meet'
+import { getMeets, addMeet, editMeet, deleteMeetById, startMeet } from '@/api/meet'
import { myClasses } from '@/api/classes'
export default {
- components: { DataList,Pagination},
+ components: { DataList, Pagination },
data () {
return {
queryParam: {
@@ -103,7 +106,7 @@
form: {},
tableData: [],
classesIds: [],
- activeName: '1',
+ activeName: 'all',
searchText: '',
rules: {
meetName: [
@@ -124,6 +127,12 @@
},
methods: {
handleClick () {
+ if (this.activeName !== 'all') {
+ this.queryParam.status = this.activeName
+ } else {
+ this.queryParam.status = null
+ }
+ this.getList()
},
remove (item) {
deleteMeetById(item.id).then(re => {
@@ -139,15 +148,15 @@
start (item) {
// 淇敼鎴块棿鐘舵�佷负杩涜涓�
item.status = 1
- editMeet(item).then(re => {
+ startMeet(item).then(re => {
if (re.data.code === 1) {
this.getList()
let routeUrl = this.$router.resolve({
- path: "/meet",
+ path: '/meet',
query: {
domain: 'ycl.easyblog.vip:8443/' + item.id,
roomName: item.meetName,
- userInfoStr: JSON.stringify({
+ userInfoStr: JSON.stringify({
displayName: item.teacherName
})
}
@@ -240,6 +249,7 @@
:deep(.el-tabs__nav-wrap:after) {
display: none;
}
+
.train-container {
width: 100%;
height: 100%;
@@ -253,12 +263,14 @@
width: 100%;
}
}
+
.card-header {
display: flex;
justify-content: space-between;
align-items: center;
flex-shrink: 0;
}
+
.header-search {
display: flex;
align-items: center;
--
Gitblit v1.8.0