123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377 |
- /**
- * 调查问卷管理相关常量定义
- * @fileoverview 问卷状态、模板类型、题目类型、必填状态等枚举值和工具函数
- */
- /**
- * 问卷状态枚举
- * @readonly
- * @enum {number}
- */
- export const SURVEY_STATUS = {
- /** 草稿 */
- DRAFT: 0,
- /** 已发布 */
- PUBLISHED: 1,
- /** 已结束 */
- ENDED: 2
- }
- /**
- * 是否模板枚举
- * @readonly
- * @enum {number}
- */
- export const SURVEY_TEMPLATE = {
- /** 否 */
- NO: 0,
- /** 是(模板) */
- YES: 1
- }
- /**
- * 题目类型枚举
- * @readonly
- * @enum {number}
- */
- export const QUESTION_TYPE = {
- /** 单选 */
- SINGLE_CHOICE: 1,
- /** 多选 */
- MULTIPLE_CHOICE: 2,
- /** 文本 */
- TEXT: 3
- }
- /**
- * 是否必填枚举
- * @readonly
- * @enum {number}
- */
- export const QUESTION_REQUIRED = {
- /** 否 */
- NO: 0,
- /** 是 */
- YES: 1
- }
- /**
- * 问卷状态配置映射
- * @readonly
- * @type {Record<number, {label: string, type: string, color: string}>}
- */
- export const SURVEY_STATUS_CONFIG = {
- [SURVEY_STATUS.DRAFT]: {
- label: '草稿',
- type: 'info',
- color: '#909399'
- },
- [SURVEY_STATUS.PUBLISHED]: {
- label: '已发布',
- type: 'success',
- color: '#67C23A'
- },
- [SURVEY_STATUS.ENDED]: {
- label: '已结束',
- type: 'danger',
- color: '#F56C6C'
- }
- }
- /**
- * 是否模板配置映射
- * @readonly
- * @type {Record<number, {label: string, type: string, color: string}>}
- */
- export const SURVEY_TEMPLATE_CONFIG = {
- [SURVEY_TEMPLATE.NO]: {
- label: '否',
- type: 'info',
- color: '#909399'
- },
- [SURVEY_TEMPLATE.YES]: {
- label: '是(模板)',
- type: 'warning',
- color: '#E6A23C'
- }
- }
- /**
- * 问卷状态选项数组
- * @readonly
- * @type {Array<{label: string, value: number}>}
- */
- export const SURVEY_STATUS_OPTIONS = [
- { label: '草稿', value: SURVEY_STATUS.DRAFT },
- { label: '已发布', value: SURVEY_STATUS.PUBLISHED },
- { label: '已结束', value: SURVEY_STATUS.ENDED }
- ]
- /**
- * 是否模板选项数组
- * @readonly
- * @type {Array<{label: string, value: number}>}
- */
- export const SURVEY_TEMPLATE_OPTIONS = [
- { label: '否', value: SURVEY_TEMPLATE.NO },
- { label: '是(模板)', value: SURVEY_TEMPLATE.YES }
- ]
- /**
- * 获取问卷状态标签
- * @param {number} status - 状态值
- * @returns {string} 状态标签
- */
- export function getSurveyStatusLabel(status) {
- return SURVEY_STATUS_CONFIG[status]?.label || '未知状态'
- }
- /**
- * 获取问卷状态类型
- * @param {number} status - 状态值
- * @returns {string} 状态类型
- */
- export function getSurveyStatusType(status) {
- return SURVEY_STATUS_CONFIG[status]?.type || 'info'
- }
- /**
- * 获取问卷状态颜色
- * @param {number} status - 状态值
- * @returns {string} 状态颜色
- */
- export function getSurveyStatusColor(status) {
- return SURVEY_STATUS_CONFIG[status]?.color || '#909399'
- }
- /**
- * 获取是否模板标签
- * @param {number} isTemplate - 模板值
- * @returns {string} 模板标签
- */
- export function getSurveyTemplateLabel(isTemplate) {
- return SURVEY_TEMPLATE_CONFIG[isTemplate]?.label || '未知类型'
- }
- /**
- * 获取是否模板类型
- * @param {number} isTemplate - 模板值
- * @returns {string} 模板类型
- */
- export function getSurveyTemplateType(isTemplate) {
- return SURVEY_TEMPLATE_CONFIG[isTemplate]?.type || 'info'
- }
- /**
- * 获取是否模板颜色
- * @param {number} isTemplate - 模板值
- * @returns {string} 模板颜色
- */
- export function getSurveyTemplateColor(isTemplate) {
- return SURVEY_TEMPLATE_CONFIG[isTemplate]?.color || '#909399'
- }
- /**
- * 验证问卷状态是否有效
- * @param {number} status - 状态值
- * @returns {boolean} 是否有效
- */
- export function isValidSurveyStatus(status) {
- return Object.values(SURVEY_STATUS).includes(status)
- }
- /**
- * 验证是否模板值是否有效
- * @param {number} isTemplate - 模板值
- * @returns {boolean} 是否有效
- */
- export function isValidSurveyTemplate(isTemplate) {
- return Object.values(SURVEY_TEMPLATE).includes(isTemplate)
- }
- /**
- * 获取所有问卷状态值
- * @returns {Array<number>} 状态值数组
- */
- export function getAllSurveyStatusValues() {
- return Object.values(SURVEY_STATUS)
- }
- /**
- * 获取所有是否模板值
- * @returns {Array<number>} 模板值数组
- */
- export function getAllSurveyTemplateValues() {
- return Object.values(SURVEY_TEMPLATE)
- }
- /**
- * 题目类型配置映射
- * @readonly
- * @type {Record<number, {label: string, type: string, color: string, icon: string}>}
- */
- export const QUESTION_TYPE_CONFIG = {
- [QUESTION_TYPE.SINGLE_CHOICE]: {
- label: '单选',
- type: 'primary',
- color: '#409EFF',
- icon: 'el-icon-circle-check'
- },
- [QUESTION_TYPE.MULTIPLE_CHOICE]: {
- label: '多选',
- type: 'success',
- color: '#67C23A',
- icon: 'el-icon-check'
- },
- [QUESTION_TYPE.TEXT]: {
- label: '文本',
- type: 'warning',
- color: '#E6A23C',
- icon: 'el-icon-edit'
- }
- }
- /**
- * 是否必填配置映射
- * @readonly
- * @type {Record<number, {label: string, type: string, color: string}>}
- */
- export const QUESTION_REQUIRED_CONFIG = {
- [QUESTION_REQUIRED.NO]: {
- label: '否',
- type: 'info',
- color: '#909399'
- },
- [QUESTION_REQUIRED.YES]: {
- label: '是',
- type: 'danger',
- color: '#F56C6C'
- }
- }
- /**
- * 题目类型选项数组
- * @readonly
- * @type {Array<{label: string, value: number}>}
- */
- export const QUESTION_TYPE_OPTIONS = [
- { label: '单选', value: QUESTION_TYPE.SINGLE_CHOICE },
- { label: '多选', value: QUESTION_TYPE.MULTIPLE_CHOICE },
- { label: '文本', value: QUESTION_TYPE.TEXT }
- ]
- /**
- * 是否必填选项数组
- * @readonly
- * @type {Array<{label: string, value: number}>}
- */
- export const QUESTION_REQUIRED_OPTIONS = [
- { label: '否', value: QUESTION_REQUIRED.NO },
- { label: '是', value: QUESTION_REQUIRED.YES }
- ]
- /**
- * 获取题目类型标签
- * @param {number} questionType - 题目类型值
- * @returns {string} 题目类型标签
- */
- export function getQuestionTypeLabel(questionType) {
- return QUESTION_TYPE_CONFIG[questionType]?.label || '未知类型'
- }
- /**
- * 获取题目类型类型
- * @param {number} questionType - 题目类型值
- * @returns {string} 题目类型类型
- */
- export function getQuestionTypeType(questionType) {
- return QUESTION_TYPE_CONFIG[questionType]?.type || 'info'
- }
- /**
- * 获取题目类型颜色
- * @param {number} questionType - 题目类型值
- * @returns {string} 题目类型颜色
- */
- export function getQuestionTypeColor(questionType) {
- return QUESTION_TYPE_CONFIG[questionType]?.color || '#909399'
- }
- /**
- * 获取题目类型图标
- * @param {number} questionType - 题目类型值
- * @returns {string} 题目类型图标
- */
- export function getQuestionTypeIcon(questionType) {
- return QUESTION_TYPE_CONFIG[questionType]?.icon || 'el-icon-question'
- }
- /**
- * 获取是否必填标签
- * @param {number} isRequired - 必填值
- * @returns {string} 必填标签
- */
- export function getQuestionRequiredLabel(isRequired) {
- return QUESTION_REQUIRED_CONFIG[isRequired]?.label || '未知'
- }
- /**
- * 获取是否必填类型
- * @param {number} isRequired - 必填值
- * @returns {string} 必填类型
- */
- export function getQuestionRequiredType(isRequired) {
- return QUESTION_REQUIRED_CONFIG[isRequired]?.type || 'info'
- }
- /**
- * 获取是否必填颜色
- * @param {number} isRequired - 必填值
- * @returns {string} 必填颜色
- */
- export function getQuestionRequiredColor(isRequired) {
- return QUESTION_REQUIRED_CONFIG[isRequired]?.color || '#909399'
- }
- /**
- * 验证题目类型是否有效
- * @param {number} questionType - 题目类型值
- * @returns {boolean} 是否有效
- */
- export function isValidQuestionType(questionType) {
- return Object.values(QUESTION_TYPE).includes(questionType)
- }
- /**
- * 验证是否必填值是否有效
- * @param {number} isRequired - 必填值
- * @returns {boolean} 是否有效
- */
- export function isValidQuestionRequired(isRequired) {
- return Object.values(QUESTION_REQUIRED).includes(isRequired)
- }
- /**
- * 判断题目类型是否需要选项
- * @param {number} questionType - 题目类型值
- * @returns {boolean} 是否需要选项
- */
- export function isQuestionTypeNeedOptions(questionType) {
- return questionType === QUESTION_TYPE.SINGLE_CHOICE || questionType === QUESTION_TYPE.MULTIPLE_CHOICE
- }
- /**
- * 获取所有题目类型值
- * @returns {Array<number>} 题目类型值数组
- */
- export function getAllQuestionTypeValues() {
- return Object.values(QUESTION_TYPE)
- }
- /**
- * 获取所有是否必填值
- * @returns {Array<number>} 必填值数组
- */
- export function getAllQuestionRequiredValues() {
- return Object.values(QUESTION_REQUIRED)
- }
|