From c644a5afed704b804d23e97a0434491c55abc400 Mon Sep 17 00:00:00 2001
From: zhouwx <1175765986@qq.com>
Date: 星期五, 18 七月 2025 17:29:42 +0800
Subject: [PATCH] 修改

---
 src/views/work/onlineEducation/people/index.vue                                             |    5 
 /dev/null                                                                                   |  179 --------------------------------------------
 src/views/work/onlineEducation/groupExams/components/examDialog.vue                         |    2 
 src/views/work/onlineEducation/groupExams/components/examChooseStudent.vue                  |    4 
 src/views/work/onlineEducation/people/components/stuDialog.vue                              |   17 ++--
 src/views/work/onlineEducation/groupExams/components/student.vue                            |    2 
 src/views/work/onlineEducation/classHourBatch/components/chooseStudent.vue                  |    4 
 src/views/build/conpanyFunctionConsult/staffManage/staffRegister/components/staffDialog.vue |    4 
 src/views/work/onlineEducation/classHourBatch/index.vue                                     |    2 
 src/views/work/onlineEducation/groupExams/index.vue                                         |    2 
 10 files changed, 22 insertions(+), 199 deletions(-)

diff --git a/src/views/build/conpanyFunctionConsult/staffManage/staffRegister/components/staffDialog.vue b/src/views/build/conpanyFunctionConsult/staffManage/staffRegister/components/staffDialog.vue
index a3a7a50..bb793d3 100644
--- a/src/views/build/conpanyFunctionConsult/staffManage/staffRegister/components/staffDialog.vue
+++ b/src/views/build/conpanyFunctionConsult/staffManage/staffRegister/components/staffDialog.vue
@@ -207,7 +207,7 @@
 
 const validateUserPhone = (rule, value, callback)=>{
   if(value === ''){
-    callback()
+    callback(new Error('请输入手机号'))
   }else{
     if(!verifyPhone(value)){
       callback(new Error('手机号格式有误'))
@@ -304,7 +304,7 @@
     username: [{ required: true, message: '请选择用户名', trigger: 'blur' }],
     password: [{ required: true, validator: validatePwd, trigger: 'blur' }],
     confirmPassword: [{ required: true, validator: equalToPassword, trigger: 'blur' }],
-    phone: [{ validator: validateUserPhone, trigger: 'blur' }],
+    phone: [{ validator: validateUserPhone,required: true, trigger: 'blur' }],
     userType: [{ required: true, message: '请选择用户类型', trigger: 'blur' }],
     // idCard: [{ validator: verifyId, trigger: 'blur' }],
     entryTime: [{ required: true, message: '请选择入职时间', trigger: 'blur' }],
diff --git a/src/views/onlineEducation/classHourBatch/components/batchDialog.vue b/src/views/onlineEducation/classHourBatch/components/batchDialog.vue
deleted file mode 100644
index ac2a8ee..0000000
--- a/src/views/onlineEducation/classHourBatch/components/batchDialog.vue
+++ /dev/null
@@ -1,292 +0,0 @@
-<template>
-  <div class="notice">
-    <el-dialog
-        v-model="dialogVisible"
-        :title="title"
-        width="500px"
-        :before-close="handleClose"
-        :close-on-press-escape="false"
-        :close-on-click-modal="false"
-    >
-      <el-form :model="state.form" size="default" ref="busRef" :rules="state.formRules" label-width="150px" >
-        <el-form-item label="所属公司:" prop="companyName" v-if="!state.isAdmin">
-          <el-input v-model.trim="state.form.companyName" disabled></el-input>
-        </el-form-item>
-        <el-form-item label="批次名称:" prop="name">
-          <el-input v-model.trim="state.form.name" placeholder="请输入批次名称"></el-input>
-        </el-form-item>
-        <el-form-item label="培训级别:" prop="level" >
-          <el-select v-model="state.form.level" placeholder="请选择培训级别" style="width: 100%">
-            <el-option
-                v-for="item in state.levelList"
-                :key="item.id"
-                :label="item.name"
-                style="width: 100%"
-                :value="item.id">
-            </el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="归属课程:" prop="courseName">
-          <el-select
-              v-model="state.form.courseName"
-              style="width: 100%"
-              v-loadMoreNew:[reselect]="handleScroll"
-              :popper-class="reselect.name"
-              @change="selectValue"
-              class="item-width"
-              placeholder="请选择课程"
-          >
-            <el-option
-                v-for="item in state.courseList"
-                :key="item.id"
-                :label="item.name"
-                :value="item.name"
-            />
-          </el-select>
-        </el-form-item>
-      </el-form>
-      <template #footer>
-        <span class="dialog-footer">
-            <el-button @click="handleClose" size="default">取 消</el-button>
-            <el-button type="primary"  @click="onSubmit" size="default" v-preReClick>确认</el-button>
-        </span>
-      </template>
-    </el-dialog>
-  </div>
-</template>
-<script setup>
-import {reactive, ref, toRefs} from 'vue'
-import {ElMessage} from "element-plus";
-
-import {
-  getClassification
-} from "@/api/onlineEducation/courseClass";
-import {
-  addCourse,
-  checkCourseName,
-  editCourse,
-  getApproveCourse,
-  getCourse,
-  getCourseById
-} from "@/api/onlineEducation/courseManage";
-import {getToken} from "@/utils/auth";
-import {delPic, getBannerById} from "@/api/onlineEducation/banner";
-import Cookies from "js-cookie";
-import {
-  addQuestionBank,
-  checkQuestionBankName,
-  editQuestionBank,
-  getQuestionBank
-} from "@/api/onlineEducation/questionBank";
-import {addBatch, checkBatchName, editBatch} from "@/api/onlineEducation/batch";
-
-const dialogVisible = ref(false);
-const title = ref("");
-const busRef = ref();
-const length = ref()
-const emit = defineEmits(["getList"]);
-const startUsername = ref('');
-const classifyRef = ref(null)
-const reselect = reactive({
-  name: 'course1'
-})
-const validateName = (rule, value, callback)=>{
-  if(value === ''){
-    callback(new Error('请输入批次名称'))
-  }else if(title.value === '编辑' && value === startUsername.value){
-    callback()
-  }else{
-    let param = {}
-    if(title.value === '新增') {
-      param = {
-        name:value
-      }
-    }else if(title.value === '编辑'){
-      param = {
-        name:value,
-        id: state.form.id
-      }
-    }
-    checkBatchName(param).then((res)=>{
-      if(res.data == false){
-        callback(new Error('批次名称已被占用,请更换其他名称'))
-      }else{
-        callback()
-      }
-    })
-  }
-}
-const state = reactive({
-  form: {
-    id: '',
-    name: '',
-    courseId: null,
-    companyName: '',
-    courseName: '',
-    companyId: null,
-    level: null
-  },
-  formRules: {
-    companyName:[{required: true,message: '', trigger: 'blur'}],
-    name: [{required: true, trigger: "blur", validator: validateName}],
-    courseName: [{required: true, message: '请选择课程', trigger: 'blur'}],
-    level: [{required: true, message: '请选择培训级别', trigger: 'blur'}],
-  },
-  classifyList: [],
-  isAdmin: false,
-  levelList: [
-    {
-      id: 1,
-      name: '公司级 '
-    },
-    {
-      id: 2,
-      name: '部门级'
-    },
-    {
-      id: 3,
-      name: '车间级'
-    },
-    {
-      id: 4,
-      name: '其他'
-    },
-  ],
-  courseList: [],
-  courseNum: 1,
-  courseSize: 10,
-  hasMoreItems: null, // 是否还有更多选项
-
-})
-
-const openDialog = async (type, value) => {
-  await loadMoreCourseData();
-  const userInfo = JSON.parse(Cookies.get('userInfo'))
-  console.log("userInfo",userInfo)
-  if(userInfo.userType === 0){
-    state.isAdmin = true;
-    state.form.companyName = ''
-    state.form.companyId = null
-  }else {
-    state.isAdmin = false;
-    state.form.companyName = userInfo.companyName
-    state.form.companyId = userInfo.companyId
-  }
-  title.value = type === 'addFirst' || type === 'add' ? '新增' : type ==='edit' ? '编辑' : '' ;
-  if(type === 'edit') {
-    startUsername.value = value.name;
-    state.form = value;
-  }
-  dialogVisible.value = true;
-}
-const handleScroll = () => {
-  if(state.courseNum >= state.hasMoreItems) return
-  state.courseNum++;
-  loadMoreCourseData()
-}
-
-const selectValue = (val) => {
-  state.courseList.forEach(item => {
-    if(item.name === val){
-      state.form.courseId = item.id
-    }
-  })
-}
-const loadMoreCourseData = async () => {
-  const queryParams = {
-    pageNum: state.courseNum,
-    pageSize: state.courseSize,
-  }
-  const res = await getApproveCourse(queryParams)
-  if (res.code == 200) {
-    state.hasMoreItems = res.data.totalPage
-    const data = res.data.list.filter(item => item.status == 0)
-    state.courseList = state.courseList.concat(data)
-  }else{
-    ElMessage.warning(res.message)
-  }
-}
-
-const onSubmit = async () => {
-  if(state.isAdmin){
-    ElMessage({
-      type: 'warning',
-      message: '管理员暂无权限'
-    });
-    return;
-  }
-  const valid = await busRef.value.validate();
-  if(valid){
-    if(title.value === '新增'){
-      const {id,courseName,companyName, ...data} = JSON.parse(JSON.stringify(state.form))
-      const res = await addBatch(data)
-      if(res.code === 200){
-        ElMessage({
-          type: 'success',
-          message: '新增成功'
-        });
-      }else{
-        ElMessage.warning(res.message)
-      }
-      emit("getList")
-      busRef.value.clearValidate();
-      reset();
-      dialogVisible.value = false;
-    }else if(title.value === '编辑'){
-      const {courseName,companyName,...data} = JSON.parse(JSON.stringify(state.form))
-      const res = await editBatch(data)
-      if(res.code === 200){
-        ElMessage({
-          type: 'success',
-          message: '编辑成功'
-        });
-      }else{
-        ElMessage.warning(res.message)
-      }
-      emit("getList")
-      busRef.value.clearValidate();
-      reset();
-      dialogVisible.value = false;
-    }
-  }
-}
-
-const handleClose = () => {
-  busRef.value.clearValidate();
-  reset();
-  dialogVisible.value = false;
-  emit("getList")
-
-}
-const reset = () => {
-  state.form = {
-    id: '',
-    name: '',
-    courseId: null,
-    companyName: '',
-    companyId: null,
-    level: null,
-    courseName: ''
-  }
-  state.courseNum = 1;
-  state.courseSize = 10;
-  state.courseList = []
-}
-defineExpose({
-  openDialog
-});
-
-</script>
-
-<style scoped lang="scss">
-.notice{
-  :deep(.el-form .el-form-item__label) {
-    font-size: 15px;
-  }
-  .file {
-    display: flex;
-    flex-direction: column;
-    align-items: flex-start;
-  }
-}
-</style>
diff --git a/src/views/onlineEducation/classHourBatch/components/chooseStudent.vue b/src/views/onlineEducation/classHourBatch/components/chooseStudent.vue
deleted file mode 100644
index 8d097ba..0000000
--- a/src/views/onlineEducation/classHourBatch/components/chooseStudent.vue
+++ /dev/null
@@ -1,302 +0,0 @@
-<template>
-  <div class="notice">
-    <el-dialog
-        v-model="dialogVisible"
-        :title="title"
-        width="800px"
-        :before-close="handleClose"
-        :close-on-press-escape="false"
-        :close-on-click-modal="false"
-    >
-      <el-checkbox v-model="state.DisableSelection" style="margin-left: 30px;margin-bottom: 10px;font-weight: 600" @change="changeChecked">一键全选</el-checkbox>
-      <div style="display: flex;justify-content: space-between">
-
-        <el-form :inline="true" style="display: flex;align-items: center;flex-wrap: wrap;" >
-          <el-form-item >
-<!--            <el-checkbox v-model="state.DisableSelection">一键全选</el-checkbox>-->
-          </el-form-item>
-          <el-form-item label="姓名:" >
-            <el-input v-model="state.queryParams.name" placeholder="请输入姓名"></el-input>
-          </el-form-item>
-          <el-form-item label="职务:" >
-            <el-input v-model="state.queryParams.duty" placeholder="请输入职务"></el-input>
-          </el-form-item>
-          <el-form-item >
-            <el-button
-                type="primary"
-                @click="getList"
-            >查询</el-button>
-            <el-button
-                type="primary"
-                plain
-                @click="resetQuery"
-            >重置</el-button>
-          </el-form-item>
-        </el-form>
-      </div>
-      <!-- 表格数据 -->
-      <el-table
-          ref="tableRef"
-          v-loading="state.allLoading"
-          :data="state.dataList"
-          :border="true"
-          :row-key="getRowKey"
-          @selection-change="handleSelectionChange"
-          v-model="state.selectRowKeys"
-          :header-cell-class-name="cellClass"
-      >
-        <el-table-column type="selection" :reserve-selection="true" width="55" align="center" :selectable="selectable" />
-<!--        <el-table-column label="序号" type="index" align="center" width="80" />-->
-        <el-table-column label="工号" prop="empno" align="center" width="60"  />
-        <el-table-column label="姓名" prop="name" align="center"  />
-        <el-table-column label="性别" prop="sex" align="center" >
-          <template #default="scope">
-            <span>{{scope.row.sex == 0 ? '男':'女'}}</span>
-          </template>
-        </el-table-column>
-        <el-table-column label="手机号" prop="phone" align="center" width="130"/>
-        <el-table-column label="身份证" prop="idNo" align="center" width="200" :show-overflow-tooltip="true"/>
-<!--        <el-table-column label="创建人" prop="createBy" align="center"/>-->
-        <el-table-column label="工作岗位" prop="post" align="center"/>
-        <el-table-column label="职务" prop="duty" align="center"/>
-<!--        <el-table-column label="一人一档" prop="duty" align="center" width="120">-->
-<!--          <template #default="scope">-->
-<!--            <el-button link type="primary">培训考试记录</el-button>-->
-<!--          </template>-->
-<!--        </el-table-column>-->
-      </el-table>
-
-      <pagination
-          v-show="state.total> 0"
-          :total="state.total"
-          v-model:page="state.queryParams.pageNum"
-          v-model:limit="state.queryParams.pageSize"
-          @pagination="getList"
-      />
-      <template #footer>
-        <span class="dialog-footer">
-            <el-button @click="handleClose" size="default">取 消</el-button>
-           <el-button type="primary" v-if="state.allLoading && state.DisableSelection " disabled>全选加载中</el-button>
-          <el-button type="primary" v-else @click="onSubmit" size="default" v-preReClick>确认</el-button>
-        </span>
-      </template>
-    </el-dialog>
-  </div>
-</template>
-<script setup>
-import {nextTick, reactive, ref, toRefs} from 'vue'
-import {ElMessage} from "element-plus";
-import Cookies from "js-cookie";
-import {addQuestionBank, checkQuestionBankName, editQuestionBank} from "@/api/onlineEducation/questionBank";
-import {getStudent, getStudentAll} from "@/api/onlineEducation/student";
-import {batchAddStudent} from "@/api/onlineEducation/batch";
-
-const dialogVisible = ref(false);
-const title = ref("");
-const tableRef = ref();
-const length = ref()
-const emit = defineEmits(["getList"]);
-const startUsername = ref('');
-const classifyRef = ref(null)
-const state = reactive({
-  form: [],
-  isAdmin: false,
-  total: 0,
-  disabled:true,
-  queryParams: {
-    pageNum: 1,
-    pageSize: 10,
-    name: '',
-    duty: ''
-  },
-  dataList: [],
-  totalItems: 0, // 总数据条数,从后端接口获取
-  phaseId: null,
-  chooseStu: [],
-  companyId: null,
-  selectRowKeys: [],
-  DisableSelection:false,
-  allStuList: [],
-  allLoading: false
-
-})
-const loading = ref(false);
-
-const getRowKey = (row) => {
-  return row.id
-}
-const openDialog = async (data) => {
-  // state.selectRowKeys = [10,11]
-  state.phaseId = data.queryParams.phaseId
-  title.value = '学员选择';
-  dialogVisible.value = true;
-  await getAllStudent()
-  await getList()
-
-}
-
-const getList = async () => {
-  loading.value = true
-  const res = await getStudent(state.queryParams)
-  if(res.code == 200){
-    state.dataList = res.data.list
-    state.total = res.data.total
-    // await nextTick(() => {
-    //   const currentIds = state.dataList.map(row => row.id)
-    //   const selectIds = state.selectRowKeys.filter(id => currentIds.includes(id))
-    //   state.dataList.forEach(row => {
-    //     if (selectIds.includes(row.id)) {
-    //       tableRef.value.toggleRowSelection(row, true);
-    //     }
-    //   })
-    // });
-  }else{
-    ElMessage.warning(res.message)
-  }
-  loading.value = false
-}
-
-const onSubmit = async () => {
-  console.log('state.chooseStu',state.chooseStu)
-    const res = await batchAddStudent(state.chooseStu)
-    if(res.code === 200){
-      ElMessage({
-        type: 'success',
-        message: '新增成功'
-      });
-    }else{
-      ElMessage.warning(res.message)
-    }
-    emit("getList")
-    reset();
-    dialogVisible.value = false;
-}
-
-const handleClose = () => {
-  reset();
-  dialogVisible.value = false;
-  emit("getList")
-}
-const reset = () => {
-  state.form = {
-    id: '',
-    name: '',
-    categoryId: null,
-    companyName: '',
-    companyId: null
-  }
-
-  tableRef.value.clearSelection();
-  state.dataList = []
-  state.allStuList = []
-  state.total = 0
-  state.DisableSelection = false
-  state.queryParams ={
-    pageNum: 1,
-    pageSize: 10,
-    name: '',
-    duty: ''
-
-  }
-}
-const handleSelectionChange = (val) => {
-  state.chooseStu = val.map(item => {
-    return {
-      companyId: item.companyId,
-      createId:item.createId,
-      phaseId:state.phaseId,
-      studentId: item.id
-    }
-  })
-}
-const resetQuery = () => {
-  state.form = {
-    id: '',
-    name: '',
-    categoryId: null,
-    companyName: '',
-    companyId: null
-  }
-  tableRef.value.clearSelection();
-  state.dataList = []
-  state.allStuList = []
-  state.total = 0
-  state.DisableSelection = false
-  state.queryParams ={
-    pageNum: 1,
-    pageSize: 10,
-    name: '',
-    duty: ''
-
-  }
-  getList()
-}
-const selectable = (row,rowIndex) => {
-  if(state.DisableSelection){
-  }else {
-    return true
-  }
-
-}
-const cellClass = (row) => {
-  if (state.DisableSelection) {
-    if(row.columnIndex == 0){
-      return "DisableSelection"
-    }
-
-  }
-}
-
-const  changeChecked = (val) => {
-  tableRef.value.clearSelection();
-  if(val){
-    state.chooseStu= state.allStuList.map(item => {
-      return {
-        companyId: item.companyId,
-        createId:item.createId,
-        phaseId:state.phaseId,
-        studentId: item.id
-      }
-    })
-  }else {
-    state.chooseStu = []
-  }
-}
-const getAllStudent = async () => {
-  state.allLoading = true
-  const res = await getStudentAll()
-  if(res.code == 200){
-    state.allStuList = res.data
-    state.allLoading = false
-  }else{
-    ElMessage.warning(res.message)
-  }
-}
-
-defineExpose({
-  openDialog
-});
-
-</script>
-
-<style scoped lang="scss">
-.notice{
-  :deep(.el-form .el-form-item__label) {
-    font-size: 15px;
-  }
-  .file {
-    display: flex;
-    flex-direction: column;
-    align-items: flex-start;
-  }
-
-  :deep(.el-table .DisableSelection .cell .el-checkbox__inner){
-    display: none;
-    position: relative;
-  }
-  :deep(.el-table .DisableSelection .cell:before){
-    content: "";
-    position: absolute;
-  }
-}
-</style>
diff --git a/src/views/onlineEducation/classHourBatch/components/classHourChange.vue b/src/views/onlineEducation/classHourBatch/components/classHourChange.vue
deleted file mode 100644
index 37c0b64..0000000
--- a/src/views/onlineEducation/classHourBatch/components/classHourChange.vue
+++ /dev/null
@@ -1,113 +0,0 @@
-<template>
-  <div class="notice">
-    <el-dialog
-        v-model="dialogVisible"
-        :title="state.title"
-        width="50%"
-        :before-close="handleClose"
-        :close-on-press-escape="false"
-        :close-on-click-modal="false"
-    >
-      <el-table v-loading="state.loading" :data="state.dataList" :border="true">
-        <el-table-column label="创建时间" prop="createTime" align="center"  width="180" />
-        <el-table-column label="变动来源" prop="origin" align="center"  />
-        <el-table-column label="变动情况" prop="modifyPeriodMin" align="center" />
-        <el-table-column label="变动后剩余" prop="remainPeriodMin" align="center"  />
-<!--        <el-table-column label="操作" align="center" class-name="small-padding fixed-width"  width="180">-->
-<!--          <template #default="scope">-->
-<!--            <el-button link type="danger" @click="handleDelete(scope.row)">删除</el-button>-->
-<!--          </template>-->
-<!--        </el-table-column>-->
-      </el-table>
-      <pagination
-        v-show="state.total > 0"
-        :total="state.total"
-        v-model:page="state.queryParams.pageNum"
-        v-model:limit="state.queryParams.pageSize"
-        @pagination="getList"
-      />
-    </el-dialog>
-  </div>
-</template>
-<script setup>
-import {reactive, ref, toRefs} from 'vue'
-import {ElMessage} from "element-plus";
-
-import {
-  getClassification
-} from "@/api/onlineEducation/courseClass";
-import {addCourse, checkCourseName, editCourse, getCourseById} from "@/api/onlineEducation/courseManage";
-import {getToken} from "@/utils/auth";
-import {delPic, getBannerById} from "@/api/onlineEducation/banner";
-import Cookies from "js-cookie";
-import {addQuestionBank, checkQuestionBankName, editQuestionBank} from "@/api/onlineEducation/questionBank";
-import {getBatch, getCompanyPeriod} from "@/api/onlineEducation/batch";
-
-const dialogVisible = ref(false);
-const title = ref("");
-const busRef = ref();
-const length = ref()
-const emit = defineEmits(["getList"]);
-const startUsername = ref('');
-const classifyRef = ref(null)
-
-const state = reactive({
-  loading: false,
-  dataList: [],
-  queryParams: {
-    pageNum: 1,
-    pageSize: 10,
-    companyId: null
-  },
-  total: 0,
-  title: ''
-})
-
-const openDialog = async (value) => {
-  state.title = '课时余量变动明细'
-  dialogVisible.value = true;
-  state.queryParams.companyId = value
-  await getList()
-}
-const getList = async () => {
-  state.loading = true
-  const res = await getCompanyPeriod(state.queryParams)
-  if(res.code == 200){
-    state.dataList = res.data.list.map(item => {
-      return {
-        ...item,
-        modifyPeriodMin: item.modifyPeriod ? item.modifyPeriod >0 ?'新增 '+(item.modifyPeriod /60).toFixed(2).replace(/\.00$/, '')+'分钟':'减少 '+ (Math.abs(item.modifyPeriod /60)).toFixed(2).replace(/\.00$/, '')+'分钟'  : '',
-        remainPeriodMin: item.remainPeriod ? (item.remainPeriod  /60).toFixed(2).replace(/\.00$/, '')+'分钟' : ''
-      }
-    })
-    state.total = res.data.total
-  }else{
-    ElMessage.warning(res.message)
-  }
-  state.loading = false
-}
-
-const handleClose = () => {
-  dialogVisible.value = false;
-  emit("getList")
-
-}
-
-defineExpose({
-  openDialog
-});
-
-</script>
-
-<style scoped lang="scss">
-.notice{
-  :deep(.el-form .el-form-item__label) {
-    font-size: 15px;
-  }
-  .file {
-    display: flex;
-    flex-direction: column;
-    align-items: flex-start;
-  }
-}
-</style>
diff --git a/src/views/onlineEducation/classHourBatch/components/handleStudent.vue b/src/views/onlineEducation/classHourBatch/components/handleStudent.vue
deleted file mode 100644
index a27a75e..0000000
--- a/src/views/onlineEducation/classHourBatch/components/handleStudent.vue
+++ /dev/null
@@ -1,227 +0,0 @@
-<template>
-  <div class="app-container">
-    <div style="display: flex;justify-content: space-between">
-      <el-form :inline="true" style="display: flex;align-items: center;flex-wrap: wrap;" >
-        <el-form-item>
-          <el-button
-              type="primary"
-              plain
-              icon="Plus"
-              @click="openDialog()"
-          >选择学员</el-button>
-        </el-form-item>
-        <el-form-item label="学生姓名:" >
-          <el-input v-model="data.queryParams.studentName" placeholder="请输入学生姓名"></el-input>
-        </el-form-item>
-        <el-form-item >
-          <el-button
-              type="primary"
-              @click="getList"
-          >查询</el-button>
-          <el-button
-              type="primary"
-              plain
-              @click="reset"
-          >重置</el-button>
-        </el-form-item>
-      </el-form>
-      <div>
-        <el-button
-            type="danger"
-            plain
-            icon="Delete"
-            @click="handleDeleteBatch"
-        >批量删除</el-button>
-        <el-button
-            type="primary"
-            plain
-            @click="back"
-        >返回</el-button>
-      </div>
-
-    </div>
-    <!-- 表格数据 -->
-    <el-table ref="tableRef" v-loading="loading" :data="dataList" :border="true" :row-key="getRowKey"  @selection-change="handleSelectionChange">
-      <el-table-column type="selection" :reserve-selection="true" width="55" align="center" />
-      <el-table-column label="序号" type="index" align="center" width="80" />
-      <el-table-column label="批次名称" prop="phaseName" align="center"  />
-      <el-table-column label="学员名称" prop="studentName" align="center"  />
-      <el-table-column label="手机号" prop="studentPhone" align="center"  />
-      <el-table-column label="总进度" prop="totalProgress" align="center" >
-        <template #default="scope">
-          <el-progress
-              v-if="scope.row.totalProgress>=0"
-              :text-inside="true"
-              :stroke-width="24"
-              :percentage="scope.row.totalProgress"
-              :status="scope.row.totalProgress <= 50 ? 'exception' : scope.row.totalProgress > 50 && scope.row.totalProgress <= 80 ? 'warning':'success'"
-          />
-        </template>
-      </el-table-column>
-      <el-table-column label="开始学习时间" prop="startTime" align="center"  />
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width"  width="180">
-        <template #default="scope">
-          <el-button link type="danger" @click="handleDelete(scope.row)">删除</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-
-    <pagination
-        v-show="total > 0"
-        :total="total"
-        v-model:page="queryParams.pageNum"
-        v-model:limit="queryParams.pageSize"
-        @pagination="getList"
-    />
-
-    <choose-stu-dialog ref="dialogRef" @getList=getList></choose-stu-dialog>
-  </div>
-</template>
-
-<script setup>
-import {getCurrentInstance, onMounted, onUnmounted, reactive, ref, toRefs} from "vue";
-import {ElMessage, ElMessageBox} from "element-plus";
-import chooseStuDialog from './chooseStudent.vue'
-import Cookies from "js-cookie";
-import {delQuestionBank, getQuestionBank} from "@/api/onlineEducation/questionBank";
-import {batchDelStudent, delBatchStu, getBatchStudent} from "@/api/onlineEducation/batch";
-import {useRoute, useRouter} from 'vue-router'
-const route = useRoute()
-
-
-const { proxy } = getCurrentInstance();
-const loading = ref(false);
-const dialogRef = ref();
-const tableRef = ref();
-const router = useRouter();
-const data = reactive({
-  queryParams: {
-    pageId: null,
-    phaseId: null,
-    pageNum: 1,
-    pageSize: 10,
-    studentName: ''
-  },
-  total: 0,
-  dataList: [],
-  isAdmin: false,
-  chooseStu: []
-
-});
-
-const { queryParams, total, dataList } = toRefs(data);
-
-const backValue = ref()
-onMounted(async ()=>{
-  const userInfo = JSON.parse(Cookies.get('userInfo'))
-  console.log("userInfo",userInfo)
-  if(userInfo.userType === 0){
-    data.isAdmin = true;
-  }else {
-    data.isAdmin = false;
-  }
-  const val = JSON.parse(route.query.val)
-  backValue.value = val
-  // data.queryParams.pageId = val.id
-  data.queryParams.phaseId = val.id
-  await getList()
-})
-onUnmounted(()=>{
-
-})
-
-const getRowKey = (row) => {
-  return row.id
-}
-const getList = async () => {
-  loading.value = true
-  const res = await getBatchStudent(data.queryParams)
-  if(res.code == 200){
-    data.dataList = res.data.list
-    data.total = res.data.total
-  }else{
-    ElMessage.warning(res.message)
-  }
-  loading.value = false
-}
-
-const openDialog = () => {
-  dialogRef.value.openDialog(data);
-}
-
-/** 重置新增的表单以及其他数据  */
-function reset() {
-  data.queryParams = {
-    pageNum: 1,
-    pageSize: 10,
-    studentName: '',
-    phaseId: data.queryParams.phaseId,
-    pageId: data.queryParams.pageId
-  }
-
-  getList()
-}
-const handleSelectionChange = (val) => {
-
-  console.log("选中的行", val)
-  data.chooseStu = val.map(item => item.id)
-}
-const handleDelete = (val) => {
-  ElMessageBox.confirm(
-      '确定删除此条数据?',
-      '提示',
-      {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning',
-      })
-      .then( async() => {
-        const res = await delBatchStu(val.id)
-        if(res.code == 200){
-          ElMessage.success('数据删除成功')
-          await getList()
-          tableRef.value.clearSelection();
-        }else{
-          ElMessage.warning(res.message)
-        }
-      })
-}
-const handleDeleteBatch = () => {
-  if(data.chooseStu && data.chooseStu.length <=0){
-    ElMessage.warning('请选择要删除的学员');
-    return false;
-  }
-  ElMessageBox.confirm(
-      '确定删除选择的所有数据?',
-      '提示',
-      {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning',
-      })
-      .then( async() => {
-        // const param = {
-        //   phaseStudentIds: data.chooseStu
-        // }
-        const res = await batchDelStudent(data.chooseStu)
-        if(res.code == 200){
-          ElMessage.success('数据删除成功')
-          tableRef.value.clearSelection();
-          await getList()
-        }else{
-          ElMessage.warning(res.message)
-        }
-      })
-}
-const back = () => {
-
-  const obj = {
-    pageNum: backValue.value.pageNum,
-    pageSize: backValue.value.pageSize,
-  }
-  const v = JSON.stringify(obj)
-  router.push({ path: "/class", query: { val: v } });
-}
-
-
-</script>
diff --git a/src/views/onlineEducation/classHourBatch/index.vue b/src/views/onlineEducation/classHourBatch/index.vue
deleted file mode 100644
index d264e80..0000000
--- a/src/views/onlineEducation/classHourBatch/index.vue
+++ /dev/null
@@ -1,224 +0,0 @@
-<template>
-  <div class="app-container">
-    <div style="display: flex;justify-content: space-between">
-      <el-form :inline="true" style="display: flex;align-items: center;flex-wrap: wrap;" >
-        <el-form-item>
-          <el-button
-              type="primary"
-              plain
-              icon="Plus"
-              @click="openDialog('add',{})"
-          >新增批次</el-button>
-        </el-form-item>
-        <el-form-item label="批次名称:" >
-          <el-input v-model="data.queryParams.name" placeholder="请输入批次名称"></el-input>
-        </el-form-item>
-        <el-form-item label="批次级别:" >
-          <el-select
-              v-model="data.queryParams.level"
-              class="w100"
-              style="max-width: 180px"
-              clearable
-              size="default"
-          >
-            <el-option v-for="item in data.levelList" :key="item.id" :label="item.name" :value="item.id"></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item >
-          <el-button
-              type="primary"
-              @click="getList"
-          >查询</el-button>
-          <el-button
-              type="primary"
-              plain
-              @click="reset"
-          >重置</el-button>
-        </el-form-item>
-      </el-form>
-      <span v-if="!data.isAdmin" style="font-size: 19px;font-weight: 600;margin-right: 20px">
-        {{data.companyName}},您的企业当前系统可用课时总计
-        <span style="font-size: 19px;font-weight: 600;color: #1ab394">{{data.remainPeriod}}</span> 分钟。<span @click="openDetail" style="cursor: pointer; font-size: 19px;font-weight: 600;color: #1890ff">[明细]</span>
-      </span>
-    </div>
-    <!-- 表格数据 -->
-    <el-table v-loading="loading" :data="dataList" :border="true">
-      <el-table-column label="批次编号" prop="code" align="center" width="135" />
-      <el-table-column label="创建时间" prop="createTime" align="center"  width="120" />
-      <el-table-column label="批次名称" prop="name" align="center"  />
-      <el-table-column label="创建企业" prop="companyName" align="center"  />
-      <el-table-column label="批次级别" prop="level" align="center"  >
-        <template #default="scope">
-          <span>{{scope.row.level === 1 ? '公司级' : scope.row.level === 2 ? '部门级' : scope.row.level === 3 ? '车间级' : '其他'  }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="课程" prop="courseName" align="center"  />
-      <el-table-column label="学习人数" prop="studentCount" align="center"  />
-      <el-table-column label="总课时" prop="coursePeriodNum" align="center"  />
-      <el-table-column label="已完成人数" prop="finishCount" align="center"  />
-      <el-table-column label="完成率" prop="finishRate" align="center"  />
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width"  width="180">
-        <template #default="scope">
-          <el-button link type="primary" @click="toStuChoose(scope.row)">学生数据</el-button>
-          <el-button link type="primary" @click="openDialog('edit',scope.row)">编辑</el-button>
-          <el-button link type="danger" @click="handleDelete(scope.row)">删除</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-
-    <pagination
-        v-show="total > 0"
-        :total="total"
-        v-model:page="queryParams.pageNum"
-        v-model:limit="queryParams.pageSize"
-        @pagination="getList"
-    />
-    <batch-dialog ref="dialogRef" @getList=getList></batch-dialog>
-    <class-hour-change ref="classHourRef" @getList=getList></class-hour-change>
-  </div>
-</template>
-
-<script setup>
-import {getCurrentInstance, onMounted, onUnmounted, reactive, ref, toRefs} from "vue";
-import {ElMessage, ElMessageBox} from "element-plus";
-import batchDialog from './components/batchDialog.vue'
-import classHourChange from './components/classHourChange.vue'
-import Cookies from "js-cookie";
-import {useRoute, useRouter} from 'vue-router'
-const router = useRouter()
-import {delQuestionBank, getQuestionBank} from "@/api/onlineEducation/questionBank";
-import {delBatch, getBatch} from "@/api/onlineEducation/batch";
-const route = useRoute()
-
-const { proxy } = getCurrentInstance();
-const loading = ref(false);
-const dialogRef = ref();
-const classHourRef = ref();
-const data = reactive({
-  queryParams: {
-    name: '',
-    level: null,
-    pageNum: 1,
-    pageSize: 10,
-  },
-  total: 0,
-  dataList: [],
-  isAdmin: false,
-  companyName: '',
-  remainPeriod: null,
-  companyId: null,
-  levelList: [
-    {
-      id: 1,
-      name: '公司级 '
-    },
-    {
-      id: 2,
-      name: '部门级'
-    },
-    {
-      id: 3,
-      name: '车间级'
-    },
-    {
-      id: 4,
-      name: '其他'
-    },
-  ],
-
-});
-
-const { queryParams, total, dataList } = toRefs(data);
-
-onMounted(async ()=>{
-  if(route.query.val){
-    const val = JSON.parse(route.query.val)
-    if(val){
-      data.queryParams.pageNum = val.pageNum;
-      data.queryParams.pageSize = val.pageSize;
-    }
-  }
-
-  const userInfo = JSON.parse(Cookies.get('userInfo'))
-  console.log("userInfo",userInfo)
-  if(userInfo.userType === 0){
-    data.isAdmin = true;
-  }else {
-    data.remainPeriod = userInfo.remainPeriod ? (userInfo.remainPeriod /60).toFixed(2).replace(/\.00$/, ''):''
-    data.isAdmin = false;
-    data.companyName = userInfo.companyName
-    data.companyId = userInfo.companyId
-  }
-  await getList()
-})
-onUnmounted(()=>{
-
-})
-
-const getList = async () => {
-  loading.value = true
-  const res = await getBatch(data.queryParams)
-  if(res.code == 200){
-    data.dataList = res.data.list.map(item => {
-      return {
-        ...item,
-        coursePeriodNum: item.coursePeriod ? (item.coursePeriod /60).toFixed(2).replace(/\.00$/, '') + '分钟':'',
-        finishRate: item.finishCount ?  item.finishCount ===0 && item.studentCount ===0  ? '0%': (item.finishCount / item.studentCount).toFixed(2) *100 + '%' : ''
-      }
-    })
-    data.total = res.data.total
-  }else{
-    ElMessage.warning(res.message)
-  }
-  loading.value = false
-}
-
-const openDialog = (type, value) => {
-  dialogRef.value.openDialog(type, value);
-}
-
-/** 重置新增的表单以及其他数据  */
-function reset() {
-  data.queryParams = {
-    name: '',
-    level: null,
-    pageNum: 1,
-    pageSize: 10,
-  }
-  getList()
-}
-const handleDelete = (val) => {
-  ElMessageBox.confirm(
-      '确定删除此条数据?',
-      '提示',
-      {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning',
-      })
-      .then( async() => {
-        const res = await delBatch(val.id)
-        if(res.code == 200){
-          ElMessage.success('数据删除成功')
-          await getList()
-        }else{
-          ElMessage.warning(res.message)
-        }
-      })
-}
-const toStuChoose = (val) => {
-  const obj = {
-    pageNum: data.queryParams.pageNum,
-    pageSize: data.queryParams.pageSize,
-    id: val.id
-  }
-  // val.pageNum = data.queryParams.pageNum;
-  // val.pageSize = data.queryParams.pageSize
-  const v = JSON.stringify(obj)
-  router.push({ path: "/chooseStu", query: { val: v } });
-}
-
-const openDetail = () => {
-  classHourRef.value.openDialog(data.companyId)
-}
-</script>
diff --git a/src/views/onlineEducation/count/index.vue b/src/views/onlineEducation/count/index.vue
deleted file mode 100644
index 8dd1a9e..0000000
--- a/src/views/onlineEducation/count/index.vue
+++ /dev/null
@@ -1,232 +0,0 @@
-<template>
-  <div class="app-container">
-    <div>
-      <el-form style="display: flex;flex-wrap: wrap">
-        <el-form-item label="企业:" v-if="state.isAdmin">
-          <el-select
-              v-model="state.queryParams.companyName"
-              filterable
-              remote
-              @change="selectValue"
-              reserve-keyword
-              placeholder="请输入企业名称"
-              remote-show-suffix
-              :remote-method="getCompanyList"
-              :loading="loadingCompany"
-              style="width: 240px"
-          >
-            <el-option
-                v-for="item in state.companyList"
-                :key="item.id"
-                :label="item.name"
-                :value="item.name"
-            />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="时间范围:" style="margin-left: 20px">
-          <el-date-picker
-              v-model="searchTime"
-              type="daterange"
-              @change="changeTime"
-              range-separator="至"
-              start-placeholder="开始日期"
-              end-placeholder="结束日期"
-              format="YYYY-MM-DD"
-          />
-        </el-form-item>
-        <el-form-item  style="margin-left: 50px">
-          <el-radio-group v-model="state.queryParams.type">
-            <el-radio :label="1">线上教育</el-radio>
-            <el-radio :label="2">线下教育</el-radio>
-<!--            <el-radio :label="null">全部</el-radio>-->
-          </el-radio-group>
-        </el-form-item>
-        <el-form-item>
-          <el-button type="primary" style="margin-left: 30px" @click="searchClick">查询</el-button>
-          <el-button plain @click="reset">重置</el-button>
-        </el-form-item>
-
-      </el-form>
-    </div>
-    <!-- 表格数据 -->
-    <el-table v-loading="loading" :data="state.dataList" :border="true" row-key="id">
-      <el-table-column label="序号" type="index" align="center" width="80" />
-      <el-table-column label="企业名称" prop="companyName" align="center" />
-      <el-table-column label="企业编号" prop="companyCode" align="center" />
-      <el-table-column label="总批次/人数" prop="sort" align="center"  >
-        <template #default="scope">
-          <span>{{scope.row.phaseStudentCount && scope.row.phaseCount ? scope.row.phaseCount + '/' +scope.row.phaseStudentCount:''}}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="三级" prop="sort" align="center" >
-        <template #default="scope">
-          <span>{{scope.row.level3StudentCount && scope.row.level3PhaseCount ? scope.row.level3PhaseCount+ '/' +scope.row.level3StudentCount:''}}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="二级" prop="sort" align="center" >
-        <template #default="scope">
-          <span>{{scope.row.level2StudentCount && scope.row.level2PhaseCount ? scope.row.level2PhaseCount+ '/' +scope.row.level2StudentCount:''}}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="一级" prop="sort" align="center"  >
-        <template #default="scope">
-          <span>{{scope.row.level1StudentCount && scope.row.level1PhaseCount ? scope.row.level1PhaseCount+ '/' +scope.row.level1StudentCount:''}}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="考试人次" prop="paperStudentCount" align="center"  />
-      <el-table-column label="合格人次" prop="passStudentCount" align="center"  />
-      <el-table-column label="合格率" prop="passRate" align="center"  />
-    </el-table>
-    <pagination
-        v-show="state.total > 0"
-        :total="state.total"
-        v-model:page="state.queryParams.pageNum"
-        v-model:limit="state.queryParams.pageSize"
-        @pagination="getList"
-    />
-
-  </div>
-</template>
-
-<script setup>
-import {getCurrentInstance, onMounted, reactive, ref, toRefs} from "vue";
-import {ElMessage, ElMessageBox} from "element-plus";
-import moment from "moment";
-
-import {delClassification, getClassification} from "@/api/onlineEducation/courseClass";
-import {getCompany} from "@/api/onlineEducation/company";
-import {getCompanyCount} from "@/api/onlineEducation/count";
-import Cookies from "js-cookie";
-const { proxy } = getCurrentInstance();
-const loading = ref(false);
-const areaRef = ref();
-const searchTime = ref([]);
-const state = reactive({
-  queryParams: {
-    companyId: '',
-    type: null,
-    endTime: '',
-    startTime: '',
-    pageNum: 1,
-    pageSize: 10,
-  },
-  total: 0,
-  dataList: [
-  ],
-  companyList: [],
-  pageNum: 1,
-  pageSize: 10,
-  isAdmin: false
-});
-
-//页面加载
-onMounted(() => {
-  setDate();
-  const userInfo = JSON.parse(Cookies.get('userInfo'))
-  console.log("userInfo",userInfo)
-  state.isAdmin = userInfo.userType === 0;
-  // if(state.isAdmin){
-  //   getCompanyList();
-  // }
-
-  getList();
-
-});
-const getList = async () => {
-  loading.value = true;
-  const res = await getCompanyCount(state.queryParams);
-  if(res.code === 200){
-    state.dataList = res.data.list.map(item => {
-      return {
-        ...item,
-        passRate: item.passStudentCount  && item.paperStudentCount ? (item.passStudentCount / item.paperStudentCount).toFixed(2) *100 + '%': item.passStudentCount == 0  && item.paperStudentCount == 0? '0%': ''
-
-      }
-    })
-    state.total = res.data.total
-  }else{
-    ElMessage.warning(res.message)
-  }
-  loading.value = false;
-}
-const selectValue = (val) => {
-  state.companyList.forEach(item => {
-    if(item.name === val){
-      state.queryParams.companyId = item.id
-    }
-  })
-}
-
-const finshed = ref(false)
-const loadingCompany = ref(false)
-const getCompanyList = async (val)=>{
-  if(val != ""){
-    loadingCompany.value = true;
-    const queryParams = {
-      name: val
-    }
-    const res = await getCompany(queryParams)
-    if (res.code == 200) {
-      loadingCompany.value = false;
-      state.companyList = res.data.list
-
-    } else {
-      ElMessage.warning(res.message)
-    }
-  }
-}
-//触底函数
-// const loadMore = () => {
-//   console.log(' 触底了');
-//   // 防抖处理
-//   setTimeout(() => {
-//     if (finshed.value) return //值为true,则代表没有数据了
-//     state.pageNum += 1
-//     // getCompanyList('')
-//   }, 500)
-// }
-const setDate = () => {
-
-  const end = new Date();
-  const start = new Date();
-  start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
-  const sTime = moment(start).format('YYYY-MM-DD')
-  const eTime = moment(end).format('YYYY-MM-DD')
-  searchTime.value = [sTime,eTime];
-  state.queryParams.startTime = searchTime.value[0]+' 00:00:00'
-  state.queryParams.endTime = searchTime.value[1]+' 00:00:00'
-}
-const changeTime=(value)=>{
-  console.log('11',searchTime.value)
-  if(!value){
-    state.queryParams.endTime = ""
-    state.queryParams.startTime = ""
-  }
-  searchTime.value[0]=moment(searchTime.value[0]).format('YYYY-MM-DD')
-  searchTime.value[1]=moment(searchTime.value[1]).format('YYYY-MM-DD')
-}
-const searchClick = () => {
-  if(searchTime.value && searchTime.value.length>0){
-    state.queryParams.startTime = searchTime.value[0] + ' 00:00:00'
-    state.queryParams.endTime = searchTime.value[1] + ' 00:00:00'
-  }
-  getList();
-}
-
-/** 重置新增的表单以及其他数据  */
-function reset() {
-  state.queryParams = {
-    companyId: '',
-    type: null,
-    endTime: '',
-    startTime: '',
-    pageNum: 1,
-    pageSize: 10,
-  }
-  searchTime.value = [];
-  state.companyList = [];
-  getList();
-}
-
-
-</script>
diff --git a/src/views/onlineEducation/courseManage/components/courseManageDialog.vue b/src/views/onlineEducation/courseManage/components/courseManageDialog.vue
deleted file mode 100644
index 7725903..0000000
--- a/src/views/onlineEducation/courseManage/components/courseManageDialog.vue
+++ /dev/null
@@ -1,328 +0,0 @@
-<template>
-  <div class="notice">
-    <el-dialog
-        v-model="dialogVisible"
-        :title="title"
-        width="500px"
-        :before-close="handleClose"
-        :close-on-press-escape="false"
-        :close-on-click-modal="false"
-    >
-      <el-form :model="state.form" size="default" ref="busRef" :rules="state.formRules" label-width="150px" >
-        <el-form-item label="课程名称:" prop="name">
-          <el-input v-model.trim="state.form.name" placeholder="请输入课程名称"></el-input>
-        </el-form-item>
-        <el-form-item label="课程分类:" prop="categoryId" >
-<!--          <el-select clearable v-model="state.form.categoryId" style="width: 100%" placeholder="请选择课程分类" @change="changeType">-->
-<!--            <el-option v-for="item in state.classifyList" :key="item" :label="item.name" :value="item.id" />-->
-<!--          </el-select>-->
-          <el-cascader
-              ref="classifyRef"
-              style="width: 100%"
-              v-model="state.form.categoryId"
-              :options="state.classifyList"
-              :props="state.props"
-              clearable
-              :show-all-levels="false"
-              @change="handleChange"
-          />
-        </el-form-item>
-<!--        <el-form-item label="要求课时:" prop="period">-->
-<!--          <el-input v-model="state.form.period" placeholder="请输入要求课时">-->
-<!--            <template #append>分钟</template>-->
-<!--          </el-input>-->
-<!--        </el-form-item>-->
-        <el-form-item label="提交单位:" prop="companyName" >
-          <el-input v-model="state.form.companyName" disabled/>
-        </el-form-item>
-        <el-form-item label="封面:">
-          <el-upload accept="image/*" :action="state.uploadUrl" :headers="state.header" method="post" :on-success="(res, uploadFile)=>handleAvatarSuccess(res, uploadFile)" :on-exceed="showTip" :limit='state.imgLimit' v-model:file-list="state.imgList" list-type="picture-card" :before-upload="picSize" :on-remove="(file, uploadFiles)=>handleRemove(file, uploadFiles)" >
-            <el-icon><Plus /></el-icon>
-            <template #tip>
-              <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传1张</div>
-            </template>
-          </el-upload>
-        </el-form-item>
-      </el-form>
-      <template #footer>
-        <span class="dialog-footer">
-            <el-button @click="handleClose" size="default">取 消</el-button>
-            <el-button type="primary"  @click="onSubmit" size="default" v-preReClick>确认</el-button>
-        </span>
-      </template>
-    </el-dialog>
-  </div>
-</template>
-<script setup>
-import {reactive, ref, toRefs} from 'vue'
-import Editor from "@/components/Editor/index.vue";
-import {ElMessage} from "element-plus";
-import {addNotice} from "@/api/backManage/notice";
-import {addDict, editDict, getDictDetail} from "@/api/backManage/evaluate";
-import {addCompany, checkName, distributeCompany, editCompany} from "@/api/onlineEducation/company";
-import {verifyPhone} from "@/utils/validate";
-import {
-  addClassification,
-  checkClassName,
-  editClassification,
-  getClassification
-} from "@/api/onlineEducation/courseClass";
-import {addCourse, checkCourseName, editCourse, getCourseById} from "@/api/onlineEducation/courseManage";
-import {getToken} from "@/utils/auth";
-import {delPic, getBannerById} from "@/api/onlineEducation/banner";
-import Cookies from "js-cookie";
-
-const dialogVisible = ref(false);
-const title = ref("");
-const busRef = ref();
-const length = ref()
-const emit = defineEmits(["getList"]);
-const startUsername = ref('');
-const classifyRef = ref(null)
-
-const validateName = (rule, value, callback)=>{
-  if(value === ''){
-    callback(new Error('请输入课程名称'))
-  }else if(title.value === '编辑' && value === startUsername.value){
-    callback()
-  }else{
-    let param = {}
-    if(title.value === '新增') {
-      param = {
-        name:value
-      }
-    }else if(title.value === '编辑'){
-      param = {
-        name:value,
-        id: state.form.id
-      }
-    }
-    checkCourseName(param).then((res)=>{
-      if(res.data == false){
-        callback(new Error('课程名称已被占用,请更换其他名称'))
-      }else{
-        callback()
-      }
-    })
-  }
-}
-const state = reactive({
-  form: {
-    id: '',
-    name: '',
-    categoryId: null,
-    period: null,
-    logo: '',
-    companyId: null
-  },
-  formRules: {
-    name: [{required: true, trigger: "blur", validator: validateName}],
-    categoryId: [{required: true, message: '请选择课程分类', trigger: 'blur'}],
-    period: [{required: true, message: '请输入要求课时', trigger: 'blur'}],
-  },
-  classifyList: [],
-  uploadUrl: import.meta.env.VITE_APP_BASE_API + '/system/common/uploadFile',
-  header: {
-    Authorization: getToken()
-  },
-  imgLimit: 1,
-  imgList: [],
-  isAdmin: false,
-  props: {
-    checkStrictly: true,
-  }
-})
-
-const openDialog = async (type, value) => {
-  await getClassifyList();
-  const userInfo = JSON.parse(Cookies.get('userInfo'))
-  console.log("userInfo",userInfo)
-  if(userInfo.userType === 0){
-    state.isAdmin = true;
-    state.form.companyName = '公开课'
-    state.form.companyId = null
-  }else {
-    state.isAdmin = false;
-    state.form.companyName = userInfo.companyName
-    state.form.companyId = userInfo.companyId
-  }
-  title.value = type === 'addFirst' || type === 'add' ? '新增' : type ==='edit' ? '编辑' : '' ;
-  if(type === 'edit') {
-    const res = await getCourseById(value.id);
-    if(res.code === 200){
-      state.form = res.data
-      state.form.companyName = res.data.companyName ? res.data.companyName : '公开课'
-      console.log("11",res.data)
-      if(res.data.logo) {
-        const obj = {
-          url: import.meta.env.VITE_APP_BASE_API + "/" +  res.data.logo,
-          name: ''
-        }
-        state.imgList = [obj]
-      }
-    }else{
-      ElMessage.warning(res.message)
-    }
-    startUsername.value = value.username;
-  }else if(type === 'add' && value ){
-    state.form.parentId = value.id
-  }
-  dialogVisible.value = true;
-}
-const  getClassifyList = async () => {
-  const res = await getClassification();
-  if(res.code === 200){
-    state.classifyList = recursion(res.data)
-  }else{
-    ElMessage.warning(res.message)
-  }
-}
-const recursion = (data) => {
-  let tmp = []
-  for (let i = 0; i < data.length; i++) {
-    let item = data[i]
-    // children为空
-    if (item.children&& item.children.length==0) {
-      tmp.push({
-        value: item.id,
-        label: item.name
-      })
-      // 有children
-    } else {
-      tmp.push({
-        value: item.id,
-        label: item.name,
-        children:recursion(item.children)
-      })
-    }
-  }
-  return tmp;
-}
-const handleAvatarSuccess = (res, uploadFile) => {
-  if(res.code == 200){
-    state.form.logo = res.data.path
-  }else{
-    state.imgList = []
-    ElMessage({
-      type: 'warning',
-      message: '文件上传失败'
-    })
-  }
-}
-const handleChange = ()=> {
-  console.log("label====",classifyRef.value.getCheckedNodes()[0].value)
-  state.form.categoryId = classifyRef.value.getCheckedNodes()[0].value
-  // 我这里只是打印了一下label的值哦,需要赋值的话自己去赋值哦
-  if (classifyRef.value.popperVisible) {
-    classifyRef.value.togglePopperVisible()
-  }
-}
-
-
-const showTip =()=>{
-  ElMessage({
-    type: 'warning',
-    message: '超出文件上传数量'
-  });
-}
-const picSize = async (rawFile) => {
-  if(rawFile.size / 1024 / 1024 > 5){
-    ElMessage({
-      type: 'warning',
-      message: '文件大小不能超过5M'
-    });
-    return false
-  }
-};
-const handleRemove = async (file, uploadFiles) => {
-  let path = state.form.logo;
-  await delPic({path: path}).then(res => {
-    if(res.code == 200){
-      // ElMessage({
-      //   type: 'success',
-      //   message: '文件已删除'
-      // })
-      state.form.logo = ''
-    }else{
-      ElMessage({
-        type: 'warning',
-        message: res.message
-      })
-    }
-  }).catch(() => {
-    state.form.imgUrl = ''
-  });
-}
-const onSubmit = async () => {
-  const valid = await busRef.value.validate();
-  if(valid){
-    if(title.value === '新增'){
-      const {id, ...data} = JSON.parse(JSON.stringify(state.form))
-      const res = await addCourse(data)
-      if(res.code === 200){
-        ElMessage({
-          type: 'success',
-          message: '新增成功'
-        });
-      }else{
-        ElMessage.warning(res.message)
-      }
-      emit("getList")
-      busRef.value.clearValidate();
-      reset();
-      dialogVisible.value = false;
-    }else if(title.value === '编辑'){
-      const {...data} = JSON.parse(JSON.stringify(state.form))
-      const res = await editCourse(data)
-      if(res.code === 200){
-        ElMessage({
-          type: 'success',
-          message: '编辑成功'
-        });
-      }else{
-        ElMessage.warning(res.message)
-      }
-      emit("getList")
-      busRef.value.clearValidate();
-      reset();
-      dialogVisible.value = false;
-    }
-  }
-}
-
-const handleClose = () => {
-  busRef.value.clearValidate();
-  reset();
-  dialogVisible.value = false;
-  emit("getList")
-
-}
-const reset = () => {
-  state.form = {
-    id: '',
-    name: '',
-    categoryId: null,
-    period: null,
-    logo: '',
-    companyId: null
-  }
-  state.imgList = []
-}
-defineExpose({
-  openDialog
-});
-
-</script>
-
-<style scoped lang="scss">
-.notice{
-  :deep(.el-form .el-form-item__label) {
-    font-size: 15px;
-  }
-  .file {
-    display: flex;
-    flex-direction: column;
-    align-items: flex-start;
-  }
-}
-</style>
diff --git a/src/views/onlineEducation/courseManage/courseChapters/components/chapterDialog.vue b/src/views/onlineEducation/courseManage/courseChapters/components/chapterDialog.vue
deleted file mode 100644
index ae5c0f5..0000000
--- a/src/views/onlineEducation/courseManage/courseChapters/components/chapterDialog.vue
+++ /dev/null
@@ -1,253 +0,0 @@
-<template>
-  <div class="notice">
-    <el-dialog
-        v-model="dialogVisible"
-        :title="title"
-        width="550px"
-        :before-close="handleClose"
-        :close-on-press-escape="false"
-        :close-on-click-modal="false"
-    >
-      <el-form :model="state.form" size="default" ref="busRef" :rules="state.formRules" label-width="100px" >
-        <el-form-item label="章名称:" prop="name">
-          <el-input v-model.trim="state.form.name" maxlength="100" show-word-limit :disabled="!state.isFirst"></el-input>
-        </el-form-item>
-        <el-form-item label="节名称:" prop="chapter.name" v-if="!state.isFirst">
-          <el-input v-model.trim="state.chapter.name"></el-input>
-        </el-form-item>
-        <el-form-item label="资源:" v-if="!state.isFirst">
-          <div style="display: flex;align-items: center; width: 100%;justify-content: space-between;">
-            <el-input v-model.trim="state.chapter.resourceName" disabled style="width: 80%"></el-input>
-            <el-button type="primary" style="margin-left: 20px" plain size="default" @click="openResource">选择资源</el-button>
-          </div>
-
-        </el-form-item>
-
-        <el-form-item label="排序:" prop="sort" >
-          <el-input-number v-model="state.form.sort" />
-        </el-form-item>
-      </el-form>
-      <template #footer>
-        <span class="dialog-footer">
-            <el-button @click="handleClose" size="default">取 消</el-button>
-            <el-button type="primary"  @click="onSubmit" size="default" v-preReClick>确认</el-button>
-        </span>
-      </template>
-    </el-dialog>
-    <courseDialog ref="courseRef" @choose-res="choosedResource" ></courseDialog>
-  </div>
-</template>
-<script setup>
-import {reactive, ref, toRefs} from 'vue'
-import Editor from "@/components/Editor/index.vue";
-import {ElMessage} from "element-plus";
-import {addNotice} from "@/api/backManage/notice";
-import {addDict, editDict, getDictDetail} from "@/api/backManage/evaluate";
-import {addCompany, checkName, distributeCompany, editCompany} from "@/api/onlineEducation/company";
-import {verifyPhone} from "@/utils/validate";
-import {addClassification, checkClassName, editClassification} from "@/api/onlineEducation/courseClass";
-import courseDialog from './chooseResource.vue'
-import {
-  addChapter,
-  addChapterPeriod,
-  checkChapterName,
-  editChapter,
-  editChapterPeriod
-} from "@/api/onlineEducation/chapters";
-
-const dialogVisible = ref(false);
-const title = ref("");
-const busRef = ref();
-const courseRef = ref()
-const length = ref()
-const emit = defineEmits(["getList"]);
-const startUsername = ref('');
-const startUsernamePeriod = ref('');
-
-
-const validateName = (rule, value, callback)=>{
-  if(value === ''){
-    callback(new Error('请输入章名称'))
-  }else if(title.value === '编辑' && value === startUsername.value || title.value === '新增' && value === startUsername.value){
-    callback()
-  }else{
-    let param = {}
-    if(title.value === '新增') {
-      param = {
-        name:value,
-        courseId: state.form.courseId
-      }
-    }else if(title.value === '编辑'){
-      param = {
-        name:value,
-        id: state.form.id,
-        courseId: state.form.courseId
-      }
-    }
-    checkChapterName(param).then((res)=>{
-      if(res.data == false){
-        callback(new Error('名称已被占用,请更换其他名称'))
-      }else{
-        callback()
-      }
-    })
-  }
-}
-const state = reactive({
-  form: {
-    id: '',
-    name: '',
-    sort: 0,
-    courseId: null,
-    chapterPeriods: []
-  },
-  formRules:{
-    name: [{ required: true, trigger: "blur", validator: validateName }],
-  },
-  isFirst: true,
-  chapter: {}
-})
-
-const openDialog = async (type, value) => {
-  length.value = value.listLength
-  state.form.courseId = value.courseId
-  title.value = type === 'addFirst' || type === 'add' ? '新增' : type ==='edit' ? '编辑' : '' ;
-  if(type === 'edit') {
-    if(!value.chapterId){
-      state.isFirst = true;
-      startUsername.value = value.name;
-      state.form = value;
-      state.form.sort = value.sort;
-    }else {
-      state.isFirst = false;
-      startUsernamePeriod.value = value.name;
-      state.chapter = value;
-      state.form.name = value.capterName;
-      startUsername.value = value.capterName;
-      state.chapter.resourceName = value.resource.name
-    }
-
-  }else if(type === 'add' && value ){
-    startUsername.value = value.name;
-    state.chapter.chapterId = value.id;
-    state.chapter.courseId = value.courseId;
-    state.form.name = value.name
-    state.isFirst = false;
-  }else {
-    state.isFirst = true;
-  }
-  dialogVisible.value = true;
-}
-const choosedResource = (val) => {
-  state.chapter.resourceName = val.name
-  state.chapter.resourceId = val.id
-}
-
-const onSubmit = async () => {
-  const valid = await busRef.value.validate();
-  if(valid){
-    if(title.value === '新增'){
-      if(state.chapter.chapterId){
-        const {id, ...data} = JSON.parse(JSON.stringify(state.chapter))
-        data.sort = state.form.sort
-        const res = await addChapterPeriod(data)
-        if(res.code === 200){
-          ElMessage({
-            type: 'success',
-            message: '新增成功'
-          });
-        }else{
-          ElMessage.warning(res.message)
-        }
-      }else{
-        const {id, ...data} = JSON.parse(JSON.stringify(state.form))
-        const res = await addChapter(data)
-        if(res.code === 200){
-          ElMessage({
-            type: 'success',
-            message: '新增成功'
-          });
-        }else{
-          ElMessage.warning(res.message)
-        }
-      }
-
-      emit("getList")
-      busRef.value.clearValidate();
-      reset();
-      dialogVisible.value = false;
-    }else if(title.value === '编辑'){
-      if(state.chapter.chapterId){
-        const {...data} = JSON.parse(JSON.stringify(state.chapter))
-        data.sort = state.form.sort
-        const res = await editChapterPeriod(data)
-        if(res.code === 200){
-          ElMessage({
-            type: 'success',
-            message: '编辑成功'
-          });
-        }else{
-          ElMessage.warning(res.message)
-        }
-        emit("getList")
-        busRef.value.clearValidate();
-        reset();
-        dialogVisible.value = false;
-      }else {
-        const {...data} = JSON.parse(JSON.stringify(state.form))
-        const res = await editChapter(data)
-        if(res.code === 200){
-          ElMessage({
-            type: 'success',
-            message: '编辑成功'
-          });
-        }else{
-          ElMessage.warning(res.message)
-        }
-        emit("getList")
-        busRef.value.clearValidate();
-        reset();
-        dialogVisible.value = false;
-      }
-
-    }
-  }
-}
-
-const handleClose = () => {
-  busRef.value.clearValidate();
-  reset();
-  dialogVisible.value = false;
-  emit("getList")
-}
-const openResource = () => {
-  courseRef.value.openDialog()
-}
-const reset = () => {
-  state.form = {
-    id: '',
-    name: '',
-    sort: 0,
-    courseId: null,
-    chapterPeriods: []
-  }
-  state.chapter={}
-}
-defineExpose({
-  openDialog
-});
-
-</script>
-
-<style scoped lang="scss">
-.notice{
-  :deep(.el-form .el-form-item__label) {
-    font-size: 15px;
-  }
-  .file {
-    display: flex;
-    flex-direction: column;
-    align-items: flex-start;
-  }
-}
-</style>
diff --git a/src/views/onlineEducation/courseManage/courseChapters/components/chooseResource.vue b/src/views/onlineEducation/courseManage/courseChapters/components/chooseResource.vue
deleted file mode 100644
index 3c1a371..0000000
--- a/src/views/onlineEducation/courseManage/courseChapters/components/chooseResource.vue
+++ /dev/null
@@ -1,133 +0,0 @@
-<template>
-  <div class="app-container">
-    <el-dialog
-        v-model="dialogVisible"
-        title="选择资源"
-        width="600px"
-        :before-close="handleClose"
-        :close-on-press-escape="false"
-        :close-on-click-modal="false"
-    >
-    <div style="margin-bottom: 10px">
-      <el-form>
-        <el-form-item label="资源名称">
-          <el-input style="width: 20%" v-model="data.queryParams.name "></el-input>
-          <el-button type="primary" style="margin-left: 30px" @click="getList">查询</el-button>
-          <el-button plain @click="reset">重置</el-button>
-          <el-button type="primary" @click="openResource">资源上传</el-button>
-        </el-form-item>
-      </el-form>
-    </div>
-    <!-- 表格数据 -->
-    <el-table v-loading="loading" :data="dataList" :border="true">
-      <el-table-column label="序号" type="index" align="center" width="80" />
-      <el-table-column label="资源名称" prop="name" align="center"  />
-      <el-table-column label="资源类型" prop="resourceType" align="center"  >
-        <template #default="scope">
-          <span>{{scope.row.resourceType == 1 ? '视频':scope.row.resourceType == 2 ? '音频':'文档'}}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="上传时间" prop="createTime" align="center"  />
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width" >
-        <template #default="scope">
-          <el-button link type="primary" @click="choose(scope.row)">选择</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-
-    <pagination
-        v-show="total > 0"
-        :total="total"
-        v-model:page="queryParams.pageNum"
-        v-model:limit="queryParams.pageSize"
-        @pagination="getList"
-    />
-    </el-dialog>
-    <resource-dialog ref="resourceRef" @getList="getList"></resource-dialog>
-  </div>
-</template>
-
-<script setup>
-import {getCurrentInstance, onMounted, onUnmounted, reactive, ref, toRefs} from "vue";
-import {ElMessage, ElMessageBox} from "element-plus";
-import resourceDialog from '@/views/onlineEducation/courseManage/courseResource/componets/resourceDialog.vue'
-import {checkResourceName, delResource, getResource} from "@/api/onlineEducation/courseResource";
-import {checkName} from "@/api/onlineEducation/company";
-const { proxy } = getCurrentInstance();
-const loading = ref(false);
-const emit = defineEmits(["chooseRes"]);
-const dialogRef = ref();
-const resourceRef = ref()
-const data = reactive({
-  queryParams: {
-    pageNum: 1,
-    pageSize: 10,
-    name: ''
-  },
-  total: 0,
-  dataList: []
-});
-
-const dialogVisible = ref(false);
-const { queryParams, total, dataList } = toRefs(data);
-
-onMounted(()=>{
-
-})
-
-onUnmounted(()=>{
-
-})
-
-const openDialog = async () => {
-  await getList()
-  dialogVisible.value = true;
-}
-
-const handleClose = () => {
-  dialogVisible.value = false;
-}
-const getList = async () => {
-  loading.value = true
-  const res = await getResource(data.queryParams)
-  if(res.code == 200){
-    data.dataList = res.data.list.map(item => {
-      return{
-        ...item,
-        sizeMB: Number((item.resourceSize /1024 /1024).toFixed(2))+'MB'
-      }
-    })
-    console.log("ddd",data.dataList)
-    data.total = res.data.total
-  }else{
-    ElMessage.warning(res.message)
-  }
-  loading.value = false
-}
-
-const openResource = () => {
-  resourceRef.value.openDialog('add',{})
-}
-
-const choose = (value) => {
-  console.log("co",value)
-  emit('chooseRes',value)
-  dialogVisible.value = false
-  // dialogRef.value.openDialog(type, value);
-}
-defineExpose({
-  openDialog
-});
-
-
-/** 重置新增的表单以及其他数据  */
-function reset() {
-  data.queryParams = {
-    pageNum: 1,
-        pageSize: 10,
-        name: ''
-  }
-  getList()
-}
-
-</script>
diff --git a/src/views/onlineEducation/courseManage/courseChapters/index.vue b/src/views/onlineEducation/courseManage/courseChapters/index.vue
deleted file mode 100644
index a5a54d8..0000000
--- a/src/views/onlineEducation/courseManage/courseChapters/index.vue
+++ /dev/null
@@ -1,166 +0,0 @@
-<template>
-  <div class="app-container">
-    <div style="margin-bottom: 10px;display:flex;justify-content: space-between;align-items: center">
-      <el-button type="success" plain @click="openDialog('addFirst',{courseId: data.courseId})" :disabled="disabled">章添加</el-button>
-      <el-button type="primary" plain @click="back">返回</el-button>
-    </div>
-    <!-- 表格数据 -->
-    <el-table v-loading="loading" :data="dataList" :border="true" row-key="id" :tree-props="{ children: 'chapterPeriods' }">
-      <el-table-column label="序号" type="index" align="center" width="80" />
-      <el-table-column label="章节名称" >
-        <template #default="scope">
-          <span>{{scope.row.name}}</span>
-          <span v-if="scope.row.chapterId" style="font-size: 14px;margin-left: 5px">【{{scope.row.resource.resourceType === 1 ? '视频:':scope.row.resource.resourceType === 2 ? '音频:':'文档:'}}{{scope.row.resource.name}}】| {{scope.row.timeFormat}}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="排序" prop="sort" align="center" width="80" />
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="250" >
-        <template #default="scope">
-          <el-button type="success" plain @click="openDialog('add',scope.row)" v-if="!scope.row.chapterId" :disabled="disabled">节添加</el-button>
-          <el-button type="primary" plain @click="openDialog('edit',scope.row)" :disabled="disabled">编辑</el-button>
-          <el-button type="danger" plain @click="handleDelete(scope.row)" :disabled="disabled">删除</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-    <chapters-dialog ref="areaRef" @getList="getList"></chapters-dialog>
-  </div>
-</template>
-
-<script setup>
-import {getCurrentInstance, onMounted, reactive, ref, toRefs} from "vue";
-import {ElMessage, ElMessageBox} from "element-plus";
-import chaptersDialog from "./components/chapterDialog.vue"
-import {delArea, getArea} from "@/api/backManage/area";
-import {getDictList} from "@/api/backManage/evaluate";
-import {delMonitor} from "@/api/sysUsers";
-import {useRoute,useRouter} from 'vue-router'
-import {delClassification, getClassification} from "@/api/onlineEducation/courseClass";
-import {delChapter, delPeriod, getChapters} from "@/api/onlineEducation/chapters";
-import Cookies from "js-cookie";
-const { proxy } = getCurrentInstance();
-const route = useRoute()
-const router = useRouter();
-const loading = ref(false);
-const areaRef = ref();
-const cityList = ref([])
-const data = reactive({
-  queryParams: {
-    name: '',
-  },
-  total: 0,
-  dataList: [
-  ],
-  courseId: ''
-});
-
-const { queryParams, total, dataList } = toRefs(data);
-const backValue = ref()
-const disabled = ref(false)
-//页面加载
-onMounted(() => {
-  backValue.value =  JSON.parse(route.query.val)
-  const userInfo = JSON.parse(Cookies.get('userInfo'))
-  if((backValue.value.state === 2 || backValue.value.state === 1 ) && userInfo.userType == 1){
-    disabled.value = true;
-  }
-  data.courseId = backValue.value.id
-  console.log("rou",data.courseId)
-  getList();
-});
-const getList = async () => {
-  loading.value = true;
-  const param = {
-    courseId: data.courseId
-  }
-  const res = await getChapters(param);
-  if(res.code === 200){
-    dataList.value = res.data.map(item => {
-      return {
-        ...item,
-        chapterPeriods: item.chapterPeriods.map(r => {
-          return {
-            ...r,
-            timeFormat: r.resource.resourceType === 1 || r.resource.resourceType === 2 ? secondsToTime(r.resource.resourceLength)  : r.resource.docPage + '页'
-          }
-        })
-
-      }
-    })
-  }else{
-    ElMessage.warning(res.message)
-  }
-  loading.value = false;
-  console.log('dataList.value',dataList.value)
-}
-const secondsToTime = (seconds) => {
-  const hours = Math.floor(seconds / 3600);
-  const minutes = Math.floor((seconds % 3600) / 60);
-  const secs = seconds % 60;
-
-  return [
-    hours,
-    hours > 0 ? pad(minutes) : minutes,
-    pad(secs)
-  ].join(':');
-}
-const pad = (number) => {
-  return (number < 10 ? '0' : '') + number;
-}
-
-const openDialog = (type, value) => {
-  dataList.value.forEach(item => {
-    if(item.id == value.chapterId){
-      value.capterName = item.name
-    }
-  })
-  areaRef.value.openDialog(type, value);
-}
-
-/** 重置新增的表单以及其他数据  */
-function reset() {
-  data.queryParams.name = '';
-  data.queryParams.pageNum = 1;
-  getList();
-}
-const handleDelete = (val) => {
-  ElMessageBox.confirm(
-      '确定删除此条数据?',
-      '提示',
-      {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning',
-      })
-      .then( async() => {
-        if(!val.chapterId){
-          const res = await delChapter(val.id)
-          if(res.code == 200){
-            ElMessage.success('数据删除成功')
-            await getList()
-          }else{
-            ElMessage.warning(res.message)
-          }
-        }else {
-          const res = await delPeriod(val.id)
-          if(res.code == 200){
-            ElMessage.success('数据删除成功')
-            await getList()
-          }else{
-            ElMessage.warning(res.message)
-          }
-        }
-
-      })
-}
-const back = () => {
-
-  const obj = {
-    pageNum: backValue.value.pageNum,
-    pageSize: backValue.value.pageSize,
-  }
-  const v = JSON.stringify(obj)
-  router.push({ path: "/courseManage/course", query: { val: v } });
-}
-
-
-</script>
diff --git a/src/views/onlineEducation/courseManage/courseResource/componets/resourceDialog.vue b/src/views/onlineEducation/courseManage/courseResource/componets/resourceDialog.vue
deleted file mode 100644
index 1936140..0000000
--- a/src/views/onlineEducation/courseManage/courseResource/componets/resourceDialog.vue
+++ /dev/null
@@ -1,351 +0,0 @@
-<template>
-  <div class="notice">
-    <el-dialog
-        v-model="dialogVisible"
-        :title="title"
-        width="550px"
-        :before-close="handleClose"
-        :close-on-press-escape="false"
-        :close-on-click-modal="false"
-    >
-      <el-form :model="state.form" size="default" ref="busRef" :rules="state.formRules" label-width="130px" >
-        <el-form-item label="资源名称:" prop="name" >
-          <el-input v-model.trim="state.form.name" placeholder="请输入资源名称"></el-input>
-        </el-form-item>
-        <el-form-item label="资源类型:" prop="resourceType" >
-          <el-select
-              @change="changeType"
-              v-model="state.form.resourceType"
-              placeholder="请选择资源类型"
-              size="default"
-              style="width: 100%"
-
-          >
-            <el-option
-                v-for="item in state.typeList"
-                :key="item.id"
-                :label="item.name"
-                :value="item.id"
-            />
-          </el-select>
-        </el-form-item>
-        <el-form-item  label="资源时长(秒):" prop="resourceLength"  v-if="(state.form.resourceType == 1 || state.form.resourceType == 2)&& state.form.resourceLength">
-          <el-input
-              :disabled="state.form.resourceLength!=0"
-              v-model="state.form.resourceLength"
-              style="width: 100%"
-              placeholder="请输入资源时长(秒)"
-          >
-            <template #append>秒</template>
-          </el-input>
-        </el-form-item>
-        <el-form-item  label="文档页数:" prop="docPage"  v-if="state.form.resourceType == 3 && state.form.docPage ">
-          <el-input
-              :disabled="state.form.docPage!=0"
-              v-model="state.form.docPage"
-              style="width: 100%"
-              placeholder="请输入文档页数:"
-          >
-            <template #append>页</template>
-          </el-input>
-        </el-form-item>
-
-        <el-form-item  label="资源上传:">
-          <file-upload ref="fileRef" :responseType="state.form.resourceType" @getFile="getFile"></file-upload>
-        </el-form-item>
-
-      </el-form>
-      <template #footer>
-        <span class="dialog-footer">
-            <el-button @click="handleClose" size="default">取 消</el-button>
-            <el-button type="primary"  @click="onSubmit" size="default" v-preReClick>确认</el-button>
-        </span>
-      </template>
-    </el-dialog>
-  </div>
-</template>
-<script setup>
-import {nextTick, reactive, ref, toRefs} from 'vue'
-import Editor from "@/components/Editor/index.vue";
-import {ElMessage} from "element-plus";
-import {addNotice} from "@/api/backManage/notice";
-import {addDict, editDict, getDictDetail} from "@/api/backManage/evaluate";
-import {addCompany, checkName, distributeCompany, editCompany} from "@/api/onlineEducation/company";
-import {verifyPhone} from "@/utils/validate";
-import {addBanner, delPic, editBanner, getBannerById} from "@/api/onlineEducation/banner";
-import {getToken} from "@/utils/auth";
-import {getUserById} from "@/api/onlineEducation/user";
-import {addResource, checkResourceName, editResource, getResourceById} from "@/api/onlineEducation/courseResource";
-import fileUpload from '@/views/components/upload.vue'
-import Cookies from "js-cookie";
-
-const dialogVisible = ref(false);
-const title = ref("");
-const fileRef = ref();
-const busRef = ref();
-const length = ref()
-const emit = defineEmits(["getList"]);
-const startUsername = ref('');
-const startPhone = ref('');
-
-const validateName = (rule, value, callback)=>{
-  if(value === ''){
-    callback(new Error('请输入资源名称'))
-  }else if(title.value === '资源编辑' && value === startUsername.value){
-    callback()
-  }else{
-    let param = {}
-    if(title.value === '资源新增') {
-      param = {
-        name:value,
-      }
-    }else if(title.value === '资源编辑'){
-      param = {
-        name:value,
-        id: state.form.id
-      }
-    }
-    checkResourceName(param).then((res)=>{
-      if(res.data == false){
-        callback(new Error('资源名称已被占用,请更换其他名称'))
-      }else{
-        callback()
-      }
-    })
-  }
-}
-
-const state = reactive({
-  form: {
-    id: '',
-    name: '',
-    mediaType: '',
-    resourceType: null,
-    companyId: null,
-    resourcePath:'',
-    md5: '',
-    resourceSize: null,
-    resourceLength: '',
-    docPage: null,
-    originName: ''
-  },
-  formRules:{
-    name: [{ required: true, trigger: "blur", validator: validateName }],
-    resourceType:[{ required: true, message: '请选择资源类型', trigger: 'blur' }],
-    resourceLength: [{ required: true, trigger: "blur", message: '请输入资源时长(秒)' }],
-  },
-  uploadUrl: import.meta.env.VITE_APP_BASE_API + '/system/common/uploadFile',
-  header: {
-    Authorization:getToken()
-  },
-  imgLimit: 1,
-  imgList: [],
-  typeList: [
-    {
-      id: 1,
-      name: '视频'
-    },
-    {
-      id: 2,
-      name: '音频'
-    },
-    {
-      id: 3,
-      name: '文档'
-    },
-  ]
-})
-const  handleChange = (file, fileLists) => {
-  state.form.file = file.raw;
-  console.log(file);
-  // 这里把数组置空是为了每次只能上传一个文件,以防报错
-  state.imgList = [];
-  state.form.mediaType = file.raw.type
-}
-const handleAvatarSuccess = (response, file, fileList) => {
-  if(response.code == 200){
-    if(file && file.raw){
-      state.form.mediaType = file.raw.type
-    }
-    state.form.file = file
-  }else{
-    state.imgList = []
-    ElMessage({
-      type: 'warning',
-      message: '文件上传失败'
-    })
-  }
-}
-const showTip =()=>{
-  ElMessage({
-    type: 'warning',
-    message: '超出文件上传数量'
-  });
-}
-const picSize = async (rawFile) => {
-  if(rawFile.size / 1024 / 1024 > 5){
-    ElMessage({
-      type: 'warning',
-      message: '文件大小不能超过5M'
-    });
-    return false
-  }
-};
-const handleRemove = async (file, uploadFiles) => {
-  let path = state.form.imgUrl;
-  await delPic({path: path}).then(res => {
-    if(res.code == 200){
-      // ElMessage({
-      //   type: 'success',
-      //   message: '文件已删除'
-      // })
-      state.form.imgUrl = ''
-    }else{
-      ElMessage({
-        type: 'warning',
-        message: res.message
-      })
-    }
-  }).catch(() => {
-    state.form.imgUrl = ''
-  });
-}
-
-const openDialog = async (type, value) => {
-  length.value = value.listLength
-  title.value = type === 'add' ? '资源新增' : type ==='edit' ? '资源编辑' : '' ;
-  if(type === 'edit') {
-    const res = await getResourceById(value.id);
-    if(res.code === 200){
-      state.form = res.data
-    }else{
-      ElMessage.warning(res.message)
-    }
-  }
-  dialogVisible.value = true;
-  if(type === 'edit') {
-    await nextTick(() => {
-      fileRef.value.open(state.form);
-    })
-  }
-}
-const getFile = (val) => {
-
-  if(val.md5 != ''){
-    state.form.md5 = val.md5
-    state.form.resourcePath = val.resourcePath
-    state.form.mediaType = val.mediaType
-    state.form.resourceSize = val.resourceSize
-    state.form.docPage = val.docPage
-    state.form.resourceLength = val.resourceLength
-    state.form.originName = val.originName
-  } else if( val.md5 == ''){
-    state.form.resourceType = ''
-
-  } else {
-      ElMessage({
-        type: 'warning',
-        message: '请上传题库资源'
-      });
-  }
-}
-
-const changeType = (val) => {
-  state.form.md5 = ''
-  state.form.resourcePath = ''
-  state.form.mediaType =''
-  state.form.resourceSize = null
-  state.form.docPage = null
-  state.form.resourceLength = null
-  state.form.originName = ''
-  fileRef.value.changeType(val);
-}
-const onSubmit = async () => {
-  const valid = await busRef.value.validate();
-  if(valid){
-    if(state.form.resourcePath == ''){
-      ElMessage.warning('请上传资源')
-      return
-    }
-    if(title.value === '资源新增'){
-      const {id,...data} = JSON.parse(JSON.stringify(state.form))
-      const res = await addResource(data)
-      if(res.code === 200){
-        ElMessage({
-          type: 'success',
-          message: '新增成功'
-        });
-      }else{
-        ElMessage.warning(res.message)
-      }
-      dialogVisible.value = false;
-      emit("getList")
-      busRef.value.clearValidate();
-      fileRef.value.dispose();
-      reset();
-
-
-    }else if(title.value === '资源编辑'){
-      const {...data} = JSON.parse(JSON.stringify(state.form))
-      const res = await editResource(data)
-      if(res.code === 200){
-        ElMessage({
-          type: 'success',
-          message: '编辑成功'
-        });
-      }else{
-        ElMessage.warning(res.message)
-      }
-      dialogVisible.value = false;
-      emit("getList")
-      busRef.value.clearValidate();
-      fileRef.value.dispose();
-      reset();
-
-
-    }
-  }
-}
-
-const handleClose = () => {
-  dialogVisible.value = false;
-  fileRef.value.dispose();
-  busRef.value.clearValidate();
-  reset();
-
-  emit("getList")
-
-}
-const reset = () => {
-  state.form = {
-    id: '',
-    name: '',
-    mediaType: '',
-    resourceType: null,
-    companyId: null,
-    resourcePath:'',
-    md5: '',
-    resourceSize: null,
-    resourceLength: '',
-    docPage: null,
-    originName: ''
-  }
-}
-defineExpose({
-  openDialog
-});
-
-</script>
-
-<style scoped lang="scss">
-.notice{
-  :deep(.el-form .el-form-item__label) {
-    font-size: 15px;
-  }
-  .file {
-    display: flex;
-    flex-direction: column;
-    align-items: flex-start;
-  }
-}
-</style>
diff --git a/src/views/onlineEducation/courseManage/courseResource/componets/viewVideo.vue b/src/views/onlineEducation/courseManage/courseResource/componets/viewVideo.vue
deleted file mode 100644
index 9bf03d4..0000000
--- a/src/views/onlineEducation/courseManage/courseResource/componets/viewVideo.vue
+++ /dev/null
@@ -1,139 +0,0 @@
-<template>
-  <div class="notice">
-    <el-dialog
-        v-model="dialogVisible"
-        :title="title"
-        width="50%"
-        :before-close="handleClose"
-        center
-        :close-on-press-escape="false"
-        :close-on-click-modal="false"
-    >
-      <div style="text-align: center" v-if="showVideo">
-        <video  ref="videoPlayer" class="video-js" style="margin: auto auto"></video>
-      </div>
-    </el-dialog>
-  </div>
-</template>
-<script setup>
-import { ElMessage } from "element-plus";
-import videojs from "video.js"
-import { computed, nextTick, onMounted, onUnmounted,ref,reactive,watch  } from "vue";
-import SparkMD5 from "spark-md5";
-import pLimit from 'p-limit'
-const emit = defineEmits(["getFile"]);
-
-const dialogVisible = ref(false);
-const title = ref("");
-const state = reactive({
-
-})
-const videoPlayer = ref(null)
-const myPlayer = ref(null)
-const resourcePath = ref()
-const showVideo = ref(false)
-
-const getVideo = () => {
-    nextTick(() => {
-      console.log("111111",videoPlayer.value)
-      myPlayer.value = videojs(videoPlayer.value, {
-        poster: "",//视频封面
-        controls: true,//视频控件
-        autoplay:true,//自动播放
-        sources: [
-          {
-            src: resourcePath.value ? resourcePath.value : '',
-            // src:'',
-            type: 'application/x-mpegURL',
-          }
-        ],
-        controlBar: {
-          remainingTimeDisplay: {
-            displayNegative: false
-          }
-        },
-        playbackRates: [0.5, 1, 1.5, 2]//设置播放速度
-      }, onPlayerReady)
-    });
-}
-const onPlayerReady = () => {
-  myPlayer.value.log("play.....")
-  bindVideoEvents()
-}
-// 绑定事件
-const bindVideoEvents = () => {
-  if (!myPlayer.value) return
-  myPlayer.value.on('play', onPlay)
-  myPlayer.value.on('pause', onPause)
-  myPlayer.value.on('ended', onEnded)
-  myPlayer.value.on('timeupdate', onTimeupdate)
-  myPlayer.value.on('loadedmetadata', onLoadedmetadata)
-  myPlayer.value.on('fullscreenchange', onFullscreenchange)
-  myPlayer.value.on('error', err => {
-    console.log('视频加载发生错误', err)
-  })
-}
-const openDialog = async (value) => {
-  dialogVisible.value = true;
-  showVideo.value = true;
-  resourcePath.value = value.resourcePath
-  title.value = value.name
-  getVideo();
-}
-
-const handleClose = () => {
-  // if(myPlayer.value){
-  //   myPlayer.value.dispose();
-  //   resourcePath.value = ''
-  // }
-  showVideo.value = false;
-  resourcePath.value = '';
-  dialogVisible.value = false;
-  emit("getList")
-
-}
-const onPlay = () => {
-  console.log('播放视频')
-}
-const onPause = () => {
-  console.log('暂停播放')
-}
-const onEnded = () => {}
-const onTimeupdate = () => {
-  console.log('播放位置已更改时,播放时间更新')
-}
-// 全屏切换
-const onFullscreenchange = () => {
-  console.log('全屏状态改变')
-}
-// 元数据加载完成
-const onLoadedmetadata = () => {
-  console.log('元数据加载完成')
-
-}
-const dispose = () => {
-  resourcePath.value = ''
-}
-
-defineExpose({
-  openDialog
-});
-
-</script>
-
-<style scoped lang="scss">
-.notice{
-  :deep(.video-js) {
-    width: 500px;
-    height: 500px;
-  }
-  :deep(.el-form .el-form-item__label) {
-    font-size: 15px;
-  }
-  .file {
-    display: flex;
-    flex-direction: column;
-    align-items: flex-start;
-  }
-}
-</style>
diff --git a/src/views/onlineEducation/courseManage/courseResource/index.vue b/src/views/onlineEducation/courseManage/courseResource/index.vue
deleted file mode 100644
index c4ae811..0000000
--- a/src/views/onlineEducation/courseManage/courseResource/index.vue
+++ /dev/null
@@ -1,173 +0,0 @@
-<template>
-  <div class="app-container">
-    <div style="display: flex;justify-content: space-between">
-      <el-form :inline="true" style="display: flex;align-items: center;flex-wrap: wrap;" >
-        <el-form-item>
-          <el-button
-              type="primary"
-              plain
-              icon="Plus"
-              @click="openDialog('add',{})"
-          >新增</el-button>
-        </el-form-item>
-        <el-form-item label="资源名称:" >
-          <el-input v-model="data.queryParams.name" placeholder="请输入资源名称"></el-input>
-        </el-form-item>
-        <el-form-item >
-          <el-button
-              type="primary"
-              @click="getList"
-          >查询</el-button>
-          <el-button
-              type="primary"
-              plain
-              @click="reset"
-          >重置</el-button>
-        </el-form-item>
-      </el-form>
-    </div>
-    <!-- 表格数据 -->
-    <el-table v-loading="loading" :data="dataList" :border="true">
-      <el-table-column label="序号" type="index" align="center" width="80" />
-      <el-table-column label="资源名称" prop="name" align="center" >
-        <template #default="scope">
-          <div style="display:flex;align-items: center;justify-content: center">
-            <span >{{scope.row.name}}</span>
-            <VideoPlay  v-if="scope.row.resourceType === 1" style="width: 1em; height: 1em; margin-left: 3px;cursor: pointer" @click="openVideo(scope.row)" />
-          </div>
-        </template>
-      </el-table-column>
-      <el-table-column label="资源大小" prop="sizeMB" align="center"  >
-      </el-table-column>
-      <el-table-column label="资源类型" prop="resourceType" align="center"  >
-        <template #default="scope">
-          <div style="display: flex;flex-direction: column">
-            <span>{{scope.row.resourceType == 1 ? '视频':scope.row.resourceType == 2 ? '音频':'文档'}}</span>
-            <span style="font-size: 14px">{{scope.row.timeFormat}}</span>
-          </div>
-
-        </template>
-      </el-table-column>
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width" >
-        <template #default="scope">
-          <el-button link type="primary" @click="openDialog('edit',scope.row)">编辑</el-button>
-          <el-button link type="danger" @click="handleDelete(scope.row)">删除</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-
-    <pagination
-        v-show="total > 0"
-        :total="total"
-        v-model:page="queryParams.pageNum"
-        v-model:limit="queryParams.pageSize"
-        @pagination="getList"
-    />
-    <resource-dialog ref="dialogRef" @getList="getList"></resource-dialog>
-    <viewVideo ref="videoRef" @getList="getList"></viewVideo>
-  </div>
-</template>
-
-<script setup>
-import {getCurrentInstance, nextTick, onMounted, onUnmounted, reactive, ref, toRefs} from "vue";
-import {ElMessage, ElMessageBox} from "element-plus";
-import resourceDialog from './componets/resourceDialog.vue'
-import viewVideo from './componets/viewVideo.vue'
-import {checkResourceName, delResource, getResource} from "@/api/onlineEducation/courseResource";
-import {checkName} from "@/api/onlineEducation/company";
-import {VideoPlay} from "@element-plus/icons-vue";
-const { proxy } = getCurrentInstance();
-const loading = ref(false);
-const dialogRef = ref();
-const videoRef = ref();
-
-const data = reactive({
-  queryParams: {
-    pageNum: 1,
-    pageSize: 10,
-    name: ''
-  },
-  total: 0,
-  dataList: []
-});
-
-const { queryParams, total, dataList } = toRefs(data);
-
-onMounted(()=>{
-  getList()
-})
-
-onUnmounted(()=>{
-
-})
-
-const getList = async () => {
-  loading.value = true
-  const res = await getResource(data.queryParams)
-  if(res.code == 200){
-    data.dataList = res.data.list.map(item => {
-      return{
-        ...item,
-        sizeMB: Number((item.resourceSize /1024 /1024).toFixed(2))+'MB',
-        timeFormat: item.resourceType === 1 || item.resourceType === 2 ? secondsToTime(item.resourceLength)  : item.docPage + '页'
-      }
-    })
-    console.log("ddd",data.dataList)
-    data.total = res.data.total
-  }else{
-    ElMessage.warning(res.message)
-  }
-  loading.value = false
-}
-
-const openDialog = (type, value) => {
-  dialogRef.value.openDialog(type, value);
-}
-const openVideo = (value) => {
-    videoRef.value.openDialog(value);
-}
-
-const secondsToTime = (seconds) => {
-  const hours = Math.floor(seconds / 3600);
-  const minutes = Math.floor((seconds % 3600) / 60);
-  const secs = seconds % 60;
-
-  return [
-    hours,
-    hours > 0 ? pad(minutes) : minutes,
-    pad(secs)
-  ].join(':');
-}
-const pad = (number) => {
-  return (number < 10 ? '0' : '') + number;
-}
-/** 重置新增的表单以及其他数据  */
-function reset() {
-  data.queryParams  = {
-    pageNum: 1,
-    pageSize: 10,
-    name: ''
-  }
-  getList()
-}
-const handleDelete = (val) => {
-  ElMessageBox.confirm(
-      '确定删除此条数据?',
-      '提示',
-      {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning',
-      })
-      .then( async() => {
-        const res = await delResource(val.id)
-        if(res.code == 200){
-          ElMessage.success('数据删除成功')
-          await getList()
-        }else{
-          ElMessage.warning(res.message)
-        }
-      })
-}
-
-</script>
diff --git a/src/views/onlineEducation/courseManage/index.vue b/src/views/onlineEducation/courseManage/index.vue
deleted file mode 100644
index b573590..0000000
--- a/src/views/onlineEducation/courseManage/index.vue
+++ /dev/null
@@ -1,381 +0,0 @@
-<template>
-  <div class="app-container">
-    <div style="display: flex;justify-content: space-between">
-      <el-form :inline="true" style="display: flex;align-items: center;flex-wrap: wrap;" >
-        <el-form-item>
-          <el-button
-              type="primary"
-              plain
-              icon="Plus"
-              @click="openDialog('add',{})"
-          >新增</el-button>
-        </el-form-item>
-        <el-form-item label="课程名称:" >
-          <el-input v-model="data.queryParams.name" placeholder="请输入课程名称"></el-input>
-        </el-form-item>
-        <el-form-item label="审核状态:" >
-          <el-select v-model="data.queryParams.state" placeholder="请选择审核状态" clearable>
-            <el-option
-                v-for="item in data.stateList"
-                :key="item.id"
-                :label="item.name"
-                :value="item.id">
-            </el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item >
-          <el-button
-              type="primary"
-              @click="getList"
-          >查询</el-button>
-          <el-button
-              type="primary"
-              plain
-              @click="reset"
-          >重置</el-button>
-        </el-form-item>
-      </el-form>
-    </div>
-    <!-- 表格数据 -->
-    <el-table v-loading="loading" :data="dataList" :border="true">
-      <el-table-column label="序号" type="index" align="center" width="80" />
-      <el-table-column label="封面" prop="logo" align="center"  width="130">
-        <template #default="scope">
-          <div class="demo-image__preview" v-if="scope.row.logo && scope.row.logo.length>0">
-            <el-image
-                style="width: 100px; height: 100px"
-                :src= "scope.row.logo[0]"
-                :zoom-rate="1.2"
-                :max-scale="7"
-                :min-scale="0.2"
-                :preview-src-list="scope.row.logo"
-                :initial-index="0"
-                fit="cover"
-                :preview-teleported=true
-            />
-          </div>
-        </template>
-      </el-table-column>
-      <el-table-column label="课程名称" prop="name" align="center"  />
-      <el-table-column label="课程分类" prop="categoryName" align="center" />
-      <el-table-column label="要求课时" prop="period" align="center" >
-        <template #default="scope">
-          <span>{{ scope.row.period?(scope.row.period/60).toFixed(2).replace(/\.00$/, '') + '分钟':'' }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="提交单位" prop="companyName" align="center" />
-      <el-table-column label="审核状态" prop="state" align="center" >
-        <template #default="scope">
-          <el-tooltip
-              v-if="scope.row.state == 3 && scope.row.message !=''"
-              class="box-item"
-              effect="dark"
-              :content="scope.row.message"
-              placement="top"
-          >
-            <span>审批不通过</span>
-          </el-tooltip>
-          <span v-else>{{scope.row.state == 0?'待提交':scope.row.state == 1?'待审核':scope.row.state == 2?'审批通过':'审批不通过'}}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="创建时间" prop="createTime" align="center" width="180" />
-      <el-table-column label="状态" prop="status" align="center" >
-
-        <template #default="scope" v-if="data.isAdmin">
-          <el-switch
-              v-if="scope.row.state == 2"
-              v-model="scope.row.status"
-              :active-value="0"
-              :inactive-value="1"
-              inline-prompt
-              active-text="正常"
-              inactive-text="停用"
-              @change="switchStatus($event,scope.row)"
-          />
-          <span v-else>--</span>
-        </template>
-        <template #default="scope" v-else>
-          <span v-if="scope.row.state == 2">{{scope.row.status == 1? '停用' : '正常'}}</span>
-          <span v-else>--</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="240">
-        <template #default="scope">
-          <div v-if="data.isAdmin">
-            <div v-if="scope.row.state !== 3">
-              <el-button link type="primary" v-if="scope.row.state == 1" @click="openApprove(scope.row)">审核</el-button>
-              <el-button link type="primary" @click="openDialog('edit',scope.row)">编辑</el-button>
-              <el-button link type="primary" @click="toChapters(scope.row)">章节</el-button>
-              <el-button link type="danger" @click="handleDelete(scope.row)">删除</el-button>
-            </div>
-            <div v-else><el-button link type="primary" @click="toChapters(scope.row)">章节</el-button></div>
-          </div>
-          <div v-else-if="!data.isAdmin">
-            <div v-if="scope.row.state !== 2">
-              <el-button link type="primary" v-if="scope.row.state == 0 || scope.row.state == 3" @click="submitApprove(scope.row)">提交审核</el-button>
-              <el-button link type="primary" v-if="scope.row.state == 1" @click="submitApprove(scope.row)">取消审核</el-button>
-              <el-button link type="primary" v-if="scope.row.state !== 1" @click="openDialog('edit',scope.row)" >编辑</el-button>
-              <el-button link type="primary"  @click="toChapters(scope.row)">章节</el-button>
-              <el-button link type="danger" v-if="scope.row.state !== 1" @click="handleDelete(scope.row)">删除</el-button>
-            </div>
-            <div v-else>
-              <el-button link type="primary"  @click="toChapters(scope.row)">章节</el-button>
-            </div>
-
-          </div>
-<!--          <div v-if="scope.row.state == 2">-->
-<!--            <div v-if="data.isAdmin">-->
-<!--              <el-button link type="primary" @click="openDialog('edit',scope.row)">编辑</el-button>-->
-<!--              <el-button link type="primary" @click="toChapters(scope.row)">章节</el-button>-->
-<!--              <el-button link type="danger" @click="handleDelete(scope.row)">删除</el-button>-->
-<!--            </div>-->
-<!--            <div v-else><el-button link type="primary" @click="toChapters(scope.row)">章节</el-button></div>-->
-<!--          </div>-->
-<!--          <div v-else-if="scope.row.state == 1" >-->
-<!--              <el-button link type="primary" @click="openDialog('edit',scope.row)">编辑</el-button>-->
-<!--              <el-button link type="primary" v-if="data.isAdmin" @click="openApprove(scope.row)">审核</el-button>-->
-<!--            <el-button link type="primary" @click="toChapters(scope.row)">章节</el-button>-->
-<!--              <el-button link type="danger" @click="handleDelete(scope.row)">删除</el-button>-->
-<!--          </div>-->
-<!--          <div v-else-if="scope.row.state == 3" >-->
-<!--            <div v-if="data.isAdmin">&#45;&#45;</div>-->
-<!--            <div v-else>-->
-<!--              <el-button link type="primary" @click="openDialog('edit',scope.row)">编辑</el-button>-->
-<!--              <el-button link type="primary" @click="submitApprove(scope.row)">提交审核</el-button>-->
-<!--              <el-button link type="primary" @click="toChapters(scope.row)">章节</el-button>-->
-<!--              <el-button link type="danger" @click="handleDelete(scope.row)">删除</el-button>-->
-<!--            </div>-->
-<!--          </div>-->
-        </template>
-      </el-table-column>
-    </el-table>
-
-    <pagination
-        v-show="total > 0"
-        :total="total"
-        v-model:page="queryParams.pageNum"
-        v-model:limit="queryParams.pageSize"
-        @pagination="getList"
-    />
-    <course-manage-dialog ref="dialogRef" @getList=getList></course-manage-dialog>
-    <el-dialog v-model="data.appDialog" title="审批课程" width="30%" center align-center>
-      <el-form>
-        <el-form-item label="审批课程:">
-          <el-radio-group v-model="data.appoveForm.state" style="width: 100%">
-            <el-radio :label="2" size="large" border>通过</el-radio>
-            <el-radio :label="3" size="large" border>驳回</el-radio>
-          </el-radio-group>
-        </el-form-item>
-        <el-form-item label="审批意见:" v-if="data.appoveForm.state == 3">
-          <el-input v-model="data.appoveForm.message"  type="textarea"  maxlength="50" show-word-limit placeholder="请输入审批意见"></el-input>
-        </el-form-item>
-      </el-form>
-      <template #footer>
-            <span class="dialog-footer">
-              <el-button @click="data.appDialog = false">取消</el-button>
-              <el-button type="primary" @click="confirmApproval">确认</el-button>
-            </span>
-      </template>
-    </el-dialog>
-  </div>
-</template>
-
-<script setup>
-import {getCurrentInstance, onMounted, onUnmounted, reactive, ref, toRefs} from "vue";
-
-import {ElMessage, ElMessageBox} from "element-plus";
-import {delCompany, getCompany} from "@/api/onlineEducation/company";
-import courseManageDialog from  './components/courseManageDialog.vue'
-import {delBanner, getBanner} from "@/api/onlineEducation/banner";
-import {useRoute, useRouter} from 'vue-router'
-import Cookies from "js-cookie";
-import {changeCourseStatus, delCourse, doCourse, getCourse} from "@/api/onlineEducation/courseManage";
-const { proxy } = getCurrentInstance();
-const router = useRouter()
-const loading = ref(false);
-const dialogRef = ref();
-const route = useRoute()
-const data = reactive({
-  queryParams: {
-    pageNum: 1,
-    pageSize: 10,
-    name: '',
-    state: null
-  },
-  total: 0,
-  dataList: [],
-  isAdmin: false,
-  appDialog: false,
-  appoveForm: {
-    id: null,
-    state: null,
-    message: ''
-  },
-  stateList: [
-    {
-      id: 0,
-      name: '待提交'
-    },
-    {
-      id: 1,
-      name: '待审核'
-    },
-    {
-      id: 2,
-      name: '审批通过'
-    },
-    {
-      id: 3,
-      name: '审批不通过'
-    },
-  ]
-});
-
-const { queryParams, total, dataList } = toRefs(data);
-
-onMounted(async ()=>{
-  if(route.query.val){
-    const val = JSON.parse(route.query.val)
-    if(val){
-      data.queryParams.pageNum = val.pageNum;
-      data.queryParams.pageSize = val.pageSize;
-    }
-  }
-  const userInfo = JSON.parse(Cookies.get('userInfo'))
-  console.log("userInfo",userInfo)
-  if(userInfo.userType === 0){
-    data.isAdmin = true;
-  }else {
-    data.isAdmin = false;
-  }
-  await getList()
-})
-
-onUnmounted(()=>{
-
-})
-
-const getList = async () => {
-  loading.value = true
-  const res = await getCourse(data.queryParams)
-  if(res.code == 200){
-    data.dataList = res.data.list.map(item => {
-      return {
-        ...item,
-        logo: item.logo ?[import.meta.env.VITE_APP_BASE_API + "/" +  item.logo] : [],
-        companyName: item.companyName ? item.companyName : '公开课'
-      }
-    })
-    console.log("ddd",data.dataList)
-    data.total = res.data.total
-  }else{
-    ElMessage.warning(res.message)
-  }
-  loading.value = false
-}
-
-const openDialog = (type, value) => {
-  dialogRef.value.openDialog(type, value);
-}
-
-/** 重置新增的表单以及其他数据  */
-function reset() {
-  data.queryParams = {
-    pageNum: 1,
-    pageSize: 10,
-    name: '',
-    state: null
-  }
-  getList()
-}
-const handleDelete = (val) => {
-  ElMessageBox.confirm(
-      '确定删除此条数据?',
-      '提示',
-      {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning',
-      })
-      .then( async() => {
-        const res = await delCourse(val.id)
-        if(res.code == 200){
-          ElMessage.success('数据删除成功')
-          await getList()
-        }else{
-          ElMessage.warning(res.message)
-        }
-      })
-}
-const switchStatus = (e,val) => {
-  ElMessageBox.confirm(
-      '确定修改该课程当前状态?',
-      '提示',
-      {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning',
-      })
-      .then( async() => {
-        const res = await changeCourseStatus({id: val.id,status: e})
-        if(res.code == 200){
-          ElMessage.success('状态修改成功')
-          await getList()
-        }else{
-          ElMessage.warning(res.message)
-        }
-      })
-      .catch(() => {
-        getList()
-      })
-
-}
-const openApprove  = (val) => {
-  data.appoveForm = {
-    id: null,
-    state: null,
-    message: ''
-  }
-  data.appoveForm.id = val.id
-  data.appDialog = true
-}
-const confirmApproval = async () =>{
-  if(data.appoveForm.state !== null){
-    const res = await doCourse(data.appoveForm)
-    if(res.code == 200){
-      ElMessage.success('审批成功')
-      await getList()
-      data.appDialog = false
-    }else{
-      ElMessage.warning(res.message)
-    }
-  }
-}
-const submitApprove = async (val) => {
-  let param = {
-    companyId: val.companyId,
-    id: val.id,
-    state: null
-  }
-  //取消审批
-  if(val.state == 1){
-    param.state = 0
-  }else {
-    param.state = 1
-  }
-  const res = await doCourse(param)
-  if(res.code == 200){
-    ElMessage.success('操作成功')
-    await getList()
-  }else{
-    ElMessage.warning(res.message)
-  }
-}
-const toChapters = (val) => {
-  val.pageNum = data.queryParams.pageNum;
-  val.pageSize = data.queryParams.pageSize
-  const v = JSON.stringify(val)
-  router.push({ path: "/chapters", query: { val: v } });
-}
-
-</script>
diff --git a/src/views/onlineEducation/groupExams/components/correctExam.vue b/src/views/onlineEducation/groupExams/components/correctExam.vue
deleted file mode 100644
index 3bb2a83..0000000
--- a/src/views/onlineEducation/groupExams/components/correctExam.vue
+++ /dev/null
@@ -1,402 +0,0 @@
-<template>
-  <div class="app-container">
-    <div style="display: flex;justify-content: flex-end;margin-bottom: 10px">
-      <div>
-        <el-button
-            type="primary"
-            plain
-            @click="back"
-        >返回</el-button>
-      </div>
-    </div>
-    <div class="paper-contain">
-      <div class="paper-left">
-        <div class="left-content">
-          <el-card style="height: 80%;overflow-y: auto">
-            <div>
-              <span style="font-size: 20px">{{data.form.examPaper.name}}</span>
-              <div class="examInfo">
-                <span>得分:{{data.form.score}} / {{data.form.totalScore}}</span>
-                <span>学生:{{data.form.student.name}}</span>
-                <el-divider style="margin-top: 10px" />
-              </div>
-              <div v-if="data.form.questions && data.form.questions.length>0" style="display: flex;flex-wrap: wrap;line-height: 40px">
-                <div v-for="(item,index) in data.form.questions" :key="index" style="margin-right: 5px">
-                  <el-tag size="large" style="cursor: pointer" effect="light" :type="item.studentAnswer.passed == 0 ? 'danger' :item.studentAnswer.passed == 1?'success': 'warning'" @click="toView(index+1)">{{index+1}}</el-tag>
-                </div>
-                <el-divider />
-              </div>
-              <div style="display: flex;justify-content: center;">
-                <el-button type="primary" @click="submitExam" v-if="data.queryParams.state != 2">提交批改</el-button>
-              </div>
-            </div>
-          </el-card>
-        </div>
-      </div>
-      <div class="paper-right">
-        <div style="height: 100%">
-          <el-card>
-            <div style="display: flex;flex-direction: column;margin: 0 30px" >
-              <div v-if="data.singleList && data.singleList.length >0">
-                  <span style="font-size: 18px;font-weight: 600">单选题</span>
-
-                <div v-for="(item,index) in data.singleList" :key="index" style="margin-left: 15px;margin-top: 10px">
-                  <div style="display: flex;flex-direction: column;">
-                    <div style="margin-top: 10px;display: flex;align-items: center">
-                      <span style="font-size: 15px" :id="index+1">{{index+1}}.</span>
-                      <span style="margin-left: 10px;font-size: 16px">{{item.title}}</span>
-                    </div>
-                    <div style="display: flex;margin-top: 15px;margin-left: 25px">
-                      <div v-for="single in item.content.items" :class="{toRed : item.studentAnswer.answer == single.prefix}">
-                        <span style="font-size: 15px;margin-right: 5px">{{single.prefix}}.</span>
-                        <span style="font-size: 15px;margin-right: 20px">{{single.content}}</span>
-                      </div>
-                    </div>
-                    <div style="display: flex;flex-direction: column;margin-left: 25px;margin-top: 20px;font-size: 14px;line-height: 25px">
-                      <div style="display: flex">
-                        <span>结果:</span>
-                        <el-tag size="small" :type="item.studentAnswer.passed == 0 ? 'danger' :item.studentAnswer.passed == 1?'success': 'warning'">{{item.studentAnswer.passed == 0 ? '错误' :item.studentAnswer.passed == 1? '正确' :'待批改' }}</el-tag>
-                      </div>
-                      <span>分数:{{data.form.examPaper.singleScore}}</span>
-                      <span>解析:{{item.content.analyze}}</span>
-                      <span>正确答案:{{item.answer}}</span>
-
-                    </div>
-                    <el-divider />
-                  </div>
-                </div>
-              </div>
-            </div>
-            <div style="display: flex;flex-direction: column;margin: 0 30px" >
-              <div v-if="data.multiList && data.multiList.length >0">
-                <span style="font-size: 18px;font-weight: 600">多选题</span>
-                <div v-for="(item,index) in data.multiList" :key="index" style="margin-left: 15px;margin-top: 10px">
-                  <div style="display: flex;flex-direction: column;">
-                    <div style="margin-top: 10px;display: flex;align-items: center">
-                      <span style="font-size: 15px" :id="data.singleList.length + index+1">{{data.singleList.length + index+1}}.</span>
-                      <span style="margin-left: 10px;font-size: 16px">{{item.title}}</span>
-                    </div>
-                    <div style="display: flex;margin-top: 15px;margin-left: 25px">
-                      <div v-for="single in item.content.items" :class="{toRed : item.studentAnswer.answerArr.includes(single.prefix)}">
-                        <span style="font-size: 15px;margin-right: 5px">{{single.prefix}}.</span>
-                        <span style="font-size: 15px;margin-right: 20px">{{single.content}}</span>
-                      </div>
-                    </div>
-                    <div style="display: flex;flex-direction: column;margin-left: 25px;margin-top: 20px;font-size: 14px;line-height: 25px">
-                      <div style="display: flex">
-                        <span>结果:</span>
-                        <el-tag size="small" :type="item.studentAnswer.passed == 0 ? 'danger' :item.studentAnswer.passed == 1?'success': 'warning'">{{item.studentAnswer.passed == 0 ? '错误' :item.studentAnswer.passed == 1? '正确' :'待批改' }}</el-tag>
-                      </div>
-                      <span>分数:{{data.form.examPaper.multiScore}}</span>
-                      <span>解析:{{item.content.analyze}}</span>
-                      <span>正确答案:{{item.answer}}</span>
-
-                    </div>
-                    <el-divider />
-                  </div>
-                </div>
-              </div>
-            </div>
-            <div style="display: flex;flex-direction: column;margin: 0 30px" >
-              <div v-if="data.judgeList && data.judgeList.length >0">
-                <span style="font-size: 18px;font-weight: 600">判断题</span>
-                <div v-for="(item,index) in data.judgeList" :key="index" style="margin-left: 15px;margin-top: 10px">
-                  <div style="display: flex;flex-direction: column;">
-                    <div style="margin-top: 10px;display: flex;align-items: center">
-                      <span style="font-size: 15px" :id="data.singleList.length+data.multiList.length + index+1">{{data.singleList.length+data.multiList.length + index+1}}.</span>
-                      <span style="margin-left: 10px;font-size: 16px">{{item.title}}</span>
-                    </div>
-                    <div style="display: flex;margin-top: 15px;margin-left: 25px">
-                      <div v-for="single in item.content.items" :class="{toRed : item.studentAnswer.answer == single.prefix}">
-                        <span style="font-size: 15px;margin-right: 5px">{{single.prefix}}.</span>
-                        <span style="font-size: 15px;margin-right: 20px">{{single.content}}</span>
-                      </div>
-                    </div>
-                    <div style="display: flex;flex-direction: column;margin-left: 25px;margin-top: 20px;font-size: 14px;line-height: 25px">
-                      <div style="display: flex">
-                        <span>结果:</span>
-                        <el-tag size="small" :type="item.studentAnswer.passed == 0 ? 'danger' :item.studentAnswer.passed == 1?'success': 'warning'">{{item.studentAnswer.passed == 0 ? '错误' :item.studentAnswer.passed == 1? '正确' :'待批改' }}</el-tag>
-                      </div>
-                      <span>分数:{{data.form.examPaper.judgeScore}}</span>
-                      <span>解析:{{item.content.analyze}}</span>
-                      <span>正确答案:{{item.answer}}</span>
-                    </div>
-                    <el-divider />
-                  </div>
-                </div>
-              </div>
-            </div>
-            <div style="display: flex;flex-direction: column;margin: 0 30px" >
-              <div v-if="data.easyList && data.easyList.length >0">
-                <span style="font-size: 18px;font-weight: 600">简答题</span>
-                <div v-for="(item,index) in data.easyList" :key="index" style="margin-left: 15px;margin-top: 10px">
-                  <div style="display: flex;flex-direction: column;">
-                    <div style="margin-top: 10px;display: flex;align-items: center">
-                      <span style="font-size: 15px" :id="data.singleList.length + data.multiList.length + data.judgeList.length + index+1">{{data.singleList.length + data.multiList.length + data.judgeList.length + index+1}}.</span>
-                      <span style="margin-left: 10px;font-size: 16px">{{item.title}}</span>
-                    </div>
-                    <div style="display: flex;margin-top: 15px;margin-left: 30px">
-                     <span style="font-weight: 600">{{item.studentAnswer.answer}}</span>
-                    </div>
-                    <div style="display: flex;flex-direction: column;margin-left: 25px;margin-top: 20px;font-size: 14px;line-height: 25px">
-                      <div style="display: flex">
-                        <span>结果:</span>
-                        <el-tag size="small" :type="item.studentAnswer.passed == 0 ? 'danger' :item.studentAnswer.passed == 1?'success': 'warning'">{{item.studentAnswer.passed == 0 ? '错误' :item.studentAnswer.passed == 1? '正确' :'待批改' }}</el-tag>
-                      </div>
-                      <span>分数:{{data.form.examPaper.easyScore}}</span>
-                      <span>解析:{{item.content.analyze}}</span>
-                      <span>正确答案:{{item.answer}}</span>
-                      <div style="display: flex;align-items: center;margin-top: 5px" v-if="item.studentAnswer.passed == 2">
-                        <span style="color: #EAB308">批改:</span>
-                        <el-input-number v-model="item.score" :min="0" :max="data.form.examPaper.easyScore" :step="1" />
-                      </div>
-                      <div style="display: flex;align-items: center;margin-top: 5px" v-else>
-                        <span style="color: #EAB308">得分:</span>
-                        <el-input-number v-model="item.studentAnswer.score" :min="0" :max="data.form.examPaper.easyScore" :step="1" disabled />
-                      </div>
-
-                    </div>
-                    <el-divider />
-                  </div>
-                </div>
-              </div>
-            </div>
-          </el-card>
-        </div>
-      </div>
-      <el-backtop target=""></el-backtop>
-    </div>
-  </div>
-</template>
-<script setup>
-import {onMounted, reactive, ref} from "vue";
-import Cookies from "js-cookie";
-import {useRoute, useRouter} from "vue-router";
-import {getClassification} from "@/api/onlineEducation/courseClass";
-import {ElMessage, ElMessageBox} from "element-plus";
-import {doConfirmExam, getPaperStu} from "@/api/onlineEducation/exam";
-import {removeToken} from "@/utils/auth";
-import {isRelogin} from "@/utils/request";
-const route = useRoute()
-const router = useRouter();
-
-const backValue = ref()
-const data = reactive({
-  queryParams: {
-    id: null,
-    paperId: null,
-    pageNum: 1,
-    pageSize: 10,
-    state: null,
-  },
-  form: {
-    id: null,
-    paperId: null,
-    studentId: null,
-    examPaper: {},
-    questions: [],
-    student: {}
-  },
-  singleList:[],
-  judgeList: [],
-  multiList:[],
-  easyList: [],
-});
-onMounted(async ()=>{
-  const val = JSON.parse(route.query.val)
-  backValue.value = val
-  data.queryParams.paperId = val.paperId
-  data.queryParams.id = val.id
-  data.queryParams.state = val.state
-  await getStuPaper()
-})
-
-const getStuPaper = async () => {
-  const param = {
-    paperStudentId: data.queryParams.id
-  }
-  const res = await getPaperStu(param);
-  if(res.code === 200){
-    data.form = res.data
-    data.form.totalScore = res.data.examPaper.judgeNum * res.data.examPaper.judgeScore + res.data.examPaper.multiNum * res.data.examPaper.multiScore + res.data.examPaper.singleNum * res.data.examPaper.singleScore+ res.data.examPaper.easyNum * res.data.examPaper.easyScore
-    reduceData();
-  }else{
-    ElMessage.warning(res.message)
-  }
-}
-const reduceData = () => {
-  let result = data.form.questions.reduce((a, b) => {
-    if (a[b.questionType]) {
-      a[b.questionType].push(b);
-    } else {
-      a[b.questionType] = [b];
-    }
-    return a;
-  }, {});
-  for (const resultKey in result) {
-    if(resultKey == 1){
-      data.singleList.push(result[resultKey])
-
-    }else if(resultKey == 2){
-      data.multiList.push(result[resultKey])
-    }else if(resultKey == 3){
-      data.judgeList.push(result[resultKey])
-    }else {
-      data.easyList.push(result[resultKey])
-    }
-  }
-  if(data.singleList && data.singleList.length>0){
-    data.singleList = JSON.parse(JSON.stringify(data.singleList[0])).map(item => {
-      return {
-        ...item,
-        content: JSON.parse(item.content)
-      }
-    })
-  }
-  if(data.judgeList && data.judgeList.length>0){
-    data.judgeList = JSON.parse(JSON.stringify(data.judgeList[0])).map(item => {
-      return {
-        ...item,
-        content: JSON.parse(item.content),
-      }
-    })
-  }
-  if(data.multiList && data.multiList.length>0){
-    data.multiList = JSON.parse(JSON.stringify(data.multiList[0])).map(item => {
-      return {
-        ...item,
-        content: JSON.parse(item.content),
-        studentAnswer: {
-          answerArr:item.studentAnswer.answer?item.studentAnswer.answer.split(','):[],
-          answer: item.studentAnswer.answer,
-          id: item.studentAnswer.id,
-          paperId: item.studentAnswer.paperId,
-          passed: item.studentAnswer.passed,
-          questionId: item.studentAnswer.questionId,
-          score: item.studentAnswer.score,
-          studentId: item.studentAnswer.studentId,
-        }
-      }
-    })
-  }
-  if(data.easyList && data.easyList.length>0){
-    data.easyList = JSON.parse(JSON.stringify(data.easyList[0])).map(item => {
-      return {
-        ...item,
-        content: JSON.parse(item.content)
-      }
-    })
-  }
-}
-const back = () => {
-  const obj = {
-    type: 'exam',
-    paperId: data.queryParams.paperId,
-    pageNum: backValue.value.pageNum,
-    pageSize: backValue.value.pageSize,
-  }
-  const v = JSON.stringify(obj)
-  router.push({ path: "/examStu", query: { val: v } });
-}
-const submitExam = async() => {
-  const questions = data.easyList.map(item => {
-    return {
-      questionId: item.id,
-      score: item.score,
-    }
-  })
-  questions.forEach(item => {
-    if(item.score == '' || item.score == null){
-      ElMessage.warning('有未批改题目');
-      return;
-    }
-  })
-  const param = {
-    id:data.form.id,
-    paperId: data.form.paperId,
-    studentId: data.form.studentId,
-    questions: questions
-  }
-
-  const res = await doConfirmExam(param);
-  if(res.code === 200){
-    await getStuPaper()
-    await ElMessageBox.alert(`试卷得分:${data.form.score}分`, '考试结果', {
-      confirmButtonText: '关闭',
-      callback: async () => {
-        // back()
-      },
-    })
-  }else{
-    ElMessage.warning(res.message)
-  }
-  console.log('简答',param)
-
-}
-const toView = (data) => {
-  document?.getElementById(data)?.scrollIntoView({
-    behavior: "smooth", //smooth:平滑,auto:直接定位
-    block: "center",
-    inline: "center",
-  });
-}
-
-</script>
-
-<style scoped lang="scss">
-.app-container {
-  .paper-contain {
-    display: flex;
-    flex-direction: row;
-    //background-color: #eff3f7;
-    height: 100%;
-  }
-
-  .paper-left {
-    width: 270px;
-    height: 100%;
-
-    .left-content {
-      width: 270px;
-      height: 100%;
-      position: fixed;
-      z-index: 999;
-    }
-  }
-
-  .paper-right {
-    flex: 1;
-    //background-color: #fff;
-    margin-left: 20px
-  }
-
-  :deep(.el-tag--large) {
-    width: 32px
-  }
-  ::-webkit-scrollbar {
-    width: 5px;
-    height: 5px;
-    background-color: #e7e7e7;
-    opacity: 0;
-  }
-  ::-webkit-scrollbar-track {
-    border-radius: 10px;
-    background-color: #ffffff;
-  }
-  ::-webkit-scrollbar-thumb {
-    border-radius: 10px;
-    /*-webkit-box-shadow: inset 0 0 6px rgba(154,154,154,.3);*/
-    background-color: #e7e7e7;
-  }
-}
-.examInfo{
-  font-size: 15px;
-  margin-top: 20px;
-  display: flex;
-  flex-direction: column;
-  line-height: 25px;
-}
-.toRed{
-  color: #3b4cf6;
-}
-</style>
diff --git a/src/views/onlineEducation/groupExams/components/examChooseStudent.vue b/src/views/onlineEducation/groupExams/components/examChooseStudent.vue
deleted file mode 100644
index 76ae610..0000000
--- a/src/views/onlineEducation/groupExams/components/examChooseStudent.vue
+++ /dev/null
@@ -1,285 +0,0 @@
-<template>
-  <div class="notice">
-    <el-dialog
-        v-model="dialogVisible"
-        :title="title"
-        width="800px"
-        :before-close="handleClose"
-        :close-on-press-escape="false"
-        :close-on-click-modal="false"
-    >
-      <div style="margin-bottom: 10px;margin-left: 30px">
-        <el-checkbox v-model="state.bindBatchStu" @change="changeBind">绑定批次人员</el-checkbox>
-        <el-select
-            v-if="state.bindBatchStu"
-            multiple
-            collapse-tags
-            collapse-tags-tooltip
-            v-model="state.form.phaseIds"
-            style="width: 160px;margin: 0 20px"
-            v-loadMoreNew:[reselectExam]="handleScroll"
-            :popper-class="reselectExam.name"
-            class="item-width"
-            placeholder="请选择批次"
-        >
-          <el-option
-              v-for="item in state.batchList"
-              :key="item.id"
-              :label="item.name"
-              :value="item.id"
-          />
-        </el-select>
-      </div>
-      <div>
-        <el-form :inline="true" style="display: flex;align-items: center;flex-wrap: wrap;" >
-          <el-form-item >
-            <!--            <el-checkbox v-model="state.DisableSelection">一键全选</el-checkbox>-->
-          </el-form-item>
-          <el-form-item label="姓名:" >
-            <el-input v-model="state.queryParams.name" placeholder="请输入姓名"></el-input>
-          </el-form-item>
-          <el-form-item label="职务:" >
-            <el-input v-model="state.queryParams.duty" placeholder="请输入职务"></el-input>
-          </el-form-item>
-          <el-form-item >
-            <el-button
-                type="primary"
-                @click="getList"
-            >查询</el-button>
-            <el-button
-                type="primary"
-                plain
-                @click="resetQuery"
-            >重置</el-button>
-          </el-form-item>
-        </el-form>
-      </div>
-
-      <!-- 表格数据 -->
-      <el-table
-          ref="tableRef"
-          v-loading="loading"
-          :data="state.dataList"
-          :border="true"
-          :row-key="getRowKey"
-          @selection-change="handleSelectionChange"
-          v-model="state.selectRowKeys"
-      >
-        <el-table-column type="selection" :reserve-selection="true" width="55" align="center" />
-<!--        <el-table-column label="序号" type="index" align="center" width="80" />-->
-        <el-table-column label="工号" prop="empno" align="center" width="60"  />
-        <el-table-column label="姓名" prop="name" align="center"  />
-        <el-table-column label="性别" prop="sex" align="center" >
-          <template #default="scope">
-            <span>{{scope.row.sex == 0 ? '男':'女'}}</span>
-          </template>
-        </el-table-column>
-        <el-table-column label="手机号" prop="phone" align="center" width="130"/>
-        <el-table-column label="身份证" prop="idNo" align="center" width="200" :show-overflow-tooltip="true"/>
-<!--        <el-table-column label="创建人" prop="createBy" align="center"/>-->
-        <el-table-column label="工作岗位" prop="post" align="center"/>
-        <el-table-column label="职务" prop="duty" align="center"/>
-<!--        <el-table-column label="一人一档" prop="duty" align="center" width="120">-->
-<!--          <template #default="scope">-->
-<!--            <el-button link type="primary">培训考试记录</el-button>-->
-<!--          </template>-->
-<!--        </el-table-column>-->
-      </el-table>
-
-      <pagination
-          v-show="state.total> 0"
-          :total="state.total"
-          v-model:page="state.queryParams.pageNum"
-          v-model:limit="state.queryParams.pageSize"
-          @pagination="getList"
-      />
-      <template #footer>
-        <span class="dialog-footer">
-            <el-button @click="handleClose" size="default">取 消</el-button>
-            <el-button type="primary"  @click="onSubmit" size="default" v-preReClick>确认</el-button>
-        </span>
-      </template>
-    </el-dialog>
-  </div>
-</template>
-<script setup>
-import {nextTick, reactive, ref, toRefs} from 'vue'
-import {ElMessage} from "element-plus";
-import Cookies from "js-cookie";
-import {
-  addQuestionBank,
-  checkQuestionBankName,
-  editQuestionBank,
-  getQuestionBank
-} from "@/api/onlineEducation/questionBank";
-import {getStudent} from "@/api/onlineEducation/student";
-import {batchAddStudent, getBatch} from "@/api/onlineEducation/batch";
-import {examAddStudent} from "@/api/onlineEducation/exam";
-
-const dialogVisible = ref(false);
-const title = ref("");
-const tableRef = ref();
-const length = ref()
-const emit = defineEmits(["getList"]);
-const startUsername = ref('');
-const classifyRef = ref(null)
-const state = reactive({
-  form: {
-    paperId: null,
-    phaseIds: [],
-    studentIds: []
-  },
-  isAdmin: false,
-  total: 0,
-  queryParams: {
-    pageNum: 1,
-    pageSize: 10,
-    name: '',
-    duty: ''
-  },
-  dataList: [],
-  totalItems: 0, // 总数据条数,从后端接口获取
-  phaseId: null,
-  chooseStu: [],
-  companyId: null,
-  selectRowKeys: [],
-  batchList: [],
-  batchPageNum: 1, // 当前页码
-  batchPageSize: 10, // 每页显示的数量
-  hasMoreItemsBatch: null, // 是否还有更多选项
-  bindBatchStu: false
-
-})
-const loading = ref(false);
-
-const reselectExam = reactive({
-  name: 'ExamBatch'
-})
-const getRowKey = (row) => {
-  return row.id
-}
-const openDialog = async (data) => {
-  // state.selectRowKeys = [10,11]
-
-  state.form.paperId = data.queryParams.paperId
-  title.value = '学员选择';
-  dialogVisible.value = true;
-  await getList()
-  await loadMoreBatchData()
-}
-
-const getList = async () => {
-  loading.value = true
-  const res = await getStudent(state.queryParams)
-  if(res.code == 200){
-    state.dataList = res.data.list
-    state.total = res.data.total
-    // await nextTick(() => {
-    //   const currentIds = state.dataList.map(row => row.id)
-    //   const selectIds = state.selectRowKeys.filter(id => currentIds.includes(id))
-    //   state.dataList.forEach(row => {
-    //     if (selectIds.includes(row.id)) {
-    //       tableRef.value.toggleRowSelection(row, true);
-    //     }
-    //   })
-    // });
-  }else{
-    ElMessage.warning(res.message)
-  }
-  loading.value = false
-}
-
-const onSubmit = async () => {
-    const res = await examAddStudent(state.form)
-    if(res.code === 200){
-      ElMessage({
-        type: 'success',
-        message: '新增成功'
-      });
-    }else{
-      ElMessage.warning(res.message)
-    }
-    emit("getList")
-    reset();
-    dialogVisible.value = false;
-}
-
-const handleClose = () => {
-  reset();
-  dialogVisible.value = false;
-  emit("getList")
-}
-const reset = () => {
-  state.form = {
-    paperId: null,
-    phaseIds: [],
-    studentIds: []
-  }
-  state.bindBatchStu = false;
-  state.batchList = [];
-  state.batchPageNum = 1;
-  state.batchPageSize = 10;
-  state.hasMoreItemsBatch = null;
-  tableRef.value.clearSelection();
-  state.dataList = []
-  state.total = 0
-  state.queryParams ={
-    pageNum: 1,
-    pageSize: 10
-  }
-}
-const handleSelectionChange = (val) => {
-  state.form.studentIds = val.map(item => item.id)
-  console.log("选中的行",  state.form.studentIds)
-}
-
-const handleScroll = () => {
-  if(state.batchPageNum >= state.hasMoreItemsBatch) return
-  state.batchPageNum++;
-  loadMoreBatchData()
-}
-const loadMoreBatchData = async () => {
-  console.log(' Bank');
-  const queryParams = {
-    pageNum: state.batchPageNum,
-    pageSize: state.batchPageSize,
-  }
-  const res = await getBatch(queryParams)
-  if (res.code == 200) {
-    state.hasMoreItemsBatch = res.data.totalPage
-    const data = res.data
-    state.batchList = state.batchList.concat(data.list)
-  }else{
-    ElMessage.warning(res.message)
-  }
-}
-const changeBind = (val) => {
-  console.log('vv',val)
-}
-const resetQuery = () => {
-  state.queryParams ={
-    pageNum: 1,
-    pageSize: 10,
-    name: '',
-    duty: ''
-  }
-  getList()
-}
-defineExpose({
-  openDialog
-});
-
-</script>
-
-<style scoped lang="scss">
-.notice{
-  :deep(.el-form .el-form-item__label) {
-    font-size: 15px;
-  }
-  .file {
-    display: flex;
-    flex-direction: column;
-    align-items: flex-start;
-  }
-}
-</style>
diff --git a/src/views/onlineEducation/groupExams/components/examDialog.vue b/src/views/onlineEducation/groupExams/components/examDialog.vue
deleted file mode 100644
index 8af519d..0000000
--- a/src/views/onlineEducation/groupExams/components/examDialog.vue
+++ /dev/null
@@ -1,745 +0,0 @@
-<template>
-  <div class="notice">
-    <el-dialog
-        v-model="dialogVisible"
-        width="800px"
-        :before-close="handleClose"
-        destroy-on-close
-        :close-on-press-escape="false"
-        :close-on-click-modal="false"
-    >
-      <el-form :model="state.form" size="default" ref="busRef" :rules="state.formRules" label-width="150px" >
-          <span style="font-size: 20px;font-weight: 800;margin-left: 20px">考试配置</span>
-          <div style="margin: 20px 20px">
-            <el-form-item label="考试名称:" prop="name">
-              <el-input v-model.trim="state.form.name" placeholder="请输入考试名称"></el-input>
-            </el-form-item>
-            <el-form-item label="课程分类:" prop="categoryId" >
-              <el-cascader
-                  style="width: 100%"
-                  ref="classifyRef"
-                  v-model="state.form.categoryId"
-                  :options="state.classifyList"
-                  :props="state.props"
-                  clearable
-                  :show-all-levels="false"
-                  @change="handleChange"
-              />
-            </el-form-item>
-          </div>
-        <span style="font-size: 20px;font-weight: 800;margin-left: 20px">组卷信息</span>
-        <div  style="display: flex">
-          <div class="group">
-            <div>
-              单选:<el-input style="max-width: 40px" v-model.trim="state.form.singleNum"></el-input>&nbsp;题
-            </div>
-            <div style="margin-left: 20px">
-              每题:<el-input style="max-width: 40px" v-model.trim="state.form.singleScore"></el-input>&nbsp;分
-            </div>
-          </div>
-          <div class="group" >
-           <div>
-             共&nbsp;
-             <span style="max-width: 30px" v-show="state.form.singleNum && state.form.singleScore">{{state.form.singleNum * state.form.singleScore}}</span>
-<!--             <span v-else></span>-->
-             &nbsp;分
-           </div>
-            <el-select
-                clearable
-                v-model="state.form.singleBankName"
-                filterable
-                remote
-                reserve-keyword
-                placeholder="请输入单选题库"
-                remote-show-suffix
-                :remote-method="getBankList"
-                style="width: 160px;margin: 0 20px"
-                @change="selectSingleValue"
-            >
-              <el-option
-                  v-for="item in state.bankList"
-                  :key="item.id"
-                  :label="item.name"
-                  :value="item.name"
-              />
-            </el-select>
-<!--            <el-select-->
-<!--                clearable-->
-<!--                v-model="state.form.singleBankId"-->
-<!--                style="width: 160px;margin: 0 20px"-->
-<!--                v-loadMoreNew:[reselectSingle]="handleScroll"-->
-<!--                :popper-class="reselectSingle.name"-->
-<!--                class="item-width"-->
-<!--                placeholder="请选择单选题题库"-->
-<!--            >-->
-<!--              <el-option-->
-<!--                  v-for="item in state.bankListSingle"-->
-<!--                  :key="item.id"-->
-<!--                  :label="item.name"-->
-<!--                  :value="item.id"-->
-<!--              />-->
-<!--            </el-select>-->
-          <el-radio-group v-model="state.form.singleMethod"  >
-            <el-radio :label="1" style="max-width: 30px">随机</el-radio>
-            <el-radio :label="2" style="max-width: 30px">顺序</el-radio>
-          </el-radio-group >
-            <el-radio-group v-model="state.form.singleRebuild" style="margin-left: 30px" >
-              <el-radio :label="1" v-if="title === '编辑'" style="max-width: 30px">重新出题</el-radio>
-            </el-radio-group>
-          </div>
-        </div>
-        <div  style="display: flex">
-          <div class="group">
-            <div>
-              多选:<el-input style="max-width: 40px" v-model="state.form.multiNum"></el-input>&nbsp;题
-            </div>
-            <div style="margin-left: 20px">
-              每题:<el-input style="max-width: 40px" v-model="state.form.multiScore"></el-input>&nbsp;分
-            </div>
-          </div>
-          <div class="group" >
-            <div >
-              共&nbsp;
-              <span style="max-width: 30px" v-show="state.form.multiNum && state.form.multiScore">{{state.form.multiNum * state.form.multiScore}}</span>
-<!--              <span v-else></span>-->
-              &nbsp;分
-            </div>
-            <el-select
-                clearable
-                v-model="state.form.multiBankName"
-                filterable
-                remote
-                reserve-keyword
-                placeholder="请输入多选题库"
-                remote-show-suffix
-                :remote-method="getBankList"
-                style="width: 160px;margin: 0 20px"
-                @change="selectMultiValue"
-            >
-              <el-option
-                  v-for="item in state.bankList"
-                  :key="item.id"
-                  :label="item.name"
-                  :value="item.name"
-              />
-            </el-select>
-<!--            <el-select-->
-<!--                clearable-->
-<!--                v-model="state.form.multiBankId"-->
-<!--                style="width: 160px;margin: 0 20px"-->
-<!--                v-loadMoreNew:[reselectSingle]="handleScroll"-->
-<!--                :popper-class="reselectSingle.name"-->
-<!--                class="item-width"-->
-<!--                placeholder="请选择多选题题库"-->
-<!--            >-->
-<!--              <el-option-->
-<!--                  v-for="item in state.bankListSingle"-->
-<!--                  :key="item.id"-->
-<!--                  :label="item.name"-->
-<!--                  :value="item.id"-->
-<!--              />-->
-<!--            </el-select>-->
-            <el-radio-group v-model="state.form.multiMethod"  >
-              <el-radio :label="1" style="max-width: 30px">随机</el-radio>
-              <el-radio :label="2" style="max-width: 30px">顺序</el-radio>
-            </el-radio-group>
-            <el-radio-group v-model="state.form.multiRebuild" style="margin-left: 30px" >
-              <el-radio :label="1" v-if="title === '编辑'" style="max-width: 30px">重新出题</el-radio>
-            </el-radio-group>
-          </div>
-        </div>
-        <div  style="display: flex">
-          <div class="group">
-            <div>
-              判断:<el-input style="max-width: 40px" v-model="state.form.judgeNum"></el-input>&nbsp;题
-            </div>
-            <div style="margin-left: 20px">
-              每题:<el-input style="max-width: 40px" v-model="state.form.judgeScore"></el-input>&nbsp;分
-            </div>
-          </div>
-          <div class="group" >
-            <div>
-              共&nbsp;
-              <span style="max-width: 30px" v-show="state.form.judgeNum && state.form.judgeScore">{{state.form.judgeNum * state.form.judgeScore}}</span>
-<!--              <span v-else></span>-->
-              &nbsp;分
-            </div>
-            <el-select
-                clearable
-                v-model="state.form.judgeBankName"
-                filterable
-                remote
-                reserve-keyword
-                placeholder="请输入判断题库"
-                remote-show-suffix
-                :remote-method="getBankList"
-                style="width: 160px;margin: 0 20px"
-                @change="selectJudgeValue"
-            >
-              <el-option
-                  v-for="item in state.bankList"
-                  :key="item.id"
-                  :label="item.name"
-                  :value="item.name"
-              />
-            </el-select>
-<!--            <el-select-->
-<!--                clearable-->
-<!--                v-model="state.form.judgeBankId"-->
-<!--                style="width: 160px;margin: 0 20px"-->
-<!--                v-loadMoreNew:[reselectSingle]="handleScroll"-->
-<!--                :popper-class="reselectSingle.name"-->
-<!--                class="item-width"-->
-<!--                placeholder="请选择判断题题库"-->
-<!--            >-->
-<!--              <el-option-->
-<!--                  v-for="item in state.bankListSingle"-->
-<!--                  :key="item.id"-->
-<!--                  :label="item.name"-->
-<!--                  :value="item.id"-->
-<!--              />-->
-<!--            </el-select>-->
-            <el-radio-group v-model="state.form.judgeMethod"  >
-              <el-radio :label="1" style="max-width: 30px">随机</el-radio>
-              <el-radio :label="2" style="max-width: 30px">顺序</el-radio>
-            </el-radio-group>
-            <el-radio-group v-model="state.form.judgeRebuild" style="margin-left: 30px" >
-              <el-radio :label="1" v-if="title === '编辑'" style="max-width: 30px">重新出题</el-radio>
-            </el-radio-group>
-          </div>
-        </div>
-        <div  style="display: flex">
-          <div class="group">
-            <div>
-              简答:<el-input style="max-width: 40px" v-model="state.form.easyNum"></el-input>&nbsp;题
-            </div>
-            <div style="margin-left: 20px">
-              每题:<el-input style="max-width: 40px" v-model="state.form.easyScore"></el-input>&nbsp;分
-            </div>
-          </div>
-          <div class="group" >
-            <div>
-              共&nbsp;
-              <span style="max-width: 30px" v-show="state.form.easyNum && state.form.easyScore">{{state.form.easyNum * state.form.easyScore}}</span>
-              <!--              <span v-else></span>-->
-              &nbsp;分
-            </div>
-            <el-select
-                clearable
-                v-model="state.form.easyBankName"
-                filterable
-                remote
-                reserve-keyword
-                placeholder="请输入简答题库"
-                remote-show-suffix
-                :remote-method="getBankList"
-                style="width: 160px;margin: 0 20px"
-                @change="selectEasyValue"
-            >
-              <el-option
-                  v-for="item in state.bankList"
-                  :key="item.id"
-                  :label="item.name"
-                  :value="item.name"
-              />
-            </el-select>
-<!--            <el-select-->
-<!--                clearable-->
-<!--                v-model="state.form.easyBankId"-->
-<!--                style="width: 160px;margin: 0 20px"-->
-<!--                v-loadMoreNew:[reselectSingle]="handleScroll"-->
-<!--                :popper-class="reselectSingle.name"-->
-<!--                class="item-width"-->
-<!--                placeholder="请选择简答题题库"-->
-<!--            >-->
-<!--              <el-option-->
-<!--                  v-for="item in state.bankListSingle"-->
-<!--                  :key="item.id"-->
-<!--                  :label="item.name"-->
-<!--                  :value="item.id"-->
-<!--              />-->
-<!--            </el-select>-->
-            <el-radio-group v-model="state.form.easyMethod"  >
-              <el-radio :label="1" style="max-width: 30px">随机</el-radio>
-              <el-radio :label="2" style="max-width: 30px">顺序</el-radio>
-            </el-radio-group>
-            <el-radio-group v-model="state.form.easyRebuild" style="margin-left: 30px" >
-              <el-radio :label="1" v-if="title === '编辑'" style="max-width: 30px">重新出题</el-radio>
-            </el-radio-group>
-          </div>
-        </div>
-        <span class="group" style="margin-bottom: 20px">共计:
-          {{state.form.judgeNum * state.form.judgeScore+state.form.multiNum * state.form.multiScore+state.form.singleNum * state.form.singleScore+state.form.easyNum * state.form.easyScore}}
-          &nbsp;分</span>
-        <div style="display: flex;justify-content: space-between;align-items: center">
-          <el-form-item label="合格分数:" prop="passScore">
-            <el-input-number v-model="state.form.passScore" :min="1" :max="1000" style="margin-right: 10px" /> (大于等于)
-          </el-form-item>
-          <el-form-item label="限制时长:" prop="limitTime">
-            <el-input v-model="state.form.limitTime" style="max-width: 200px"  :disabled="state.form.limited === 0">
-              <template #append>分钟</template>
-            </el-input>
-
-          </el-form-item>
-
-        </div>
-        <div style="display: flex;justify-content: space-between;align-items: center">
-          <el-form-item label="是否限制考试时长:" prop="limited" style="margin-left: 60px">
-            <el-radio-group v-model="state.form.limited" @change="changeLimit" >
-              <el-radio :label="0" style="max-width: 30px">否</el-radio>
-              <el-radio :label="1">是</el-radio>
-            </el-radio-group>
-          </el-form-item>
-          <el-form-item label="考试截止时间:" prop="deadline" style="margin-left: 60px">
-            <el-date-picker
-                v-model="state.form.deadline"
-                type="date"
-                placeholder="请选择截止时间"
-                format="YYYY-MM-DD"
-                value-format="YYYY-MM-DD 23:59:59"
-            />
-          </el-form-item>
-        </div>
-
-      </el-form>
-      <template #footer>
-        <span class="dialog-footer">
-            <el-button @click="handleClose" size="default">取 消</el-button>
-            <el-button type="primary"  @click="onSubmit" size="default" v-preReClick>确认</el-button>
-        </span>
-      </template>
-    </el-dialog>
-  </div>
-</template>
-<script setup>
-import {reactive, ref, toRefs} from 'vue'
-import {ElMessage} from "element-plus";
-
-import {
-  getClassification
-} from "@/api/onlineEducation/courseClass";
-import {addCourse, checkCourseName, editCourse, getCourseById} from "@/api/onlineEducation/courseManage";
-import {getToken} from "@/utils/auth";
-import {delPic, getBannerById} from "@/api/onlineEducation/banner";
-import Cookies from "js-cookie";
-import {
-  addQuestionBank,
-  checkQuestionBankName,
-  editQuestionBank,
-  getQuestionBank
-} from "@/api/onlineEducation/questionBank";
-import {addExam, checkExamName, editExam, getExamStudent, getPaper} from "@/api/onlineEducation/exam";
-import Student from "@/views/onlineEducation/groupExams/components/student.vue";
-
-const dialogVisible = ref(false);
-const title = ref("");
-const busRef = ref();
-const length = ref()
-const emit = defineEmits(["getList"]);
-const startUsername = ref('');
-const classifyRef = ref(null)
-
-const validateName = (rule, value, callback)=>{
-  if(value === ''){
-    callback(new Error('请输入考试名称'))
-  }else if(title.value === '编辑' && value === startUsername.value){
-    callback()
-  }else{
-    let param = {}
-    if(title.value === '新增') {
-      param = {
-        name:value
-      }
-    }else if(title.value === '编辑'){
-      param = {
-        name:value,
-        id: state.form.id
-      }
-    }
-    checkExamName(param).then((res)=>{
-      if(res.data == false){
-        callback(new Error('考试名称已被占用,请更换其他名称'))
-      }else{
-        callback()
-      }
-    })
-  }
-}
-const reselectSingle = reactive({
-  name: 'Single'
-})
-const state = reactive({
-  form: {
-    id: '',
-    name: '',
-    categoryId: null,
-    companyName: '',
-    companyId: null,
-    judgeBankId: null,
-    judgeMethod: 1,
-    judgeNum: null,
-    judgeScore: null,
-    multiBankId: null,
-    multiMethod: 1,
-    multiNum: null,
-    multiScore: null,
-    singleBankId: null,
-    singleMethod: 1,
-    singleNum: null,
-    singleScore: null,
-    limited: 1,
-    limitTime: null,
-    passScore: null,
-    judgeRebuild: null,
-    multiRebuild: null,
-    singleRebuild: null,
-    easyRebuild: null,
-    deadline: '',
-    easyNum: null,
-    easyScore: null,
-    easyBankId: null,
-    easyMethod: 1,
-    easyBankName: '',
-    singleBankName:'',
-    multiBankName: '',
-    judgeBankName: ''
-
-  },
-  formRules: {
-    name: [{required: true, trigger: "blur", validator: validateName}],
-    categoryId: [{required: true, message: '请选择课程分类', trigger: 'blur'}],
-    limited: [{required: true, message: '请选择是否限制考试时长', trigger: 'blur'}],
-    limitTime: [{required: true, message: '请输入考试限制时长', trigger: 'blur'}],
-    passScore: [{required: true, message: '请输入合格分数', trigger: 'blur'}],
-    deadline: [{required: true, message: '请选择考试截止时间', trigger: 'blur'}]
-  },
-  classifyList: [],
-  isAdmin: false,
-  props: {
-    checkStrictly: true,
-  },
-  bankListSingle: [],
-  bankSinglePageNum: 1, // 当前页码
-  bankSinglePageSize: 10, // 每页显示的数量
-  hasMoreItemsSingle: null, // 是否还有更多选项
-  initSingleBankName: '',
-  initMultiBankName: '',
-  initJudgeBankName: '',
-  initEasyBankName: '',
-})
-
-const openDialog = async (type, value) => {
-  await getClassifyList();
-  await getBankList('');
-  const userInfo = JSON.parse(Cookies.get('userInfo'))
-  console.log("userInfo",userInfo)
-  if(userInfo.userType === 0){
-    state.isAdmin = true;
-    state.form.companyName = ''
-    state.form.companyId = null
-  }else {
-    state.isAdmin = false;
-    state.form.companyName = userInfo.companyName
-    state.form.companyId = userInfo.companyId
-  }
-  title.value = type === 'addFirst' || type === 'add' ? '新增' : type ==='edit' ? '编辑' : '' ;
-  if(type === 'edit') {
-    const res = await getPaper(value.id)
-    if(res.code == 200){
-      state.form = res.data
-      state.form.easyNum = state.form.easyNum ? state.form.easyNum: null
-      state.form.easyScore = state.form.easyScore ? state.form.easyScore: null
-      state.form.singleNum = state.form.singleNum ? state.form.singleNum: null
-      state.form.singleScore = state.form.singleScore ? state.form.singleScore: null
-      state.form.multiNum = state.form.multiNum ? state.form.multiNum: null
-      state.form.multiScore = state.form.multiScore ? state.form.multiScore: null
-      state.form.judgeNum = state.form.judgeNum ? state.form.judgeNum: null
-      state.form.judgeScore = state.form.judgeScore ? state.form.judgeScore: null
-      startUsername.value = value.name;
-      state.initSingleBankName = state.form.singleBankName;
-      state.initMultiBankName= state.form.multiBankName;
-      state.initJudgeBankName= state.form.judgeBankName;
-      state.initEasyBankName= state.form.easyBankName;
-    }else{
-      ElMessage.warning(res.message)
-    }
-
-  }else if(type === 'add' && value ){
-    state.form.parentId = value.id
-  }
-  dialogVisible.value = true;
-}
-
-const onSubmit = async () => {
-  // if(state.isAdmin){
-  //   ElMessage({
-  //     type: 'warning',
-  //     message: '管理员暂无权限'
-  //   });
-  //   return;
-  // }
-  const total = state.form.judgeNum * state.form.judgeScore+state.form.multiNum * state.form.multiScore+state.form.singleNum * state.form.singleScore+state.form.easyNum * state.form.easyScore
-  if(state.form.passScore > total){
-      ElMessage({
-        type: 'warning',
-        message: '合格分数不能大于总分'
-      });
-      return;
-  }
-  // if(!(state.form.judgeBankId || state.form.multiBankId || state.form.singleBankId)){
-  //     ElMessage({
-  //       type: 'warning',
-  //       message: '请选择题库'
-  //     });
-  //     return;
-  // }
-  const valid = await busRef.value.validate();
-  if(valid){
-    if(title.value === '新增'){
-      const {id, ...data} = JSON.parse(JSON.stringify(state.form))
-      const res = await addExam(data)
-      if(res.code === 200){
-        ElMessage({
-          type: 'success',
-          message: '新增成功'
-        });
-      }else{
-        ElMessage.warning(res.message)
-      }
-      emit("getList")
-      busRef.value.clearValidate();
-      reset();
-      dialogVisible.value = false;
-    }else if(title.value === '编辑'){
-      const {...data} = JSON.parse(JSON.stringify(state.form))
-      const res = await editExam(data)
-      if(res.code === 200){
-        ElMessage({
-          type: 'success',
-          message: '编辑成功'
-        });
-      }else{
-        ElMessage.warning(res.message)
-      }
-      emit("getList")
-      busRef.value.clearValidate();
-      reset();
-      dialogVisible.value = false;
-    }
-  }
-}
-const  getClassifyList = async () => {
-  const res = await getClassification();
-  if(res.code === 200){
-    state.classifyList = recursion(res.data)
-  }else{
-    ElMessage.warning(res.message)
-  }
-}
-const recursion = (data) => {
-  let tmp = []
-  for (let i = 0; i < data.length; i++) {
-    let item = data[i]
-    // children为空
-    if (item.children&& item.children.length==0) {
-      tmp.push({
-        value: item.id,
-        label: item.name
-      })
-      // 有children
-    } else {
-      tmp.push({
-        value: item.id,
-        label: item.name,
-        children:recursion(item.children)
-      })
-    }
-  }
-  return tmp;
-}
-const handleChange = ()=> {
-  console.log("label====",classifyRef.value.getCheckedNodes()[0].value)
-  state.form.categoryId = classifyRef.value.getCheckedNodes()[0].value
-  // 我这里只是打印了一下label的值哦,需要赋值的话自己去赋值哦
-  if (classifyRef.value.popperVisible) {
-    classifyRef.value.togglePopperVisible()
-  }
-}
-
-const handleClose = () => {
-  busRef.value.clearValidate();
-  reset();
-  dialogVisible.value = false;
-  emit("getList")
-
-}
-const reset = () => {
-  state.form = {
-    id: '',
-    name: '',
-    categoryId: null,
-    companyName: '',
-    companyId: null,
-    judgeBankId: null,
-    judgeMethod: 1,
-    judgeNum: null,
-    judgeScore: null,
-    multiBankId: null,
-    multiMethod: 1,
-    multiNum: null,
-    multiScore: null,
-    singleBankId: null,
-    singleMethod: 1,
-    singleNum: null,
-    singleScore: null,
-    limited: 1,
-    limitTime: null,
-    passScore: null,
-    judgeRebuild: null,
-    multiRebuild: null,
-    singleRebuild: null,
-    easyRebuild: null,
-    easyNum: null,
-    easyScore: null,
-    easyBankId: null,
-    easyMethod: 1,
-    deadline: '',
-    easyBankName: '',
-    singleBankName:'',
-    multiBankName: '',
-    judgeBankName: ''
-
-  }
-  state.bankListSingle = [];
-  state.bankSinglePageNum = 1;
-  state.bankSinglePageSize = 10;
-}
-const handleScroll = () => {
-  if(state.bankSinglePageNum >= state.hasMoreItemsSingle) return
-  state.bankSinglePageNum++;
-  loadMoreBankData()
-
-}
-const loadMoreBankData = async () => {
-  console.log(' Bank');
-  const queryParams = {
-    pageNum: state.bankSinglePageNum,
-    pageSize: state.bankSinglePageSize,
-  }
-  const res = await getQuestionBank(queryParams)
-  if (res.code == 200) {
-    state.hasMoreItemsSingle = res.data.totalPage
-    const data = res.data
-    state.bankListSingle = state.bankListSingle.concat(data.list)
-  }else{
-    ElMessage.warning(res.message)
-  }
-}
-
-const getBankList = async (val)=>{
-  if(val != ""){
-    const queryParams = {
-      name: val
-    }
-    const res = await getQuestionBank(queryParams)
-    if (res.code == 200) {
-      state.bankList = res.data.list
-
-    } else {
-      ElMessage.warning(res.message)
-    }
-  }else {
-    const queryParams = {
-      pageNum: 1,
-      pageSize: 10
-    }
-    const res = await getQuestionBank(queryParams)
-    if (res.code == 200) {
-      state.bankList = res.data.list
-    } else {
-      ElMessage.warning(res.message)
-    }
-  }
-}
-const selectSingleValue = (val) => {
-  if(val != state.initSingleBankName){
-    state.form.singleRebuild = 1;
-  }else {
-    state.form.singleRebuild = 0;
-  }
-  state.bankList.forEach(item => {
-    if(item.name === val){
-      state.form.singleBankId = item.id
-    }
-  })
-}
-const selectMultiValue = (val) => {
-  if(val != state.initMultiBankName){
-    state.form.multiRebuild = 1;
-  }else {
-    state.form.multiRebuild = 0;
-  }
-  state.bankList.forEach(item => {
-    if(item.name === val){
-      state.form.multiBankId = item.id
-    }
-  })
-}
-const selectJudgeValue = (val) => {
-  if(val != state.initJudgeBankName){
-    state.form.judgeRebuild = 1;
-  }else {
-    state.form.judgeRebuild = 0;
-  }
-  state.bankList.forEach(item => {
-    if(item.name === val){
-      state.form.judgeBankId = item.id
-    }
-  })
-}
-const selectEasyValue = (val) => {
-  if(val != state.initEasyBankName){
-    state.form.easyRebuild = 1;
-  }else {
-    state.form.easyRebuild = 0;
-  }
-  state.bankList.forEach(item => {
-    if(item.name === val){
-      state.form.easyBankId = item.id
-    }
-  })
-}
-
-const changeLimit = (val) => {
-  state.form.limitTime = null
-  if(val === 0) {
-    state.form.limitTime = 0
-  }
-
-}
-defineExpose({
-  openDialog
-});
-
-</script>
-
-<style scoped lang="scss">
-.notice{
-  :deep(.el-form .el-form-item__label) {
-    font-size: 15px;
-  }
-  .file {
-    display: flex;
-    flex-direction: column;
-    align-items: flex-start;
-  }
-  .group{
-    display: flex;
-    align-items:center;
-    font-size: 15px;
-    font-weight: 700;
-    margin: 20px 0 0 35px;
-  }
-}
-
-</style>
diff --git a/src/views/onlineEducation/groupExams/components/student.vue b/src/views/onlineEducation/groupExams/components/student.vue
deleted file mode 100644
index e44bda8..0000000
--- a/src/views/onlineEducation/groupExams/components/student.vue
+++ /dev/null
@@ -1,294 +0,0 @@
-<template>
-  <div class="app-container">
-    <div style="display: flex;justify-content: space-between">
-      <el-form :inline="true" style="display: flex;align-items: center;flex-wrap: wrap;" >
-        <el-form-item>
-          <el-button
-              type="primary"
-              plain
-              icon="Plus"
-              @click="openDialog()"
-          >选择学员</el-button>
-        </el-form-item>
-        <el-form-item label="学生姓名:" >
-          <el-input v-model="data.queryParams.studentName" placeholder="请输入学生姓名"></el-input>
-        </el-form-item>
-        <el-form-item label="试卷状态:" >
-          <el-select
-              v-model="data.queryParams.state"
-              class="w100"
-              style="max-width: 180px"
-              clearable
-              size="default"
-          >
-            <el-option v-for="item in data.completeList" :key="item.id" :label="item.name" :value="item.id"></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item >
-          <el-button
-              type="primary"
-              @click="getList"
-          >查询</el-button>
-          <el-button
-              type="primary"
-              plain
-              @click="reset"
-          >重置</el-button>
-        </el-form-item>
-      </el-form>
-      <div>
-        <el-button
-            type="danger"
-            plain
-            icon="Delete"
-            @click="handleDeleteBatch"
-        >批量删除</el-button>
-        <el-button
-            type="primary"
-            plain
-            @click="back"
-        >返回</el-button>
-      </div>
-
-    </div>
-    <!-- 表格数据 -->
-    <el-table ref="tableRef" v-loading="loading" :data="dataList" :border="true" :row-key="getRowKey"  @selection-change="handleSelectionChange">
-      <el-table-column type="selection" :reserve-selection="true" width="55" align="center" />
-      <el-table-column label="序号" type="index" align="center" width="80" />
-      <el-table-column label="试卷名称" align="center" >
-        <template #default="scope">
-          <span>{{scope.row.examPaper.name}}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="学员名称" prop="studentName" align="center" >
-        <template #default="scope">
-          <span>{{scope.row.student.name}}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="手机号" prop="studentPhone" align="center" >
-        <template #default="scope">
-          <span>{{scope.row.student.phone}}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="试卷状态" prop="state" align="center" >
-        <template #default="scope">
-          <span>{{scope.row.state ===0 ? '待考试' : scope.row.state ===1 ? '待批阅':'批阅完成'}}</span>
-        </template>
-      </el-table-column>
-<!--      <el-table-column label="考试是否完成" prop="completed" align="center" >-->
-<!--        <template #default="scope">-->
-<!--          <span>{{scope.row.completed ===0 ? '未完成' : '已完成'}}</span>-->
-<!--        </template>-->
-<!--      </el-table-column>-->
-      <el-table-column label="成绩" prop="score" align="center" >
-        <template #default="scope">
-          <span>{{scope.row.state ===0 || scope.row.state ===1  ? '--' : scope.row.score}}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="是否合格" prop="passed" align="center"  >
-        <template #default="scope">
-          <span>{{scope.row.state ===0 || scope.row.state ===1  ? '--' : scope.row.passed === 0 ? '不合格' : '合格'}}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width"  width="180">
-        <template #default="scope">
-          <el-button link type="primary" @click="correct(scope.row)" v-if="scope.row.state != 0">批阅</el-button>
-          <el-button link type="danger" @click="handleDelete(scope.row)">删除</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-
-    <pagination
-        v-show="total > 0"
-        :total="total"
-        v-model:page="queryParams.pageNum"
-        v-model:limit="queryParams.pageSize"
-        @pagination="getList"
-    />
-
-    <exam-choose-student ref="dialogRef" @getList=getList></exam-choose-student>
-  </div>
-</template>
-
-<script setup>
-import {getCurrentInstance, onMounted, onUnmounted, reactive, ref, toRefs} from "vue";
-import {ElMessage, ElMessageBox} from "element-plus";
-import Cookies from "js-cookie";
-import {delQuestionBank, getQuestionBank} from "@/api/onlineEducation/questionBank";
-import {batchDelStudent, delBatchStu, getBatchStudent} from "@/api/onlineEducation/batch";
-import {useRoute, useRouter} from 'vue-router'
-import {delExamStu, examDelStudent, getExamStudent} from "@/api/onlineEducation/exam";
-import ExamChooseStudent from "@/views/onlineEducation/groupExams/components/examChooseStudent.vue";
-const route = useRoute()
-const router = useRouter();
-
-const { proxy } = getCurrentInstance();
-const loading = ref(false);
-const dialogRef = ref();
-const tableRef = ref();
-const data = reactive({
-  queryParams: {
-    paperId: null,
-    studentName: '',
-    state: null,
-    pageNum: 1,
-    pageSize: 10,
-  },
-  total: 0,
-  dataList: [],
-  isAdmin: false,
-  chooseStu: [],
-  completeList: [
-    {
-      id: 0,
-      name: '待考试'
-    },
-    {
-      id: 1,
-      name: '待批阅'
-    },
-    {
-      id: 2,
-      name: '批阅完成'
-    },
-  ]
-
-});
-
-const { queryParams, total, dataList } = toRefs(data);
-
-const backValue = ref()
-onMounted(async ()=>{
-
-  if(route.query.val){
-    const val = JSON.parse(route.query.val)
-    if(val.type == 'index'){
-      data.queryParams.pageNum = val.pageNum;
-      data.queryParams.pageSize = val.pageSize;
-      data.queryParams.paperId = val.id
-    }else {
-      data.queryParams.paperId = val.paperId
-      data.queryParams.pageNum = val.pageNum;
-      data.queryParams.pageSize = val.pageSize;
-    }
-  }
-  const userInfo = JSON.parse(Cookies.get('userInfo'))
-  console.log("userInfo",userInfo)
-  if(userInfo.userType === 0){
-    data.isAdmin = true;
-  }else {
-    data.isAdmin = false;
-  }
-  await getList()
-})
-onUnmounted(()=>{
-
-})
-
-const getRowKey = (row) => {
-  return row.id
-}
-
-const back = () => {
-  // router.push("/group");
-
-  const obj = {
-
-    pageNum: data.queryParams.pageNum,
-    pageSize: data.queryParams.pageSize,
-  }
-  const v = JSON.stringify(obj)
-  router.push({ path: "/group", query: { val: v } });
-}
-const getList = async () => {
-  loading.value = true
-  const res = await getExamStudent(data.queryParams)
-  if(res.code == 200){
-    data.dataList = res.data.list
-    data.total = res.data.total
-  }else{
-    ElMessage.warning(res.message)
-  }
-  loading.value = false
-}
-
-const openDialog = () => {
-  dialogRef.value.openDialog(data);
-}
-
-/** 重置新增的表单以及其他数据  */
-function reset() {
-  data.queryParams = {
-    paperId: data.queryParams.paperId,
-    studentName: '',
-    state: null,
-    pageNum: 1,
-    pageSize: 10,
-  }
-  getList()
-}
-const handleSelectionChange = (val) => {
-
-  console.log("选中的行", val)
-  data.chooseStu = val.map(item => item.id)
-}
-
-const correct = (val) => {
-  const obj = {
-    id: val.id,
-    paperId: data.queryParams.paperId,
-    pageNum: data.queryParams.pageNum,
-    pageSize: data.queryParams.pageSize,
-    state: val.state
-  }
-  const v = JSON.stringify(obj)
-  router.push({ path: "/correctExam", query: { val: v } });
-}
-const handleDelete = (val) => {
-  ElMessageBox.confirm(
-      '确定删除此条数据?',
-      '提示',
-      {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning',
-      })
-      .then( async() => {
-        const res = await delExamStu(val.id)
-        if(res.code == 200){
-          ElMessage.success('数据删除成功')
-          await getList()
-          tableRef.value.clearSelection();
-        }else{
-          ElMessage.warning(res.message)
-        }
-      })
-}
-const handleDeleteBatch = () => {
-  if(data.chooseStu && data.chooseStu.length <=0){
-    ElMessage.warning('请选择要删除的学员');
-    return false;
-  }
-  ElMessageBox.confirm(
-      '确定删除选择的所有数据?',
-      '提示',
-      {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning',
-      })
-      .then( async() => {
-        // const param = {
-        //   phaseStudentIds: data.chooseStu
-        // }
-        const res = await examDelStudent(data.chooseStu)
-        if(res.code == 200){
-          ElMessage.success('数据删除成功')
-          await getList()
-        }else{
-          ElMessage.warning(res.message)
-        }
-      })
-}
-
-</script>
diff --git a/src/views/onlineEducation/groupExams/components/viewExamQuestion.vue b/src/views/onlineEducation/groupExams/components/viewExamQuestion.vue
deleted file mode 100644
index 36d6a69..0000000
--- a/src/views/onlineEducation/groupExams/components/viewExamQuestion.vue
+++ /dev/null
@@ -1,213 +0,0 @@
-<template>
-  <div class="notice">
-    <el-dialog
-        v-model="dialogVisible"
-        title="试卷预览"
-        width="50%"
-        :before-close="handleClose"
-        :close-on-press-escape="false"
-        :close-on-click-modal="false"
-    >
-      <el-card style="height: 500px;overflow: scroll">
-        <div style="display: flex;flex-direction: column;margin: 0 30px" >
-          <div v-if="state.singleList && state.singleList.length >0">
-            <span style="font-size: 18px;font-weight: 600">单选题</span>
-            <div v-for="(item,index) in state.singleList" :key="index" style="margin-left: 15px;margin-top: 10px">
-              <div style="display: flex;flex-direction: column;">
-                <div style="margin-top: 10px;display: flex">
-                  <span style="font-size: 15px">题目{{index+1}}:</span>
-                  <span style="margin-left: 10px;font-size: 16px">{{item.title}}</span>
-                </div>
-                <div style="display: flex;margin-left: 10%;margin-top: 15px">
-                  <div v-for="single in item.content.items">
-                    <span style="font-size: 15px;margin-right: 5px">{{single.prefix}}</span>
-                    <span style="font-size: 15px;margin-right: 20px">{{single.content}}</span>
-                  </div>
-                </div>
-                <el-divider />
-              </div>
-            </div>
-          </div>
-        </div>
-        <div style="display: flex;flex-direction: column;margin: 30px 30px" >
-          <div v-if="state.multiList && state.multiList.length >0">
-            <span style="font-size: 18px;font-weight: 600">多选题</span>
-            <div v-for="(item,index) in state.multiList" :key="index" style="margin-left: 15px;margin-top: 10px">
-              <div style="display: flex;flex-direction: column;">
-                <div style="margin-top: 10px;display: flex">
-                  <span style="font-size: 15px">题目{{index+1}}:</span>
-                  <span style="margin-left: 10px;font-size: 16px">{{item.title}}</span>
-                </div>
-                <div style="display: flex;margin-left: 10%;margin-top: 15px">
-                  <div v-for="single in item.content.items">
-                    <span style="font-size: 15px;margin-right: 5px">{{single.prefix}}</span>
-                    <span style="font-size: 15px;margin-right: 20px">{{single.content}}</span>
-                  </div>
-                </div>
-                <el-divider />
-              </div>
-            </div>
-          </div>
-        </div>
-        <div style="display: flex;flex-direction: column;margin: 0 30px" >
-          <div v-if="state.judgeList && state.judgeList.length >0">
-            <span style="font-size: 18px;font-weight: 600">判断题</span>
-            <div v-for="(item,index) in state.judgeList" :key="index" style="margin-left: 15px;margin-top: 10px">
-              <div style="display: flex;flex-direction: column;">
-                <div style="margin-top: 10px;display: flex">
-                  <span style="font-size: 15px">题目{{index+1}}:</span>
-                  <span style="margin-left: 10px;font-size: 16px">{{item.title}}</span>
-                </div>
-                <div style="display: flex;margin-left: 10%;margin-top: 15px">
-                  <div v-for="single in item.content.items">
-                    <span style="font-size: 15px;margin-right: 5px">{{single.prefix}}</span>
-                    <span style="font-size: 15px;margin-right: 20px">{{single.content}}</span>
-                  </div>
-                </div>
-                <el-divider />
-              </div>
-            </div>
-          </div>
-        </div>
-        <div style="display: flex;flex-direction: column;margin: 0 30px" >
-          <div v-if="state.easyList && state.easyList.length >0">
-            <span style="font-size: 18px;font-weight: 600">简答</span>
-            <div v-for="(item,index) in state.easyList" :key="index" style="margin-left: 15px;margin-top: 10px">
-              <div style="display: flex;flex-direction: column;">
-                <div style="margin-top: 10px;display: flex">
-                  <span style="font-size: 15px">题目{{index+1}}:</span>
-                  <span style="margin-left: 10px;font-size: 16px">{{item.title}}</span>
-                </div>
-                <el-divider />
-              </div>
-            </div>
-          </div>
-        </div>
-      </el-card>
-    </el-dialog>
-  </div>
-</template>
-<script setup>
-import {reactive, ref, toRefs} from 'vue'
-import {ElMessage} from "element-plus";
-import {getPaper} from "@/api/onlineEducation/exam";
-const dialogVisible = ref(false);
-const title = ref("");
-const busRef = ref();
-const length = ref()
-const emit = defineEmits(["getList"]);
-const startUsername = ref('');
-
-const state = reactive({
-  form: {
-    id: '',
-    name: '',
-    categoryId: null,
-    companyName: '',
-    companyId: null
-  },
-  questionList: [],
-  singleList:[],
-  judgeList: [],
-  multiList:[],
-  easyList: []
-})
-
-const openDialog = async (value) => {
-  console.log('111',value)
-  dialogVisible.value = true;
-  const res = await getPaper(value.id)
-  if(res.code == 200){
-    let result = res.data.questions.reduce((a, b) => {
-      if (a[b.questionType]) {
-        a[b.questionType].push(b);
-      } else {
-        a[b.questionType] = [b];
-      }
-      return a;
-    }, {});
-    for (const resultKey in result) {
-      if(resultKey == 1){
-        state.singleList.push(result[resultKey])
-
-      }else if(resultKey == 2){
-        state.multiList.push(result[resultKey])
-      }else if(resultKey == 3){
-        state.judgeList.push(result[resultKey])
-      }else {
-        state.easyList.push(result[resultKey])
-      }
-    }
-    if(state.singleList && state.singleList.length>0){
-      state.singleList = JSON.parse(JSON.stringify(state.singleList[0])).map(item => {
-        return {
-          ...item,
-          content: JSON.parse(item.content)
-        }
-      })
-    }
-    if(state.judgeList && state.judgeList.length>0){
-      state.judgeList = JSON.parse(JSON.stringify(state.judgeList[0])).map(item => {
-        return {
-          ...item,
-          content: JSON.parse(item.content)
-        }
-      })
-    }
-    if(state.multiList && state.multiList.length>0){
-      state.multiList = JSON.parse(JSON.stringify(state.multiList[0])).map(item => {
-        return {
-          ...item,
-          content: JSON.parse(item.content)
-        }
-      })
-    }
-    if(state.easyList && state.easyList.length>0){
-      state.easyList = JSON.parse(JSON.stringify(state.easyList[0])).map(item => {
-        return {
-          ...item,
-          content: JSON.parse(item.content)
-        }
-      })
-    }
-  }else{
-    ElMessage.warning(res.message)
-  }
-
-  console.log('state.singleList',state.multiList)
-}
-
-const handleClose = () => {
-  state.singleList = [];
-  state.multiList = [];
-  state.judgeList = [];
-  state.easyList = [];
-  dialogVisible.value = false;
-  emit("getList")
-
-}
-const reset = () => {
-
-}
-defineExpose({
-  openDialog
-});
-
-</script>
-
-<style scoped lang="scss">
-.notice{
-  :deep(.el-form .el-form-item__label) {
-    font-size: 15px;
-  }
-
-  :deep(  .el-divider--horizontal) {
-    margin: 15px 0;
-  }
-  .file {
-    display: flex;
-    flex-direction: column;
-    align-items: flex-start;
-  }
-}
-</style>
diff --git a/src/views/onlineEducation/groupExams/index.vue b/src/views/onlineEducation/groupExams/index.vue
deleted file mode 100644
index 96c9c6b..0000000
--- a/src/views/onlineEducation/groupExams/index.vue
+++ /dev/null
@@ -1,266 +0,0 @@
-<template>
-  <div class="app-container">
-    <div style="display: flex;justify-content: space-between">
-      <el-form :inline="true" style="display: flex;align-items: center;flex-wrap: wrap;" >
-        <el-form-item>
-          <el-button
-              type="primary"
-              plain
-              @click="openDialog('add',{})"
-          >开始组卷考试</el-button>
-        </el-form-item>
-        <el-form-item label="考试名称:" >
-          <el-input v-model="data.queryParams.name" placeholder="请输入考试名称"></el-input>
-        </el-form-item>
-        <el-form-item label="科目/类别:" >
-          <el-cascader
-              style="width: 100%"
-              ref="classifyRef"
-              v-model="data.queryParams.categoryId"
-              :options="data.classifyList"
-              :props="data.props"
-              clearable
-              :show-all-levels="false"
-              @change="handleChange"
-          />
-        </el-form-item>
-        <el-form-item >
-          <el-button
-              type="primary"
-              @click="getList"
-          >查询</el-button>
-          <el-button
-              type="primary"
-              plain
-              @click="reset"
-          >重置</el-button>
-        </el-form-item>
-      </el-form>
-    </div>
-    <!-- 表格数据 -->
-    <el-table v-loading="loading" :data="dataList" :border="true">
-      <el-table-column label="编号" prop="code" align="center" width="135" />
-      <el-table-column label="考试名称" prop="name" align="center"  />
-      <el-table-column label="企业名称" prop="companyName" align="center"  />
-      <el-table-column label="创建账户" prop="createBy" align="center"  />
-      <el-table-column label="科目/类别" prop="categoryName" align="center"  />
-      <el-table-column label="完成人数/总人数" prop="" align="center"  width="135">
-        <template #default="scope">
-          <span>{{scope.row.paperStudentInfoVO.finishCount}}/{{scope.row.paperStudentInfoVO.studentCount}}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="合格人数" prop="" align="center">
-        <template #default="scope">
-          <span>{{scope.row.paperStudentInfoVO.passStudentCount}}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="平均分数" prop="" align="center" >
-        <template #default="scope">
-          <span>{{scope.row.paperStudentInfoVO.avgScore}}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="合格分/总分" prop="" align="center" width="120" >
-        <template #default="scope">
-          <span>{{scope.row.passScore}}/{{scope.row.judgeNum * scope.row.judgeScore + scope.row.multiNum * scope.row.multiScore + scope.row.singleNum * scope.row.singleScore+ scope.row.easyNum * scope.row.easyScore}}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="合格率" prop="passRate" align="center" />
-      <el-table-column label="限制时长/分钟" prop="limitTime" align="center"  width="120" >
-        <template #default="scope">
-          <span v-if="scope.row.limitTime == 0">不限时</span>
-          <span v-else>{{scope.row.limitTime}}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="考试截止时间" prop="deadlineNum" align="center"  width="120" >
-      </el-table-column>
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width"  width="260">
-        <template #default="scope">
-          <el-button link type="primary" @click="viewQuestion(scope.row)">预览</el-button>
-          <el-button link type="primary" @click="toStuChoose(scope.row)">学生数据</el-button>
-          <el-button link type="primary" @click="openDialog('edit',scope.row)">编辑</el-button>
-          <el-button link type="danger" @click="handleDelete(scope.row)">删除</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-
-    <pagination
-        v-show="total > 0"
-        :total="total"
-        v-model:page="queryParams.pageNum"
-        v-model:limit="queryParams.pageSize"
-        @pagination="getList"
-    />
-    <exam-dialog ref="dialogRef" @getList=getList></exam-dialog>
-
-    <exam-question ref="questionRef" @getList=getList></exam-question>
-  </div>
-</template>
-
-<script setup>
-import {getCurrentInstance, onMounted, onUnmounted, reactive, ref, toRefs} from "vue";
-import {ElMessage, ElMessageBox} from "element-plus";
-import examDialog from './components/examDialog.vue'
-import examQuestion from './components/viewExamQuestion.vue'
-import Cookies from "js-cookie";
-import {useRoute, useRouter} from 'vue-router'
-const router = useRouter()
-import {delQuestionBank, getQuestionBank} from "@/api/onlineEducation/questionBank";
-import {delBatch, getBatch} from "@/api/onlineEducation/batch";
-import {delExam, getExam} from "@/api/onlineEducation/exam";
-import {getClassification} from "@/api/onlineEducation/courseClass";
-const route = useRoute()
-
-const { proxy } = getCurrentInstance();
-const loading = ref(false);
-const dialogRef = ref();
-const questionRef = ref();
-const classifyRef = ref(null)
-const data = reactive({
-  queryParams: {
-    name:'',
-    categoryId: null,
-    pageNum: 1,
-    pageSize: 10,
-  },
-  total: 0,
-  dataList: [],
-  isAdmin: false,
-  companyName: '',
-  remainPeriod: null,
-  categoryList: [],
-  props: {
-    checkStrictly: true,
-  },
-
-});
-
-const { queryParams, total, dataList } = toRefs(data);
-
-onMounted(async ()=>{
-  if(route.query.val){
-    const val = JSON.parse(route.query.val)
-    if(val){
-      data.queryParams.pageNum = val.pageNum;
-      data.queryParams.pageSize = val.pageSize;
-    }
-  }
-  const userInfo = JSON.parse(Cookies.get('userInfo'))
-  console.log("userInfo",userInfo)
-  if(userInfo.userType === 0){
-    data.isAdmin = true;
-  }else {
-    data.isAdmin = false;
-    data.companyName = userInfo.companyName
-  }
-  await getClassifyList();
-  await getList()
-})
-onUnmounted(()=>{
-
-})
-
-const getList = async () => {
-  loading.value = true
-  const res = await getExam(data.queryParams)
-  if(res.code == 200){
-    data.dataList = res.data.list.map(item => {
-      return {
-        ...item,
-        passRate: item.paperStudentInfoVO.passStudentCount ===0 && item.paperStudentInfoVO.studentCount ===0  ? '0%': (item.paperStudentInfoVO.passStudentCount / item.paperStudentInfoVO.studentCount).toFixed(2) *100 + '%',
-        deadlineNum: item.deadline ? item.deadline.slice(0,10) : ''
-      }
-    })
-
-    data.total = res.data.total
-  }else{
-    ElMessage.warning(res.message)
-  }
-  loading.value = false
-}
-
-const openDialog = (type, value) => {
-  dialogRef.value.openDialog(type, value);
-}
-
-/** 重置新增的表单以及其他数据  */
-function reset() {
-  data.queryParams = {
-    name:'',
-    categoryId: null,
-    pageNum: 1,
-    pageSize: 10,
-  }
-  getList()
-}
-const handleDelete = (val) => {
-  ElMessageBox.confirm(
-      '确定删除此条数据?',
-      '提示',
-      {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning',
-      })
-      .then( async() => {
-        const res = await delExam(val.id)
-        if(res.code == 200){
-          ElMessage.success('数据删除成功')
-          await getList()
-        }else{
-          ElMessage.warning(res.message)
-        }
-      })
-}
-const toStuChoose = (val) => {
-  const obj = {
-    pageNum: data.queryParams.pageNum,
-    pageSize: data.queryParams.pageSize,
-    id: val.id,
-    type: 'index'
-  }
-  // val.pageNum = data.queryParams.pageNum;
-  // val.pageSize = data.queryParams.pageSize
-  const v = JSON.stringify(obj)
-  router.push({ path: "/examStu", query: { val: v } });
-}
-const viewQuestion = (val) => {
-  questionRef.value.openDialog(val)
-}
-const handleChange = ()=> {
-  console.log("label====",classifyRef.value.getCheckedNodes()[0].value)
-  data.queryParams.categoryId = classifyRef.value.getCheckedNodes()[0].value
-  // 我这里只是打印了一下label的值哦,需要赋值的话自己去赋值哦
-  if (classifyRef.value.popperVisible) {
-    classifyRef.value.togglePopperVisible()
-  }
-}
-const  getClassifyList = async () => {
-  const res = await getClassification();
-  if(res.code === 200){
-    data.classifyList = recursion(res.data)
-  }else{
-    ElMessage.warning(res.message)
-  }
-}
-const recursion = (data) => {
-  let tmp = []
-  for (let i = 0; i < data.length; i++) {
-    let item = data[i]
-    // children为空
-    if (item.children&& item.children.length==0) {
-      tmp.push({
-        value: item.id,
-        label: item.name
-      })
-      // 有children
-    } else {
-      tmp.push({
-        value: item.id,
-        label: item.name,
-        children:recursion(item.children)
-      })
-    }
-  }
-  return tmp;
-}
-</script>
diff --git a/src/views/onlineEducation/offlineEducation/components/recordDialog.vue b/src/views/onlineEducation/offlineEducation/components/recordDialog.vue
deleted file mode 100644
index b887e2a..0000000
--- a/src/views/onlineEducation/offlineEducation/components/recordDialog.vue
+++ /dev/null
@@ -1,334 +0,0 @@
-<template>
-  <div class="notice">
-    <el-dialog
-        v-model="dialogVisible"
-        :title="state.title"
-        width="550px"
-        :before-close="handleClose"
-        :close-on-press-escape="false"
-        :close-on-click-modal="false"
-    >
-      <el-form :model="state.form" size="default" ref="superRef" :rules="state.formRules" label-width="180px" >
-        <el-form-item label="企业名称:"  prop="companyName" >
-          <el-select
-              v-if="state.isAdmin"
-              v-model="state.form.companyName"
-              style="width: 100%"
-              v-loadMoreNew:[reselect]="handleScroll"
-              :popper-class="reselect.name"
-              @change="selectCompany"
-              class="item-width"
-          >
-            <el-option
-                v-for="item in state.companyList"
-                :key="item.id"
-                :label="item.name"
-                :value="item.name"
-            />
-          </el-select>
-
-          <el-input v-else v-model.trim="state.form.companyName" disabled ></el-input>
-        </el-form-item>
-        <el-form-item label="计划名称:"  prop="planName" >
-          <el-input v-model.trim="state.form.planName" placeholder="请输入计划名称"></el-input>
-        </el-form-item>
-        <el-form-item label="学员:"  prop="studentName" >
-          <el-select
-              v-model="state.form.studentName"
-              style="width: 100%"
-              v-loadMoreNew:[reselectStu]="handleScrollStu"
-              :popper-class="reselectStu.name"
-              class="m-2"
-              @change="selectValue"
-              placeholder="请选择学生"
-              popper-class="more_select_dropdown"
-          >
-            <el-option
-                v-for="item in state.studentList"
-                :key="item.id"
-                :label="item.name"
-                :value="item.name"
-            />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="课程名称:"  prop="courseName" >
-          <el-input v-model.trim="state.form.courseName" :disabled="disabled" placeholder="请输入课程名称" ></el-input>
-        </el-form-item>
-        <el-form-item label="培训等级:"  prop="level" >
-          <el-input v-model.trim="state.form.level" :disabled="disabled" placeholder="请输入培训等级" ></el-input>
-        </el-form-item>
-        <el-form-item label="要求课时(分):"  prop="period" >
-          <el-input v-model.trim="state.form.period" :disabled="disabled" placeholder="请输入要求课时(分)" ></el-input>
-        </el-form-item>
-        <el-form-item label="实际课时(分):"  prop="actualPeriod" >
-          <el-input v-model.trim="state.form.actualPeriod" :disabled="disabled" placeholder="请输入实际课时(分)" ></el-input>
-        </el-form-item>
-        <el-form-item label="考试成绩:"  prop="score" >
-          <el-input v-model.trim="state.form.score" :disabled="disabled" placeholder="请输入考试成绩" ></el-input>
-        </el-form-item>
-        <el-form-item label="是否合格:"  prop="passed" >
-          <el-radio-group v-model="state.form.passed"  :disabled="disabled">
-            <el-radio :label="0">不合格</el-radio>
-            <el-radio :label="1">合格</el-radio>
-          </el-radio-group>
-        </el-form-item>
-      </el-form>
-      <template #footer v-if="state.title !='查看'">
-        <span class="dialog-footer">
-            <el-button @click="handleClose" size="default">取 消</el-button>
-            <el-button type="primary"  @click="onSubmit" size="default" v-preReClick>确认</el-button>
-        </span>
-      </template>
-    </el-dialog>
-  </div>
-</template>
-<script setup>
-import {reactive, ref, toRefs, defineEmits, nextTick, onMounted} from 'vue'
-import { View } from "@element-plus/icons-vue";
-import scorllSelect from '@/components/scrollSelect/index.vue'
-import {ElMessage, ElMessageBox} from "element-plus";
-import {verifyPhone, verifyPwd, verifyUsername} from "@/utils/validate";
-import { checkUserName, checkPhone } from "@/api/login"
-import {getStudent, resetPwd} from "@/api/onlineEducation/student"
-import {Base64} from "js-base64"
-import Cookies from "js-cookie";
-import {addStudent, checkStuIdNo, checkStuPhone, editStudent} from "@/api/onlineEducation/student";
-import {addRecord, editRecord} from "@/api/onlineEducation/examRecord";
-import {getCompany} from "@/api/onlineEducation/company";
-
-const emit = defineEmits(["getList"]);
-const dialogVisible = ref(false)
-const superRef = ref(null)
-const scrollRef = ref(null)
-const reselect = reactive({
-  name: 'company'
-})
-const reselectStu = reactive({
-  name: 'student'
-})
-
-const state = reactive({
-  title: '',
-  form: {
-    id: null,
-    companyName: '',
-    planName: '',
-    studentId: '',
-    level: '',
-    period: '',
-    actualPeriod: '',
-    score: null,
-    passed: 0,
-    studentName: '',
-    courseName: '',
-    companyId: null
-
-  },
-  formRules:{
-    companyName: [{ required: true, message: '请输入企业名称', trigger: 'blur' }],
-    planName: [{ required: true, message: '请输入计划名称', trigger: 'blur' }],
-    studentName: [{ required: true, message: '请选择学员', trigger: 'blur' }],
-    level: [{ required: true, message: '请输入培训等级', trigger: 'blur' }],
-    period: [{ required: true, message: '请输入要求课时(分)', trigger: 'blur' }],
-    actualPeriod: [{ required: true, message: '实际课时(分)', trigger: 'blur' }],
-    score: [{ required: true, message: '请输入考试成绩', trigger: 'blur' }],
-  },
-  isAdmin: false,
-  studentList: [],
-  stuPageNum: 1, // 当前页码
-  stuPageSize: 10, // 每页显示的数量
-  hasMoreStu: null, // 是否还有更多选项
-  pageNum: 1,
-  pageSize: 10,
-  companyList: [],
-  companyPageNum: 1, // 当前页码
-  companyPageSize: 10, // 每页显示的数量
-  hasMoreItems: null, // 是否还有更多选项
-
-})
-onMounted(() => {
-
-});
-
-const disabled = ref(false);
-const openDialog = async (type, value) => {
-  await loadMoreStuData();
-  if(state.isAdmin){
-    await loadMoreCompanyData();
-  }
-  const userInfo = JSON.parse(Cookies.get('userInfo'))
-  console.log("userInfo",userInfo)
-  if(userInfo.userType === 0){
-    state.isAdmin = true;
-    state.form.userType = 0;
-  }else {
-    state.isAdmin = false;
-    state.form.companyId = userInfo.companyId;
-    state.form.companyName = userInfo.companyName;
-    state.form.userType = 1;
-  }
-
-  state.title = type === 'add' ? '新增' : type ==='edit' ? '编辑' : type ==='pwd' ? '修改密码' : '查看' ;
-  if(type === 'edit' || type === 'view') {
-    if( type === 'view'){
-      disabled.value = true;
-    }
-    state.form = value
-    // state.form.studentName = value.company.name;
-    console.log("ba",state.form)
-  }
-  if(type == 'pwd'){
-    state.form.id = value.id
-  }
-  dialogVisible.value = true
-}
-const onSubmit = async () => {
-  const valid = await superRef.value.validate();
-  if(valid){
-    if(state.title == '新增'){
-      const {id,...data} = state.form
-      const res = await addRecord(data)
-      if(res.code == 200){
-        ElMessage.success(res.message)
-        emit('getList')
-        handleClose()
-        dialogVisible.value = false;
-      }else{
-        ElMessage.warning(res.message)
-      }
-    }else if(state.title == '编辑'){
-      const {id, name, phone, sex, companyId, empno, post, duty, idNo} = state.form
-      const data = {id, name, phone, sex, companyId, empno, post, duty, idNo}
-      const res = await editRecord(data)
-      if(res.code == 200){
-        ElMessage.success(res.message)
-        emit('getList')
-        handleClose()
-      }else{
-        ElMessage.warning(res.message)
-      }
-    }else{
-      const {id,password} = state.form
-      const data = {id,password}
-      data.password = Base64.encode(data.password)
-      const res = await resetPwd(data)
-      if(res.code == 200){
-        ElMessage.success(res.message)
-        emit('getList')
-        handleClose()
-      }else{
-        ElMessage.warning(res.message)
-      }
-    }
-  }
-}
-
-const handleClose = () => {
-  state.form = {
-    id: null,
-    companyName: '',
-    planName: '',
-    studentId: '',
-    level: '',
-    period: '',
-    actualPeriod: '',
-    score: null,
-    passed: 0,
-    studentName: '',
-    courseName: '',
-    companyId: null
-
-  }
-  state.companyPageNum = 1;
-  state.companyPageSize = 10;
-  state.companyList = [];
-  state.stuPageNum = 1;
-  state.stuPageSize = 10;
-  state.studentList = [];
-  superRef.value.clearValidate();
-  superRef.value.resetFields()
-  dialogVisible.value = false;
-}
-
-const selectValue = (val) => {
-  state.studentList.forEach(item => {
-    if(item.name === val){
-      state.form.studentId = item.id
-    }
-  })
-}
-
-const selectCompany = (val) => {
-  state.companyList.forEach(item => {
-    if(item.name === val){
-      state.form.companyId = item.id
-    }
-  })
-}
-
-
-
-const handleScrollStu = () => {
-  console.log(' student',state.hasMoreStu);
-  if(state.stuPageNum >= state.hasMoreStu) return
-  state.stuPageNum++;
-  loadMoreStuData()
-
-}
-const loadMoreStuData = async () => {
-  const queryParams = {
-    pageNum: state.stuPageNum,
-    pageSize: state.stuPageSize,
-  }
-  const res = await getStudent(queryParams)
-  if (res.code == 200) {
-    state.hasMoreStu = res.data.totalPage
-    const data = res.data
-    state.studentList = state.studentList.concat(data.list)
-  }else{
-    ElMessage.warning(res.message)
-  }
-}
-
-const handleScroll = () => {
-  console.log(' Company',state.hasMoreItems);
-  if(state.companyPageNum >= state.hasMoreItems) return
-    state.companyPageNum++;
-    loadMoreCompanyData()
-
-}
-const loadMoreCompanyData = async () => {
-  const queryParams = {
-    pageNum: state.companyPageNum,
-    pageSize: state.companyPageSize,
-  }
-  const res = await getCompany(queryParams)
-  if (res.code == 200) {
-    state.hasMoreItems = res.data.totalPage
-    const data = res.data
-    state.companyList = state.companyList.concat(data.list)
-  }else{
-    ElMessage.warning(res.message)
-  }
-}
-
-
-
-defineExpose({
-  openDialog
-});
-
-</script>
-
-<style scoped lang="scss">
-.notice{
-  :deep(.el-form .el-form-item__label) {
-    font-size: 15px;
-  }
-  .file {
-    display: flex;
-    flex-direction: column;
-    align-items: flex-start;
-  }
-}
-</style>
diff --git a/src/views/onlineEducation/offlineEducation/index.vue b/src/views/onlineEducation/offlineEducation/index.vue
deleted file mode 100644
index 89abc80..0000000
--- a/src/views/onlineEducation/offlineEducation/index.vue
+++ /dev/null
@@ -1,180 +0,0 @@
-<template>
-  <div class="app-container">
-    <div style="display: flex;justify-content: space-between">
-      <el-form :inline="true" style="display: flex;align-items: center;flex-wrap: wrap;" >
-        <el-form-item>
-          <el-button
-              type="primary"
-              plain
-              icon="Plus"
-              @click="openDialog('add',{})"
-          >新增登记</el-button>
-        </el-form-item>
-        <el-form-item label="企业名称:" >
-          <el-input v-model="data.queryParams.companyName" placeholder="请输入企业名称"></el-input>
-        </el-form-item>
-        <el-form-item label="课程名称:" >
-          <el-input v-model="data.queryParams.courseName" placeholder="请输入课程名称"></el-input>
-        </el-form-item>
-        <el-form-item >
-          <el-button
-              type="primary"
-              @click="getList"
-          >查询</el-button>
-          <el-button
-              type="primary"
-              plain
-              @click="reset"
-          >重置</el-button>
-        </el-form-item>
-      </el-form>
-    </div>
-<!--    <div style="margin-bottom: 10px">-->
-<!--      <el-button-->
-<!--          type="primary"-->
-<!--          @click="openDialog('add',{})"-->
-<!--      >新增登记</el-button>-->
-<!--      <el-button-->
-<!--          type="primary"-->
-<!--          plain-->
-<!--      >批量导入</el-button>-->
-<!--    </div>-->
-    <!-- 表格数据 -->
-    <el-table v-loading="loading" :data="dataList" :border="true">
-      <el-table-column label="序号" type="index" align="center" width="80" />
-      <el-table-column label="企业名称" prop="companyName" align="center"  />
-      <el-table-column label="计划名称" prop="planName" align="center"  />
-      <el-table-column label="学员姓名" prop="studentName" align="center">
-        <template #default="scope">
-          <span>{{scope.row.student.name}}</span>
-        </template>
-      </el-table-column>
-<!--      <el-table-column label="性别" prop="sex" align="center" >-->
-<!--        <template #default="scope">-->
-<!--          <span>{{scope.row.sex == 0 ? '男':'女'}}</span>-->
-<!--        </template>-->
-<!--      </el-table-column>-->
-      <el-table-column label="身份证号" prop="idNo" align="center" width="200" :show-overflow-tooltip="true">
-        <template #default="scope">
-          <span>{{scope.row.student.idNo}}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="课程名称" prop="courseName" align="center"/>
-      <el-table-column label="培训等级" prop="level" align="center">
-        <template #default="scope">
-          <span>{{scope.row.sex == 1 ? '公司级':scope.row.sex == 2 ? '部门级' : '车间级'}}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="要求课时(分)" prop="period" align="center"/>
-      <el-table-column label="实际课时(分)" prop="actualPeriod" align="center"/>
-      <el-table-column label="考试成绩" prop="score" align="center"/>
-      <el-table-column label="是否合格" prop="passed" align="center">
-        <template #default="scope">
-          <span>{{scope.row.passed == 0 ? '不合格':'合格'}}</span>
-        </template>
-      </el-table-column>
-    </el-table>
-
-    <pagination
-        v-show="total > 0"
-        :total="total"
-        v-model:page="queryParams.pageNum"
-        v-model:limit="queryParams.pageSize"
-        @pagination="getList"
-    />
-
-    <record-dialog ref="dialogRef" @getList=getList></record-dialog>
-  </div>
-</template>
-
-<script setup>
-import {getCurrentInstance, onMounted, onUnmounted, reactive, ref, toRefs} from "vue";
-import {ElMessage, ElMessageBox} from "element-plus";
-import {delCompany, getCompany} from "@/api/onlineEducation/company";
-import recordDialog from "./components/recordDialog.vue"
-import {delUser, getUser} from "@/api/onlineEducation/user";
-import Cookies from "js-cookie";
-import {delStudent, getStudent} from "@/api/onlineEducation/student";
-import {getRecord} from "@/api/onlineEducation/examRecord";
-
-
-const { proxy } = getCurrentInstance();
-const loading = ref(false);
-const dialogRef = ref();
-const data = reactive({
-  queryParams: {
-    companyName: '',
-    courseName: '',
-    pageNum: 1,
-    pageSize: 10,
-  },
-  total: 0,
-  dataList: [],
-  isAdmin: false
-
-});
-
-const { queryParams, total, dataList } = toRefs(data);
-
-onMounted(async ()=>{
-  const userInfo = JSON.parse(Cookies.get('userInfo'))
-  console.log("userInfo",userInfo)
-  if(userInfo.userType === 0){
-    data.isAdmin = true;
-  }else {
-    data.isAdmin = false;
-  }
-  await getList()
-})
-onUnmounted(()=>{
-
-})
-
-const getList = async () => {
-  loading.value = true
-  const res = await getRecord(data.queryParams)
-  if(res.code == 200){
-    data.dataList = res.data.list
-    data.total = res.data.total
-  }else{
-    ElMessage.warning(res.message)
-  }
-  loading.value = false
-}
-
-const openDialog = (type, value) => {
-  dialogRef.value.openDialog(type, value);
-
-}
-
-/** 重置新增的表单以及其他数据  */
-function reset() {
-  data.queryParams = {
-    companyName: '',
-    courseName: '',
-    pageNum: 1,
-    pageSize: 10,
-  }
-  getList()
-}
-const handleDelete = (val) => {
-  ElMessageBox.confirm(
-      '确定删除此条数据?',
-      '提示',
-      {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning',
-      })
-      .then( async() => {
-        const res = await delStudent(val.id)
-        if(res.code == 200){
-          ElMessage.success('数据删除成功')
-          await getList()
-        }else{
-          ElMessage.warning(res.message)
-        }
-      })
-}
-
-</script>
diff --git a/src/views/onlineEducation/people/components/stuDialog.vue b/src/views/onlineEducation/people/components/stuDialog.vue
deleted file mode 100644
index 8976689..0000000
--- a/src/views/onlineEducation/people/components/stuDialog.vue
+++ /dev/null
@@ -1,411 +0,0 @@
-<template>
-  <div class="notice">
-    <el-dialog
-        v-model="dialogVisible"
-        :title="state.title"
-        width="550px"
-        :before-close="handleClose"
-        :close-on-press-escape="false"
-        :close-on-click-modal="false"
-    >
-      <el-form :model="state.form" size="default" ref="superRef" :rules="state.formRules" label-width="180px" >
-        <el-form-item label="企业:"  prop="companyName" v-if="state.title !== '修改密码'">
-          <el-input v-model.trim="state.form.companyName" disabled></el-input>
-        </el-form-item>
-        <el-form-item label="姓名:"  prop="name" v-if="state.title !== '修改密码'">
-          <el-input v-model.trim="state.form.name" :disabled="disabled" placeholder="请输入姓名" ></el-input>
-        </el-form-item>
-        <el-form-item label="性别:"  prop="sex" v-if="state.title !== '修改密码'">
-          <el-radio-group v-model="state.form.sex"  :disabled="disabled">
-            <el-radio :label="0">男</el-radio>
-            <el-radio :label="1">女</el-radio>
-          </el-radio-group>
-        </el-form-item>
-        <el-form-item label="身份证号:"  prop="idNo" v-if="state.title !== '修改密码'">
-          <el-input v-model.trim="state.form.idNo" maxlength="18" :disabled="disabled" placeholder="请输入身份证号" ></el-input>
-        </el-form-item>
-        <el-form-item label="手机号(登录用户名):" prop="phone" v-if="state.title !== '修改密码'" >
-          <el-input v-model.trim="state.form.phone" :maxlength="11" :disabled="disabled" placeholder="请输入手机号"></el-input>
-        </el-form-item>
-        <el-form-item label="密码:" prop="password" v-if="state.title == '新增' || state.title == '修改密码'">
-          <el-input v-model.trim="state.form.password" type="password" show-password placeholder="请输入密码"></el-input>
-        </el-form-item>
-        <el-form-item label="重复密码:" prop="confirmPassword" v-if="state.title == '新增' || state.title == '修改密码'">
-          <el-input v-model.trim="state.form.confirmPassword" type="password" show-password placeholder="请输入确认密码"></el-input>
-        </el-form-item>
-        <el-form-item label="所属部门账号:"  prop="createBy" v-if="state.title !== '修改密码' && (currentUserType === 1 || currentUserType === 4)">
-          <el-select
-              clearable
-              v-model="state.form.createBy"
-              filterable
-              remote
-              @change="selectValue"
-              reserve-keyword
-              placeholder="请输入部门账号名称"
-              remote-show-suffix
-              :remote-method="getDeptUserList"
-              :loading="loading"
-              style="width: 100%"
-          >
-            <el-option
-                v-for="item in state.deptUserList"
-                :key="item.id"
-                :label="item.name"
-                :value="item.name"
-            />
-          </el-select>
-        </el-form-item>
-        <el-form-item label="工号:"  prop="empno" v-if="state.title !== '修改密码'">
-          <el-input v-model.trim="state.form.empno" :disabled="disabled" placeholder="请输入工号" ></el-input>
-        </el-form-item>
-        <el-form-item label="岗位:"  prop="post" v-if="state.title !== '修改密码'">
-          <el-input v-model.trim="state.form.post" :disabled="disabled" placeholder="请输入岗位" ></el-input>
-        </el-form-item>
-        <el-form-item label="职务:"  prop="duty" v-if="state.title !== '修改密码'">
-          <el-input v-model.trim="state.form.duty" :disabled="disabled" placeholder="请输入职务" ></el-input>
-        </el-form-item>
-      </el-form>
-      <template #footer v-if="state.title !='查看'">
-        <span class="dialog-footer">
-            <el-button @click="handleClose" size="default">取 消</el-button>
-            <el-button type="primary"  @click="onSubmit" size="default" v-preReClick>确认</el-button>
-        </span>
-      </template>
-    </el-dialog>
-  </div>
-</template>
-<script setup>
-import {reactive, ref, toRefs, defineEmits, nextTick, onMounted} from 'vue'
-import { View } from "@element-plus/icons-vue";
-import scorllSelect from '@/components/scrollSelect/index.vue'
-import {ElMessage, ElMessageBox} from "element-plus";
-import {verifyPhone, verifyPwd, verifyUsername} from "@/utils/validate";
-import { checkUserName, checkPhone } from "@/api/login"
-import {changeCompany, resetPwd} from "@/api/onlineEducation/student"
-import {Base64} from "js-base64"
-import Cookies from "js-cookie";
-import {addStudent, checkStuIdNo, checkStuPhone, editStudent} from "@/api/onlineEducation/student";
-import {getCompany} from "@/api/onlineEducation/company";
-import {getUser} from "@/api/onlineEducation/user";
-const emit = defineEmits(["getList"]);
-const dialogVisible = ref(false)
-const superRef = ref(null)
-const scrollRef = ref(null)
-
-
-
-const equalToPassword = (rule, value, callback) => {
-  if (state.form.password !== value) {
-    callback(new Error("两次输入的密码不一致"));
-  } else {
-    callback();
-  }
-};
-
-const validateUserPhone = (rule, value, callback)=>{
-  if(value === ''){
-    callback(new Error('请输入手机号'))
-  }else if(state.title === '编辑' && value === startPhone.value){
-    callback()
-  } else if(!verifyPhone(value)){
-    callback(new Error('手机号格式有误'))
-  }else{
-    let param = {}
-    if(state.title === '新增') {
-      param = {
-        phone:value
-      }
-    }else if(state.title === '编辑'){
-      param = {
-        phone:value,
-        id: state.form.id
-      }
-    }
-    checkStuPhone(param).then((res)=>{
-      if(res.data == false){
-        callback(new Error('手机号已被占用,请更换其他手机号'))
-      }else{
-        callback()
-      }
-    })
-  }
-}
-
-let validatePwd = (rule, value, callback)=>{
-  if(value === ''){
-    callback(new Error('请输入密码'))
-  }else{
-    if(!verifyPwd(value)){
-      callback(new Error('密码须包含字母、数字、特殊字符,长度在6-16之间'))
-    }else{
-      callback()
-    }
-  }
-}
-let validateIdNo = (rule, value, callback)=>{
-  if(value === ''){
-    callback(new Error('请输入身份证号'))
-  }else if(state.title === '编辑' && value === startIdNo.value){
-    callback()
-  }else{
-    let param = {}
-    if(state.title === '新增') {
-      param = {
-        idNo:value
-      }
-    }else if(state.title === '编辑'){
-      param = {
-        idNo:value,
-        id: state.form.id
-      }
-    }
-    checkStuIdNo(param).then((res)=>{
-      if(res.data.status == 1){
-        callback(new Error('身份证号在该企业已被占用,请更换其他身份证号'))
-      }else if(res.data.status == 2){
-        if(state.title == '新增'){
-          ElMessageBox.confirm(
-              `该人员 ${state.form.name} (身份证号: ${state.form.idNo} )与 ${res.data.companyName} 已经绑定,确定将该人员的责任归属变更到贵公企业?`,
-              '提示',
-              {
-                confirmButtonText: '确认',
-                cancelButtonText: '取消',
-                type: 'warning',
-                icon: ''
-              }
-          )
-          .then(() => {
-            const param = {
-              companyId: state.form.companyId,
-              studentId: res.data.studentId
-            }
-            changeCompany(param).then((res) => {
-              if(res.code == 200){
-                ElMessage({
-                  type: 'success',
-                  message: '变更成功',
-                })
-                emit('getList')
-                handleClose()
-
-                callback()
-              }else {
-                ElMessage.warning(res.message)
-              }
-            })
-          })
-        }else {
-          callback(new Error('身份证号在其他企业已被占用,请更换身份证号'))
-        }
-      }else {
-        callback()
-      }
-    })
-  }
-}
-
-
-const state = reactive({
-  title: '',
-  form: {
-    id: null,
-    name: '',
-    phone: '',
-    password: '',
-    confirmPassword: '',
-    sex: 0,
-    companyId: null,
-    empno: '',
-    post: '',
-    duty: '',
-    idNo: '',
-    createId: null,
-    createBy: '',
-    userType: null
-
-  },
-  formRules:{
-    name: [{ required: true, message: '请输入姓名', trigger: 'blur' }],
-    password: [{ required: true, validator: validatePwd, trigger: 'blur' }],
-    confirmPassword: [{ required: true, validator: equalToPassword, trigger: 'blur' }],
-    phone: [{ required: true, validator: validateUserPhone, trigger: 'blur' }],
-    idNo: [{ required: true, validator: validateIdNo, trigger: 'blur' }],
-    createBy: [{ required: true, message: '请输入所属部门名称', trigger: 'blur' }],
-
-  },
-  isAdmin: false,
-  deptUserList: []
-
-})
-const startPhone = ref('');
-const startIdNo = ref('');
-const UisMounted = ref(false);
-onMounted(() => {
-  UisMounted.value = true;
-
-});
-
-const currentUserType = ref(null)
-const disabled = ref(false);
-const openDialog = async (type, value) => {
-  const userInfo = JSON.parse(Cookies.get('userInfo'))
-  console.log("userInfo",userInfo)
-  currentUserType.value = userInfo.userType
-  if(userInfo.userType === 0){
-    state.isAdmin = true;
-    state.form.userType = 0;
-  }else {
-    state.isAdmin = false;
-    state.form.companyId = userInfo.companyId;
-    state.form.companyName = userInfo.companyName;
-    state.form.userType = userInfo.userType;
-  }
-  if(userInfo.userType === 1 || userInfo.userType === 4) {
-    await getDeptUserList("")
-  }else if(userInfo.userType === 2){
-    state.form.createId = userInfo.id
-    state.form.createBy = userInfo.name
-  }
-  state.title = type === 'add' ? '新增' : type ==='edit' ? '编辑' : type ==='pwd' ? '修改密码' : '查看' ;
-  if(type === 'edit' || type === 'view') {
-    if( type === 'view'){
-      disabled.value = true;
-    }
-    startPhone.value = value.phone
-    startIdNo.value = value.idNo
-    state.form =  JSON.parse(JSON.stringify(value))
-    state.form.companyName = value.company.name;
-    console.log("ba",state.form)
-  }
-  if(type == 'pwd'){
-    state.form.id = value.id
-  }
-  dialogVisible.value = true
-}
-const onSubmit = async () => {
-  const valid = await superRef.value.validate();
-  if(valid){
-    if(state.title == '新增'){
-      const {confirmPassword,id,...data} = state.form
-      data.password = Base64.encode(data.password)
-      const res = await addStudent(data)
-      if(res.code == 200){
-        ElMessage.success(res.message)
-        emit('getList')
-        handleClose()
-        dialogVisible.value = false;
-      }else{
-        ElMessage.warning(res.message)
-      }
-    }else if(state.title == '编辑'){
-      const {id, name, phone, sex, companyId, empno, post, duty, idNo,createId,createBy} = state.form
-      const data = {id, name, phone, sex, companyId, empno, post, duty, idNo,createId,createBy}
-      const res = await editStudent(data)
-      if(res.code == 200){
-        ElMessage.success(res.message)
-        emit('getList')
-        handleClose()
-      }else{
-        ElMessage.warning(res.message)
-      }
-    }else{
-      const {id,password} = state.form
-      const data = {id,password}
-      data.password = Base64.encode(data.password)
-      const res = await resetPwd(data)
-      if(res.code == 200){
-        ElMessage.success(res.message)
-        emit('getList')
-        handleClose()
-      }else{
-        ElMessage.warning(res.message)
-      }
-    }
-  }
-}
-const handleClose = () => {
-  state.form = {
-    id: null,
-    name: '',
-    phone: '',
-    password: '',
-    confirmPassword: '',
-    sex: 0,
-    companyId: null,
-    empno: '',
-    post: '',
-    duty: '',
-    idNo: '',
-    createId: null,
-    createBy: '',
-    userType: null
-  }
-  superRef.value.clearValidate();
-  superRef.value.resetFields()
-  dialogVisible.value = false;
-}
-
-
-const selectValue = (val) => {
-  // state.form.parentId = null;
-  // state.form.parentName = null;
-  state.deptUserList.forEach(item => {
-    if(item.name === val){
-      state.form.createId = item.id
-    }
-  })
-}
-
-const loading = ref(false)
-const getDeptUserList = async (val)=>{
-  let param = {}
-  if(val != ""){
-    param = {
-      name: val,
-      userType: 2,
-      companyId: state.form.companyId
-    }
-  }else {
-    param = {
-      pageNum: 1,
-      pageSize: 10,
-      userType: 2,
-      companyId: state.form.companyId
-    }
-  }
-    loading.value = true;
-    const res = await getUser(param)
-    if (res.code == 200) {
-      loading.value = false;
-      state.deptUserList = res.data.list.map(item => {
-        return {
-          ...item,
-          name: item.name + ' ('+ item.username +') '
-        }
-      })
-
-    } else {
-      ElMessage.warning(res.message)
-    }
-}
-
-
-
-defineExpose({
-  openDialog
-});
-
-</script>
-
-<style scoped lang="scss">
-.notice{
-  :deep(.el-form .el-form-item__label) {
-    font-size: 15px;
-  }
-  .file {
-    display: flex;
-    flex-direction: column;
-    align-items: flex-start;
-  }
-}
-</style>
diff --git a/src/views/onlineEducation/people/components/trainRecord.vue b/src/views/onlineEducation/people/components/trainRecord.vue
deleted file mode 100644
index e868866..0000000
--- a/src/views/onlineEducation/people/components/trainRecord.vue
+++ /dev/null
@@ -1,98 +0,0 @@
-<template>
-  <div class="notice">
-    <el-dialog
-        v-model="dialogVisible"
-        title="培训考试记录"
-        width="50%"
-        :before-close="handleClose"
-        :close-on-press-escape="false"
-        :close-on-click-modal="false"
-    >
-      <el-table v-loading="state.loading" :data="state.dataList" :border="true">
-        <el-table-column label="序号" type="index" align="center" width="80" />
-<!--        <el-table-column label="学生姓名" prop="stuName" align="center"  />-->
-        <el-table-column label="培训名称" prop="name" align="center" >
-          <template #default="scope">
-            {{scope.row.trainType == 1 ? scope.row.name : ''}}
-          </template>
-        </el-table-column>
-        <el-table-column label="考试名称" prop="name" align="center" >
-          <template #default="scope">
-            {{scope.row.trainType == 2 ? scope.row.name : ''}}
-          </template>
-        </el-table-column>
-        <el-table-column label="所在公司" prop="companyName" align="center"/>
-      </el-table>
-    </el-dialog>
-  </div>
-</template>
-<script setup>
-import {reactive, ref, toRefs} from 'vue'
-import {ElMessage} from "element-plus";
-
-import {
-  getClassification
-} from "@/api/onlineEducation/courseClass";
-import {addCourse, checkCourseName, editCourse, getCourseById} from "@/api/onlineEducation/courseManage";
-import {getToken} from "@/utils/auth";
-import {delPic, getBannerById} from "@/api/onlineEducation/banner";
-import Cookies from "js-cookie";
-import {addQuestionBank, checkQuestionBankName, editQuestionBank} from "@/api/onlineEducation/questionBank";
-import {getStudent, getStuTrainRecord} from "@/api/onlineEducation/student";
-
-const dialogVisible = ref(false);
-const title = ref("");
-const busRef = ref();
-const length = ref()
-const emit = defineEmits(["getList"]);
-const state = reactive({
-  loading: false,
-  dataList: []
-})
-
-const openDialog = async (value) => {
-  state.loading = true
-  const param = {
-    studentId: value.id
-  }
-  const res = await getStuTrainRecord(param)
-  if(res.code == 200){
-    state.dataList = res.data.map(item => {
-      return{
-        ...item,
-        stuName: value.name
-      }
-    })
-    state.loading = false
-    console.log(state.dataList,'state.dataList')
-  }else{
-    ElMessage.warning(res.message)
-  }
-
-  dialogVisible.value = true;
-}
-
-const handleClose = () => {
-  dialogVisible.value = false;
-  emit("getList")
-
-}
-
-defineExpose({
-  openDialog
-});
-
-</script>
-
-<style scoped lang="scss">
-.notice{
-  :deep(.el-form .el-form-item__label) {
-    font-size: 15px;
-  }
-  .file {
-    display: flex;
-    flex-direction: column;
-    align-items: flex-start;
-  }
-}
-</style>
diff --git a/src/views/onlineEducation/people/index.vue b/src/views/onlineEducation/people/index.vue
deleted file mode 100644
index 91ccbc4..0000000
--- a/src/views/onlineEducation/people/index.vue
+++ /dev/null
@@ -1,177 +0,0 @@
-<template>
-  <div class="app-container">
-    <div style="display: flex;justify-content: space-between">
-      <el-form :inline="true" style="display: flex;align-items: center;flex-wrap: wrap;" >
-        <el-form-item>
-          <el-button
-              type="primary"
-              plain
-              icon="Plus"
-              @click="openDialog('add',{})"
-          >新增</el-button>
-        </el-form-item>
-        <el-form-item label="姓名:" >
-          <el-input v-model="data.queryParams.name" placeholder="请输入姓名"></el-input>
-        </el-form-item>
-        <el-form-item >
-          <el-button
-              type="primary"
-              @click="getList"
-          >查询</el-button>
-          <el-button
-              type="primary"
-              plain
-              @click="reset"
-          >重置</el-button>
-        </el-form-item>
-      </el-form>
-    </div>
-    <!-- 表格数据 -->
-    <el-table v-loading="loading" :data="dataList" :border="true">
-      <el-table-column label="序号" type="index" align="center" width="80" />
-      <el-table-column label="工号" prop="empno" align="center"  />
-      <el-table-column label="姓名" prop="name" align="center"  />
-      <el-table-column label="性别" prop="sex" align="center" >
-        <template #default="scope">
-          <span>{{scope.row.sex == 0 ? '男':'女'}}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="手机号" prop="phone" align="center" width="130"/>
-      <el-table-column label="身份证" prop="idNo" align="center" width="200" :show-overflow-tooltip="true"/>
-      <el-table-column label="创建人" prop="createBy" align="center">
-        <template #default="scope">
-          <span>{{scope.row.createUser.name}}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="工作岗位" prop="post" align="center"/>
-      <el-table-column label="职务" prop="duty" align="center"/>
-      <el-table-column label="一人一档" prop="duty" align="center" width="120">
-        <template #default="scope">
-          <el-button link type="primary" @click="openRecord(scope.row)">培训考试记录</el-button>
-        </template>
-      </el-table-column>
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width"  width="180">
-        <template #default="scope">
-          <el-button link type="primary" @click="openDialog('edit',scope.row)">编辑</el-button>
-          <el-button link type="danger" @click="handleDelete(scope.row)">删除</el-button>
-          <el-button link type="primary" @click="openDialog('pwd',scope.row)">修改密码</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-
-    <pagination
-        v-show="total > 0"
-        :total="total"
-        v-model:page="queryParams.pageNum"
-        v-model:limit="queryParams.pageSize"
-        @pagination="getList"
-    />
-
-    <stu-dialog ref="dialogRef" @getList=getList></stu-dialog>
-    <record ref="recordRef" @getList=getList></record>
-  </div>
-</template>
-
-<script setup>
-import {getCurrentInstance, onMounted, onUnmounted, reactive, ref, toRefs} from "vue";
-import {ElMessage, ElMessageBox} from "element-plus";
-import {delCompany, getCompany} from "@/api/onlineEducation/company";
-import stuDialog from "./components/stuDialog.vue"
-import record from './components/trainRecord.vue'
-import {delUser, getUser} from "@/api/onlineEducation/user";
-import Cookies from "js-cookie";
-import {delStudent, getStudent} from "@/api/onlineEducation/student";
-
-
-const { proxy } = getCurrentInstance();
-const loading = ref(false);
-const dialogRef = ref();
-const recordRef  =ref();
-const data = reactive({
-  queryParams: {
-    pageNum: 1,
-    pageSize: 10,
-    name: ''
-  },
-  total: 0,
-  dataList: [],
-  isAdmin: false
-
-});
-
-const { queryParams, total, dataList } = toRefs(data);
-const userType = ref()
-onMounted(async ()=>{
-  const userInfo = JSON.parse(Cookies.get('userInfo'))
-  console.log("userInfo",userInfo)
-  userType.value = userInfo.userType
-  if(userInfo.userType === 0){
-    data.isAdmin = true;
-  }else {
-    data.isAdmin = false;
-  }
-  await getList()
-})
-onUnmounted(()=>{
-
-})
-
-const getList = async () => {
-  loading.value = true
-  const res = await getStudent(data.queryParams)
-  if(res.code == 200){
-    data.dataList = res.data.list
-    data.total = res.data.total
-  }else{
-    ElMessage.warning(res.message)
-  }
-  loading.value = false
-}
-
-const openDialog = (type, value) => {
-  if(type == 'add' && data.isAdmin){
-    ElMessage.warning('监管部门请联系企业创建企业学员')
-  }
-  // else if(userType.value !== 3 && (type == 'add' || type == 'edit')) {
-  //   ElMessage.warning(' 只有车间级用户才能新增和编辑')
-  // }
-  else{
-    dialogRef.value.openDialog(type, value);
-  }
-
-
-}
-
-/** 重置新增的表单以及其他数据  */
-function reset() {
-  data.queryParams = {
-    pageNum: 1,
-    pageSize: 10,
-    name: ''
-  }
-  getList()
-}
-const handleDelete = (val) => {
-  ElMessageBox.confirm(
-      '确定删除此条数据?',
-      '提示',
-      {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning',
-      })
-      .then( async() => {
-        const res = await delStudent(val.id)
-        if(res.code == 200){
-          ElMessage.success('数据删除成功')
-          await getList()
-        }else{
-          ElMessage.warning(res.message)
-        }
-      })
-}
-const openRecord = (val) => {
-  recordRef.value.openDialog(val)
-}
-
-</script>
diff --git a/src/views/onlineEducation/questionBankManagement/components/questionBankDialog.vue b/src/views/onlineEducation/questionBankManagement/components/questionBankDialog.vue
deleted file mode 100644
index 6c4431a..0000000
--- a/src/views/onlineEducation/questionBankManagement/components/questionBankDialog.vue
+++ /dev/null
@@ -1,247 +0,0 @@
-<template>
-  <div class="notice">
-    <el-dialog
-        v-model="dialogVisible"
-        :title="title"
-        width="500px"
-        :before-close="handleClose"
-        :close-on-press-escape="false"
-        :close-on-click-modal="false"
-    >
-      <el-form :model="state.form" size="default" ref="busRef" :rules="state.formRules" label-width="150px" >
-        <el-form-item label="所属公司:" prop="companyName" v-if="!state.isAdmin">
-          <el-input v-model.trim="state.form.companyName" disabled></el-input>
-        </el-form-item>
-        <el-form-item label="题库名称:" prop="name">
-          <el-input v-model.trim="state.form.name" placeholder="请输入题库名称"></el-input>
-        </el-form-item>
-        <el-form-item label="课程分类:" prop="categoryId" >
-          <el-cascader
-              style="width: 100%"
-              ref="classifyRef"
-              v-model="state.form.categoryId"
-              :options="state.classifyList"
-              :props="state.props"
-              clearable
-              :show-all-levels="false"
-              @change="handleChange"
-          />
-        </el-form-item>
-      </el-form>
-      <template #footer>
-        <span class="dialog-footer">
-            <el-button @click="handleClose" size="default">取 消</el-button>
-            <el-button type="primary"  @click="onSubmit" size="default" v-preReClick>确认</el-button>
-        </span>
-      </template>
-    </el-dialog>
-  </div>
-</template>
-<script setup>
-import {reactive, ref, toRefs} from 'vue'
-import {ElMessage} from "element-plus";
-
-import {
-  getClassification
-} from "@/api/onlineEducation/courseClass";
-import {addCourse, checkCourseName, editCourse, getCourseById} from "@/api/onlineEducation/courseManage";
-import {getToken} from "@/utils/auth";
-import {delPic, getBannerById} from "@/api/onlineEducation/banner";
-import Cookies from "js-cookie";
-import {addQuestionBank, checkQuestionBankName, editQuestionBank} from "@/api/onlineEducation/questionBank";
-
-const dialogVisible = ref(false);
-const title = ref("");
-const busRef = ref();
-const length = ref()
-const emit = defineEmits(["getList"]);
-const startUsername = ref('');
-const classifyRef = ref(null)
-
-const validateName = (rule, value, callback)=>{
-  if(value === ''){
-    callback(new Error('请输入题库名称'))
-  }else if(title.value === '编辑' && value === startUsername.value){
-    callback()
-  }else{
-    let param = {}
-    if(title.value === '新增') {
-      param = {
-        name:value
-      }
-    }else if(title.value === '编辑'){
-      param = {
-        name:value,
-        id: state.form.id
-      }
-    }
-    checkQuestionBankName(param).then((res)=>{
-      if(res.data == false){
-        callback(new Error('题库名称已被占用,请更换其他名称'))
-      }else{
-        callback()
-      }
-    })
-  }
-}
-const state = reactive({
-  form: {
-    id: '',
-    name: '',
-    categoryId: null,
-    companyName: '',
-    companyId: null
-  },
-  formRules: {
-    name: [{required: true, trigger: "blur", validator: validateName}],
-    categoryId: [{required: true, message: '请选择课程分类', trigger: 'blur'}],
-  },
-  classifyList: [],
-  isAdmin: false,
-  props: {
-    checkStrictly: true,
-  }
-})
-
-const openDialog = async (type, value) => {
-  await getClassifyList();
-  const userInfo = JSON.parse(Cookies.get('userInfo'))
-  console.log("userInfo",userInfo)
-  if(userInfo.userType === 0){
-    state.isAdmin = true;
-    state.form.companyName = ''
-    state.form.companyId = null
-  }else {
-    state.isAdmin = false;
-    state.form.companyName = userInfo.companyName
-    state.form.companyId = userInfo.companyId
-  }
-  title.value = type === 'addFirst' || type === 'add' ? '新增' : type ==='edit' ? '编辑' : '' ;
-  if(type === 'edit') {
-    state.form.id = value.id
-    state.form.name = value.name
-    state.form.categoryId = value.categoryId
-    startUsername.value = value.name;
-  }else if(type === 'add' && value ){
-    state.form.parentId = value.id
-  }
-  dialogVisible.value = true;
-}
-const  getClassifyList = async () => {
-  const res = await getClassification();
-  if(res.code === 200){
-    state.classifyList = recursion(res.data)
-  }else{
-    ElMessage.warning(res.message)
-  }
-}
-const recursion = (data) => {
-  let tmp = []
-  for (let i = 0; i < data.length; i++) {
-    let item = data[i]
-    // children为空
-    if (item.children&& item.children.length==0) {
-      tmp.push({
-        value: item.id,
-        label: item.name
-      })
-      // 有children
-    } else {
-      tmp.push({
-        value: item.id,
-        label: item.name,
-        children:recursion(item.children)
-      })
-    }
-  }
-  return tmp;
-}
-
-const CascaderRef = ref()
-const handleChange = ()=> {
-  console.log("label====",classifyRef.value.getCheckedNodes()[0].value)
-  state.form.categoryId = classifyRef.value.getCheckedNodes()[0].value
-  // 我这里只是打印了一下label的值哦,需要赋值的话自己去赋值哦
-  if (classifyRef.value.popperVisible) {
-    classifyRef.value.togglePopperVisible()
-  }
-}
-
-const onSubmit = async () => {
-  // if(state.isAdmin){
-  //   ElMessage({
-  //     type: 'warning',
-  //     message: '管理员暂无权限'
-  //   });
-  //   return;
-  // }
-  const valid = await busRef.value.validate();
-  if(valid){
-    if(title.value === '新增'){
-      const {id, ...data} = JSON.parse(JSON.stringify(state.form))
-      const res = await addQuestionBank(data)
-      if(res.code === 200){
-        ElMessage({
-          type: 'success',
-          message: '新增成功'
-        });
-      }else{
-        ElMessage.warning(res.message)
-      }
-      emit("getList")
-      busRef.value.clearValidate();
-      reset();
-      dialogVisible.value = false;
-    }else if(title.value === '编辑'){
-      const {...data} = JSON.parse(JSON.stringify(state.form))
-      const res = await editQuestionBank(data)
-      if(res.code === 200){
-        ElMessage({
-          type: 'success',
-          message: '编辑成功'
-        });
-      }else{
-        ElMessage.warning(res.message)
-      }
-      emit("getList")
-      busRef.value.clearValidate();
-      reset();
-      dialogVisible.value = false;
-    }
-  }
-}
-
-const handleClose = () => {
-  busRef.value.clearValidate();
-  reset();
-  dialogVisible.value = false;
-  emit("getList")
-
-}
-const reset = () => {
-  state.form = {
-    id: '',
-    name: '',
-    categoryId: null,
-    companyName: '',
-    companyId: null
-  }
-}
-defineExpose({
-  openDialog
-});
-
-</script>
-
-<style scoped lang="scss">
-.notice{
-  :deep(.el-form .el-form-item__label) {
-    font-size: 15px;
-  }
-  .file {
-    display: flex;
-    flex-direction: column;
-    align-items: flex-start;
-  }
-}
-</style>
diff --git a/src/views/onlineEducation/questionBankManagement/index.vue b/src/views/onlineEducation/questionBankManagement/index.vue
deleted file mode 100644
index 2371948..0000000
--- a/src/views/onlineEducation/questionBankManagement/index.vue
+++ /dev/null
@@ -1,141 +0,0 @@
-<template>
-  <div class="app-container">
-    <div style="display: flex;justify-content: space-between">
-      <el-form :inline="true" style="display: flex;align-items: center;flex-wrap: wrap;" >
-        <el-form-item>
-          <el-button
-              type="primary"
-              plain
-              icon="Plus"
-              @click="openDialog('add',{})"
-          >新增</el-button>
-        </el-form-item>
-        <el-form-item label="题库名称:" >
-          <el-input v-model="data.queryParams.name" placeholder="请输入题库名称"></el-input>
-        </el-form-item>
-        <el-form-item >
-          <el-button
-              type="primary"
-              @click="getList"
-          >查询</el-button>
-          <el-button
-              type="primary"
-              plain
-              @click="reset"
-          >重置</el-button>
-        </el-form-item>
-      </el-form>
-    </div>
-    <!-- 表格数据 -->
-    <el-table v-loading="loading" :data="dataList" :border="true">
-      <el-table-column label="序号" type="index" align="center" width="80" />
-      <el-table-column label="题库名称" prop="name" align="center"  />
-      <el-table-column label="分类名称" prop="categoryName" align="center"  />
-      <el-table-column label="单选题数量" prop="singleCount" align="center"  />
-      <el-table-column label="多选题数量" prop="multiCount" align="center"  />
-      <el-table-column label="判断题数量" prop="judgeCount" align="center"  />
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width"  width="180">
-        <template #default="scope">
-          <el-button link type="primary" @click="openDialog('edit',scope.row)">编辑</el-button>
-          <el-button link type="danger" @click="handleDelete(scope.row)">删除</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-
-    <pagination
-        v-show="total > 0"
-        :total="total"
-        v-model:page="queryParams.pageNum"
-        v-model:limit="queryParams.pageSize"
-        @pagination="getList"
-    />
-
-    <question-bank-dialog ref="dialogRef" @getList=getList></question-bank-dialog>
-  </div>
-</template>
-
-<script setup>
-import {getCurrentInstance, onMounted, onUnmounted, reactive, ref, toRefs} from "vue";
-import {ElMessage, ElMessageBox} from "element-plus";
-import questionBankDialog from './components/questionBankDialog.vue'
-import Cookies from "js-cookie";
-import {delQuestionBank, getQuestionBank} from "@/api/onlineEducation/questionBank";
-
-
-const { proxy } = getCurrentInstance();
-const loading = ref(false);
-const dialogRef = ref();
-const data = reactive({
-  queryParams: {
-    pageNum: 1,
-    pageSize: 10,
-    name: ''
-  },
-  total: 0,
-  dataList: [],
-  isAdmin: false
-
-});
-
-const { queryParams, total, dataList } = toRefs(data);
-
-onMounted(async ()=>{
-  const userInfo = JSON.parse(Cookies.get('userInfo'))
-  console.log("userInfo",userInfo)
-  if(userInfo.userType === 0){
-    data.isAdmin = true;
-  }else {
-    data.isAdmin = false;
-  }
-  await getList()
-})
-onUnmounted(()=>{
-
-})
-
-const getList = async () => {
-  loading.value = true
-  const res = await getQuestionBank(data.queryParams)
-  if(res.code == 200){
-    data.dataList = res.data.list
-    data.total = res.data.total
-  }else{
-    ElMessage.warning(res.message)
-  }
-  loading.value = false
-}
-
-const openDialog = (type, value) => {
-    dialogRef.value.openDialog(type, value);
-}
-
-/** 重置新增的表单以及其他数据  */
-function reset() {
-  data.queryParams = {
-    pageNum: 1,
-    pageSize: 10,
-    name: ''
-  }
-  getList()
-}
-const handleDelete = (val) => {
-  ElMessageBox.confirm(
-      '确定删除此条数据?',
-      '提示',
-      {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning',
-      })
-      .then( async() => {
-        const res = await delQuestionBank(val.id)
-        if(res.code == 200){
-          ElMessage.success('数据删除成功')
-          await getList()
-        }else{
-          ElMessage.warning(res.message)
-        }
-      })
-}
-
-</script>
diff --git a/src/views/onlineEducation/questionBankManagement/questionManage/components/questionDialog.vue b/src/views/onlineEducation/questionBankManagement/questionManage/components/questionDialog.vue
deleted file mode 100644
index a7ec521..0000000
--- a/src/views/onlineEducation/questionBankManagement/questionManage/components/questionDialog.vue
+++ /dev/null
@@ -1,426 +0,0 @@
-<template>
-  <div class="notice">
-    <el-dialog
-        v-model="dialogVisible"
-        :title="title"
-        width="750px"
-        :before-close="handleClose"
-        :close-on-press-escape="false"
-        :close-on-click-modal="false"
-    >
-      <el-form :model="state.form" size="default" ref="busRef" :rules="state.formRules" label-width="150px" >
-        <el-form-item label="题目类型:" prop="questionType">
-          <el-select v-model="state.form.questionType" placeholder="请选择题型" style="width: 100%"  @change="changeType">
-            <el-option
-                v-for="item in state.questionTypeList"
-                :key="item.id"
-                :label="item.name"
-                style="width: 100%"
-                :value="item.id">
-            </el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="归属题库:" prop="bankName">
-          <el-select
-              clearable
-              v-model="state.form.bankName"
-              filterable
-              remote
-              reserve-keyword
-              placeholder="请输入题库名称"
-              remote-show-suffix
-              :remote-method="getBankList"
-              style="width: 100%"
-              @change="selectValue"
-          >
-            <el-option
-                v-for="item in state.bankList"
-                :key="item.id"
-                :label="item.name"
-                :value="item.name"
-            />
-          </el-select>
-<!--          <el-select-->
-<!--              v-model="state.form.bankName"-->
-<!--              style="width: 100%"-->
-<!--              v-loadMoreNew:[reselect]="handleScroll"-->
-<!--              :popper-class="reselect.name"-->
-<!--              @change="selectValue"-->
-<!--              class="item-width"-->
-<!--              placeholder="请选择题库"-->
-<!--          >-->
-<!--            <el-option-->
-<!--                v-for="item in state.bankList"-->
-<!--                :key="item.id"-->
-<!--                :label="item.name"-->
-<!--                :value="item.name"-->
-<!--            />-->
-<!--          </el-select>-->
-        </el-form-item>
-        <el-form-item label="题目内容:" prop="title">
-          <el-input v-model.trim="state.form.title" type="textarea" placeholder="请输入题目内容"></el-input>
-        </el-form-item>
-        <el-form-item label="选项:" prop="content" v-if="state.form.questionType != 4">
-          <div style="display: flex;flex-direction: column;width: 100%">
-            <el-button :disabled="state.form.questionType ===3 || state.form.questionType==null " type="primary"  @click="addOption" size="default" style="width: 65px;margin-bottom: 15px">添加</el-button>
-            <div v-for="(item,index) in state.optionItem.items" :key="index" style="width: 100%">
-              <div style="display: flex;align-items: center">
-                <span>{{String.fromCharCode(index + 65)}}</span>
-                <el-input  :disabled="state.form.questionType ===3" type="textarea" v-model="state.optionItem.items[index].content" placeholder="请输入选项内容" style="width: 100%;margin-left: 20px;margin-bottom: 10px"></el-input>
-                <Delete v-if="state.form.questionType !==3" style="width: 15px; height: 15px; margin-left: 8px;color: #ed5565" @click="delOption(index)" />
-              </div>
-            </div>
-          </div>
-        </el-form-item>
-
-        <el-form-item label="正确答案:" prop="answer">
-          <el-radio-group v-model="state.form.answer" v-if="state.form.questionType === 1 || state.form.questionType === 3">
-            <div v-for="(item,index) in state.optionItem.items">
-              <el-radio :label="String.fromCharCode(index + 65)" style="margin-left: 20px">{{String.fromCharCode(index + 65)}}</el-radio>
-            </div>
-          </el-radio-group>
-          <el-checkbox-group v-model="state.checkList" v-if="state.form.questionType === 2" style="display: flex" @change="changeCheck">
-            <div v-for="(item,index) in state.optionItem.items">
-              <el-checkbox :label="String.fromCharCode(index + 65)" style="margin-left: 20px;">{{String.fromCharCode(index + 65)}}</el-checkbox>
-            </div>
-          </el-checkbox-group>
-          <el-input v-if="state.form.questionType === 4" v-model="state.form.answer" type="textarea" placeholder="请输入正确答案"></el-input>
-        </el-form-item>
-        <el-form-item label="解析:" >
-          <el-input type="textarea" v-model="state.optionItem.analyze" placeholder="请输入题目解析" style="width: 100%;margin-bottom: 10px"></el-input>
-        </el-form-item>
-      </el-form>
-      <template #footer>
-        <span class="dialog-footer">
-            <el-button @click="handleClose" size="default">取 消</el-button>
-            <el-button type="primary"  @click="onSubmit" size="default" v-preReClick>确认</el-button>
-        </span>
-      </template>
-    </el-dialog>
-  </div>
-</template>
-<script setup>
-import {reactive, ref, toRefs} from 'vue'
-import {ElMessage} from "element-plus";
-import {Delete} from "@element-plus/icons-vue";
-
-import {
-  getClassification
-} from "@/api/onlineEducation/courseClass";
-import {addCourse, checkCourseName, editCourse, getCourseById} from "@/api/onlineEducation/courseManage";
-import {getToken} from "@/utils/auth";
-import {delPic, getBannerById} from "@/api/onlineEducation/banner";
-import Cookies from "js-cookie";
-import {
-  addQuestionBank,
-  checkQuestionBankName,
-  editQuestionBank,
-  getQuestionBank
-} from "@/api/onlineEducation/questionBank";
-import {addQuestion, editQuestion, getQuestionById} from "@/api/onlineEducation/question";
-
-const dialogVisible = ref(false);
-const title = ref("");
-const busRef = ref();
-const length = ref()
-const emit = defineEmits(["getList"]);
-const startUsername = ref('');
-const classifyRef = ref(null)
-const state = reactive({
-  form: {
-    id: '',
-    title: '',
-    questionType: null,
-    bankName: '',
-    bankId: null,
-    answer: ''
-  },
-  formRules: {
-
-    questionType: [{required: true, trigger: "blur", message: '请选择题目类型'}],
-    bankName: [{required: true, trigger: "blur", message: '请选择归属题库'}],
-    title: [{required: true, trigger: "blur", message: '请输入题目内容'}],
-    answer: [{required: true, trigger: "blur", message: '请选择正确答案'}],
-  },
-  classifyList: [],
-  isAdmin: false,
-  props: {
-    checkStrictly: true,
-  },
-  questionTypeList: [
-    {
-      id: 1,
-      name: '单选题'
-    },
-    {
-      id: 2,
-      name: '多选题'
-    },
-    {
-      id: 3,
-      name: '判断题'
-    },
-    // {
-    //   id: 4,
-    //   name: '简答题'
-    // }
-  ],
-  optionItem: {
-    analyze: '',
-    items: []
-  },
-  checkList: [],
-  bankList: [],
-  bankPageNum: 1, // 当前页码
-  bankPageSize: 10, // 每页显示的数量
-  hasMoreItems: null, // 是否还有更多选项
-
-})
-const reselect = reactive({
-  name: 'bank1'
-})
-const selectValue = (val) => {
-  state.bankList.forEach(item => {
-    if(item.name === val){
-      state.form.bankId = item.id
-    }
-  })
-}
-const changeCheck = (val) => {
-  console.log('val',val)
-  state.form.answer = val.join(',')
-}
-
-const addOption = () => {
-
-  const obj = {
-    prefix:"",
-    content: ''
-  }
-  state.optionItem.items.push(obj)
-
-}
-const delOption = (val) => {
-  state.optionItem.items.splice(val,1)
-  state.form.answer = ''
-  console.log(" state.optionItem.items.", state.optionItem.items)
-}
-const openDialog = async (type, value) => {
-  await getBankList('');
-  const userInfo = JSON.parse(Cookies.get('userInfo'))
-  console.log("userInfo",userInfo)
-  if(userInfo.userType === 0){
-    state.isAdmin = true;
-    state.form.companyName = ''
-    state.form.companyId = null
-  }else {
-    state.isAdmin = false;
-    state.form.companyName = userInfo.companyName
-    state.form.companyId = userInfo.companyId
-  }
-  title.value = type === 'addFirst' || type === 'add' ? '新增' : type ==='edit' ? '编辑' : '' ;
-  if(type === 'edit') {
-    const res = await getQuestionById(value.id)
-    if(res.code === 200){
-      state.form = res.data
-      state.optionItem = JSON.parse(res.data.content)
-      if(res.data.questionType === 2){
-        state.checkList = res.data.answer.split(',')
-      }
-    }else{
-      ElMessage.warning(res.message)
-    }
-  }
-  dialogVisible.value = true;
-}
-
-const getBankList = async (val)=>{
-  if(val != ""){
-    const queryParams = {
-      name: val
-    }
-    const res = await getQuestionBank(queryParams)
-    if (res.code == 200) {
-      state.bankList = res.data.list
-
-    } else {
-      ElMessage.warning(res.message)
-    }
-  }else {
-    const queryParams = {
-      pageNum: 1,
-      pageSize: 10
-    }
-    const res = await getQuestionBank(queryParams)
-    if (res.code == 200) {
-      state.bankList = res.data.list
-    } else {
-      ElMessage.warning(res.message)
-    }
-  }
-}
-
-const handleScroll = () => {
-  if(state.bankPageNum >= state.hasMoreItems) return
-  state.bankPageNum++;
-  loadMoreBankData()
-
-}
-const loadMoreBankData = async () => {
-  const queryParams = {
-    pageNum: state.bankPageNum,
-    pageSize: state.bankPageSize,
-  }
-  const res = await getQuestionBank(queryParams)
-  if (res.code == 200) {
-    state.hasMoreItems = res.data.totalPage
-    const data = res.data
-    state.bankList = state.bankList.concat(data.list)
-  }else{
-    ElMessage.warning(res.message)
-  }
-}
-
-
-const onSubmit = async () => {
-  console.log(" state.form", state.form)
-  const valid = await busRef.value.validate();
-  if(valid){
-    if(title.value === '新增'){
-      const {id,bankName, ...data} = JSON.parse(JSON.stringify(state.form))
-      data.answer = data.questionType === 1 || data.questionType === 3 || data.questionType === 4? data.answer : state.checkList.join(',')
-      if(data.questionType !== 4){
-        const options = state.optionItem.items.map((op,index) => {
-          return {
-            prefix: String.fromCharCode(index + 65),
-            content: op.content,
-          }
-        })
-        data.content = JSON.stringify(
-            {
-              analyze: state.optionItem.analyze,
-              items: options
-            }
-        )
-      }else {
-        data.content = JSON.stringify(
-            {
-              analyze: state.optionItem.analyze,
-            })
-      }
-      console.log('state.form',data)
-      const res = await addQuestion(data)
-      if(res.code === 200){
-        ElMessage({
-          type: 'success',
-          message: '新增成功'
-        });
-      }else{
-        ElMessage.warning(res.message)
-      }
-      emit("getList")
-      busRef.value.clearValidate();
-      reset();
-      dialogVisible.value = false;
-    }else if(title.value === '编辑'){
-      const {bankName,...data} = JSON.parse(JSON.stringify(state.form))
-      data.answer = data.questionType === 1 || data.questionType === 3 || data.questionType === 4 ? data.answer : state.checkList.join(',')
-      if(data.questionType !== 4){
-        const options = state.optionItem.items.map((op,index) => {
-          return {
-            prefix: String.fromCharCode(index + 65),
-            content: op.content,
-          }
-        })
-        data.content = JSON.stringify(
-            {
-              analyze: state.optionItem.analyze,
-              items: options
-            }
-        )
-      }else {
-        data.content = JSON.stringify(
-            {
-              analyze: state.optionItem.analyze,
-            })
-      }
-      const res = await editQuestion(data)
-      if(res.code === 200){
-        ElMessage({
-          type: 'success',
-          message: '编辑成功'
-        });
-      }else{
-        ElMessage.warning(res.message)
-      }
-      emit("getList")
-      busRef.value.clearValidate();
-      reset();
-      dialogVisible.value = false;
-    }
-  }
-}
-const changeType = () => {
-  state.optionItem = {
-    analyze: '',
-    items: []
-  }
-  if(state.form.questionType === 3) {
-    state.optionItem.items = [
-      {
-        prefix: 'A',
-        content: '是'
-
-      },
-      {
-        prefix: 'B',
-        content: '否'
-      }
-    ]
-  }
-
-
-}
-const handleClose = () => {
-  busRef.value.clearValidate();
-  reset();
-  dialogVisible.value = false;
-  emit("getList")
-
-}
-const reset = () => {
-  state.form = {
-    id: '',
-    title: '',
-    questionType: null,
-    bankName: '',
-    bankId: null,
-    answer: ''
-  }
-  state.optionItem = {
-    analyze: '',
-    items: []
-  }
-  state.bankPageNum = 1;
-  state.bankPageSize = 10;
-  state.bankList = []
-  state.checkList = []
-}
-defineExpose({
-  openDialog
-});
-
-</script>
-
-<style scoped lang="scss">
-.notice{
-  :deep(.el-form .el-form-item__label) {
-    font-size: 15px;
-  }
-  .file {
-    display: flex;
-    flex-direction: column;
-    align-items: flex-start;
-  }
-}
-</style>
diff --git a/src/views/onlineEducation/questionBankManagement/questionManage/index.vue b/src/views/onlineEducation/questionBankManagement/questionManage/index.vue
deleted file mode 100644
index 0d506f8..0000000
--- a/src/views/onlineEducation/questionBankManagement/questionManage/index.vue
+++ /dev/null
@@ -1,278 +0,0 @@
-<template>
-  <div class="app-container">
-    <div>
-      <el-form :model="data.queryParams" ref="queryRef" :inline="true" >
-        <el-form-item>
-          <el-button
-              type="primary"
-              plain
-              icon="Plus"
-              @click="openDialog('add',{})"
-          >新增</el-button>
-        </el-form-item>
-        <el-form-item label="题型:">
-          <el-select v-model="data.queryParams.questionType" placeholder="请选择题型" clearable>
-            <el-option
-                v-for="item in data.questionTypeList"
-                :key="item.id"
-                :label="item.name"
-                :value="item.id">
-            </el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="题目内容:" >
-          <el-input
-
-              v-model="data.queryParams.title"
-              placeholder="请输入题目内容"
-              clearable
-              style="width: 200px"
-          />
-        </el-form-item>
-        <el-form-item label="题库:" >
-          <el-select
-              clearable
-              v-model="data.queryParams.bankId"
-              filterable
-              remote
-              reserve-keyword
-              placeholder="请输入题库名称"
-              remote-show-suffix
-              :remote-method="getBankList"
-              style="width: 200px"
-          >
-            <el-option
-                v-for="item in data.bankList"
-                :key="item.id"
-                :label="item.name"
-                :value="item.id"
-            />
-          </el-select>
-<!--          <el-select-->
-<!--              clearable-->
-<!--              v-model="data.queryParams.bankId"-->
-<!--              style="width: 200px"-->
-<!--              v-loadMoreNew:[reselect]="handleScroll"-->
-<!--              :popper-class="reselect.name"-->
-<!--              class="item-width"-->
-<!--              placeholder="请选择题库"-->
-<!--          >-->
-<!--            <el-option-->
-<!--                v-for="item in data.bankList"-->
-<!--                :key="item.id"-->
-<!--                :label="item.name"-->
-<!--                :value="item.id"-->
-<!--            />-->
-<!--          </el-select>-->
-        </el-form-item>
-        <el-form-item>
-          <el-button type="primary"  @click="handleQuery">查询</el-button>
-          <el-button  @click="resetQuery">重置</el-button>
-        </el-form-item>
-      </el-form>
-
-    </div>
-    <!-- 表格数据 -->
-    <el-table v-loading="loading" :data="data.dataList" :border="true">
-      <el-table-column label="序号" type="index" align="center" width="80" />
-      <el-table-column label="所属题库" prop="bankName" align="center"  />
-      <el-table-column label="题目类型" prop="questionType" align="center"  >
-        <template #default="scope">
-          <span>{{scope.row.questionType === 1 ? '单选题' : scope.row.questionType === 2 ? '多选题' : scope.row.questionType === 3 ? '判断题': '简答题'}}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="题目内容" prop="title" align="center"  />
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width"  width="180">
-        <template #default="scope">
-          <el-button link type="primary" @click="openDialog('edit',scope.row)">编辑</el-button>
-          <el-button link type="danger" @click="handleDelete(scope.row)">删除</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-
-    <pagination
-        v-show="data.total > 0"
-        :total="data.total"
-        v-model:page="data.queryParams.pageNum"
-        v-model:limit="data.queryParams.pageSize"
-        @pagination="getList"
-    />
-
-    <question-dialog ref="dialogRef" @getList=getList></question-dialog>
-  </div>
-</template>
-
-<script setup>
-import {getCurrentInstance, onMounted, onUnmounted, reactive, ref, toRefs} from "vue";
-import {ElMessage, ElMessageBox} from "element-plus";
-import questionDialog from './components/questionDialog.vue'
-import Cookies from "js-cookie";
-import {delQuestion, getQuestion} from "@/api/onlineEducation/question";
-import {getQuestionBank} from "@/api/onlineEducation/questionBank";
-import {getCompany} from "@/api/onlineEducation/company";
-
-
-const { proxy } = getCurrentInstance();
-const loading = ref(false);
-const dialogRef = ref();
-const data = reactive({
-  queryParams: {
-    pageNum: 1,
-    pageSize: 10,
-    questionType: null,
-    title: '',
-    bankId: null
-  },
-  total: 0,
-  dataList: [],
-  isAdmin: false,
-  questionTypeList: [
-    {
-      id: 1,
-      name: '单选题'
-    },
-    {
-      id: 2,
-      name: '多选题'
-    },
-    {
-      id: 3,
-      name: '判断题'
-    },
-    // {
-    //   id: 4,
-    //   name: '简答题'
-    // }
-  ],
-  bankList: [],
-  bankPageNum: 1, // 当前页码
-  bankPageSize: 10, // 每页显示的数量
-  hasMoreItems: null, // 是否还有更多选项
-
-
-})
-const reselect = reactive({
-  name: 'bank'
-})
-
-onMounted(async ()=>{
-  const userInfo = JSON.parse(Cookies.get('userInfo'))
-  console.log("userInfo",userInfo)
-  if(userInfo.userType === 0){
-    data.isAdmin = true;
-  }else {
-    data.isAdmin = false;
-  }
-  await getList()
-  await getBankList("")
-})
-
-onUnmounted(()=>{
-
-})
-
-const getList = async () => {
-  console.log(' list');
-  loading.value = true
-  const res = await getQuestion(data.queryParams)
-  if(res.code == 200){
-    data.dataList = res.data.list
-    data.total = res.data.total
-  }else{
-    ElMessage.warning(res.message)
-  }
-  loading.value = false
-}
-
-// const handleScroll = () => {
-//
-//   if(data.bankPageNum >= data.hasMoreItems) return
-//   data.bankPageNum++;
-//   loadMoreBankData()
-//
-// }
-// const loadMoreBankData = async () => {
-//   console.log(' Bank');
-//   const queryParams = {
-//     pageNum: data.bankPageNum,
-//     pageSize: data.bankPageSize,
-//   }
-//   const res = await getQuestionBank(queryParams)
-//   if (res.code == 200) {
-//     data.hasMoreItems = res.data.totalPage
-//     const state = res.data
-//     data.bankList = data.bankList.concat(state.list)
-//   }else{
-//     ElMessage.warning(res.message)
-//   }
-// }
-const getBankList = async (val)=>{
-  if(val != ""){
-    const queryParams = {
-      name: val
-    }
-    const res = await getQuestionBank(queryParams)
-    if (res.code == 200) {
-      data.bankList = res.data.list
-
-    } else {
-      ElMessage.warning(res.message)
-    }
-  }else {
-    const queryParams = {
-      pageNum: 1,
-      pageSize: 10
-    }
-    const res = await getQuestionBank(queryParams)
-    if (res.code == 200) {
-      data.bankList = res.data.list
-    } else {
-      ElMessage.warning(res.message)
-    }
-  }
-}
-
-const handleQuery = () => {
-  data.queryParams.pageNum = 1;
-  getList();
-}
-const resetQuery = () => {
-  data.queryParams =  {
-    pageNum: 1,
-    pageSize: 10,
-    questionType: null,
-    title: '',
-    bankId: null
-  }
-  getList();
-}
-
-const openDialog = (type, value) => {
-  dialogRef.value.openDialog(type, value);
-}
-
-/** 重置新增的表单以及其他数据  */
-function reset() {
-  proxy.resetForm("roleRef");
-}
-const handleDelete = (val) => {
-  ElMessageBox.confirm(
-      '确定删除此条数据?',
-      '提示',
-      {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning',
-      })
-      .then( async() => {
-        const res = await delQuestion(val.id)
-        if(res.code == 200){
-          ElMessage.success('数据删除成功')
-          await getList()
-        }else{
-          ElMessage.warning(res.message)
-        }
-      })
-}
-
-</script>
diff --git a/src/views/onlineEducation/systemManage/banner/components/bannerDialog.vue b/src/views/onlineEducation/systemManage/banner/components/bannerDialog.vue
deleted file mode 100644
index 58310ba..0000000
--- a/src/views/onlineEducation/systemManage/banner/components/bannerDialog.vue
+++ /dev/null
@@ -1,240 +0,0 @@
-<template>
-  <div class="notice">
-    <el-dialog
-        v-model="dialogVisible"
-        :title="title"
-        width="550px"
-        :before-close="handleClose"
-        :close-on-press-escape="false"
-        :close-on-click-modal="false"
-    >
-      <el-form :model="state.form" size="default" ref="busRef" :rules="state.formRules" label-width="100px" >
-        <el-form-item label="标题:" prop="title" >
-          <el-input v-model.trim="state.form.title"></el-input>
-        </el-form-item>
-        <el-form-item prop="imgUrl" label="图片:">
-          <el-upload accept="image/*" :action="state.uploadUrl" :headers="state.header" method="post" :on-success="(res, uploadFile)=>handleAvatarSuccess(res, uploadFile)" :on-exceed="showTip" :limit='state.imgLimit' v-model:file-list="state.imgList" list-type="picture-card" :before-upload="picSize" :on-remove="(file, uploadFiles)=>handleRemove(file, uploadFiles)" >
-            <el-icon><Plus /></el-icon>
-            <template #tip>
-              <div class="el-upload__tip">上传jpg/png图片尺寸小于5M,最多可上传1张</div>
-            </template>
-          </el-upload>
-        </el-form-item>
-        <el-form-item label="地址:" prop="webUrl">
-          <el-input v-model.trim="state.form.webUrl"></el-input>
-        </el-form-item>
-        <el-form-item label="跳转方式:" prop="carouselTarget" >
-          <el-radio-group v-model="state.form.carouselTarget" >
-            <el-radio :label="0">新窗口打开</el-radio>
-            <el-radio :label="1">内部打开</el-radio>
-          </el-radio-group>
-        </el-form-item>
-<!--        <el-form-item label="排序:" prop="sort" >-->
-<!--          <el-input-number v-model="state.form.sort" />-->
-<!--        </el-form-item>-->
-        <el-form-item label="状态" prop="status" >
-          <el-switch
-              v-model="state.form.status"
-              class="ml-2"
-          />
-        </el-form-item>
-      </el-form>
-      <template #footer>
-        <span class="dialog-footer">
-            <el-button @click="handleClose" size="default">取 消</el-button>
-            <el-button type="primary"  @click="onSubmit" size="default" v-preReClick>确认</el-button>
-        </span>
-      </template>
-    </el-dialog>
-  </div>
-</template>
-<script setup>
-import {reactive, ref, toRefs} from 'vue'
-import Editor from "@/components/Editor/index.vue";
-import {ElMessage} from "element-plus";
-import {addNotice} from "@/api/backManage/notice";
-import {addDict, editDict, getDictDetail} from "@/api/backManage/evaluate";
-import {addCompany, checkName, distributeCompany, editCompany} from "@/api/onlineEducation/company";
-import {verifyPhone} from "@/utils/validate";
-import {addBanner, delPic, editBanner, getBannerById} from "@/api/onlineEducation/banner";
-import {getToken} from "@/utils/auth";
-import {getUserById} from "@/api/onlineEducation/user";
-
-const dialogVisible = ref(false);
-const title = ref("");
-const busRef = ref();
-const length = ref()
-const emit = defineEmits(["getList"]);
-const startUsername = ref('');
-const startPhone = ref('');
-const state = reactive({
-  form: {
-    id: '',
-    title: '',
-    imgUrl: '',
-    webUrl: '',
-    carouselTarget: 0,
-    // sort: 0,
-    status: true,
-  },
-  formRules:{
-    title: [{ required: true, message: '请输入广告标题', trigger: 'blur' }],
-    imgUrl: [{ required: true, message: '请上传图片', trigger: 'blur' }],
-    webUrl: [{ required: true, message: '请输入地址', trigger: 'blur' }],
-  },
-  uploadUrl: import.meta.env.VITE_APP_BASE_API + '/system/common/uploadFile',
-  header: {
-    Authorization:getToken()
-  },
-  imgLimit: 1,
-  imgList: []
-})
-
-const handleAvatarSuccess = (res, uploadFile) => {
-  if(res.code == 200){
-    state.form.imgUrl = res.data.path
-  }else{
-    state.imgList = []
-    ElMessage({
-      type: 'warning',
-      message: '文件上传失败'
-    })
-  }
-}
-const showTip =()=>{
-  ElMessage({
-    type: 'warning',
-    message: '超出文件上传数量'
-  });
-}
-const picSize = async (rawFile) => {
-  if(rawFile.size / 1024 / 1024 > 5){
-    ElMessage({
-      type: 'warning',
-      message: '文件大小不能超过5M'
-    });
-    return false
-  }
-};
-const handleRemove = async (file, uploadFiles) => {
-  let path = state.form.imgUrl;
-  await delPic({path: path}).then(res => {
-    if(res.code == 200){
-      // ElMessage({
-      //   type: 'success',
-      //   message: '文件已删除'
-      // })
-      state.form.imgUrl = ''
-    }else{
-      ElMessage({
-        type: 'warning',
-        message: res.message
-      })
-    }
-  }).catch(() => {
-    state.form.imgUrl = ''
-  });
-}
-
-const openDialog = async (type, value) => {
-  length.value = value.listLength
-  title.value = type === 'add' ? '新增' : type ==='edit' ? '编辑' : '' ;
-  if(type === 'edit') {
-    const res = await getBannerById(value.id);
-    if(res.code === 200){
-      state.form = res.data
-      console.log("11",res.data)
-      state.form.carouselTarget = parseInt(res.data.carouselTarget)
-      state.form.status = res.data.status == 0
-      if(res.data.imgUrl) {
-        const obj = {
-          url: import.meta.env.VITE_APP_BASE_API + "/" +  res.data.imgUrl,
-          name: ''
-        }
-        state.imgList = [obj]
-      }
-      console.log('imgList',state.imgList)
-    }else{
-      ElMessage.warning(res.message)
-    }
-
-  }
-  dialogVisible.value = true;
-}
-
-const onSubmit = async () => {
-  const valid = await busRef.value.validate();
-  if(valid){
-    if(title.value === '新增'){
-      const {id, ...data} = JSON.parse(JSON.stringify(state.form))
-      data.status = data.status ? 0 : 1
-      const res = await addBanner(data)
-      if(res.code === 200){
-        ElMessage({
-          type: 'success',
-          message: '新增成功'
-        });
-      }else{
-        ElMessage.warning(res.message)
-      }
-      emit("getList")
-      busRef.value.clearValidate();
-      reset();
-      dialogVisible.value = false;
-    }else if(title.value === '编辑'){
-      const {...data} = JSON.parse(JSON.stringify(state.form))
-      data.status = data.status ? 0 : 1
-      const res = await editBanner(data)
-      if(res.code === 200){
-        ElMessage({
-          type: 'success',
-          message: '编辑成功'
-        });
-      }else{
-        ElMessage.warning(res.message)
-      }
-      emit("getList")
-      busRef.value.clearValidate();
-      reset();
-      dialogVisible.value = false;
-    }
-  }
-}
-
-const handleClose = () => {
-  busRef.value.clearValidate();
-  reset();
-  dialogVisible.value = false;
-  emit("getList")
-
-}
-const reset = () => {
-  state.form = {
-    id: '',
-    title: '',
-    imgUrl: '',
-    webUrl: '',
-    carouselTarget: 0,
-    // sort: 0,
-    status: true,
-  }
-  state.imgList = []
-}
-defineExpose({
-  openDialog
-});
-
-</script>
-
-<style scoped lang="scss">
-.notice{
-  :deep(.el-form .el-form-item__label) {
-    font-size: 15px;
-  }
-  .file {
-    display: flex;
-    flex-direction: column;
-    align-items: flex-start;
-  }
-}
-</style>
diff --git a/src/views/onlineEducation/systemManage/banner/components/newPage.vue b/src/views/onlineEducation/systemManage/banner/components/newPage.vue
deleted file mode 100644
index d0ecd77..0000000
--- a/src/views/onlineEducation/systemManage/banner/components/newPage.vue
+++ /dev/null
@@ -1,20 +0,0 @@
-<template>
-  <div class="notice">
-    <iframe name="bottom" :src="state.url" style="width: 100%; height: 850px;margin-top: 6px;border: lightgrey 1px solid"></iframe>
-  </div>
-</template>
-<script setup>
-import {onMounted, reactive, ref, toRefs} from 'vue'
-const route = useRoute();
-const state = reactive({
-  url:''
-})
-
-onMounted(()=>{
-  state.url = route.query.url;
-})
-</script>
-
-<style scoped lang="scss">
-
-</style>
diff --git a/src/views/onlineEducation/systemManage/banner/index.vue b/src/views/onlineEducation/systemManage/banner/index.vue
deleted file mode 100644
index 2dc5f4b..0000000
--- a/src/views/onlineEducation/systemManage/banner/index.vue
+++ /dev/null
@@ -1,152 +0,0 @@
-<template>
-  <div class="app-container">
-    <div style="margin-bottom: 10px">
-      <el-button
-          type="primary"
-          plain
-          icon="Plus"
-          @click="openDialog('add',{})"
-      >新增</el-button>
-    </div>
-    <!-- 表格数据 -->
-    <el-table v-loading="loading" :data="dataList" :border="true">
-      <el-table-column label="序号" type="index" align="center" width="80" />
-      <el-table-column label="标题" prop="title" align="center"  />
-      <el-table-column label="图片" prop="imgUrl" align="center" >
-        <template #default="scope">
-          <div class="demo-image__preview" v-if="scope.row.imgUrl && scope.row.imgUrl.length>0">
-            <el-image
-                style="width: 100px; height: 100px"
-                :src= "scope.row.imgUrl[0]"
-                :zoom-rate="1.2"
-                :max-scale="7"
-                :min-scale="0.2"
-                :preview-src-list="scope.row.imgUrl"
-                :initial-index="0"
-                fit="cover"
-                :preview-teleported=true
-            />
-          </div>
-        </template>
-      </el-table-column>
-      <el-table-column label="地址" prop="webUrl" align="center" >
-        <template #default="scope">
-          <span style="color:#1890ff; cursor: pointer" @click="openUrl(scope.row)">{{scope.row.webUrl}}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="跳转方式" prop="carouselTarget" align="center"  >
-        <template #default="scope">
-         <span>{{scope.row.carouselTarget == 0 ? '新窗口打开' : '内部打开' }}</span>
-        </template>
-      </el-table-column>
-<!--      <el-table-column label="排序" prop="sort" align="center"/>-->
-      <el-table-column label="状态" prop="status" align="center" width="150"/>
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width" >
-        <template #default="scope">
-          <el-button link type="primary" @click="openDialog('edit',scope.row)">编辑</el-button>
-          <el-button link type="danger" @click="handleDelete(scope.row)">删除</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-
-    <pagination
-        v-show="total > 0"
-        :total="total"
-        v-model:page="queryParams.pageNum"
-        v-model:limit="queryParams.pageSize"
-        @pagination="getList"
-    />
-    <banner-dialog ref="dialogRef" @getList=getList></banner-dialog>
-  </div>
-</template>
-
-<script setup>
-import {getCurrentInstance, onMounted, onUnmounted, reactive, ref, toRefs} from "vue";
-import {ElMessage, ElMessageBox} from "element-plus";
-import {delCompany, getCompany} from "@/api/onlineEducation/company";
-import bannerDialog from  './components/bannerDialog.vue'
-import {delBanner, getBanner} from "@/api/onlineEducation/banner";
-import router from "@/router";
-const { proxy } = getCurrentInstance();
-const loading = ref(false);
-const dialogRef = ref();
-const data = reactive({
-  queryParams: {
-    pageNum: 1,
-    pageSize: 10,
-  },
-  total: 0,
-  dataList: []
-});
-
-const { queryParams, total, dataList } = toRefs(data);
-
-onMounted(()=>{
-  getList()
-})
-
-onUnmounted(()=>{
-
-})
-
-const getList = async () => {
-  loading.value = true
-  const res = await getBanner(data.queryParams)
-  if(res.code == 200){
-    data.dataList = res.data.list.map(item => {
-      return {
-        ...item,
-        status: item.status === 0 ? '正常' : '停用',
-        imgUrl: item.imgUrl ?[import.meta.env.VITE_APP_BASE_API + "/" +  item.imgUrl] : []
-      }
-    })
-    console.log("ddd",data.dataList)
-    data.total = res.data.total
-  }else{
-    ElMessage.warning(res.message)
-  }
-  loading.value = false
-}
-
-const openDialog = (type, value) => {
-  dialogRef.value.openDialog(type, value);
-}
-
-/** 重置新增的表单以及其他数据  */
-function reset() {
-  proxy.resetForm("roleRef");
-}
-const handleDelete = (val) => {
-  ElMessageBox.confirm(
-      '确定删除此条数据?',
-      '提示',
-      {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning',
-      })
-      .then( async() => {
-        const res = await delBanner(val.id)
-        if(res.code == 200){
-          ElMessage.success('数据删除成功')
-          await getList()
-        }else{
-          ElMessage.warning(res.message)
-        }
-      })
-}
-
-const openUrl = (val) => {
-  let fixedUrl = '';
-  if(val.webUrl.indexOf("http") != -1){
-    fixedUrl = val.webUrl
-  }else{
-    fixedUrl = "http://" +val.webUrl;
-  }
-  if(val.carouselTarget == 0){
-    window.open(fixedUrl, '_blank')
-  }else {
-    router.push({ path: "/newPage", query: { url: fixedUrl } });
-  }
-}
-</script>
diff --git a/src/views/onlineEducation/systemManage/company/components/companyDialog.vue b/src/views/onlineEducation/systemManage/company/components/companyDialog.vue
deleted file mode 100644
index c42b43d..0000000
--- a/src/views/onlineEducation/systemManage/company/components/companyDialog.vue
+++ /dev/null
@@ -1,245 +0,0 @@
-<template>
-  <div class="notice">
-    <el-dialog
-        v-model="dialogVisible"
-        :title="title"
-        width="500px"
-        :before-close="handleClose"
-        :close-on-press-escape="false"
-        :close-on-click-modal="false"
-    >
-      <el-form :model="state.form" size="default" ref="busRef" :rules="state.formRules" label-width="150px" >
-        <el-form-item label="企业信用代码:" prop="creditCode" v-if="title!=='分配课时'">
-          <el-input v-model.trim="state.form.creditCode" placeholder="请输入企业信用代码"></el-input>
-        </el-form-item>
-        <el-form-item label="企业名称:" prop="name" v-if="title!=='分配课时'">
-          <el-input v-model.trim="state.form.name" placeholder="请输入企业名称"></el-input>
-        </el-form-item>
-        <el-form-item label="负责人:" prop="major" v-if="title!=='分配课时'">
-          <el-input v-model.trim="state.form.major" placeholder="请输入负责人"></el-input>
-        </el-form-item>
-        <el-form-item label="联系电话:" prop="phone" v-if="title!=='分配课时'">
-          <el-input v-model.trim="state.form.phone" placeholder="请输入联系电话"></el-input>
-        </el-form-item>
-        <el-form-item label="当前剩余课时:" prop="remainPeriod" v-if="title!=='分配课时' && title==='编辑'">
-          <el-input
-              placeholder="请输入剩余课时"
-              v-model.trim="state.form.remainPeriod"
-              @input="state.form.remainPeriod= state.form.remainPeriod.replace(/[^0-9]/g,'')">
-            <template #append >分钟</template>
-          </el-input>
-        </el-form-item>
-<!--        <el-form-item label="累计已用课时(秒):" prop="spendPeriod" v-if="title!=='分配课时'">-->
-<!--          <el-input-->
-<!--              placeholder="请输入已用课时"-->
-<!--              v-model.trim="state.form.spendPeriod"-->
-<!--              @input="state.form.spendPeriod= state.form.spendPeriod.replace(/[^0-9]/g,'')">-->
-<!--            <template #append v-if="state.form.spendPeriod"><span>{{(state.form.spendPeriod /60).toFixed(2).replace(/\.00$/, '') + '分钟'}}</span></template>-->
-<!--          </el-input>-->
-<!--        </el-form-item>-->
-        <el-form-item label="总课时:" prop="totalPeriod">
-          <el-input
-              :disabled="title === '编辑'"
-              placeholder="请输入总课时"
-              v-model.trim="state.form.totalPeriod"
-              maxlength="10"
-              @input="state.form.totalPeriod = state.form.totalPeriod.replace(/[^0-9]/g,'')">
-            <template #append >分钟</template>
-          </el-input>
-        </el-form-item>
-      </el-form>
-      <template #footer>
-        <span class="dialog-footer">
-            <el-button @click="handleClose" size="default">取 消</el-button>
-            <el-button type="primary"  @click="onSubmit" size="default" v-preReClick>确认</el-button>
-        </span>
-      </template>
-    </el-dialog>
-  </div>
-</template>
-<script setup>
-import {reactive, ref, toRefs} from 'vue'
-import Editor from "@/components/Editor/index.vue";
-import {ElMessage} from "element-plus";
-import {addNotice} from "@/api/backManage/notice";
-import {addDict, editDict, getDictDetail} from "@/api/backManage/evaluate";
-import {addCompany, checkName, distributeCompany, editCompany} from "@/api/onlineEducation/company";
-import {verifyPhone} from "@/utils/validate";
-
-const dialogVisible = ref(false);
-const title = ref("");
-const busRef = ref();
-const length = ref()
-const emit = defineEmits(["getList"]);
-const startUsername = ref('');
-const startPhone = ref('');
-
-const validateName = (rule, value, callback)=>{
-  if(value === ''){
-    callback(new Error('请输入企业名称'))
-  }else if(title.value === '编辑' && value === startUsername.value){
-    callback()
-  }else{
-    let param = {}
-    if(title.value === '新增') {
-      param = {
-        name:value
-      }
-    }else if(title.value === '编辑'){
-      param = {
-        name:value,
-        id: state.form.id
-      }
-    }
-    checkName(param).then((res)=>{
-      if(res.data == false){
-        callback(new Error('企业名称已被占用,请更换其他名称'))
-      }else{
-        callback()
-      }
-    })
-  }
-}
-const validatePhone = (rule, value, callback)=>{
-  if(value === ''){
-    callback(new Error('请输入手机号'))
-  }else if(title.value === '编辑' && value == startPhone.value){
-    callback()
-  } else{
-    if(!verifyPhone(value)){
-      callback(new Error('手机号格式有误'))
-    }else {
-      callback()
-    }
-  }
-}
-const state = reactive({
-  form: {
-    id: '',
-    creditCode: '',
-    name: '',
-    major: '',
-    phone: '',
-    remainPeriod: '',
-    spendPeriod: '',
-    totalPeriod: ''
-  },
-  formRules:{
-    creditCode: [{ required: true, message: '请输入企业信用代码', trigger: 'blur' }],
-    major:[{ required: true, message: '请输入负责人', trigger: 'blur' }],
-    remainPeriod:[{ required: true, message: '请输入剩余课时', trigger: 'blur' }],
-    spendPeriod:[{ required: true, message: '请输入已用课时', trigger: 'blur' }],
-    totalPeriod:[{ required: true, message: '请输入总课时', trigger: 'blur' }],
-    name: [{ required: true, trigger: "blur", validator: validateName }],
-    phone:[{ required: true, trigger: "blur", validator: validatePhone }],
-  },
-})
-
-
-const openDialog = async (type, value) => {
-  length.value = value.listLength
-  title.value = type === 'add' ? '新增' : type ==='edit' ? '编辑' : '分配课时' ;
-  if(type === 'edit' || type === 'distribute') {
-    state.form = JSON.parse(JSON.stringify(value));
-    state.form.totalPeriod = value.totalPeriod / 60;
-    state.form.remainPeriod = value.remainPeriod/60;
-    startUsername.value = value.username
-    startPhone.value = value.phone
-  }
-  dialogVisible.value = true;
-}
-
-const onSubmit = async () => {
-  const valid = await busRef.value.validate();
-  if(valid){
-    if(title.value === '新增'){
-      const {id, ...data} = JSON.parse(JSON.stringify(state.form))
-      data.totalPeriod = data.totalPeriod * 60
-      data.remainPeriod = data.remainPeriod * 60
-      const res = await addCompany(data)
-      if(res.code === 200){
-        ElMessage({
-          type: 'success',
-          message: '新增成功'
-        });
-      }else{
-        ElMessage.warning(res.message)
-      }
-      emit("getList")
-      busRef.value.clearValidate();
-      reset();
-      dialogVisible.value = false;
-    }else if(title.value === '编辑'){
-      const {...data} = JSON.parse(JSON.stringify(state.form))
-      data.totalPeriod = data.totalPeriod * 60
-      data.remainPeriod = data.remainPeriod * 60
-      const res = await editCompany(data)
-      if(res.code === 200){
-        ElMessage({
-          type: 'success',
-          message: '编辑成功'
-        });
-      }else{
-        ElMessage.warning(res.message)
-      }
-      emit("getList")
-      busRef.value.clearValidate();
-      reset();
-      dialogVisible.value = false;
-    }else if(title.value === '分配课时') {
-      const {creditCode,name,major,phone,remainPeriod,spendPeriod,...data} = JSON.parse(JSON.stringify(state.form))
-      data.totalPeriod = data.totalPeriod * 60
-      const res = await distributeCompany(data)
-      if(res.code === 200){
-        ElMessage({
-          type: 'success',
-          message: '成功'
-        });
-      }else{
-        ElMessage.warning(res.message)
-      }
-      emit("getList")
-      busRef.value.clearValidate();
-      reset();
-      dialogVisible.value = false;
-    }
-  }
-}
-
-const handleClose = () => {
-  busRef.value.clearValidate();
-  reset();
-  dialogVisible.value = false;
-  emit("getList")
-
-}
-const reset = () => {
-  state.form = {
-    id: '',
-    creditCode: '',
-    name: '',
-    major: '',
-    phone: '',
-    remainPeriod: '',
-    spendPeriod: '',
-    totalPeriod: ''
-  }
-}
-defineExpose({
-  openDialog
-});
-
-</script>
-
-<style scoped lang="scss">
-.notice{
-  :deep(.el-form .el-form-item__label) {
-    font-size: 15px;
-  }
-  .file {
-    display: flex;
-    flex-direction: column;
-    align-items: flex-start;
-  }
-}
-</style>
diff --git a/src/views/onlineEducation/systemManage/company/index.vue b/src/views/onlineEducation/systemManage/company/index.vue
deleted file mode 100644
index b3ef373..0000000
--- a/src/views/onlineEducation/systemManage/company/index.vue
+++ /dev/null
@@ -1,154 +0,0 @@
-<template>
-  <div class="app-container">
-    <div style="display: flex;justify-content: space-between">
-      <el-form :inline="true" style="display: flex;align-items: center;flex-wrap: wrap;" >
-        <el-form-item>
-          <el-button
-              type="primary"
-              plain
-              icon="Plus"
-              @click="openDialog('add',{})"
-          >新增</el-button>
-        </el-form-item>
-        <el-form-item label="企业名称:" >
-          <el-input v-model="data.queryParams.name" placeholder="请输入企业名称"></el-input>
-        </el-form-item>
-        <el-form-item >
-          <el-button
-              type="primary"
-              @click="getList"
-          >查询</el-button>
-          <el-button
-              type="primary"
-              plain
-              @click="reset"
-          >重置</el-button>
-        </el-form-item>
-      </el-form>
-    </div>
-    <!-- 表格数据 -->
-    <el-table v-loading="loading" :data="dataList" :border="true">
-      <el-table-column label="序号" type="index" align="center" width="80" />
-      <el-table-column label="企业信用代码" prop="creditCode" align="center"  />
-      <el-table-column label="企业名称" prop="name" align="center" />
-      <el-table-column label="负责人" prop="major" align="center"  />
-      <el-table-column label="联系电话" prop="phone" align="center"/>
-      <el-table-column label="当前剩余课时(分)" prop="remainPeriodMin" align="center" width="150" />
-      <el-table-column label="累计已用课时(分)" prop="spendPeriodMin" align="center" width="150">
-        <template #default="scope">
-          <span>{{((scope.row.totalPeriod -scope.row.remainPeriod)/60).toFixed(2).replace(/\.00$/, '') + '分钟' }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="总课时(分)" prop="totalPeriodMin" align="center"/>
-      <el-table-column label="课时变动详情" align="center" class-name="small-padding fixed-width" >
-        <template #default="scope">
-          <el-button link type="primary" @click="openDetail(scope.row)">查看详情</el-button>
-        </template>
-      </el-table-column>
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="200" >
-        <template #default="scope">
-          <el-button link type="primary" @click="openDialog('distribute',scope.row)">分配课时</el-button>
-          <el-button link type="primary" @click="openDialog('edit',scope.row)">编辑</el-button>
-          <el-button link type="danger" @click="handleDelete(scope.row)">删除</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-
-    <pagination
-        v-show="total > 0"
-        :total="total"
-        v-model:page="queryParams.pageNum"
-        v-model:limit="queryParams.pageSize"
-        @pagination="getList"
-    />
-
-    <company-dialog ref="dialogRef" @getList=getList></company-dialog>
-    <class-hour-change ref="classHourRef" @getList=getList></class-hour-change>
-  </div>
-</template>
-
-<script setup>
-import {getCurrentInstance, onMounted, onUnmounted, reactive, ref, toRefs} from "vue";
-import {ElMessage, ElMessageBox} from "element-plus";
-import {delCompany, getCompany} from "@/api/onlineEducation/company";
-import companyDialog from "./components/companyDialog.vue";
-import classHourChange from '@/views/onlineEducation/classHourBatch/components/classHourChange.vue'
-
-const { proxy } = getCurrentInstance();
-const loading = ref(false);
-const dialogRef = ref();
-const data = reactive({
-  queryParams: {
-    pageNum: 1,
-    pageSize: 10,
-    name: ''
-  },
-  total: 0,
-  dataList: []
-});
-
-const { queryParams, total, dataList } = toRefs(data);
-const classHourRef = ref();
-onMounted(()=>{
-  getList()
-})
-
-onUnmounted(()=>{
-
-})
-
-const getList = async () => {
-  loading.value = true
-  const res = await getCompany(data.queryParams)
-  if(res.code == 200){
-    data.dataList = res.data.list.map(item => {
-      return{
-        ...item,
-        remainPeriodMin: item.remainPeriod ?(item.remainPeriod /60).toFixed(2).replace(/\.00$/, '') + '分钟':'',
-        totalPeriodMin:item.totalPeriod ?(item.totalPeriod /60).toFixed(2).replace(/\.00$/, '') + '分钟':'',
-      }
-    })
-    data.total = res.data.total
-  }else{
-    ElMessage.warning(res.message)
-  }
-  loading.value = false
-}
-
-const openDialog = (type, value) => {
-  dialogRef.value.openDialog(type, value);
-}
-
-/** 重置新增的表单以及其他数据  */
-function reset() {
-  data.queryParams = {
-    pageNum: 1,
-    pageSize: 10,
-    name: ''
-  }
-  getList()
-}
-const handleDelete = (val) => {
-  ElMessageBox.confirm(
-      '确定删除此条数据?',
-      '提示',
-      {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning',
-      })
-      .then( async() => {
-        const res = await delCompany(val.id)
-        if(res.code == 200){
-          ElMessage.success('数据删除成功')
-          await getList()
-        }else{
-          ElMessage.warning(res.message)
-        }
-      })
-}
-
-const openDetail = (val) => {
-  classHourRef.value.openDialog(val.id)
-}
-</script>
diff --git a/src/views/onlineEducation/systemManage/courseClassification/components/courseClassDialog.vue b/src/views/onlineEducation/systemManage/courseClassification/components/courseClassDialog.vue
deleted file mode 100644
index 6f12434..0000000
--- a/src/views/onlineEducation/systemManage/courseClassification/components/courseClassDialog.vue
+++ /dev/null
@@ -1,189 +0,0 @@
-<template>
-  <div class="notice">
-    <el-dialog
-        v-model="dialogVisible"
-        :title="title"
-        width="500px"
-        :before-close="handleClose"
-        :close-on-press-escape="false"
-        :close-on-click-modal="false"
-    >
-      <el-form :model="state.form" size="default" ref="busRef" :rules="state.formRules" label-width="150px" >
-        <el-form-item label="上级分类:" prop="name" v-if="!state.isFirst">
-          <el-input v-model.trim="state.form.parentName" disabled></el-input>
-        </el-form-item>
-        <el-form-item label="名称:" prop="name">
-          <el-input v-model.trim="state.form.name"></el-input>
-        </el-form-item>
-        <el-form-item label="排序:" prop="sort" >
-          <el-input-number v-model="state.form.sort" />
-        </el-form-item>
-        <el-form-item label="状态" prop="status" >
-          <el-switch
-              v-model="state.form.status"
-              class="ml-2"
-          />
-        </el-form-item>
-      </el-form>
-      <template #footer>
-        <span class="dialog-footer">
-            <el-button @click="handleClose" size="default">取 消</el-button>
-            <el-button type="primary"  @click="onSubmit" size="default" v-preReClick>确认</el-button>
-        </span>
-      </template>
-    </el-dialog>
-  </div>
-</template>
-<script setup>
-import {reactive, ref, toRefs} from 'vue'
-import Editor from "@/components/Editor/index.vue";
-import {ElMessage} from "element-plus";
-import {addNotice} from "@/api/backManage/notice";
-import {addDict, editDict, getDictDetail} from "@/api/backManage/evaluate";
-import {addCompany, checkName, distributeCompany, editCompany} from "@/api/onlineEducation/company";
-import {verifyPhone} from "@/utils/validate";
-import {addClassification, checkClassName, editClassification} from "@/api/onlineEducation/courseClass";
-
-const dialogVisible = ref(false);
-const title = ref("");
-const busRef = ref();
-const length = ref()
-const emit = defineEmits(["getList"]);
-const startUsername = ref('');
-
-const validateName = (rule, value, callback)=>{
-  if(value === ''){
-    callback(new Error('请输入课程分类名称'))
-  }else if(title.value === '编辑' && value === startUsername.value){
-    callback()
-  }else{
-    let param = {}
-    if(title.value === '新增') {
-      param = {
-        name:value
-      }
-    }else if(title.value === '编辑'){
-      param = {
-        name:value,
-        id: state.form.id
-      }
-    }
-    checkClassName(param).then((res)=>{
-      if(res.data == false){
-        callback(new Error('课程分类名称已被占用,请更换其他名称'))
-      }else{
-        callback()
-      }
-    })
-  }
-}
-const state = reactive({
-  form: {
-    id: '',
-    name: '',
-    parentName: '',
-    sort: 0,
-    parentId: null,
-    status: true
-  },
-  formRules:{
-    name: [{ required: true, trigger: "blur", validator: validateName }],
-  },
-  isFirst: true
-})
-
-const openDialog = async (type, value) => {
-  length.value = value.listLength
-  title.value = type === 'addFirst' || type === 'add' ? '新增' : type ==='edit' ? '编辑' : '' ;
-  if(type === 'edit') {
-    state.isFirst = true;
-    state.form = value;
-    state.form.status = value.status == 0;
-    state.form.sort = value.sort;
-    state.form.parentId = value.parentId;
-    state.form.parentName = value.name;
-    startUsername.value = value.username;
-  }else if(type === 'add' && value ){
-    state.isFirst = false;
-    state.form.parentId = value.id;
-    state.form.parentName = value.name;
-  }else {
-    state.isFirst = true;
-  }
-  dialogVisible.value = true;
-}
-
-const onSubmit = async () => {
-  const valid = await busRef.value.validate();
-  if(valid){
-    if(title.value === '新增'){
-      const {id, ...data} = JSON.parse(JSON.stringify(state.form))
-      data.status = data.status ? 0 : 1
-      const res = await addClassification(data)
-      if(res.code === 200){
-        ElMessage({
-          type: 'success',
-          message: '新增成功'
-        });
-      }else{
-        ElMessage.warning(res.message)
-      }
-      emit("getList")
-      busRef.value.clearValidate();
-      reset();
-      dialogVisible.value = false;
-    }else if(title.value === '编辑'){
-      const {...data} = JSON.parse(JSON.stringify(state.form))
-      data.status = data.status ? 0 : 1
-      const res = await editClassification(data)
-      if(res.code === 200){
-        ElMessage({
-          type: 'success',
-          message: '编辑成功'
-        });
-      }else{
-        ElMessage.warning(res.message)
-      }
-      emit("getList")
-      busRef.value.clearValidate();
-      reset();
-      dialogVisible.value = false;
-    }
-  }
-}
-
-const handleClose = () => {
-  busRef.value.clearValidate();
-  reset();
-  dialogVisible.value = false;
-  emit("getList")
-
-}
-const reset = () => {
-  state.form = {
-    id: '',
-    name: '',
-    parentName: '',
-    sort: 0,
-    parentId: null,
-    status: true
-  }
-}
-defineExpose({
-  openDialog
-});
-
-</script>
-
-<style scoped lang="scss">
-.notice{
-  :deep(.el-form .el-form-item__label) {
-    font-size: 15px;
-  }
-  .file {
-    display: flex;
-    flex-direction: column;
-    align-items: flex-start;
-  }
-}
-</style>
diff --git a/src/views/onlineEducation/systemManage/courseClassification/index.vue b/src/views/onlineEducation/systemManage/courseClassification/index.vue
deleted file mode 100644
index a3234ac..0000000
--- a/src/views/onlineEducation/systemManage/courseClassification/index.vue
+++ /dev/null
@@ -1,116 +0,0 @@
-<template>
-  <div class="app-container">
-    <div>
-      <el-form style="display: flex;flex-wrap: wrap">
-        <el-form-item>
-          <el-button type="primary" plain @click="openDialog('addFirst',{})" icon="Plus"> 添加</el-button>
-        </el-form-item>
-      </el-form>
-    </div>
-<!--    <div style="margin-bottom: 10px">-->
-<!--      <el-form>-->
-<!--        <el-form-item label="分类名称">-->
-<!--          <el-input style="width: 20%" v-model="data.queryParams.name "></el-input>-->
-<!--          <el-button type="primary" style="margin-left: 30px" @click="getList">查询</el-button>-->
-<!--          <el-button plain @click="reset">重置</el-button>-->
-<!--          <el-button type="success" plain @click="openDialog('addFirst',{})">添加</el-button>-->
-<!--        </el-form-item>-->
-
-<!--      </el-form>-->
-<!--    </div>-->
-    <!-- 表格数据 -->
-    <el-table v-loading="loading" :data="dataList" :border="true" row-key="id">
-      <el-table-column label="序号" type="index" align="center" width="80" />
-      <el-table-column label="名称" >
-        <template #default="scope">
-          <span>{{scope.row.name}}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="排序" prop="sort" align="center" width="80" />
-      <el-table-column label="状态" prop="status" align="center"  width="80">
-        <template #default="scope">
-          <span>{{scope.row.status ==0 ? '正常' : '停用'}}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="250" >
-        <template #default="scope">
-          <el-button type="success" plain @click="openDialog('add',scope.row)">添加</el-button>
-          <el-button type="primary" plain @click="openDialog('edit',scope.row)">编辑</el-button>
-          <el-button type="danger" plain @click="handleDelete(scope.row.id)">删除</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-    <class-dialog ref="areaRef" @getList="getList"></class-dialog>
-  </div>
-</template>
-
-<script setup>
-import {getCurrentInstance, onMounted, reactive, ref, toRefs} from "vue";
-import {ElMessage, ElMessageBox} from "element-plus";
-import classDialog from "./components/courseClassDialog.vue"
-import {delArea, getArea} from "@/api/backManage/area";
-import {getDictList} from "@/api/backManage/evaluate";
-import {delMonitor} from "@/api/sysUsers";
-import {delClassification, getClassification} from "@/api/onlineEducation/courseClass";
-const { proxy } = getCurrentInstance();
-const loading = ref(false);
-const areaRef = ref();
-const cityList = ref([])
-const data = reactive({
-  queryParams: {
-    name: '',
-  },
-  total: 0,
-  dataList: [
-  ]
-});
-
-const { queryParams, total, dataList } = toRefs(data);
-
-//页面加载
-onMounted(() => {
-  getList();
-});
-const getList = async () => {
-  loading.value = true;
-  const res = await getClassification(data.queryParams);
-  if(res.code === 200){
-    dataList.value = res.data
-  }else{
-    ElMessage.warning(res.message)
-  }
-  loading.value = false;
-}
-
-const openDialog = (type, value) => {
-  areaRef.value.openDialog(type, value);
-}
-
-/** 重置新增的表单以及其他数据  */
-function reset() {
- data.queryParams.name = '';
- data.queryParams.pageNum = 1;
- getList();
-}
-const handleDelete = (val) => {
-  ElMessageBox.confirm(
-      '确定删除此条数据?',
-      '提示',
-      {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning',
-      })
-      .then( async() => {
-        const res = await delClassification(val)
-        if(res.code == 200){
-          ElMessage.success('数据删除成功')
-          await getList()
-        }else{
-          ElMessage.warning(res.message)
-        }
-      })
-}
-
-
-</script>
diff --git a/src/views/onlineEducation/systemManage/user/components/userDialog.vue b/src/views/onlineEducation/systemManage/user/components/userDialog.vue
deleted file mode 100644
index 8e3c00f..0000000
--- a/src/views/onlineEducation/systemManage/user/components/userDialog.vue
+++ /dev/null
@@ -1,560 +0,0 @@
-<template>
-  <div class="notice">
-    <el-dialog
-        v-model="dialogVisible"
-        :title="state.title"
-        width="700px"
-        :before-close="handleClose"
-        :close-on-press-escape="false"
-        :close-on-click-modal="false"
-    >
-      <el-form :model="state.form" size="default" ref="superRef" :rules="state.formRules" label-width="150px" >
-        <el-form-item label="用户名:"  prop="username" v-if="state.title !== '修改密码'">
-          <el-input v-model.trim="state.form.username" :disabled="state.title =='编辑' || state.title =='查看'" placeholder="请输入用户名" ></el-input>
-        </el-form-item>
-        <el-form-item label="名称:"  prop="name" v-if="state.title !== '修改密码'">
-          <el-input v-model.trim="state.form.name" :disabled="disabled" placeholder="请输入公司、部门或者车间岗位名"></el-input>
-        </el-form-item>
-        <el-form-item label="性别:"  prop="sex" v-if="state.title !== '修改密码'">
-          <el-radio-group v-model="state.form.sex"  :disabled="disabled">
-            <el-radio :label="0">男</el-radio>
-            <el-radio :label="1">女</el-radio>
-          </el-radio-group>
-        </el-form-item>
-        <el-form-item label="密码:" prop="password" v-if="state.title == '新增' || state.title == '修改密码'">
-          <el-input v-model.trim="state.form.password" type="password" show-password placeholder="请输入密码"></el-input>
-        </el-form-item>
-        <el-form-item label="重复密码:" prop="confirmPassword" v-if="state.title == '新增' || state.title == '修改密码'">
-          <el-input v-model.trim="state.form.confirmPassword" type="password" show-password placeholder="请输入确认密码"></el-input>
-        </el-form-item>
-        <el-form-item label="手机号:" prop="phone" v-if="state.title !== '修改密码'" >
-          <el-input v-model.trim="state.form.phone" :maxlength="11" :disabled="disabled" placeholder="请输入手机号"></el-input>
-        </el-form-item>
-        <el-form-item label="用户类型:" v-if="state.title !== '修改密码'" prop="userType">
-          <el-radio-group v-model="state.form.userType"  :disabled="disabled" @change="changeType" v-if="state.title == '新增'">
-            <el-radio :label="0" v-if="state.currentUserType == 0">管理员</el-radio>
-            <el-radio :label="1" v-if="state.currentUserType == 0 ">企业级</el-radio>
-            <el-radio :label="2" v-if="state.currentUserType == 1 ">部门级</el-radio>
-            <el-radio :label="3" v-if="!state.isAdmin">车间(岗位)级</el-radio>
-            <el-radio :label="4" v-if="state.currentUserType == 0">其他</el-radio>
-          </el-radio-group>
-          <span v-else-if="state.title == '查看'">{{state.currentUserType === 0 ? '管理员' : state.currentUserType === 1 ? '企业级' : state.currentUserType === 2 ? '部门级' : state.currentUserType === 3 ? '车间级' :'其他'}}</span>
-          <span v-else-if="state.title == '编辑'">{{state.form.userType === 0 ? '管理员' : state.form.userType === 1 ? '企业级' : state.form.userType === 2 ? '部门级' : state.form.userType === 3 ? '车间级' :'其他'}}</span>
-          <!--          <el-radio-group v-model="state.form.userType"  :disabled="disabled" @change="changeType" v-else-if="state.title == '编辑'">-->
-<!--            <el-radio :label="0" v-if="state.currentUserType == 0">管理员</el-radio>-->
-<!--            <el-radio :label="1" >企业级</el-radio>-->
-<!--            <el-radio :label="2" >部门级</el-radio>-->
-<!--            <el-radio :label="3" >车间(岗位)级</el-radio>-->
-<!--            <el-radio :label="4" >其他</el-radio>-->
-<!--          </el-radio-group>-->
-        </el-form-item>
-        <el-form-item label="所属企业:" prop="companyName" v-if="state.title !== '修改密码' && showCompany">
-          <el-select
-              clearable
-              v-if="state.isAdmin"
-              v-model="state.form.companyName"
-              filterable
-              :disabled="disabled || state.title =='编辑'"
-              remote
-              @change="selectValue"
-              reserve-keyword
-              placeholder="请输入企业名称"
-              remote-show-suffix
-              :remote-method="getCompanyList"
-              :loading="loading"
-              style="width: 240px"
-          >
-            <el-option
-                v-for="item in state.companyList"
-                :key="item.id"
-                :label="item.name"
-                :value="item.name"
-            />
-          </el-select>
-          <el-input v-else disabled style="width: 45%" v-model="state.form.companyName"></el-input>
-<!--            <el-select-->
-<!--                v-if="state.isAdmin"-->
-<!--                v-model="state.form.companyName"-->
-<!--                @change="selectValue"-->
-<!--                style="width: 45%"-->
-<!--                v-loadMore="loadMore"-->
-<!--                class="m-2"-->
-<!--                placeholder="请选择所属企业"-->
-<!--                popper-class="more_select_dropdown"-->
-<!--            >-->
-<!--              <el-option-->
-<!--                  v-for="item in state.companyList"-->
-<!--                  :key="item.id"-->
-<!--                  :label="item.name"-->
-<!--                  :value="item.name"-->
-<!--              />-->
-<!--            </el-select>-->
-
-
-        </el-form-item>
-        <el-form-item label="所属上级账号:" prop="companyName" v-if="showChild">
-          <scorllSelect
-              :disabled="disabled || state.title =='编辑'"
-              ref="scrollRef"
-              v-model="state.form.parentName"
-              @getval = "getSelectUser"
-              placeholder="请选择"
-              clearable
-              style="width: 45%;"
-              filterable
-              remote
-              searchKey="username"
-              :methods="getUser">
-          </scorllSelect>
-        </el-form-item>
-      </el-form>
-      <template #footer v-if="state.title !='查看'">
-        <span class="dialog-footer">
-            <el-button @click="handleClose" size="default">取 消</el-button>
-            <el-button type="primary"  @click="onSubmit" size="default" v-preReClick>确认</el-button>
-        </span>
-      </template>
-    </el-dialog>
-  </div>
-</template>
-<script setup>
-import {reactive, ref, toRefs, defineEmits, nextTick, onMounted} from 'vue'
-import { View } from "@element-plus/icons-vue";
-import scorllSelect from '@/components/scrollSelect/index.vue'
-import {ElMessage} from "element-plus";
-import {verifyPhone, verifyPwd, verifyUsername} from "@/utils/validate";
-import { checkUserName, checkPhone } from "@/api/login"
-import {addUser, editUser, getUserById, resetPwd} from "@/api/onlineEducation/user"
-import {Base64} from "js-base64"
-import {getCompany} from "@/api/onlineEducation/company";
-import {get} from "@vueuse/core";
-import {getUser} from "@/api/onlineEducation/user";
-import {debounce} from "@/utils";
-import Cookies from "js-cookie";
-
-const emit = defineEmits(["getList"]);
-const dialogVisible = ref(false)
-const superRef = ref(null)
-const scrollRef = ref(null)
-
-
-const equalToPassword = (rule, value, callback) => {
-  if (state.form.password !== value) {
-    callback(new Error("两次输入的密码不一致"));
-  } else {
-    callback();
-  }
-};
-
-const validateUserPhone = (rule, value, callback)=>{
-  if(value === ''){
-    callback(new Error('请输入手机号'))
-  }else{
-    if(!verifyPhone(value)){
-      callback(new Error('手机号格式有误'))
-    }else{
-      callback()
-    }
-  }
-}
-
-let validatePwd = (rule, value, callback)=>{
-  if(value === ''){
-    callback(new Error('请输入密码'))
-  }else{
-    if(!verifyPwd(value)){
-      callback(new Error('密码须包含字母、数字、特殊字符,长度在6-16之间'))
-    }else{
-      callback()
-    }
-  }
-}
-const startUsername = ref('');
-const validateUsername = (rule, value, callback)=>{
-  if(value === ''){
-    callback(new Error('请输入用户名'))
-  }else if(state.title == '编辑' && value == startUsername.value){
-    callback()
-  }else{
-    if(!verifyUsername(value)){
-      callback(new Error('用户名须使用字母或数字,长度在5-16之间'))
-    }else{
-      let param = {}
-      if(state.title=='新增/注册') {
-        param = {
-          username:value
-        }
-      }else if(state.title=='编辑'){
-        param = {
-          username:value,
-          id: state.registerForm.id
-        }
-      }
-      callback()
-      // checkUserName(param).then((res)=>{
-      //   if(res.data == false){
-      //     callback(new Error('用户名已被占用,请更换其他用户名'))
-      //   }else{
-      //     callback()
-      //   }
-      // })
-    }
-  }
-}
-
-const state = reactive({
-  title: '',
-  form: {
-    id: null,
-    name: '',
-    phone: '',
-    password: '',
-    confirmPassword: '',
-    username: '',
-    userType: null,
-    sex: 0,
-    companyId: null,
-    parentId: null
-  },
-  formRules:{
-    name: [{ required: true, message: '请输入公司、部门或者车间岗位名称', trigger: 'blur' }],
-    companyName: [{ required: true, message: '请选择上级企业', trigger: 'blur' }],
-    username: [{ required: true, trigger: "blur", validator: validateUsername }],
-    password: [{ required: true, validator: validatePwd, trigger: 'blur' }],
-    confirmPassword: [{ required: true, validator: equalToPassword, trigger: 'blur' }],
-    phone: [{ required: true, validator: validateUserPhone, trigger: 'blur' }],
-    userType: [{ required: true, message: '请选择用户类型', trigger: 'blur' }],
-  },
-  companyList: [],
-  userList: [
-
-  ],
-  keyword:'',
-
-  pageNum: 1,
-  pageSize: 10,
-  cloading:false,
-  totlePage: 0,
-  userParam: {},
-  isAdmin: false,
-  currentUserType: null
-
-})
-const UisMounted = ref(false);
-onMounted(() => {
-  UisMounted.value = true;
-
-});
-const showCompany = ref(false)
-const showChild = ref(false)
-const disabled = ref(false);
-const userInfo = ref()
-const openDialog = async (type, value) => {
-  userInfo.value = JSON.parse(Cookies.get('userInfo'))
-  console.log("userInfo",userInfo.value)
-  state.currentUserType = userInfo.value.userType
-  if(state.currentUserType === 0){
-    state.isAdmin = true;
-  }else {
-    state.isAdmin = false;
-    state.form.companyId = userInfo.value.companyId;
-    state.form.companyName = userInfo.value.companyName;
-  }
-
-  if(type !== 'view' && type !== 'pwd'){
-    // if(state.isAdmin){
-    //   await getCompanyList("")
-    // }
-  }
-  state.title = type === 'add' ? '新增' : type ==='edit' ? '编辑' : type ==='pwd' ? '修改密码' : '查看' ;
-  if(type === 'edit' || type === 'view') {
-    startUsername.value = value.username
-    if( type === 'view'){
-      disabled.value = true;
-    }
-    const res = await getUserById(value.id);
-    if(res.code === 200){
-      state.form = res.data
-      if(res.data.userType === 3){
-        showCompany.value = true;
-        showChild.value = true
-      }else if(res.data.userType === 2 || res.data.userType === 1 || res.data.userType === 4){
-        showCompany.value = true;
-        showChild.value = false;
-      }
-      if(res.data.userType === 3){
-        if(!res.data.parentId){
-          state.form.parentId = ''
-          state.form.parentName = '无上级账号'
-        }
-      }
-    }
-  }
-  if(type == 'pwd'){
-    state.form.id = value.id
-  }
-  dialogVisible.value = true
-  if(type === 'edit' && state.form && (state.form.userType === 2||state.form.userType === 3)){
-    await nextTick(() => {
-      // doGetUser()
-    })
-  }
-}
-
-const finshed = ref(false)
-const loading = ref(false)
-
-const getCompanyList = async (val)=>{
-  if(val != ""){
-    loading.value = true;
-    const queryParams = {
-      name: val
-    }
-    const res = await getCompany(queryParams)
-    if (res.code == 200) {
-      loading.value = false;
-      state.companyList = res.data.list
-
-    } else {
-      ElMessage.warning(res.message)
-    }
-  }else {
-    loading.value = true;
-    const queryParams = {
-      pageNum: 1,
-      pageSize: 10
-    }
-    const res = await getCompany(queryParams)
-    if (res.code == 200) {
-      loading.value = false;
-      state.companyList = res.data.list
-
-    } else {
-      ElMessage.warning(res.message)
-    }
-  }
-
-  // if (type === 'open' && state.pageNum !== 1) {
-  // } else {
-  //   const queryParams = {
-  //     pageNum: state.pageNum,
-  //     pageSize: state.pageSize,
-  //   }
-  //   const res = await getCompany(queryParams)
-  //   if (res.code == 200) {
-  //     if (res.data.pageNum === state.pageNum) {
-  //       finshed.value = false;
-  //       if (state.pageNum == 1) {
-  //         state.companyList = res.data.list
-  //       } else {
-  //         state.companyList = state.companyList.concat(res.data.list)
-  //       }
-  //     } else {
-  //       finshed.value = true;
-  //     }
-  //
-  //   } else {
-  //     ElMessage.warning(res.message)
-  //   }
-  //   console.log("state.companyList",state.companyList)
-  // }
-}
-const onSubmit = async () => {
-  const valid = await superRef.value.validate();
-  if(valid){
-    if((state.form.userType ===1 && state.form.companyId ===null) || ((state.form.userType ===2 ||state.form.userType ===3) && (state.form.parentId ===null ||state.form.companyId===null))){
-      ElMessage.warning('请选择所属父级账号')
-      return;
-    }
-    if(state.title == '新增'){
-      const {confirmPassword,id,...data} = state.form
-      data.password = Base64.encode(data.password)
-      const res = await addUser(data)
-      if(res.code == 200){
-        ElMessage.success(res.message)
-        emit('getList')
-        handleClose()
-        dialogVisible.value = false;
-      }else{
-        ElMessage.warning(res.message)
-      }
-    }else if(state.title == '编辑'){
-      const {confirmPassword,...data} = state.form
-      data.password = Base64.encode(data.password)
-      const param = {
-        name: data.name,
-        sex:data.sex,
-        phone: data.phone,
-        id:data.id,
-        companyId: data.companyId,
-        userType:data.userType,
-        username:data.username,
-        password: data.password,
-        parentId: data.parentId
-
-      }
-
-      const res = await editUser(param)
-      if(res.code == 200){
-        ElMessage.success(res.message)
-        emit('getList')
-        handleClose()
-      }else{
-        ElMessage.warning(res.message)
-      }
-    }else{
-      const {id,password} = state.form
-      const data = {id,password}
-      data.password = Base64.encode(data.password)
-      const res = await resetPwd(data)
-      if(res.code == 200){
-        ElMessage.success(res.message)
-        emit('getList')
-        handleClose()
-      }else{
-        ElMessage.warning(res.message)
-      }
-    }
-  }
-}
-const doGetUser = () => {
-  const param = {
-    userType: state.form.userType-1,
-    companyId: state.form.companyId,
-  }
-  scrollRef.value.getList(param,'change');
-}
-const changeType = async (val) => {
-  state.companyList = [];
-  if(state.isAdmin && val !=0){
-    await getCompanyList("")
-  }
-  state.form.parentId = null;
-  state.form.parentName = '';
-  state.form.companyId = null;
-  state.form.companyName = '';
-  //当前是管理员级用户
-  if(state.currentUserType === 0){
-    if(state.form.userType === 0){
-      showCompany.value = false;
-      showChild.value = false;
-    }else {
-      showCompany.value = true;
-      showChild.value = false;
-    }
-  }
-  //当前是企业级/其他用户选择部门
-  if((state.currentUserType === 1 && state.form.userType === 2) || (state.currentUserType === 4 && state.form.userType === 2)){
-    state.form.parentId = userInfo.value.id;
-    state.form.companyName = userInfo.value.companyName
-    state.form.companyId = userInfo.value.companyId;
-    showChild.value = false;
-    showCompany.value = true;
-
-  } //当前是企业级/其他用户选择车间
-  else if((state.currentUserType === 1 && state.form.userType === 3) || (state.currentUserType === 4 && state.form.userType === 3)){
-    state.form.companyName = userInfo.value.companyName
-    state.form.companyId = userInfo.value.companyId;
-    showCompany.value = true;
-    showChild.value = true;
-    const param = {
-      userType: 2,
-      companyId: state.form.companyId,
-    }
-    nextTick(() => {
-      scrollRef.value.getList(param,'change');
-    })
-  }
-  //当前是部门级选择车间
-  if((state.currentUserType === 2 && state.form.userType === 3)){
-    state.form.parentId = userInfo.value.id;
-    state.form.companyName = userInfo.value.companyName
-    state.form.companyId = userInfo.value.companyId;
-    showCompany.value = true;
-    showChild.value = false;
-  }
-  // if(state.isAdmin){
-  //   state.form.companyId = null;
-  //   state.form.companyName = '';
-  // }
-  // state.form.parentId = null;
-  // state.form.parentName = '';
-  // if(state.form.userType === 2 || state.form.userType === 3 ){
-  //   const param = {
-  //     userType: state.form.userType-1,
-  //     companyId: state.form.companyId,
-  //   }
-  //   scrollRef.value.getList(param,'change');
-  // }
-}
-
-const handleClose = () => {
-  state.form = {
-    id: null,
-    name: '',
-    phone: '',
-    password: '',
-    confirmPassword: '',
-    username: '',
-    userType: null,
-    sex: 0,
-    companyId: null,
-    parentId: null
-  }
-  showCompany.value = false;
-  showChild.value = false;
-  state.userList = [];
-  state.companyList = [];
-  state.pageNum = 1;
-  state.pageSize = 10;
-  superRef.value.clearValidate();
-  superRef.value.resetFields()
-  dialogVisible.value = false;
-}
-// //触底函数
-// const loadMore = () => {
-//   console.log(' 触底了');
-//   // 防抖处理
-//   setTimeout(() => {
-//     if (finshed.value) return //值为true,则代表没有数据了
-//     state.pageNum += 1
-//     getCompanyList('')
-//   }, 500)
-// }
-
-const selectValue = (val) => {
-  state.form.parentId = null;
-  state.form.parentName = null;
-  state.companyList.forEach(item => {
-    if(item.name === val){
-      state.form.companyId = item.id
-    }
-  })
-}
-const getSelectUser = (val) => {
-  console.log("valllllllll",val)
-  state.form.parentId = val;
-}
-
-
-
-
-
-defineExpose({
-  openDialog
-});
-
-</script>
-
-<style scoped lang="scss">
-.notice{
-  :deep(.el-form .el-form-item__label) {
-    font-size: 15px;
-  }
-  .file {
-    display: flex;
-    flex-direction: column;
-    align-items: flex-start;
-  }
-}
-</style>
diff --git a/src/views/onlineEducation/systemManage/user/index.vue b/src/views/onlineEducation/systemManage/user/index.vue
deleted file mode 100644
index 4bc7af5..0000000
--- a/src/views/onlineEducation/systemManage/user/index.vue
+++ /dev/null
@@ -1,179 +0,0 @@
-<template>
-  <div class="app-container">
-    <div style="display: flex;justify-content: space-between">
-      <el-form :inline="true" style="display: flex;align-items: center;flex-wrap: wrap;" >
-        <el-form-item>
-          <el-button
-              type="primary"
-              plain
-              icon="Plus"
-              @click="openDialog('add',{})"
-          >新增</el-button>
-        </el-form-item>
-        <el-form-item label="用户名:" >
-          <el-input v-model="data.queryParams.username" placeholder="请输入用户名"></el-input>
-        </el-form-item>
-        <el-form-item label="用户类型:" >
-          <el-select v-model="data.queryParams.userType" placeholder="请选择" clearable>
-            <el-option
-                v-for="item in data.userTypeList"
-                :key="item.id"
-                :label="item.name"
-                :value="item.id">
-            </el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item >
-          <el-button
-              type="primary"
-              @click="getList"
-          >查询</el-button>
-          <el-button
-              type="primary"
-              plain
-              @click="reset"
-          >重置</el-button>
-        </el-form-item>
-      </el-form>
-    </div>
-    <!-- 表格数据 -->
-    <el-table v-loading="loading" :data="dataList" :border="true">
-      <el-table-column label="序号" type="index" align="center" width="80" />
-      <el-table-column label="用户名" prop="username" align="center"  />
-      <el-table-column label="名称" prop="name" align="center" />
-      <el-table-column label="手机号" prop="phone" align="center"/>
-      <el-table-column label="用户类型" prop="userTypeName" align="center" width="150" />
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width" >
-        <template #default="scope">
-          <el-button link type="primary" @click="openDialog('edit',scope.row)">编辑</el-button>
-          <el-button link type="danger" @click="handleDelete(scope.row)">删除</el-button>
-          <el-button link type="primary" @click="openDialog('pwd',scope.row)">修改密码</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-
-    <pagination
-        v-show="total > 0"
-        :total="total"
-        v-model:page="queryParams.pageNum"
-        v-model:limit="queryParams.pageSize"
-        @pagination="getList"
-    />
-
-    <user-dialog ref="dialogRef" @getList=getList></user-dialog>
-  </div>
-</template>
-
-<script setup>
-import {getCurrentInstance, onMounted, onUnmounted, reactive, ref, toRefs} from "vue";
-import {ElMessage, ElMessageBox} from "element-plus";
-import {delCompany, getCompany} from "@/api/onlineEducation/company";
-import userDialog from './components/userDialog.vue'
-import {delUser, getUser} from "@/api/onlineEducation/user";
-import Cookies from "js-cookie";
-
-
-const { proxy } = getCurrentInstance();
-const loading = ref(false);
-const dialogRef = ref();
-const data = reactive({
-  queryParams: {
-    pageNum: 1,
-    pageSize: 10,
-    username: '',
-    userType: null
-  },
-  total: 0,
-  dataList: [],
-  userTypeList: [
-    {
-      id: 0,
-      name: '管理员'
-    },
-    {
-      id: 1,
-      name: '企业级'
-    },
-    {
-      id: 2,
-      name: '部门级'
-    },
-    {
-      id: 3,
-      name: '车间(岗位)级别'
-    },
-    {
-      id: 4,
-      name: '其他'
-    },
-  ]
-
-});
-
-const { queryParams, total, dataList } = toRefs(data);
-const userInfo = ref()
-onMounted(()=>{
-  userInfo.value = JSON.parse(Cookies.get('userInfo'))
-  getList()
-})
-
-onUnmounted(()=>{
-
-})
-
-const getList = async () => {
-  loading.value = true
-  const res = await getUser(data.queryParams)
-  if(res.code == 200){
-    data.dataList = res.data.list.map(item => {
-      return {
-        ...item,
-        userTypeName: item.userType === 0 ? '管理员' : item.userType === 1 ? '企业级' : item.userType === 2 ? '部门级' : item.userType === 3 ? '车间级' :'其他'
-      }
-    })
-    data.total = res.data.total
-  }else{
-    ElMessage.warning(res.message)
-  }
-  loading.value = false
-}
-
-const openDialog = (type, value) => {
-  if(userInfo.value.userType === 3){
-    ElMessage.warning('车间级用户不能新增')
-    return;
-  }
-  dialogRef.value.openDialog(type, value);
-}
-
-/** 重置新增的表单以及其他数据  */
-function reset() {
-  data.queryParams = {
-    pageNum: 1,
-    pageSize: 10,
-    username: '',
-    userType: null
-  }
-  getList()
-}
-const handleDelete = (val) => {
-  ElMessageBox.confirm(
-      '确定删除此条数据?',
-      '提示',
-      {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning',
-      })
-      .then( async() => {
-        const res = await delUser(val.id)
-        if(res.code == 200){
-          ElMessage.success('数据删除成功')
-          await getList()
-        }else{
-          ElMessage.warning(res.message)
-        }
-      })
-}
-
-</script>
diff --git a/src/views/work/onlineEducation/classHourBatch/components/chooseStudent.vue b/src/views/work/onlineEducation/classHourBatch/components/chooseStudent.vue
index 8d097ba..79233da 100644
--- a/src/views/work/onlineEducation/classHourBatch/components/chooseStudent.vue
+++ b/src/views/work/onlineEducation/classHourBatch/components/chooseStudent.vue
@@ -47,7 +47,7 @@
       >
         <el-table-column type="selection" :reserve-selection="true" width="55" align="center" :selectable="selectable" />
 <!--        <el-table-column label="序号" type="index" align="center" width="80" />-->
-        <el-table-column label="工号" prop="empno" align="center" width="60"  />
+<!--        <el-table-column label="工号" prop="empno" align="center" width="60"  />-->
         <el-table-column label="姓名" prop="name" align="center"  />
         <el-table-column label="性别" prop="sex" align="center" >
           <template #default="scope">
@@ -57,7 +57,7 @@
         <el-table-column label="手机号" prop="phone" align="center" width="130"/>
         <el-table-column label="身份证" prop="idNo" align="center" width="200" :show-overflow-tooltip="true"/>
 <!--        <el-table-column label="创建人" prop="createBy" align="center"/>-->
-        <el-table-column label="工作岗位" prop="post" align="center"/>
+<!--        <el-table-column label="工作岗位" prop="post" align="center"/>-->
         <el-table-column label="职务" prop="duty" align="center"/>
 <!--        <el-table-column label="一人一档" prop="duty" align="center" width="120">-->
 <!--          <template #default="scope">-->
diff --git a/src/views/work/onlineEducation/classHourBatch/index.vue b/src/views/work/onlineEducation/classHourBatch/index.vue
index d264e80..301884b 100644
--- a/src/views/work/onlineEducation/classHourBatch/index.vue
+++ b/src/views/work/onlineEducation/classHourBatch/index.vue
@@ -59,7 +59,7 @@
       <el-table-column label="完成率" prop="finishRate" align="center"  />
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width"  width="180">
         <template #default="scope">
-          <el-button link type="primary" @click="toStuChoose(scope.row)">学生数据</el-button>
+          <el-button link type="primary" @click="toStuChoose(scope.row)">人员数据</el-button>
           <el-button link type="primary" @click="openDialog('edit',scope.row)">编辑</el-button>
           <el-button link type="danger" @click="handleDelete(scope.row)">删除</el-button>
         </template>
diff --git a/src/views/work/onlineEducation/groupExams/components/examChooseStudent.vue b/src/views/work/onlineEducation/groupExams/components/examChooseStudent.vue
index 76ae610..1935394 100644
--- a/src/views/work/onlineEducation/groupExams/components/examChooseStudent.vue
+++ b/src/views/work/onlineEducation/groupExams/components/examChooseStudent.vue
@@ -67,7 +67,7 @@
       >
         <el-table-column type="selection" :reserve-selection="true" width="55" align="center" />
 <!--        <el-table-column label="序号" type="index" align="center" width="80" />-->
-        <el-table-column label="工号" prop="empno" align="center" width="60"  />
+<!--        <el-table-column label="工号" prop="empno" align="center" width="60"  />-->
         <el-table-column label="姓名" prop="name" align="center"  />
         <el-table-column label="性别" prop="sex" align="center" >
           <template #default="scope">
@@ -77,7 +77,7 @@
         <el-table-column label="手机号" prop="phone" align="center" width="130"/>
         <el-table-column label="身份证" prop="idNo" align="center" width="200" :show-overflow-tooltip="true"/>
 <!--        <el-table-column label="创建人" prop="createBy" align="center"/>-->
-        <el-table-column label="工作岗位" prop="post" align="center"/>
+<!--        <el-table-column label="工作岗位" prop="post" align="center"/>-->
         <el-table-column label="职务" prop="duty" align="center"/>
 <!--        <el-table-column label="一人一档" prop="duty" align="center" width="120">-->
 <!--          <template #default="scope">-->
diff --git a/src/views/work/onlineEducation/groupExams/components/examDialog.vue b/src/views/work/onlineEducation/groupExams/components/examDialog.vue
index 8af519d..2ad1634 100644
--- a/src/views/work/onlineEducation/groupExams/components/examDialog.vue
+++ b/src/views/work/onlineEducation/groupExams/components/examDialog.vue
@@ -329,7 +329,7 @@
   getQuestionBank
 } from "@/api/onlineEducation/questionBank";
 import {addExam, checkExamName, editExam, getExamStudent, getPaper} from "@/api/onlineEducation/exam";
-import Student from "@/views/onlineEducation/groupExams/components/student.vue";
+import Student from "@/views/work/onlineEducation/groupExams/components/student.vue";
 
 const dialogVisible = ref(false);
 const title = ref("");
diff --git a/src/views/work/onlineEducation/groupExams/components/student.vue b/src/views/work/onlineEducation/groupExams/components/student.vue
index e44bda8..02b7973 100644
--- a/src/views/work/onlineEducation/groupExams/components/student.vue
+++ b/src/views/work/onlineEducation/groupExams/components/student.vue
@@ -118,7 +118,7 @@
 import {batchDelStudent, delBatchStu, getBatchStudent} from "@/api/onlineEducation/batch";
 import {useRoute, useRouter} from 'vue-router'
 import {delExamStu, examDelStudent, getExamStudent} from "@/api/onlineEducation/exam";
-import ExamChooseStudent from "@/views/onlineEducation/groupExams/components/examChooseStudent.vue";
+import ExamChooseStudent from "@/views/work/onlineEducation/groupExams/components/examChooseStudent.vue";
 const route = useRoute()
 const router = useRouter();
 
diff --git a/src/views/work/onlineEducation/groupExams/index.vue b/src/views/work/onlineEducation/groupExams/index.vue
index 96c9c6b..38fd8ca 100644
--- a/src/views/work/onlineEducation/groupExams/index.vue
+++ b/src/views/work/onlineEducation/groupExams/index.vue
@@ -76,7 +76,7 @@
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width"  width="260">
         <template #default="scope">
           <el-button link type="primary" @click="viewQuestion(scope.row)">预览</el-button>
-          <el-button link type="primary" @click="toStuChoose(scope.row)">学生数据</el-button>
+          <el-button link type="primary" @click="toStuChoose(scope.row)">人员数据</el-button>
           <el-button link type="primary" @click="openDialog('edit',scope.row)">编辑</el-button>
           <el-button link type="danger" @click="handleDelete(scope.row)">删除</el-button>
         </template>
diff --git a/src/views/work/onlineEducation/people/components/stuDialog.vue b/src/views/work/onlineEducation/people/components/stuDialog.vue
index 2b87294..e2680ad 100644
--- a/src/views/work/onlineEducation/people/components/stuDialog.vue
+++ b/src/views/work/onlineEducation/people/components/stuDialog.vue
@@ -69,12 +69,12 @@
             />
           </el-select>
         </el-form-item>
-        <el-form-item label="工号:"  prop="empno" v-if="state.title !== '修改密码'">
-          <el-input v-model.trim="state.form.empno" :disabled="disabled" placeholder="请输入工号" ></el-input>
-        </el-form-item>
-        <el-form-item label="岗位:"  prop="post" v-if="state.title !== '修改密码'">
-          <el-input v-model.trim="state.form.post" :disabled="disabled" placeholder="请输入岗位" ></el-input>
-        </el-form-item>
+<!--        <el-form-item label="工号:"  prop="empno" v-if="state.title !== '修改密码'">-->
+<!--          <el-input v-model.trim="state.form.empno" :disabled="disabled" placeholder="请输入工号" ></el-input>-->
+<!--        </el-form-item>-->
+<!--        <el-form-item label="岗位:"  prop="post" v-if="state.title !== '修改密码'">-->
+<!--          <el-input v-model.trim="state.form.post" :disabled="disabled" placeholder="请输入岗位" ></el-input>-->
+<!--        </el-form-item>-->
         <el-form-item label="职务:"  prop="duty" v-if="state.title !== '修改密码'">
           <el-input v-model.trim="state.form.duty" :disabled="disabled" placeholder="请输入职务" ></el-input>
         </el-form-item>
@@ -159,7 +159,8 @@
 }
 let validateIdNo = (rule, value, callback)=>{
   if(value === ''){
-    callback(new Error('请输入身份证号'))
+    // callback(new Error('请输入身份证号'))
+    callback()
   }else if(state.title === '编辑' && value === startIdNo.value){
     callback()
   }else{
@@ -245,7 +246,7 @@
     password: [{ required: true, validator: validatePwd, trigger: 'blur' }],
     confirmPassword: [{ required: true, validator: equalToPassword, trigger: 'blur' }],
     phone: [{ required: true, validator: validateUserPhone, trigger: 'blur' }],
-    idNo: [{ required: true, validator: validateIdNo, trigger: 'blur' }],
+    idNo: [{ validator: validateIdNo, trigger: 'blur' }],
     // createBy: [{ required: true, message: '请输入所属部门名称', trigger: 'blur' }],
 
   },
diff --git a/src/views/work/onlineEducation/people/index.vue b/src/views/work/onlineEducation/people/index.vue
index c48a4a1..f1b1971 100644
--- a/src/views/work/onlineEducation/people/index.vue
+++ b/src/views/work/onlineEducation/people/index.vue
@@ -29,7 +29,7 @@
     <!-- 表格数据 -->
     <el-table v-loading="loading" :data="dataList" :border="true">
       <el-table-column label="序号" type="index" align="center" width="80" />
-      <el-table-column label="工号" prop="empno" align="center"  />
+<!--      <el-table-column label="工号" prop="empno" align="center"  />-->
       <el-table-column label="姓名" prop="name" align="center"  />
       <el-table-column label="性别" prop="sex" align="center" >
         <template #default="scope">
@@ -43,7 +43,8 @@
 <!--          <span>{{scope.row.createUser.name}}</span>-->
 <!--        </template>-->
 <!--      </el-table-column>-->
-      <el-table-column label="工作岗位" prop="post" align="center"/>
+<!--      <el-table-column label="工作岗位" prop="post" align="center"/>-->
+      <el-table-column label="部门" prop="deptName" align="center"/>
       <el-table-column label="职务" prop="duty" align="center"/>
       <el-table-column label="一人一档" prop="duty" align="center" width="120">
         <template #default="scope">

--
Gitblit v1.9.2