diff --git a/package-lock.json b/package-lock.json index 362d4de6..b2df0a1d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3591,6 +3591,8 @@ "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.11.0.tgz", "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -3602,7 +3604,9 @@ "version": "1.0.0", "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/ajv-keywords": { "version": "3.5.2", @@ -13767,7 +13771,6 @@ "integrity": "sha512-yl+5qhpjd8e1G4cMXfORkkBlvtPCIgmRf3IYCWYDKIQ7m+PPa5iTm4feiNmCMD6yGqQWMhhK/7M3oWGL9boKwg==", "dev": true, "requires": { - "@babel/core": "^7.12.16", "@babel/helper-compilation-targets": "^7.12.16", "@babel/helper-module-imports": "^7.12.13", "@babel/plugin-proposal-class-properties": "^7.12.13", @@ -13780,7 +13783,6 @@ "@vue/babel-plugin-jsx": "^1.0.3", "@vue/babel-preset-jsx": "^1.1.2", "babel-plugin-dynamic-import-node": "^2.3.3", - "core-js": "^3.8.3", "core-js-compat": "^3.8.3", "semver": "^7.3.4" }, @@ -14627,15 +14629,14 @@ "resolved": "https://registry.npmmirror.com/ajv-formats/-/ajv-formats-2.1.1.tgz", "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "dev": true, - "requires": { - "ajv": "^8.0.0" - }, + "requires": {}, "dependencies": { "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.11.0.tgz", + "version": "https://registry.npmmirror.com/ajv/-/ajv-8.11.0.tgz", "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", "dev": true, + "optional": true, + "peer": true, "requires": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -14647,7 +14648,9 @@ "version": "1.0.0", "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true + "dev": true, + "optional": true, + "peer": true } } }, diff --git a/src/App.vue b/src/App.vue index e09e7e17..436f650d 100644 --- a/src/App.vue +++ b/src/App.vue @@ -43,7 +43,7 @@ export default defineComponent({ const store = useStore(); const isLogin = ref(false); // console.log("router", router.getRoutes(), route); - console.log("版本0.13------------"); + console.log("版本0.17------------"); const routes = computed(() => { return router.getRoutes().filter((e) => e.meta?.isLink); }); diff --git a/src/api/config.js b/src/api/config.js index e8171905..965764b6 100644 --- a/src/api/config.js +++ b/src/api/config.js @@ -2,7 +2,7 @@ * @Author: lixg lixg@dongwu-inc.com * @Date: 2022-11-21 14:32:52 * @LastEditors: lixg lixg@dongwu-inc.com - * @LastEditTime: 2022-12-04 13:27:07 + * @LastEditTime: 2022-12-05 00:00:40 * @FilePath: /fe-manage/src/api/config.js * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE */ @@ -24,18 +24,19 @@ const http = axios.create({ http.interceptors.request.use( (config) => { - // console.log('config', config) + console.log("config", config); // const token = localStorage.getItem("token"); // // const token = getCookie('token') // // console.log('token', token) // if (token) { // config.headers.token = token; //测试1111 // } else { - // console.log("当前请求页面无token,请执行操作!!!"); + // console.log("当前请求页面无token,请执行操作!!!"); - // // 此处测试默认配置token - // config.headers.token = "123456"; - // } + // // 此处测试默认配置token + // config.headers.token = + // "eyJ0eXBlIjoidG9rZW4iLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC91LmJvZS5jb20iLCJpYXQiOjE2NzAxNTMxMDMsImV4cCI6MTY3MDE2MDMwMywiR2l2ZW5OYW1lIjoiYm9ldSIsInVzZXJJZCI6IjZCMDQ5RkFGLUMzMTQtN0NDRi0wRDI4LTBEMjNGNEM0MjUzMSIsInVJZCI6Ijk2NTM0MjAyNzQ5NzYwNzE2OCIsInBlcm1pc3Npb24iOiIifQ==.c937b2d3a59cbab2136fdde55fd38f06bdff041212aab0fa6741bc4be41e28a7"; + // // } return config; }, (err) => { @@ -55,7 +56,7 @@ http.interceptors.response.use( return response; } else { if (code === 1000) { - // window.open("https://u-pre.boe.com/web/", '_self'); + window.open("https://u-pre.boe.com/web/", '_self'); // window.open("http://111.231.196.214:12013/manage/login", '_self'); } console.log("api %o", msg); @@ -64,8 +65,8 @@ http.interceptors.response.use( }, function (error) { if (error.message == "timeout of 1ms exceeded") { - message.destroy() - message.error("请求超时") + message.destroy(); + message.error("请求超时"); } console.log("api error %o", error); return Promise.reject(error); diff --git a/src/api/index1.js b/src/api/index1.js index c2d637ed..e2b28694 100644 --- a/src/api/index1.js +++ b/src/api/index1.js @@ -115,6 +115,8 @@ export const getMemberInfo = (obj) => http.post('/admin/orgStruct/getMemberInfo' export const getAudienceInfo = (obj) => http.post('/admin/orgStruct/getAudienceInfo', obj) //获取、添加授权(修改版) export const optionAuthPerm = (obj) => http.post('/admin/AuthPerm/optionAuthPerm', obj) +//获取学员列表 +export const getStuList = (obj) => http.post('/admin/orgStruct/getStudentRef', obj) //获取用户登录 export const getUser = () => http.post('/admin/CheckUser/login', { withCredentials: true }) //公共信息--------------------------------------------------- diff --git a/src/api/indexTask.js b/src/api/indexTask.js index 534f95e7..10353d60 100644 --- a/src/api/indexTask.js +++ b/src/api/indexTask.js @@ -11,4 +11,8 @@ export const RouterEditTask = (obj) => http.post('/admin/router/editTask',obj) // 删除关卡任务 export const RouterDeleteTask = (obj) => http.post('/admin/router/deleteTask',obj); // 删除项目任务 -export const ProjectDeleteTask = (obj) => http.delete('/admin/project/deleteTask',obj); \ No newline at end of file +export const ProjectDeleteTask = (obj) => http.delete('/admin/project/deleteTask',obj); +// 判断当前在线课是否已经添加到该路径图下 +export const IsExistence = (obj) => http.post('/admin/router/queryTaskDoesItExist',obj); +// 判断当前在线课是否已经添加到该项目下 +export const IsExistenceProject = (obj) => http.post('/admin/project/queryTaskDoesItExistForProject',obj); diff --git a/src/api/indexVote.js b/src/api/indexVote.js index 07d1d268..171bbf60 100644 --- a/src/api/indexVote.js +++ b/src/api/indexVote.js @@ -1,6 +1,5 @@ import http from "./config"; -import qs from 'qs'; - +import qs from "qs"; /** * 接口传参数方式(get) @@ -42,42 +41,49 @@ import qs from 'qs'; // 接口-请求 //基础票数上传接口 -export const baseVoteupload = (obj) => http.post('/vote/baseVoteupload', obj, { - headers: { - 'token': '123', - 'Content-Type': 'multipart/form-data', - - } -}) +export const baseVoteupload = (obj) => + http.post("/vote/baseVoteupload", obj, { + headers: { + token: "123", + "Content-Type": "multipart/form-data", + }, + }); //创建题干信息接口 -export const createStemMessage = (obj) => http.post('/vote/createOptionMessage', obj) - +export const createStemMessage = (obj) => + http.post("/vote/createOptionMessage", obj); //投票信息创建接口 -export const createVote = (obj) => http.post('/vote/createVote', obj) +export const createVote = (obj) => http.post("/vote/createVote", obj); //删除投票信息 -export const deleteVoteMessage = (obj) => http.post('/vote/deleteVoteMessage', { params: obj }) +export const deleteVoteMessage = (obj) => + http.post("/vote/deleteVoteMessage", { params: obj }); //删除题干信息接口 -export const deleteVoteStem = (voteStemId) => http.post(`/vote/deleteVoteStem?voteStemId=${voteStemId}`) +export const deleteVoteStem = (voteStemId) => + http.post(`/vote/deleteVoteStem?voteStemId=${voteStemId}`); //删除题选项息接口 -export const deleteVoteStemOption = (optionId) => http.post(`/vote/deleteVoteStemOption?optionId=${optionId}`) +export const deleteVoteStemOption = (optionId) => + http.post(`/vote/deleteVoteStemOption?optionId=${optionId}`); //修改投票信息接口 -export const editVote = (obj) => http.post('/vote/editVote', obj) +export const editVote = (obj) => http.post("/vote/editVote", obj); //根据题干ID获取题干信息 -export const queryStemByStemId = (ballotId) => http.post(`/vote/queryStemByStemId?ballotId=${ballotId}`) +export const queryStemByStemId = (ballotId) => + http.post(`/vote/queryStemByStemId?ballotId=${ballotId}`); //修改题干信息接口 -export const updateStemMessage = (obj) => http.post('/vote/updateStemMessage', obj); +export const updateStemMessage = (obj) => + http.post("/vote/updateStemMessage", obj); //上传组件 -export const fileUp = (obj) => http.post('/file/upload', obj, qs.stringify({ obj })); +export const fileUp = (obj) => + http.post("/file/upload", obj, qs.stringify({ obj })); //根据题干ID获取投票任务 -export const queryVoteDetailById = (voteID) => http.post(`/vote/queryVoteDetailById?voteId=${voteID}`) +export const queryVoteDetailById = (voteID) => + http.post(`/vote/queryVoteDetailById?voteId=${voteID}`); // 测试方法 // import * as api from '../../api/index' diff --git a/src/components/drawers/AddFaceteach.vue b/src/components/drawers/AddFaceteach.vue index 406e21a9..daf8bf36 100644 --- a/src/components/drawers/AddFaceteach.vue +++ b/src/components/drawers/AddFaceteach.vue @@ -408,6 +408,7 @@ export default { ctx.emit("update:addfaceteachVisible", false); localStorage.setItem("stageId", props.chooseStageId); localStorage.setItem("chapterId", props.isactive); + state.fileList = [] clear(); }; const afterVisibleChange = (bool) => { diff --git a/src/components/drawers/AddGroupMembers.vue b/src/components/drawers/AddGroupMembers.vue new file mode 100644 index 00000000..01065e2d --- /dev/null +++ b/src/components/drawers/AddGroupMembers.vue @@ -0,0 +1,637 @@ + + + + + diff --git a/src/components/drawers/AddHomework.vue b/src/components/drawers/AddHomework.vue index 8ceab4c2..9b0f8aeb 100644 --- a/src/components/drawers/AddHomework.vue +++ b/src/components/drawers/AddHomework.vue @@ -291,6 +291,7 @@ export default { resetForm(); }; const closeDrawer2 = () => { + ctx.emit("update:edit", false); ctx.emit("update:addhomeworkVisible", false); resetForm(); }; diff --git a/src/components/drawers/AddOnline.vue b/src/components/drawers/AddOnline.vue index d52c7a4e..c8451a80 100644 --- a/src/components/drawers/AddOnline.vue +++ b/src/components/drawers/AddOnline.vue @@ -134,7 +134,7 @@ import * as api from "../../api/indexOnline.js"; import * as apiTask from "../../api/indexTaskadd"; // import { setCookie } from "../../api/method" import { message } from "ant-design-vue"; -import { RouterEditTask } from "@/api/indexTask"; +import { RouterEditTask, IsExistence, IsExistenceProject } from "@/api/indexTask"; import { addTempTask } from "../../api/indexTaskadd"; export default { name: "AddOnline", @@ -272,6 +272,7 @@ export default { const onSelectChange = (selectedRowKeys,selectedRows) => { state.selectedRowKeys = selectedRowKeys; state.addOnlineList = selectedRows; + console.log(selectedRowKeys,selectedRows) if( props.edit && selectedRows.length > 0 ){ selectedRows.map((value)=>{ if(value.courseId == props.EditOnlineId){ @@ -311,7 +312,6 @@ export default { } }); state.tableData = array; - state.tableDataTotal = state.tableData.length }; //获取全部在线信息接口 const getAllOnlineText = () => { @@ -330,17 +330,80 @@ export default { "sysType3": "", }) .then((res) => { - let arr = res.data.data; + let arr = res.data.data.list; + state.tableDataTotal = res.data.data.count if (res.status === 200) { + console.log('获取在线课列表数据', res) getTableDate(arr); } }) .catch((err) => { console.log(err,'请求失败在线');}); }; + + // 校验当前在线课是否已经添加进来了 + const isExistence = (id) => { + + console.log({ + "chapterId": Number(props.isactive), + "courseTaskId": Number(id), + "routerId": props.routerId, + "type": 1 + }) + + IsExistence({ + "chapterId": Number(props.isactive), + "courseTaskId": Number(id), + "routerId": props.routerId, + "type": 1 + }).then(res=>{ + console.log('我是不是已经添加了',res) + }).catch(err=>{ + console.log(err) + }) + } + + // 判断项目中是否添加当前在线课 + const IsExistenceProjects = () => { + IsExistenceProject({ + "courseTaskId": props.projectTaskId || 0, + "projectId": props.projectId, + "stageId": props.chooseStageId || 0, + "type": 1 + }).then(res=>{ + console.log(res) + }).catch(err=>{ + console.log(err) + }) + } + const updateTask = () => { + + + if(props.isLevel == 1){ + // isExistence(23) + // return + // let routerarr = [] + // console.log('我是要便利的数据1', state.addOnlineList) + // state.addOnlineList.map((value) => { + // routerarr.push(isExistence(value.courseId)) + // }) + // console.log('当前是否已经添加了',routerarr) + } + + if(props.isLevel == 2){ + console.log('我是要便利的数据2', state.addOnlineList) + + } + + if(props.isLevel == 3){ + console.log('我是要便利的数据3', state.addOnlineList) + + } + if (props.isLevel == 1) { state.addOnlineList.map((value) => { + console.log(value) RouterEditTask({ chapterId: Number(props.isactive), courseId: value.num, @@ -445,6 +508,8 @@ export default { updateTask, searchList, resetOnline, + isExistence, + IsExistenceProjects }; }, }; diff --git a/src/components/drawers/AddVote1.vue b/src/components/drawers/AddVote1.vue index 7ad5cc8d..a1b54fe3 100644 --- a/src/components/drawers/AddVote1.vue +++ b/src/components/drawers/AddVote1.vue @@ -168,8 +168,7 @@ export default { localStorage.setItem("chapterId", props.isactive); }; - const afterVisibleChange = () => { - }; + const afterVisibleChange = () => {}; const showDrawer = () => { state.visible = true; diff --git a/src/components/drawers/MemberList.vue b/src/components/drawers/MemberList.vue index 65fde411..5f163a64 100644 --- a/src/components/drawers/MemberList.vue +++ b/src/components/drawers/MemberList.vue @@ -62,7 +62,7 @@
列表选项总计:
{{ total }}条
-
清空
+
清空
@@ -97,8 +97,8 @@
- - + +
确定 - + + + diff --git a/src/components/vote/CreateVote.vue b/src/components/vote/CreateVote.vue index 36a713f3..803d594e 100644 --- a/src/components/vote/CreateVote.vue +++ b/src/components/vote/CreateVote.vue @@ -1,12 +1,20 @@ + diff --git a/src/components/vote/VoteQuestionItem.vue b/src/components/vote/VoteQuestionItem.vue index d38f3bc6..1a44f0a5 100644 --- a/src/components/vote/VoteQuestionItem.vue +++ b/src/components/vote/VoteQuestionItem.vue @@ -7,27 +7,41 @@
选项{{ item.id }}
- +
删除
- +
+添加图片
{{ hasImgName }}
- + " + src="../../assets/images/basicinfo/close.png" + @click="handleCancel" + />
@@ -53,14 +67,12 @@ export default { hasImgName: "", }); - const handleInput = (value) => { - console.log(value.target.value) - emit("edit", curItem) - emit("input", { id: curItem.value.id, val: value.target.value }); + const handleInput = () => { + emit("input", { id: curItem.value.id, val: curItem.value.inputVal }); }; const handleDel = () => { handleCancel(); - emit("del", { id: curItem.value.id, optionId: curItem.value.optionId, data: curItem }); + emit("del", { id: curItem.value.id, optionId: curItem.value.optionId }); }; const handleCancel = () => { state.hasImgName = ""; @@ -87,6 +99,7 @@ export default { const formData = new FormData(); formData.append("file", file); + console.log(file); fileUp(formData).then((res) => { if (res.data.code === 200) { state.hasImgName = file.name; @@ -381,7 +394,8 @@ export default { //line-height: 24px; } - .ant-radio-wrapper {} + .ant-radio-wrapper { + } .ant-input { border-radius: 5px; diff --git a/src/components/vote/queryStem.vue b/src/components/vote/queryStem.vue index e3be6c23..84336677 100644 --- a/src/components/vote/queryStem.vue +++ b/src/components/vote/queryStem.vue @@ -1,86 +1,92 @@ \ No newline at end of file diff --git a/src/utils/utils.js b/src/utils/utils.js index c3c7891d..7bcad4bf 100644 --- a/src/utils/utils.js +++ b/src/utils/utils.js @@ -57,19 +57,16 @@ export function deepCloneFilterString(obj, fillterKeys) { return obj; } -export function sortBy(arr, ...keys) { +export function sortBy(arr, key) { return arr.sort((x, y) => { - for (const key of keys) { - const valueX = typeof key === "function" ? key(x) : x[key]; - const valueY = typeof key === "function" ? key(y) : y[key]; - if (valueX > valueY) { - return 1; - } - if (valueX < valueY) { - return -1; - } + const valueX = parseInt(x[key]); + const valueY = parseInt(y[key]); + if (valueX > valueY) { + return 1; + } + if (valueX < valueY) { + return -1; } - return 0; }); } diff --git a/src/views/courselibrary/CoursewareManage.vue b/src/views/courselibrary/CoursewareManage.vue index 7a6cb6f0..970cb9cc 100644 --- a/src/views/courselibrary/CoursewareManage.vue +++ b/src/views/courselibrary/CoursewareManage.vue @@ -2439,7 +2439,7 @@
- + 添加学员
@@ -2970,6 +2970,7 @@ v-model:addAuthList="addAuthList" :authClassify="authClassify" classify="course" + :type="shipType" />
@@ -3160,7 +3161,7 @@ const columns1 = [ key: "9", align: "center", customRender: ({ text }) => { - return text ? getdateToTime(text * 1000) : "-"; + return text ? text : "-"; }, }, { @@ -3501,6 +3502,7 @@ export default defineComponent({ }, setup() { const state = reactive({ + shipType: 1, addLoading: false, currentPlanItem: {}, teacherId: null, @@ -3750,9 +3752,11 @@ export default defineComponent({ newCourseName: null, //新建开课名称 }); - const showStuAdd = () => { - state.viewpowervisible = true; + const showStuAdd = (record) => { + state.selectCourseId = record.offcoursePlanId; + state.shipType = 2; state.authClassify = 3; + state.viewpowervisible = true; }; // 富文本 sssssssssssssss @@ -3913,6 +3917,7 @@ export default defineComponent({ beginTime: startTime, }); const { rows, total } = res.data.data; + console.log(res.data.data); state.tableDataTotal1 = total; const datas = traverseArr( rows, @@ -4429,8 +4434,8 @@ export default defineComponent({ }; // 关闭查看 const handlelookMs = () => { - state.lookMs = false - } + state.lookMs = false; + }; //保存面授课 const handlePush = (param) => { //state.isEdit = 1; @@ -5030,7 +5035,6 @@ export default defineComponent({ state.ft_eidt = true; }; - const handleLook = async (itm, type) => { state.isEdit = 0; console.log(45555); @@ -5306,28 +5310,31 @@ export default defineComponent({ //权限名单 const showPrower = (record) => { // console.log("record", record); - state.corpowerlistvisible = true; state.selectCourseId = record.offcourseId; + state.corpowerlistvisible = true; }; //归属权 const showOwnPrower = (record) => { // console.log("record", record); - state.ownpowervisible = true; state.selectCourseId = record.offcourseId; + state.ownpowervisible = true; }; //查看权 const showViewPrower = (record) => { // console.log("record", record); - state.viewpowervisible = true; state.selectCourseId = record.offcourseId; state.authClassify = 1; + state.viewpowervisible = true; }; //管理权 const showManagePrower = (record) => { // console.log("record", record); - state.viewpowervisible = true; + console.log(22222222) + console.log(record) state.selectCourseId = record.offcourseId; + state.shipType = 1; state.authClassify = 2; + state.viewpowervisible = true; }; //添加权限 watch( @@ -5508,7 +5515,7 @@ export default defineComponent({ closeOnlineCoursevisible, handlelookMs, - handleLook + handleLook, }; }, }); diff --git a/src/views/examine/CourseReviewed.vue b/src/views/examine/CourseReviewed.vue index 70a8d3b6..3eaf1ade 100644 --- a/src/views/examine/CourseReviewed.vue +++ b/src/views/examine/CourseReviewed.vue @@ -65,7 +65,6 @@ import { reactive, toRefs, onMounted } from "vue"; import { courseListView } from "../../api/indexAudit"; import * as api1 from "@/api/index1"; -import { toDate } from "../../api/method"; export default { name: "CoursereViewed", @@ -123,7 +122,7 @@ export default { key: "time", align: "center", customRender: (time) => { - return
{toDate(time.record.time, "Y-M-D h:m")}
; + return
{time.record.time}
; }, }, diff --git a/src/views/examine/CourseReviewedN.vue b/src/views/examine/CourseReviewedN.vue index 074cbc25..782c5467 100644 --- a/src/views/examine/CourseReviewedN.vue +++ b/src/views/examine/CourseReviewedN.vue @@ -318,7 +318,6 @@