From 5eae2714a8877765213099fed0f2acf0bc4685d9 Mon Sep 17 00:00:00 2001 From: yuping <82253452@qq.com> Date: Sat, 4 Feb 2023 01:49:52 +0800 Subject: [PATCH] --fix bug --- src/App.vue | 16 + src/components/drawers/FaceManage.vue | 83 ++---- .../drawers/project/ProjectFaceTaskManage.vue | 50 +--- .../drawers/router/RouterFaceTeachManage.vue | 43 +-- src/utils/utils.js | 278 +++++++++--------- src/views/courselibrary/CoursewareManage.vue | 40 +-- src/views/learningpath/LearningPath.vue | 43 +-- src/views/projectcenter/ProjectManage.vue | 42 ++- 8 files changed, 259 insertions(+), 336 deletions(-) diff --git a/src/App.vue b/src/App.vue index 97503f1f..5ae4044b 100644 --- a/src/App.vue +++ b/src/App.vue @@ -114,6 +114,22 @@ const getDictList = (param) => api1.getDictTree({setCode: param,}).then((res) => height: 100%; } +.ant-table-wrapper { + .ant-table-content { + .ant-table-thead th { + background-color: #eff4fc !important; + text-align: center !important; + } + } + .ant-table-tbody > tr:hover:not(.ant-table-expanded-row):not(.ant-table-row-selected) > td { + background: #f6f9fd; + } +} + +.ant-btn-link { + padding: 0 !important; +} + #container { margin: 0; display: flex; diff --git a/src/components/drawers/FaceManage.vue b/src/components/drawers/FaceManage.vue index 5cfe8a12..4234541c 100644 --- a/src/components/drawers/FaceManage.vue +++ b/src/components/drawers/FaceManage.vue @@ -282,65 +282,36 @@ export default { const ListOpera = () => { let arr = state.tabledata; arr.map((value) => { - if(value.status == '已完成'){ - value.operation = ( -
- { - state.CWvisible = true + value.operation = ( + (value.examStatus || value.workStatus) && (
- 查看作业 - - { - state.CQvisible = true - }} - > - 查看答卷 - -
+ {value.workStatus===1 && { + state.CWvisible = true + }} + > + 查看作业2 + } + {value.examStatus===1 && { + state.CQvisible = true + }} + > + 查看答卷3 + } +
) ); - } else { - value.operation = ( -
- - 查看作业 - - - 查看答卷 - -
- ); - } }); }; ListOpera(); diff --git a/src/components/drawers/project/ProjectFaceTaskManage.vue b/src/components/drawers/project/ProjectFaceTaskManage.vue index da130709..7a5e9528 100644 --- a/src/components/drawers/project/ProjectFaceTaskManage.vue +++ b/src/components/drawers/project/ProjectFaceTaskManage.vue @@ -416,7 +416,7 @@ export default { ); }, }, - {/** + { title: "操作", dataIndex: "operation", key: "operation", @@ -424,16 +424,15 @@ export default { align: "center", ellipsis: true, className: "h", - customRender: (text) => { - return text.record.finishStatus == 1 ? ( -
{ + return (examStatus || workStatus) && (
- 查看作业 - - } + {examStatus===1 && 查看答卷 - -
- ) : ( -
- - 查看作业 - - - 查看答卷 - -
- ); - }, - */ }, - + } +
) + } + } ], exportHomeWorkV: false, downloadUrl: null, diff --git a/src/components/drawers/router/RouterFaceTeachManage.vue b/src/components/drawers/router/RouterFaceTeachManage.vue index 6c95fceb..97147a0f 100644 --- a/src/components/drawers/router/RouterFaceTeachManage.vue +++ b/src/components/drawers/router/RouterFaceTeachManage.vue @@ -429,16 +429,15 @@ export default { const ListOpera = () => { let arr = state.tabledata; arr.map((value) => { - if (value.finishStatus == 1) { value.operation = ( -
- 查看作业 - - } + {value.workStatus===1 && 查看答卷 - -
+ } + ) ); - } else { - value.operation = ( -
- - 查看作业 - - - 查看答卷 - -
- ); - } - }); + }); }; const closeDrawer = () => { ctx.emit("update:FaceTeachModelVisible", false); diff --git a/src/utils/utils.js b/src/utils/utils.js index 3230c4f9..e9649fb9 100644 --- a/src/utils/utils.js +++ b/src/utils/utils.js @@ -1,178 +1,182 @@ -// +import store from '@/store' + export function traverseArr(arr, traverseObj, saveOld = false) { - const newArr = []; - if (arr.length !== 0) { - arr.forEach((item) => { - let obj = {}; - if (saveOld) { - obj = { - ...item, - }; - } - if (Object.keys(traverseObj).length !== 0) { - for (const key in traverseObj) { - if (typeof traverseObj[key] === "string") { - obj[key] = item[traverseObj[key]]; - } else { - if (item[key] && item[key].length !== 0) { - obj[key] = traverseArr(item[key], traverseObj); + const newArr = []; + if (arr.length !== 0) { + arr.forEach((item) => { + let obj = {}; + if (saveOld) { + obj = { + ...item, + }; } - } - } - } - newArr.push(obj); - }); - } - // console.log('newArr', newArr) - return newArr; + if (Object.keys(traverseObj).length !== 0) { + for (const key in traverseObj) { + if (typeof traverseObj[key] === "string") { + obj[key] = item[traverseObj[key]]; + } else { + if (item[key] && item[key].length !== 0) { + obj[key] = traverseArr(item[key], traverseObj); + } + } + } + } + newArr.push(obj); + }); + } + // console.log('newArr', newArr) + return newArr; } const admin = [5, 6, 8, 9, 11, 12] export function checkPer(per) { - if (!per) { - return false - } - return (per + "").split(',').some(t => admin.some(s => s == t)) + if (store?.state?.userInfo?.roleList.some(t => t.code === 'learning-admin')) { + return true + } + if (!per) { + return false + } + return (per + "").split(',').some(t => admin.some(s => s == t)) } export function deepClone(obj) { - let result = typeof obj.splice === "function" ? [] : {}; - if (obj && typeof obj === "object") { - for (let key in obj) { - if (obj[key] && typeof obj[key] === "object") { - result[key] = deepClone(obj[key]); - } else { - result[key] = obj[key]; - } + let result = typeof obj.splice === "function" ? [] : {}; + if (obj && typeof obj === "object") { + for (let key in obj) { + if (obj[key] && typeof obj[key] === "object") { + result[key] = deepClone(obj[key]); + } else { + result[key] = obj[key]; + } + } + return result; } - return result; - } - return obj; + return obj; } export function deepCloneFilterString(obj, fillterKeys) { - let result = typeof obj.splice === "function" ? [] : {}; - if (obj && typeof obj === "object") { - for (let key in obj) { - if (obj[key] && typeof obj[key] === "object") { - result[key] = deepCloneFilterString(obj[key], fillterKeys); - } else { - result[key] = fillterKeys.includes(key) ? obj[key] : String(obj[key]); - } + let result = typeof obj.splice === "function" ? [] : {}; + if (obj && typeof obj === "object") { + for (let key in obj) { + if (obj[key] && typeof obj[key] === "object") { + result[key] = deepCloneFilterString(obj[key], fillterKeys); + } else { + result[key] = fillterKeys.includes(key) ? obj[key] : String(obj[key]); + } + } + return result; } - return result; - } - return obj; + return obj; } export function sortBy(arr, key) { - return arr.sort((x, y) => { - const valueX = parseInt(x[key]); - const valueY = parseInt(y[key]); - if (valueX > valueY) { - return 1; - } - if (valueX < valueY) { - return -1; - } - }); + return arr.sort((x, y) => { + const valueX = parseInt(x[key]); + const valueY = parseInt(y[key]); + if (valueX > valueY) { + return 1; + } + if (valueX < valueY) { + return -1; + } + }); } export function filterCommon(arr, key) { - let newData = {}; - arr.forEach((item) => { - //新建属性名 - if (Object.keys(newData).indexOf("" + item[key]) === -1) { - newData[item[key]] = []; - } - //对应插入属性值 - newData["" + item[key]].push(item); - }); - return newData; + let newData = {}; + arr.forEach((item) => { + //新建属性名 + if (Object.keys(newData).indexOf("" + item[key]) === -1) { + newData[item[key]] = []; + } + //对应插入属性值 + newData["" + item[key]].push(item); + }); + 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}`; + 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 getdateToDate(date) { - let now = new Date(parseInt(date)), - y = now.getFullYear(), - m = now.getMonth() + 1, - d = now.getDate(); - return `${y}${m < 10 ? "0" + m : m}${d < 10 ? "0" + d : d}`; + let now = new Date(parseInt(date)), + y = now.getFullYear(), + m = now.getMonth() + 1, + d = now.getDate(); + return `${y}${m < 10 ? "0" + m : m}${d < 10 ? "0" + d : d}`; } //计算两个时间之间的时间差 多少天时分秒 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, - }; + 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, + }; } // 分片处理 export function batchLoadList( - sourceData, - dataTotal, - splitNumber = 10, - callback, - complete + sourceData, + dataTotal, + splitNumber = 10, + callback, + complete ) { - if (sourceData.length <= splitNumber) { - typeof callback === "function" && callback(sourceData); - typeof callback === "function" && complete(); - return; - } - let first = 0; - const intTime = parseInt(String(dataTotal / splitNumber)); - const floatTime = sourceData.length % splitNumber; - const total = intTime + (floatTime > 0 ? 1 : 0); - for (let i = 0; i < total; i += 1) { - const end = first + splitNumber; - const splitArray = sourceData.slice(first, end); - setTimeout(() => { - typeof callback === "function" && callback(splitArray); - if (i === total - 1) { - // 分片处理完成 + if (sourceData.length <= splitNumber) { + typeof callback === "function" && callback(sourceData); typeof callback === "function" && complete(); - } - }); - first = end; - } + return; + } + let first = 0; + const intTime = parseInt(String(dataTotal / splitNumber)); + const floatTime = sourceData.length % splitNumber; + const total = intTime + (floatTime > 0 ? 1 : 0); + for (let i = 0; i < total; i += 1) { + const end = first + splitNumber; + const splitArray = sourceData.slice(first, end); + setTimeout(() => { + typeof callback === "function" && callback(splitArray); + if (i === total - 1) { + // 分片处理完成 + typeof callback === "function" && complete(); + } + }); + first = end; + } } export function newFile(code) { - const blob = new Blob([code], { - type: "application/vnd.ms-excel", - }); - const linkNode = document.createElement("a"); - linkNode.style.display = "none"; - linkNode.href = URL.createObjectURL(blob); //生成一个Blob URL - document.body.appendChild(linkNode); - linkNode.click(); //模拟在按钮上的一次鼠标单击 - URL.revokeObjectURL(linkNode.href); // 释放URL 对象 - document.body.removeChild(linkNode); + const blob = new Blob([code], { + type: "application/vnd.ms-excel", + }); + const linkNode = document.createElement("a"); + linkNode.style.display = "none"; + linkNode.href = URL.createObjectURL(blob); //生成一个Blob URL + document.body.appendChild(linkNode); + linkNode.click(); //模拟在按钮上的一次鼠标单击 + URL.revokeObjectURL(linkNode.href); // 释放URL 对象 + document.body.removeChild(linkNode); } diff --git a/src/views/courselibrary/CoursewareManage.vue b/src/views/courselibrary/CoursewareManage.vue index 5b14734c..ac46999d 100644 --- a/src/views/courselibrary/CoursewareManage.vue +++ b/src/views/courselibrary/CoursewareManage.vue @@ -305,13 +305,15 @@ -
+