教育培训-档案管理-一期一档/一企一档-剩余档案编辑

pull/1/head
duhang 2024-01-08 20:21:32 +08:00
parent 382f6fa062
commit faeb08ff24
11 changed files with 339 additions and 11 deletions

View File

@ -274,6 +274,30 @@ export default [
}, },
], ],
}, },
{
path: "/archives/semester",
meta: { title: "一期一档", isSubMenu: false },
component: "children",
children: [
{
path: "",
component: "archives/semester/index",
},
{
path: "/archives/semester/catalogue",
meta: {
title: "档案目录",
activeMenu: "/archives/semester",
},
component: "archives/corp/catalogue",
},
],
},
{
path: "/archives/corp",
meta: { title: "一企一档", isSubMenu: false },
component: "archives/corp/index",
},
], ],
}, },
{ {

View File

@ -4,7 +4,8 @@ export const getUserList = (params) => post("/user/list", params); // 档案管
export const getUserInfo = (params) => post("/user/goEditUser", params); // 档案管理-一人一档-获取人员详情 export const getUserInfo = (params) => post("/user/goEditUser", params); // 档案管理-一人一档-获取人员详情
export const getTaskList = (params) => post("/studytask/userlist", params); // 档案管理-一人一档-获取任务详情列表 export const getTaskListByUser = (params) =>
post("/studytask/userlist", params); // 档案管理-一人一档-获取任务详情列表
export const getStudyTaskInfo = (params) => post("/studytask/goEdit", params); // 档案管理-一人一档-档案详情-获取任务信息 export const getStudyTaskInfo = (params) => post("/studytask/goEdit", params); // 档案管理-一人一档-档案详情-获取任务信息
@ -19,3 +20,5 @@ export const getSignByStudyTask = (params) =>
export const getUserExamScoreByStudyTaskId = (params) => export const getUserExamScoreByStudyTaskId = (params) =>
post("/stageexam/getUserExamScoreByStudystaskId", params); // 档案管理-一人一档-档案详情-??? post("/stageexam/getUserExamScoreByStudystaskId", params); // 档案管理-一人一档-档案详情-???
export const getTaskList = (params) => post("/studytask/list", params); // 档案管理-一期一档-获取任务列表

View File

@ -0,0 +1,79 @@
<template>
<div>
<layout-table :data="catalogueList" :show-pagination="false">
<el-table-column show-overflow-tooltip prop="NAME" label="目录" />
<el-table-column label="操作">
<template v-slot>
<el-button type="primary" text link> 编辑 </el-button>
<!-- todo -->
</template>
</el-table-column>
</layout-table>
<edit v-model:visible="data.editVisible" />
</div>
</template>
<script setup>
import LayoutTable from "@/components/table/index.vue";
import edit from "./components/edit.vue";
import { computed, reactive } from "vue";
import { useVModels } from "@vueuse/core";
import { useRoute } from "vue-router";
const props = defineProps({
source: {
type: String,
required: false,
default: "", // : corp=, semester=
},
year: {
type: String,
required: false,
default: "",
},
});
const { source } = useVModels(props);
const route = useRoute();
const { source: sourceByRoute } = route.query;
const data = reactive({
editVisible: false,
semesterList: [
{ NAME: "安全培训教材会审表", TYPE: 5 },
{ NAME: "培训日程安排通知/也可称为培训计划", TYPE: 101 },
{ NAME: "安全培训教材或课程讲义", TYPE: 106 },
{ NAME: "安全培训教育记录及签字表", TYPE: 102 },
{ NAME: "培训影像资料", TYPE: 7 },
{ NAME: "培训考核试卷", TYPE: 103 },
{ NAME: "学员考核成绩统计表", TYPE: 104 },
{ NAME: "本期综合考评报告", TYPE: 105 },
{ NAME: "与培训机构签订的服务合同或者协议复印件", TYPE: 6 },
],
corpList: [
{ NAME: "安全培训教育制度", TYPE: 1 },
{ NAME: "关于任命安全教育主管部门和人员的文件", TYPE: 2 },
{ NAME: "三岗人员管理台账", TYPE: 101 },
{ NAME: "培训需求调查表", TYPE: 3 },
{ NAME: "本单位师资管理台账", TYPE: 102 },
{ NAME: "年度安全培训教育计划", TYPE: 103 },
{ NAME: "年度安全培训教育管理台账", TYPE: 104 },
{ NAME: "年度培训资金提取和使用情况管理台账", TYPE: 105 },
{ NAME: "培训条件证明材料", TYPE: 4 },
],
});
const catalogueList = computed(() => {
let sourceTemp = "";
if (!source.value || source.value.length < 1) {
sourceTemp = sourceByRoute;
} else {
sourceTemp = source.value;
}
if (sourceTemp === "corp") {
return data.corpList;
} else if (sourceTemp === "semester") {
return data.semesterList;
}
return [];
});
</script>

View File

@ -0,0 +1,3 @@
<template>
<div>todo</div>
</template>

View File

@ -0,0 +1,40 @@
<template>
<div>
<el-form :model="data.form" label-width="80px">
<el-row>
<el-col :span="4">
<el-form-item label="企业名称:" prop="KEYWORDS">
<span style="color: white">{{ CORP_NAME }}</span>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="年份:" prop="YEAR">
<el-date-picker
v-model="data.form.year"
value-format="YYYY"
format="YYYY"
type="year"
clearable
placeholder="请选择年份"
/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<catalogue source="corp" />
</div>
</template>
<script setup>
import { reactive } from "vue";
import { useUserStore } from "@/pinia/user.js";
import Catalogue from "@/views/archives/corp/catalogue.vue";
const userStore = useUserStore();
const CORP_NAME = userStore.getUserInfo.CORP_NAME;
const data = reactive({
form: {
year: String(new Date().getFullYear()),
},
});
</script>

View File

@ -0,0 +1,154 @@
<template>
<div>
<el-card>
<el-form
:model="searchForm"
label-width="100px"
@submit.prevent="fnResetPagination"
>
<el-row>
<el-col :span="4">
<el-form-item label="课程名称" prop="KEYWORDS">
<el-input
v-model="searchForm.KEYWORDS"
placeholder="请输入课程名称"
/>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="开始时间" prop="STARTTIME">
<el-date-picker
v-model="searchForm.STARTTIME"
value-format="YYYY-MM-DD"
format="YYYY-MM-DD"
type="date"
clearable
placeholder="请选择开始时间"
/>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="结束时间" prop="ENDTIME">
<el-date-picker
v-model="searchForm.ENDTIME"
value-format="YYYY-MM-DD"
format="YYYY-MM-DD"
type="date"
clearable
placeholder="请选择结束时间"
/>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="状态" prop="STATUS">
<el-select
v-model="searchForm.STATUS"
clearable
placeholder="请选择状态"
>
<el-option
v-for="item in data.statusList"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label-width="10px">
<el-button type="primary" native-type="submit">搜索</el-button>
<el-button native-type="reset" @click="fnResetPagination">
重置
</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-card>
<layout-card>
<layout-table
:data="list"
@get-data="fnGetData"
v-model:pagination="pagination"
>
<el-table-column label="序号" width="60">
<template #default="{ $index }">
{{ serialNumber(pagination, $index) }}
</template>
</el-table-column>
<el-table-column
show-overflow-tooltip
prop="STUDY_NAME"
label="课程名称"
/>
<el-table-column prop="PEIXUE_START_TIME" label="开始时间" />
<el-table-column prop="PEIXUE_END_TIME" label="结束时间" />
<el-table-column prop="CURRICULUMUSERS" label="状态">
<template v-slot="{ row }">
{{ fnCompareDate(row) }}
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="140">
<template v-slot>
<el-button
type="primary"
text
link
@click="
router.push({
path: '/archives/semester/catalogue',
query: {
source: 'semester',
},
})
"
>
档案目录
</el-button>
</template>
</el-table-column>
</layout-table>
</layout-card>
</div>
</template>
<script setup>
import { reactive } from "vue";
import useListData from "@/assets/js/useListData.js";
import { getTaskList } from "@/request/archives.js";
import LayoutCard from "@/components/card/index.vue";
import LayoutTable from "@/components/table/index.vue";
import { serialNumber } from "@/assets/js/utils.js";
import { useRouter } from "vue-router";
const router = useRouter();
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
useListData(getTaskList);
const data = reactive({
statusList: [
{ value: 1, label: "未开始" },
{ value: 2, label: "进行中" },
{ value: 3, label: "已结束" },
],
});
const fnCompareDate = (row) => {
const currentDatetime = new Date();
const year = currentDatetime.getFullYear();
const month = String(currentDatetime.getMonth() + 1).padStart(2, "0");
const day = String(currentDatetime.getDate()).padStart(2, "0");
const dateNow = new Date(`${year}-${month}-${day}`).getTime();
if (new Date(row.PEIXUE_START_TIME).getTime() > dateNow) {
return "未开始";
} else if (
new Date(row.PEIXUE_START_TIME).getTime() <= dateNow &&
new Date(row.PEIXUE_END_TIME).getTime() >= dateNow
) {
return "进行中";
} else if (new Date(row.PEIXUE_END_TIME).getTime() <= dateNow) {
return "已结束";
}
};
</script>

View File

@ -9,7 +9,10 @@
<el-row> <el-row>
<el-col :span="4"> <el-col :span="4">
<el-form-item label="任务名称" prop="KEYWORDS"> <el-form-item label="任务名称" prop="KEYWORDS">
<el-input v-model="searchForm.KEYWORDS" /> <el-input
v-model="searchForm.KEYWORDS"
placeholder="请输入任务名称"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="4"> <el-col :span="4">
@ -20,6 +23,7 @@
format="YYYY-MM-DD" format="YYYY-MM-DD"
type="date" type="date"
clearable clearable
placeholder="请选择开始时间"
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -31,12 +35,17 @@
format="YYYY-MM-DD" format="YYYY-MM-DD"
type="date" type="date"
clearable clearable
placeholder="请选择结束时间"
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="4"> <el-col :span="4">
<el-form-item label="状态" prop="STATUS"> <el-form-item label="状态" prop="STATUS">
<el-select v-model="searchForm.STATUS" clearable> <el-select
v-model="searchForm.STATUS"
clearable
placeholder="请选择状态"
>
<el-option <el-option
v-for="item in data.statusList" v-for="item in data.statusList"
:key="item.value" :key="item.value"
@ -145,7 +154,7 @@
<script setup> <script setup>
import LayoutTable from "@/components/table/index.vue"; import LayoutTable from "@/components/table/index.vue";
import LayoutCard from "@/components/card/index.vue"; import LayoutCard from "@/components/card/index.vue";
import { getTaskList } from "@/request/archives.js"; import { getTaskListByUser } from "@/request/archives.js";
import useListData from "@/assets/js/useListData.js"; import useListData from "@/assets/js/useListData.js";
import { reactive } from "vue"; import { reactive } from "vue";
import { useRoute, useRouter } from "vue-router"; import { useRoute, useRouter } from "vue-router";
@ -157,7 +166,7 @@ const route = useRoute();
const { USER_ID } = route.query; const { USER_ID } = route.query;
const { list, pagination, searchForm, fnGetData, fnResetPagination } = const { list, pagination, searchForm, fnGetData, fnResetPagination } =
useListData(getTaskList, { useListData(getTaskListByUser, {
otherParams: { otherParams: {
STUDY_USER_ID: USER_ID, STUDY_USER_ID: USER_ID,
}, },

View File

@ -9,7 +9,10 @@
<el-row> <el-row>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="课程名称" prop="KEYWORDS"> <el-form-item label="课程名称" prop="KEYWORDS">
<el-input v-model="searchForm.KEYWORDS" /> <el-input
v-model="searchForm.KEYWORDS"
placeholder="请输入课程名称"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
@ -17,12 +20,13 @@
<layout-learning-train-type <layout-learning-train-type
v-model="searchForm.POSTTYPE" v-model="searchForm.POSTTYPE"
type="post" type="post"
placeholder="请选择岗位培训类型"
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="课件状态" prop="STATE"> <el-form-item label="课件状态" prop="STATE">
<el-select v-model="searchForm.STATE"> <el-select v-model="searchForm.STATE" placeholder="请选择状态">
<el-option <el-option
v-for="item in data.courseStates" v-for="item in data.courseStates"
:key="item.value" :key="item.value"

View File

@ -9,7 +9,10 @@
<el-row> <el-row>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="课程名称" prop="KEYWORDS"> <el-form-item label="课程名称" prop="KEYWORDS">
<el-input v-model="searchForm.KEYWORDS" /> <el-input
v-model="searchForm.KEYWORDS"
placeholder="请输入课程名称"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
@ -17,12 +20,13 @@
<layout-learning-train-type <layout-learning-train-type
v-model="searchForm.POSTTYPE" v-model="searchForm.POSTTYPE"
type="post" type="post"
placeholder="请选择岗位培训类型"
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="课件状态" prop="STATE"> <el-form-item label="课件状态" prop="STATE">
<el-select v-model="searchForm.STATE"> <el-select v-model="searchForm.STATE" placeholder="请选择状态">
<el-option <el-option
v-for="item in data.courseStates" v-for="item in data.courseStates"
:key="item.value" :key="item.value"

View File

@ -9,7 +9,10 @@
<el-row> <el-row>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="课程名称" prop="KEYWORDS"> <el-form-item label="课程名称" prop="KEYWORDS">
<el-input v-model="searchForm.KEYWORDS" /> <el-input
v-model="searchForm.KEYWORDS"
placeholder="请输入课程名称"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
@ -17,6 +20,7 @@
<layout-learning-train-type <layout-learning-train-type
v-model="searchForm.POSTTYPE" v-model="searchForm.POSTTYPE"
type="post" type="post"
placeholder="请选择岗位培训类型"
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>

View File

@ -9,7 +9,10 @@
<el-row> <el-row>
<el-col :span="6"> <el-col :span="6">
<el-form-item label="试卷名称" prop="KEYWORDS"> <el-form-item label="试卷名称" prop="KEYWORDS">
<el-input v-model="searchForm.KEYWORDS" /> <el-input
v-model="searchForm.KEYWORDS"
placeholder="请输入试卷名称"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="6"> <el-col :span="6">
@ -17,6 +20,7 @@
<layout-learning-train-type <layout-learning-train-type
v-model="searchForm.POSTTYPE" v-model="searchForm.POSTTYPE"
type="post" type="post"
placeholder="请选择岗位培训类型"
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>