zhouwx
2025-01-06 c3bb35b20d6e076f73a1cad50fd6b9b94ca399a7
src/views/onlineEducation/classBatch/index.vue
@@ -1,14 +1,36 @@
<template>
  <div class="app-container">
    <div style="margin-left: -35px;margin-top: 15px">
      <el-select v-model="queryParams.platform"  size="small" style="margin-left: 40px;" placeholder="请选择平台">
      <el-select v-model="queryParams.institutionId"  size="small" style="margin-left: 40px;" placeholder="请选择平台">
        <el-option
          v-for="item in platformList"
          :key="item.value"
          :label="item.label"
          :value="item.value">
          :key="item.id"
          :label="item.institutionalName"
          :value="item.id">
        </el-option>
      </el-select>
      <el-date-picker
        v-model="time"
        size="small"
        type="daterange"
        range-separator="至"
        start-placeholder="开始日期"
        end-placeholder="结束日期"
        format="yyyy-MM-dd"
        style="margin-left: 30px;"
      >
      </el-date-picker>
      <el-cascader
        v-model="queryParams.subjectCode"
        ref="classifyRef"
        @change="changeTree"
        :options="subjectList"
        :props="{ checkStrictly: true }"
        clearable
        size="small"
        style="margin-left: 30px;"
      ></el-cascader>
      <el-input size="small" style="margin-left: 30px;width: 200px" v-model="queryParams.trainOrgName" placeholder="请输入机构"></el-input>
      <el-button
        size="small"
        type="primary"
@@ -16,6 +38,7 @@
        @click="handleQuery()"
      >查询</el-button>
      <el-button
        plain
        size="small"
        type="primary"
        style="margin-bottom: 10px"
@@ -23,27 +46,42 @@
      >重置</el-button>
    </div>
    <el-table v-loading="loading" :data="expertList" style="margin-top: 10px">
      <el-table-column label="UUID" align="center" prop="UUID" />
      <el-table-column label="ID" align="center" prop="id" />
      <el-table-column label="批次名称" align="center" prop="batchName" />
      <el-table-column label="推送平台" align="center" prop="platform" />
      <el-table-column label="上报时间" align="center" prop="reportTime" />
      <el-table-column label="所属培训机构" align="center" prop="trainingInstitution" />
      <el-table-column label="推送平台" align="center" prop="institutionName" />
      <el-table-column label="开始时间" align="center" prop="actualStartTime" />
      <el-table-column label="计划结束时间" align="center" prop="actualEndTime" />
      <el-table-column label="类别" align="center" prop="subjectName" />
      <el-table-column label="上报时间" align="center" prop="createTime" />
      <el-table-column label="所属培训机构" align="center" prop="trainOrgName" />
      <el-table-column label="课程" align="center" >
        <template #default="scope">
          <div v-for="(item,index) in scope.row.course" :key="index" style="color: #1890ff;cursor: pointer">
            <span @click="handleViewCourse(item)">{{item}}</span>
          <div v-for="(item,index) in scope.row.courseVOList" :key="index" style="color: #1890ff;cursor: pointer">
            <span @click="handleViewCourse(item)">{{item.courseName}}</span>
          </div>
        </template>
      </el-table-column>
      <el-table-column label="学员人数" align="center" prop="student" >
        <template #default="scope">
          <span style="color: #1890ff;cursor: pointer" @click="openStudent(scope.row)">{{scope.row.student}}</span>
          <span style="color: #1890ff;cursor: pointer" @click="openStudent(scope.row)">{{scope.row.studentCount}}</span>
        </template>
      </el-table-column>
      <el-table-column label="是否有考试" align="center" prop="isExam" />
      <el-table-column label="已开班" align="center" prop="isOfferClass" />
      <el-table-column label="数据更新时间" align="center" prop="updateTime" />
      <el-table-column label="删除标记" align="center" prop="delFlag" />
      <el-table-column label="是否有考试" align="center" prop="haveExam" >
        <template #default="scope">
          <span>{{scope.row.haveExam == 0 ? '否' : '是'}}</span>
        </template>
      </el-table-column>
      <el-table-column label="已开班" align="center" prop="openStatus" >
        <template #default="scope">
          <span>{{scope.row.openStatus == 0 ? '未开班' : scope.row.openStatus == 1 ? '开班' : '结束'}}</span>
        </template>
      </el-table-column>
      <el-table-column label="数据更新时间" align="center" prop="updateTime" width="100" />
      <el-table-column label="删除标记" align="center" prop="delFlag" >
        <template #default="scope">
          <span>{{scope.row.delFlag == 0 ? '未删除' : '已删除'}}</span>
        </template>
      </el-table-column>
      <el-table-column label="学时监管" align="center" class-name="small-padding fixed-width">
        <template #default="scope">
          <el-button
@@ -58,7 +96,7 @@
    <pagination
      v-show="total>0"
      :total="total"
      :page.sync="queryParams.pageIndex"
      :page.sync="queryParams.pageNum"
      :limit.sync="queryParams.pageSize"
      @pagination="getList"
    />
