forked from integrated_whb/integrated_whb_vue
Compare commits
No commits in common. "861cef7aa539444db3499e6b52979c5a7794d85f" and "7874734e3188775e14af8461902303024d20d20d" have entirely different histories.
861cef7aa5
...
7874734e31
|
@ -57,10 +57,6 @@ export const getCoursewares = (params) =>
|
||||||
post("/archives/getCoursewares", params); // 一期一档安全培训教材或课程讲义
|
post("/archives/getCoursewares", params); // 一期一档安全培训教材或课程讲义
|
||||||
export const getTrainingSchedule = (params) =>
|
export const getTrainingSchedule = (params) =>
|
||||||
post("/archives/trainingscheduleGoEdit", params); // 一期一档培训日程安排通知/也可称为培训计划
|
post("/archives/trainingscheduleGoEdit", params); // 一期一档培训日程安排通知/也可称为培训计划
|
||||||
export const getAllCourseware = (params) =>
|
|
||||||
post("/archives/getTraining", params); // 一期一档教育培训记录 --交通运输类型
|
|
||||||
export const editTraining = (params) =>
|
|
||||||
post("/archivesReviewRecord/editTraining", params); // 一期一档教育培训记录保存 --交通运输类型
|
|
||||||
|
|
||||||
export const downloadArchiveDirectory = (params) =>
|
export const downloadArchiveDirectory = (params) =>
|
||||||
post("/archives/archiveDirectory", params); // 一期一档:档案目录批量导出
|
post("/archives/archiveDirectory", params); // 一期一档:档案目录批量导出
|
||||||
|
@ -74,8 +70,6 @@ export const downloadHsAll = (params) => post("/archives/hsAll", params); // 一
|
||||||
export const downloadHs = (params) => post("/archives/hs", params); // 一期一档:会审表导出
|
export const downloadHs = (params) => post("/archives/hs", params); // 一期一档:会审表导出
|
||||||
export const downloadStudentsumtable = (params) =>
|
export const downloadStudentsumtable = (params) =>
|
||||||
post("/archives/studentsumtable", params); // 一期一档:学员统计总表导出
|
post("/archives/studentsumtable", params); // 一期一档:学员统计总表导出
|
||||||
export const downloadStudentsumtableAsTraffic = (params) =>
|
|
||||||
post("/archives/studentsumtableAsTraffic", params); // 一期一档:学员统计总表导出
|
|
||||||
export const downloadEvaluationreport = (params) =>
|
export const downloadEvaluationreport = (params) =>
|
||||||
post("/archives/evaluationreport", params); // 一期一档:综合考评报告导出
|
post("/archives/evaluationreport", params); // 一期一档:综合考评报告导出
|
||||||
export const downloadExaminationpaper = (params) =>
|
export const downloadExaminationpaper = (params) =>
|
||||||
|
@ -85,10 +79,6 @@ export const downloadImagedata = (params) =>
|
||||||
export const downloadTeachingMaterial = (params) =>
|
export const downloadTeachingMaterial = (params) =>
|
||||||
post("/archives/teachingMaterial", params); // 一期一档:安全培训教材或课程讲义导出
|
post("/archives/teachingMaterial", params); // 一期一档:安全培训教材或课程讲义导出
|
||||||
export const downloadSign = (params) => post("/archives/sign", params); // 一期一档:安全培训教育记录及签字表批量导出
|
export const downloadSign = (params) => post("/archives/sign", params); // 一期一档:安全培训教育记录及签字表批量导出
|
||||||
export const downloadSignAsTraffic = (params) =>
|
|
||||||
post("/archives/signAsTraffic", params); // 一期一档:安全知识培训签到表 --交通运输类型
|
|
||||||
export const downloadTrainingAsTraffic = (params) =>
|
|
||||||
post("/archives/trainingAsTraffic", params); // 一期一档:教育培训记录 --交通运输类型
|
|
||||||
|
|
||||||
export const downloadAllwordzip = (params) =>
|
export const downloadAllwordzip = (params) =>
|
||||||
post("/archivesallcorpword/allwordzip", params); // 一企一档:档案目录
|
post("/archivesallcorpword/allwordzip", params); // 一企一档:档案目录
|
||||||
|
|
|
@ -6,11 +6,7 @@
|
||||||
<layout-table
|
<layout-table
|
||||||
ref="tableRef"
|
ref="tableRef"
|
||||||
row-key="TYPE"
|
row-key="TYPE"
|
||||||
:data="
|
:data="data.list"
|
||||||
TRAINTYPE === 'bd2a3b7767db49968e26cfccc3c2b4a4'
|
|
||||||
? data.listTraffic
|
|
||||||
: data.list
|
|
||||||
"
|
|
||||||
:show-pagination="false"
|
:show-pagination="false"
|
||||||
>
|
>
|
||||||
<el-table-column reserve-selection type="selection" width="55" />
|
<el-table-column reserve-selection type="selection" width="55" />
|
||||||
|
@ -38,13 +34,10 @@
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import TrainingSchedule from "./components/training_schedule.vue";
|
import TrainingSchedule from "./components/training_schedule.vue";
|
||||||
import Training from "./components/training.vue";
|
|
||||||
import Image from "./components/image.vue";
|
import Image from "./components/image.vue";
|
||||||
import Report from "./components/report.vue";
|
import Report from "./components/report.vue";
|
||||||
import Results from "./components/results.vue";
|
import Results from "./components/results.vue";
|
||||||
import Achievement from "./components/achievement.vue";
|
|
||||||
import SignatureForm from "./components/signature_form.vue";
|
import SignatureForm from "./components/signature_form.vue";
|
||||||
import SignatureFormTraffic from "./components/signature_form_traffic.vue";
|
|
||||||
import { markRaw, reactive, ref } from "vue";
|
import { markRaw, reactive, ref } from "vue";
|
||||||
import { useRoute, useRouter } from "vue-router";
|
import { useRoute, useRouter } from "vue-router";
|
||||||
import { ElMessage, ElMessageBox } from "element-plus";
|
import { ElMessage, ElMessageBox } from "element-plus";
|
||||||
|
@ -56,7 +49,7 @@ import Setting from "./components/setting.vue";
|
||||||
|
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const route = useRoute();
|
const route = useRoute();
|
||||||
const { CLASS_ID, CORP_NAME, CLASS_NAME, CORPINFO_ID, TRAINTYPE } = route.query;
|
const { CLASS_ID, CORP_NAME, CLASS_NAME, CORPINFO_ID } = route.query;
|
||||||
const tableRef = ref(null);
|
const tableRef = ref(null);
|
||||||
const data = reactive({
|
const data = reactive({
|
||||||
list: [
|
list: [
|
||||||
|
@ -92,26 +85,6 @@ const data = reactive({
|
||||||
{ NAME: "学员考核成绩统计表", TYPE: 104, component: markRaw(Results) },
|
{ NAME: "学员考核成绩统计表", TYPE: 104, component: markRaw(Results) },
|
||||||
{ NAME: "本期综合考评报告", TYPE: 105, component: markRaw(Report) },
|
{ NAME: "本期综合考评报告", TYPE: 105, component: markRaw(Report) },
|
||||||
],
|
],
|
||||||
listTraffic: [
|
|
||||||
{
|
|
||||||
NAME: "教育培训记录",
|
|
||||||
TYPE: 110,
|
|
||||||
component: markRaw(Training),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
NAME: "安全培训教材或课程讲义",
|
|
||||||
TYPE: 106,
|
|
||||||
component: "",
|
|
||||||
url: "/archives_management/semester/archives/handout_list",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
NAME: "安全知识培训签到表",
|
|
||||||
TYPE: 112,
|
|
||||||
component: markRaw(SignatureFormTraffic),
|
|
||||||
},
|
|
||||||
{ NAME: "培训影像资料", TYPE: 107, component: markRaw(Image) },
|
|
||||||
{ NAME: "安全知识培训成绩表", TYPE: 113, component: markRaw(Achievement) },
|
|
||||||
],
|
|
||||||
type: 0,
|
type: 0,
|
||||||
title: "",
|
title: "",
|
||||||
component: "",
|
component: "",
|
||||||
|
|
|
@ -1,204 +0,0 @@
|
||||||
<template>
|
|
||||||
<el-dialog
|
|
||||||
:title="title"
|
|
||||||
:model-value="type === 113"
|
|
||||||
width="1100px"
|
|
||||||
@close="fnClose"
|
|
||||||
>
|
|
||||||
<div class="tr mb">
|
|
||||||
<el-button type="primary" @click="fnExport">导出</el-button>
|
|
||||||
</div>
|
|
||||||
<div id="printContent" class="newform">
|
|
||||||
<div class="tc">安全知识培训成绩表</div>
|
|
||||||
<table class="mt print_table">
|
|
||||||
<tr>
|
|
||||||
<td class="title" style="width: 5%">序号</td>
|
|
||||||
<td class="title" style="width: 15%">姓名</td>
|
|
||||||
<td class="title" style="width: 10%">成绩</td>
|
|
||||||
<td class="title" style="width: 5%">序号</td>
|
|
||||||
<td class="title" style="width: 15%">姓名</td>
|
|
||||||
<td class="title" style="width: 10%">成绩</td>
|
|
||||||
<td class="title" style="width: 5%">序号</td>
|
|
||||||
<td class="title" style="width: 15%">姓名</td>
|
|
||||||
<td class="title" style="width: 10%">成绩</td>
|
|
||||||
</tr>
|
|
||||||
<template v-for="(item, index) in data.students">
|
|
||||||
<tr v-if="index % 3 === 0" :key="index">
|
|
||||||
<td class="title">{{ index + 1 }}</td>
|
|
||||||
<td class="title">{{ item.NAME }}</td>
|
|
||||||
<td v-if="data.clazz.EXAMINATION === 0" class="title">
|
|
||||||
{{ item.STAGEEXAMSCORE > -1 ? item.STAGEEXAMSCORE : "不考试" }}
|
|
||||||
</td>
|
|
||||||
<template v-if="data.clazz.EXAMINATION === 1">
|
|
||||||
<td v-if="item.examnum > '0'" class="title">
|
|
||||||
{{ item.STAGEEXAMSCORE > -1 ? item.STAGEEXAMSCORE : "0分" }}
|
|
||||||
</td>
|
|
||||||
<td v-else class="title">
|
|
||||||
{{ item.STAGEEXAMSCORE > -1 ? item.STAGEEXAMSCORE : "未参加" }}
|
|
||||||
</td>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<td class="title">
|
|
||||||
{{ data.students[index + 1] ? index + 2 : "" }}
|
|
||||||
</td>
|
|
||||||
<td class="title">
|
|
||||||
{{
|
|
||||||
data.students[index + 1] ? data.students[index + 1].NAME : ""
|
|
||||||
}}
|
|
||||||
</td>
|
|
||||||
<td v-if="data.clazz.EXAMINATION === 0" class="title">
|
|
||||||
{{
|
|
||||||
data.students[index + 1]
|
|
||||||
? data.students[index + 1].STAGEEXAMSCORE > -1
|
|
||||||
? data.students[index + 1].STAGEEXAMSCORE
|
|
||||||
: "不考试"
|
|
||||||
: ""
|
|
||||||
}}
|
|
||||||
</td>
|
|
||||||
<template v-if="data.clazz.EXAMINATION === 1">
|
|
||||||
<td
|
|
||||||
v-if="
|
|
||||||
data.students[index + 1] &&
|
|
||||||
data.students[index + 1].examnum > '0'
|
|
||||||
"
|
|
||||||
class="title"
|
|
||||||
>
|
|
||||||
{{
|
|
||||||
data.students[index + 1]
|
|
||||||
? data.students[index + 1].STAGEEXAMSCORE > -1
|
|
||||||
? data.students[index + 1].STAGEEXAMSCORE
|
|
||||||
: "0分"
|
|
||||||
: ""
|
|
||||||
}}
|
|
||||||
</td>
|
|
||||||
<td v-else class="title">
|
|
||||||
{{
|
|
||||||
data.students[index + 1]
|
|
||||||
? data.students[index + 1].STAGEEXAMSCORE > -1
|
|
||||||
? data.students[index + 1].STAGEEXAMSCORE
|
|
||||||
: "未参加"
|
|
||||||
: ""
|
|
||||||
}}
|
|
||||||
</td>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<td class="title">
|
|
||||||
{{ data.students[index + 2] ? index + 3 : "" }}
|
|
||||||
</td>
|
|
||||||
<td class="title">
|
|
||||||
{{
|
|
||||||
data.students[index + 2] ? data.students[index + 2].NAME : ""
|
|
||||||
}}
|
|
||||||
</td>
|
|
||||||
<td v-if="data.clazz.EXAMINATION === 0" class="title">
|
|
||||||
{{
|
|
||||||
data.students[index + 2]
|
|
||||||
? data.students[index + 2].STAGEEXAMSCORE > -1
|
|
||||||
? data.students[index + 2].STAGEEXAMSCORE
|
|
||||||
: "不考试"
|
|
||||||
: ""
|
|
||||||
}}
|
|
||||||
</td>
|
|
||||||
<template v-if="data.clazz.EXAMINATION === 1">
|
|
||||||
<td
|
|
||||||
v-if="
|
|
||||||
data.students[index + 2] &&
|
|
||||||
data.students[index + 2].examnum > '0'
|
|
||||||
"
|
|
||||||
class="title"
|
|
||||||
>
|
|
||||||
{{
|
|
||||||
data.students[index + 2]
|
|
||||||
? data.students[index + 2].STAGEEXAMSCORE > -1
|
|
||||||
? data.students[index + 2].STAGEEXAMSCORE
|
|
||||||
: "0分"
|
|
||||||
: ""
|
|
||||||
}}
|
|
||||||
</td>
|
|
||||||
<td v-else class="title">
|
|
||||||
{{
|
|
||||||
data.students[index + 2]
|
|
||||||
? data.students[index + 2].STAGEEXAMSCORE > -1
|
|
||||||
? data.students[index + 2].STAGEEXAMSCORE
|
|
||||||
: "未参加"
|
|
||||||
: ""
|
|
||||||
}}
|
|
||||||
</td>
|
|
||||||
</template>
|
|
||||||
</tr>
|
|
||||||
</template>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
<template #footer>
|
|
||||||
<el-button @click="fnClose">关闭</el-button>
|
|
||||||
</template>
|
|
||||||
</el-dialog>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script setup>
|
|
||||||
import { reactive, watchEffect } from "vue";
|
|
||||||
import { ElMessageBox } from "element-plus";
|
|
||||||
import {
|
|
||||||
getStudentSigns,
|
|
||||||
downloadStudentsumtableAsTraffic,
|
|
||||||
} from "@/request/training_archive_management.js";
|
|
||||||
|
|
||||||
const props = defineProps({
|
|
||||||
type: {
|
|
||||||
type: Number,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
title: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
clazzId: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
corpInfoId: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
const data = reactive({
|
|
||||||
clazz: {},
|
|
||||||
pd: {},
|
|
||||||
students: [],
|
|
||||||
});
|
|
||||||
const emits = defineEmits(["update:type"]);
|
|
||||||
const fnGetData = async () => {
|
|
||||||
const resData = await getStudentSigns({
|
|
||||||
CORPINFO_ID: props.corpInfoId,
|
|
||||||
CLASS_ID: props.clazzId,
|
|
||||||
});
|
|
||||||
data.clazz = Object.assign({}, resData.clazz);
|
|
||||||
data.pd = Object.assign({}, resData.rpd);
|
|
||||||
data.students = resData.studentList;
|
|
||||||
};
|
|
||||||
|
|
||||||
const fnExport = async () => {
|
|
||||||
await ElMessageBox.confirm("确定要导出吗?", { type: "warning" });
|
|
||||||
await downloadStudentsumtableAsTraffic({
|
|
||||||
CLASS_ID: props.clazzId,
|
|
||||||
CORPINFO_ID: props.corpInfoId,
|
|
||||||
});
|
|
||||||
await ElMessageBox.confirm("导出后请前往档案下载中下载该档案!", "温馨提示", {
|
|
||||||
type: "info",
|
|
||||||
});
|
|
||||||
};
|
|
||||||
watchEffect(() => {
|
|
||||||
if (props.type === 113) fnGetData();
|
|
||||||
});
|
|
||||||
const fnClose = () => {
|
|
||||||
emits("update:type", 0);
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
|
||||||
.flex {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: space-between;
|
|
||||||
}
|
|
||||||
</style>
|
|
|
@ -1,187 +0,0 @@
|
||||||
<template>
|
|
||||||
<el-dialog
|
|
||||||
:title="title"
|
|
||||||
:model-value="type === 112"
|
|
||||||
width="1100px"
|
|
||||||
@close="fnClose"
|
|
||||||
>
|
|
||||||
<div class="tr mb">
|
|
||||||
<el-button type="primary" @click="fnExport">导出</el-button>
|
|
||||||
</div>
|
|
||||||
<div id="printContent" class="newform">
|
|
||||||
<h2 class="tc">安全知识培训签到表</h2>
|
|
||||||
<table class="mt print_table">
|
|
||||||
<tr>
|
|
||||||
<td class="title" colspan="2">培训主题</td>
|
|
||||||
<td class="title" colspan="7">{{ data.info.CURRICULUMNAMES }}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="title" colspan="2">培训时间</td>
|
|
||||||
<td class="title" colspan="3">
|
|
||||||
{{ dayjs(data.clazz.START_TIME).format("YYYY年MM月DD日") }}
|
|
||||||
</td>
|
|
||||||
<td class="title" colspan="1">地 点</td>
|
|
||||||
<td class="title" colspan="3">{{ data.clazz.CORP_NAME }}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="title" style="width: 11%">序号</td>
|
|
||||||
<td class="title" style="width: 11%">姓名</td>
|
|
||||||
<td class="title" style="width: 11%">签字</td>
|
|
||||||
<td class="title" style="width: 11%">序号</td>
|
|
||||||
<td class="title" style="width: 11%">姓名</td>
|
|
||||||
<td class="title" style="width: 11%">签字</td>
|
|
||||||
<td class="title" style="width: 11%">序号</td>
|
|
||||||
<td class="title" style="width: 11%">姓名</td>
|
|
||||||
<td class="title" style="width: 11%">签字</td>
|
|
||||||
</tr>
|
|
||||||
<template v-for="(item, index) in data.students">
|
|
||||||
<tr v-if="index % 3 === 0" :key="index">
|
|
||||||
<td class="title">{{ index + 1 }}</td>
|
|
||||||
<td class="title">{{ item.NAME }}</td>
|
|
||||||
<td class="title">
|
|
||||||
<viewer v-if="item.SIGNATURE_PATH">
|
|
||||||
<img
|
|
||||||
:src="FILE_URL.fileUrl + item.SIGNATURE_PATH"
|
|
||||||
alt=""
|
|
||||||
width="80"
|
|
||||||
height="50"
|
|
||||||
/>
|
|
||||||
</viewer>
|
|
||||||
</td>
|
|
||||||
<td class="title">
|
|
||||||
{{ data.students[index + 1] ? index + 2 : "" }}
|
|
||||||
</td>
|
|
||||||
<td class="title">
|
|
||||||
{{
|
|
||||||
data.students[index + 1] ? data.students[index + 1].NAME : ""
|
|
||||||
}}
|
|
||||||
</td>
|
|
||||||
<td class="title">
|
|
||||||
<viewer
|
|
||||||
v-if="
|
|
||||||
data.students[index + 1] &&
|
|
||||||
data.students[index + 1].SIGNATURE_PATH
|
|
||||||
"
|
|
||||||
>
|
|
||||||
<img
|
|
||||||
:src="
|
|
||||||
FILE_URL.fileUrl + data.students[index + 1].SIGNATURE_PATH
|
|
||||||
"
|
|
||||||
alt=""
|
|
||||||
width="80"
|
|
||||||
height="50"
|
|
||||||
style="background-color: #ffffff"
|
|
||||||
/>
|
|
||||||
</viewer>
|
|
||||||
</td>
|
|
||||||
<td class="title">
|
|
||||||
{{ data.students[index + 2] ? index + 3 : "" }}
|
|
||||||
</td>
|
|
||||||
<td class="title">
|
|
||||||
{{
|
|
||||||
data.students[index + 2] ? data.students[index + 2].NAME : ""
|
|
||||||
}}
|
|
||||||
</td>
|
|
||||||
<td class="title">
|
|
||||||
<viewer
|
|
||||||
v-if="
|
|
||||||
data.students[index + 2] &&
|
|
||||||
data.students[index + 2].SIGNATURE_PATH
|
|
||||||
"
|
|
||||||
>
|
|
||||||
<img
|
|
||||||
:src="
|
|
||||||
FILE_URL.fileUrl + data.students[index + 2].SIGNATURE_PATH
|
|
||||||
"
|
|
||||||
alt=""
|
|
||||||
width="80"
|
|
||||||
height="50"
|
|
||||||
style="background-color: #ffffff"
|
|
||||||
/>
|
|
||||||
</viewer>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</template>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
<template #footer>
|
|
||||||
<el-button @click="fnClose">关闭</el-button>
|
|
||||||
</template>
|
|
||||||
</el-dialog>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script setup>
|
|
||||||
import { reactive, watchEffect } from "vue";
|
|
||||||
import { ElMessageBox } from "element-plus";
|
|
||||||
import dayjs from "dayjs";
|
|
||||||
import {
|
|
||||||
getStudentSigns,
|
|
||||||
downloadSignAsTraffic,
|
|
||||||
} from "@/request/training_archive_management.js";
|
|
||||||
const props = defineProps({
|
|
||||||
type: {
|
|
||||||
type: Number,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
title: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
clazzId: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
corpInfoId: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
postName: {
|
|
||||||
type: String,
|
|
||||||
default() {
|
|
||||||
return "";
|
|
||||||
},
|
|
||||||
},
|
|
||||||
enterpriseId: {
|
|
||||||
type: String,
|
|
||||||
default() {
|
|
||||||
return "";
|
|
||||||
},
|
|
||||||
},
|
|
||||||
});
|
|
||||||
const FILE_URL = import.meta.env.VITE_FILE_URL;
|
|
||||||
const data = reactive({
|
|
||||||
clazz: {},
|
|
||||||
checkList: [],
|
|
||||||
info: {},
|
|
||||||
students: [],
|
|
||||||
POST_NAME: props.postName,
|
|
||||||
});
|
|
||||||
const emits = defineEmits(["update:type"]);
|
|
||||||
const fnGetData = async () => {
|
|
||||||
const resData = await getStudentSigns({
|
|
||||||
CORPINFO_ID: props.corpInfoId,
|
|
||||||
CLASS_ID: props.clazzId,
|
|
||||||
});
|
|
||||||
data.info = resData.rpd;
|
|
||||||
data.students = resData.studentList;
|
|
||||||
data.clazz = resData.clazz;
|
|
||||||
};
|
|
||||||
watchEffect(() => {
|
|
||||||
if (props.type === 112) fnGetData();
|
|
||||||
});
|
|
||||||
const fnExport = async () => {
|
|
||||||
await ElMessageBox.confirm("确定要导出吗?", { type: "warning" });
|
|
||||||
await downloadSignAsTraffic({
|
|
||||||
CLASS_ID: props.clazzId,
|
|
||||||
CORPINFO_ID: props.corpInfoId,
|
|
||||||
});
|
|
||||||
await ElMessageBox.confirm("导出后请前往档案下载中下载该档案!", "温馨提示", {
|
|
||||||
type: "info",
|
|
||||||
});
|
|
||||||
};
|
|
||||||
const fnClose = () => {
|
|
||||||
emits("update:type", 0);
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped lang="scss"></style>
|
|
|
@ -1,245 +0,0 @@
|
||||||
<template>
|
|
||||||
<el-dialog
|
|
||||||
:title="title"
|
|
||||||
:model-value="type === 110"
|
|
||||||
width="1100px"
|
|
||||||
@close="fnClose"
|
|
||||||
>
|
|
||||||
<div class="tr mb">
|
|
||||||
<el-button type="primary" @click="fnExport">导出</el-button>
|
|
||||||
</div>
|
|
||||||
<div id="printContent" class="newform">
|
|
||||||
<div class="h1" />
|
|
||||||
<table class="archive_print_table">
|
|
||||||
<tr>
|
|
||||||
<td class="title" width="20%">培训时间</td>
|
|
||||||
<td width="20%">{{ data.info.START_TIME }}</td>
|
|
||||||
<td class="title" width="20%">培训地点</td>
|
|
||||||
<td width="20%">{{ data.info.CORP_NAME }}</td>
|
|
||||||
<td class="title" width="20%">培训对象</td>
|
|
||||||
<td width="20%">{{ data.info.POST_NAME }}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="title" width="20%">培 训 人</td>
|
|
||||||
<td width="20%">{{ data.info.TEACHERNAME }}</td>
|
|
||||||
<td class="title" width="20%">培训课时</td>
|
|
||||||
<td width="20%">{{ data.info.CLASSHOUR }}</td>
|
|
||||||
<td class="title" width="20%">组织部门</td>
|
|
||||||
<td width="20%">{{ data.info.PLAN_DEPARTMENT }}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="title" width="20%">应到人数</td>
|
|
||||||
<td width="20%">{{ data.info.stuYDNum }}</td>
|
|
||||||
<td class="title" width="20%">实到人数</td>
|
|
||||||
<td width="20%">{{ data.info.stuSDNum }}</td>
|
|
||||||
<td class="title" width="20%">线上培训人数</td>
|
|
||||||
<td width="20%">{{ data.info.stuSDNum }}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td colspan="2" class="title" width="20%">培训主题</td>
|
|
||||||
<td colspan="4" width="20%">{{ data.info.COURSEWARENAME }}</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td colspan="6" width="20%" style="height: 300px">
|
|
||||||
<b>培训内容:</b><br />
|
|
||||||
<dl
|
|
||||||
v-for="(item, index) in data.curList"
|
|
||||||
:key="index"
|
|
||||||
class="standard-dl"
|
|
||||||
>
|
|
||||||
<div v-for="(cha, i) in item.chapterList" :key="i" class="item">
|
|
||||||
<div v-if="item.CATALOGUELEVEL === '1'">
|
|
||||||
<dt>{{ i + 1 }}.{{ cha.CHAPTER_NAME }}</dt>
|
|
||||||
<dd>课件描述: {{ cha.COURSEWAREINTRODUCE }}</dd>
|
|
||||||
</div>
|
|
||||||
<div v-else-if="item.CATALOGUELEVEL === '2'">
|
|
||||||
<dt>{{ i + 1 }}.{{ cha.CHAPTER_NAME }}</dt>
|
|
||||||
<div
|
|
||||||
v-for="(video, j) in cha.nodes"
|
|
||||||
:key="j"
|
|
||||||
class="item-nodes"
|
|
||||||
>
|
|
||||||
<dd>{{ j + 1 }}.{{ video.CHAPTER_NAME }}</dd>
|
|
||||||
<dd>课件描述: {{ video.COURSEWAREINTRODUCE }}</dd>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</dl>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td rowspan="2" class="title" width="20%">培训效果评估</td>
|
|
||||||
<td colspan="5" width="20%">
|
|
||||||
<p>
|
|
||||||
培训内容编制是否符合行业要求: <el-radio
|
|
||||||
v-model="data.form.IS_SELECT1"
|
|
||||||
label="是"
|
|
||||||
/><el-radio v-model="data.form.IS_SELECT1" label="否" />
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
员工是否能够理解培训内容:
|
|
||||||
<el-radio
|
|
||||||
v-model="data.form.IS_SELECT2"
|
|
||||||
label="是"
|
|
||||||
/><el-radio v-model="data.form.IS_SELECT2" label="否" />
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
是否结合公司实际情况或行业案例:
|
|
||||||
<el-radio v-model="data.form.IS_SELECT3" label="是" /><el-radio
|
|
||||||
v-model="data.form.IS_SELECT3"
|
|
||||||
label="否"
|
|
||||||
/>
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
是否完成规定课时,达到培训目标:
|
|
||||||
<el-radio v-model="data.form.IS_SELECT4" label="是" /><el-radio
|
|
||||||
v-model="data.form.IS_SELECT4"
|
|
||||||
label="否"
|
|
||||||
/>
|
|
||||||
</p>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td colspan="5" width="20%">
|
|
||||||
<p style="line-height: 30px">
|
|
||||||
是否需要制定整改措施:
|
|
||||||
<el-radio v-model="data.form.IS_SELECT5" label="是" /><el-radio
|
|
||||||
v-model="data.form.IS_SELECT5"
|
|
||||||
label="否"
|
|
||||||
/>
|
|
||||||
<span>
|
|
||||||
<viewer
|
|
||||||
v-if="data.info.SAFETYDEPTOR_URL"
|
|
||||||
style="float: right; margin-right: 50%"
|
|
||||||
>
|
|
||||||
评估人:<img
|
|
||||||
:src="FILE_URL + data.info.SAFETYDEPTOR_URL"
|
|
||||||
style="vertical-align: middle"
|
|
||||||
alt=""
|
|
||||||
width="70"
|
|
||||||
height="30"
|
|
||||||
/>
|
|
||||||
</viewer>
|
|
||||||
</span>
|
|
||||||
</p>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="title" width="20%">培训不足整改措施</td>
|
|
||||||
<td colspan="5" width="20%">
|
|
||||||
<el-input v-model="data.form.MEASURE" style="width: 100%" />
|
|
||||||
<br />
|
|
||||||
<span>
|
|
||||||
<viewer
|
|
||||||
v-if="data.info.SAFETYDEPTOR_URL"
|
|
||||||
style="float: right; margin-right: 50%"
|
|
||||||
>
|
|
||||||
制定人:<img
|
|
||||||
:src="FILE_URL + data.info.SAFETYDEPTOR_URL"
|
|
||||||
style="vertical-align: middle"
|
|
||||||
alt=""
|
|
||||||
width="70"
|
|
||||||
height="30"
|
|
||||||
/>
|
|
||||||
</viewer>
|
|
||||||
</span>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
<template #footer>
|
|
||||||
<el-button type="primary" @click="fnSubmit">保存</el-button>
|
|
||||||
<el-button @click="fnClose">关闭</el-button>
|
|
||||||
</template>
|
|
||||||
</el-dialog>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script setup>
|
|
||||||
import { reactive, watchEffect } from "vue";
|
|
||||||
import { ElMessage, ElMessageBox } from "element-plus";
|
|
||||||
import {
|
|
||||||
getAllCourseware,
|
|
||||||
downloadTrainingAsTraffic,
|
|
||||||
editTraining,
|
|
||||||
} from "@/request/training_archive_management.js";
|
|
||||||
import { debounce } from "throttle-debounce";
|
|
||||||
|
|
||||||
const props = defineProps({
|
|
||||||
type: {
|
|
||||||
type: Number,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
title: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
clazzId: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
corpinfoId: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
const FILE_URL = import.meta.env.VITE_FILE_URL;
|
|
||||||
const data = reactive({
|
|
||||||
info: {},
|
|
||||||
curList: [],
|
|
||||||
form: {},
|
|
||||||
});
|
|
||||||
const emits = defineEmits(["update:type"]);
|
|
||||||
const fnGetData = async () => {
|
|
||||||
const resData = await getAllCourseware({
|
|
||||||
CLASS_ID: props.clazzId,
|
|
||||||
});
|
|
||||||
data.info = resData.data;
|
|
||||||
data.curList = resData.curList;
|
|
||||||
data.form = resData.trainingData;
|
|
||||||
};
|
|
||||||
watchEffect(() => {
|
|
||||||
if (props.type === 110) fnGetData();
|
|
||||||
});
|
|
||||||
const fnSubmit = debounce(
|
|
||||||
1000,
|
|
||||||
async () => {
|
|
||||||
data.form.CLASS_ID = props.clazzId;
|
|
||||||
await editTraining({ ...data.form });
|
|
||||||
ElMessage.success("保存成功");
|
|
||||||
fnClose();
|
|
||||||
},
|
|
||||||
{ atBegin: true }
|
|
||||||
);
|
|
||||||
const fnExport = async () => {
|
|
||||||
await downloadTrainingAsTraffic({
|
|
||||||
CLASS_ID: props.clazzId,
|
|
||||||
CORPINFO_ID: props.corpinfoId,
|
|
||||||
});
|
|
||||||
await ElMessageBox.confirm("导出后请前往档案下载中下载该档案!", "温馨提示", {
|
|
||||||
type: "info",
|
|
||||||
});
|
|
||||||
};
|
|
||||||
const fnClose = () => {
|
|
||||||
emits("update:type", 0);
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped lang="scss">
|
|
||||||
.flex {
|
|
||||||
width: 80%;
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
}
|
|
||||||
.item {
|
|
||||||
padding: 15px 0;
|
|
||||||
/*border-bottom: 1px solid #ddd;*/
|
|
||||||
|
|
||||||
.item-nodes {
|
|
||||||
padding: 5px 0;
|
|
||||||
/*border-bottom: 1px solid #ccc;*/
|
|
||||||
/*&:last-child{*/
|
|
||||||
/* border-bottom: none;*/
|
|
||||||
/*}*/
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
|
@ -72,7 +72,6 @@
|
||||||
CORP_NAME: row.CORP_NAME,
|
CORP_NAME: row.CORP_NAME,
|
||||||
CLASS_NAME: row.NAME,
|
CLASS_NAME: row.NAME,
|
||||||
CORPINFO_ID: row.CORPINFO_ID,
|
CORPINFO_ID: row.CORPINFO_ID,
|
||||||
TRAINTYPE: row.TRAINTYPE,
|
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
"
|
"
|
||||||
|
|
|
@ -394,32 +394,6 @@
|
||||||
>
|
>
|
||||||
生产经营单位从业人员年度安全再培训考核记录
|
生产经营单位从业人员年度安全再培训考核记录
|
||||||
</template>
|
</template>
|
||||||
<!-- 培训类型是交通运输 start-->
|
|
||||||
<!-- 岗位类型:三级教育-->
|
|
||||||
<template
|
|
||||||
v-else-if="
|
|
||||||
data.classInfo.POSTTYPE === 'd476966c4ddd485d9cd55fd9af56fda2'
|
|
||||||
"
|
|
||||||
>
|
|
||||||
{{ data.classInfo.TRAINLEVEL_NAME }}安全培训考核记录
|
|
||||||
</template>
|
|
||||||
<!-- 岗位类型:年度再培训-->
|
|
||||||
<template
|
|
||||||
v-else-if="
|
|
||||||
data.classInfo.POSTTYPE === '316179c2538946af97675c92e0b16f5c'
|
|
||||||
"
|
|
||||||
>
|
|
||||||
生产经营单位从业人员年度安全再培训考核记录
|
|
||||||
</template>
|
|
||||||
<!-- 岗位类型:调岗和重新上岗培训-->
|
|
||||||
<template
|
|
||||||
v-else-if="
|
|
||||||
data.classInfo.POSTTYPE === 'bb5170f52dcd4183aa67a2053163ae29'
|
|
||||||
"
|
|
||||||
>
|
|
||||||
生产经营单位从业人员{{ classInfo.POSTTYPE_NAME }}考核记录
|
|
||||||
</template>
|
|
||||||
<!-- 培训类型是交通运输 end-->
|
|
||||||
</h2>
|
</h2>
|
||||||
<div class="flex mb">
|
<div class="flex mb">
|
||||||
<span>
|
<span>
|
||||||
|
@ -450,7 +424,7 @@
|
||||||
<td>工种</td>
|
<td>工种</td>
|
||||||
<td>{{ data.classInfo.POST_NAME }}</td>
|
<td>{{ data.classInfo.POST_NAME }}</td>
|
||||||
<td>行业类别</td>
|
<td>行业类别</td>
|
||||||
<td>{{ data.classInfo.INDUSTRY_TYPE_NAME }}</td>
|
<td>{{ data.classInfo.CORP_TYPE_NAME }}</td>
|
||||||
<td>联系电话</td>
|
<td>联系电话</td>
|
||||||
<td>{{ data.classInfo.PHONE }}</td>
|
<td>{{ data.classInfo.PHONE }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -527,15 +501,8 @@
|
||||||
</td>
|
</td>
|
||||||
<td>{{ CORP_NAME }}</td>
|
<td>{{ CORP_NAME }}</td>
|
||||||
<td>{{ item.COURSEWARENAME }}</td>
|
<td>{{ item.COURSEWARENAME }}</td>
|
||||||
<td
|
<!--<td>{{ item.CLASSHOUR }}学时</td>-->
|
||||||
v-if="
|
<td>1学时</td>
|
||||||
data.classInfo.TRAINTYPE ===
|
|
||||||
'bd2a3b7767db49968e26cfccc3c2b4a4'
|
|
||||||
"
|
|
||||||
>
|
|
||||||
{{ item.CLASSHOUR }}学时
|
|
||||||
</td>
|
|
||||||
<td v-else>1学时</td>
|
|
||||||
<td>{{ item.TEACHERNAME }}</td>
|
<td>{{ item.TEACHERNAME }}</td>
|
||||||
<td v-if="index === 0" :rowspan="data.videoList.length + 1">
|
<td v-if="index === 0" :rowspan="data.videoList.length + 1">
|
||||||
<template v-if="data.classInfo.EXAMINATION === 0" />
|
<template v-if="data.classInfo.EXAMINATION === 0" />
|
||||||
|
|
|
@ -44,7 +44,7 @@
|
||||||
<td>工种</td>
|
<td>工种</td>
|
||||||
<td>{{ data.evaluationDialogForm.POST_NAME }}</td>
|
<td>{{ data.evaluationDialogForm.POST_NAME }}</td>
|
||||||
<td>行业类别</td>
|
<td>行业类别</td>
|
||||||
<td>{{ data.evaluationDialogForm.INDUSTRY_TYPE_NAME }}</td>
|
<td>{{ data.evaluationDialogForm.CORP_TYPE_NAME }}</td>
|
||||||
<td>联系电话</td>
|
<td>联系电话</td>
|
||||||
<td>{{ data.evaluationDialogForm.PHONE }}</td>
|
<td>{{ data.evaluationDialogForm.PHONE }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
|
@ -230,14 +230,6 @@
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
|
||||||
<el-form-item label="组织部门" prop="PLAN_DEPARTMENT">
|
|
||||||
<el-input
|
|
||||||
v-model="data.form.PLAN_DEPARTMENT"
|
|
||||||
placeholder="请输入内容"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
</el-col>
|
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="四色图类型">
|
<el-form-item label="四色图类型">
|
||||||
<el-radio v-model="data.form.FOURTYPE" :label="1">
|
<el-radio v-model="data.form.FOURTYPE" :label="1">
|
||||||
|
@ -594,7 +586,6 @@ const data = reactive({
|
||||||
SCALE_TYPE: "",
|
SCALE_TYPE: "",
|
||||||
INDUSTRY_TYPE: "",
|
INDUSTRY_TYPE: "",
|
||||||
USERS_NUM: "",
|
USERS_NUM: "",
|
||||||
PLAN_DEPARTMENT: "",
|
|
||||||
FOURTYPE: "",
|
FOURTYPE: "",
|
||||||
four_images: [],
|
four_images: [],
|
||||||
bus_images: [],
|
bus_images: [],
|
||||||
|
|
|
@ -76,14 +76,11 @@
|
||||||
<template v-if="data.info.SCALE_TYPE === 1">是</template>
|
<template v-if="data.info.SCALE_TYPE === 1">是</template>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="培训行业类型">
|
<el-descriptions-item label="培训行业类型">
|
||||||
{{ data.info.INDUSTRY_TYPE_NAME }}
|
{{ data.info.INDUSTRY_NAME }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="企业可新建用户数量">
|
<el-descriptions-item label="企业可新建用户数量">
|
||||||
{{ data.info.USERS_NUM }}
|
{{ data.info.USERS_NUM }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="组织部门">
|
|
||||||
{{ data.info.PLAN_DEPARTMENT }}
|
|
||||||
</el-descriptions-item>
|
|
||||||
<el-descriptions-item
|
<el-descriptions-item
|
||||||
v-if="data.info.FOURTYPE === 1"
|
v-if="data.info.FOURTYPE === 1"
|
||||||
label="四色图"
|
label="四色图"
|
||||||
|
|
|
@ -175,7 +175,7 @@ const fnComplete = debounce(
|
||||||
1000,
|
1000,
|
||||||
async () => {
|
async () => {
|
||||||
await ElMessageBox.confirm(
|
await ElMessageBox.confirm(
|
||||||
"完成之后将开班,不能再进行其它更改,确认继续吗?",
|
"完成之后将开班,只能新增学员,不能再进行其它更改,确认继续吗?",
|
||||||
{
|
{
|
||||||
type: "warning",
|
type: "warning",
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue