From 5a2e67214d45053475574f4e16d3023909f6b132 Mon Sep 17 00:00:00 2001 From: enncy <877526278@qq.com> Date: Fri, 25 Mar 2022 12:50:35 +0800 Subject: [PATCH] =?UTF-8?q?fix(cx):=20=E5=85=BC=E5=AE=B9cx=E9=80=89?= =?UTF-8?q?=E9=A1=B9=E8=8E=B7=E5=8F=96=E4=B8=8D=E5=88=B0=EF=BC=8C=E4=BB=A5?= =?UTF-8?q?=E5=8F=8A=E8=AE=BE=E7=BD=AE=E4=BF=9D=E5=AD=98bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/scripts/src/browser/core/create.element.ts | 13 ++++++++++--- packages/scripts/src/browser/core/utils.ts | 2 ++ .../src/browser/core/worker/question.resolver.ts | 2 +- packages/scripts/src/browser/cx/study.ts | 3 ++- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/packages/scripts/src/browser/core/create.element.ts b/packages/scripts/src/browser/core/create.element.ts index a128806c..763288b5 100644 --- a/packages/scripts/src/browser/core/create.element.ts +++ b/packages/scripts/src/browser/core/create.element.ts @@ -83,7 +83,13 @@ export function createSettingPanel(...settingItems: (SettingSelect | SettingInpu : type === "number" ? input.valueAsNumber : type === "object" - ? JSON.parse(input.value) + ? input.value + ? JSON.parse(input.value) + : {} + : type === "array" + ? input.value + ? JSON.parse(input.value) + : [] : parseFloat(input.value) || input.value; res.push([key.toString(), value]); setItem(key.toString(), value); @@ -175,7 +181,8 @@ export interface SettingInput extends SettingItem { | "week" /** 自定义类型 */ - | "object"; + | "object" + | "array"; } /** @@ -318,7 +325,7 @@ export function createWorkerSetting( { label: "题库配置", ref: "setting.answererWrappers", - type: "object", + type: "array", icons: [ { type: "bi bi-question-circle", diff --git a/packages/scripts/src/browser/core/utils.ts b/packages/scripts/src/browser/core/utils.ts index c9626700..bb1ac87a 100644 --- a/packages/scripts/src/browser/core/utils.ts +++ b/packages/scripts/src/browser/core/utils.ts @@ -3,6 +3,7 @@ import interact from "interactjs"; import { findBestMatch, Rating } from "string-similarity"; import { RawElements, SearchedElements } from "./worker/interface"; import { h } from "vue"; +import { logger } from "../../logger"; export async function sleep(period: number): Promise { return new Promise((resolve) => { @@ -155,6 +156,7 @@ export function domSearchAll( * */ export function answerSimilar(answers: string[], options: string[]): Rating[] { + logger("debug", "结果匹配", { answers, options }); return options.map((option) => findBestMatch(option, answers).bestMatch); } diff --git a/packages/scripts/src/browser/core/worker/question.resolver.ts b/packages/scripts/src/browser/core/worker/question.resolver.ts index 7354b3c4..ed3960ef 100644 --- a/packages/scripts/src/browser/core/worker/question.resolver.ts +++ b/packages/scripts/src/browser/core/worker/question.resolver.ts @@ -161,7 +161,7 @@ export function defaultQuestionResolve( /** 填空题处理器 */ completion: function (results, options, handler) { for (const answers of results.map((res) => res.answers.map((ans) => ans.answer))) { - if (answers.length === options.length) { + if (answers.length !== 0 && answers.length === options.length) { options.forEach((el, i) => { handler("completion", answers[i], el, ctx); }); diff --git a/packages/scripts/src/browser/cx/study.ts b/packages/scripts/src/browser/cx/study.ts index 685f9149..0a1bda3b 100644 --- a/packages/scripts/src/browser/cx/study.ts +++ b/packages/scripts/src/browser/cx/study.ts @@ -158,7 +158,8 @@ async function chapterTestTask(setting: ScriptSettings["cx"]["work"], frame: HTM root: TiMu, elements: { title: ".Zy_TItle .clearfix", - options: ".Zy_ulTop li", + /** 兼容各种选项 */ + options: "ul li", type: 'input[id^="answertype"]', }, /** 默认搜题方法构造器 */