src/views/work/onlineEducation/offlineEducation/components/recordDialog.vue
@@ -69,13 +69,28 @@ <!-- <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-input v-model.trim="state.form.period" @input="state.form.period = state.form.period .replace(/[^0-9.]/g, '') .replace(/(\..*)\./g, '$1') .replace(/^(-?\d+\.?\d*).*/, '$1')" :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-input v-model.trim="state.form.actualPeriod" @input="state.form.actualPeriod = state.form.actualPeriod .replace(/[^0-9.]/g, '') .replace(/(\..*)\./g, '$1') .replace(/^(-?\d+\.?\d*).*/, '$1')" :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-input v-model.trim="state.form.score" @input="state.form.score = state.form.score .replace(/[^0-9.]/g, '') .replace(/(\..*)\./g, '$1') .replace(/^(-?\d+\.?\d*).*/, '$1')" :disabled="disabled" placeholder="请输入考试成绩" ></el-input> </el-form-item> <el-form-item label="是否合格:" prop="passed" > <el-radio-group v-model="state.form.passed" :disabled="disabled"> @@ -369,7 +384,7 @@ // state.form.files = [] ElMessage({ type: 'warning', message: res.message message: response.message }) } } src/views/work/onlineEducation/offlineEducation/index.vue
@@ -73,10 +73,14 @@ <span>{{scope.row.passed == 0 ? '不合格':'合格'}}</span> </template> </el-table-column> <el-table-column label="培训记录" prop="passed" align="center" width="130"> <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"> <el-link type="primary" @click="openFile(item.filePath)">{{item.fileName}}</el-link> <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> </div> </div> </template> @@ -111,6 +115,8 @@ import {delStudent, getStudent} from "@/api/onlineEducation/student"; import {delRecord, getRecord} from "@/api/onlineEducation/examRecord"; import {renderAsync} from "docx-preview"; import axios from "axios"; import {getToken} from "@/utils/auth"; const { proxy } = getCurrentInstance(); @@ -236,5 +242,23 @@ } } } const downloadFile = (e)=>{ axios.get(import.meta.env.VITE_APP_BASE_API + '/' +e.filePath,{headers:{'Content-Type': 'application/json','Authorization': `${getToken()}`},responseType: 'blob'}).then(res=>{ if (res) { const link = document.createElement('a') let blob = new Blob([res.data],{type: res.data.type}) link.style.display = "none"; link.href = URL.createObjectURL(blob); // 创建URL link.setAttribute("download", e.fileName); document.body.appendChild(link); link.click(); document.body.removeChild(link); } else { ElMessage({ type: 'warning', message: '文件读取失败' }); } }) } </script>