Authored by yyq

支持多项关联问题

@@ -14,6 +14,24 @@ const _fillQuestionContents = data => { @@ -14,6 +14,24 @@ const _fillQuestionContents = data => {
14 return data; 14 return data;
15 }; 15 };
16 16
  17 +const _handelSubQuestion = (qs, jid) => {
  18 + if (qs) {
  19 + qs = _.concat([], qs);
  20 +
  21 + _.forEach(qs, value => {
  22 + Object.assign(value, {
  23 + subQs: true,
  24 + jid: jid
  25 + });
  26 + _fillQuestionContents(value);
  27 + });
  28 +
  29 + }
  30 +
  31 + return qs;
  32 +
  33 +};
  34 +
17 module.exports = class extends global.yoho.BaseModel { 35 module.exports = class extends global.yoho.BaseModel {
18 constructor(ctx) { 36 constructor(ctx) {
19 super(ctx); 37 super(ctx);
@@ -62,15 +80,17 @@ module.exports = class extends global.yoho.BaseModel { @@ -62,15 +80,17 @@ module.exports = class extends global.yoho.BaseModel {
62 let data = _.get(result, '[1].data', {}); 80 let data = _.get(result, '[1].data', {});
63 81
64 if (data.questions) { 82 if (data.questions) {
65 - _.forEach(data.questions, value => { 83 + _.forEach(data.questions, (value, key) => {
66 if (!_.isEmpty(value.questionContents)) { 84 if (!_.isEmpty(value.questionContents)) {
67 - _.forEach(value.questionContents, subval => {  
68 - _fillQuestionContents(subval.jumpQuestion);  
69 -  
70 - if (subval.jumpQuestion) {  
71 - value.hasSub = true;  
72 - _.set(subval, 'jumpQuestion.subQs', true); 85 + _.forEach(value.questionContents, (subval, subkey) => {
  86 + if (!subval.jumpQuestion) {
  87 + return;
73 } 88 }
  89 +
  90 + value.hasSub = true;
  91 + subval.jid = `${key}-${subkey}`;
  92 + subval.jumpQuestion = _handelSubQuestion(subval.jumpQuestion,
  93 + subval.jid);
74 }); 94 });
75 } 95 }
76 96
1 -<dl class="{{#if subQs}}sub-qs-item sub-qs{{questionIndex}} hide{{^}}qs-item{{/if}}" data-index="{{questionIndex}}" data-type="{{questionType}}"> 1 +<dl class="{{#if subQs}}sub-qs-item sub-{{jid}} hide{{^}}qs-item{{/if}}" data-index="{{questionIndex}}" data-type="{{questionType}}">
2 <dt>{{questionTitle}}</dt> 2 <dt>{{questionTitle}}</dt>
3 {{#isEqualOr questionType 1}} 3 {{#isEqualOr questionType 1}}
4 {{# questionContents}} 4 {{# questionContents}}
5 - <dd class="radio-option" data-index="{{@index}}"{{# jumpQuestion}} data-jid="{{questionIndex}}"{{/ jumpQuestion}}> 5 + <dd class="radio-option" data-index="{{@index}}"{{#if jid}} data-jid="{{jid}}"{{/if}}>
6 <span class="iconfont">&#xe6ea;</span> 6 <span class="iconfont">&#xe6ea;</span>
7 <div class="option-box">{{{option}}}</div> 7 <div class="option-box">{{{option}}}</div>
8 {{#if addon}} 8 {{#if addon}}
@@ -14,7 +14,7 @@ @@ -14,7 +14,7 @@
14 14
15 {{#isEqualOr questionType 2}} 15 {{#isEqualOr questionType 2}}
16 {{# questionContents}} 16 {{# questionContents}}
17 - <dd class="check-option" data-index="{{@index}}"{{# jumpQuestion}} data-jid="{{questionIndex}}"{{/ jumpQuestion}}> 17 + <dd class="check-option" data-index="{{@index}}"{{#if jid}} data-jid="{{jid}}"{{/if}}>
18 <span class="iconfont">&#xe6ea;</span> 18 <span class="iconfont">&#xe6ea;</span>
19 <div class="option-box">{{{option}}}</div> 19 <div class="option-box">{{{option}}}</div>
20 {{#if addon}} 20 {{#if addon}}
@@ -96,7 +96,7 @@ let question = { @@ -96,7 +96,7 @@ let question = {
96 96
97 for (i = 0; i < ids.length; i++) { 97 for (i = 0; i < ids.length; i++) {
98 if (ids[i]) { 98 if (ids[i]) {
99 - $wrap.find('.sub-qs' + ids[i]).removeClass('hide'); 99 + $wrap.find('.sub-' + ids[i]).removeClass('hide');
100 } 100 }
101 } 101 }
102 $wrap.slideDown(); 102 $wrap.slideDown();