🎨 教育培训-统一调整已完成功能的样式(含打印)

pull/1/head
duhang 2024-01-10 19:17:03 +08:00
parent f74c51cbb7
commit 405c6c296d
17 changed files with 1471 additions and 968 deletions

View File

@ -311,7 +311,7 @@ export default [
{ {
path: "/platform_resource_library/curriculum/view", path: "/platform_resource_library/curriculum/view",
meta: { meta: {
title: "课程详情查看", title: "查看详情",
activeMenu: "/platform_resource_library/curriculum/list", activeMenu: "/platform_resource_library/curriculum/list",
}, },
component: "platform_resource_library/curriculum/view", component: "platform_resource_library/curriculum/view",
@ -330,7 +330,7 @@ export default [
{ {
path: "/platform_resource_library/paper/view", path: "/platform_resource_library/paper/view",
meta: { meta: {
title: "试卷详情查看", title: "查看试卷",
activeMenu: "/platform_resource_library/paper/list", activeMenu: "/platform_resource_library/paper/list",
}, },
component: "platform_resource_library/paper/view", component: "platform_resource_library/paper/view",

View File

@ -1,5 +1,5 @@
<template> <template>
<div> <layout-card>
<layout-table :data="catalogueList" :show-pagination="false"> <layout-table :data="catalogueList" :show-pagination="false">
<el-table-column show-overflow-tooltip prop="NAME" label="目录" /> <el-table-column show-overflow-tooltip prop="NAME" label="目录" />
<el-table-column label="操作"> <el-table-column label="操作">
@ -19,7 +19,7 @@
:type="data.current.TYPE" :type="data.current.TYPE"
:study-task-id="studyTaskId" :study-task-id="studyTaskId"
/> />
</div> </layout-card>
</template> </template>
<script setup> <script setup>
import LayoutTable from "@/components/table/index.vue"; import LayoutTable from "@/components/table/index.vue";

View File

@ -14,16 +14,60 @@
<el-button type="primary" v-print="'#printContent'"></el-button> <el-button type="primary" v-print="'#printContent'"></el-button>
</el-space> </el-space>
<div id="printContent"> <div id="printContent">
<div style="text-align: center"> <table class="print_use mb-10" style="width: 100%">
<el-text size="large"> <thead>
{{ year }}年度培训资金提取和使用情况管理台账 <tr>
</el-text> <td colspan="12" style="border: none">
<div class="tc">
<h3>{{ year }}年度培训资金提取和使用情况管理台账</h3>
</div> </div>
<div> <p class="tl">单位名称:{{ CORP_NAME }}</p>
<el-text size="small">单位名称:{{ CORP_NAME }}</el-text> </td>
</tr>
<tr>
<td class="title" rowspan="2">序号</td>
<td class="title" rowspan="2">日期</td>
<td class="title" colspan="9">费用项目</td>
<td class="title" rowspan="2">余额</td>
</tr>
<tr>
<td class="title">提取金额</td>
<td class="title">培训教材教具费</td>
<td class="title">师资费</td>
<td class="title">试卷印制费</td>
<td class="title">外出培训费</td>
<td class="title">教学设备课桌椅等购置维护费</td>
<td class="title">培训活动费</td>
<td class="title">委托活动费</td>
<td class="title">其他与培训有关的直接支出</td>
</tr>
</thead>
<tbody>
<template v-if="data.dataList && data.dataList.length > 0">
<tr v-for="(item, index) in data.dataList" :key="index">
<td class="tc">{{ index + 1 }}</td>
<td class="tc">{{ item.DATE }}</td>
<td class="tc">{{ item.AMOUNT }}</td>
<td class="tc">{{ item.MATERIAL_COST }}</td>
<td class="tc">{{ item.TEACHER_COST }}</td>
<td class="tc">{{ item.PAPER_COST }}</td>
<td class="tc">{{ item.OUTSIDE_COST }}</td>
<td class="tc">{{ item.EQUIPMENT_COST }}</td>
<td class="tc">{{ item.TRAIN_COST }}</td>
<td class="tc">{{ item.ENTRUST_COST }}</td>
<td class="tc">{{ item.OTHER_COST }}</td>
<td class="tc">{{ item.BALANCE }}</td>
</tr>
</template>
</tbody>
</table>
<div class="print_no_use">
<div class="tc">
<h3>{{ year }}年度培训资金提取和使用情况管理台账</h3>
</div> </div>
<p class="mtb-10">单位名称:{{ CORP_NAME }}</p>
<layout-table <layout-table
:data="data.capitalList" :data="data.dataList"
:show-pagination="false" :show-pagination="false"
highlight-current-row highlight-current-row
@row-click="fnCurrentChange" @row-click="fnCurrentChange"
@ -43,7 +87,11 @@
width="80" width="80"
/> />
<el-table-column prop="TEACHER_COST" label="师资费" width="80" /> <el-table-column prop="TEACHER_COST" label="师资费" width="80" />
<el-table-column prop="PAPER_COST" label="试卷印制费" width="80" /> <el-table-column
prop="PAPER_COST"
label="试卷印制费"
width="80"
/>
<el-table-column <el-table-column
prop="OUTSIDE_COST" prop="OUTSIDE_COST"
label="外出培训费" label="外出培训费"
@ -54,7 +102,11 @@
label="教学设备、课桌椅等购置维护费" label="教学设备、课桌椅等购置维护费"
width="80" width="80"
/> />
<el-table-column prop="TRAIN_COST" label="培训活动费" width="80" /> <el-table-column
prop="TRAIN_COST"
label="培训活动费"
width="80"
/>
<el-table-column <el-table-column
prop="ENTRUST_COST" prop="ENTRUST_COST"
label="委托活动费" label="委托活动费"
@ -68,19 +120,18 @@
</el-table-column> </el-table-column>
<el-table-column prop="BALANCE" label="余额" width="75" /> <el-table-column prop="BALANCE" label="余额" width="75" />
</layout-table> </layout-table>
</div>
<el-row> <el-row>
<el-col :span="6">制表人:</el-col> <el-col :span="6">制表人:</el-col>
<el-col :span="6">编制日期:</el-col> <el-col :span="6">编制日期:</el-col>
<el-col :span="6">审核人:</el-col> <el-col :span="6">审核人:</el-col>
<el-col :span="6">审核日期:</el-col> <el-col :span="6">审核日期:</el-col>
</el-row> </el-row>
<br /> <p class="mt-10">
<div>
<el-text size="small">
填表说明:1.将实际发生的费用金额记录在费用项目栏内2.培训提取比例按职工工资1.5%可按季或月提取 填表说明:1.将实际发生的费用金额记录在费用项目栏内2.培训提取比例按职工工资1.5%可按季或月提取
</el-text> </p>
</div>
</div> </div>
<div v-html="PRINT_STYLE" />
<template #footer> <template #footer>
<el-button @click="fnClose"></el-button> <el-button @click="fnClose"></el-button>
</template> </template>
@ -108,6 +159,7 @@ import LayoutTable from "@/components/table/index.vue";
import { serialNumber } from "@/assets/js/utils.js"; import { serialNumber } from "@/assets/js/utils.js";
import CapitalForm from "./capital_form.vue"; import CapitalForm from "./capital_form.vue";
import { ElMessageBox } from "element-plus"; import { ElMessageBox } from "element-plus";
import { PRINT_STYLE } from "@/assets/js/constant.js";
const userStore = useUserStore(); const userStore = useUserStore();
const CORP_NAME = userStore.getUserInfo.CORP_NAME; const CORP_NAME = userStore.getUserInfo.CORP_NAME;
@ -136,7 +188,7 @@ const props = defineProps({
const { title, year, type } = useVModels(props); const { title, year, type } = useVModels(props);
const data = reactive({ const data = reactive({
capitalList: [], dataList: [],
current: undefined, current: undefined,
formVisible: false, formVisible: false,
}); });
@ -152,7 +204,7 @@ const fnCurrentChange = (row) => {
}; };
const fnAddArchivesCapital = () => { const fnAddArchivesCapital = () => {
data.capitalList.push({}); data.dataList.push({});
}; };
const fnDeleteArchivesCapital = async () => { const fnDeleteArchivesCapital = async () => {
@ -171,7 +223,7 @@ const fnDeleteArchivesCapital = async () => {
const fnGetArchivesCapitalList = async () => { const fnGetArchivesCapitalList = async () => {
const respData = await getArchivesCapitalList({ YEAR: year.value }); const respData = await getArchivesCapitalList({ YEAR: year.value });
if (respData && respData.varList) { if (respData && respData.varList) {
data.capitalList = respData.varList; data.dataList = respData.varList;
} }
}; };
await fnGetArchivesCapitalList(); await fnGetArchivesCapitalList();

View File

@ -12,12 +12,53 @@
<el-button type="primary" v-print="'#printContent'"></el-button> <el-button type="primary" v-print="'#printContent'"></el-button>
</el-space> </el-space>
<div id="printContent"> <div id="printContent">
<div style="text-align: center"> <table class="print_use mb-10" style="width: 100%">
<el-text size="large">{{ year }}年度安全培训教育管理台账</el-text> <thead>
<tr>
<td colspan="11" style="border: none">
<div class="tc">
<h3>{{ year }}年度安全培训教育管理台账</h3>
</div> </div>
<div> <p class="tl">单位名称:{{ CORP_NAME }}</p>
<el-text size="small">单位名称:{{ CORP_NAME }}</el-text> </td>
</tr>
<tr>
<td class="title">序号</td>
<td class="title">培训时间</td>
<td class="title">培训对象</td>
<td class="title">培训类型</td>
<td class="title">培训内容</td>
<td class="title">参加人数</td>
<td class="title">培训学时</td>
<td class="title">培训地点</td>
<td class="title">培训教师</td>
<td class="title">考核方式</td>
<td class="title">汇总考核情况</td>
</tr>
</thead>
<tbody>
<template v-if="data.dataList && data.dataList.length > 0">
<tr v-for="(item, index) in data.dataList" :key="index">
<td class="tc">{{ index + 1 }}</td>
<td class="tc">{{ item.TRAINING_DATE }}</td>
<td class="tc">{{ item.TRAINING_OBJECT }}</td>
<td class="tc">{{ item.TRAINING_TYPE }}</td>
<td class="tc">{{ item.TRAINING_CONTENT }}</td>
<td class="tc">{{ item.PERSON_NUMBER }}</td>
<td class="tc">{{ item.CLASS_HOURS }}</td>
<td class="tc">{{ item.TRAINING_PLACE }}</td>
<td class="tc">{{ item.TRAINING_TEACHER }}</td>
<td class="tc">{{ item.ASSESSMENT_METHOD }}</td>
<td class="tc">{{ item.ASSESSMENT }}</td>
</tr>
</template>
</tbody>
</table>
<div class="print_no_use">
<div class="tc">
<h3>{{ year }}年度安全培训教育管理台账</h3>
</div> </div>
<p class="mtb-10">单位名称:{{ CORP_NAME }}</p>
<layout-table <layout-table
:data="data.dataList" :data="data.dataList"
:show-pagination="false" :show-pagination="false"
@ -53,13 +94,13 @@
label="汇总考核情况" label="汇总考核情况"
/> />
</layout-table> </layout-table>
<el-row>
<el-col :span="6">填表人:</el-col>
<el-col :span="6"></el-col>
<el-col :span="6"></el-col>
<el-col :span="6">填表日期:</el-col>
</el-row>
</div> </div>
<div class="flex">
<span>填表人:</span>
<span>填表日期:</span>
</div>
</div>
<div v-html="PRINT_STYLE" />
<template #footer> <template #footer>
<el-button @click="fnClose"></el-button> <el-button @click="fnClose"></el-button>
</template> </template>
@ -87,6 +128,7 @@ import LayoutTable from "@/components/table/index.vue";
import { serialNumber } from "@/assets/js/utils.js"; import { serialNumber } from "@/assets/js/utils.js";
import EdumanagerForm from "./edumanager_form.vue"; import EdumanagerForm from "./edumanager_form.vue";
import { ElMessageBox } from "element-plus"; import { ElMessageBox } from "element-plus";
import { PRINT_STYLE } from "@/assets/js/constant.js";
const userStore = useUserStore(); const userStore = useUserStore();
const CORP_NAME = userStore.getUserInfo.CORP_NAME; const CORP_NAME = userStore.getUserInfo.CORP_NAME;

View File

@ -12,12 +12,55 @@
<el-button type="primary" v-print="'#printContent'"></el-button> <el-button type="primary" v-print="'#printContent'"></el-button>
</el-space> </el-space>
<div id="printContent"> <div id="printContent">
<div style="text-align: center"> <table class="print_use mb-10" style="width: 100%">
<el-text size="large">{{ year }}年度安全培训教育计划</el-text> <thead>
<tr>
<td colspan="12" style="border: none">
<div class="tc">
<h3>{{ year }}年度安全培训教育计划</h3>
</div> </div>
<div> <p class="tl">单位名称:{{ CORP_NAME }}</p>
<el-text size="small">单位名称:{{ CORP_NAME }}</el-text> </td>
</tr>
<tr>
<td class="title">序号</td>
<td class="title">开始时间</td>
<td class="title">结束时间</td>
<td class="title">培训对象</td>
<td class="title">培训教材</td>
<td class="title">培训方式</td>
<td class="title">考核方式</td>
<td class="title">学时</td>
<td class="title">地点</td>
<td class="title">培训教师</td>
<td class="title">经费保障</td>
<td class="title">质量评估</td>
</tr>
</thead>
<tbody>
<template v-if="data.dataList && data.dataList.length > 0">
<tr v-for="(item, index) in data.dataList" :key="index">
<td class="tc">{{ index + 1 }}</td>
<td class="tc">{{ item.START_DATE }}</td>
<td class="tc">{{ item.END_DATE }}</td>
<td class="tc">{{ item.TRAINING_OBJECT }}</td>
<td class="tc">{{ item.TRAINING_MATERIALS }}</td>
<td class="tc">{{ item.TRAINING_METHODS }}</td>
<td class="tc">{{ item.ASSESSMENT_METHOD }}</td>
<td class="tc">{{ item.CLASS_HOURS }}</td>
<td class="tc">{{ item.PLACE }}</td>
<td class="tc">{{ item.TRAINING_TEACHERS }}</td>
<td class="tc">{{ item.FUND_GUARANTEE }}</td>
<td class="tc">{{ item.QUALITY_ASSESSMENT }}</td>
</tr>
</template>
</tbody>
</table>
<div class="print_no_use">
<div class="tc">
<h3>{{ year }}年度安全培训教育计划</h3>
</div> </div>
<p class="mtb-10">单位名称:{{ CORP_NAME }}</p>
<layout-table <layout-table
:data="data.dataList" :data="data.dataList"
:show-pagination="false" :show-pagination="false"
@ -54,13 +97,13 @@
label="质量评估" label="质量评估"
/> />
</layout-table> </layout-table>
<el-row>
<el-col :span="6">档案管理人员:</el-col>
<el-col :span="6"></el-col>
<el-col :span="6"></el-col>
<el-col :span="6">更新日期:</el-col>
</el-row>
</div> </div>
<div class="flex">
<span>档案管理人员:</span>
<span>更新日期:</span>
</div>
</div>
<div v-html="PRINT_STYLE" />
<template #footer> <template #footer>
<el-button @click="fnClose"></el-button> <el-button @click="fnClose"></el-button>
</template> </template>
@ -88,6 +131,7 @@ import LayoutTable from "@/components/table/index.vue";
import { serialNumber } from "@/assets/js/utils.js"; import { serialNumber } from "@/assets/js/utils.js";
import EduplanForm from "./eduplan_form.vue"; import EduplanForm from "./eduplan_form.vue";
import { ElMessageBox } from "element-plus"; import { ElMessageBox } from "element-plus";
import { PRINT_STYLE } from "@/assets/js/constant.js";
const userStore = useUserStore(); const userStore = useUserStore();
const CORP_NAME = userStore.getUserInfo.CORP_NAME; const CORP_NAME = userStore.getUserInfo.CORP_NAME;
@ -164,4 +208,10 @@ const fnAddOrUpdate = (row) => {
}; };
</script> </script>
<style scoped lang="scss"></style> <style scoped lang="scss">
.flex {
display: flex;
justify-content: space-between;
width: 80%;
}
</style>

View File

@ -12,12 +12,45 @@
<el-button type="primary" v-print="'#printContent'"></el-button> <el-button type="primary" v-print="'#printContent'"></el-button>
</el-space> </el-space>
<div id="printContent"> <div id="printContent">
<div style="text-align: center"> <table class="print_use mb-10" style="width: 100%">
<el-text size="large">{{ year }}三岗人员管理台账</el-text> <thead>
<tr>
<td colspan="7" style="border: none">
<div class="tc">
<h3>{{ year }}三岗人员管理台账</h3>
</div> </div>
<div> <p class="tl">单位名称:{{ CORP_NAME }}</p>
<el-text size="small">单位名称:{{ CORP_NAME }}</el-text> </td>
</tr>
<tr>
<td class="title">序号</td>
<td class="title">姓名</td>
<td class="title">岗位/操作项目</td>
<td class="title">电话</td>
<td class="title">证书号</td>
<td class="title">证书有效期限</td>
<td class="title">复训日期</td>
</tr>
</thead>
<tbody>
<template v-if="data.dataList && data.dataList.length > 0">
<tr v-for="(item, index) in data.dataList" :key="index">
<td class="tc">{{ index + 1 }}</td>
<td class="tc">{{ item.NAME }}</td>
<td class="tc">{{ item.POST }}</td>
<td class="tc">{{ item.PHONE }}</td>
<td class="tc">{{ item.CARD_ID }}</td>
<td class="tc">{{ item.EFFECTIVE_DATE }}</td>
<td class="tc">{{ item.RETRAINING }}</td>
</tr>
</template>
</tbody>
</table>
<div class="print_no_use">
<div class="tc mt-10">
<h3>{{ year }}三岗人员管理台账</h3>
</div> </div>
<p class="mtb-10">单位名称:{{ CORP_NAME }}</p>
<layout-table <layout-table
:data="data.dataList" :data="data.dataList"
:show-pagination="false" :show-pagination="false"
@ -41,13 +74,13 @@
<el-table-column prop="EFFECTIVE_DATE" label="证书有效期限" /> <el-table-column prop="EFFECTIVE_DATE" label="证书有效期限" />
<el-table-column prop="RETRAINING" label="复训日期" /> <el-table-column prop="RETRAINING" label="复训日期" />
</layout-table> </layout-table>
<el-row>
<el-col :span="6">档案管理人员:</el-col>
<el-col :span="6"></el-col>
<el-col :span="6"></el-col>
<el-col :span="6">更新日期:</el-col>
</el-row>
</div> </div>
<div class="flex">
<span>档案管理人员:</span>
<span>更新日期:</span>
</div>
</div>
<div v-html="PRINT_STYLE" />
<template #footer> <template #footer>
<el-button @click="fnClose"></el-button> <el-button @click="fnClose"></el-button>
</template> </template>
@ -75,6 +108,7 @@ import LayoutTable from "@/components/table/index.vue";
import { serialNumber } from "@/assets/js/utils.js"; import { serialNumber } from "@/assets/js/utils.js";
import PostmanForm from "./postman_form.vue"; import PostmanForm from "./postman_form.vue";
import { ElMessageBox } from "element-plus"; import { ElMessageBox } from "element-plus";
import { PRINT_STYLE } from "@/assets/js/constant.js";
const userStore = useUserStore(); const userStore = useUserStore();
const CORP_NAME = userStore.getUserInfo.CORP_NAME; const CORP_NAME = userStore.getUserInfo.CORP_NAME;
@ -151,4 +185,10 @@ const fnAddOrUpdate = (row) => {
}; };
</script> </script>
<style scoped lang="scss"></style> <style scoped lang="scss">
.flex {
display: flex;
justify-content: space-between;
width: 80%;
}
</style>

View File

@ -12,12 +12,53 @@
<el-button type="primary" v-print="'#printContent'"></el-button> <el-button type="primary" v-print="'#printContent'"></el-button>
</el-space> </el-space>
<div id="printContent"> <div id="printContent">
<div style="text-align: center"> <table class="print_use mb-10" style="width: 100%">
<el-text size="large">{{ year }}年度本单位师资管理台账</el-text> <thead>
<tr>
<td colspan="10" style="border: none">
<div class="tc">
<h3>{{ year }}年度本单位师资管理台账</h3>
</div> </div>
<div> <p class="tl">单位名称:{{ CORP_NAME }}</p>
<el-text size="small">单位名称:{{ CORP_NAME }}</el-text> </td>
</tr>
<tr>
<td class="title">序号</td>
<td class="title">姓名</td>
<td class="title">电话</td>
<td class="title">从事本专业工作年限</td>
<td class="title">/兼职</td>
<td class="title">证书编号</td>
<td class="title">考核部门</td>
<td class="title">考核日期</td>
<td class="title">考核结果</td>
<td class="title">备注</td>
</tr>
</thead>
<tbody>
<template v-if="data.dataList && data.dataList.length > 0">
<tr v-for="(item, index) in data.dataList" :key="index">
<td class="tc">{{ index + 1 }}</td>
<td class="tc">{{ item.NAME }}</td>
<td class="tc">{{ item.PHONE }}</td>
<td class="tc">
{{ item.WORK_YEAR ? item.WORK_YEAR + "年" : "" }}
</td>
<td class="tc">{{ item.OCCUPATION }}</td>
<td class="tc">{{ item.CARD_ID }}</td>
<td class="tc">{{ item.ASSESSMENT_DEPT }}</td>
<td class="tc">{{ item.ASSESSMENT_DATE }}</td>
<td class="tc">{{ item.ASSESSMENT_RESULT }}</td>
<td class="tc">{{ item.DESCR }}</td>
</tr>
</template>
</tbody>
</table>
<div class="print_no_use">
<div class="tc">
<h3>{{ year }}年度本单位师资管理台账</h3>
</div> </div>
<p class="mtb-10">单位名称:{{ CORP_NAME }}</p>
<layout-table <layout-table
:data="data.dataList" :data="data.dataList"
:show-pagination="false" :show-pagination="false"
@ -48,13 +89,13 @@
<el-table-column prop="ASSESSMENT_RESULT" label="考核结果" /> <el-table-column prop="ASSESSMENT_RESULT" label="考核结果" />
<el-table-column show-overflow-tooltip prop="DESCR" label="备注" /> <el-table-column show-overflow-tooltip prop="DESCR" label="备注" />
</layout-table> </layout-table>
<el-row>
<el-col :span="6">档案管理人员:</el-col>
<el-col :span="6"></el-col>
<el-col :span="6"></el-col>
<el-col :span="6">更新日期:</el-col>
</el-row>
</div> </div>
<div class="flex">
<span>档案管理人员:</span>
<span>更新日期:</span>
</div>
</div>
<div v-html="PRINT_STYLE" />
<template #footer> <template #footer>
<el-button @click="fnClose"></el-button> <el-button @click="fnClose"></el-button>
</template> </template>
@ -82,6 +123,7 @@ import LayoutTable from "@/components/table/index.vue";
import { serialNumber } from "@/assets/js/utils.js"; import { serialNumber } from "@/assets/js/utils.js";
import TeacherForm from "./teacher_form.vue"; import TeacherForm from "./teacher_form.vue";
import { ElMessageBox } from "element-plus"; import { ElMessageBox } from "element-plus";
import { PRINT_STYLE } from "@/assets/js/constant.js";
const userStore = useUserStore(); const userStore = useUserStore();
const CORP_NAME = userStore.getUserInfo.CORP_NAME; const CORP_NAME = userStore.getUserInfo.CORP_NAME;
@ -158,4 +200,10 @@ const fnAddOrUpdate = (row) => {
}; };
</script> </script>
<style scoped lang="scss"></style> <style scoped lang="scss">
.flex {
display: flex;
justify-content: space-between;
width: 80%;
}
</style>

View File

@ -1,5 +1,6 @@
<template> <template>
<div> <div>
<el-card>
<el-form :model="data.form" label-width="80px"> <el-form :model="data.form" label-width="80px">
<el-row> <el-row>
<el-col :span="4"> <el-col :span="4">
@ -21,6 +22,7 @@
</el-col> </el-col>
</el-row> </el-row>
</el-form> </el-form>
</el-card>
<catalogue source="corp" :year="data.form.year" /> <catalogue source="corp" :year="data.form.year" />
</div> </div>
</template> </template>

View File

@ -10,17 +10,15 @@
<el-button type="primary" v-print="'#printContent'"></el-button> <el-button type="primary" v-print="'#printContent'"></el-button>
</el-space> </el-space>
<div id="printContent"> <div id="printContent">
<div style="text-align: center"> <div class="tc">
<el-text size="large"> <h3>{{ CORP_NAME }} {{ data.taskInfo.post_type_name }}</h3>
{{ CORP_NAME }} {{ data.taskInfo.post_type_name }}
</el-text>
</div> </div>
<template v-for="(item, index) in data.coursewareList" :key="index"> <template v-for="(item, index) in data.coursewareList" :key="index">
<el-descriptions <div>
:title="`${index + 1}.${item.COURSEWARENAME}`" <el-divider content-position="left">
:column="1" {{ index + 1 }}.{{ item.COURSEWARENAME }}
border </el-divider>
> <el-descriptions :column="1" border>
<el-descriptions-item label="讲师:"> <el-descriptions-item label="讲师:">
{{ item.SPEAKER }} {{ item.SPEAKER }}
</el-descriptions-item> </el-descriptions-item>
@ -31,6 +29,7 @@
{{ item.COURSEWAREINTRODUCE }} {{ item.COURSEWAREINTRODUCE }}
</el-descriptions-item> </el-descriptions-item>
</el-descriptions> </el-descriptions>
</div>
</template> </template>
</div> </div>
<template #footer> <template #footer>
@ -111,4 +110,8 @@ const fnGetAllCoursewareByHandout = async () => {
await fnGetAllCoursewareByHandout(); await fnGetAllCoursewareByHandout();
</script> </script>
<style scoped lang="scss"></style> <style scoped lang="scss">
.title {
width: 100px;
}
</style>

View File

@ -11,74 +11,104 @@
</el-space> </el-space>
<br /><br /> <br /><br />
<div id="printContent"> <div id="printContent">
<p>单位名称:{{ CORP_NAME }}</p>
<p class="mt-10">任务名称:{{ data.taskInfo.STUDY_NAME }}</p>
<div class="tc">
<h3 class="mt-10">{{ data.paperInfo.EXAMNAME }}</h3>
<p class="mt-10">(满分:{{ data.paperInfo.EXAMSCORE }})</p>
</div>
<div> <div>
<el-text>单位名称:{{ CORP_NAME }}</el-text> <template v-if="data.paperInfo.selectList.length > 0">
</div> <table style="width: 100%">
<br /> <thead>
<div> <tr>
<el-text>任务名称:{{ data.taskInfo.STUDY_NAME }}</el-text> <td style="border: none">
</div>
<div style="text-align: center">
<el-text size="large">{{ data.paperInfo.EXAMNAME }}</el-text>
</div>
<div style="text-align: center">
<el-text size="small">
(满分:{{ data.paperInfo.EXAMSCORE }})
</el-text>
</div>
<div v-if="data.paperInfo.selectList.length > 0" style="color: white">
<el-divider content-position="left">单选题</el-divider> <el-divider content-position="left">单选题</el-divider>
<template </td>
</tr>
</thead>
<tbody>
<tr
v-for="(item, index) in data.paperInfo.selectList" v-for="(item, index) in data.paperInfo.selectList"
:key="item.QUESTION_ID" :key="item.QUESTION_ID"
> >
{{ index + 1 }}.{{ item.QUESTIONDRY }} <td style="border: none">
<el-row> <p class="mt-10">{{ index + 1 }}.{{ item.QUESTIONDRY }}</p>
<el-row class="mt-10">
<el-col :span="2"></el-col> <el-col :span="2"></el-col>
<el-col :span="22"> <el-col :span="22">
<p>A.{{ item.OPTIONA }}</p> <p class="mt-10">A.{{ item.OPTIONA }}</p>
<p>B.{{ item.OPTIONB }}</p> <p class="mt-10">B.{{ item.OPTIONB }}</p>
<p>C.{{ item.OPTIONC }}</p> <p class="mt-10">C.{{ item.OPTIONC }}</p>
<p>D.{{ item.OPTIOND }}</p> <p class="mt-10">D.{{ item.OPTIOND }}</p>
</el-col> </el-col>
</el-row> </el-row>
</td>
</tr>
</tbody>
</table>
</template> </template>
</div> <template v-if="data.paperInfo.multiList.length > 0">
<div v-if="data.paperInfo.multiList.length > 0" style="color: white"> <table style="width: 100%">
<thead>
<tr>
<td style="border: none">
<el-divider content-position="left">多选题</el-divider> <el-divider content-position="left">多选题</el-divider>
<template </td>
</tr>
</thead>
<tbody>
<tr
v-for="(item, index) in data.paperInfo.multiList" v-for="(item, index) in data.paperInfo.multiList"
:key="item.QUESTION_ID" :key="item.QUESTION_ID"
> >
{{ index + 1 }}.{{ item.QUESTIONDRY }} <td style="border: none">
<el-row> <p class="mt-10">{{ index + 1 }}.{{ item.QUESTIONDRY }}</p>
<el-row class="mt-10">
<el-col :span="2"></el-col> <el-col :span="2"></el-col>
<el-col :span="22"> <el-col :span="22">
<p>A.{{ item.OPTIONA }}</p> <p class="mt-10">A.{{ item.OPTIONA }}</p>
<p>B.{{ item.OPTIONB }}</p> <p class="mt-10">B.{{ item.OPTIONB }}</p>
<p>C.{{ item.OPTIONC }}</p> <p class="mt-10">C.{{ item.OPTIONC }}</p>
<p>D.{{ item.OPTIOND }}</p> <p class="mt-10">D.{{ item.OPTIOND }}</p>
</el-col> </el-col>
</el-row> </el-row>
</td>
</tr>
</tbody>
</table>
</template> </template>
</div> <template v-if="data.paperInfo.judgeList.length > 0">
<div v-if="data.paperInfo.judgeList.length > 0" style="color: white"> <table style="width: 100%">
<thead>
<tr>
<td style="border: none">
<el-divider content-position="left">判断题</el-divider> <el-divider content-position="left">判断题</el-divider>
<template </td>
</tr>
</thead>
<tbody>
<tr
v-for="(item, index) in data.paperInfo.judgeList" v-for="(item, index) in data.paperInfo.judgeList"
:key="item.QUESTION_ID" :key="item.QUESTION_ID"
> >
{{ index + 1 }}.{{ item.QUESTIONDRY }} <td style="border: none">
<el-row> <p class="mt-10">{{ index + 1 }}.{{ item.QUESTIONDRY }}</p>
<el-row class="mt-10">
<el-col :span="2"></el-col> <el-col :span="2"></el-col>
<el-col :span="22"> <el-col :span="22">
<p>A.{{ item.OPTIONA }}</p> <p class="mt-10">A.{{ item.OPTIONA }}</p>
<p>B.{{ item.OPTIONB }}</p> <p class="mt-10">B.{{ item.OPTIONB }}</p>
</el-col> </el-col>
</el-row> </el-row>
</td>
</tr>
</tbody>
</table>
</template> </template>
</div> </div>
</div> </div>
<div v-html="PRINT_STYLE" />
<template #footer> <template #footer>
<el-button @click="fnClose"></el-button> <el-button @click="fnClose"></el-button>
</template> </template>
@ -91,6 +121,7 @@ import { getStudyTaskInfo, getPaperByTaskId } from "@/request/archives.js";
import { reactive } from "vue"; import { reactive } from "vue";
import { useVModels } from "@vueuse/core"; import { useVModels } from "@vueuse/core";
import { useUserStore } from "@/pinia/user.js"; import { useUserStore } from "@/pinia/user.js";
import { PRINT_STYLE } from "@/assets/js/constant.js";
const props = defineProps({ const props = defineProps({
title: { title: {

View File

@ -10,10 +10,8 @@
<el-button type="primary" v-print="'#printContent'"></el-button> <el-button type="primary" v-print="'#printContent'"></el-button>
</el-space> </el-space>
<div id="printContent"> <div id="printContent">
<div style="text-align: center"> <div class="tc mt-10">
<el-text size="large"> <h3>{{ data.taskInfo.STUDY_NAME }}培训综合考评报告</h3>
{{ data.taskInfo.STUDY_NAME }}培训综合考评报告
</el-text>
</div> </div>
<br /> <br />
<el-descriptions :column="2" border> <el-descriptions :column="2" border>
@ -26,16 +24,20 @@
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="考核方式">考核</el-descriptions-item> <el-descriptions-item label="考核方式">考核</el-descriptions-item>
<el-descriptions-item label="本次工作培训描述" :span="2"> <el-descriptions-item label="本次工作培训描述" :span="2">
<div class="large-content">
本次培训的主要内容是:{{ curriculums }} 共应参加人数为{{ 本次培训的主要内容是:{{ curriculums }} 共应参加人数为{{
data.studentList.length data.studentList.length
}}, 实际参加培训人数为{{ join_student_list.length }}, 参加率为{{ }}, 实际参加培训人数为{{ join_student_list.length }},
参加率为{{
( (
(join_student_list.length / data.studentList.length) * (join_student_list.length / data.studentList.length) *
100 100
).toFixed(2) ).toFixed(2)
}}% }}%
</div>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="本次培训考评结论" :span="2"> <el-descriptions-item label="本次培训考评结论" :span="2">
<div class="large-content">
本次通过笔试的方式进行了培训效果考核,考核人数为{{ 本次通过笔试的方式进行了培训效果考核,考核人数为{{
data.studentList.length data.studentList.length
}},考核合格人数为{{ pass_student_list.length }}, 合格率为{{ }},考核合格人数为{{ pass_student_list.length }}, 合格率为{{
@ -44,17 +46,19 @@
100 100
).toFixed(2) ).toFixed(2)
}}% }}%
</div>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="改进意见建议" :span="2"> <el-descriptions-item label="改进意见建议" :span="2">
<div>1.本次培训的讲师</div> <p>1.本次培训的讲师</p>
<div>讲师的语言表达能力应该更加的生动清晰易懂</div> <p class="mt-10">讲师的语言表达能力应该更加的生动清晰易懂</p>
<div>非常满意</div> <p class="mt-10">非常满意</p>
<div>2.本次培训的课程</div> <p class="mt-10">2.本次培训的课程</p>
<div>课程内容应该更加专业可以对我的工作帮助更大</div> <p class="mt-10">课程内容应该更加专业可以对我的工作帮助更大</p>
<div>非常满意</div> <p class="mt-10">非常满意</p>
</el-descriptions-item> </el-descriptions-item>
</el-descriptions> </el-descriptions>
</div> </div>
<div v-html="PRINT_STYLE" />
<template #footer> <template #footer>
<el-button @click="fnClose"></el-button> <el-button @click="fnClose"></el-button>
</template> </template>
@ -70,6 +74,7 @@ import {
} from "@/request/archives.js"; } from "@/request/archives.js";
import { computed, reactive } from "vue"; import { computed, reactive } from "vue";
import { useVModels } from "@vueuse/core"; import { useVModels } from "@vueuse/core";
import { PRINT_STYLE } from "@/assets/js/constant.js";
const props = defineProps({ const props = defineProps({
title: { title: {
@ -178,4 +183,8 @@ const fnGetStudentByTaskId = async () => {
await fnGetStudentByTaskId(); await fnGetStudentByTaskId();
</script> </script>
<style scoped lang="scss"></style> <style scoped lang="scss">
.large-content {
height: 127px;
}
</style>

View File

@ -10,14 +10,17 @@
<el-button type="primary" v-print="'#printContent'"></el-button> <el-button type="primary" v-print="'#printContent'"></el-button>
</el-space> </el-space>
<div id="printContent"> <div id="printContent">
<div style="text-align: center"> <div class="tc mt-10">
<el-text size="large">学员统计情况总表</el-text> <h3>学员统计情况总表</h3>
</div> </div>
<div style="display: flex; justify-content: space-between"> <div
<el-text size="small">平台名称:</el-text> class="mt-10"
<el-text size="small">报表日期:{{ fnGetCurrentDay() }}</el-text> style="display: flex; justify-content: space-between"
>
<span>平台名称:</span>
<span>报表日期:{{ fnGetCurrentDay() }}</span>
</div> </div>
<el-descriptions direction="vertical" :column="2" border> <el-descriptions class="mt-10" direction="vertical" :column="2" border>
<el-descriptions-item label="公司名称"> <el-descriptions-item label="公司名称">
{{ CORP_NAME }} {{ CORP_NAME }}
</el-descriptions-item> </el-descriptions-item>
@ -38,10 +41,87 @@
{{ pass_student_list.length }} {{ pass_student_list.length }}
</el-descriptions-item> </el-descriptions-item>
</el-descriptions> </el-descriptions>
<br />
<div style="text-align: center"> <table class="print_use" style="width: 100%">
<el-text>合格学员名单</el-text> <thead>
</div> <tr>
<td colspan="7" class="tc" style="border: none">合格学员名单</td>
</tr>
<tr>
<td class="title">序号</td>
<td class="title">姓名</td>
<td class="title">身份证</td>
<td class="title">手机号</td>
<td class="title">性别</td>
<td class="title">完成学时</td>
<td class="title">结业考试成绩</td>
</tr>
</thead>
<tbody>
<template v-if="pass_student_list && pass_student_list.length > 0">
<tr
v-for="(item, index) in pass_student_list"
:key="item.USER_ID"
>
<td class="tc">{{ index + 1 }}</td>
<td class="tc">{{ item.USER_NAME }}</td>
<td class="tc">{{ item.USER_ID_CARD }}</td>
<td class="tc">{{ item.PHONE }}</td>
<td class="tc">{{ item.SEX_NAME }}</td>
<td class="tc">{{ item.COMPLETE_CLASSHOUR }}</td>
<td class="tc">
{{
item.STAGEEXAMSCORE > -1 ? item.STAGEEXAMSCORE : "未参加"
}}
</td>
</tr>
</template>
</tbody>
</table>
<table class="print_use" style="width: 100%">
<thead>
<tr>
<td colspan="7" class="tc" style="border: none">
未合格学员名单
</td>
</tr>
<tr>
<td class="title">序号</td>
<td class="title">姓名</td>
<td class="title">身份证</td>
<td class="title">手机号</td>
<td class="title">性别</td>
<td class="title">完成学时</td>
<td class="title">结业考试成绩</td>
</tr>
</thead>
<tbody>
<template
v-if="unpass_student_list && unpass_student_list.length > 0"
>
<tr
v-for="(item, index) in unpass_student_list"
:key="item.USER_ID"
>
<td class="tc">{{ index + 1 }}</td>
<td class="tc">{{ item.USER_NAME }}</td>
<td class="tc">{{ item.USER_ID_CARD }}</td>
<td class="tc">{{ item.PHONE }}</td>
<td class="tc">{{ item.SEX_NAME }}</td>
<td class="tc">{{ item.COMPLETE_CLASSHOUR }}</td>
<td class="tc">
{{
item.STAGEEXAMSCORE > -1 ? item.STAGEEXAMSCORE : "未参加"
}}
</td>
</tr>
</template>
</tbody>
</table>
<div class="print_no_use">
<div class="tc mtb-10">合格学员名单</div>
<layout-table :data="pass_student_list" :show-pagination="false"> <layout-table :data="pass_student_list" :show-pagination="false">
<el-table-column label="序号" width="50"> <el-table-column label="序号" width="50">
<template v-slot="{ $index }"> <template v-slot="{ $index }">
@ -59,9 +139,7 @@
</template> </template>
</el-table-column> </el-table-column>
</layout-table> </layout-table>
<div style="text-align: center"> <div class="tc mb-10">未合格学员名单</div>
<el-text>未合格学员名单</el-text>
</div>
<layout-table :data="unpass_student_list" :show-pagination="false"> <layout-table :data="unpass_student_list" :show-pagination="false">
<el-table-column label="序号" width="50"> <el-table-column label="序号" width="50">
<template v-slot="{ $index }"> <template v-slot="{ $index }">
@ -80,6 +158,8 @@
</el-table-column> </el-table-column>
</layout-table> </layout-table>
</div> </div>
</div>
<div v-html="PRINT_STYLE" />
<template #footer> <template #footer>
<el-button @click="fnClose"></el-button> <el-button @click="fnClose"></el-button>
</template> </template>
@ -98,6 +178,7 @@ import { useVModels } from "@vueuse/core";
import LayoutTable from "@/components/table/index.vue"; import LayoutTable from "@/components/table/index.vue";
import { useUserStore } from "@/pinia/user.js"; import { useUserStore } from "@/pinia/user.js";
import { serialNumber } from "@/assets/js/utils.js"; import { serialNumber } from "@/assets/js/utils.js";
import { PRINT_STYLE } from "@/assets/js/constant.js";
const userStore = useUserStore(); const userStore = useUserStore();
const CORP_NAME = userStore.getUserInfo.CORP_NAME; const CORP_NAME = userStore.getUserInfo.CORP_NAME;

View File

@ -1,5 +1,4 @@
<template> <template>
<div>
<el-dialog <el-dialog
v-if="type === 102" v-if="type === 102"
:model-value="type === 102" :model-value="type === 102"
@ -10,10 +9,10 @@
<el-button type="primary" v-print="'#printContent'"></el-button> <el-button type="primary" v-print="'#printContent'"></el-button>
</el-space> </el-space>
<div id="printContent"> <div id="printContent">
<div style="text-align: center"> <div class="tc">
<el-text size="large">安全培训教育记录及签字表</el-text> <h3>安全培训教育记录及签字表</h3>
</div> </div>
<div style="text-align: center"> <div class="tc">
( (
<el-checkbox>岗前三级培训</el-checkbox> <el-checkbox>岗前三级培训</el-checkbox>
<el-checkbox>专项培训</el-checkbox> <el-checkbox>专项培训</el-checkbox>
@ -41,19 +40,44 @@
{{ coursewares }} {{ coursewares }}
</el-descriptions-item> </el-descriptions-item>
</el-descriptions> </el-descriptions>
<div style="text-align: center">
<el-text>受培训人</el-text> <table class="print_use">
</div> <thead>
<tr>
<td colspan="2" class="tc" style="border: none">受培训人</td>
</tr>
<tr>
<td class="title">姓名</td>
<td class="title">部门</td>
</tr>
</thead>
<tbody>
<template v-if="data.studentList && data.studentList.length > 0">
<tr v-for="(item, index) in data.studentList" :key="index">
<td>
{{ item.USER_NAME }}
</td>
<td>
{{ item.DEPARTMENT_NAME }}
</td>
</tr>
</template>
</tbody>
</table>
<div class="print_no_use">
<div class="tc">受培训人</div>
<layout-table :data="data.studentList" :show-pagination="false"> <layout-table :data="data.studentList" :show-pagination="false">
<el-table-column prop="USER_NAME" label="姓名" /> <el-table-column prop="USER_NAME" label="姓名" />
<el-table-column prop="DEPARTMENT_NAME" label="部门" /> <el-table-column prop="DEPARTMENT_NAME" label="部门" />
</layout-table> </layout-table>
</div> </div>
</div>
<div v-html="PRINT_STYLE" />
<template #footer> <template #footer>
<el-button @click="fnClose"></el-button> <el-button @click="fnClose"></el-button>
</template> </template>
</el-dialog> </el-dialog>
</div>
</template> </template>
<script setup> <script setup>
@ -65,6 +89,7 @@ import {
import { computed, reactive } from "vue"; import { computed, reactive } from "vue";
import { useVModels } from "@vueuse/core"; import { useVModels } from "@vueuse/core";
import LayoutTable from "@/components/table/index.vue"; import LayoutTable from "@/components/table/index.vue";
import { PRINT_STYLE } from "@/assets/js/constant.js";
const props = defineProps({ const props = defineProps({
title: { title: {
@ -168,4 +193,10 @@ const fnGetStudentByTaskId = async () => {
await fnGetStudentByTaskId(); await fnGetStudentByTaskId();
</script> </script>
<style scoped lang="scss"></style> <style scoped lang="scss">
:deep {
.el-descriptions__label {
width: 100px;
}
}
</style>

View File

@ -11,13 +11,58 @@
<el-button type="danger" @click="fnDelete"> </el-button> <el-button type="danger" @click="fnDelete"> </el-button>
<el-button type="primary" v-print="'#printContent'"></el-button> <el-button type="primary" v-print="'#printContent'"></el-button>
</el-space> </el-space>
<div id="printContent"> <div id="printContent">
<div style="text-align: center"> <table class="print_use" style="width: 100%">
<el-text size="large">{{ CORP_NAME }}培训计划</el-text> <thead>
<tr>
<td colspan="12" style="border: none">
<div class="tc">
<h3>{{ CORP_NAME }}培训计划</h3>
</div> </div>
<div> <div class="tl">单位名称:{{ CORP_NAME }}</div>
<el-text size="small">单位名称:{{ CORP_NAME }}</el-text> </td>
</tr>
<tr>
<td class="title">序号</td>
<td class="title">培训组织部门</td>
<td class="title">培训日期</td>
<td class="title">培训时间</td>
<td class="title">培训内容</td>
<td class="title">培训方式</td>
<td class="title">培训对象</td>
<td class="title">考核方式</td>
<td class="title">地点</td>
<td class="title">培训教师</td>
<td class="title">经费保障</td>
<td class="title">质量评估</td>
</tr>
</thead>
<tbody>
<template v-if="data.dataList && data.dataList.length > 0">
<tr v-for="(item, index) in data.dataList" :key="index">
<td class="tc">{{ index + 1 }}</td>
<td class="tc">{{ item.ORGANIZATION_DEPARTMENT }}</td>
<td class="tc">{{ item.TRAINING_DATE }}</td>
<td class="tc">{{ item.TRAINING_TIME }}</td>
<td class="tc">{{ item.TRAINING_CONTENT }}</td>
<td class="tc">{{ item.TRAINING_METHODS }}</td>
<td class="tc">{{ item.TRAINING_OBJECT }}</td>
<td class="tc">{{ item.ASSESSMENT_METHOD }}</td>
<td class="tc">{{ item.PLACE }}</td>
<td class="tc">{{ item.TRAINING_TEACHER }}</td>
<td class="tc">{{ item.FUND_GUARANTEE }}</td>
<td class="tc">{{ item.QUALITY_ASSESSMENT }}</td>
</tr>
</template>
</tbody>
</table>
<div class="print_no_use mt-10">
<div class="tc">
<h3>{{ CORP_NAME }}培训计划</h3>
</div> </div>
<p class="mtb-10">单位名称:{{ CORP_NAME }}</p>
<layout-table <layout-table
:data="data.dataList" :data="data.dataList"
:show-pagination="false" :show-pagination="false"
@ -58,13 +103,15 @@
label="质量评估" label="质量评估"
/> />
</layout-table> </layout-table>
<el-row> </div>
<el-row class="mt-10">
<el-col :span="6">编制人:</el-col> <el-col :span="6">编制人:</el-col>
<el-col :span="6">编制日期:</el-col> <el-col :span="6">编制日期:</el-col>
<el-col :span="6">审核人:</el-col> <el-col :span="6">审核人:</el-col>
<el-col :span="6">审核日期:</el-col> <el-col :span="6">审核日期:</el-col>
</el-row> </el-row>
</div> </div>
<div v-html="PRINT_STYLE" />
<template #footer> <template #footer>
<el-button @click="fnClose"></el-button> <el-button @click="fnClose"></el-button>
</template> </template>
@ -92,6 +139,7 @@ import LayoutTable from "@/components/table/index.vue";
import { serialNumber } from "@/assets/js/utils.js"; import { serialNumber } from "@/assets/js/utils.js";
import TrainingScheduleForm from "./training_schedule_form.vue"; import TrainingScheduleForm from "./training_schedule_form.vue";
import { ElMessageBox } from "element-plus"; import { ElMessageBox } from "element-plus";
import { PRINT_STYLE } from "@/assets/js/constant.js";
const userStore = useUserStore(); const userStore = useUserStore();
const CORP_NAME = userStore.getUserInfo.CORP_NAME; const CORP_NAME = userStore.getUserInfo.CORP_NAME;

View File

@ -1,40 +1,41 @@
<template> <template>
<el-dialog v-model="visible" title="人员登记表" :before-close="fnClose"> <el-dialog v-model="visible" title="人员登记表" :before-close="fnClose">
<el-button type="primary" v-print="'#printContent'"></el-button> <el-button type="primary" v-print="'#printContent'"></el-button>
<br /><br /> <div id="printContent" class="mt-20">
<div id="printContent"> <div class="tc">
<div style="text-align: center"> <h3>生产经营单位新入职从业人员登记表</h3>
<el-text size="large">生产经营单位新入职从业人员登记表</el-text>
</div> </div>
<el-descriptions :column="2"> <div
<el-descriptions-item label="生产经营单位名称(盖章):"> class="mt-20"
{{ CORP_NAME }} style="display: flex; justify-content: space-between; width: 80%"
</el-descriptions-item> >
<el-descriptions-item label="档案编号:"> </el-descriptions-item> <span>生产经营单位名称(盖章):{{ CORP_NAME }}</span>
</el-descriptions> <span>档案编号:</span>
<el-row> </div>
<el-row class="mt-10">
<el-col :span="20"> <el-col :span="20">
<el-descriptions :column="2" border> <el-descriptions :column="2" border>
<el-descriptions-item label="姓名"> <el-descriptions-item label="姓名" label-align="center">
{{ data.userInfo.NAME }} {{ data.userInfo.NAME }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="性别"> <el-descriptions-item label="性别" label-align="center">
{{ data.userInfo.SEX_NAME }} {{ data.userInfo.SEX_NAME }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="民族"> <el-descriptions-item label="民族" label-align="center">
{{ data.userInfo.NATION_NAME }} {{ data.userInfo.NATION_NAME }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="政治面貌"> <el-descriptions-item label="政治面貌" label-align="center">
{{ data.userInfo.POLITICAL_OUTLOOK_NAME }} {{ data.userInfo.POLITICAL_OUTLOOK_NAME }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="文化程度"> <el-descriptions-item label="文化程度" label-align="center">
{{ data.userInfo.DEGREE_OF_EDUCATION_NAME }} {{ data.userInfo.DEGREE_OF_EDUCATION_NAME }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="健康状况"> </el-descriptions-item> <el-descriptions-item label="健康状况" label-align="center">
<el-descriptions-item label="出生年月"> </el-descriptions-item>
<el-descriptions-item label="出生年月" label-align="center">
{{ data.userInfo.DATE_OF_BIRTH }} {{ data.userInfo.DATE_OF_BIRTH }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="身份证号"> <el-descriptions-item label="身份证号" label-align="center">
{{ data.userInfo.USER_ID_CARD }} {{ data.userInfo.USER_ID_CARD }}
</el-descriptions-item> </el-descriptions-item>
</el-descriptions> </el-descriptions>
@ -54,59 +55,72 @@
</el-col> </el-col>
</el-row> </el-row>
<el-descriptions :column="2" border> <el-descriptions :column="2" border>
<el-descriptions-item label="毕业院校及专业"> </el-descriptions-item> <el-descriptions-item label="毕业院校及专业" label-align="center">
<el-descriptions-item label="职务/职称"> </el-descriptions-item>
<el-descriptions-item label="职务/职称" label-align="center">
{{ data.userInfo.DUTIES_NAME }} {{ data.userInfo.DUTIES_NAME }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="户籍所在地"> </el-descriptions-item> <el-descriptions-item label="户籍所在地" label-align="center">
<el-descriptions-item label="参加工作时间"> </el-descriptions-item>
<el-descriptions-item label="参加工作时间" label-align="center">
{{ data.userInfo.WORKING_DATE }} {{ data.userInfo.WORKING_DATE }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="进入本单位时间"> <el-descriptions-item label="进入本单位时间" label-align="center">
{{ data.userInfo.ENTRY_DATE }} {{ data.userInfo.ENTRY_DATE }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="入职部门"> <el-descriptions-item label="入职部门" label-align="center">
{{ data.userInfo.DEPARTMENT_NAME }} {{ data.userInfo.DEPARTMENT_NAME }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="岗位名称"> <el-descriptions-item label="岗位名称" label-align="center">
{{ data.userInfo.POST_NAME }} {{ data.userInfo.POST_NAME }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="之前从事本岗位时间"> <el-descriptions-item label="之前从事本岗位时间" label-align="center">
</el-descriptions-item> </el-descriptions-item>
</el-descriptions> </el-descriptions>
<el-descriptions :column="1" border> <el-descriptions :column="1" border>
<el-descriptions-item label="主要工作经历"> </el-descriptions-item> <el-descriptions-item label="主要工作经历" label-align="center">
<div class="large-content"></div>
</el-descriptions-item>
<el-descriptions-item <el-descriptions-item
label="入职前接受安全培训和考核以及取得安全培训有关的岗位证书等情况" label="入职前接受安全培训和考核以及取得安全培训有关的岗位证书等情况"
label-align="center"
> >
<div class="large-content"></div>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item <el-descriptions-item
label="入职前受过何种有关安全生产的处罚以及是否受到刑事处罚" label="入职前受过何种有关安全生产的处罚以及是否受到刑事处罚"
> >
<div class="large-content"></div>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="入职统计表相关信息核定情况"> <el-descriptions-item label="入职统计表相关信息核定情况">
<div> <div>
<p> <p class="mtb-20">
入职人承诺:以上信息已经本人核实信息真实有效完整如有虚假或欺骗等行为自愿承担相应的法律责任. 入职人承诺:以上信息已经本人核实信息真实有效完整如有虚假或欺骗等行为自愿承担相应的法律责任.
</p> </p>
<div class="flex"> <div
<p>入职人(签字并按指纹)</p> class="mt-20"
<p> style="display: flex; justify-content: space-between; width: 80%"
承诺日期<span style="padding-left: 40px"></span >
><span style="padding-left: 20px"></span <span>入职人(签字并按指纹)</span>
><span style="padding-left: 20px"></span> <span>
</p> 承诺日期
<span class="pl-40"></span>
<span class="pl-20"></span>
<span class="pl-20"></span>
</span>
</div> </div>
</div> <p class="mt-20">生产经营单位核查意见</p>
<div> <div
<p>生产经营单位核查意见</p> class="mtb-20"
<div class="flex"> style="display: flex; justify-content: space-between; width: 80%"
<p>核查人员(签字)</p> >
<p> <span>核查人员(签字)</span>
核查日期<span style="padding-left: 40px"></span <span>
><span style="padding-left: 20px"></span 核查日期
><span style="padding-left: 20px"></span> <span class="pl-40"></span>
</p> <span class="pl-20"></span>
<span class="pl-20"></span>
</span>
</div> </div>
</div> </div>
</el-descriptions-item> </el-descriptions-item>
@ -159,4 +173,8 @@ const fnGetUserInfo = async () => {
await fnGetUserInfo(); await fnGetUserInfo();
</script> </script>
<style scoped lang="scss"></style> <style scoped lang="scss">
.large-content {
height: 127px;
}
</style>

View File

@ -1,15 +1,7 @@
<template> <template>
<div> <layout-print-table-package entrance="archive">
<el-descriptions title="学时证明" :column="1">
<template #extra>
<el-button type="primary" v-print="'#printContent'" size="small">
打印
</el-button>
</template>
</el-descriptions>
<div id="printContent">
<div class="print_use"> <div class="print_use">
<div style="text-align: right"> <div class="tr mt-30">
<span>档案编号</span> <span>档案编号</span>
</div> </div>
<div <div
@ -47,108 +39,152 @@
<div style="padding-top: 20px">单位名称公章</div> <div style="padding-top: 20px">单位名称公章</div>
</div> </div>
</div> </div>
<div>
<span style="color: white">证书编号:</span> <table>
</div> <thead>
<el-descriptions :column="1" border> <tr>
<el-descriptions-item label="姓名"> <td colspan="2" style="border: none">
{{ data.userInfo.NAME }} <el-divider content-position="left">学时证明</el-divider>
</el-descriptions-item> <div class="mb-10">证书编号:</div>
<el-descriptions-item label="证件类型">身份证</el-descriptions-item> </td>
<el-descriptions-item label="证件编号"> </tr>
{{ data.userInfo.USER_ID_CARD }} </thead>
</el-descriptions-item> <tbody>
<el-descriptions-item label="培训单位名称"> <tr>
{{ CORP_NAME }} <td class="title">姓名</td>
</el-descriptions-item> <td>{{ data.userInfo.NAME }}</td>
<el-descriptions-item label="任务名称"> </tr>
{{ data.studyTaskInfo.STUDY_NAME }} <tr>
</el-descriptions-item> <td class="title">证件类型</td>
<el-descriptions-item label="培训日期"> <td>身份证</td>
</tr>
<tr>
<td class="title">证件编号</td>
<td>{{ data.userInfo.USER_ID_CARD }}</td>
</tr>
<tr>
<td class="title">培训单位名称</td>
<td>{{ CORP_NAME }}</td>
</tr>
<tr>
<td class="title">任务名称</td>
<td>{{ data.studyTaskInfo.STUDY_NAME }}</td>
</tr>
<tr>
<td class="title">培训日期</td>
<td>
{{ data.studyTaskInfo.PEIXUE_START_TIME }} {{ data.studyTaskInfo.PEIXUE_START_TIME }}
{{ data.studyTaskInfo.PEIXUE_END_TIME }} {{ data.studyTaskInfo.PEIXUE_END_TIME }}
</el-descriptions-item> </td>
<el-descriptions-item label="培训类型"> </tr>
{{ data.studyTaskInfo.train_type_name }} <tr>
</el-descriptions-item> <td class="title">培训类型</td>
<el-descriptions-item label="视频学习时长"> <td>{{ data.studyTaskInfo.train_type_name }}</td>
{{ video_class_hours }}分钟(包含{{ video_count }}个视频) </tr>
</el-descriptions-item> <tr>
<el-descriptions-item label="资料学习时长"> <td class="title">视频学习时长</td>
{{ data_class_hours }}分钟(包含{{ data_count }}个资料) <td>{{ video_class_hours }}分钟(包含{{ video_count }}个视频)</td>
</el-descriptions-item> </tr>
<el-descriptions-item label="合计学习时长"> <tr>
{{ video_class_hours + data_class_hours }}分钟 <td class="title">资料学习时长</td>
</el-descriptions-item> <td>{{ data_class_hours }}分钟(包含{{ data_count }}个资料)</td>
<el-descriptions-item> </tr>
<template #label> <tr>
培训单位:(盖章) 日期: {{ fnGetCurrentDay() }} <td class="title">合计学习时长</td>
</template> <td>{{ video_class_hours + data_class_hours }}分钟</td>
</el-descriptions-item> </tr>
</el-descriptions> <tr style="height: 150px">
<td class="title">
<div style="width: 150px">
<p>培训单位:(盖章)</p>
<p>日期: {{ fnGetCurrentDay() }}</p>
</div>
</td>
<td></td>
</tr>
</tbody>
</table>
<br /> <table>
<thead>
<tr>
<td colspan="4" style="border: none">
<el-divider content-position="left">课程材料</el-divider>
<div class="mb-10 flex">
<span>姓名:{{ data.userInfo.NAME }}</span>
<span>身份证号:{{ data.userInfo.USER_ID_CARD }}</span>
</div>
</td>
</tr>
<tr>
<td class="title">任务名称</td>
<td class="title" colspan="3">{{ data.studyTaskInfo.STUDY_NAME }}</td>
</tr>
<tr>
<td class="title">序号</td>
<td class="title">课程内容</td>
<td class="title">课时</td>
<td class="title">讲师</td>
</tr>
</thead>
<tbody>
<tr v-for="(item, index) in data.curriculumList" :key="index">
<td class="tc">{{ index + 1 }}</td>
<td class="tc">{{ item.COURSEWARENAME }}</td>
<td class="tc">{{ (item.CLASSHOUR / 45).toFixed(2) }}</td>
<td class="tc">{{ item.SPEAKER }}</td>
</tr>
</tbody>
</table>
<el-descriptions title="课程资料" :column="2"> <table>
<el-descriptions-item label="姓名:"> <thead>
{{ data.userInfo.NAME }} <tr>
</el-descriptions-item> <td style="border: none">
<el-descriptions-item label="身份证号:"> <el-divider content-position="left">考卷详情</el-divider>
{{ data.userInfo.USER_ID_CARD }} </td>
</el-descriptions-item> </tr>
</el-descriptions> <tr>
<layout-table :data="data.curriculumList" :show-pagination="false"> <td style="border: none">
<el-table-column label="任务名称"> <div class="tc">
<el-table-column label="序号" width="70">
<template v-slot="{ $index }">
{{ serialNumber({ currentPage: 1, pageSize: 99999 }, $index) }}
</template>
</el-table-column>
</el-table-column>
<el-table-column :label="data.studyTaskInfo.STUDY_NAME">
<el-table-column prop="COURSEWARENAME" label="课程内容" />
<el-table-column prop="CLASSHOUR" label="课时">
<template v-slot="{ row }">
{{ (row.CLASSHOUR / 45).toFixed(2) }}
</template>
</el-table-column>
<el-table-column prop="SPEAKER" label="讲师" />
</el-table-column>
</layout-table>
<el-descriptions title="考卷详情" :column="2" />
<div style="text-align: center; color: white">
<h3>{{ data.paper.info.EXAMNAME }}</h3> <h3>{{ data.paper.info.EXAMNAME }}</h3>
</div>
<div class="tc mt-10">
<span>(满分:{{ data.paper.info.EXAMSCORE || 0 }})</span> <span>(满分:{{ data.paper.info.EXAMSCORE || 0 }})</span>
</div> </div>
<el-descriptions :column="2"> <div class="flex">
<el-descriptions-item label="任务名称:"> <span>任务名称:{{ data.studyTaskInfo.STUDY_NAME }}</span>
{{ data.studyTaskInfo.STUDY_NAME }} <span>姓名:{{ data.userInfo.NAME }}</span>
</el-descriptions-item> </div>
<el-descriptions-item label="姓名:"> </td>
{{ data.userInfo.NAME }} </tr>
</el-descriptions-item> <tr>
<el-descriptions-item label="考试时间:"> <td style="border: none">
{{ data.paper.info.OPERATTIME }} <div class="flex">
</el-descriptions-item> <span>考试时间:{{ data.paper.info.OPERATTIME }}</span>
<el-descriptions-item label="分数:"> <span>分数:{{ data.examScore.userSecond[0] }}</span>
{{ data.examScore.userSecond[0] }} </div>
</el-descriptions-item> </td>
</el-descriptions> </tr>
<div v-if="data.paper.selectList.length > 0" style="color: white"> </thead>
<tbody>
<template v-if="data.paper.selectList.length > 0">
<tr>
<td style="border: none">
<el-divider content-position="left">单选题</el-divider> <el-divider content-position="left">单选题</el-divider>
<template </td>
</tr>
<tr
v-for="(item, index) in data.paper.selectList" v-for="(item, index) in data.paper.selectList"
:key="item.QUESTION_ID" :key="item.QUESTION_ID"
> >
<el-row> <td style="border: none">
<el-col :span="24"> <p>
{{ index + 1 }}.{{ item.QUESTIONDRY }} 选择答案[{{ {{ index + 1 }}.{{ item.QUESTIONDRY }} 选择答案[{{
data.paper.isExam === "1" ? item.ANSWER : "" data.paper.isExam === "1" ? item.ANSWER : ""
}}] }}]
</el-col> </p>
</el-row> <el-row :gutter="30" class="mt-10">
<el-row :gutter="30">
<el-col :span="4">A.{{ item.OPTIONA }}</el-col> <el-col :span="4">A.{{ item.OPTIONA }}</el-col>
<el-col :span="4">B.{{ item.OPTIONB }}</el-col> <el-col :span="4">B.{{ item.OPTIONB }}</el-col>
<el-col :span="4">C.{{ item.OPTIONC }}</el-col> <el-col :span="4">C.{{ item.OPTIONC }}</el-col>
@ -160,22 +196,26 @@
</el-col> </el-col>
</el-row> </el-row>
<el-divider border-style="dashed" /> <el-divider border-style="dashed" />
</td>
</tr>
</template> </template>
</div> <template v-if="data.paper.multiList.length > 0">
<div v-if="data.paper.multiList.length > 0" style="color: white"> <tr>
<td style="border: none">
<el-divider content-position="left">多选题</el-divider> <el-divider content-position="left">多选题</el-divider>
<template </td>
</tr>
<tr
v-for="(item, index) in data.paper.multiList" v-for="(item, index) in data.paper.multiList"
:key="item.QUESTION_ID" :key="item.QUESTION_ID"
> >
<el-row> <td style="border: none">
<el-col :span="24"> <p>
{{ index + 1 }}.{{ item.QUESTIONDRY }} 选择答案[{{ {{ index + 1 }}.{{ item.QUESTIONDRY }} 选择答案[{{
data.paper.isExam === "1" ? item.ANSWER : "" data.paper.isExam === "1" ? item.ANSWER : ""
}}] }}]
</el-col> </p>
</el-row> <el-row :gutter="30" class="mt-10">
<el-row :gutter="30">
<el-col :span="4">A.{{ item.OPTIONA }}</el-col> <el-col :span="4">A.{{ item.OPTIONA }}</el-col>
<el-col :span="4">B.{{ item.OPTIONB }}</el-col> <el-col :span="4">B.{{ item.OPTIONB }}</el-col>
<el-col :span="4">C.{{ item.OPTIONC }}</el-col> <el-col :span="4">C.{{ item.OPTIONC }}</el-col>
@ -187,21 +227,25 @@
</el-col> </el-col>
</el-row> </el-row>
<el-divider border-style="dashed" /> <el-divider border-style="dashed" />
</td>
</tr>
</template> </template>
</div> <template v-if="data.paper.judgeList.length > 0">
<div v-if="data.paper.judgeList.length > 0" style="color: white"> <tr>
<td style="border: none">
<el-divider content-position="left">判断题</el-divider> <el-divider content-position="left">判断题</el-divider>
<template </td>
</tr>
<tr
v-for="(item, index) in data.paper.judgeList" v-for="(item, index) in data.paper.judgeList"
:key="item.QUESTION_ID" :key="item.QUESTION_ID"
> >
<el-row> <td style="border: none">
<el-col :span="24"> <p>
{{ index + 1 }}.{{ item.QUESTIONDRY }} 选择答案[{{ {{ index + 1 }}.{{ item.QUESTIONDRY }} 选择答案[{{
data.paper.isExam === "1" ? item.ANSWER : "" data.paper.isExam === "1" ? item.ANSWER : ""
}}] }}]
</el-col> </p>
</el-row>
<el-row :gutter="30"> <el-row :gutter="30">
<el-col :span="4">A.{{ item.OPTIONA }}</el-col> <el-col :span="4">A.{{ item.OPTIONA }}</el-col>
<el-col :span="4">B.{{ item.OPTIONB }}</el-col> <el-col :span="4">B.{{ item.OPTIONB }}</el-col>
@ -212,112 +256,126 @@
</el-col> </el-col>
</el-row> </el-row>
<el-divider border-style="dashed" /> <el-divider border-style="dashed" />
</td>
</tr>
</template> </template>
</div> </tbody>
</table>
<br /> <table>
<thead>
<el-descriptions title="培训考核记录" :column="5" /> <tr>
<div style="text-align: center; color: white"> <td colspan="10" style="border: none">
<h4> <el-divider content-position="left">培训考核记录</el-divider>
<div class="tc">
<h3>
{{ data.studyTaskInfo.train_type_name }}生产经营单位{{ {{ data.studyTaskInfo.train_type_name }}生产经营单位{{
data.studyTaskInfo.post_type_name data.studyTaskInfo.post_type_name
}}安全培训考核记录 }}安全培训考核记录
</h4> </h3>
</div> </div>
<el-descriptions :column="2"> </td>
<el-descriptions-item label="生产经营单位或安全生产管理机构名称:(盖章)"> </tr>
</el-descriptions-item> <tr>
<el-descriptions-item label="档案编号:"> </el-descriptions-item> <td colspan="10" style="border: none">
</el-descriptions> <div class="flex">
<el-descriptions :column="5" border> <span>生产经营单位或安全生产管理机构名称:(盖章)</span>
<el-descriptions-item label="姓名"> <span>档案编号:</span>
{{ data.userInfo.NAME }} </div>
</el-descriptions-item> </td>
<el-descriptions-item label="性别"> </tr>
{{ data.userInfo.SEX_NAME }} </thead>
</el-descriptions-item> <tbody>
<el-descriptions-item label="身份证"> <tr>
{{ data.userInfo.USER_ID_CARD }} <td class="title">姓名</td>
</el-descriptions-item> <td class="tc">{{ data.userInfo.NAME }}</td>
<el-descriptions-item label="学历"> <td class="title">性别</td>
{{ data.userInfo.DEGREE_OF_EDUCATION_NAME }} <td class="tc">{{ data.userInfo.SEX_NAME }}</td>
</el-descriptions-item> <td class="title">身份证</td>
<el-descriptions-item label="专业"> </el-descriptions-item> <td class="tc">{{ data.userInfo.USER_ID_CARD }}</td>
<el-descriptions-item label="职务"> <td class="title">学历</td>
{{ data.userInfo.DUTIES_NAME }} <td class="tc">{{ data.userInfo.DEGREE_OF_EDUCATION_NAME }}</td>
</el-descriptions-item> <td class="title">专业</td>
<el-descriptions-item label="部门"> <td class="tc"></td>
{{ data.userInfo.DEPARTMENT_NAME }} </tr>
</el-descriptions-item> <tr>
<el-descriptions-item label="工种"> <td class="title">职务</td>
{{ data.userInfo.TYPE_OF_WORK_NAME }} <td class="tc">{{ data.userInfo.DUTIES_NAME }}</td>
</el-descriptions-item> <td class="title">部门</td>
<el-descriptions-item label="行业类别"> <td class="tc">{{ data.userInfo.DEPARTMENT_NAME }}</td>
{{ data.studyTaskInfo.train_type_name }} <td class="title">工种</td>
</el-descriptions-item> <td class="tc">{{ data.studyTaskInfo.TYPE_OF_WORK_NAME }}</td>
<el-descriptions-item label="联系电话"> <td class="title">行业类别</td>
{{ data.userInfo.USERNAME }} <td class="tc">{{ data.studyTaskInfo.train_type_name }}</td>
</el-descriptions-item> <td class="title">联系电话</td>
<el-descriptions-item label="人员类型" :span="5"> <td class="tc">{{ data.userInfo.USERNAME }}</td>
</tr>
<tr>
<td class="title">人员类型</td>
<td colspan="9" class="tc">
<el-checkbox-group v-model="data.checkPerType" disabled> <el-checkbox-group v-model="data.checkPerType" disabled>
<el-checkbox <el-checkbox
v-for="(item, index) in data.personalTypeList" v-for="(item, index) in data.personalTypeList"
:key="index" :key="index"
:label="item.DICTIONARIES_ID" :label="item.DICTIONARIES_ID"
>{{ item.NAME }}</el-checkbox
> >
{{ item.NAME }}
</el-checkbox>
</el-checkbox-group> </el-checkbox-group>
</el-descriptions-item> </td>
</el-descriptions> </tr>
<div style="text-align: center; color: white"> </tbody>
<span>安全培训及考核实施情况</span> </table>
</div> <table>
<layout-table <thead>
:data="data.curriculumList" <tr>
:show-pagination="false" <td colspan="9" class="tc">安全培训及考核实施情况</td>
:span-method="fnMergeCells" </tr>
<tr>
<td class="title" style="width: 4%">序号</td>
<td class="title">培训时间</td>
<td class="title">培训地点</td>
<td class="title">培训主要内容</td>
<td class="title">学时</td>
<td class="title">培训教师</td>
<td class="title">考试成绩</td>
<td class="title">补考成绩</td>
<td class="title">本人签字</td>
</tr>
</thead>
<tbody>
<template v-if="data.curriculumList && data.curriculumList.length > 0">
<tr
v-for="(item, index) in data.curriculumList"
:key="item.COURSEWARE_ID"
> >
<el-table-column label="序号" width="70"> <td class="tc">{{ index + 1 }}</td>
<template v-slot="{ $index }"> <td class="tc">
{{ serialNumber({ currentPage: 1, pageSize: 99999 }, $index) }}
</template>
</el-table-column>
<el-table-column label="培训时间">
<template v-slot>
{{ data.studyTaskInfo.PEIXUE_START_TIME }} {{ data.studyTaskInfo.PEIXUE_START_TIME }}
{{ data.studyTaskInfo.PEIXUE_END_TIME }} {{ data.studyTaskInfo.PEIXUE_END_TIME }}
</template> </td>
</el-table-column> <td class="tc">一体化双控平台</td>
<el-table-column label="培训地点"> <td class="tc">{{ item.COURSEWARENAME }}</td>
<template v-slot></template> <td class="tc">{{ (item.CLASSHOUR / 45).toFixed(2) }}</td>
</el-table-column> <td class="tc">{{ item.SPEAKER }}</td>
<el-table-column prop="COURSEWARENAME" label="培训主要内容" /> <td class="tc">{{ data.examScore.userSecond[0] }}</td>
<el-table-column label="学时"> <td class="tc">{{ data.examScore.userSecond[1] }}</td>
<template v-slot="{ row }"> <td class="tc">
{{ (row.CLASSHOUR / 45).toFixed(2) }}
</template>
</el-table-column>
<el-table-column prop="SPEAKER" label="培训教师" />
<el-table-column label="考试成绩">
<template v-slot>{{ data.examScore.userSecond[0] }}</template>
</el-table-column>
<el-table-column label="补考成绩">
<template v-slot>{{ data.examScore.userSecond[1] }}</template>
</el-table-column>
<el-table-column label="本人签字">
<template v-slot>
<img <img
v-if="data.examScore.USER_SIGN_PATH" v-if="data.examScore.USER_SIGN_PATH"
:src="FILE_URL + data.examScore.USER_SIGN_PATH" :src="FILE_URL + data.examScore.USER_SIGN_PATH"
style="height: 50px; width: 50px" style="height: 50px; width: 50px"
alt="本人" alt="本人"
/> />
</td>
</tr>
</template> </template>
</el-table-column> </tbody>
</layout-table> </table>
<el-descriptions :column="4">
<el-descriptions-item label="记录人员(签字):"> <el-row class="mt-10">
<el-col :span="6">
记录人员(签字):
<div v-for="(item, index) in data.signList" :key="index"> <div v-for="(item, index) in data.signList" :key="index">
<img <img
v-if="item.TYPE === 1 && item.USER_SIGN_FILE_PATH" v-if="item.TYPE === 1 && item.USER_SIGN_FILE_PATH"
@ -326,8 +384,9 @@
alt="记录人员" alt="记录人员"
/> />
</div> </div>
</el-descriptions-item> </el-col>
<el-descriptions-item label="考核人员(签字):"> <el-col :span="6">
考核人员(签字):
<div v-for="(item, index) in data.signList" :key="index"> <div v-for="(item, index) in data.signList" :key="index">
<img <img
v-if="item.TYPE === 2 && item.USER_SIGN_FILE_PATH" v-if="item.TYPE === 2 && item.USER_SIGN_FILE_PATH"
@ -336,15 +395,12 @@
alt="考核人员" alt="考核人员"
/> />
</div> </div>
</el-descriptions-item> </el-col>
<el-descriptions-item label="安全生产管理机构负责人(签章):"> <el-col :span="6"> 安全生产管理机构负责人(签章): </el-col>
</el-descriptions-item> <el-col :span="6"> 归档日期:{{ fnGetCurrentDay() }} </el-col>
<el-descriptions-item label="归档日期:"> </el-row>
{{ fnGetCurrentDay() }} </layout-print-table-package>
</el-descriptions-item> <div v-html="PRINT_STYLE" />
</el-descriptions>
</div>
</div>
</template> </template>
<script setup> <script setup>
@ -357,11 +413,11 @@ import {
getUserExamScoreByStudyTaskId, getUserExamScoreByStudyTaskId,
} from "@/request/archives.js"; } from "@/request/archives.js";
import { layoutFnGetPersonnelType } from "@/assets/js/data_dictionary.js"; import { layoutFnGetPersonnelType } from "@/assets/js/data_dictionary.js";
import LayoutTable from "@/components/table/index.vue";
import { computed, reactive } from "vue"; import { computed, reactive } from "vue";
import { useRoute } from "vue-router"; import { useRoute } from "vue-router";
import { useUserStore } from "@/pinia/user"; import { useUserStore } from "@/pinia/user";
import { serialNumber } from "@/assets/js/utils.js"; import LayoutPrintTablePackage from "@/components/print_table_package/index.vue";
import { PRINT_STYLE } from "@/assets/js/constant.js";
const FILE_URL = import.meta.env.VITE_FILE_URL; const FILE_URL = import.meta.env.VITE_FILE_URL;
@ -529,21 +585,12 @@ const fnGetCurrentDay = () => {
const day = String(currentDatetime.getDate()).padStart(2, "0"); const day = String(currentDatetime.getDate()).padStart(2, "0");
return `${year}${month}${day}`; return `${year}${month}${day}`;
}; };
const fnMergeCells = ({ rowIndex, columnIndex }) => {
if (columnIndex > 5) {
if (rowIndex < 1) {
return {
rowspan: data.curriculumList.length,
colspan: 1,
};
}
return {
rowspan: 0,
colspan: 0,
};
}
};
</script> </script>
<style scoped lang="scss"></style> <style scoped lang="scss">
.flex {
display: flex;
justify-content: space-between;
width: 80%;
}
</style>

View File

@ -38,24 +38,21 @@
</el-descriptions> </el-descriptions>
<template v-for="(row, index) in data.questionList" :key="row.QUESTION_ID"> <template v-for="(row, index) in data.questionList" :key="row.QUESTION_ID">
<div> <div class="mt-20">
<el-row>
<el-col :span="24">
{{ index + 1 }}. {{ index + 1 }}.
<el-text v-if="row.QUESTIONTYPE === '1'" type="info"> <span v-if="row.QUESTIONTYPE === '1'" class="question-type">
(单选题) (单选题)
</el-text> </span>
<el-text v-if="row.QUESTIONTYPE === '2'" type="info"> <span v-if="row.QUESTIONTYPE === '2'" class="question-type">
(多选题) (多选题)
</el-text> </span>
<el-text v-if="row.QUESTIONTYPE === '3'" type="info"> <span v-if="row.QUESTIONTYPE === '3'" class="question-type">
(判断题) (判断题)
</el-text> </span>
{{ row.QUESTIONDRY }} {{ row.QUESTIONDRY }}
</el-col> </div>
</el-row>
<el-space wrap> <div class="mt-10 ml-30">
<el-radio-group <el-radio-group
v-if="row.QUESTIONTYPE === '1'" v-if="row.QUESTIONTYPE === '1'"
:disabled="true" :disabled="true"
@ -84,9 +81,8 @@
<el-radio label="A">A.{{ row.OPTIONA }}</el-radio> <el-radio label="A">A.{{ row.OPTIONA }}</el-radio>
<el-radio label="B">B.{{ row.OPTIONB }}</el-radio> <el-radio label="B">B.{{ row.OPTIONB }}</el-radio>
</el-radio-group> </el-radio-group>
</el-space>
<div>答案{{ row.ANSWER }}</div>
</div> </div>
<div class="mt-10">答案{{ row.ANSWER }}</div>
</template> </template>
</layout-card> </layout-card>
</template> </template>
@ -114,4 +110,9 @@ const fnGetPaperInfo = async () => {
await fnGetPaperInfo(); await fnGetPaperInfo();
</script> </script>
<style scoped lang="scss"></style> <style scoped lang="scss">
.question-type {
font-size: 12px;
color: gray;
}
</style>