保利威文档中心

幫助中心

答題卡元件

更新時間:2024-04-22 19:18:32

答題卡元件包含普通答題和快速問答兩種型別的元件,兩種元件採用同樣的事件體系,所以僅需要實例化一個答題卡 SDK,將同一個實例傳給兩種不同的答題元件使用。

  • 普通答題有單選、多選、評分和投票這幾種題型,並且還具有限時答題功能。
  • 快速問答介面與普通答題不同,且僅包含單選和多選題目。

在引入及使用本功能元件前,需要先對互動功能接收端 SDK 進行公共配置,詳情請查看:互動功能接收端 UI 元件 - 配置 SDK

普通答題

引入

線上檔案引入方式

// script 标签引入,根据版本号引入JS版本。
<script src="https://websdk.videocc.net/interactions-receive-sdk-ui-default/0.24.0/lib/PcAnswerCard/PcAnswerCard.umd.min.js"></script>
// PC端
<script>
    const AnswerCard = window.PolyvIRScene.PcAnswerCard.default;
</script>
// script 标签引入,根据版本号引入JS版本。
<script src="https://websdk.videocc.net/interactions-receive-sdk-ui-default/0.24.0/lib/MobileAnswerCard/MobileAnswerCard.umd.min.js"></script>
// 移动端
<script>
    const AnswerCard = window.PolyvIRScene.MobileAnswerCard.default;
</script>

import 方式引入(推薦)

 // PC端
 import AnswerCard from '@polyv/interactions-receive-sdk-ui-default/lib/PcAnswerCard/index';
// 移动端
import AnswerCard from '@polyv/interactions-receive-sdk-ui-default/lib/MobileAnswerCard/index';  

使用方式

答題卡元件內部基於 SDK 處理了大部分業務邏輯,接入方僅需監聽 to-showto-hide 事件,去控制元件的可見性即可。另外,status-changed 事件會在答題資料發生變化時觸發,並且含有答題狀態,可根據該狀態做相應處理,比如修改模態框/提示文字等。

程式碼範例

以 PC 端接入為例:

<template>
  <div v-show="isShowAnswerCard">
    <h2>{{ answerCardTitle }}</h2>
    <answer-card
      :answer-card-sdk="answerCardSdk"
      @to-show="onSetAnswerCardVisible(true)"
      @to-hide="onSetAnswerCardVisible(false)"
      @status-changed="onStatusChanged"
    />
  </div>
</template>

<script>
import { AnswerCard as AnswerCardSDK } from '@polyv/interactions-receive-sdk';
import AnswerCard from '@polyv/interactions-receive-sdk-ui-default/lib/PcAnswerCard/index';   

export default {
  components: {
    AnswerCard,
  },

  data() {
    return {
      // 答题卡SDK实例
      answerCardSdk,
      // 是否显示答题卡
      isShowAnswerCard: false,
      // 外部弹窗(容器)标题
      answerCardTitle: '',
    };
  },

  created() {
    this.answerCardSdk = new AnswerCardSDK();
  },

  beforeDestroy() {
    this.answerCardSdk?.destroy();
  },

  methods: {
    onSetAnswerCardVisible(visible) {
      this.isShowAnswerCard = visible;
    },

    onStatusChanged(status) {
      if (status === 'isShowResult' || status === 'isShowAnswer') {
        this.answerCardTitle = this.answerCardSdk.curSubmittedAnswer ? '答题结果' : '未作答';
      } else {
        this.answerCardTitle = '答题卡';
      }
    },
  },
};
</script>

Attributes

屬性名 類型 預設值 含義
answerCardSdk Object null 答題卡 SDK 實例
lang string:'zh_CN', 'en' 'zh_CN' 語言
delayTime number 行動端 8000,PC端 2000 延遲觸發顯示時間,單位毫秒

Events

事件名 參數類型 參數含義 說明
to-show Object 題目資料 收到題目後觸發,表示需要顯示彈窗
to-hide Object 題目資料 答題終止後觸發,表示需要隱藏彈窗
status-changed string: 'isShowQuestion', 'isShowResult', 'isShowAnswer' 答題卡內部顯示狀態 答題卡內部顯示狀態發生變化時觸發。isShowQuestion:正在顯示題目,PC和行動端元件共有狀態;isShowResult:正在顯示答題結果;PC和行動端元件共有狀態;isShowAnswer:正在顯示答案,行動端元件特有狀態。可根據此狀態,執行修改彈窗標題等操作。見demo示範。
to-show 事件參數說明

