Просмотр исходного кода

fix(student page): 修复比较运算符不严谨导致的逻辑问题

1. 将所有宽松相等==替换为严格相等===,避免类型转换引发意外结果
2. 新增对classid存在性的校验,防止空值调用includes报错
3. 优化点赞匹配逻辑的可读性,拆分条件变量
lsc 1 месяц назад
Родитель
Сommit
ad778ac2ae
1 измененных файлов с 11 добавлено и 7 удалено
  1. 11 7
      src/views/Student/index.vue

+ 11 - 7
src/views/Student/index.vue

@@ -2912,14 +2912,18 @@ const getWork = async (isUpdate = false) => {
     console.log('likeArray', likeArray)
     const newWorkArray = props.cid
       ? res[0].filter((work: any) => {
-        
-        // console.log(work.ttype == '1' || (work.ttype == '2' && work.classid.includes(props.cid)) && (work.atool === toolType.value || !toolType.value))
-        return (work.ttype == '1' || (work.ttype == '2' && work.classid.includes(props.cid))) && (work.atool == toolType.value || !toolType.value)
+        // 修复:使用 === 严格相等比较,避免类型转换导致的意外结果
+        // 只有当 ttype === '1' 或 (ttype === '2' 且 classid 包含 props.cid) 时才保留
+        // 同时满足 atool === toolType 或 toolType 为空
+        // return (work.ttype == '1' || (work.ttype == '2' && work.classid.includes(props.cid))) && (work.atool == toolType.value || !toolType.value)
+        const ttypeMatch = work.ttype === '1' || (work.ttype === '2' && work.classid && work.classid.includes(props.cid))
+        const toolMatch = toolType ? work.atool === toolType : true
+        return ttypeMatch && toolMatch
       }).map((work: any) => {
         // 计算点赞数量:likeArray中wid等于当前work.id的记录数
-        const likesCount = likeArray.filter((like: any) => like.workId == work.id).length
+        const likesCount = likeArray.filter((like: any) => like.workId === work.id).length
         // 判断当前用户是否点赞:likeArray中wid等于当前work.id且likesId等于当前用户id
-        const isLikes = likeArray.some((like: any) => like.workId == work.id && like.likesId == props.userid)
+        const isLikes = likeArray.some((like: any) => like.workId === work.id && like.likesId === props.userid)
         return {
           ...work,
           likesCount,
@@ -2928,9 +2932,9 @@ const getWork = async (isUpdate = false) => {
       })
       : res[0].map((work: any) => {
         // 计算点赞数量:likeArray中wid等于当前work.id的记录数
-        const likesCount = likeArray.filter((like: any) => like.workId == work.id).length
+        const likesCount = likeArray.filter((like: any) => like.workId === work.id).length
         // 判断当前用户是否点赞:likeArray中wid等于当前work.id且likesId等于当前用户id
-        const isLikes = likeArray.some((like: any) => like.workId == work.id && like.likesId == props.userid)
+        const isLikes = likeArray.some((like: any) => like.workId === work.id && like.likesId === props.userid)
         return {
           ...work,
           likesCount,