mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/learning-system-portal.git
synced 2025-12-08 18:36:43 +08:00
Compare commits
3 Commits
20251121-f
...
20260918-s
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f80494bf41 | ||
|
|
f4fad98724 | ||
|
|
0102d476a7 |
@@ -34,9 +34,48 @@ const userRsSginupCourse = function(data){
|
|||||||
return ajax.postJson(baseURL,'/stu/project/stuCancelEnrollment',data);
|
return ajax.postJson(baseURL,'/stu/project/stuCancelEnrollment',data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取学员指定新员工转正项目的bpm审批状况
|
||||||
|
* {studentId,pid}
|
||||||
|
* add by zhengsongbo on 2025-07-12
|
||||||
|
*/
|
||||||
|
const getStudntProjectInfo = function(pid){
|
||||||
|
return ajax.get(baseURL,`/stu/project/queryStudentInfo?pid=${pid}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* BPM项目:立即报名
|
||||||
|
* pid
|
||||||
|
* add by zhengsongbo on 2025-07-13
|
||||||
|
*/
|
||||||
|
const signUpBpmProjectNow = function(pid){
|
||||||
|
return ajax.get(baseURL,`/stu/project/signUpBpmProjectNow?pid=${pid}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* BPM项目:重新报名
|
||||||
|
* pid
|
||||||
|
* add by zhengsongbo on 2025-07-13
|
||||||
|
*/
|
||||||
|
const signUpBpmProjectAgain = function(pid){
|
||||||
|
return ajax.get(baseURL,`/stu/project/signUpBpmProjectAgain?pid=${pid}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 社招新员工
|
||||||
|
* add by zhengsongbo on 2025-07-14
|
||||||
|
*/
|
||||||
|
const getNewSocialHireProject = function(){
|
||||||
|
return ajax.get(baseURL,'/stu/project/getNewSocialHireProject');
|
||||||
|
}
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
getTaskNum,
|
getTaskNum,
|
||||||
userTaskList,
|
userTaskList,
|
||||||
userDeleteStudy,
|
userDeleteStudy,
|
||||||
userRsSginupCourse
|
userRsSginupCourse,
|
||||||
|
getStudntProjectInfo,
|
||||||
|
signUpBpmProjectNow,
|
||||||
|
signUpBpmProjectAgain,
|
||||||
|
getNewSocialHireProject
|
||||||
}
|
}
|
||||||
|
|||||||
BIN
src/assets/images/project/title-bg.png
Normal file
BIN
src/assets/images/project/title-bg.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 48 KiB |
@@ -137,6 +137,30 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<!-- "社招新员工转正培训项目简介"弹框 -->
|
||||||
|
<el-dialog width="733px"
|
||||||
|
:visible.sync="projectDialogVisible"
|
||||||
|
:append-to-body="true"
|
||||||
|
>
|
||||||
|
<div class="el-dialog__header">
|
||||||
|
<span style="font-size: 35px; font-weight: bold; color: white; margin: 60px;line-height: 100px;">项目简介</span>
|
||||||
|
</div>
|
||||||
|
<div style="height: 280px;margin: 0px 40px 0px 40px;">
|
||||||
|
<span v-html="studentInfo.introduction"></span>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span style="font-size: 14px; margin: 40px;" v-if="studentInfo.bpmStatus!=0">审批编号:<span style="font-weight: bold;">{{studentInfo.bpmNumber}}</span></span>
|
||||||
|
<br/>
|
||||||
|
<span style="font-size: 14px; margin: 40px;">审批状态:<span style="font-weight: bold; color: #efbf82">{{studentInfo.bpmStatusName}}</span></span>
|
||||||
|
</div>
|
||||||
|
<template #footer>
|
||||||
|
<span class="dialog-footer">
|
||||||
|
<el-button type="primary" @click="signUpNow" v-if="studentInfo.bpmStatus==0">立即报名</el-button>
|
||||||
|
<el-button v-if="studentInfo.bpmStatus==1" disabled>审批中</el-button>
|
||||||
|
<el-button type="primary" @click="signUpAgain" v-if="studentInfo.bpmStatus==3">重新报名</el-button>
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
<popup></popup><yearMedal></yearMedal>
|
<popup></popup><yearMedal></yearMedal>
|
||||||
</div>
|
</div>
|
||||||
@@ -144,6 +168,7 @@
|
|||||||
<script>
|
<script>
|
||||||
import { mapGetters, mapActions } from 'vuex';
|
import { mapGetters, mapActions } from 'vuex';
|
||||||
import apiMessage from '@/api/system/message.js';
|
import apiMessage from '@/api/system/message.js';
|
||||||
|
import apiManage from '@/api/manage/manage.js';
|
||||||
import popup from '@/components/AlertPopup.vue';
|
import popup from '@/components/AlertPopup.vue';
|
||||||
import yearMedal from '@/components/Popup/China2023.vue';
|
import yearMedal from '@/components/Popup/China2023.vue';
|
||||||
import apiBoeCourse from '@/api/boe/course.js';
|
import apiBoeCourse from '@/api/boe/course.js';
|
||||||
@@ -204,6 +229,8 @@ export default {
|
|||||||
keyword: '',
|
keyword: '',
|
||||||
isTiao: false,
|
isTiao: false,
|
||||||
sex:'',
|
sex:'',
|
||||||
|
projectDialogVisible: false,
|
||||||
|
studentInfo: {},
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
@@ -214,7 +241,26 @@ export default {
|
|||||||
//this.loadPopupConfig();
|
//this.loadPopupConfig();
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
//BPM项目:立即报名
|
||||||
|
signUpNow(){
|
||||||
|
const pid = this.studentInfo.projectId;
|
||||||
|
apiManage.signUpBpmProjectNow(pid).then(res=>{
|
||||||
|
if (res.status == 200){
|
||||||
|
this.projectDialogVisible = false;
|
||||||
|
this.$message.success('报名成功')
|
||||||
|
}else {
|
||||||
|
this.projectDialogVisible = false;
|
||||||
|
this.$message.error('报名失败')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
//BPM项目:重新报名
|
||||||
|
signUpAgain(){
|
||||||
|
const pid = this.studentInfo.projectId;
|
||||||
|
apiManage.signUpBpmProjectAgain(pid).then(res=>{
|
||||||
|
this.projectDialogVisible = false;
|
||||||
|
})
|
||||||
|
},
|
||||||
setCurIdentity(iden){
|
setCurIdentity(iden){
|
||||||
this.$store.dispatch('SetCurIdentity',iden);
|
this.$store.dispatch('SetCurIdentity',iden);
|
||||||
},
|
},
|
||||||
@@ -255,7 +301,29 @@ export default {
|
|||||||
if (val === "four") {
|
if (val === "four") {
|
||||||
window.open("https://m.qingxuetang.com/x/?appId=qxtcorp306130")
|
window.open("https://m.qingxuetang.com/x/?appId=qxtcorp306130")
|
||||||
// this.$emit('showClass',true)
|
// this.$emit('showClass',true)
|
||||||
} else {
|
} else if(val === "five"){//new社招新员工项目(需BPM审批报名--唯一,如果不唯一,取发布时间最新的)
|
||||||
|
let studentPath = process.env.VUE_APP_STUDENT_PATH;
|
||||||
|
apiManage.getNewSocialHireProject().then(res=>{
|
||||||
|
this.studentInfo = res.data;
|
||||||
|
const bpmStatus = this.studentInfo.bpmStatus;
|
||||||
|
if (bpmStatus == 0){//未报名--则弹窗含“立即报名”
|
||||||
|
this.studentInfo.bpmStatusName="未报名";
|
||||||
|
this.projectDialogVisible=true;
|
||||||
|
|
||||||
|
}else if (bpmStatus == 1){//已报名待审核(审批中)--仅弹窗展示
|
||||||
|
this.studentInfo.bpmStatusName="审批中";
|
||||||
|
this.projectDialogVisible=true;
|
||||||
|
|
||||||
|
}else if (bpmStatus == 2){//bpm报名审核通过,则直接进入项目进行学习
|
||||||
|
let params = encodeURIComponent('projectId=' + this.studentInfo.projectId);
|
||||||
|
this.$router.push('/forward?to=' + studentPath + '/projectdetails¶ms=' + params);
|
||||||
|
}else if(bpmStatus == 3){//已拒绝--则弹窗含“重新报名”
|
||||||
|
this.studentInfo.bpmStatusName="已拒绝(含个人撤回)";
|
||||||
|
this.projectDialogVisible=true;
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} else {
|
||||||
let urlPre = window.location.protocol + "//" + window.location.host;
|
let urlPre = window.location.protocol + "//" + window.location.host;
|
||||||
// process.env.VUE_APP_BOE_WEB_URL
|
// process.env.VUE_APP_BOE_WEB_URL
|
||||||
let obj = {
|
let obj = {
|
||||||
@@ -264,7 +332,7 @@ export default {
|
|||||||
two: urlPre + "/grow180/login",
|
two: urlPre + "/grow180/login",
|
||||||
three: this.webBaseUrl + "/study/index?study=1",
|
three: this.webBaseUrl + "/study/index?study=1",
|
||||||
// four: 'https://m.qingxuetang.com/x/?appId=qxtcorp306130',
|
// four: 'https://m.qingxuetang.com/x/?appId=qxtcorp306130',
|
||||||
five: urlPre + "/boe/new-employee/index.html",
|
// five: urlPre + "/boe/new-employee/index.html", //old社招新员工 zhengsongbo 注释掉 2025-07-14
|
||||||
six: urlPre + "/web/contributor/index",
|
six: urlPre + "/web/contributor/index",
|
||||||
seven: this.webBaseUrl + '/grateful/index'
|
seven: this.webBaseUrl + '/grateful/index'
|
||||||
};
|
};
|
||||||
@@ -598,4 +666,27 @@ text-align: center;
|
|||||||
margin-right: 8px;
|
margin-right: 8px;
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
}
|
}
|
||||||
|
/* 项目简介 弹窗 ---start--- */
|
||||||
|
::v-deep .el-dialog__header {
|
||||||
|
padding: 0 !important;
|
||||||
|
}
|
||||||
|
::v-deep .el-dialog {
|
||||||
|
border-radius: 3% 3% 1% 1%;
|
||||||
|
}
|
||||||
|
.el-dialog__header {
|
||||||
|
height: 100px;
|
||||||
|
margin: 0 !important;
|
||||||
|
background-image: url('../assets/images/project/title-bg.png');
|
||||||
|
background-size: 100% 100%; /* 完全填充 */
|
||||||
|
display: block; /* 避免行内元素空隙 */
|
||||||
|
}
|
||||||
|
::v-deep .el-dialog__title {
|
||||||
|
margin: 0 !important;
|
||||||
|
padding: 0 !important;
|
||||||
|
}
|
||||||
|
::v-deep .el-dialog__body {
|
||||||
|
margin: 0 !important;
|
||||||
|
padding: 0 !important;
|
||||||
|
}
|
||||||
|
/* 项目简介 弹窗 ---end--- */
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -486,6 +486,32 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
<!-- "新员工项目简介""弹框 -->
|
||||||
|
<el-dialog width="733px" title="项目简介" top="80px"
|
||||||
|
:visible.sync="projectDialogVisible"
|
||||||
|
class="custom-class">
|
||||||
|
<div slot="header" class="el-dialog__header">
|
||||||
|
</div>
|
||||||
|
<div style="height: 300px;margin: 20px 40px 0px 40px;">
|
||||||
|
<span v-html="studentInfo.introduction"></span>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<span style="margin: 40px; font-size: 14px" v-if="studentInfo.bpmStatus!=0">
|
||||||
|
审批编号:<span style="font-weight: bold;">{{studentInfo.bpmNumber}}</span>
|
||||||
|
</span>
|
||||||
|
<br/>
|
||||||
|
<span style="margin: 40px; font-size: 14px">
|
||||||
|
审批状态:<span v-html="studentInfo.bpmStatusName"></span>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<template #footer>
|
||||||
|
<span class="dialog-footer">
|
||||||
|
<el-button type="primary" @click="signUpNow" v-if="studentInfo.bpmStatus==0">立即报名</el-button>
|
||||||
|
<el-button v-if="studentInfo.bpmStatus==1" disabled>审批中</el-button>
|
||||||
|
<el-button type="primary" @click="signUpAgain" v-if="studentInfo.bpmStatus==3">重新报名</el-button>
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -507,6 +533,7 @@ import apiTeacher from "@/api/modules/teacher.js";
|
|||||||
import apiUser from "@/api/system/user.js";
|
import apiUser from "@/api/system/user.js";
|
||||||
import scene from "@/api/modules/scene.js";
|
import scene from "@/api/modules/scene.js";
|
||||||
import apiUserbasic from "@/api/boe/userbasic.js";
|
import apiUserbasic from "@/api/boe/userbasic.js";
|
||||||
|
import apiManage from '@/api/manage/manage.js';
|
||||||
import interactBar from "@/components/Portal/interactBar.vue";
|
import interactBar from "@/components/Portal/interactBar.vue";
|
||||||
import courseImage from "@/components/Course/courseImage.vue";
|
import courseImage from "@/components/Course/courseImage.vue";
|
||||||
import { courseType, getType, toScore, formatDate, formatUserNumber, formatDateByFmt } from "@/utils/tools.js";
|
import { courseType, getType, toScore, formatDate, formatUserNumber, formatDateByFmt } from "@/utils/tools.js";
|
||||||
@@ -619,6 +646,7 @@ export default {
|
|||||||
twoId: '',
|
twoId: '',
|
||||||
count: 0,//分页总条条数
|
count: 0,//分页总条条数
|
||||||
showUClass: false,
|
showUClass: false,
|
||||||
|
projectDialogVisible: false,
|
||||||
ctypeList: [
|
ctypeList: [
|
||||||
{ type: 1, id: 20, name: '录播课', checked: false },
|
{ type: 1, id: 20, name: '录播课', checked: false },
|
||||||
{ type: 1, id: 30, name: '线下课', checked: false },
|
{ type: 1, id: 30, name: '线下课', checked: false },
|
||||||
@@ -629,7 +657,7 @@ export default {
|
|||||||
twoList: [], //二级分类{type:12}
|
twoList: [], //二级分类{type:12}
|
||||||
threeList: [],//三级分类{type:13}
|
threeList: [],//三级分类{type:13}
|
||||||
searching: false,//是否正在搜索中
|
searching: false,//是否正在搜索中
|
||||||
|
studentInfo: {},
|
||||||
resonimg: {},
|
resonimg: {},
|
||||||
formatDate,
|
formatDate,
|
||||||
formatNum: formatUserNumber,
|
formatNum: formatUserNumber,
|
||||||
@@ -769,6 +797,24 @@ export default {
|
|||||||
// window.removeEventListener("scroll", this.handleScroll);
|
// window.removeEventListener("scroll", this.handleScroll);
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
//BPM项目:立即报名
|
||||||
|
signUpNow(){
|
||||||
|
const pid = this.studentInfo.projectId;
|
||||||
|
apiManage.signUpBpmProjectNow(pid).then(res=>{
|
||||||
|
this.projectDialogVisible = false;
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
//BPM项目:重新报名
|
||||||
|
signUpAgain(){
|
||||||
|
const pid = this.studentInfo.projectId;
|
||||||
|
const studentId=this.studentInfo.studentId;
|
||||||
|
const data = {"pid":pid,"studentId":studentId};
|
||||||
|
apiManage.signUpBpmProjectAgain(data).then(res=>{
|
||||||
|
this.projectDialogVisible = false;
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
// 改变分页
|
// 改变分页
|
||||||
currentChange(val) {
|
currentChange(val) {
|
||||||
this.course.pageIndex = val
|
this.course.pageIndex = val
|
||||||
@@ -1216,9 +1262,33 @@ export default {
|
|||||||
let params = encodeURIComponent('courseId=' + courseId);
|
let params = encodeURIComponent('courseId=' + courseId);
|
||||||
this.$router.push('/forward?to=' + manageApi + '/stu/project/redirectDetail¶ms=' + params);
|
this.$router.push('/forward?to=' + manageApi + '/stu/project/redirectDetail¶ms=' + params);
|
||||||
} else if (item.type == 40) { //学习项目
|
} else if (item.type == 40) { //学习项目
|
||||||
let params = encodeURIComponent('projectId=' + courseId);
|
if (item.bpmFlag == 1) { //是否是需要BPM审批的项目(新员工转正项目)
|
||||||
this.$router.push('/forward?to=' + studentPath + '/projectdetails¶ms=' + params);
|
//检查当前用户是否已经报名该项目(“未报名”、“审批中”和“审核拒绝”--则弹窗!--“立即报名”和“重新报名"调BPM接口)
|
||||||
//this.$router.push('/forward?to='+manageApi+'/stu/project/redirectDetail¶ms='+params);
|
apiManage.getStudntProjectInfo(courseId).then(res=>{
|
||||||
|
this.studentInfo = res.data;
|
||||||
|
const bpmStatus = this.studentInfo.bpmStatus;
|
||||||
|
if (bpmStatus == 0){//未报名--则弹窗含“立即报名”
|
||||||
|
this.projectDialogVisible=true;
|
||||||
|
this.studentInfo.bpmStatusName="<span style='color: #ddc507;font-weight: bold;'>未报名</span>";
|
||||||
|
|
||||||
|
}else if (bpmStatus == 1){//已报名待审核(审批中)--仅弹窗展示
|
||||||
|
this.projectDialogVisible=true;
|
||||||
|
this.studentInfo.bpmStatusName="<span style='color: #ddc507;font-weight: bold;'>审批中</span>";
|
||||||
|
|
||||||
|
}else if (bpmStatus == 2){//bpm报名审核通过,则直接进入项目进行学习
|
||||||
|
let params = encodeURIComponent('projectId=' + courseId);
|
||||||
|
this.$router.push('/forward?to=' + studentPath + '/projectdetails¶ms=' + params);
|
||||||
|
}else if(bpmStatus == 3){//已拒绝--则弹窗含“重新报名”
|
||||||
|
this.projectDialogVisible=true;
|
||||||
|
this.studentInfo.bpmStatusName="<span style='color: red;font-weight: bold;'>已拒绝(含个人撤回)</span>";
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}else {
|
||||||
|
let params = encodeURIComponent('projectId=' + courseId);
|
||||||
|
this.$router.push('/forward?to=' + studentPath + '/projectdetails¶ms=' + params);
|
||||||
|
//this.$router.push('/forward?to='+manageApi+'/stu/project/redirectDetail¶ms='+params);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (item.type == 10) {
|
if (item.type == 10) {
|
||||||
@@ -2421,4 +2491,31 @@ console.log(res.result.list,'data')
|
|||||||
|
|
||||||
.option-active {
|
.option-active {
|
||||||
color: #387DF7;
|
color: #387DF7;
|
||||||
}</style>
|
}
|
||||||
|
/* 项目简介 方法一:外部 CSS 类 */
|
||||||
|
::v-deep.el-dialog {
|
||||||
|
border-radius: 3% 3% 1% 1%;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
::v-deep.custom-class .el-dialog__header {
|
||||||
|
height: 100px;
|
||||||
|
margin: 0 !important;
|
||||||
|
padding: 0 !important;
|
||||||
|
background-image: url('../../../assets/images/project/title-bg.png');
|
||||||
|
background-size: 100% 100%; /* 完全填充 */
|
||||||
|
display: block; /* 避免行内元素空隙 */
|
||||||
|
}
|
||||||
|
::v-deep.custom-class .el-dialog__header .el-dialog__title {
|
||||||
|
padding: 0 !important;
|
||||||
|
font-size: 35px;
|
||||||
|
font-weight: bold;
|
||||||
|
color: white;
|
||||||
|
margin: 60px;
|
||||||
|
line-height: 100px;
|
||||||
|
}
|
||||||
|
::v-deep.custom-class .el-dialog__body {
|
||||||
|
margin: 0 !important;
|
||||||
|
padding: 0 !important;
|
||||||
|
}
|
||||||
|
/* ---end--- */
|
||||||
|
</style>
|
||||||
|
|||||||
Reference in New Issue
Block a user