This commit is contained in:
Pengxiansen
2025-02-28 14:48:08 +08:00
parent d69d8a866d
commit 0325817f07
5 changed files with 1012 additions and 115 deletions

View File

@@ -760,6 +760,19 @@
}
];
}
if (n.indexOf("/growthpathmap") !== -1 || n.indexOf("/growthPathMap") !== -1) {
state.list = [
{
name: "报表中心",
},
{
name:'板块详细数据'
},
{
name:'专业力必修'
}
];
}
if (n.indexOf("/reportproject") !== -1 || n.indexOf("/ReportProject") !== -1) {
state.list = [
{

View File

@@ -668,6 +668,15 @@
<div class="img"></div>
</template>
<template #title>版块详细数据</template>
<!-- <a-menu-item key="sub17-2-8" v-if="checkMenu('growthpathmap')">
<span
:class="{
circleActive: selectedKeys[0] === 'sub17-2-8' ? true : false,
circle: selectedKeys[0] === 'sub17-2-8' ? false : true,
}"
></span>
<router-link to="/growthpathmap">专业力必修</router-link>
</a-menu-item> -->
<a-menu-item key="sub17-2-1" v-if="checkMenu('learningpathmap')">
<span
:class="{
@@ -1282,6 +1291,13 @@ export default {
selectedKeys: "sub17-2-7",
pagename: "考试",
},
{
href: "/growthpathmap",
openKeys: "sub17",
openKeys2: "sub17-2",
selectedKeys: "sub17-2-8",
pagename: "专业力必修",
},
{
href: "/overvoew",
openKeys: "sub17",

View File

@@ -138,7 +138,7 @@ const props = defineProps({
// 弹框标题
const title = computed(() => {
if (step.value == 1) {
return formData.value.info ? "编辑投票任务" : "添加投票";
return formData.value.id ? "编辑投票任务" : "添加投票";
} else if (step.value == 2) {
return "创建投票题干";
}

View File

@@ -3,55 +3,78 @@
<div class="overvoew">
<!-- 以下为顶部搜索框 -->
<div class="filterShow">
<div class="select">
<!-- <a-select
<template v-if="currentTab == 6">
<div class="select">
<a-input
v-model:value="stdPositionDesr"
:disabled="editId"
style=" height: 40px; border-radius: 8px"
allowClear
placeholder="填写标准岗位"
/>
</div>
<div class="select">
<a-input
v-model:value="qualsLevelDesr"
:disabled="editId"
style=" height: 40px; border-radius: 8px"
allowClear
placeholder="填写任职资格等级"
/>
</div>
</template>
<template v-else>
<div class="select">
<!-- <a-select
style="width: 100%"
placeholder="请选择组织"
v-model:value="orgId"
:options="option"
allowClear
></a-select> -->
<a-cascader
change-on-select
:options="option"
v-model:value="orgId"
style="width: 100%"
placeholder="请选择归属组织"
:allowClear=false
:fieldNames="{
label: 'orgName',
value: 'organizationId',
children: 'childList',
}"
>
</a-cascader>
</div>
<div class="select">
<a-input
style="width: 100%; height: 40px; border-radius: 8px"
placeholder="请输入名称"
allowClear
showSearch
v-model:value="name"
>
</a-input>
</div>
<div class="select">
<a-input
style="width: 100%; height: 40px; border-radius: 8px"
placeholder="请输入创建者"
v-model:value="creator"
allowClear
showSearch
>
</a-input>
</div>
<a-cascader
change-on-select
:options="option"
v-model:value="orgId"
style="width: 100%"
placeholder="请选择归属组织"
:allowClear="false"
:fieldNames="{
label: 'orgName',
value: 'organizationId',
children: 'childList',
}"
>
</a-cascader>
</div>
<div class="select">
<a-input
style="width: 100%; height: 40px; border-radius: 8px"
placeholder="请输入名称"
allowClear
showSearch
v-model:value="name"
>
</a-input>
</div>
<div class="select">
<a-input
style="width: 100%; height: 40px; border-radius: 8px"
placeholder="请输入创建者"
v-model:value="creator"
allowClear
showSearch
>
</a-input>
</div>
</template>
<div class="select">
<a-range-picker
v-model:value="publishTime"
type="date"
valueFormat="YYYY-MM-DD"
:placeholder="['创建开始时间','结束时间']"
:placeholder="['创建开始时间', '结束时间']"
style="width: 100%; margin-right: 0px"
/>
</div>
@@ -75,7 +98,7 @@
:class="currentTab === index ? 'tabActive' : 'tabItem'"
@click="tabClick(index)"
>
<a-popover v-if="index==0" trigger="hover" placement="topLeft">
<a-popover v-if="index == 0" trigger="hover" placement="topLeft">
<template #content>
此处数据展示全部单层项目数量列表展示条数与此处数量可能存在差异
</template>
@@ -306,7 +329,7 @@ import axios from "axios";
import dayjs from "dayjs";
import { message } from "ant-design-vue";
import Cookies from "vue-cookies";
import {useStore} from "vuex";
import { useStore } from "vuex";
export default {
name: "OvervoeW",
setup() {
@@ -323,17 +346,19 @@ export default {
selectedRowKeys: [], // 选中的列
option: [],
resetOrgId: [],
stdPositionDesr: null, // 标准岗位
qualsLevelDesr: "", //任职资格
allowClear: true,
type: null,
publishTime: [], // 创建时间
});
// 获取tab数据
const getTabData = async () => {
console.log("getTabData 111111:",state.type);
console.log("getTabData 222222:",store.state.userInfo.roleList);
console.log("getTabData 111111:", state.type);
console.log("getTabData 222222:", 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"){
for (let i = 0; i < store.state.userInfo.roleList.length; i++) {
if (store.state.userInfo.roleList[i].roleCode == "system-admin") {
manageFlag = true;
break;
}
@@ -342,13 +367,19 @@ export default {
method: "post",
url: "/report/boeu/all/total",
// params: { manager: true },
data: {
data: {
manager: manageFlag,
name: state.name,
orgId: state.orgId ? state.orgId[state.orgId.length - 1] : null,
creator: state.creator,
startTime: 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",
startTime:
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",
},
headers: {
token: Cookies.get("token"),
@@ -361,7 +392,7 @@ export default {
{ text: "课程", num: res.data.result?.courseTotal },
{ text: "考试", num: res.data.result?.examTotal },
{ text: "案例", num: res.data.result?.caseTotal },
// { text: "专业力", num: 10 },
// { text: "专业力", num: res.data.result?.growthTotal },
];
tabData.value = list;
});
@@ -373,39 +404,45 @@ export default {
state.publishTime = [];
state.name = "";
state.orgId = state.resetOrgId;
state.stdPositionDesr = null;
state.qualsLevelDesr = null;
getTableData();
getTabData();
};
//请求组织接口
const getOrgList = async () => {
var manageFlag = false;
for(let i=0;i<store.state.userInfo.roleList.length;i++){
if(store.state.userInfo.roleList[i].roleCode=="system-admin"){
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) {
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){
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:[],
}];
} else {
state.option = [
{
orgName: "无权限",
organizationId: "1",
childList: [],
},
];
state.orgId = ["1"];
state.resetOrgId = ["1"];
}
@@ -506,12 +543,16 @@ export default {
url: "/report/boeu/case/exportAll",
data: {
name: state.name,
orgId: state.orgId
? state.orgId[state.orgId.length - 1]
: null,
orgId: state.orgId ? state.orgId[state.orgId.length - 1] : null,
createName: state.creator,
startTime: 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",
startTime:
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",
},
responseType: "blob",
headers: {
@@ -526,12 +567,16 @@ export default {
url: "/report/boeu/exam/exportAll",
data: {
name: state.name,
orgId: state.orgId
? state.orgId[state.orgId.length - 1]
: null,
orgId: state.orgId ? state.orgId[state.orgId.length - 1] : null,
createName: state.creator,
startTime: 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",
startTime:
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",
},
responseType: "blob",
headers: {
@@ -550,8 +595,14 @@ export default {
? state.orgId[state.orgId.length - 1]
: null,
createName: state.creator,
startTime: 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",
startTime:
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",
},
responseType: "blob",
headers: {
@@ -570,8 +621,14 @@ export default {
? state.orgId[state.orgId.length - 1]
: null,
createName: state.creator,
startTime: 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",
startTime:
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",
},
responseType: "blob",
headers: {
@@ -586,12 +643,16 @@ export default {
url: "/report/boeu/router/exportAll",
data: {
name: state.name,
orgId: state.orgId
? state.orgId[state.orgId.length - 1]
: null,
orgId: state.orgId ? state.orgId[state.orgId.length - 1] : null,
createName: state.creator,
startTime: 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",
startTime:
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",
},
responseType: "blob",
headers: {
@@ -608,8 +669,14 @@ export default {
name: state.name,
orgId: state.orgId ? state.orgId[state.orgId.length - 1] : null,
createName: state.creator,
startCreateTime: typeof state.publishTime[0] === 'undefined' ? null : state.publishTime[0] +" 00:00:01",
endCreateTime: typeof state.publishTime[1] === 'undefined' ? null : state.publishTime[1]+" 23:59:59",
startCreateTime:
typeof state.publishTime[0] === "undefined"
? null
: state.publishTime[0] + " 00:00:01",
endCreateTime:
typeof state.publishTime[1] === "undefined"
? null
: state.publishTime[1] + " 23:59:59",
},
responseType: "blob",
headers: {
@@ -631,9 +698,16 @@ export default {
if (state.currentTab === 6) {
//专业力列表
const res = await api.boeuGrowthPlatePageList({
startTime: 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",
growthName: state.name,
startTime:
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",
qualsLevelDesr: state.qualsLevelDesr,
stdPositionDesr: state.stdPositionDesr,
page: state.pageNo,
size: state.pageSize,
});
@@ -653,8 +727,14 @@ export default {
//考试列表
const res = await api.boeuExamPageList({
creator: state.creator,
startTime: 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",
startTime:
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",
orgId: state.orgId ? state.orgId[state.orgId.length - 1] : null,
testName: state.name,
page: state.pageNo,
@@ -675,8 +755,14 @@ export default {
//案例列表
const res = await api.boeuCasePageList({
author: state.creator,
startTime: 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",
startTime:
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",
orgId: state.orgId ? state.orgId[state.orgId.length - 1] : null,
title: state.name,
page: state.pageNo,
@@ -702,8 +788,14 @@ export default {
? state.orgId[state.orgId.length - 1]
: null,
createName: state.creator,
startTime: 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",
startTime:
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",
});
const list = res.data.result.rows.map((item) => {
return {
@@ -721,8 +813,14 @@ export default {
teachingName: state.name,
orgId: state.orgId ? state.orgId[state.orgId.length - 1] : null,
createName: state.creator,
startTime: 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",
startTime:
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",
});
const list = res.data.result.rows?.map((item) => {
return {
@@ -740,8 +838,14 @@ export default {
routerName: state.name,
orgId: state.orgId ? state.orgId[state.orgId.length - 1] : null,
createName: state.creator,
startTime: 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",
startTime:
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",
});
const list = res.data.result.rows?.map((item) => {
return {
@@ -759,8 +863,14 @@ export default {
orgId: state.orgId ? state.orgId[state.orgId.length - 1] : null,
createName: state.creator,
projectName: state.name,
startCreateTime: typeof state.publishTime[0] === 'undefined' ? null : state.publishTime[0] +" 00:00:01",
endCreateTime: typeof state.publishTime[1] === 'undefined' ? null : state.publishTime[1]+" 23:59:59",
startCreateTime:
typeof state.publishTime[0] === "undefined"
? null
: state.publishTime[0] + " 00:00:01",
endCreateTime:
typeof state.publishTime[1] === "undefined"
? null
: state.publishTime[1] + " 23:59:59",
});
if (res) {
const fun = (arr) => {
@@ -1086,7 +1196,7 @@ export default {
width: 120,
align: "center",
},
{
title: "通过人数",
dataIndex: "numOfPass",
@@ -1561,12 +1671,12 @@ export default {
} else if (index === 6) {
columns.value = [
{
title: "专业力必修名称",
title: "专业力必修",
dataIndex: "growthName",
key: "growthName",
width: 120,
width: 200,
ellipsis: true,
align: "left",
align: "center",
fixed: "left",
},
{
@@ -1637,14 +1747,6 @@ export default {
width: 120,
align: "center",
},
{
title: "归属人名称",
dataIndex: "attrPersonName",
ellipsis: true,
key: "attrPersonName",
width: 120,
align: "center",
},
{
title: "状态",
dataIndex: "publishedStatus",
@@ -1652,6 +1754,11 @@ export default {
key: "publishedStatus",
width: 120,
align: "center",
customRender: ({ record: { publishedStatus } }) =>
({
1: "已发布",
0: "未发布",
}[publishedStatus]),
},
];
}

View File

@@ -0,0 +1,761 @@
<template>
<!-- 学习路径图! -->
<div class="learningpathmap">
<!-- 以下为顶部搜索框 -->
<div class="filter">
<div class="select">
<a-cascader
change-on-select
:options="option"
v-model:value="orgId"
style="width: 100%"
placeholder="请选择归属组织"
:allowClear = false
:fieldNames="{
label: 'orgName',
value: 'organizationId',
children: 'childList',
}"
>
</a-cascader>
</div>
<div class="select">
<a-input
style="width: 100%; height: 40px; border-radius: 8px"
placeholder="请输入路径名称"
v-model:value="routerName"
allowClear
showSearch
>
</a-input>
</div>
<div class="select">
<a-input
style="width: 100%; height: 40px; border-radius: 8px"
placeholder="请输入创建人"
allowClear
v-model:value="createName"
showSearch
>
</a-input>
</div>
<div class="select">
<a-range-picker
v-model:value="publishTime"
type="date"
valueFormat="YYYY-MM-DD"
:placeholder="['发布开始时间','结束时间']"
style="width: 100%; margin-right: 0px"
/>
</div>
<div style="display: flex; margin-bottom: 20px">
<div class="btnzx btnzx1" @click="searchData">
<div class="search"></div>
<div class="btnzText">搜索</div>
</div>
<div class="btnz btnzx2" @click="reset">
<div class="search"></div>
<div class="btnzText">重置</div>
</div>
</div>
</div>
<!-- 以下为导出按钮 -->
<div class="btnzs">
<div class="btnz btnz3" @click="exportAllbtnz">
<div>
<img src="../../assets/images/coursewareManage/export1.png" alt="" />
</div>
<div class="btnzText">导出列表信息</div>
</div>
<div class="btnz btnz3" @click="exportbtnz" style="margin-left: 20px">
<div>
<img src="../../assets/images/coursewareManage/export1.png" alt="" />
</div>
<div class="btnzText">导出详细信息</div>
</div>
</div>
<!-- 以下为table表格 -->
<div class="tableBox">
<a-table
rowKey="boeRouterInfoId"
:columns="columns"
:data-source="tableData"
:loading="tableLoading"
:scroll="{ x: 700 }"
:pagination="false"
:row-selection="{
selectedRowKeys: selectedRowKeys,
onChange: onSelectChange,
}"
>
<template #bodyCell="{ column, record }">
<template v-if="column.key === 'publishTime'">
<a-tooltip placement="topRight">
<template #title>
<span>{{
record.publishTime &&
dayjs(record.publishTime).format("YYYY-MM-DD HH:mm:ss")
}}</span>
</template>
<span>{{
record.publishTime &&
dayjs(record.publishTime).format("YYYY-MM-DD HH:mm:ss")
}}</span>
</a-tooltip>
</template>
<template v-if="column.key === 'status'">
<span>{{
record.status == "0"
? "草稿"
: record.status == "1"
? "已发布"
: record.status == "-1"
? "停用"
: ""
}}</span>
</template>
</template>
</a-table>
<div class="tableBox">
<div class="pa">
<a-pagination
v-if="tableDataTotal > 10"
:showSizeChanger="false"
showQuickJumper="true"
hideOnSinglePage="true"
:pageSize="pageSize"
v-model:current="pageNo"
:total="tableDataTotal"
class="pagination"
@change="changePagination"
/>
</div>
</div>
</div>
</div>
</template>
<script lang="jsx">
import { message } from "ant-design-vue";
import * as api from "../../api/indexOvervoew";
// import * as api from "../../api/indexWay";
import { ref, toRefs, reactive, onMounted } from "vue";
import downLoad from "../../utils/downLoad";
import Cookies from "vue-cookies";
import axios from "axios";
import dayjs from "dayjs";
import { useStore } from "vuex";
export default {
name: "LearningPathMap",
setup() {
const store = useStore();
const state = reactive({
tableLoading: false, // table加载图标
tableDataTotal: 0, // 数据总条数
pageSize: 10, // 每页条数
pageNo: 1, //当前页码
name: "", // 名称
orgId: null, // 状态值
routerName: "", // 路径图名称
createName: "", // 创建者名称
startTime: "", // 开始时间
endTime: "", // 结束时间
publishTime: "", // 创建时间
option: [], // 组织列表
boeRouterInfoName: "", // 路径名称
selectedRowKeys: [], // 选中的列
routerId: [],
allowClear: true,
resetOrgId: [],
routerIdList: [],
});
// 表格数据
let tableData = ref([]);
// table选中
const onSelectChange = (selectedRowKeys, record) => {
state.selectedRowKeys = selectedRowKeys;
state.routerId = record?.map((item) => {
return item.boeRouterInfoId;
});
};
const searchData=async()=>{
state.pageNo=1
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();
}
};
// cloumns 表头
const columns = ref([
// {
// title: "编号",
// dataIndex: "num",
// key: "num",
// ellipsis: true,
// align: "center",
// width: 120,
// },
{
title: "路径图名称",
dataIndex: "boeRouterInfoName",
ellipsis: true,
key: "boeRouterInfoName",
align: "center",
width: 240,
},
{
title: "归属组织",
dataIndex: "organizationName",
ellipsis: true,
key: "organizationName",
align: "center",
width: 240,
},
{
title: "关卡数",
dataIndex: "levelTotal",
ellipsis: true,
key: "levelTotal",
align: "center",
width: 90,
},
{
title: "任务数",
dataIndex: "taskTotal",
ellipsis: true,
key: "taskTotal",
align: "center",
width: 90,
},
{
title: "学习人数",
dataIndex: "learnerNumber",
ellipsis: true,
key: "learnerNumber",
align: "center",
width: 90,
},
{
title: "参与人数",
dataIndex: "participantsTotal",
ellipsis: true,
key: "participantsTotal",
align: "center",
width: 90,
},
{
title: "参与率",
dataIndex: "participantsRate",
ellipsis: true,
key: "participantsRate",
align: "center",
width: 90,
},
{
title: "完成人数",
dataIndex: "completionNumber",
ellipsis: true,
key: "completionNumber",
align: "center",
width: 90,
},
{
title: "完成率",
dataIndex: "completedRate",
ellipsis: true,
key: "completedRate",
align: "center",
width: 90,
},
{
title: "发布时间",
dataIndex: "publishTime",
ellipsis: true,
key: "publishTime",
align: "center",
width: 120,
},
{
title: "路径状态",
dataIndex: "status",
ellipsis: true,
key: "status",
align: "center",
width: 120,
},
{
title: "创建人",
dataIndex: "createName",
ellipsis: true,
key: "createName",
align: "center",
width: 120,
},
{
title: "操作",
dataIndex: "operation",
key: "operation",
width: 200,
align: "center",
fixed: "right",
customRender: (record) => {
return (
<div>
<a
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) => {
axios({
method: "post",
url: "/report/boeu/router/exportCurrentRecord",
data: { routerId: `${record.record.boeRouterInfoId}` },
responseType: "blob",
headers: {
token: Cookies.get("token"),
},
}).then((res) => {
downLoad(res.data, "路径图当前学习数据.xlsx");
});
};
//table 分页事件
const changePagination = (page) => {
state.pageNo = page;
getTableData();
};
// 获取数据
const getTableData = async () => {
state.tableLoading = true;
const res = await api.boeuRouterPlatePageList({
page: state.pageNo,
size: state.pageSize,
orgId: state.orgId ? state.orgId[state.orgId.length - 1] : null,
routerName: state.routerName,
createName: state.createName,
startTime: 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",
// publishTime: state.publishTime,
name: state.name,
});
if (res) {
state.tableDataTotal = res.data.result.total;
const list = res.data.result.rows?.map((item) => {
return {
key: item.id,
...item,
};
});
tableData.value = list;
state.tableLoading = false;
}
};
// 重置按钮
const reset = async () => {
state.tableLoading = true;
state.createName = "";
state.publishTime = [];
state.routerName = "";
state.orgId = state.resetOrgId;
state.selectedRowKeys = [];
getTableData();
};
//导出详细信息
const exportbtnz = async () => {
if (state.selectedRowKeys?.length > 0) {
axios({
method: "post",
url: "/report/boeu/router/exportCurrentRecord",
data: { routerIdList: state.selectedRowKeys },
responseType: "blob",
headers: {
token: Cookies.get("token"),
},
}).then((res) => {
downLoad(res.data, "学习路径图详细信息.xlsx");
}),
(err) => {
message.error(err);
};
} else {
const params = {
createName: state.createName,
// publishTime: state.publishTime,
startTime: 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,
orgId: state.orgId ? state.orgId[state.orgId.length - 1] : null,
};
axios({
method: "post",
url: "/report/boeu/router/exportCurrentRecord",
data: params,
responseType: "blob",
headers: {
token: Cookies.get("token"),
},
}).then((res) => {
if(res.data.status && res.data.status == 600){
message.error(res.data.status)
}else{
downLoad(res.data, "学习路径图详细信息.xlsx");
}
}),
(err) => {
message.error(err);
};
}
};
// 导出列表信息
const exportAllbtnz = async () => {
if (state.selectedRowKeys?.length > 0) {
axios({
method: "post",
url: "/report/boeu/router/exportList",
data: { routerIdList: state.selectedRowKeys },
responseType: "blob",
headers: {
token: Cookies.get("token"),
},
}).then((res) => {
downLoad(res.data, "学习路径图列表信息.xlsx");
}),
(err) => {
message.error(err);
};
} else {
const params = {
createName: state.createName,
// publishTime: state.publishTime,
startTime: 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,
orgId: state.orgId ? state.orgId[state.orgId.length - 1] : null,
};
axios({
method: "post",
url: "/report/boeu/router/exportList",
data: params,
responseType: "blob",
headers: {
token: Cookies.get("token"),
},
}).then((res) => {
downLoad(res.data, "学习路径图信息.xlsx");
}),
(err) => {
message.error(err);
};
}
};
onMounted(() => {
getOrgList();
state.tableLoading = true;
});
return {
exportAllbtnz,
onSelectChange,
exportbtnz,
reset,
getTableData,
...toRefs(state),
tableData,
columns,
changePagination,
dayjs,
searchData,
};
},
};
</script>
<style lang="scss">
.learningpathmap {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
.filter {
margin-left: 38px;
margin-right: 20px;
margin-top: 30px;
display: flex;
flex-wrap: wrap;
.select {
margin-right: 20px;
margin-bottom: 20px;
width: calc((100% - 76px - 240px) / 4);
}
.btnz {
padding: 0px 26px 0px 26px;
height: 38px;
background: rgba(64, 158, 255, 0);
border-radius: 8px;
border: 1px solid rgba(64, 158, 255, 1);
display: flex;
align-items: center;
justify-content: center;
margin-right: 14px;
flex-shrink: 0;
cursor: pointer;
.search {
background-size: 100%;
}
.btnzText {
font-size: 14px;
font-weight: 400;
color: rgba(64, 158, 255, 1);
line-height: 36px;
margin-left: 5px;
}
}
.btnzx {
padding: 0px 26px 0px 26px;
height: 38px;
background: #4ea6ff;
border-radius: 8px;
border: 1px solid rgba(64, 158, 255, 1);
display: flex;
align-items: center;
justify-content: center;
margin-right: 14px;
flex-shrink: 0;
cursor: pointer;
.search {
background-size: 100%;
}
.btnzText {
font-size: 14px;
font-weight: 400;
color: #ffffff;
line-height: 36px;
margin-left: 5px;
}
}
.btnzx1 {
.search {
width: 15px;
height: 17px;
background-image: url("../../assets/images/courseManage/search0.png");
}
}
.btnzx2 {
margin-right: 0px !important;
background: #4ea6ff;
.search {
width: 16px;
height: 18px;
background-image: url("../../assets/images/courseManage/reset0.png");
}
.btnzText {
color: white;
}
}
.btnzx1:hover {
background: rgba(64, 158, 255, 0.76);
.search {
background-image: url("../../assets/images/courseManage/search0.png");
}
.btnzText {
color: #ffffff;
}
}
.btnzx2:hover {
background: rgba(64, 158, 255, 0.76);
.search {
background-image: url("../../assets/images/courseManage/reset0.png");
}
.btnzText {
color: #ffffff;
}
}
.btnzx1:active,
.btnzx2:active {
background: #0982ff;
}
}
.tabbtnz {
width: 100%;
height: 40px;
display: flex;
justify-content: space-between;
.tab {
margin-left: 38px;
display: flex;
background: #ecf5ff;
height: 40px;
line-height: 40px;
border-radius: 8px;
.tabItem {
box-sizing: border-box;
padding: 0 18px;
cursor: pointer;
}
.tabActive {
box-sizing: border-box;
padding: 0 18px;
background: #387df7;
color: white;
border-radius: 8px;
cursor: pointer;
}
}
}
.btnzs {
display: flex;
margin-left: 38px;
// flex-wrap: wrap;
.btnz {
padding: 0px 26px 0px 26px;
height: 38px;
background: white;
border-radius: 8px;
border: 1px solid rgba(64, 158, 255, 1);
display: flex;
align-items: center;
cursor: pointer;
justify-content: center;
margin-right: 14px;
flex-shrink: 0;
.search {
background-size: 100%;
}
.btnzText {
font-size: 14px;
font-weight: 400;
color: #4ea6ff;
line-height: 36px;
margin-left: 5px;
}
}
.btnz3 {
margin-right: 0px;
background: #4ea6ff;
.search {
width: 17px;
height: 18px;
background-image: url("../../assets/images/courseManage/add0.png");
}
.btnzText {
color: #ffffff;
}
}
.btnz3:hover {
// background: rgba(64, 158, 255, 0.76);
background: rgba(64, 158, 255, 0.76);
}
.btnz3:active {
background: #0982ff;
}
}
.tableBox {
margin: 20px 38px 30px;
.ant-table-thead > tr > th {
background-color: #eff4fc;
}
}
.tableBox {
padding-bottom: 20px;
.pa {
width: 100%;
display: flex;
justify-content: center;
}
}
}
</style>