Skip to content

Commit 8a974ff

Browse files
fix(all): 屏蔽失效插件;修复Number函数被重写导致不可用的bug
1 parent eef6cbd commit 8a974ff

File tree

14 files changed

+373
-360
lines changed

14 files changed

+373
-360
lines changed

src/helper/converter.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { CourseScoreInfo } from '@/store/types'
22
import { SemesterScoreRecord } from '@/plugins/score/types'
3+
import { Num } from './util'
34

45
export const convertSemesterNumberToName = (semesterNumber: string): string => {
56
const r = semesterNumber.match(/(\d+)-(\d+)-(\d)/)
@@ -74,14 +75,14 @@ export const convertCourseScoreInfoListToScoreRecords = (
7475
v.courseName === courseName &&
7576
v.courseNumber === courseNumber &&
7677
v.courseSequenceNumber === courseSequenceNumber &&
77-
Number(v.examTime) > Number(examTime)
78+
Num(v.examTime) > Num(examTime)
7879
)
7980
)
8081
}))
8182
.sort((a, b) => {
8283
const getWeightSum = ({ semester }: SemesterScoreRecord): number => {
8384
const r = semester.match(/^(\d+)-(\d+)\s(.)$/)
84-
return r ? Number(r[1]) + Number(r[2]) + (r[3] === '秋' ? 0 : 1) : 0
85+
return r ? Num(r[1]) + Num(r[2]) + (r[3] === '秋' ? 0 : 1) : 0
8586
}
8687
// 从大到小排
8788
return getWeightSum(b) - getWeightSum(a)

src/helper/util.ts

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,20 @@
11
import minimatch from 'minimatch'
2-
import { state } from '@/store'
2+
// import { state } from '@/store'
33
import { isError, isLoginPage } from './judger'
44
import { API_PATH_V2 } from './info'
55
import axios, { AxiosInstance } from 'axios'
66
import { getCurrentRoutePath } from '@/core/router'
77
import Vue from 'vue'
88
import { Logger } from './logger'
99

10+
/**
11+
* SCU URP 引入的 JS 文件中,重写了 Number 函数;
12+
* 本函数是 Number 函数的替代
13+
*/
14+
export const Num: NumberConstructor = Object.getPrototypeOf(0).constructor
15+
1016
export const sleep = (time: number): Promise<void> =>
11-
new Promise(resolve => setTimeout(() => resolve(), time))
17+
new Promise((resolve) => setTimeout(() => resolve(), time))
1218

1319
export const matchPathname = (
1420
subject: string,
@@ -92,14 +98,14 @@ export const routeTrigger = (
9298
export const http = (): AxiosInstance =>
9399
axios.create({
94100
baseURL: API_PATH_V2,
95-
timeout: 10000,
96-
headers: {
97-
...(state.user.accessToken
98-
? {
99-
Authorization: `Bearer ${state.user.accessToken}`
100-
}
101-
: {})
102-
}
101+
timeout: 10000
102+
// headers: {
103+
// ...(state.user.accessToken
104+
// ? {
105+
// Authorization: `Bearer ${state.user.accessToken}`
106+
// }
107+
// : {})
108+
// }
103109
})
104110

105111
export function notifyError(message: string, title?: string): void

src/plugins/fast-evaluation/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import {
1111
} from './util'
1212
import * as template from './template'
1313
import { HTTP_HEADERS, EVALUATION_INTERVAL } from './config'
14-
import { messageError, messageSuccess, notifyError } from '@/helper/util'
14+
import { messageError, messageSuccess, notifyError, Num } from '@/helper/util'
1515

1616
let $btn: JQuery<HTMLElement>
1717
let $prompt: JQuery<HTMLElement>
@@ -232,7 +232,7 @@ function showSelectionModal(): void {
232232
const yes = (layerIndex: number): void => {
233233
list = $('#selection-form')
234234
.serializeArray()
235-
.map(v => list[Number(v.name.replace('selection-checkbox-', ''))])
235+
.map(v => list[Num(v.name.replace('selection-checkbox-', ''))])
236236
window.layer.close(layerIndex)
237237
if (list.length) {
238238
$btn.remove()

src/plugins/list.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@ import { RecoverRememberMe } from '@/plugins/recover-remember-me'
55
import { Rearrange } from '@/plugins/rearrange'
66
import { Score } from '@/plugins/score'
77
import { SubitemScore } from '@/plugins/subitem-score'
8-
import { TrainingScheme } from '@/plugins/training-scheme'
9-
import { UserExperienceImprovementProgram } from '@/plugins/user-experience-improvement-program'
8+
// import { TrainingScheme } from '@/plugins/training-scheme'
9+
// import { UserExperienceImprovementProgram } from '@/plugins/user-experience-improvement-program'
1010
import { DataAnalysis } from '@/plugins/data-analysis'
1111
import { About } from '@/plugins/about'
1212
import { Feedback } from '@/plugins/feedback'
1313
import { Changelog } from '@/plugins/changelog'
1414
import { Donate } from '@/plugins/donate'
15-
import { BachelorDegree } from '@/plugins/bachelor-degree'
16-
import { ScuUietp } from '@/plugins/scu-uietp'
15+
// import { BachelorDegree } from '@/plugins/bachelor-degree'
16+
// import { ScuUietp } from '@/plugins/scu-uietp'
1717
import { Beautify } from '@/plugins/beautify'
1818
import { Setting } from '@/plugins/setting'
1919
// import courseEvaluation from '@/plugins/course-info-exchange'
@@ -22,7 +22,8 @@ import { SUAPlugin } from '@/core/types'
2222

2323
const necessaryPlugins = [DataAnalysis, Tooltip]
2424
const optionalPluginsBeforeLogin = [RecoverRememberMe]
25-
const optionalPluginsLoginedOnlySCU = [TrainingScheme, BachelorDegree, ScuUietp]
25+
// const optionalPluginsLoginedOnlySCU = [TrainingScheme, BachelorDegree, ScuUietp]
26+
const optionalPluginsLoginedOnlySCU: SUAPlugin[] = []
2627
const optionalPluginsLogined = [
2728
Beautify,
2829
Rearrange,
@@ -33,7 +34,7 @@ const optionalPluginsLogined = [
3334
// 之所以放到中间,是因为菜单的渲染顺序是和数组中的顺序一致的
3435
// 需要将「设置」菜单和「帮助」菜单放到最后
3536
...(isSCU() ? optionalPluginsLoginedOnlySCU : []),
36-
UserExperienceImprovementProgram,
37+
// UserExperienceImprovementProgram,
3738
Setting,
3839
About,
3940
Donate,

src/plugins/score/components/SemesterTranscript/Header.vue

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ import {
6868
reserveHigherCoursesForRetakenCourses,
6969
reserveMinorCourses
7070
} from '../../utils'
71+
import { Num } from '@/helper/util'
7172
7273
@Component
7374
export default class Header extends Vue {
@@ -130,8 +131,8 @@ export default class Header extends Vue {
130131
if (!rC || !r) {
131132
return semesterText + '成绩'
132133
}
133-
const sumC = Number(rC[1]) + Number(rC[2]) + Number(rC[3])
134-
const sum = Number(r[1]) + Number(r[2]) + Number(r[3] === '' ? 1 : 2)
134+
const sumC = Num(rC[1]) + Num(rC[2]) + Num(rC[3])
135+
const sum = Num(r[1]) + Num(r[2]) + Num(r[3] === '' ? 1 : 2)
135136
let suffix = ''
136137
if (sum === sumC) {
137138
suffix = '(本学期)'

src/plugins/score/components/SemesterTranscript/Transcript.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ table.gpa-st-table.table.table-striped.table-bordered.table-hover
5353
td.center {{ courseItem.gradePoint }}
5454
td.center(v-if='type === `full`') {{ courseItem.rank }}
5555
td.center(v-if='type !== `compact`') {{ courseItem.examTime }}
56-
//- td.center(v-if='type !== `compact`') {{ courseItem.courseTeacherList[0].teacherName}}{{ courseItem.courseTeacherList.filter(({ teacherNumber }) => Number(teacherNumber).toString() === teacherNumber).length > 1 ? ' 等' : ''}}
56+
//- td.center(v-if='type !== `compact`') {{ courseItem.courseTeacherList[0].teacherName}}{{ courseItem.courseTeacherList.filter(({ teacherNumber }) => Num(teacherNumber).toString() === teacherNumber).length > 1 ? ' 等' : ''}}
5757
//- td.center(v-if='type !== `compact`') {{ courseItem.unpassedReasonExplain }}
5858
td.center(v-if='type !== `compact` && isSubitemScorePluginEnabled')
5959
button.btn.btn-info.btn-xs.btn-round(

src/plugins/score/utils.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { Num } from '@/helper/util'
12
import { CourseScoreRecord } from './types'
23

34
/**
@@ -8,7 +9,7 @@ import { CourseScoreRecord } from './types'
89
* @returns 保留对应位数后的小数
910
*/
1011
function reserveDigits(num: number, fractionDigits = 3): number {
11-
return Number(num.toFixed(fractionDigits))
12+
return Num(num.toFixed(fractionDigits))
1213
}
1314

1415
/**
@@ -149,7 +150,7 @@ export function reserveHigherCoursesForRetakenCourses(
149150
): CourseScoreRecord[] {
150151
return Object.values(
151152
Object.entries(arr)
152-
.sort((a, b) => Number(a[1].courseScore) - Number(b[1].courseScore))
153+
.sort((a, b) => Num(a[1].courseScore) - Num(b[1].courseScore))
153154
.reduceRight(
154155
(acc, cur) =>
155156
acc[cur[1].courseNumber]
@@ -158,7 +159,7 @@ export function reserveHigherCoursesForRetakenCourses(
158159
{} as Record<string, [string, CourseScoreRecord]>
159160
)
160161
)
161-
.sort((a, b) => Number(a[0]) - Number(b[0]))
162+
.sort((a, b) => Num(a[0]) - Num(b[0]))
162163
.map((v) => v[1])
163164
}
164165

@@ -173,7 +174,7 @@ function reserveNewerCoursesForRetakenCourses(
173174
): CourseScoreRecord[] {
174175
return Object.values(
175176
arr
176-
.sort((a, b) => Number(a.examTime) - Number(b.examTime))
177+
.sort((a, b) => Num(a.examTime) - Num(b.examTime))
177178
.reduceRight(
178179
(acc, cur) =>
179180
acc[cur.courseNumber] ? acc : { ...acc, [cur.courseNumber]: cur },
@@ -193,7 +194,7 @@ function reserveOlderCoursesForRetakenCourses(
193194
): CourseScoreRecord[] {
194195
return Object.values(
195196
arr
196-
.sort((a, b) => Number(a.examTime) - Number(b.examTime))
197+
.sort((a, b) => Num(a.examTime) - Num(b.examTime))
197198
.reduce(
198199
(acc, cur) =>
199200
acc[cur.courseNumber] ? acc : { ...acc, [cur.courseNumber]: cur },
@@ -221,7 +222,7 @@ function getPointByScore(
221222
if (!r) {
222223
return undefined
223224
}
224-
const enrollmentYear = Number(r[0])
225+
const enrollmentYear = Num(r[0])
225226
if (enrollmentYear >= 2017) {
226227
// 2017-2018秋季学期起使用如下标准(Fall Term 2017-2018~Present)
227228
if (score >= 90) {
@@ -303,7 +304,7 @@ export function getLevelNameByScore(
303304
if (!r) {
304305
return undefined
305306
}
306-
const enrollmentYear = Number(r[0])
307+
const enrollmentYear = Num(r[0])
307308
if (enrollmentYear >= 2017) {
308309
// 2017-2018秋季学期起使用如下标准(Fall Term 2017-2018~Present)
309310
if (score >= 90) {
@@ -368,7 +369,7 @@ export function getLevelCodeByScore(
368369
if (!r) {
369370
return undefined
370371
}
371-
const enrollmentYear = Number(r[0])
372+
const enrollmentYear = Num(r[0])
372373
if (enrollmentYear >= 2017) {
373374
// 2017-2018秋季学期起使用如下标准(Fall Term 2017-2018~Present)
374375
if (score >= 90) {

src/plugins/setting/PluginManager.vue

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ import { SUAPluginMenu } from '@/core/types'
4949
import { fromPairs } from 'ramda'
5050
import { state } from '../../store'
5151
import local from '@/store/local'
52+
import { Num } from '@/helper/util'
5253
5354
interface PluginInfo {
5455
name: string
@@ -145,7 +146,7 @@ export default class PluginManager extends Vue {
145146
sensitivity: 'accent'
146147
})
147148
)
148-
.sort((a, b) => Number(b.isNecessary) - Number(a.isNecessary))
149+
.sort((a, b) => Num(b.isNecessary) - Num(a.isNecessary))
149150
150151
async onSwitchChange(): Promise<void> {
151152
const newPluginEnabledStates = fromPairs(

src/plugins/subitem-score/SubitemScore.vue

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ import { Vue, Component } from 'vue-property-decorator'
6262
import Loading from '@/plugins/common/components/Loading.vue'
6363
import { getPointByScore } from '../score/utils'
6464
import { emitDataAnalysisEvent } from '../data-analysis'
65-
import { notifyError } from '@/helper/util'
65+
import { notifyError, Num } from '@/helper/util'
6666
import { defaultTo, nth, pipe, split } from 'ramda'
6767
import subitems from './subitems.json'
6868
@@ -120,9 +120,7 @@ export default class SubitemScore extends Vue {
120120
121121
get gpa(): string {
122122
if (this.score) {
123-
return (
124-
getPointByScore(Number(this.score), this.semester) ?? ''
125-
).toString()
123+
return (getPointByScore(Num(this.score), this.semester) ?? '').toString()
126124
}
127125
return ''
128126
}
@@ -136,8 +134,8 @@ export default class SubitemScore extends Vue {
136134
* 解决浮点数计算精度误差,避免出现类似「13.799999999999999」这样的奇怪结果
137135
*/
138136
calcRightProductOfGradeAndFactor(score: string, factor: string): number {
139-
const scoreNum = Number(score)
140-
const factorNum = Number(factor)
137+
const scoreNum = Num(score)
138+
const factorNum = Num(factor)
141139
/**
142140
* 获取数字的小数位数
143141
*/
@@ -217,7 +215,7 @@ export default class SubitemScore extends Vue {
217215
this.loadingIsDone = true
218216
emitDataAnalysisEvent('分项成绩查询', '查询成功')
219217
} catch (error) {
220-
notifyError(error, '[分项成绩查询] 获取数据失败')
218+
notifyError(String(error), '[分项成绩查询] 获取数据失败')
221219
emitDataAnalysisEvent('分项成绩查询', '查询失败')
222220
}
223221
}

src/plugins/training-scheme/compareTrainingScheme.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import { getChineseNumber } from '@/helper/getter'
1313
import { Request, actions, state } from '@/store'
1414
import { emitDataAnalysisEvent } from '../data-analysis'
1515
import html2canvas from 'html2canvas'
16-
import { notifyError } from '@/helper/util'
16+
import { notifyError, Num } from '@/helper/util'
1717

1818
let trainingSchemeList: TrainingScheme[]
1919

@@ -87,8 +87,8 @@ function genQueryHTML(): string {
8787
${gradeList
8888
.sort(
8989
(a, b) =>
90-
Number(b.replace('级', '')) -
91-
Number(a.replace('级', ''))
90+
Num(b.replace('级', '')) -
91+
Num(a.replace('级', ''))
9292
)
9393
.map(v => `<option value="${v}">${v}</option>`)
9494
.join('')}
@@ -125,8 +125,8 @@ function genQueryHTML(): string {
125125
${gradeList
126126
.sort(
127127
(a, b) =>
128-
Number(b.replace('级', '')) -
129-
Number(a.replace('级', ''))
128+
Num(b.replace('级', '')) -
129+
Num(a.replace('级', ''))
130130
)
131131
.map(v => `<option value="${v}">${v}</option>`)
132132
.join('')}
@@ -674,8 +674,8 @@ async function query(): Promise<void> {
674674
{ info: info1, list: list1 },
675675
{ info: info2, list: list2 }
676676
] = await Promise.all([
677-
actions[Request.TRAINING_SCHEME](Number(majorNumber1)),
678-
actions[Request.TRAINING_SCHEME](Number(majorNumber2))
677+
actions[Request.TRAINING_SCHEME](Num(majorNumber1)),
678+
actions[Request.TRAINING_SCHEME](Num(majorNumber2))
679679
])
680680
hideLoadingAnimation()
681681
$('.sua-container-compare-training-scheme').append(
@@ -713,10 +713,10 @@ function save(): void {
713713
})
714714
canvas.toBlob(blob => {
715715
const majorName1 = trainingSchemeList.filter(
716-
({ majorId }) => majorId === Number($('#query-major-1 #major').val())
716+
({ majorId }) => majorId === Num($('#query-major-1 #major').val())
717717
)[0].majorName
718718
const majorName2 = trainingSchemeList.filter(
719-
({ majorId }) => majorId === Number($('#query-major-2 #major').val())
719+
({ majorId }) => majorId === Num($('#query-major-2 #major').val())
720720
)[0].majorName
721721
const grade1 = $('#query-major-1 #grade').val()
722722
const grade2 = $('#query-major-2 #grade').val()
@@ -775,7 +775,7 @@ function initEvents(): void {
775775
async function selectSelfMajorAndQuery(): Promise<void> {
776776
const selfMajorNumber = state.user.programPlanNumber
777777
const selfSchemeInfo = trainingSchemeList.filter(
778-
v => Number(v.majorId) === selfMajorNumber
778+
v => Num(v.majorId) === selfMajorNumber
779779
)[0]
780780
$('#query-major-1 #grade').val(selfSchemeInfo.grade)
781781
$('#query-major-2 #grade').val(selfSchemeInfo.grade)

0 commit comments

Comments
 (0)