to-show 事件包含一個物件型別的事件參數,該物件具體欄位如下。

屬性名 類型 含義
itemType number: 0, 1 答題卡類型,0 表示普通答題卡,1 表示快速問答
type string: 'C', 'R', 'S', 'V' 題目類型, C:多選題, R:單選題, S:評分題, V:投票題
name string 題目描述
questionId string 題目id
duration number 限時題目特有欄位,答題時間,單位秒
options string[] 選項陣列
tips string[] 提示陣列(評分題特有,分值提示)
to-hide 事件參數說明

to-hide 事件包含一個物件型別的事件參數,該物件具體欄位如下。

屬性名 類型 含義
itemType number: 0, 1 答題卡類型,0 表示普通答題卡,1 表示快速問答
type string 題目類型
questionId string 題目id

Methods

方法名 參數 說明
backToResult 無參數 將答題卡元件內部狀態切換成"isShowResult" (檢視結果) 狀態,僅適用於行動端元件

快速問答

接入邏輯同普通答題。可基於 to-showto-hide 事件的參數判斷題目為單選/多選。

引入

線上檔案引入方式

// script 标签引入,根据版本号引入JS版本。
<script src="https://websdk.videocc.net/interactions-receive-sdk-ui-default/0.24.0/lib/PcQuickAnswer/PcQuickAnswer.umd.min.js"></script>
// PC端
const QuickAnswerCard = window.PolyvIRScene.PcQuickAnswer.default;
// script 标签引入,根据版本号引入JS版本。
<script src="https://websdk.videocc.net/interactions-receive-sdk-ui-default/0.24.0/lib/MobileQuickAnswer/MobileQuickAnswer.umd.min.js"></script>
// 移动端
const QuickAnswerCard = window.PolyvIRScene.MobileQuickAnswer.default;

import 方式引入(推薦)

// PC 端
import QuickAnswerCard from '@polyv/interactions-receive-sdk-ui-default/lib/PcQuickAnswer/index';   
// 移动端
import QuickAnswerCard from '@polyv/interactions-receive-sdk-ui-default/lib/MobileQuickAnswer/index';  

使用方式

同樣地,PC端快速問答僅提供內容元素,所以需要接入方設定容器元素和控制可見性。

程式碼範例

// 快速问答基础 mixin
import { AnswerCard as AnswerCardSDK } from '@polyv/interactions-receive-sdk';

export default {
  data() {
    return {
      // 答题卡SDK实例
      answerCardSdk,
      // 是否显示答题卡
      isShowAnswerCard: false,
    };
  },

  created() {
    this.answerCardSdk = new AnswerCardSDK();
  },

  beforeDestroy() {
    this.answerCardSdk?.destroy();
  },

  methods: {
    onSetQuickAnswerCardVisible(visible, question) {
      this.isShowAnswerCard = visible;
    },
  },
};
<!-- @file 快速问答 PC 端 -->
<template>
  <div v-show="isShowAnswerCard">
    <quick-answer-card
      :answer-card-sdk="answerCardSdk"
      @to-show="(question) => onSetQuickAnswerCardVisible(true, question)"
      @to-hide="(question) => onSetQuickAnswerCardVisible(false, question)"
    />
  </div>
</template>

<script>
import mixin from './mixin';

export default {
  mixins: [mixin],
};
</script>

而web行動端顯示形式為橫向長條形的答題卡,目前Polyv SaaS 平台直播觀看頁會將其顯示在行動端選單之上。行動端元件內部會控制快速問答的顯示與否。

<!-- @file 快速问答移动端 -->
<template>
  <div>
    <quick-answer-card
      :answer-card-sdk="answerCardSdk"
    />
  </div>
</template>

<script>
import mixin from './mixin';

export default {
  mixins: [mixin],
};
</script>

Attributes

屬性名 類型 預設值 含義
answerCardSdk Object null 答題卡 SDK 實例

Events

事件名 參數類型 參數含義 說明
to-show 無參數 - 收到題目後觸發,表示需要顯示元件
to-hide 無參數 - 答題終止後觸發,表示需要隱藏元件
success-submit 無參數 - 提交答題卡成功後回調
联系客服,在线咨询