| | |
| | | }, |
| | | "devDependencies": { |
| | | "@vue/cli-plugin-babel": "^4.5.19", |
| | | "@vue/cli-plugin-eslint": "^4.5.19", |
| | | "@vue/cli-plugin-router": "^4.5.19", |
| | | "@vue/cli-plugin-vuex": "^4.5.19", |
| | | "@vue/cli-service": "^4.5.19", |
| | | "@vue/eslint-config-standard": "^4.0.0", |
| | | "babel-eslint": "^10.1.0", |
| | | "electron": "^13.0.0", |
| | | "electron-devtools-installer": "^3.1.0", |
| | | "eslint": "^5.16.0", |
| | | "eslint-plugin-vue": "^5.2.3", |
| | | "node-sass": "^6.0.1", |
| | | "sass-loader": "^10.5.2", |
| | | "svg-sprite-loader": "4.1.6", |
| | |
| | | "license": "AGPL-3.0", |
| | | "lint-staged": { |
| | | "src/**/*.{js,vue}": [ |
| | | "eslint --fix", |
| | | "git add" |
| | | ] |
| | | }, |
| | |
| | | }, |
| | | "devDependencies": { |
| | | "@vue/cli-plugin-babel": "^4.5.19", |
| | | "@vue/cli-plugin-eslint": "^4.5.19", |
| | | "@vue/cli-plugin-router": "^4.5.19", |
| | | "@vue/cli-plugin-vuex": "^4.5.19", |
| | | "@vue/cli-service": "^4.5.19", |
| | | "@vue/eslint-config-standard": "^4.0.0", |
| | | "babel-eslint": "^10.1.0", |
| | | "electron": "^13.0.0", |
| | | "electron-devtools-installer": "^3.1.0", |
| | | "eslint-plugin-vue": "^5.2.3", |
| | | "sass-loader": "^10.5.2", |
| | | "svg-sprite-loader": "4.1.6", |
| | | "vue-cli-plugin-electron-builder": "~2.1.1", |
| | |
| | | "license": "AGPL-3.0", |
| | | "lint-staged": { |
| | | "src/**/*.{js,vue}": [ |
| | | "eslint --fix", |
| | | "git add" |
| | | ] |
| | | }, |
| | |
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge"> |
| | | <meta name="viewport" content="width=device-width,initial-scale=1.0"> |
| | | <link rel="icon" href="<%= BASE_URL %>favicon.ico"> |
| | | <title>学之思管理系统</title> |
| | | <title>江西空管音视频</title> |
| | | <style> |
| | | html { |
| | | height: 100%; |
| | |
| | | <div |
| | | class="subject" |
| | | v-for="item in convertDatas" |
| | | :key="item.id" |
| | | > |
| | | <div class="subject-title"> |
| | | <h2>{{item.name}}</h2> |
| | |
| | | class="box-card" |
| | | v-for="(sub,index) in item.childs" |
| | | :id="item.code+(index+1)" |
| | | :key="sub.id" |
| | | > |
| | | <div |
| | | slot="header" |
| | |
| | | <el-radio |
| | | :disabled="disabledAnswer" |
| | | v-for="o in sub.answers" |
| | | :key="o.id" |
| | | :label="o.no" |
| | | class="answer-radio" |
| | | @change="answerButtionCheck($event,item,sub)" |
| | |
| | | <el-checkbox |
| | | :disabled="disabledAnswer" |
| | | v-for="o in sub.answers" |
| | | :key="o.id" |
| | | :label="o.no" |
| | | class="answer-checkbox" |
| | | @change="answerButtionCheck($event,item,sub)" |
| | |
| | | <el-collapse v-model="answerCardActiveName"> |
| | | <el-collapse-item |
| | | v-for="item in convertDatas" |
| | | :key="item.id" |
| | | :name="item.code" |
| | | > |
| | | <template slot="title"> |
| | |
| | | circle |
| | | size="small" |
| | | v-for="index of item.count" |
| | | :key="index" |
| | | :id="'answer'+item.code+index" |
| | | @click.native="jump(item.code+index)" |
| | | >{{index}}</el-button> |
| | |
| | | width="200px" |
| | | > |
| | | <div style="display:flex; justify-content:space-between; padding:10px 10px;"> |
| | | <s-button |
| | | <el-button |
| | | colorType="default" |
| | | size="small" |
| | | @click="() => checkCloseDialog = false" |
| | | >取消</s-button> |
| | | <s-button |
| | | >取消</el-button> |
| | | <el-button |
| | | colorType="deepBlue" |
| | | size="small" |
| | | @click="closeSystem" |
| | | >确定</s-button> |
| | | >确定</el-button> |
| | | </div> |
| | | </s-dialog> |
| | | </div> |
| | |
| | | width="200px" |
| | | > |
| | | <div style="display:flex; justify-content:space-between; padding:10px 10px;"> |
| | | <s-button |
| | | <el-button |
| | | colorType="default" |
| | | size="small" |
| | | @click="() => checkCloseDialog = false" |
| | | >取消</s-button> |
| | | <s-button |
| | | >取消</el-button> |
| | | <el-button |
| | | colorType="deepBlue" |
| | | size="small" |
| | | @click="closeSystem" |
| | | >确定</s-button> |
| | | >确定</el-button> |
| | | </div> |
| | | </s-dialog> |
| | | </div> |
| | |
| | | { |
| | | path: 'teacher-manage', |
| | | name: 'teacherManage', |
| | | component: () => import('@/views/Manage/Education/TeacherManage.vue') |
| | | component: () => import('@/views/Manage/Education/TeacherManage.vue'), |
| | | meta: { title: '教师管理' } |
| | | }, |
| | | // 教师介绍 |
| | | { |
| | |
| | | path: 'test-paper', |
| | | name: 'TestPaper', |
| | | component: () => import('@/views/Manage/TestPaper/index.vue'), |
| | | meta: { title: '试卷管理' } |
| | | }, |
| | | // 题库管理 |
| | | { |
| | | path: 'question-bank', |
| | | name: 'QuestionBank', |
| | | component: () => import('@/views/Manage/TestPaper/QuestionBank.vue'), |
| | | meta: { title: '题库管理' } |
| | | }, |
| | | // 试卷生成 |
| | | { |
| | |
| | | { |
| | | path: '/', |
| | | name: 'ClassManagementIndex', |
| | | component: () => import('@/views/Manage/ClassManagement/Class.vue') |
| | | component: () => import('@/views/Manage/ClassManagement/Class.vue'), |
| | | meta: { title: '班级管理' } |
| | | }, { |
| | | path: 'Class-staff', |
| | | name: 'ClassStaff', |
| | | component: () => import('@/views/Manage/ClassManagement/ClassStaff.vue') |
| | | component: () => import('@/views/Manage/ClassManagement/ClassStaff.vue'), |
| | | meta: { title: '班级成员管理' } |
| | | } |
| | | ] |
| | | }, |
| | |
| | | ] |
| | | |
| | | const router = new Router({ |
| | | mode: 'history', |
| | | routes: constantRoutes |
| | | }) |
| | | |
| | | |
| | | router.beforeEach((to,from,next)=>{ |
| | | if(to.meta.title){//判断是否有标题 |
| | | document.title = to.meta.title |
| | | } |
| | | next() //执行进入路由,如果不写就不会进入目标页 |
| | | }) |
| | | |
| | | export { |
| | | constantRoutes, |
| | | router |
| | |
| | | ></el-table-column> |
| | | <el-table-column label="操作"> |
| | | <template slot-scope="scope"> |
| | | <s-button |
| | | <el-button |
| | | class="deepBlue" |
| | | colorType="blue" |
| | | v-if="scope.row.type===2" |
| | | >预约</s-button> |
| | | <s-button |
| | | >预约</el-button> |
| | | <el-button |
| | | colorType="darkBlue" |
| | | disabled |
| | | v-else |
| | | >预约</s-button> |
| | | >预约</el-button> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | |
| | | background-color: rgb(45, 92, 248); |
| | | } |
| | | } |
| | | </style> |
| | | </style> |
| | |
| | | > |
| | | <template slot-scope="scope"> |
| | | <div style="display:flex; justify-content:space-between"> |
| | | <s-button |
| | | <el-button |
| | | class="deepBlue" |
| | | colorType="blue" |
| | | v-if="scope.row.type===2" |
| | | @click="$router.push('/exam/beginexam')" |
| | | >开始考试</s-button> |
| | | <s-button |
| | | >开始考试</el-button> |
| | | <el-button |
| | | colorType="darkBlue" |
| | | disabled |
| | | v-else |
| | | >开始考试</s-button> |
| | | <s-button |
| | | >开始考试</el-button> |
| | | <el-button |
| | | colorType="red" |
| | | v-if="scope.row.type===2" |
| | | >结束考试</s-button> |
| | | <s-button |
| | | >结束考试</el-button> |
| | | <el-button |
| | | colorType="darkBlue" |
| | | disabled |
| | | v-else |
| | | >结束考试</s-button> |
| | | >结束考试</el-button> |
| | | |
| | | </div> |
| | | </template> |
| | |
| | | background-color: rgb(45, 92, 248); |
| | | } |
| | | } |
| | | </style> |
| | | </style> |
| | |
| | | <div class="c"> |
| | | <div class="bg"> |
| | | <div class="main"> |
| | | <TitleIndex title='班级管理' /> |
| | | <div class="main-1"> |
| | | <div |
| | | class="main-btn flex" |
| | | style="justify-content:space-between" |
| | | > |
| | | <div> |
| | | <s-button |
| | | colorType="deepBlue" |
| | | <el-button |
| | | type="primary" |
| | | style="margin-right:20px;" |
| | | @click="$router.push('/manage/class-management/Class-staff')" |
| | | >新增班级</s-button> |
| | | @click="handlerAdd" |
| | | >新增班级</el-button> |
| | | </div> |
| | | <div |
| | | class="flex" |
| | | style="align-items:center" |
| | | > |
| | | <p style="padding-right:10px">排序方式</p> |
| | | <el-select> |
| | | <el-option></el-option> |
| | | </el-select> |
| | | <p style="margin-left:20px;margin-right: 10px;">所在单位</p> |
| | | <el-select> |
| | | <el-option></el-option> |
| | | </el-select> |
| | | <!-- <el-select v-model="searchData.deptId">--> |
| | | <!-- <el-option></el-option>--> |
| | | <!-- </el-select>--> |
| | | </div> |
| | | </div> |
| | | <div> |
| | |
| | | <el-button>通知</el-button> |
| | | <el-button @click="routersTo()">成员管理</el-button> |
| | | <el-button>添加成员</el-button> |
| | | <el-select |
| | | v-model="value" |
| | | style="width:74px;margin-left: 10px;" |
| | | placeholder="选择" |
| | | > |
| | | <el-option |
| | | v-for="item in options" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </template> |
| | | </el-table-column> |
| | | </el-table> |
| | |
| | | class="flex" |
| | | style="justify-content:center;margin-top:20px;" |
| | | > |
| | | <el-pagination |
| | | background |
| | | layout="prev, pager, next" |
| | | :total="1000" |
| | | > |
| | | </el-pagination> |
| | | <pagination v-show="total>0" :total="total" :page.sync="searchForm.pageIndex" :limit.sync="searchForm.pageSize" |
| | | @pagination="page"/> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | </div> |
| | | |
| | | |
| | | <el-dialog |
| | | :title="title" |
| | | :visible.sync="open" |
| | | width="700px" |
| | | :before-close="handleClose"> |
| | | <el-form :model="form" :rules="rules" ref="form" label-width="100px" class="demo-ruleForm"> |
| | | <el-form-item label="班级名称" prop="className"> |
| | | <el-input v-model="form.className" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="班级时间" required> |
| | | <el-col :span="11"> |
| | | <el-form-item prop="startTime"> |
| | | <el-date-picker |
| | | v-model="form.startTime" |
| | | type="date" |
| | | value-format="yyyy-MM-dd" |
| | | placeholder="开始日期"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col class="line" :span="2">-</el-col> |
| | | <el-col :span="11"> |
| | | <el-form-item prop="endTime"> |
| | | <el-date-picker |
| | | v-model="form.endTime" |
| | | type="date" |
| | | value-format="yyyy-MM-dd" |
| | | placeholder="结束日期"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="备注信息" prop="remark"> |
| | | <el-input type="textarea" v-model="form.remark" size="small"></el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="handleClose">取 消</el-button> |
| | | <el-button type="primary" @click="submitForm">确 定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { addClasses, editClasses, getClassess } from "@/api/classes"; |
| | | import Pagination from "@/components/Pagination" |
| | | export default { |
| | | components: {Pagination}, |
| | | data() { |
| | | return { |
| | | total: 0, |
| | | open: false, |
| | | title: "", |
| | | value: "", |
| | | searchData: { |
| | | searchForm: { |
| | | subject: null, |
| | | pageSize: 10, |
| | | pageNum: 1 |
| | | }, |
| | | form: { |
| | | id: null, |
| | | className: "", |
| | | status: "", |
| | | verifyStatus: "", |
| | | startTime: null, |
| | | endTime: null, |
| | | remark: "" |
| | | }, |
| | | rules: { |
| | | className: [ |
| | | { required: true, message: '请输入班级名称', trigger: 'blur' }, |
| | | { min: 1, max: 30, message: '长度在 1 到 30 个字符', trigger: 'blur' } |
| | | ], |
| | | startTime: [ |
| | | { required: true, message: '请选择班级开始时间', trigger: 'change' }, |
| | | ], |
| | | endTime: [ |
| | | { required: true, message: '请选择班级结束时间', trigger: 'change' }, |
| | | ], |
| | | }, |
| | | tableData: [ |
| | | { |
| | | class: "软件工程", |
| | | grade: "2019级", |
| | | unit: "螺丝部", |
| | | teacher: "秋梨膏", |
| | | phone: "182-9384-9302", |
| | | email: "info@exaple.com", |
| | | openingTime: "2022/3/29", |
| | | }, |
| | | { |
| | | class: "软件工程", |
| | | grade: "2019级", |
| | | unit: "螺丝部", |
| | | teacher: "秋梨膏", |
| | | phone: "182-9384-9302", |
| | | email: "info@exaple.com", |
| | | openingTime: "2022/3/29", |
| | | }, |
| | | { |
| | | class: "软件工程", |
| | | grade: "2019级", |
| | | unit: "螺丝部", |
| | | teacher: "秋梨膏", |
| | | phone: "182-9384-9302", |
| | | email: "info@exaple.com", |
| | | openingTime: "2022/3/29", |
| | | }, |
| | | { |
| | | class: "软件工程", |
| | | grade: "2019级", |
| | | unit: "螺丝部", |
| | | teacher: "秋梨膏", |
| | | phone: "182-9384-9302", |
| | | email: "info@exaple.com", |
| | | openingTime: "2022/3/29", |
| | | }, |
| | | { |
| | | class: "软件工程", |
| | | grade: "2019级", |
| | | unit: "螺丝部", |
| | | teacher: "秋梨膏", |
| | | phone: "182-9384-9302", |
| | | email: "info@exaple.com", |
| | | openingTime: "2022/3/29", |
| | | }, |
| | | { |
| | | class: "软件工程", |
| | | grade: "2019级", |
| | | unit: "螺丝部", |
| | | teacher: "秋梨膏", |
| | | phone: "182-9384-9302", |
| | | email: "info@exaple.com", |
| | | openingTime: "2022/3/29", |
| | | }, |
| | | { |
| | | class: "软件工程", |
| | | grade: "2019级", |
| | | unit: "螺丝部", |
| | | teacher: "秋梨膏", |
| | | phone: "182-9384-9302", |
| | | email: "info@exaple.com", |
| | | openingTime: "2022/3/29", |
| | | }, |
| | | { |
| | | class: "软件工程", |
| | | grade: "2019级", |
| | | unit: "螺丝部", |
| | | teacher: "秋梨膏", |
| | | phone: "182-9384-9302", |
| | | email: "info@exaple.com", |
| | | openingTime: "2022/3/29", |
| | | }, |
| | | { |
| | | class: "软件工程", |
| | | grade: "2019级", |
| | | unit: "螺丝部", |
| | | teacher: "秋梨膏", |
| | | phone: "182-9384-9302", |
| | | email: "info@exaple.com", |
| | | openingTime: "2022/3/29", |
| | | }, |
| | | |
| | | ], |
| | | pageData: { |
| | | size: 7, |
| | | page: 1, |
| | | }, |
| | | }; |
| | | }, |
| | | methods: { |
| | | // // 查看详情 |
| | | // detailsTo() { |
| | | // this.$router.push({ |
| | | // name: "teacherDetail", |
| | | // }); |
| | | // }, |
| | | page() { |
| | | getClassess(this.searchForm).then(res => { |
| | | this.tableData = res.data.data |
| | | }) |
| | | }, |
| | | resetForm() { |
| | | this.form = { |
| | | id: null, |
| | | className: "", |
| | | status: "", |
| | | verifyStatus: "", |
| | | startTime: null, |
| | | endTime: null, |
| | | remark: "" |
| | | } |
| | | }, |
| | | submitForm() { |
| | | this.$refs['form'].validate((valid) => { |
| | | if (valid) { |
| | | if (this.form.id) { |
| | | editClasses(this.form).then(res => { |
| | | this.$message.success("修改成功") |
| | | }) |
| | | } else { |
| | | addClasses(this.form).then(res => { |
| | | this.$message.success("添加班级成功") |
| | | }) |
| | | } |
| | | this.resetForm() |
| | | } else { |
| | | return false; |
| | | } |
| | | }); |
| | | }, |
| | | handleClose() { |
| | | this.open = false |
| | | this.resetForm() |
| | | }, |
| | | handlerAdd() { |
| | | this.open = true |
| | | this.title = "新增班级" |
| | | }, |
| | | // 跳转(查看班级人员情况) |
| | | routersTo() { |
| | | this.$router.push({ |
| | |
| | | background-color: rgb(45, 92, 248); |
| | | } |
| | | } |
| | | </style> |
| | | </style> |
| | |
| | | style="justify-content:space-between" |
| | | > |
| | | <div> |
| | | <s-button |
| | | <el-button |
| | | colorType="deepBlue" |
| | | style="margin-right:20px;" |
| | | @click="getPopUp" |
| | | >新增教师</s-button> |
| | | <s-button |
| | | >新增教师</el-button> |
| | | <el-button |
| | | colorType="deepBlue" |
| | | style="margin-right:20px;" |
| | | plain |
| | | >批量导出</s-button> |
| | | <s-button |
| | | >批量导出</el-button> |
| | | <el-button |
| | | colorType="deepBlue" |
| | | plain |
| | | >批量导入</s-button> |
| | | >批量导入</el-button> |
| | | </div> |
| | | <div |
| | | class="flex" |
| | |
| | | background-color: rgb(45, 92, 248); |
| | | } |
| | | } |
| | | </style> |
| | | </style> |
| | |
| | | style="justify-content:space-between" |
| | | > |
| | | <div> |
| | | <s-button |
| | | <el-button |
| | | colorType="deepBlue" |
| | | style="margin-right:20px;" |
| | | >新增考试</s-button> |
| | | >新增考试</el-button> |
| | | </div> |
| | | </div> |
| | | <div> |
| | |
| | | color: aqua; |
| | | } |
| | | } |
| | | </style> |
| | | </style> |
| | |
| | | <el-row :gutter="24"> |
| | | <el-col |
| | | :span="item.id*6" |
| | | v-for="item in scope.row.arr" |
| | | v-for="(item,index) in scope.row.arr" |
| | | :key="index" |
| | | > |
| | | <div class="grid-content bg-purple flex"> |
| | | <span>课程名称</span> |
| | |
| | | <el-row :gutter="24"> |
| | | <el-col |
| | | :span="item.id*6" |
| | | v-for="item in scope.row.arr1" |
| | | v-for="(item,index) in scope.row.arr1" |
| | | :key="index" |
| | | > |
| | | <div class="grid-content bg-purple flex"> |
| | | <span>课程名称</span> |
| | |
| | | <div class="bg"> |
| | | <div class="main"> |
| | | <div class="list"> |
| | | <div class="card list-con" v-for="item in curriculum"> |
| | | <div class="card list-con" v-for="(item,index) in curriculum" :key="index"> |
| | | <img src="@/assets/img/teach/list-card-bg.jpg" style="height:220px;width:350px" alt="" |
| | | v-if="!item.start"> |
| | | <video :id="`video-${item.id}`" v-show="item.start" height="220px" width="350px"></video> |
| | |
| | | <span>{{ item.time }}</span> |
| | | </div> |
| | | <div class="list-con-op"> |
| | | <s-button colorType="default">资料上传</s-button> |
| | | <s-button colorType="deepBlue" @click="handleStart(item)">开始上课</s-button> |
| | | <el-button colorType="default">资料上传</el-button> |
| | | <el-button colorType="deepBlue" @click="handleStart(item)">开始上课</el-button> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <s-dialog v-model="dialog" title="请选择授课方式"> |
| | | <template> |
| | | <div style="width:300px; padding:20px; justify-content:space-between" class="flex"> |
| | | <s-button colorType="default">语音授课</s-button> |
| | | <s-button colorType="deepBlue" @click="selectScreen">视频授课</s-button> |
| | | <el-button colorType="default">语音授课</el-button> |
| | | <el-button colorType="deepBlue" @click="selectScreen">视频授课</el-button> |
| | | </div> |
| | | </template> |
| | | </s-dialog> |