xiangpei
2024-07-04 f2e3affd102f6cd98448ef70c12ee3ca81afc659
Merge branch 'master' into dev

# Conflicts:
# src/views/exam/exam/ExamManage.vue
# vue.config.js
6个文件已修改
1个文件已添加
129 ■■■■ 已修改文件
src/api/cheatRecord.js 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/classes.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/class-management/Class.vue 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/class-management/ClassStaff.vue 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/exam/exam/ExamManage.vue 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/user/student/list.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
vue.config.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/cheatRecord.js
New file
@@ -0,0 +1,61 @@
import axios from "./request";
// 获取作弊记录分页
export const getCheatRecords = (params) => {
    return axios({
        url: "/api/cheat-record/page",
        method: "GET",
        params: params
    })
}
// 获取作弊记录列表
export const getCheatRecordList = () => {
    return axios({
        url: "/api/cheat-record/list",
        method: "GET"
    })
}
// 通过id获取作弊记录
export const getCheatRecordById = (params) => {
    return axios({
        url: "/api/cheat-record/" + params,
        method: "GET"
    })
}
// 通过id删除作弊记录
export const deleteCheatRecordById = (params) => {
    return axios({
        url: "/api/cheat-record/" + params,
        method: "DELETE"
    })
}
// 批量删除作弊记录
export const deleteCheatRecordByIds = (params) => {
    return axios({
        url: "/api/cheat-record/batch",
        method: "DELETE",
        data: params
    })
}
// 修改作弊记录
export const editCheatRecord = (params) => {
    return axios({
        url: "/api/cheat-record/",
        method: "PUT",
        data: params
    })
}
// 添加作弊记录
export const addCheatRecord = (params) => {
    return axios({
        url: "/api/cheat-record/",
        method: "POST",
        data: params
    })
}
src/api/classes.js
@@ -75,3 +75,11 @@
        data: params
    })
}
// 班级恢复正常
export const recover = (id) => {
  return axios({
    url: "/api/admin/classes/recover/" + id,
    method: "PUT"
  })
}
src/views/class-management/Class.vue
@@ -98,9 +98,24 @@
          <el-button v-if="scope.row.status !== '解散'" @click="studentManager(scope.row.id)" size="small"
                     type="success">成员管理
          </el-button>
          <el-button v-if="scope.row.status !== '解散'" @click="dissolution(scope.row.id)" type="danger"
                     size="small">解散
          </el-button>
          <el-popconfirm
            class="confirm"
            title="确定要解散该班级?"
            @confirm="dissolution(scope.row.id)"
          >
            <el-button slot="reference" v-if="scope.row.status !== '解散'" type="danger"
                       size="small">解散
            </el-button>
          </el-popconfirm>
          <el-popconfirm
            class="confirm"
            title="确定要恢复该班级吗?"
            @confirm="recover(scope.row.id)"
          >
            <el-button slot="reference" v-if="scope.row.status === '解散'" type="success"
                       size="small">恢复正常
            </el-button>
          </el-popconfirm>
        </template>
      </el-table-column>
    </el-table>
@@ -174,7 +189,7 @@
</template>
<script>
import { addClasses, editClasses, getClassess, dissolution } from '@/api/classes'
import { addClasses, editClasses, getClassess, dissolution, recover } from '@/api/classes'
import { addClassesNotify } from '@/api/classesNotify'
import Pagination from '@/components/Pagination'
@@ -305,6 +320,12 @@
        this.page()
      })
    },
    recover(id) {
      recover(id).then(res => {
        this.$message.success(res.data.message)
        this.page()
      })
    },
    handlerEdit (row) {
      this.form = row
      this.open = true
@@ -333,6 +354,9 @@
</script>
<style scoped lang="scss">
.confirm {
  margin-left: 5px;
}
.flex {
  display: flex;
}
src/views/class-management/ClassStaff.vue
@@ -59,9 +59,8 @@
        width="300px"
      >
        <template slot-scope="scope">
          <el-button @click="handlerEditStudent(scope.row)" type="warning">编辑</el-button>
          <el-button @click="remove(scope.row.id)" type="danger">删除</el-button>
          <el-button type="primary">分配角色</el-button>
          <el-button @click="handlerEditStudent(scope.row)" type="warning" size="small">编辑</el-button>
          <el-button @click="remove(scope.row.id)" type="danger" size="small">删除</el-button>
        </template>
      </el-table-column>
    </el-table>
@@ -84,8 +83,8 @@
        </el-form-item>
        <el-form-item label="性别" prop="sex">
          <el-select v-model="studentForm.sex">
            <el-option label="男" value="N"></el-option>
            <el-option label="女" value="V"></el-option>
            <el-option label="男" :value="1"></el-option>
            <el-option label="女" :value="2"></el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="电话" prop="phone">
@@ -142,7 +141,7 @@
    return {
      studentForm: {
        realName: '',
        sex: '',
        sex: 1,
        phone: '',
        age: null,
        account: '',
@@ -206,7 +205,7 @@
    submitStudentForm () {
      this.$refs['studentForm'].validate((valid) => {
        if (valid) {
          this.studentForm.classes = this.classes.id
          this.studentForm.classesId = this.classes.id
          if (this.studentForm.id) {
            edit(this.studentForm).then(res => {
              this.addOpen = false
src/views/exam/exam/ExamManage.vue
@@ -72,6 +72,16 @@
            @click="handlerEdit(scope.row)"
          >修改
          </el-button>
          <el-popconfirm
            v-if="scope.row.status === 'not_start'"
            style="margin: 0 5px"
            title="确定要删除该考试吗?"
            @confirm="deleteExam(scope.row.id)"
          >
            <el-button slot="reference" type="danger" size="small">删除</el-button>
          </el-popconfirm>
          <el-button v-if="scope.row.status === 'finished'" type="success" size="small" @click="markPaper(scope.row)">阅卷</el-button>
          <el-button type="danger" size="small" @click="deleteExam(scope.row.id)">删除</el-button>
          <el-button type="success" size="small" @click="markPaper(scope.row)">阅卷</el-button>
          <el-button type="warning" size="small" @click="monitor(scope.row)">监控</el-button>
src/views/user/student/list.vue
@@ -13,7 +13,6 @@
    </el-form>
    <el-table v-loading="listLoading" :data="tableData" border fit highlight-current-row style="width: 100%">
      <el-table-column prop="id" label="Id" />
      <el-table-column prop="userName" label="用户名"/>
      <el-table-column prop="realName" label="真实姓名" />
      <el-table-column prop="userLevel" label="学级"  :formatter="levelFormatter"/>
vue.config.js
@@ -19,8 +19,8 @@
    hotOnly: false,
    proxy: {
      '/api': {
        target: 'http://localhost:8000',
        // target: 'http://192.168.3.64:8000',
        // target: 'http://localhost:8000',
        target: 'http://192.168.3.64:8000',
        changeOrigin: true
      }
    }