Merge remote-tracking branch 'origin/develop' into develop

# Conflicts:
#	src/views/courselibrary/CoursewareManage.vue
#	src/views/learningpath/LearningPath.vue
#	src/views/learningpath/LevelAdd.vue
This commit is contained in:
yuping
2023-02-01 20:25:12 +08:00
7 changed files with 252 additions and 117 deletions

View File

@@ -2,7 +2,7 @@
* @Author: lixg lixg@dongwu-inc.com * @Author: lixg lixg@dongwu-inc.com
* @Date: 2022-11-04 22:45:31 * @Date: 2022-11-04 22:45:31
* @LastEditors: lixg lixg@dongwu-inc.com * @LastEditors: lixg lixg@dongwu-inc.com
* @LastEditTime: 2023-01-10 17:38:43 * @LastEditTime: 2023-02-01 11:07:17
* @FilePath: /fe-manage/src/api/index1.js * @FilePath: /fe-manage/src/api/index1.js
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
*/ */
@@ -190,4 +190,4 @@ export const getImportStatus = (uuid) => http.get('/admin/student/getImportStatu
// 面授课导入学员 // 面授课导入学员
export const FaceTeachImportStudent = (obj) => http.post('/admin/student/importStudent', obj, { headers: { "Content-Type": "multipart/form-data" } }) export const FaceTeachImportStudent = (obj) => http.post('/admin/student/importStudent', obj, { headers: { "Content-Type": "multipart/form-data" } })
//成绩录入 //成绩录入
export const updateStudent = (obj) => http.post('/admin/student/updateStudent', obj) export const updateStudent = (obj) => http.post('/admin/student/homeWorkScoreEntry', obj)

View File

@@ -2,7 +2,7 @@
* @Author: lixg lixg@dongwu-inc.com * @Author: lixg lixg@dongwu-inc.com
* @Date: 2022-12-20 17:00:37 * @Date: 2022-12-20 17:00:37
* @LastEditors: lixg lixg@dongwu-inc.com * @LastEditors: lixg lixg@dongwu-inc.com
* @LastEditTime: 2023-01-31 15:51:36 * @LastEditTime: 2023-01-31 16:14:39
* @FilePath: /fe-manage/src/components/student/ChangeLevelModal.vue * @FilePath: /fe-manage/src/components/student/ChangeLevelModal.vue
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
--> -->
@@ -92,3 +92,124 @@ const changeGroup = (item) => {
console.log("换组", item); console.log("换组", item);
}; };
</script> </script>
<style lang="scss">
.changeModal {
.ant-modal {
width: 549px !important;
height: 245px !important;
.ant-modal-close-x {
display: none;
}
.ant-modal-content {
width: 549px !important;
height: 245px !important;
.ant-modal-body {
padding: 0 !important;
width: 549px !important;
height: 245px !important;
.con {
// background-color: #bfa;
width: 100%;
height: 100%;
.header {
width: 100%;
display: flex;
height: 68px;
position: relative;
justify-content: center;
background: linear-gradient(
rgba(78, 166, 255, 0.2) 0%,
rgba(78, 166, 255, 0) 100%
);
.inhe {
width: 80%;
height: 100%;
display: flex;
justify-content: space-between;
align-items: center;
.mod {
left: 30px;
top: 27px;
position: absolute;
width: 18px;
height: 17px;
background-image: url(../../assets/images/leveladd/mod.png);
}
.tz {
color: #000000;
font-weight: 400;
font-size: 16px;
}
.mg {
width: 20px;
height: 20px;
background-image: url(../../assets/images/basicinfo/close22.png);
background-size: 100% 100%;
cursor: pointer;
}
}
}
.mid {
width: 100%;
display: flex;
height: 100%;
justify-content: center;
.inher {
width: 80%;
height: 100%;
.cur {
color: #6f6f6f;
font-size: 14px;
}
.select {
margin-top: 10px;
}
.btn {
width: 100%;
display: flex;
justify-content: center;
margin-top: 30px;
.sameb {
width: 100px;
height: 40px;
font-size: 14px;
border-radius: 8px;
}
.btn1 {
color: #4ea6ff;
background: #ffffff;
border: 1px solid #4ea6ff;
}
.btn2 {
margin-left: 16px;
border: 0;
color: #ffffff;
background: #4ea6ff;
}
}
}
}
}
}
}
}
}
</style>

