This commit is contained in:
Pengxiansen
2025-02-28 15:50:29 +08:00
parent 0325817f07
commit ebc420faa8

View File

@@ -1,43 +1,31 @@
<template> <template>
<!-- 学习路径图! --> <div class="growthpathmap">
<div class="learningpathmap">
<!-- 以下为顶部搜索框 --> <!-- 以下为顶部搜索框 -->
<div class="filter"> <div class="filter">
<div class="select"> <div class="select">
<a-cascader <a-input
change-on-select v-model:value="stdPositionDesr"
:options="option" style="height: 40px; border-radius: 8px"
v-model:value="orgId" allowClear
style="width: 100%" placeholder="填写标准岗位"
placeholder="请选择归属组织" />
:allowClear = false
:fieldNames="{
label: 'orgName',
value: 'organizationId',
children: 'childList',
}"
>
</a-cascader>
</div> </div>
<div class="select"> <div class="select">
<a-input <a-input
style="width: 100%; height: 40px; border-radius: 8px" v-model:value="qualsLevelDesr"
placeholder="请输入路径名称" style="height: 40px; border-radius: 8px"
v-model:value="routerName"
allowClear allowClear
showSearch placeholder="填写任职资格等级"
> />
</a-input>
</div> </div>
<div class="select"> <div class="select">
<a-input <a-select
style="width: 100%; height: 40px; border-radius: 8px" v-model:value="isPublished"
placeholder="请输入创建人" style="height: 40px; width: 100%"
placeholder="请选择发布状态"
:options="statusValues"
allowClear allowClear
v-model:value="createName" ></a-select>
showSearch
>
</a-input>
</div> </div>
<div class="select"> <div class="select">
<a-range-picker <a-range-picker
@@ -45,7 +33,7 @@
type="date" type="date"
valueFormat="YYYY-MM-DD" valueFormat="YYYY-MM-DD"
:placeholder="['发布开始时间', '结束时间']" :placeholder="['发布开始时间', '结束时间']"
style="width: 100%; margin-right: 0px" style="width: 100%"
/> />
</div> </div>
<div style="display: flex; margin-bottom: 20px"> <div style="display: flex; margin-bottom: 20px">
@@ -60,7 +48,7 @@
</div> </div>
</div> </div>
<!-- 以下为导出按钮 --> <!-- 以下为导出按钮 -->
<div class="btnzs"> <!-- <div class="btnzs">
<div class="btnz btnz3" @click="exportAllbtnz"> <div class="btnz btnz3" @click="exportAllbtnz">
<div> <div>
<img src="../../assets/images/coursewareManage/export1.png" alt="" /> <img src="../../assets/images/coursewareManage/export1.png" alt="" />
@@ -73,7 +61,7 @@
</div> </div>
<div class="btnzText">导出详细信息</div> <div class="btnzText">导出详细信息</div>
</div> </div>
</div> </div> -->
<!-- 以下为table表格 --> <!-- 以下为table表格 -->
<div class="tableBox"> <div class="tableBox">
<a-table <a-table
@@ -124,7 +112,7 @@
showQuickJumper="true" showQuickJumper="true"
hideOnSinglePage="true" hideOnSinglePage="true"
:pageSize="pageSize" :pageSize="pageSize"
v-model:current="pageNo" v-model:current="pageNum"
:total="tableDataTotal" :total="tableDataTotal"
class="pagination" class="pagination"
@change="changePagination" @change="changePagination"
@@ -142,20 +130,21 @@
import downLoad from "../../utils/downLoad"; import downLoad from "../../utils/downLoad";
import Cookies from "vue-cookies"; import Cookies from "vue-cookies";
import axios from "axios"; import axios from "axios";
import {
listData,
} from "@/api/growthpath";
import dayjs from "dayjs"; import dayjs from "dayjs";
import { useStore } from "vuex"; import { useStore } from "vuex";
export default { export default {
name: "LearningPathMap", name: "growthpathmap",
setup() { setup() {
const store = useStore(); const store = useStore();
const state = reactive({ const state = reactive({
tableLoading: false, // table加载图标 tableLoading: false, // table加载图标
tableDataTotal: 0, // 数据总条数 tableDataTotal: 0, // 数据总条数
pageSize: 10, // 每页条数 pageSize: 10, // 每页条数
pageNo: 1, //当前页码 pageNum: 1, //当前页码
name: "", // 名称
orgId: null, // 状态值 orgId: null, // 状态值
routerName: "", // 路径图名称
createName: "", // 创建者名称 createName: "", // 创建者名称
startTime: "", // 开始时间 startTime: "", // 开始时间
endTime: "", // 结束时间 endTime: "", // 结束时间
@@ -167,7 +156,14 @@
allowClear: true, allowClear: true,
resetOrgId: [], resetOrgId: [],
routerIdList: [], routerIdList: [],
stdPositionDesr: "",
qualsLevelDesr: "",
isPublished: null,
}); });
const statusValues = ref([
{ value: true, label: "已发布" },
{ value: false, label: "未发布" },
]);
// 表格数据 // 表格数据
let tableData = ref([]); let tableData = ref([]);
// table选中 // table选中
@@ -177,136 +173,78 @@
return item.boeRouterInfoId; return item.boeRouterInfoId;
}); });
}; };
const searchData=async()=>{ const searchData = () => {
state.pageNo=1 state.pageNum = 1;
state.pageSize=10 state.pageSize = 10;
getTableData()
}
//请求组织接口
const getOrgList = async () => {
//todo 获取用户角色列表判断里面是否有system-admin
// let roleList = store.state.userInfo.roleList;
var manageFlag = false;
for(let i=0;i<store.state.userInfo.roleList.length;i++){
if(store.state.userInfo.roleList[i].roleCode=="system-admin"){
manageFlag = true;
break;
}
}
const res = await api.userGetUserOrg();
if (res) {
// state.option = res.data?.result;
// state.orgId = [state.option[0]?.organizationId];
// state.resetOrgId = [state.option[0]?.organizationId];
if(manageFlag){
state.option = [{
orgName:"全部",
organizationId: null,
childList:res.data?.result.orgTreeList
}];
state.orgId = [null,...res.data?.result.treeNodeList];
state.resetOrgId = [null,...res.data?.result.treeNodeList];
}else{
if(res.data?.result.orgTreeList!=null){
state.option = res.data?.result.orgTreeList;
state.orgId = res.data?.result.treeNodeList;
state.resetOrgId = res.data?.result.treeNodeList;
}else{
state.option = [{
orgName:"无权限",
organizationId: "1",
childList:[],
}];
state.orgId = ["1"];
state.resetOrgId = ["1"];
}
}
state.allowClear = true;
getTableData(); getTableData();
}
}; };
// cloumns 表头 // cloumns 表头
const columns = ref([ const columns = ref([
// {
// title: "编号",
// dataIndex: "num",
// key: "num",
// ellipsis: true,
// align: "center",
// width: 120,
// },
{ {
title: "路径图名称", title: "标准岗位",
dataIndex: "boeRouterInfoName", dataIndex: "stdPositionDesr",
ellipsis: true, ellipsis: true,
key: "boeRouterInfoName", key: "stdPositionDesr",
align: "center", align: "center",
width: 240, width: 240,
}, },
{ {
title: "归属组织", title: "任职资格等级",
dataIndex: "organizationName", dataIndex: "qualsLevelDesr",
ellipsis: true, ellipsis: true,
key: "organizationName", key: "qualsLevelDesr",
align: "center", align: "center",
width: 240, width: 120,
}, },
{ {
title: "关卡数", title: "Band职级",
dataIndex: "levelTotal", dataIndex: "band",
ellipsis: true, ellipsis: true,
key: "levelTotal", key: "band",
align: "center", align: "center",
width: 90, width: 90,
}, },
{ {
title: "任务数", title: "总人数",
dataIndex: "taskTotal", dataIndex: "learnNum",
ellipsis: true, ellipsis: true,
key: "taskTotal", key: "learnNum",
align: "center", align: "center",
width: 90, width: 90,
}, },
{ {
title: "学习人数", title: "学习人数",
dataIndex: "learnerNumber", dataIndex: "learningNum",
ellipsis: true, ellipsis: true,
key: "learnerNumber", key: "learningNum",
align: "center",
width: 90,
},
{
title: "参与人数",
dataIndex: "participantsTotal",
ellipsis: true,
key: "participantsTotal",
align: "center", align: "center",
width: 90, width: 90,
}, },
{ {
title: "参与率", title: "参与率",
dataIndex: "participantsRate", dataIndex: "learningRatio",
ellipsis: true, ellipsis: true,
key: "participantsRate", key: "learningRatio",
align: "center", align: "center",
width: 90, width: 90,
customRender: ({ record: { learningRatio } }) =>
`${learningRatio * 100}%`,
}, },
{ {
title: "完成人数", title: "完成人数",
dataIndex: "completionNumber", dataIndex: "comLearnNum",
ellipsis: true, ellipsis: true,
key: "completionNumber", key: "comLearnNum",
align: "center", align: "center",
width: 90, width: 90,
}, },
{ {
title: "完成率", title: "完成率",
dataIndex: "completedRate",
ellipsis: true, ellipsis: true,
key: "completedRate",
align: "center", align: "center",
width: 90, width: 90,
customRender: ({ record: { comLearnNum, learnNum } }) =>
`${((comLearnNum / learnNum) * 100).toFixed()}%`,
}, },
{ {
title: "发布时间", title: "发布时间",
@@ -317,67 +255,47 @@
width: 120, width: 120,
}, },
{ {
title: "路径状态", title: "发布状态",
dataIndex: "status", dataIndex: "isPublished",
ellipsis: true, ellipsis: true,
key: "status", key: "isPublished",
align: "center",
width: 120,
customRender: ({ record: { isPublished } }) =>
isPublished ? "已发布" : "未发布",
},
{
title: "创建时间",
dataIndex: "createTime",
ellipsis: true,
key: "createTime",
align: "center", align: "center",
width: 120, width: 120,
}, },
{ // {
title: "创建人", // title: "操作",
dataIndex: "createName", // dataIndex: "operation",
ellipsis: true, // key: "operation",
key: "createName", // width: 200,
align: "center", // align: "center",
width: 120, // fixed: "right",
}, // customRender: (record) => {
{ // return (
title: "操作", // <div>
dataIndex: "operation", // <a
key: "operation", // key="export"
width: 200, // onClick={() => {
align: "center", // oneCurrentExport(record);
fixed: "right", // }}
customRender: (record) => { // >
return ( // 导出学习记录
<div> // </a>
<a // </div>
key="export" // );
onClick={() => { // },
oneExport(record); // },
}}
>
导出历史记录
</a>
&nbsp;&nbsp;
<a
key="export"
onClick={() => {
oneCurrentExport(record);
}}
>
导出当前数据
</a>
</div>
);
},
},
]); ]);
// 导出历史记录
const oneExport = (record) => {
axios({
method: "post",
url: "/report/boeu/router/exportHistoryRecord",
data: { routerId: `${record.record.boeRouterInfoId}` },
responseType: "blob",
headers: {
token: Cookies.get("token"),
},
}).then((res) => {
downLoad(res.data, "路径图历史学习数据.xlsx");
});
};
// 导出当前数据 // 导出当前数据
const oneCurrentExport = (record) => { const oneCurrentExport = (record) => {
axios({ axios({
@@ -389,31 +307,35 @@
token: Cookies.get("token"), token: Cookies.get("token"),
}, },
}).then((res) => { }).then((res) => {
downLoad(res.data, "路径图当前学习数据.xlsx"); downLoad(res.data, "专业力当前学习数据.xlsx");
}); });
}; };
//table 分页事件 //table 分页事件
const changePagination = (page) => { const changePagination = (page) => {
state.pageNo = page; state.pageNum = page;
getTableData(); getTableData();
}; };
// 获取数据 // 获取数据
const getTableData = async () => { const getTableData = async () => {
state.tableLoading = true; state.tableLoading = true;
const res = await api.boeuRouterPlatePageList({ const res = await listData({
page: state.pageNo, pageNum: state.pageNum,
size: state.pageSize, pageSize: state.pageSize,
orgId: state.orgId ? state.orgId[state.orgId.length - 1] : null, stdPositionDesr: state.stdPositionDesr,
routerName: state.routerName, qualsLevelDesr: state.qualsLevelDesr,
createName: state.createName, isPublished: state.isPublished,
startTime: typeof state.publishTime[0] === 'undefined' ? null : state.publishTime[0] + " 00:00:01", startTime:
endTime: typeof state.publishTime[1] == 'undefined' ? null : state.publishTime[1] + " 23:59:59", typeof state.publishTime[0] === "undefined"
// publishTime: state.publishTime, ? null
name: state.name, : state.publishTime[0] + " 00:00:01",
endTime:
typeof state.publishTime[1] == "undefined"
? null
: state.publishTime[1] + " 23:59:59",
}); });
if (res) { if (res) {
state.tableDataTotal = res.data.result.total; state.tableDataTotal = res.data.data.total;
const list = res.data.result.rows?.map((item) => { const list = res.data.data.records?.map((item) => {
return { return {
key: item.id, key: item.id,
...item, ...item,
@@ -426,10 +348,10 @@
// 重置按钮 // 重置按钮
const reset = async () => { const reset = async () => {
state.tableLoading = true; state.tableLoading = true;
state.createName = ""; state.stdPositionDesr = "";
state.publishTime = []; state.publishTime = [];
state.routerName = ""; state.qualsLevelDesr = "";
state.orgId = state.resetOrgId; state.isPublished = null;
state.selectedRowKeys = []; state.selectedRowKeys = [];
getTableData(); getTableData();
}; };
@@ -445,7 +367,7 @@
token: Cookies.get("token"), token: Cookies.get("token"),
}, },
}).then((res) => { }).then((res) => {
downLoad(res.data, "学习路径图详细信息.xlsx"); downLoad(res.data, "专业力详细信息.xlsx");
}), }),
(err) => { (err) => {
message.error(err); message.error(err);
@@ -454,8 +376,14 @@
const params = { const params = {
createName: state.createName, createName: state.createName,
// publishTime: state.publishTime, // publishTime: state.publishTime,
startTime: typeof state.publishTime[0] === 'undefined' ? null : state.publishTime[0] + " 00:00:01", startTime:
endTime: typeof state.publishTime[1] == 'undefined' ? null : state.publishTime[1] + " 23:59:59", typeof state.publishTime[0] === "undefined"
? null
: state.publishTime[0] + " 00:00:01",
endTime:
typeof state.publishTime[1] == "undefined"
? null
: state.publishTime[1] + " 23:59:59",
routerName: state.routerName, routerName: state.routerName,
orgId: state.orgId ? state.orgId[state.orgId.length - 1] : null, orgId: state.orgId ? state.orgId[state.orgId.length - 1] : null,
}; };
@@ -469,11 +397,10 @@
}, },
}).then((res) => { }).then((res) => {
if (res.data.status && res.data.status == 600) { if (res.data.status && res.data.status == 600) {
message.error(res.data.status) message.error(res.data.status);
} else { } else {
downLoad(res.data, "学习路径图详细信息.xlsx"); downLoad(res.data, "专业力必修详细信息.xlsx");
} }
}), }),
(err) => { (err) => {
message.error(err); message.error(err);
@@ -492,7 +419,7 @@
token: Cookies.get("token"), token: Cookies.get("token"),
}, },
}).then((res) => { }).then((res) => {
downLoad(res.data, "学习路径图列表信息.xlsx"); downLoad(res.data, "专业力必修列表信息.xlsx");
}), }),
(err) => { (err) => {
message.error(err); message.error(err);
@@ -501,8 +428,14 @@
const params = { const params = {
createName: state.createName, createName: state.createName,
// publishTime: state.publishTime, // publishTime: state.publishTime,
startTime: typeof state.publishTime[0] === 'undefined' ? null : state.publishTime[0] + " 00:00:01", startTime:
endTime: typeof state.publishTime[1] == 'undefined' ? null : state.publishTime[1] + " 23:59:59", typeof state.publishTime[0] === "undefined"
? null
: state.publishTime[0] + " 00:00:01",
endTime:
typeof state.publishTime[1] == "undefined"
? null
: state.publishTime[1] + " 23:59:59",
routerName: state.routerName, routerName: state.routerName,
orgId: state.orgId ? state.orgId[state.orgId.length - 1] : null, orgId: state.orgId ? state.orgId[state.orgId.length - 1] : null,
}; };
@@ -515,7 +448,7 @@
token: Cookies.get("token"), token: Cookies.get("token"),
}, },
}).then((res) => { }).then((res) => {
downLoad(res.data, "学习路径图信息.xlsx"); downLoad(res.data, "专业力必修信息.xlsx");
}), }),
(err) => { (err) => {
message.error(err); message.error(err);
@@ -523,8 +456,8 @@
} }
}; };
onMounted(() => { onMounted(() => {
getOrgList();
state.tableLoading = true; state.tableLoading = true;
getTableData();
}); });
return { return {
exportAllbtnz, exportAllbtnz,
@@ -534,6 +467,7 @@
getTableData, getTableData,
...toRefs(state), ...toRefs(state),
tableData, tableData,
statusValues,
columns, columns,
changePagination, changePagination,
dayjs, dayjs,
@@ -543,7 +477,7 @@
}; };
</script> </script>
<style lang="scss"> <style lang="scss">
.learningpathmap { .growthpathmap {
width: 100%; width: 100%;
height: 100%; height: 100%;
display: flex; display: flex;
@@ -758,4 +692,3 @@
} }
} }
</style> </style>