专业力必修提交

This commit is contained in:
Pengxiansen
2025-01-21 21:20:25 +08:00
parent 1f06c11bda
commit 3fdfe61062
6 changed files with 132 additions and 439 deletions

View File

@@ -1,15 +1,8 @@
<template>
<div class="growthpath">
<div class="filterItems">
<div class="select" style="width: 264px; height: 40px">
<OrgClass
v-model:value="organizationId"
v-model:name="organizationName"
:placeName="'请选择归属组织'"
></OrgClass>
</div>
<div class="select multi" style="min-width: 264px; height: 40px">
<PostSelectNew v-model:value="statusPost" multiple="multiple">
<PostSelectNew v-model:value="statusPost">
</PostSelectNew>
</div>
<div class="select multi" style="min-width: 181px; height: 40px">
@@ -63,7 +56,7 @@
type="link"
class="table_btn"
v-if="!record.isPublished && checkGrowthPer(record.permissions)"
@click="release(record)"
@click="releaseLearnPath(record)"
>发布</a-button
>
<a-button
@@ -160,38 +153,10 @@
<div class="bg_main">
<div class="bg_main_header">
<div class="bg_main_header_icon"></div>
<div>
{{
editId
? "编辑专业力必修"
: originGrowId
? "复制专业力必修"
: "创建专业力必修"
}}
</div>
<div>编辑专业力必修</div>
<div class="bg_main_header_close" @click="of_exit"></div>
</div>
<div class="bg_body">
<div class="bg_body_bt">
<div class="bg_body_bttext">
<div class="bg_body_btimg">
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div>
<span>归属组织</span>
</div>
<div class="bg_body_input">
<OrgClass
style="width: 384px"
v-model:value="organCreateId"
v-model:name="organCreateName"
:placeName="'请选择归属组织'"
:disabled="editId"
></OrgClass>
</div>
</div>
<div class="bg_body_bt">
<div class="bg_body_bttext">
<div class="bg_body_btimg">
@@ -266,7 +231,7 @@
</a-input-number>
</div>
</div>
<!-- <div class="bg_body_bt" style="align-items: flex-start;;">
<div class="bg_body_bt" style="align-items: flex-start">
<div class="bg_body_bttext">
<div class="bg_body_btimg">
<img
@@ -277,9 +242,31 @@
<span>匹配学员</span>
</div>
<div class="bg_body_input">
<a-radio-group v-model:value="matStudens">
<a-radio :value="1" style="margin-bottom: 15px;">自动匹配学员</a-radio><br/>
<a-radio :value="2">不自动匹配学员</a-radio>
<a-radio-group v-model:value="matchRules">
<div style="display: flex">
<a-radio :value="1" style="margin-bottom: 15px"
>自动匹配学员</a-radio
><br />
<a-radio :value="2">不自动匹配学员</a-radio>
</div>
</a-radio-group>
</div>
</div>
<!-- <div class="bg_body_bt" style="align-items: flex-start">
<div class="bg_body_bttext">
<div class="bg_body_btimg">
<img
src="@/assets/images/coursewareManage/asterisk.png"
alt=""
/>
</div>
<span>选择模板</span>
</div>
<div class="bg_body_input">
<a-radio-group v-model:value="matchRules">
<a-radio :value="1" style="margin-bottom: 15px">路径图</a-radio
><br />
<a-radio :value="2">任务列表</a-radio>
</a-radio-group>
</div>
</div> -->
@@ -319,67 +306,6 @@
</div>
</div>
</a-modal>
<!-- 发布弹窗 -->
<a-modal
v-model:visible="pub"
:title="null"
:footer="null"
:closable="false"
wrapClassName="pub"
width="679px"
height="437px"
>
<div
class="modalHeader"
style="
width: 100%;
height: 68px;
display: flex;
align-items: center;
justify-content: space-between;
"
>
<div class="headerLeft" style="margin-left: 32px">
<span style="width: 15px; height: 15px"
><img src="../../assets/images/taskpage/pub.png"
/></span>
<span class="headerLeftText" style="font-size: 16px; margin-left: 10px"
>专业力必修发布</span
>
</div>
<div style="cursor: pointer; margin-right: 32px" @click="closePub">
<img
style="width: 22px; height: 22px"
src="../../assets/images/basicinfo/close22.png"
/>
</div>
</div>
<div class="modalMain">
<div class="projectname">{{ pubData?.growName || "" }}</div>
<div class="projectbox">
<div class="promessage">
<div class="messageme">任务信息</div>
<div class="messagege">共{{ pubData?.taskNum || 0 }}个任务</div>
</div>
<div class="stumessage">
<div class="messageme1">学员信息</div>
<div class="messagege1">共{{ pubData?.stuNum || 0 }}名学员</div>
</div>
</div>
<div class="pubtn">
<a-button class="pubtn2" @click="closePub" style="margin-right: 32px"
>取消</a-button
>
<a-button class="pubtn2" @click="releaseLearnPath(pubData?.taskNum)"
>发布</a-button
>
</div>
</div>
<!-- 加载动画 -->
<div class="aeLoading" :style="{ display: pubLoading ? 'flex' : 'none' }">
<a-spin :spinning="pubLoading" />
</div>
</a-modal>
<UpdateRecord v-model:Avisible="Avisible" />
</template>
@@ -390,7 +316,7 @@ import { message } from "ant-design-vue";
import dialog from "@/utils/dialog";
import { DownOutlined } from "@ant-design/icons-vue";
import OrgClass from "@/components/growthpath/OrgClass";
import PostSelectNew from "@/components/growthpath/PostSelectNew";
import PostSelectNew from "@/components/growthpath/PostSelect";
import RankSelect from "@/components/growthpath/RankSelect";
import OfficeSelect from "@/components/growthpath/OfficeSelect";
import { checkGrowthPer } from "@/utils/utils";
@@ -407,6 +333,8 @@ import {
getPublishInfo,
getCopyData,
copyCreate,
published,
updatePostInfomation,
} from "@/api/growthpath";
export default {
name: "growthpath",
@@ -433,15 +361,7 @@ export default {
band: null,
statusOffices: null,
Avisible: false,
pubLoading: false,
pubId: "",
pubData: {},
pub: false,
bg_check: false,
organizationId: null,
organizationName: null,
organCreateId: null, //创建路径
organCreateName: null,
statusPostCreate: [],
statusRankCreate: [],
courseNum: "",
@@ -452,7 +372,6 @@ export default {
statusPosts: null,
statusPostsIds: null,
editId: null,
originGrowId: null,
statusPostList: null,
statusRank: [],
statusOffice: null,
@@ -467,43 +386,32 @@ export default {
pageSize: 10,
dataList: [],
});
const closePub = () => {
state.pub = false;
};
const releaseLearnPath = (item) => {
if (item == 0) {
message.error("请先添加任务");
return;
}
handleGrowth({
growId: state.pubId,
type: 1,
})
.then((res) => {
if (res.data.code == 200) {
message.success("发布成功");
listDatas();
}
closePub();
})
.catch((err) => {
closePub();
message.error(err.data.msg);
});
dialog({
content: "是否发布该条数据",
ok: () => {
published({
growId: item.id,
})
.then((res) => {
if (res.data.code == 200) {
message.success("发布成功");
listDatas();
} else {
message.error(err.data.msg);
}
})
.catch((err) => {
message.error(err.data.msg);
});
},
});
};
const statusValues = ref([
{ value: "1", label: "已发布" },
{ value: "0", label: "未发布" },
]);
const columns = ref([
{
title: "归属组织",
dataIndex: "organizationName",
key: "organizationName",
width: 150,
align: "center",
ellipsis: true,
},
{
title: "标准岗位",
dataIndex: "positionName",
@@ -530,11 +438,6 @@ export default {
ellipsis: true,
customRender: ({ record }) => {
return record.isPublished ? "已发布" : "未发布";
if (record.isPublished == "0") {
return "未发布";
} else {
return "已发布";
}
},
},
{
@@ -562,7 +465,6 @@ export default {
pageNum: state.pageNum,
pageSize: state.pageSize,
isPublished: state.statusValue,
organizationId: state.organizationId, //组织
positionIdList: state.statusPostMaps.map((item) => item.id), //岗位
bandIdList: state.statusRank, //职级
};
@@ -579,19 +481,15 @@ export default {
});
};
const searchList = () => {
store.commit("setShouInclude", ["growthpath"]);
state.pageNum = 1;
listDatas();
};
const resetList = () => {
state.statusValue = null;
state.organizationId = null;
state.organizationName = null;
state.statusPostMaps = [];
state.statusPost = null;
state.statusRank = [];
state.pageNum = 1;
store.commit("setShouInclude", []);
listDatas();
};
const changePagination = (page, pageSize) => {
@@ -599,102 +497,45 @@ export default {
state.pageSize = pageSize;
listDatas();
};
//发布
const release = (record) => {
state.pubId = record.id;
state.pub = true;
state.pubLoading = true;
getPublishInfo({ growId: record.id })
.then((res) => {
if (res.data.code == 200) {
state.pubData = res.data.data;
}
state.pubLoading = false;
})
.catch((err) => {
state.pubLoading = false;
});
};
//编辑
const editPath = (record) => {
getEditData({ growId: record.id }).then((res) => {
if (res.data.code == 200) {
state.editId = res.data.data.id;
state.statusPosts = res.data.data.positionId;
state.organCreateId = res.data.data.organizationId;
state.statusOffices = res.data.data.qualsLevelCode;
state.courseNum = res.data.data.electiveNum;
state.pathWays = res.data.data.remark;
state.band = res.data.data.bandCodes;
}
state.bg_check = true;
});
state.editId = record.id;
state.statusPosts = record.stdPosition;
state.statusOffices = record.qualsLevelCode;
state.courseNum = record.electivesCompletedNum;
state.pathWays = record.description;
state.band = record.bandCodes;
state.bg_check = true;
};
// 确定
const confirm = () => {
if (state.organCreateId == "" || state.organCreateId == null) {
return message.error("请选择归属组织");
}
if (state.statusPosts == "" || state.statusPosts == null) {
return message.error("请选择岗位");
}
if (state.statusOffices == "" || state.statusRanks == null) {
return message.error("请选择任职资格等级");
}
if (state.originGrowId) {
copyCreate({
positionId: state.statusPosts,
organizationId: state.organCreateId,
qualsLevelCode: state.statusOffices,
electiveNum: state.courseNum,
remark: state.pathWays,
id: state.editId ? state.editId : null,
const params = {
stdPosition: state.statusPosts,
qualsLevelCode: state.statusOffices,
electivesCompletedNum: state.courseNum,
description: state.pathWays,
id: state.editId ? state.editId : null,
};
updatePostInfomation(params)
.then((res) => {
if (res.data.code == 200) {
if (res.data.data.flag == 1) {
message.warning("自动匹配学员为异步添加请稍后手动刷新学员");
}
message.success("保存成功");
listDatas()
}
})
.then((res) => {
if (res.data.code == 200) {
if (res.data.data.flag == 1) {
message.warning("自动匹配学员为异步添加请稍后手动刷新学员");
}
manage({ id: res.data.data, permissions: "15,16,17" });
message.success("复制成功");
store.commit("setShouInclude", []);
// listDatas()/
}
})
.catch((err) => {
message.error(err.data.msg);
});
} else {
const params = {
positionId: state.statusPosts,
organizationId: state.organCreateId,
qualsLevelCode: state.statusOffices,
electiveNum: state.courseNum,
remark: state.pathWays,
id: state.editId ? state.editId : null,
};
addEdit(params)
.then((res) => {
if (res.data.code == 200) {
if (res.data.data.flag == 1) {
message.warning("自动匹配学员为异步添加请稍后手动刷新学员");
}
if (params.id) {
message.success("编辑成功");
manage({ id: res.data.data, permissions: "15,16,17" });
} else {
message.success("创建成功");
manage({ id: res.data.data, permissions: "15,16,17" });
}
store.commit("setShouInclude", []);
// listDatas()
}
})
.catch((err) => {
message.error(err.data.msg);
});
}
.catch((err) => {
message.error(err.data.msg);
});
// of_exit()
};
const of_exit = () => {
@@ -705,14 +546,12 @@ export default {
state.statusRanks = [];
state.rankList = [];
state.bandLists = [];
state.organCreateId = null;
state.organCreateName = null;
state.courseNum = "";
// state.matStudens = ''
state.matchRules = ''
state.pathWays = "";
state.bg_check = false;
state.editId = null;
state.originGrowId = null;
};
// 创建路径
// 管理
@@ -760,11 +599,9 @@ export default {
of_exit,
confirm,
editPath,
release,
manage,
updateList,
withdraw,
closePub,
releaseLearnPath,
};
},
@@ -783,157 +620,7 @@ export default {
::v-deep .ant-select-multiple .ant-select-selection-item {
line-height: 26px !important;
}
.pub {
.ant-modal {
.ant-modal-body {
padding: 0;
.modalHeader {
background: linear-gradient(
rgba(78, 166, 255, 0.2) 0%,
rgba(78, 166, 255, 0) 100%
);
}
.modalMain {
.projectname {
color: rgba(79, 81, 86, 1);
font-size: 14px;
line-height: 36px;
margin-left: 62px;
font-weight: 500;
}
.projecttime {
margin-left: 221px;
font-size: 14px;
.timeti {
color: rgba(153, 155, 163, 1);
line-height: 36px;
}
.timeme {
color: rgba(79, 81, 86, 1);
line-height: 36px;
}
}
.projectbox {
margin-top: 26px;
display: flex;
justify-content: center;
.promessage {
width: 280px;
height: 110px;
background: linear-gradient(
180deg,
rgba(254, 243, 221, 1),
rgba(255, 250, 240, 1)
);
border-radius: 10px;
margin-right: 7px;
font-size: 14px;
.messageme {
color: rgba(255, 182, 78, 1);
line-height: 36px;
margin-top: 17px;
margin-left: 30px;
}
.messagege {
color: rgba(153, 155, 163, 1);
margin-left: 30px;
}
}
.stumessage {
width: 280px;
height: 110px;
background: linear-gradient(
180deg,
rgba(221, 234, 255, 1),
rgba(240, 248, 254, 1)
);
border-radius: 10px;
font-size: 14px;
.messageme1 {
color: rgba(78, 166, 255, 1);
line-height: 36px;
margin-top: 17px;
margin-left: 30px;
}
.messagege1 {
color: rgba(153, 155, 163, 1);
margin-left: 30px;
}
}
}
.send {
margin-top: 30px;
margin-left: 61px;
.sendtext {
margin-left: 11px;
color: rgba(109, 117, 132, 1);
font-size: 14px;
}
}
.ckb {
margin-top: 20px;
margin-left: 62px;
.sendpeo {
color: rgba(109, 117, 132, 1);
font-size: 14px;
}
.ant-checkbox-inner {
border-radius: 4px;
}
}
.pubtn {
display: flex;
justify-content: center;
margin-top: 25px;
//margin-bottom: 29px;
.pubtn1 {
width: 100px;
height: 40px;
margin-right: 16px;
margin-bottom: 29px;
border: 1px solid #4ea6ff;
border-radius: 4px;
color: rgba(78, 166, 255, 1);
font-size: 14px;
//line-height: 36px;
align-items: center;
background: rgba(255, 255, 255, 1);
}
.pubtn2 {
width: 100px;
height: 40px;
margin-bottom: 29px;
border: 1px solid #4ea6ff;
border-radius: 4px;
color: #ffffff;
font-size: 14px;
align-items: center;
//line-height: 36px;
background: #4ea6ff;
}
}
}
}
}
}
.growthpath {
width: 100%;
.filterItems {