View File

@@ -162,10 +162,9 @@
<div class="btn4_tit" @click="showEScoreModal"> <div class="btn4_tit" @click="showEScoreModal">
<span>批量录入成绩</span> <span>批量录入成绩</span>
</div> </div>
<!--2023-1-12 隐藏 后面放开 --> <div class="btn4_op1" @click="updateStatus(1)">
<!-- <div class="btn4_op1" @click="updateStatus(1)">
<span>批量结业</span> <span>批量结业</span>
</div> --> </div>
<div class="btn4_op2" @click="updateStatus(0)"> <div class="btn4_op2" @click="updateStatus(0)">
<span>批量通过</span> <span>批量通过</span>
</div> </div>

View File

@@ -1279,11 +1279,11 @@
</div> </div>
</div> </div>
<div class="qrm_btnbox"> <div class="qrm_btnbox">
<div class="qrm_btn btn1"> <div class="qrm_btn btn1" @click="graduate_exit">
<div class="btnText" @click="graduate_exit">取消</div> <div class="btnText">取消</div>
</div> </div>
<div class="qrm_btn btn2"> <div class="qrm_btn btn2" @click="handleJie">
<div class="btnText" @click="handleJie">确定</div> <div class="btnText">确定</div>
</div> </div>
</div> </div>
</div> </div>
@@ -1550,15 +1550,10 @@ import {checkPer} from "@/utils/utils";
const columns1 = [ const columns1 = [
{ {
title: "课程编号", title: "课程编号",
width: 100, width: 130,
dataIndex: "num", dataIndex: "offcourseNumber",
key: "num", key: "offcourseNumber",
align: "center", align: "center",
customRender: ({ index, record }) => {
const pageNum =
Number(record.pageNo) - 1 > 0 ? (Number(record.pageNo) - 1) * 10 : 0;
return index + 1 + pageNum;
},
}, },
{ {
title: "名称", title: "名称",
@@ -1619,7 +1614,7 @@ const columns1 = [
{ {
title: "学习人数", title: "学习人数",
width: 130, width: 130,
dataIndex: "stunum", dataIndex: "studentCnt",
key: "4", key: "4",
align: "center", align: "center",
customRender: ({ text }) => { customRender: ({ text }) => {
@@ -1720,7 +1715,7 @@ const columns1 = [
}, },
{ {
title: "操作", title: "操作",
width: 320, width: 370,
dataIndex: "operation", dataIndex: "operation",
key: "operation", key: "operation",
fixed: "right", fixed: "right",
@@ -1927,7 +1922,6 @@ const columns6 = [
return text ? text : "-"; return text ? text : "-";
}, },
}, },
// 新加学员数
{ {
title: "学员数", title: "学员数",
dataIndex: "studentCnt", dataIndex: "studentCnt",
@@ -2215,18 +2209,19 @@ export default defineComponent({
customRender: ({ record }) => { customRender: ({ record }) => {
return ( return (
<div class="racona"> <div class="racona">
{record.workScore ? ( {record.workScore === -2 ? (
"-"
) : record.workScore ? (
<span>{record.workScore}</span> <span>{record.workScore}</span>
) : ( ) : (
// <span <span
// style={{ color: "#4EA6FF", cursor: "pointer" }} style={{ color: "#4EA6FF", cursor: "pointer" }}
// onClick={() => { onClick={() => {
// handlJoinStu(record); handlJoinStu(record);
// }} }}
// > >
// 成绩录入 成绩录入
// </span> </span>
<span></span>
)} )}
</div> </div>
); );
@@ -2256,15 +2251,35 @@ export default defineComponent({
key: "8", key: "8",
align: "center", align: "center",
}, },
// 2023-1-12 隐藏 后面放开 {
// { title: "结业状态",
// title: "结业状态", width: "15%",
// width: "15%", dataIndex: "completionStatus",
// dataIndex: "completionStatus", key: "8",
// key: "8", align: "center",
// align: "center", customRender: ({ record }) => {
// customRender: ({ record }) => <div>{{1:'结业'}[record.completionStatus] || '-'}</div>, return (
// }, <div>
{record.finishStatus == 1 &&
record.workScore != -2 &&
record.signStatus == 1 ? (
<div
style={{ color: "#4EA6FF", cursor: "pointer" }}
onClick={() => {
handleOverStu(record);
}}
>
结业
</div>
) : record.completionStatus == 1 ? (
<div>已结业</div>
) : (
<div>-</div>
)}
</div>
);
},
},
], ],
shipType: 1, shipType: 1,
addLoading: false, addLoading: false,
@@ -2518,6 +2533,7 @@ export default defineComponent({
regisCom: false, regisCom: false,
comLeave: false, comLeave: false,
studentId: 0, studentId: 0,
homeWorkId: null,
studentItem: {}, studentItem: {},
addOnlineCoursevisible: false, //新建面授弹窗 addOnlineCoursevisible: false, //新建面授弹窗
@@ -2910,6 +2926,7 @@ export default defineComponent({
endTime: endTime, endTime: endTime,
beginTime: startTime, beginTime: startTime,
}); });
console.log("获取面授课列表", res);
const { rows, total, pageNo } = res.data.data; const { rows, total, pageNo } = res.data.data;
console.log(res.data.data); console.log(res.data.data);
state.tableDataTotal1 = total; state.tableDataTotal1 = total;
@@ -3021,7 +3038,7 @@ export default defineComponent({
state.scoreId = itm.id; state.scoreId = itm.id;
}; };
const handleOverStu = (itm) => { const handleOverStu = (itm) => {
console.log(itm); console.log("点击结业", itm);
state.studentId = itm.studentId; state.studentId = itm.studentId;
state.studentItem = itm; state.studentItem = itm;
@@ -3794,7 +3811,7 @@ export default defineComponent({
state.kk_eidt = true; state.kk_eidt = true;
}; };
const handelGuan = (itm) => { const handelGuan = (itm) => {
console.log(676766); console.log("开课信息", itm);
state.offcourseId = itm.offcourseId; state.offcourseId = itm.offcourseId;
state.offcoursePlanId = itm.offcoursePlanId; state.offcoursePlanId = itm.offcoursePlanId;
state.studentId = itm.studentId; state.studentId = itm.studentId;
@@ -3807,6 +3824,7 @@ export default defineComponent({
state.sm_hs = true; state.sm_hs = true;
// getTableDate2(); // getTableDate2();
state.homeWorkId = itm.homeWorkId;
}; };
const sm_exit = () => { const sm_exit = () => {
state.sm_hs = false; state.sm_hs = false;
@@ -3891,16 +3909,18 @@ export default defineComponent({
if (state.rg_hs) { if (state.rg_hs) {
if (state.piliang) { if (state.piliang) {
api1.updateStudent({ api1.updateStudent({
score: state.lrcj_inputV1, workScore: state.lrcj_inputV1,
id: state.scoreId, workId: state.homeWorkId,
studentId: state.studentId,
}); });
getTableDate2(); getTableDate2();
delete_exit1(); delete_exit1();
} else { } else {
api1 api1
.updateStudent({ .updateStudent({
score: state.lrcj_inputV1, workScore: state.lrcj_inputV1,
id: state.scoreId, workId: state.homeWorkId,
studentId: state.studentId,
}) })
.then((res) => { .then((res) => {
console.log("成绩录入", res); console.log("成绩录入", res);
@@ -3920,12 +3940,15 @@ export default defineComponent({
}; };
const handleJie = async () => { const handleJie = async () => {
if (state.graduate_hs) { if (state.graduate_hs) {
handleStudent({ // state.studentItem.id
offcoursePlanId: state.offcoursePlanId, // console.log("state.studentItem.id", state.studentItem.id);
score: "", api1
studentIds: [state.studentId], .batchUpdateStatus({
type: 2, completionStatus: 1,
}).then((res) => { ids: [state.studentItem?.id],
// status: 1,
})
.then((res) => {
if (res.data.code === 200) { if (res.data.code === 200) {
getTableDate2(); getTableDate2();
delete_exit1(); delete_exit1();
@@ -4448,15 +4471,13 @@ export default defineComponent({
// 管理开课 // 管理开课
const handleGuan22 = (item) => { const handleGuan22 = (item) => {
if (String(item.courseform) === '1') { if (String(item.courseform) === "1") {
return; return;
} }
if (String(item.courseform) === ('1' || '线上')) { if (String(item.courseform) === ("1" || "线上")) {
state.om_1 = true; state.om_1 = true;
state.ft_1 = false; state.ft_1 = false;
} else if ( } else if (String(item.courseform) === ("2" || "面授")) {
String(item.courseform) === ('2' || '面授')
) {
state.om_1 = true; state.om_1 = true;
state.ft_1 = true; state.ft_1 = true;
} }
@@ -4824,7 +4845,7 @@ export default defineComponent({
handelChangePageTea2, handelChangePageTea2,
submitReview, submitReview,
reviewClick, reviewClick,
checkPer,
showPrower, showPrower,
showOwnPrower, showOwnPrower,
showViewPrower, showViewPrower,

View File

@@ -721,9 +721,7 @@ import ProjCheckShip from "../../components/drawers/ProjCheckPower";
import * as api from "../../api/index1"; import * as api from "../../api/index1";
import * as apiStu from "../../api/index"; import * as apiStu from "../../api/index";
import { message } from "ant-design-vue"; import { message } from "ant-design-vue";
import { import { commonData } from "@/api/method";
commonData,
} from "@/api/method";
import { storage } from "@/api/storage"; import { storage } from "@/api/storage";
import { useStore } from "vuex"; import { useStore } from "vuex";
import OrgClass from "@/components/project/OrgClass"; import OrgClass from "@/components/project/OrgClass";
@@ -732,7 +730,6 @@ import {validateName} from "@/api/index1";
import DropDown from "@/components/common/DropDown"; import DropDown from "@/components/common/DropDown";
import {checkPer} from "@/utils/utils"; import {checkPer} from "@/utils/utils";
export default { export default {
name: "learningPath", name: "learningPath",
components: { components: {
@@ -743,7 +740,7 @@ export default {
ProjCheckShip, ProjCheckShip,
CommonStudent, CommonStudent,
OwnerTableModelStudent, OwnerTableModelStudent,
DropDown DropDown,
}, },
setup() { setup() {
@@ -930,13 +927,15 @@ export default {
console.log("err", err); console.log("err", err);
}); });
//获取学员列表 //获取学员列表
apiStu.projectStudentCount({ apiStu
.projectStudentCount({
pid: router.id, pid: router.id,
type:2 type: 2,
}).then((res) => { })
.then((res) => {
state.routeStudentsNum = res.data.data; state.routeStudentsNum = res.data.data;
state.pubLoading = false; state.pubLoading = false;
}) });
}; };
//确定发布 //确定发布
const releaseLearnPath = () => { const releaseLearnPath = () => {
@@ -1126,7 +1125,6 @@ export default {
pubtime: value.publishTime ? value.publishTime : "-", pubtime: value.publishTime ? value.publishTime : "-",
cretime: value.createTime ? value.createTime : "-", cretime: value.createTime ? value.createTime : "-",
remark: value.remark ? value.remark : "-", remark: value.remark ? value.remark : "-",
permissions:value.permissions
}; };
array.push(obj); array.push(obj);
}); });
@@ -1194,7 +1192,7 @@ export default {
width: "20%", width: "20%",
align: "right", align: "right",
fixed: "right", fixed: "right",
scopedSlots: { customRender: "action" } scopedSlots: { customRender: "action" },
}, },
]; ];
return columns; return columns;
@@ -1227,7 +1225,7 @@ export default {
name: state.pathName, name: state.pathName,
type: 3, type: 3,
id: state.editPathId, id: state.editPathId,
}).then(res => { }).then((res) => {
return res.data.data == 1; return res.data.data == 1;
}); });
if (offName) { if (offName) {
@@ -1282,7 +1280,7 @@ export default {
//获取学习路径列表 //获取学习路径列表
const getLearnPath = () => { const getLearnPath = () => {
state.tableLoading = true state.tableLoading = true;
let obj = { let obj = {
pageNo: state.currentPage, pageNo: state.currentPage,
pageSize: state.pageSize, pageSize: state.pageSize,
@@ -1309,7 +1307,7 @@ export default {
} }
getTableDate(arr); getTableDate(arr);
state.tableDataTotal = Number(res.data.data.total); state.tableDataTotal = Number(res.data.data.total);
state.tableLoading = false state.tableLoading = false;
} }
}) })
.catch((err) => { .catch((err) => {
@@ -1377,7 +1375,7 @@ export default {
name: state.pathName, name: state.pathName,
type: 3, type: 3,
id: state.editPathId, id: state.editPathId,
}).then(res => { }).then((res) => {
return res.data.data == 1; return res.data.data == 1;
}); });
if (offName) { if (offName) {
@@ -1517,7 +1515,7 @@ export default {
// state.imgData = ; // state.imgData = ;
// } // }
}); });
const imgData = computed(()=>store.state.pathmapPic) const imgData = computed(() => store.state.pathmapPic);
//添加权限 //添加权限
watch( watch(
() => state.addAuthList, () => state.addAuthList,
@@ -1596,7 +1594,6 @@ export default {
searchLearnPath, searchLearnPath,
resetLearnPath, resetLearnPath,
showLearnBgMore, showLearnBgMore,
checkPer,
closeLearnBgMore, closeLearnBgMore,
}; };
}, },

View File

@@ -1350,7 +1350,6 @@ import TwoDimensionalCode from "../../components/TwoDimensionalCode.vue";
import TableStudent from "@/components/student/TableStudent"; import TableStudent from "@/components/student/TableStudent";
// import * as student from "@/api/student"; // import * as student from "@/api/student";
import { getStuPage, moveStudent } from "@/api/index1"; import { getStuPage, moveStudent } from "@/api/index1";
import { checkPer } from "@/utils/utils";
import RouterFaceTeachManage from "../../components/drawers/router/RouterFaceTeachManage"; import RouterFaceTeachManage from "../../components/drawers/router/RouterFaceTeachManage";
import RouterExaminationManage from "../../components/drawers/router/RouterExaminationManage"; import RouterExaminationManage from "../../components/drawers/router/RouterExaminationManage";
@@ -1389,7 +1388,7 @@ export default {
const router = useRouter(); const router = useRouter();
// const store = useStore(); // const store = useStore();
const state = reactive({ const state = reactive({
permissions:'', permissions: "",
hasTask: false, hasTask: false,
stage: [], stage: [],
statess: [], statess: [],
@@ -2242,7 +2241,7 @@ export default {
.then((res) => { .then((res) => {
console.log("router-list", res); console.log("router-list", res);
state.fileList = JSON.parse(res.data.data.routerInfo.attach); state.fileList = JSON.parse(res.data.data.routerInfo.attach);
state.permissions = res.data.data.routerInfo.permissions state.permissions = res.data.data.routerInfo.permissions;
console.log("asdasdasd-------->", state.fileList); console.log("asdasdasd-------->", state.fileList);
state.docChecked = state.docChecked =
res.data.data.routerInfo.attachSwitch == 1 ? true : false; res.data.data.routerInfo.attachSwitch == 1 ? true : false;
@@ -2715,7 +2714,6 @@ export default {
setLevels, setLevels,
selectProjectName4, selectProjectName4,
changeLevel, changeLevel,
checkPer
}; };
}, },
}; };

View File

@@ -2841,7 +2841,6 @@ export default {
facestudent: "", facestudent: "",
modal1Visible: false, // 证书预览 modal1Visible: false, // 证书预览
changegroupV: false, //换组弹窗 changegroupV: false, //换组弹窗
}); });