@@ -73,73 +111,119 @@
import studentList from '@/views/onlineEducation/count/components/studentList.vue'
import courseDialog from '@/views/onlineEducation/courseSupervision/components/courseDialog.vue'
import classHour from '@/views/onlineEducation/classBatch/components/classHour.vue'
import { listBatch, listQuestion } from '@/api/onlineEducation/student'
import { listPlatSelect } from '@/api/onlineEducation/plat'
import moment from 'moment/moment'
import { getSubject } from '@/api/onlineEducation/count'
export default {
  name: "nPeopleManage",
  dicts: [],
  components: { courseDialog,studentList,classHour},
  data() {
    return {
      time: [],
      loading: false,
      single: true,
      multiple: true,
      showSearch: true,
      addForm: false,
      total: 0,
      platformList: [
        {
          value: '1',
          label: '平台1'
        },
        {
          value: '2',
          label: '平台2'
        },
      ],
      platformList: [],
      expertList: [],
      queryParams: {
        pageIndex: 1,
        pageNum: 1,
        pageSize: 10,
        platform: ''
        institutionId: '',
        startTime: '',
        endTime: '',
        subjectCode: null,
        trainOrgName: ''
      },
      subjectList: [],
      trainOrgList: []
    };
  },
  created() {
    this.setDate();
    this.getSubjectList()
    this.getList();
    this.getPlat();
  },
  methods: {
    setDate(){
      const end = new Date();
      const start = new Date();
      start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
      const s = moment(start).format('YYYY-MM-DD')
      const e = moment(end).format('YYYY-MM-DD')
      this.time = [s,e]
    },
    changeTree(val) {
      console.log("label====",this.$refs.classifyRef.getCheckedNodes()[0].value)
      this.queryParams.subjectCode = this.$refs.classifyRef.getCheckedNodes()[0].value
      // 我这里只是打印了一下label的值哦,需要赋值的话自己去赋值哦
      if (this.$refs.classifyRef) {
        this.$refs.classifyRef.dropDownVisible = false
      }
    },
    getSubjectList() {
      getSubject().then(res => {
        if (res.code == 200) {
          console.log('res',res)
          this.subjectList = this.recursion(res.data)
        }
      })
    },
    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.code,
            label: item.name
          })
          // 有children
        } else {
          tmp.push({
            value: item.code,
            label: item.name,
            children: this.recursion(item.children)
          })
        }
      }
      return tmp;
    },
    getList(){
      this.loading = true;
      this.expertList = [
        {
          UUID: '2024060600001',
          batchName: '测试数据1',
          platform:'平台1',
          reportTime: '2024-6-11 10:32:00',
          trainingInstitution: '培训机构1',
          course: ['课程1','课程2'],
          student:120,
          isExam: '是',
          isOfferClass: '是',
          delFlag:'未删除',
          updateTime: '2024-6-11 10:32:00'
        },
        {
          UUID: '2024060600002',
          batchName: '测试数据2',
          platform:'平台2',
          reportTime: '2024-6-11 10:32:00',
          trainingInstitution: '培训机构2',
          course: ['课程2'],
          student: 132,
          isExam: '否',
          isOfferClass: '否',
          delFlag:'未删除',
          updateTime: '2024-6-11 10:32:00'
        },
      ]
      this.total = 2
      this.loading = false;
      if(this.time && this.time.length >0){
        this.queryParams.startTime = moment(this.time[0]).format('YYYY-MM-DD')
        this.queryParams.endTime = moment(this.time[1]).format('YYYY-MM-DD')
      }
      this.loading = true;
      listBatch( this.queryParams).then((res) => {
        if (res.code == 200) {
          this.expertList = res.rows.map(item => {
            return {
              ...item,
              trainOrgName: item.trainOrgName ? item.trainOrgName : '--',
              startTime: item.startTime ? item.startTime : '--',
              endTime: item.endTime ? item.endTime : '--',
              category: item.category ? item.category : '--'
            }
          })
          this.total = res.total
          this.loading = false;
        }
      })
    },
    getPlat() {
      listPlatSelect().then((res) => {
        if (res.code == 200) {
          this.platformList = res.data
        }
      })
    },
    handleChange(){
@@ -150,17 +234,22 @@
    },
    resetQuery(){
      this.queryParams = {
        pageIndex: 1,
        pageNum: 1,
        pageSize: 10,
        platform: ''
        institutionId: '',
        startTime: '',
        endTime: '',
        subjectCode: null,
        trainOrgName: ''
      }
      this.time = [];
      this.getList();
    },
    handleViewCourse(data){
      this.$refs.courseDialogRef.openDialog(data);
      this.$refs.courseDialogRef.openDialog(data,'batch');
    },
    openStudent(data) {
      this.$refs.studentDialog.openDialog(data);
      this.$refs.studentDialog.openDialog(data,'batch');
    },
    openClassHour(data){
      this.$refs.classRef.openDialog(data)