diff --git a/package-lock.json b/package-lock.json index 379ccd42..fc6622f3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,8 +15,10 @@ "element-plus": "^2.2.17", "jquery": "^3.6.1", "qs": "^6.11.0", + "sortablejs": "^1.15.0", "vue": "^3.2.13", "vue-router": "^4.0.3", + "vuedraggable": "^4.1.0", "vuex": "^4.0.0" }, "devDependencies": { @@ -9522,6 +9524,11 @@ "websocket-driver": "^0.7.4" } }, + "node_modules/sortablejs": { + "version": "1.15.0", + "resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.15.0.tgz", + "integrity": "sha512-bv9qgVMjUMf89wAvM6AxVvS/4MX3sPeN0+agqShejLU5z5GX4C75ow1O2e5k4L6XItUyAK3gH6AxSbXrOM5e8w==" + }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", @@ -10447,6 +10454,22 @@ "node": ">=0.10.0" } }, + "node_modules/vuedraggable": { + "version": "4.1.0", + "resolved": "https://registry.npmmirror.com/vuedraggable/-/vuedraggable-4.1.0.tgz", + "integrity": "sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==", + "dependencies": { + "sortablejs": "1.14.0" + }, + "peerDependencies": { + "vue": "^3.0.1" + } + }, + "node_modules/vuedraggable/node_modules/sortablejs": { + "version": "1.14.0", + "resolved": "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.14.0.tgz", + "integrity": "sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==" + }, "node_modules/vuex": { "version": "4.0.2", "resolved": "https://registry.npmmirror.com/vuex/-/vuex-4.0.2.tgz", @@ -14906,9 +14929,9 @@ } }, "dayjs": { - "version": "1.11.6", - "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.6.tgz", - "integrity": "sha512-zZbY5giJAinCG+7AGaw0wIhNZ6J8AhWuSXKvuc1KAyMiRsvGQWqh4L+MomvhdAYjN+lqvVCMq1I41e3YHvXkyQ==" + "version": "1.11.5", + "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.5.tgz", + "integrity": "sha512-CAdX5Q3YW3Gclyo5Vpqkgpj8fSdLQcRuzfX6mC6Phy0nfJ0eGYOeS7m4mt2plDWLAtA4TqTakvbboHvUxfe4iA==" }, "debug": { "version": "4.3.4", diff --git a/src/api/indexCourse.js b/src/api/indexCourse.js index 3cf89f13..e393ab50 100644 --- a/src/api/indexCourse.js +++ b/src/api/indexCourse.js @@ -3,19 +3,52 @@ import http from "./config"; /** * 1 */ +//添加课程学员 +export const addStudent = (obj) => + http.post("/admin/offcourse/addStudent", obj); //删除开课 export const deletePlan = (obj) => - http.delete("/admin/offcourse/deletePlan", obj); + http.delete( + "/admin/offcourse/deletePlan", + { params: obj }, + { + headers: { "Content-Type": "application/x-www-form-urlencoded" }, + } + ); +//获取面授课详情 +export const detail = (obj) => + http.post("/admin/offcourse/detail", obj, { + headers: { "Content-Type": "application/x-www-form-urlencoded" }, + }); +//获取面授课开课详情 +export const detailPlan = (obj) => + http.post("/admin/offcourse/detailPlan", obj, { + headers: { "Content-Type": "application/x-www-form-urlencoded" }, + }); //新建或编辑面授课 export const edit = (obj) => http.post("/admin/offcourse/edit", obj); //新建或编辑面授课开课 export const editPlan = (obj) => http.post("/admin/offcourse/editPlan", obj); -//操作面授课(发布,撤回,删除) +//课程导出 +export const exportP = (obj) => http.post("/admin/offcourse/export", obj); +//操作面授课(发布,撤回,删除,审核,停用) export const handle = (obj) => http.post("/admin/offcourse/handle", obj); +//学员操作-支持批量 +export const handleStudent = (obj) => + http.post("/admin/offcourse/handleStudent", obj); //获取面授课列表 export const list = (obj) => http.post("/admin/offcourse/list", obj); +//获取面授课已审核列表 +export const listReview = (obj) => + http.post("/admin/offcourse/listReview", obj); //面授课开课列表 export const planList = (obj) => http.post("/admin/offcourse/planList", obj); +//学员导出 +export const studentExport = (obj) => + http.post("/admin/offcourse/studentExport", obj); //获取学员列表 export const studentList = (obj) => http.post("/admin/offcourse/studentList", obj); +//学习记录列表 +export const studyRecordList = (obj) => + http.post("/admin/offcourse/studyRecordList", obj); diff --git a/src/utils/utils.js b/src/utils/utils.js index 319cf1ec..b21c2078 100644 --- a/src/utils/utils.js +++ b/src/utils/utils.js @@ -84,3 +84,36 @@ export function filterCommon(arr, key) { }); return newData; } + +export function getdateToTime(date) { + let now = new Date(parseInt(date)), + y = now.getFullYear(), + m = now.getMonth() + 1, + d = now.getDate(), + hh = now.getHours(), + mm = now.getMinutes(); + return `${y}-${m < 10 ? "0" + m : m}-${d < 10 ? "0" + d : d} ${hh}:${mm}`; +} + +//计算两个时间之间的时间差 多少天时分秒 +export function intervalTime(startTime) { + const curTime = new Date().getTime(); //计算当前时间戳 + const date3 = curTime - startTime; //时间差的毫秒数 + //计算出相差天数 + const days = Math.floor(date3 / (24 * 3600 * 1000)); + //计算出小时数 + const leave1 = date3 % (24 * 3600 * 1000); //计算天数后剩余的毫秒数 + const hours = Math.floor(leave1 / (3600 * 1000)); + //计算相差分钟数 + const leave2 = leave1 % (3600 * 1000); //计算小时数后剩余的毫秒数 + const minutes = Math.floor(leave2 / (60 * 1000)); + //计算相差秒数 + const leave3 = leave2 % (60 * 1000); //计算分钟数后剩余的毫秒数 + const seconds = Math.round(leave3 / 1000); + return { + days, + hours, + minutes, + seconds, + }; +} diff --git a/src/views/courselibrary/CoursewareManage.vue b/src/views/courselibrary/CoursewareManage.vue index 2e46199b..7aa81834 100644 --- a/src/views/courselibrary/CoursewareManage.vue +++ b/src/views/courselibrary/CoursewareManage.vue @@ -7,9 +7,9 @@
@@ -21,7 +21,7 @@
@@ -264,7 +264,7 @@
授课教师
- 添加附件
+ + 支持.pdf,.ppt,.pptx,.doc,.docx,.xls,.xlsx,.jpg,.jpeg,.png,.gif,.zip +
@@ -690,7 +688,387 @@ expandRowByClick="true" @expand="expandTable" :pagination="false" - /> + > + +
状态 已通过 - 未审核 - 管理员拒绝 + + 未审核 + + + 管理员拒绝 +
@@ -985,10 +1363,7 @@
-
+
@@ -1005,10 +1380,7 @@
-
+
-
+ > + + +
核心能力大楼培训教室
- 授课教师:王雪han + 授课教师:王雪
@@ -1381,7 +1825,7 @@ @expand="expandTable" :pagination="false" /> -
+
{ - //{ text, record, index, column } return index + 1; }, }, @@ -1734,6 +2181,13 @@ const columns1 = [ dataIndex: "content", key: "1", align: "center", + customRender: ({ record }) => { + // switch (String(record.content)) { + // case "0": + // return "未提交"; + // } + return record.content; + }, }, { title: "课程形式", @@ -1741,6 +2195,14 @@ const columns1 = [ dataIndex: "courseform", key: "2", align: "center", + customRender: ({ record }) => { + switch (String(record.courseform)) { + case "1": + return "线上"; + case "2": + return "线下"; + } + }, }, { title: " 所属项目", @@ -1760,7 +2222,7 @@ const columns1 = [ key: "4", align: "center", customRender: ({ text }) => { - return text ? text : "-"; + return text ? text : "0"; }, }, { @@ -1770,7 +2232,7 @@ const columns1 = [ key: "5", align: "center", customRender: ({ text }) => { - return text ? text : "-"; + return text ? text : "0"; }, }, { @@ -1780,7 +2242,7 @@ const columns1 = [ key: "6", align: "center", customRender: ({ record }) => { - switch (record.auditStatus) { + switch (String(record.status)) { case "0": return "未提交"; case "1": @@ -1799,7 +2261,7 @@ const columns1 = [ key: "7", align: "center", customRender: ({ record }) => { - switch (record.publishStatus) { + switch (String(record.ynpub)) { case "0": return "未发布"; case "1": @@ -1824,7 +2286,7 @@ const columns1 = [ key: "9", align: "center", customRender: ({ text }) => { - return text ? text : "-"; + return text ? getdateToTime(text * 1000) : "-"; }, }, { @@ -1834,15 +2296,23 @@ const columns1 = [ key: "10", align: "center", customRender: ({ text }) => { - return text ? text : "-"; + return text ? getdateToTime(text * 1000) : "-"; }, }, { title: "是否停用", width: 100, key: "either", - dataIndex: "ynuse", + dataIndex: "kkty", align: "center", + customRender: ({ record }) => { + switch (String(record.kkty)) { + case "0": + return "停用"; + case "1": + return "启用"; + } + }, }, { title: "操作", @@ -1963,7 +2433,7 @@ const columns6 = [ width: "18%", align: "center", customRender: ({ text }) => { - return text ? text : "-"; + return text ? getdateToTime(text * 1000) : "-"; }, }, { @@ -1973,7 +2443,7 @@ const columns6 = [ width: "18%", align: "center", customRender: ({ text }) => { - return text ? text : "-"; + return text ? getdateToTime(text * 1000) : "-"; }, }, { @@ -2271,6 +2741,105 @@ export default defineComponent({ status: "已通过", }, ], + //列表表格 + tableData5: [ + { + key: "1", + num: 1, + name: "时间管理", + content: "领导力", + courseform: "线上", + project: "管理者进阶-腾飞班1", + stunum: "50", + grade: "5", + status: "未提交", + ynpub: "未发布", + creator: "管理员", + createtime: "2022-07-20 9:30", + pubtime: "2022-07-20 9:30", + kkty: false, + }, + { + key: "2", + num: 2, + name: "智能制造初级课程", + content: "专业力", + courseform: "线上", + project: "-", + stunum: "200", + grade: "5", + status: "待审核", + ynpub: "未发布", + creator: "管理员", + createtime: "2022-07-20 9:30", + pubtime: "2022-07-20 9:30", + kkty: true, + }, + { + key: "3", + num: 3, + name: "产业必备技能", + content: "专业力", + courseform: "线上", + project: "-", + stunum: "200", + grade: "5", + status: "已审核", + ynpub: "已发布", + creator: "管理员", + createtime: "2022-07-20 9:30", + pubtime: "2022-07-20 9:30", + kkty: true, + }, + { + key: "4", + num: 4, + name: "B11入模培训", + content: "专业力", + courseform: "线上", + project: "-", + stunum: "200", + grade: "5", + status: "审核未通过", + ynpub: "未发布", + creator: "管理员", + createtime: "2022-07-20 9:30", + pubtime: "2022-07-20 9:30", + kkty: true, + }, + { + key: "5", + num: 5, + name: "入职培训", + content: "通用力", + courseform: "面授", + project: "-", + stunum: "5", + grade: "5", + status: "未提交", + ynpub: "未发布", + creator: "管理员", + createtime: "2022-07-20 9:30", + pubtime: "2022-07-20 9:30", + kkty: true, + }, + { + key: "6", + num: 6, + name: "入职培训", + content: "通用力", + courseform: "面授", + project: "-", + stunum: "5", + grade: "6", + status: "已审核", + ynpub: "已发布", + creator: "管理员", + createtime: "2022-07-20 9:30", + pubtime: "2022-07-20 9:30", + kkty: true, + }, + ], //开课 tableData6: [ { @@ -2451,7 +3020,7 @@ export default defineComponent({ qdms_inputV3: "", qdms_inputV4: [], tagsOptions: [], - qdms_inputV5: "", + qdms_inputV5: null, fen_lei: null, chang_jin: null, tags_val: undefined, @@ -2471,7 +3040,7 @@ export default defineComponent({ xjkkinputV1: "", xjkkinputV2: "", xjkkinputV3: "", - xjkkinputV4: "", + xjkkinputV4: null, //开课学员管理 xygl_inputV1: "", //录入成绩 @@ -2504,7 +3073,7 @@ export default defineComponent({ const editorRef = shallowRef(); // 内容 HTML const valueHtml = ref(""); - // 模拟 ajax 异步获取内容 + // // 模拟 ajax 异步获取内容 onMounted(() => { // setTimeout(() => { // valueHtml.value = "

模拟 Ajax 异步设置内容

"; @@ -2584,15 +3153,24 @@ export default defineComponent({ const beforeUpload2 = (file) => { console.log(6765555); console.log(file); - const isJpgOrPng = - file.type === "image/jpg" || - file.type === "image/jpeg" || - file.type === "image/png" || - file.type === "image/svg" || - file.type === "image/bmp" || - file.type === "image/gif"; - if (!isJpgOrPng) { - message.error("仅支持jpg、gif、png、jpeg、svg、bmp格式!"); + const fileType = [ + "jpg", + "jpeg", + "png", + "gif", + "pdf", + "ppt", + "pptx", + "doc", + "docx", + "xls", + "xlsx", + "zip", + ]; + if (!fileType.includes(file.name.split(".")[1])) { + message.error( + "仅支持.pdf,.ppt,.pptx,.doc,.docx,.xls,.xlsx,.jpg,.jpeg,.png,.gif,.zip格式!" + ); return false; } @@ -2624,404 +3202,52 @@ export default defineComponent({ // 渲染列表1操作 const getTableDate = async () => { - let datas = state.tableData1; - // // let startTime = ""; - // // let endTime = ""; - // if (state.projectTime) { - // // startTime = toDate( - // // new Date(state.projectTime[0].$d).getTime() / 1000, - // // "Y-M-D" - // // ); - // // endTime = toDate( - // // new Date(state.projectTime[1].$d).getTime() / 1000, - // // "Y-M-D" - // // ); - // } - // let res = await list({ - // pageNo: state.currentPage1, - // pageSize: state.pageSize1, - // auditStatus: state.auditStatus, - // categoryId: state.categoryId, - // projectName: state.projectName, - // name: state.name, - // createName: state.createName, - // // endTime: endTime, - // // beginTime: startTime, - // }); - // const { rows, total } = res.data.data; - // state.tableDataTotal1 = total; - // const datas = traverseArr(rows, { - // key: "createId", - // num: "createId", - // name: "name", - // content: "categoryId", - // courseform: "", - // project: "projectName", - // stunum: "studentCnt", - // grade: "score", - // status: "auditStatus", - // ynpub: "publishStatus", - // creator: "createName", - // createtime: "createTime", - // pubtime: "publishTime", - // kkty: "", - // offcourseId: "offcourseId", - // }); - datas.map((value) => { - { - //单层项目 - value.operation = ( -
-
- {value.status === "2" || value.status === "已审核" ? ( -
-
-
{ - handleStart(value); - }} - > - 开课 -
-
-
-
{ - if (value.courseform === "线上") { - state.om_1 = true; - state.ft_1 = false; - } else if (value.courseform === "面授") { - state.om_1 = true; - state.ft_1 = true; - } - }} - > - 管理 -
-
-
-
{ - state.delete_hs = true; - state.copy_hs = true; - }} - style={{ width: "30px" }} - > - 复制 -
-
-
-
- - { - state.corpowerlistvisible = true; - }} - > -
权限名单
-
- { - state.ownpowervisible = true; - }} - > -
归属权
-
- -
查看权
-
- -
管理权
-
-
-
-
-
-
- - { - if (value.courseform === "线上") { - state.QR_hs = true; - state.olQR_hs = true; - } else if (value.courseform === "面授") { - state.QR_hs = true; - state.ftQR_hs = true; - } - }} - > -
二维码
-
- { - console.log("点击了"); - }} - > -
取消
-
-
-
-
-
- ) : ( -
- )} - {value.status === "1" || value.status === "待审核" ? ( -
-
-
{ - handleStart(value); - }} - > - 开课 -
-
-
-
-
-
-
-
-
-
- - { - state.corpowerlistvisible = true; - }} - > -
权限名单
-
- { - state.ownpowervisible = true; - }} - > -
归属权
-
- -
查看权
-
- -
管理权
-
-
-
-
-
-
{ - handleRejectExit(value); - }} - > - 撤回 -
-
-
- ) : ( -
- )} - {value.status === "0" || value.status === "未提交" ? ( -
-
-
{ - handleStart(value); - }} - > - 开课 -
-
-
-
{ - handleEdit(value); - }} - > - 编辑 -
-
-
-
{ - state.delete_hs = true; - state.copy_hs = true; - }} - style={{ width: "30px" }} - > - 复制 -
-
-
- ) : ( -
- )} - {value.status === "-1" || value.status === "审核未通过" ? ( -
-
-
{ - handleStart(value); - }} - > - 开课 -
-
-
-
{ - handleEdit(value); - }} - > - 编辑 -
-
-
-
{ - state.delete_hs = true; - state.copy_hs = true; - }} - style={{ width: "30px" }} - > - 复制 -
-
-
-
- - { - state.corpowerlistvisible = true; - }} - > -
权限名单
-
- { - state.ownpowervisible = true; - }} - > -
归属权
-
- -
查看权
-
- -
管理权
-
-
-
-
-
-
{ - handleDelete(value); - }} - style="margin-left:22px" - > - 删除 -
-
-
- ) : ( -
- )} -
-
- ); - } + // let datas = state.tableData1; + let startTime = ""; + let endTime = ""; + if (state.projectTime) { + startTime = parseInt( + new Date(state.projectTime[0].$d).getTime() / 1000 + ); + endTime = parseInt(new Date(state.projectTime[1].$d).getTime() / 1000); + } + let res = await list({ + pageNo: state.currentPage1, + pageSize: state.pageSize1, + auditStatus: state.auditStatus, + categoryId: state.categoryId, + projectName: state.projectName, + name: state.name, + createName: state.createName, + endTime: endTime, + beginTime: startTime, }); - state.tableData = datas; + const { rows, total } = res.data.data; + state.tableDataTotal1 = total; + const datas = traverseArr( + rows, + { + key: "offcourseId", + num: "offcourseId", + name: "name", + content: "categoryId", + courseform: "type", + project: "projectName", + stunum: "studentCnt", + grade: "score", + status: "auditStatus", + ynpub: "publishStatus", + creator: "createName", + createtime: "createTime", + pubtime: "publishTime", + kkty: "status", + offcourseId: "offcourseId", + }, + true + ); + console.log("datas"); + console.log(datas); + state.tableData1 = datas; }; getTableDate(); const handelChangePage1 = (page, pageSize) => { @@ -3043,30 +3269,34 @@ export default defineComponent({ }; //渲染学员管理操作 - const getTableDate2 = async() => { - let data2 = state.tableData7; - // let res = await studentList({ - // pageNo: state.currentPage3, - // pageSize: state.pageSize3, - // offcoursePlanId: state.offcoursePlanId, - // name: state.xygl_inputV1, - // }); - // const { rows, total } = res.data.data; - // state.tableDataTotal3 = total; - // const data2 = traverseArr(rows, { - // key: "", - // num: "", - // name: "name", - // number: "", - // department: "", - // postion: "", - // band: "", - // status: "", - // join: "source", - // signstatus: "", - // evastatus: "", - // overstatus: "", - // }); + const getTableDate2 = async () => { + // let data2 = state.tableData7; + let res = await studentList({ + pageNo: state.currentPage3, + pageSize: state.pageSize3, + offcoursePlanId: state.offcoursePlanId, + name: state.xygl_inputV1, + }); + const { rows, total } = res.data.data; + state.tableDataTotal3 = total; + const data2 = traverseArr( + rows, + { + key: "", + num: "", + name: "name", + number: "", + department: "", + postion: "", + band: "", + status: "", + join: "source", + signstatus: "", + evastatus: "", + overstatus: "", + }, + true + ); data2.map((value) => { { //单层项目 @@ -3151,120 +3381,40 @@ export default defineComponent({ ); } }); - state.tableData = data2; + state.tableData7 = data2; }; - getTableDate2(); + // 渲染开课操作 const getTableDate3 = async () => { - let datas = state.tableData6; - // let startTime = ""; - // if (state.selectTime) { - // startTime = toDate( - // new Date(state.selectTime.$d).getTime() / 1000, - // "Y-M-D" - // ); - // } - // console.log(startTime); - // let res = await planList({ - // pageNo: state.currentPage2, - // pageSize: state.pageSize2, - // teacher: state.kk_inputV2, - // // createName: state.kk_inputV1, - // // beginTime: startTime, - // offcourseId: state.offcourseId, - // }); - // const { rows, total } = res.data.data; - // state.tableDataTotal2 = total; - // const datas = traverseArr(rows, { - // key: "offcoursePlanId", - // num: "offcoursePlanId", - // organization: "assessmentName", - // address: "address", - // starttime: "beginTime", - // createtime: "", //? - // }); - datas.map((value) => { - { - //单层项目 - value.operation = ( -
-
-
-
{ - state.QR_hs = true; - state.ftsQR_hs = true; - }} - > - 签到 -
-
{ - handelEditStu(value); - }} - > - 编辑 -
-
{ - state.sm_hs = true; - }} - > - 管理 -
-
- - { - state.delete_hs = true; - state.copy_hs = true; - }} - > -
复制
-
- { - handleDeleteKaike(value); - }} - > -
删除
-
- { - state.QR_hs = true; - state.vipftQR_hs = true; - }} - > -
二维码
-
-
-
-
-
-
- ); - } + // let datas = state.tableData6; + let startTime = 0; + if (state.selectTime) { + startTime = parseInt(new Date(state.selectTime.$d).getTime() / 1000); + } + console.log(startTime); + let res = await planList({ + pageNo: state.currentPage2, + pageSize: state.pageSize2, + teacher: state.kk_inputV2, + beginTime: startTime, + offcourseId: state.offcourseId, }); - state.tableData = datas; + const { rows, total } = res.data.data; + state.tableDataTotal2 = total; + const datas = traverseArr( + rows, + { + key: "offcoursePlanId", + num: "offcoursePlanId", + organization: "assessmentName", + address: "address", + starttime: "beginTime", + createtime: "createTime", + }, + true + ); + state.tableData6 = datas; }; - getTableDate3(); //渲染学员管理结业状态 const getTableDate4 = async () => { let data2 = state.tableData7; @@ -3289,7 +3439,7 @@ export default defineComponent({ // signstatus: "", // evastatus: "", // overstatus: "", - // }); + // },true); data2.map((value) => { { //单层项目 @@ -3353,12 +3503,49 @@ export default defineComponent({ ); } }); - state.tableData = data2; + state.tableData7 = data2; }; getTableDate4(); //渲染列表是否停用 - const getTableDate5 = () => { - let data2 = state.tableData1; + const getTableDate5 = async () => { + // let data2 = state.tableData5; + let data2 = []; + // // let startTime = ""; + // // let endTime = ""; + // let res = await list({ + // pageNo: state.currentPage1, + // pageSize: state.pageSize1, + // auditStatus: state.auditStatus, + // categoryId: state.categoryId, + // projectName: state.projectName, + // name: state.name, + // createName: state.createName, + // // endTime: endTime, + // // beginTime: startTime, + // }); + // const { rows, total } = res.data.data; + // console.log("rows333333333"); + // console.log(rows); + // console.log(total); + // state.tableDataTotal1 = total; + // const data2 = traverseArr(rows, { + // key: "offcourseId", + // num: "offcourseId", + // name: "name", + // content: "categoryId", + // courseform: "", + // project: "projectName", + // stunum: "studentCnt", + // grade: "score", + // status: "auditStatus", + // ynpub: "publishStatus", + // creator: "createName", + // createtime: "createTime", + // pubtime: "publishTime", + // kkty: "", + // offcourseId: "offcourseId", + // },true); + // console.log(data2); data2.map((value) => { { //单层项目 @@ -3388,9 +3575,10 @@ export default defineComponent({ ); } }); - state.tableData = data2; + state.tableData5 = data2; }; getTableDate5(); + const options1 = ref([ { value: "value1", @@ -3484,12 +3672,22 @@ export default defineComponent({ state.fen_lei = null; state.chang_jin = null; state.tags_val = undefined; - state.qdms_inputV5 = ""; + state.qdms_inputV5 = null; state.qdms_inputV6 = ""; state.imgList = []; valueHtml.value = ""; }; const handlePush = () => { + console.log("state.imgList"); + console.log(state.imgList); + let files = ""; + if (state.imgList.length) { + state.imgList.forEach((item) => { + files += item.img + ","; + }); + } + files = files.slice(0, files.length - 1); + console.log(files); const postData = { offcourseId: state.offcourseId, //不传代表新增 name: state.qdms_inputV1, @@ -3498,17 +3696,19 @@ export default defineComponent({ meaning: state.qdms_inputV3, categoryId: state.fen_lei, sceneId: state.chang_jin, - tips: state.tags_val, - teacherId: state.qdms_inputV5, //? + tips: state.tags_val ? state.tags_val.join(",") : null, + teacherId: state.qdms_inputV5 ? state.qdms_inputV5 : 0, //? intro: state.qdms_inputV6, - attach: state.imgList.join(","), + attach: files, outline: valueHtml.value, }; + console.log("postData"); console.log(postData); edit(postData).then((res) => { - console.log(787878); - console.log(res); - ft_exit(); + if (res.data.code === 200) { + getTableDate(); + ft_exit(); + } }); }; const om_exit = () => { @@ -3535,64 +3735,83 @@ export default defineComponent({ state.xjkkinputV1 = ""; state.xjkkinputV2 = ""; state.xjkkinputV3 = ""; - state.xjkkinputV4 = ""; + state.xjkkinputV4 = null; state.checked1 = false; state.checked4 = false; }; const handleSureStu = () => { let startTime, - endTime = ""; + endTime = 0; if (state.xjkkinputV3) { - // startTime = toDate( - // new Date(state.xjkkinputV3[0].$d).getTime() / 1000, - // "Y-M-D" - // ); - // endTime = toDate( - // new Date(state.xjkkinputV3[1].$d).getTime() / 1000, - // "Y-M-D" - // ); - startTime = new Date(state.xjkkinputV3[0].$d).valueOf() - endTime =new Date(state.xjkkinputV3[1].$d).valueOf() + startTime = parseInt(state.xjkkinputV3[0].$d.getTime() / 1000); + endTime = parseInt(state.xjkkinputV3[1].$d.getTime() / 1000); } - // console.log('state.xjkkinputV3'); - // console.log(state.xjkkinputV3); - // console.log(startTime); - // console.log(new Date(state.xjkkinputV3[0].$d).valueOf()); - const obj = { + offcourseId: state.offcourseId, + offcoursePlanId: state.offcoursePlanId, //开课ID,不传代表新增 + address: state.xjkkinputV2, - applyFlag: state.checked1, - attach: state.filesList.join(","), + applyFlag: state.checked1 ? 1 : 0, + attach: state.filesList.length ? state.filesList.join(",") : "", beginTime: startTime, completeType: state.xjkkradioV2, endTime: endTime, - evalFlag: state.checked4, + evalFlag: state.checked4 ? 1 : 0, name: state.xjkkinputV1, - offcourseId: state.offcourseId, - offcoursePlanId: state.offcoursePlanId, //开课ID,不传代表新增 - signFlag: state.xjkkradioV1, - signWordFlag: state.xjkkradioV1, - teacherId: 1, + signFlag: state.xjkkradioV1 === 0 ? 1 : 0, //是否允许未报名的签到:1是0否 + signWordFlag: state.xjkkradioV1 === 1 ? 1 : 0, //签到是否需要口令:1是0否 + teacherId: state.xjkkinputV4 ? state.xjkkinputV4 : 1, }; console.log(obj); editPlan(obj).then((res) => { - console.log(res); - // handleCancelStu(); + if (res.data.code === 200) { + getTableDate3(); + handleCancelStu(); + } }); }; - const handelEditStu = (item) => { + const handleOpenStu = (item) => { console.log(item); - state.offcourseId = item.offcourseId; state.offcoursePlanId = item.offcoursePlanId; - state.filesList = item.attach.split(","); - state.checked1 = item.applyFlag; - state.xjkkinputV2 = item.completeType; - state.checked4 = item.name; - state.xjkkradioV1 = item.signWordFlag; + + state.sm_hs = true; + getTableDate2(); + }; + const handelEditStu = async (itm) => { + console.log(itm); + state.offcourseId = itm.offcourseId; + state.offcoursePlanId = itm.offcoursePlanId; + + const item = await detailPlan({ + offcoursePlanId: Number(state.offcoursePlanId), + }).then((res) => { + if (res.data.code === 200) return res.data.data; + }); + console.log("res"); + console.log(item); + + state.xjkkinputV2 = item.address; + state.checked1 = item.applyFlag === 1 ? true : false; + state.filesList = item.attach ? item.attach.split(",") : []; + state.xjkkinputV3 = [ + dayjs(item.beginTime, "YYYY/MM/DD"), + dayjs(item.endTime, "YYYY/MM/DD"), + ]; + state.xjkkradioV2 = item.completeType; + state.checked4 = item.evalFlag === 1 ? true : false; + state.xjkkinputV1 = item.name; + if (item.signFlag === 1) { + //是否允许未报名的签到:1是0否 + state.xjkkradioV1 = 0; + } + if (item.signWordFlag === 1) { + //签到是否需要口令:1是0否 + state.xjkkradioV1 = 1; + } + if (item.signFlag === 0 && item.signWordFlag === 0) { + state.xjkkradioV1 = ""; + } state.xjkkinputV4 = item.teacherId; - state.xjkkradioV1 = item.signFlag; - // state.startTime = item.beginTime; - // state.endTime = item.endTime; state.cstm_hs = true; state.kk_eidt = true; @@ -3645,40 +3864,132 @@ export default defineComponent({ state.rejectstudy_hs = false; }; const delete_exit1 = () => { + state.offcoursePlanId = null; state.delete_hs = false; state.del_hs = false; state.copy_hs = false; state.nouse_hs = false; }; - const handleRejectExit = (value) => { - state.offcoursePlanId = value.offcoursePlanId; - // handle({ - // offcourseId:state.offcourseId - // type:0 - // }).then(res=>{ - // console.log(89898) - // console.log(res) - // }) + const handleRejectExit = (itm, type) => { + if (type === "1") { + return; + } + state.offcourseId = itm.offcourseId; + + handle({ + offcourseId: state.offcourseId, + type: 0, + }).then((res) => { + if (res.data.code === 200) { + getTableDate(); + } + }); }; - const handleDeleteExit = () => { - // handle({ - // offcourseId:state.offcourseId - // type:1 - // }).then(res=>{ - // console.log(89898) - // console.log(res) - // delete_exit1() - // }) + const handleDeleteExit = async () => { + if (state.del_hs) { + console.log(11111111); + if (state.offcourseId && state.offcoursePlanId) { + console.log(87887); + deletePlan({ + offcoursePlanId: state.offcoursePlanId, + }); + getTableDate3(); + delete_exit1(); + } else if (state.offcourseId) { + console.log(87887); + handle({ + offcourseId: state.offcourseId, + type: 1, + }).then((res) => { + if (res.data.code === 200) { + getTableDate(); + delete_exit1(); + } + }); + } + } + if (state.copy_hs) { + console.log(2222222); + if (state.offcourseId && state.offcoursePlanId) { + console.log(87887); + // 拿数据 + const item = await detailPlan({ + offcoursePlanId: Number(state.offcoursePlanId), + }).then((res) => { + if (res.data.code === 200) return res.data.data; + }); + const obj = { + offcourseId: item.offcourseId, + offcoursePlanId: null, //开课ID,不传代表新增 + + address: item.address, + applyFlag: item.applyFlag, + attach: item.attach, + beginTime: new Date(item.beginTime) / 1000, + completeType: item.completeType, + endTime: new Date(item.endTime) / 1000, + evalFlag: item.evalFlag, + name: item.name, + signFlag: item.signFlag, //是否允许未报名的签到:1是0否 + signWordFlag: item.signWordFlag, //签到是否需要口令:1是0否 + teacherId: item.teacherId, + }; + console.log(obj); + editPlan(obj).then((res) => { + if (res.data.code === 200) { + getTableDate3(); + delete_exit1(); + } + }); + } else if (state.offcourseId) { + console.log(87887); + // 拿数据 + const item = await detail({ + offcourseId: Number(state.offcourseId), + }).then((res) => { + if (res.data.code === 200) return res.data.data; + }); + const postData = { + offcourseId: null, //不传代表新增 + name: item.name, + picUrl: item.picUrl, + targetUser: item.targetUser, + meaning: item.meaning, + categoryId: item.categoryId, + sceneId: item.sceneId, + tips: item.tips, + teacherId: item.teacherId, //? + intro: item.intro, + attach: item.attach, + outline: item.outline, + }; + edit(postData).then((res) => { + if (res.data.code === 200) { + getTableDate(); + delete_exit1(); + } + }); + } + } + if (state.nouse_hs) { + console.log(3333333333); + if (state.offcourseId) { + console.log(87887); + handle({ + offcourseId: state.offcourseId, + type: -2, + }).then((res) => { + if (res.data.code === 200) { + getTableDate(); + delete_exit1(); + } + }); + } + } }; const handleDeleteKaike = (value) => { state.offcoursePlanId = value.offcoursePlanId; - // deletePlan({ - // offcoursePlanId:state.offcoursePlanId - // }).then(res=>{ - // console.log(89898) - // console.log(res) - // delete_exit1() - // }) + state.delete_hs = true; state.del_hs = true; }; @@ -3690,50 +4001,124 @@ export default defineComponent({ const faceManageChange = (e) => { state.faceManageTab = e; }; - const key = "updatable"; + const openMessage = () => { - message.loading({ - content: "Loading...", - key, + let startTime = ""; + let endTime = ""; + if (state.projectTime) { + startTime = parseInt( + new Date(state.projectTime[0].$d).getTime() / 1000 + ); + endTime = parseInt(new Date(state.projectTime[1].$d).getTime() / 1000); + } + exportP({ + pageNo: state.currentPage1, + pageSize: state.pageSize1, + auditStatus: state.auditStatus, + categoryId: state.categoryId, + projectName: state.projectName, + name: state.name, + createName: state.createName, + endTime: endTime, + beginTime: startTime, + }).then((res) => { + if (res.data.code === 200) { + message.success("导出成功"); + } }); - setTimeout(() => { - message.success({ - content: "导出成功", - key, - duration: 2, - }); - }, 1000); }; - const handleEdit = (item) => { + const handleEdit = async (itm, type) => { console.log(45555); + console.log(itm); + if (type === "1") { + return; + } + state.offcourseId = itm.offcourseId; + + const item = await detail({ + offcourseId: Number(state.offcourseId), + }).then((res) => { + if (res.data.code === 200) return res.data.data; + }); + console.log("res"); console.log(item); - // state.offcourseId = item.offcourseId; - // state.qdms_inputV1 = item.name; - // state.imageUrl = item.picUrl; - // state.qdms_inputV2 = item.targetUser; - // state.qdms_inputV3 = item.meaning; - // state.fen_lei = item.content; - // state.chang_jin = item.sceneId; - // state.tags_val = item.tips; - // state.qdms_inputV5 = item.teacherId; - // state.qdms_inputV6 = item.intro; - // state.imgList = item.attach; - // valueHtml.value = item.outline; + + state.qdms_inputV1 = item.name; + state.imageUrl = item.picUrl; + state.qdms_inputV2 = item.targetUser; + state.qdms_inputV3 = item.meaning; + state.fen_lei = item.content; + state.chang_jin = item.sceneId; + state.tags_val = item.tips; + state.qdms_inputV5 = item.teacherId; + state.qdms_inputV6 = item.intro; + state.imgList = item.attach; + valueHtml.value = item.outline; state.ft_hs = true; state.ft_eidt = true; }; - const handleDelete = (item) => { + const handleDelete = (item, type) => { console.log(item); + if (type === "1") { + return; + } state.offcourseId = item.offcourseId; state.delete_hs = true; state.del_hs = true; }; - const handleStart = (item) => { + const handleCopy = async (itm, type) => { + console.log(itm); + if (type === "1") { + return; + } + state.offcourseId = itm.offcourseId; + + state.delete_hs = true; + state.copy_hs = true; + }; + const handleCopyP = async (itm) => { + console.log(itm); + state.offcourseId = itm.offcourseId; + state.offcoursePlanId = itm.offcoursePlanId; + + state.delete_hs = true; + state.copy_hs = true; + }; + const handleStop = async (itm, type) => { + console.log(itm); + if (type === "1") { + return; + } + state.offcourseId = itm.offcourseId; + + state.delete_hs = true; + state.nouse_hs = true; + }; + const handleOpen = async (itm, type) => { + console.log(itm); + if (type === "1") { + return; + } + state.offcourseId = itm.offcourseId; + + handle({ + offcourseId: state.offcourseId, + type: 2, + }).then((res) => { + if (res.data.code === 200) { + getTableDate(); + } + }); + }; + const handleStart = (item, type) => { console.log(item); + if (type === "1") { + return; + } state.offcourseId = item.offcourseId; - // getTableDate3(); + getTableDate3(); state.stm_hs = true; }; @@ -3772,20 +4157,21 @@ export default defineComponent({ }; const beforeUpload3 = (file) => { - const isJpgOrPng = - file.type === "file/pdf" || - file.type === "file/ppt" || - file.type === "file/pptx" || - file.type === "file/doc" || - file.type === "file/docx" || - file.type === "file/xlsx" || - file.type === "file/zip" || - file.type === "image/jpg" || - file.type === "image/jpeg" || - file.type === "image/png" || - file.type === "image/gif" || - file.type === "file/xls"; - if (!isJpgOrPng) { + const fileType = [ + "jpg", + "jpeg", + "png", + "gif", + "pdf", + "ppt", + "pptx", + "doc", + "docx", + "xls", + "xlsx", + "zip", + ]; + if (!fileType.includes(file.name.split(".")[1])) { message.error( "仅支持.pdf,.ppt,.pptx,.doc,.docx,.xls,.xlsx,.jpg,.jpeg,.png,.gif,.zip格式!" ); @@ -3806,6 +4192,7 @@ export default defineComponent({ return { ...toRefs(state), handleDeleteKaike, + handleOpenStu, handelEditStu, beforeUpload3, handleSearchStu, @@ -3815,6 +4202,10 @@ export default defineComponent({ handleSearchTable, handleRestTable, handleStart, + handleCopyP, + handleCopy, + handleStop, + handleOpen, handleEdit, handleDelete, columns1, @@ -3857,7 +4248,7 @@ export default defineComponent({ editorRef, valueHtml, - mode: "default", // 或 'simple' + mode: "simple", // 或 'simple' toolbarConfig, editorConfig, handleCreated, @@ -5860,6 +6251,14 @@ export default defineComponent({ } } } + +.disabled { + a { + color: #999ba3; + cursor: not-allowed; + } +} + .pa { width: 100%; display: flex; @@ -5882,4 +6281,26 @@ export default defineComponent({ .ant-upload.ant-upload-select-picture-card { border: none; } + +.mgTop { + margin-top: 50px !important; +} +// .tableSelect { +// position: relative; +// .hoverList { +// display: none; +// } +// &:hover { +// .hoverList { +// display: block; +// position: absolute; +// top: 20px; +// left: -20px; +// background: #fff; +// box-sizing: border-box; +// // padding: 20px; +// color: #000000; +// } +// } +// } diff --git a/src/views/research/ResearchAdd copy.vue b/src/views/research/ResearchAdd copy.vue deleted file mode 100644 index b2ad3d38..00000000 --- a/src/views/research/ResearchAdd copy.vue +++ /dev/null @@ -1,760 +0,0 @@ - - - -