zhouwx
2025-11-13 5287077531b0c45031842b1e5ec3f3b9314ba234
src/views/work/onlineEducation/offlineEducation/index.vue
@@ -8,10 +8,11 @@
              plain
              icon="Plus"
              @click="openDialog('add',{})"
              v-hasPermi="['offlineEducation:list:add']"
          >新增登记</el-button>
        </el-form-item>
        <el-form-item label="企业名称:" >
          <el-input v-model="data.queryParams.companyName" placeholder="请输入企业名称"></el-input>
        <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>
@@ -42,11 +43,14 @@
    <!-- 表格数据 -->
    <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="planDate" 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>
          <div style="display: flex;flex-wrap: wrap">
            <div v-for="(item,index) in scope.row.students" style="display: flex" >{{item.name}}<div v-if="scope.row.students && index !=scope.row.students.length -1">,</div></div>
          </div>
        </template>
      </el-table-column>
<!--      <el-table-column label="性别" prop="sex" align="center" >-->
@@ -54,31 +58,31 @@
<!--          <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="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.level == 1 ? '公司级':scope.row.level == 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-column label="培训记录" prop="passed" align="center" width="180">
<!--      <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-column label="培训记录及有效评价" prop="passed" align="center" width="180">
        <template #default="scope">
          <div v-for="item in scope.row.files" style="display: flex;flex-direction: column">
            <div style="display: flex;flex-direction: column;align-items: center">
              <el-link type="primary" @click="openFile(item.filePath)">{{item.fileName}}</el-link>
              <el-button style="width: 50px;margin-bottom: 5px" size="small" @click="downloadFile(item)">下载</el-button>
              <el-button style="width: 50px;margin-bottom: 5px" size="small" @click="downloadFile(item)" v-hasPermi="['offlineEducation:list:edit']">下载</el-button>
            </div>
          </div>
@@ -87,8 +91,8 @@
      </el-table-column>
      <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="120">
        <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('edit',scope.row)" v-hasPermi="['offlineEducation:list:edit']">编辑</el-button>
          <el-button link type="danger"  @click="handleDelete(scope.row)" v-hasPermi="['offlineEducation:list:del']">删除</el-button>
        </template>
      </el-table-column>
    </el-table>
@@ -158,7 +162,12 @@
  loading.value = true
  const res = await getRecord(data.queryParams)
  if(res.code == 200){
    data.dataList = res.data.list
    data.dataList = res.data.list.map(item => {
      return {
        ...item,
        planDate: item.planDate?item.planDate.substring(0,10):null
      }
    })
    data.total = res.data.total
  }else{
    ElMessage.warning(res.message)
@@ -202,7 +211,7 @@
}
const openFile = async(path)=>{
  const ext = path.split('.').pop().toLowerCase();
  if (ext === 'doc' || ext === 'xls' || ext === 'xlsx') {
  if (ext === 'doc' || ext === 'xls' || ext === 'xlsx' || ext === 'ppt' || ext === 'pptx') {
    ElMessageBox.confirm(`暂不支持线上预览.${ext}文件,是否下载查看?`, '提示', { confirmButtonText: '确认', cancelButtonText: '取消', type: 'warning' }).then(() => {
      window.open(`${import.meta.env.VITE_APP_BASE_API}/${path}`, '_blank');
    }).catch(() => {