backgroundSurvey.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. function selectedOption(question, optionCode) {
  2. const options = question && Array.isArray(question.options) ? question.options : []
  3. return options.find(option => String(option.code) === String(optionCode)) || null
  4. }
  5. function validateBackgroundAnswer(question, optionCode, customText) {
  6. const option = selectedOption(question, optionCode)
  7. if (!option) return '请选择当前题目的答案'
  8. if (option.customAllowed && !String(customText || '').trim()) return '请填写其他选项的具体内容'
  9. return ''
  10. }
  11. function createBackgroundAnswerPayload(question, optionCode, customText) {
  12. const option = selectedOption(question, optionCode)
  13. return {
  14. detailId: question && question.detailId,
  15. optionCode: optionCode || '',
  16. customText: option && option.customAllowed ? String(customText || '').trim() : ''
  17. }
  18. }
  19. function encodeQuery(params) {
  20. return Object.keys(params || {})
  21. .filter(key => params[key] !== undefined && params[key] !== null && params[key] !== '')
  22. .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`)
  23. .join('&')
  24. }
  25. function backgroundIntroUrl(params) {
  26. return `/pagesPublish/backgroundSurveyIntro?${encodeQuery(Object.assign({ stage: 'background' }, params))}`
  27. }
  28. function perillIntroUrl(params) {
  29. return `/pagesPublish/backgroundSurveyIntro?${encodeQuery(Object.assign({ stage: 'perill' }, params))}`
  30. }
  31. function questionnaireFillUrl(params) {
  32. return `/pagesPublish/questionnaireFill?${encodeQuery(params)}`
  33. }
  34. function isPublishablePerillQuestionnaire(questionnaire) {
  35. if (!questionnaire) return false
  36. return !questionnaire.purpose || questionnaire.purpose === 'PERILL'
  37. }
  38. module.exports = {
  39. selectedOption,
  40. validateBackgroundAnswer,
  41. createBackgroundAnswerPayload,
  42. encodeQuery,
  43. backgroundIntroUrl,
  44. perillIntroUrl,
  45. questionnaireFillUrl,
  46. isPublishablePerillQuestionnaire
  47. }