forked from integrated_whb/integrated_whb_vue
Compare commits
4 Commits
7874734e31
...
861cef7aa5
Author | SHA1 | Date |
---|---|---|
zhangyanli | 861cef7aa5 | |
zhangyanli | b4fa582fdc | |
zhangyanli | 98ea81ede4 | |
zhangyanli | d7dd618c8a |
|
@ -57,6 +57,10 @@ export const getCoursewares = (params) =>
|
|||
post("/archives/getCoursewares", params); // 一期一档安全培训教材或课程讲义
|
||||
export const getTrainingSchedule = (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) =>
|
||||
post("/archives/archiveDirectory", params); // 一期一档:档案目录批量导出
|
||||
|
@ -70,6 +74,8 @@ export const downloadHsAll = (params) => post("/archives/hsAll", params); // 一
|
|||
export const downloadHs = (params) => post("/archives/hs", params); // 一期一档:会审表导出
|
||||
export const downloadStudentsumtable = (params) =>
|
||||
post("/archives/studentsumtable", params); // 一期一档:学员统计总表导出
|
||||
export const downloadStudentsumtableAsTraffic = (params) =>
|
||||
post("/archives/studentsumtableAsTraffic", params); // 一期一档:学员统计总表导出
|
||||
export const downloadEvaluationreport = (params) =>
|
||||
post("/archives/evaluationreport", params); // 一期一档:综合考评报告导出
|
||||
export const downloadExaminationpaper = (params) =>
|
||||
|
@ -79,6 +85,10 @@ export const downloadImagedata = (params) =>
|
|||
export const downloadTeachingMaterial = (params) =>
|
||||
post("/archives/teachingMaterial", 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) =>
|
||||
post("/archivesallcorpword/allwordzip", params); // 一企一档:档案目录
|
||||
|
|
|
@ -6,7 +6,11 @@
|
|||
<layout-table
|
||||
ref="tableRef"
|
||||
row-key="TYPE"
|
||||
:data="data.list"
|
||||
:data="
|
||||
TRAINTYPE === 'bd2a3b7767db49968e26cfccc3c2b4a4'
|
||||
? data.listTraffic
|
||||
: data.list
|
||||
"
|
||||
:show-pagination="false"
|
||||
>
|
||||
<el-table-column reserve-selection type="selection" width="55" />
|
||||
|
@ -34,10 +38,13 @@
|
|||
|
||||
<script setup>
|
||||
import TrainingSchedule from "./components/training_schedule.vue";
|
||||
import Training from "./components/training.vue";
|
||||
import Image from "./components/image.vue";
|
||||
import Report from "./components/report.vue";
|
||||
import Results from "./components/results.vue";
|
||||
import Achievement from "./components/achievement.vue";
|
||||
import SignatureForm from "./components/signature_form.vue";
|
||||
import SignatureFormTraffic from "./components/signature_form_traffic.vue";
|
||||
import { markRaw, reactive, ref } from "vue";
|
||||
import { useRoute, useRouter } from "vue-router";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
|
@ -49,7 +56,7 @@ import Setting from "./components/setting.vue";
|
|||
|
||||
const router = useRouter();
|
||||
const route = useRoute();
|
||||
const { CLASS_ID, CORP_NAME, CLASS_NAME, CORPINFO_ID } = route.query;
|
||||
const { CLASS_ID, CORP_NAME, CLASS_NAME, CORPINFO_ID, TRAINTYPE } = route.query;
|
||||
const tableRef = ref(null);
|
||||
const data = reactive({
|
||||
list: [
|
||||
|
@ -85,6 +92,26 @@ const data = reactive({
|
|||
{ NAME: "学员考核成绩统计表", TYPE: 104, component: markRaw(Results) },
|
||||
{ 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,
|
||||
title: "",
|
||||
component: "",
|
||||
|
|
|
@ -0,0 +1,204 @@
|
|||
<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>
|
|
@ -0,0 +1,187 @@
|
|||
<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>
|
|
@ -0,0 +1,245 @@
|
|||
<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,6 +72,7 @@
|
|||
CORP_NAME: row.CORP_NAME,
|
||||
CLASS_NAME: row.NAME,
|
||||
CORPINFO_ID: row.CORPINFO_ID,
|
||||
TRAINTYPE: row.TRAINTYPE,
|
||||
},
|
||||
})
|
||||
"
|
||||
|
|
|
@ -394,6 +394,32 @@
|
|||
>
|
||||
生产经营单位从业人员年度安全再培训考核记录
|
||||
</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>
|
||||
<div class="flex mb">
|
||||
<span>
|
||||
|
@ -424,7 +450,7 @@
|
|||
<td>工种</td>
|
||||
<td>{{ data.classInfo.POST_NAME }}</td>
|
||||
<td>行业类别</td>
|
||||
<td>{{ data.classInfo.CORP_TYPE_NAME }}</td>
|
||||
<td>{{ data.classInfo.INDUSTRY_TYPE_NAME }}</td>
|
||||
<td>联系电话</td>
|
||||
<td>{{ data.classInfo.PHONE }}</td>
|
||||
</tr>
|
||||
|
@ -501,8 +527,15 @@
|
|||
</td>
|
||||
<td>{{ CORP_NAME }}</td>
|
||||
<td>{{ item.COURSEWARENAME }}</td>
|
||||
<!--<td>{{ item.CLASSHOUR }}学时</td>-->
|
||||
<td>1学时</td>
|
||||
<td
|
||||
v-if="
|
||||
data.classInfo.TRAINTYPE ===
|
||||
'bd2a3b7767db49968e26cfccc3c2b4a4'
|
||||
"
|
||||
>
|
||||
{{ item.CLASSHOUR }}学时
|
||||
</td>
|
||||
<td v-else>1学时</td>
|
||||
<td>{{ item.TEACHERNAME }}</td>
|
||||
<td v-if="index === 0" :rowspan="data.videoList.length + 1">
|
||||
<template v-if="data.classInfo.EXAMINATION === 0" />
|
||||
|
|
|
@ -44,7 +44,7 @@
|
|||
<td>工种</td>
|
||||
<td>{{ data.evaluationDialogForm.POST_NAME }}</td>
|
||||
<td>行业类别</td>
|
||||
<td>{{ data.evaluationDialogForm.CORP_TYPE_NAME }}</td>
|
||||
<td>{{ data.evaluationDialogForm.INDUSTRY_TYPE_NAME }}</td>
|
||||
<td>联系电话</td>
|
||||
<td>{{ data.evaluationDialogForm.PHONE }}</td>
|
||||
</tr>
|
||||
|
|
|
@ -230,6 +230,14 @@
|
|||
/>
|
||||
</el-form-item>
|
||||
</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-form-item label="四色图类型">
|
||||
<el-radio v-model="data.form.FOURTYPE" :label="1">
|
||||
|
@ -586,6 +594,7 @@ const data = reactive({
|
|||
SCALE_TYPE: "",
|
||||
INDUSTRY_TYPE: "",
|
||||
USERS_NUM: "",
|
||||
PLAN_DEPARTMENT: "",
|
||||
FOURTYPE: "",
|
||||
four_images: [],
|
||||
bus_images: [],
|
||||
|
|
|
@ -76,11 +76,14 @@
|
|||
<template v-if="data.info.SCALE_TYPE === 1">是</template>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="培训行业类型">
|
||||
{{ data.info.INDUSTRY_NAME }}
|
||||
{{ data.info.INDUSTRY_TYPE_NAME }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="企业可新建用户数量">
|
||||
{{ data.info.USERS_NUM }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="组织部门">
|
||||
{{ data.info.PLAN_DEPARTMENT }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item
|
||||
v-if="data.info.FOURTYPE === 1"
|
||||
label="四色图"
|
||||
|
|
|
@ -175,7 +175,7 @@ const fnComplete = debounce(
|
|||
1000,
|
||||
async () => {
|
||||
await ElMessageBox.confirm(
|
||||
"完成之后将开班,只能新增学员,不能再进行其它更改,确认继续吗?",
|
||||
"完成之后将开班,不能再进行其它更改,确认继续吗?",
|
||||
{
|
||||
type: "warning",
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue