优化问卷回答界面及功能
This commit is contained in:
1 parent
1ab9f9c458
commit
ed5eb9ca52
13 files changed
+6122
-86
No files matched your search
@@ -1,6 +1,13 @@
|
||||
import request from '@/utils/request';
|
||||
import { AxiosPromise } from 'axios';
|
||||
import { SatSurveyVO, SatSurveyForm, SatSurveyQuery } from '@/api/hq/answerSurvey/types';
|
||||
import {
|
||||
SatSurveyVO,
|
||||
SatSurveyForm,
|
||||
SatSurveyQuery,
|
||||
SubmitSurveyAnswerForm,
|
||||
SatRecordVO,
|
||||
SurveyStatisticsVO
|
||||
} from '@/api/hq/answerSurvey/types';
|
||||
|
||||
/**
|
||||
* 查询问卷列表
|
||||
@@ -134,7 +141,7 @@ export const getUserSurveyAnswer = (surveyId: string | number): AxiosPromise<any
|
||||
* 提交问卷答案
|
||||
* @param data 答案数据
|
||||
*/
|
||||
export const submitSurveyAnswer = (data: any) => {
|
||||
export const submitSurveyAnswer = (data: SubmitSurveyAnswerForm): AxiosPromise<SatRecordVO> => {
|
||||
return request({
|
||||
url: '/hq/satSurvey/answer/submit',
|
||||
method: 'post',
|
||||
@@ -146,10 +153,56 @@ export const submitSurveyAnswer = (data: any) => {
|
||||
* 保存问卷答案草稿
|
||||
* @param data 答案数据
|
||||
*/
|
||||
export const saveSurveyDraft = (data: any) => {
|
||||
export const saveSurveyDraft = (data: SubmitSurveyAnswerForm): AxiosPromise<SatRecordVO> => {
|
||||
return request({
|
||||
url: '/hq/satSurvey/answer/draft',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 获取问卷统计信息
|
||||
* @param surveyId 问卷ID
|
||||
*/
|
||||
export const getSurveyStatistics = (surveyId: string | number): AxiosPromise<SurveyStatisticsVO> => {
|
||||
return request({
|
||||
url: '/hq/satSurvey/' + surveyId + '/statistics',
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 获取用户答题记录详情
|
||||
* @param recordId 答题记录ID
|
||||
*/
|
||||
export const getAnswerRecord = (recordId: string | number): AxiosPromise<SatRecordVO> => {
|
||||
return request({
|
||||
url: '/hq/satSurvey/answer/record/' + recordId,
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 获取问卷的所有答题记录列表
|
||||
* @param surveyId 问卷ID
|
||||
* @param query 查询参数
|
||||
*/
|
||||
export const getSurveyAnswerRecords = (surveyId: string | number, query?: any): AxiosPromise<SatRecordVO[]> => {
|
||||
return request({
|
||||
url: '/hq/satSurvey/' + surveyId + '/records',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除答题记录
|
||||
* @param recordId 答题记录ID
|
||||
*/
|
||||
export const deleteAnswerRecord = (recordId: string | number) => {
|
||||
return request({
|
||||
url: '/hq/satSurvey/answer/record/' + recordId,
|
||||
method: 'delete'
|
||||
});
|
||||
};
|
||||
@@ -212,5 +212,279 @@ export interface SatSurveyQuery extends PageQuery {
|
||||
params?: any;
|
||||
}
|
||||
|
||||
// ==========================================
|
||||
// 答题相关类型定义
|
||||
// ==========================================
|
||||
|
||||
/**
|
||||
* 答题答案VO
|
||||
*/
|
||||
export interface SatAnswerVO {
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
id: string | number;
|
||||
|
||||
/**
|
||||
* 答题记录ID
|
||||
*/
|
||||
recordId: string | number;
|
||||
|
||||
/**
|
||||
* 题目ID
|
||||
*/
|
||||
questionId: string | number;
|
||||
|
||||
/**
|
||||
* 题目类型(1单选题 2多选题 3问答题)
|
||||
*/
|
||||
questionType: string;
|
||||
|
||||
/**
|
||||
* 选项ID(单选题、多选题用,问答题为NULL)
|
||||
*/
|
||||
optionId?: string | number;
|
||||
|
||||
/**
|
||||
* 选项值(A、B、C、D等)
|
||||
*/
|
||||
optionValue?: string;
|
||||
|
||||
/**
|
||||
* 选项文本内容
|
||||
*/
|
||||
optionText?: string;
|
||||
|
||||
/**
|
||||
* 答案值(单选题存选项值,多选题存逗号分隔选项值,问答题存文本内容)
|
||||
*/
|
||||
answerValue: string;
|
||||
|
||||
/**
|
||||
* 该答案得分
|
||||
*/
|
||||
answerScore: number;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
remark?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 答题记录VO
|
||||
*/
|
||||
export interface SatRecordVO {
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
id: string | number;
|
||||
|
||||
/**
|
||||
* 问卷ID
|
||||
*/
|
||||
surveyId: string | number;
|
||||
|
||||
/**
|
||||
* 答题人ID
|
||||
*/
|
||||
userId: string | number;
|
||||
|
||||
/**
|
||||
* 答题人姓名
|
||||
*/
|
||||
userName?: string;
|
||||
|
||||
/**
|
||||
* 答题开始时间
|
||||
*/
|
||||
startTime: string;
|
||||
|
||||
/**
|
||||
* 答题结束时间
|
||||
*/
|
||||
endTime?: string;
|
||||
|
||||
/**
|
||||
* 答题用时(秒)
|
||||
*/
|
||||
duration?: number;
|
||||
|
||||
/**
|
||||
* 总得分
|
||||
*/
|
||||
totalScore: number;
|
||||
|
||||
/**
|
||||
* 答题状态(0草稿 1已提交)
|
||||
*/
|
||||
status: string;
|
||||
|
||||
/**
|
||||
* 是否匿名
|
||||
*/
|
||||
isAnonymous: number;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
remark?: string;
|
||||
|
||||
/**
|
||||
* 答题详情列表
|
||||
*/
|
||||
answers?: SatAnswerVO[];
|
||||
}
|
||||
|
||||
/**
|
||||
* 提交答题的单个答案
|
||||
*/
|
||||
export interface SubmitAnswerItem {
|
||||
/**
|
||||
* 题目ID
|
||||
*/
|
||||
questionId: string | number;
|
||||
|
||||
/**
|
||||
* 题目类型(1单选题 2多选题 3问答题)
|
||||
*/
|
||||
questionType: string;
|
||||
|
||||
/**
|
||||
* 答案值
|
||||
* - 单选题:选项值,如 "A"
|
||||
* - 多选题:多个选项值,如 "A,C,D"
|
||||
* - 问答题:用户输入的文本内容
|
||||
*/
|
||||
answerValue: string;
|
||||
|
||||
/**
|
||||
* 选项详情(单选题和多选题需要)
|
||||
*/
|
||||
options?: Array<{
|
||||
optionId: string | number;
|
||||
optionValue: string;
|
||||
optionText: string;
|
||||
isSelected: boolean;
|
||||
}>;
|
||||
}
|
||||
|
||||
/**
|
||||
* 提交答题请求数据
|
||||
*/
|
||||
export interface SubmitSurveyAnswerForm {
|
||||
/**
|
||||
* 问卷ID
|
||||
*/
|
||||
surveyId: string | number;
|
||||
|
||||
/**
|
||||
* 答题开始时间
|
||||
*/
|
||||
startTime: string;
|
||||
|
||||
/**
|
||||
* 答题结束时间
|
||||
*/
|
||||
endTime: string;
|
||||
|
||||
/**
|
||||
* 是否匿名(1是 0否)
|
||||
*/
|
||||
isAnonymous: number;
|
||||
|
||||
/**
|
||||
* 答案列表
|
||||
*/
|
||||
answers: SubmitAnswerItem[];
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
remark?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 答题统计信息
|
||||
*/
|
||||
export interface SurveyStatisticsVO {
|
||||
/**
|
||||
* 问卷ID
|
||||
*/
|
||||
surveyId: string | number;
|
||||
|
||||
/**
|
||||
* 问卷标题
|
||||
*/
|
||||
surveyTitle: string;
|
||||
|
||||
/**
|
||||
* 总参与人数
|
||||
*/
|
||||
totalParticipants: number;
|
||||
|
||||
/**
|
||||
* 已完成人数
|
||||
*/
|
||||
completedCount: number;
|
||||
|
||||
/**
|
||||
* 草稿数量
|
||||
*/
|
||||
draftCount: number;
|
||||
|
||||
/**
|
||||
* 平均用时(秒)
|
||||
*/
|
||||
avgDuration: number;
|
||||
|
||||
/**
|
||||
* 平均得分
|
||||
*/
|
||||
avgScore: number;
|
||||
|
||||
/**
|
||||
* 题目统计详情
|
||||
*/
|
||||
questionStats?: QuestionStatItem[];
|
||||
}
|
||||
|
||||
/**
|
||||
* 题目统计项
|
||||
*/
|
||||
export interface QuestionStatItem {
|
||||
/**
|
||||
* 题目ID
|
||||
*/
|
||||
questionId: string | number;
|
||||
|
||||
/**
|
||||
* 题目标题
|
||||
*/
|
||||
questionTitle: string;
|
||||
|
||||
/**
|
||||
* 题目类型
|
||||
*/
|
||||
questionType: string;
|
||||
|
||||
/**
|
||||
* 回答人数
|
||||
*/
|
||||
answerCount: number;
|
||||
|
||||
/**
|
||||
* 选项统计(单选题、多选题)
|
||||
*/
|
||||
optionStats?: Array<{
|
||||
optionId: string | number;
|
||||
optionText: string;
|
||||
selectCount: number;
|
||||
selectRate: number;
|
||||
}>;
|
||||
|
||||
/**
|
||||
* 问答题统计
|
||||
*/
|
||||
textAnswers?: string[];
|
||||
}
|
||||
Reference in new issue
Block a user