問卷元件
更新時間:2024-06-04 09:32:36
本元件為互動功能接收端的問卷元件,可實現問卷題目在觀眾端的展示、填寫提交以及問卷結果的展示。
在引入及使用本功能元件前,需要先對互動功能接收端SDK進行公共配置,詳情請查看:互動功能接收端 UI 元件 - 配置 SDK。
引入
線上檔案引入方式
// script 标签引入,根据版本号引入JS版本。
<script src="https://websdk.videocc.net/interactions-receive-sdk-ui-default/0.24.0/lib/PcQuestionnarie/PcQuestionnarie.umd.min.js"></script>
// PC 端
<script>
const Questionnaire = window.PolyvIRScene.PcQuestionnarie.default;
</script>
// script 标签引入,根据版本号引入JS版本。
<script src="https://websdk.videocc.net/interactions-receive-sdk-ui-default/0.24.0/lib/MobileQuestionnarie/MobileQuestionnarie.umd.min.js"></script>
// 移动端
<script>
const Questionnaire = window.PolyvIRScene.MobileQuestionnarie.default;
</script>
import 方式引入(推薦)
// PC 端
import Questionnaire from '@polyv/interactions-receive-sdk-ui-default/lib/PcQuestionnarie';
// 移动端
import Questionnaire from '@polyv/interactions-receive-sdk-ui-default/lib/MobileQuestionnarie';
程式碼範例
以 行動端 接入為例:
<template>
<!-- modal是一个弹窗组件,可根据界面风格自行设计 -->
<modal
:backable="hasBackBtn"
:title="questionnaireTitle"
:visible="isShowQuestionnaire"
@back="onModalReturn"
@close="onSetQuestionnaireVisible(false)"
>
<!-- 问卷组件主体 -->
<questionnaire
ref="questionnaire"
:visible="isShowQuestionnaire"
:questionnaire-sdk="questionnaireSdk"
@status-changed="onStatusChanged"
@to-show="onSetQuestionnaireVisible(true)"
@to-hide="onSetQuestionnaireVisible(false)"
@has-questionnaire="hasQuestionnaire"
/>
</modal>
</template>
<script>
import { Questionnaire as QuestionnaireSDK } from '@polyv/interactions-receive-sdk';
import Questionnaire from '@polyv/interactions-receive-sdk-ui-default/lib/MobileQuestionnarie';
const AllStatus = {
// 展示
isShowQuestion: 'isShowQuestion',
isShowResult: 'isShowResult',
isShowAnswer: 'isShowAnswer',
isShowQuestionnaireList: 'isShowQuestionnaireList'
};
export default {
components: {
Questionnaire,
},
data() {
return {
// 问卷SDK实例
questionnaireSdk,
// 是否显示问卷
isShowQuestionnaire: false,
// 是否显示后退键
hasBackBtn: false,
// 问卷状态,显示对应弹窗标题
currentStatus: AllStatus.isShowQuestion
};
},
computed: {
questionnaireTitle() {
const { currentStatus } = this;
let title = '';
this.hasBackBtn = false;
if (currentStatus === AllStatus.isShowQuestion) {
this.hasBackBtn = true;
title = '问卷';
} else if (currentStatus === AllStatus.isShowResult) {
title = '问卷结果';
} else if (currentStatus === AllStatus.isShowAnswer) {
title = '问卷结果';
} else if (currentStatus === AllStatus.isShowQuestionnaireList) {
title = '问卷列表';
}
return title;
}
},
created() {
this.questionnaireSdk = new QuestionnaireSDK();
},
beforeDestroy() {
this.questionnaireSdk?.destroy();
},
methods: {
showList() {
this.$refs.questionnaire.showList();
this.onSetQuestionnaireVisible(true);
},
// 弹窗后退键,回到问卷列表
onModalReturn() {
this.showList();
},
onSetQuestionnaireVisible(visible) {
this.isShowQuestionnaire = visible;
},
},
};
</script>
Attributes
| 屬性名 | 類型 | 預設值 | 含義 |
|---|---|---|---|
| lang | string:'zh_CN', 'en' | 'zh_CN' |
語言 |
| questionnaireSdk | Object | null | 問卷 SDK 實例 |
| delayTime | number | 行動端 8000,PC端 2000 | 延遲觸發顯示時間,單位毫秒 |
| visible | boolean | false | 判斷問卷隱藏時,重置內部狀態 |
Events
| 事件名 | 參數類型 | 參數含義 | 說明 |
|---|---|---|---|
| status-changed | string: 'isShowQuestion', 'isShowResult', 'isShowAnswer' | 問卷內部的彈窗狀態 | 問卷狀態改變時會觸發,可用於根據狀態展示不同UI,如自訂彈窗標題。isShowQuestion:顯示問卷題目;isShowResult:顯示問卷結果;isShowAnswer:同顯示問卷結果。 |
| to-show | 無參數 | - | 講師發布問卷或收到問卷結果後觸發,表示此時需要展示問卷彈窗 |
| to-hide | 無參數 | - | 講師終止問卷或觀眾提交問卷後觸發,表示此時需要隱藏問卷彈窗 |
| success-submit | 無參數 | - | 提交問卷成功後回呼 |
| has-questionnaire | boolean | 是否有需要答題的問卷 |
