edit.html 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. <script src="__CDN__/assets/libs/jquery/dist/jquery.min.js"></script>
  2. <script src="__CDN__/assets/addons/exam/js/vue.js"></script>
  3. <link rel="stylesheet" type="text/css" href="__CDN__/assets/addons/exam/css/common.css"></link>
  4. <script src="__CDN__/assets/addons/exam/js/element-ui/index.js"></script>
  5. <link rel="stylesheet" type="text/css" href="__CDN__/assets/addons/exam/js/element-ui/index.css"></link>
  6. <div id="app">
  7. <form id="question-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
  8. <div class="form-group">
  9. <label class="control-label col-xs-12 col-sm-2">{:__('Cate_id')}:</label>
  10. <div class="col-xs-12 col-sm-8">
  11. <input id="c-cate_id" data-rule="required" data-source="exam/cate/selectpage" data-params='{"custom[kind]":"QUESTION","isTree":true}' class="form-control selectpage" name="row[cate_id]" type="text" value="{$row.cate_id|htmlentities}">
  12. </div>
  13. </div>
  14. <div class="form-group">
  15. <label class="control-label col-xs-12 col-sm-2">{:__('Title')}:</label>
  16. <div class="col-xs-12 col-sm-8">
  17. <div id="c-title1">
  18. <textarea id="c-title" class="form-control editor" name="row[title]">{$row.title|htmlentities}</textarea>
  19. </div>
  20. <input id="c-title2" class="form-control" name="row[title_fill]" type="text" @change="changeTitle" v-model:value="title">
  21. </div>
  22. </div>
  23. <div class="form-group">
  24. <label class="control-label col-xs-12 col-sm-2">{:__('title_video')}:</label>
  25. <div class="col-xs-12 col-sm-8">
  26. <div class="input-group">
  27. <input id="c-title_video" class="form-control" size="50" name="row[title_video]" type="text" value="{$row.title_video|htmlentities}">
  28. <div class="input-group-addon no-border no-padding">
  29. <span><button type="button" id="plupload-title_video" class="btn btn-danger plupload" data-input-id="c-title_video" data-mimetype="mp4" data-multiple="false" data-preview-id="p-title_video"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
  30. <span><button type="button" id="fachoose-title_video" class="btn btn-primary fachoose" data-input-id="c-title_video" data-mimetype="mp4" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
  31. </div>
  32. <span class="msg-box n-right" for="c-title_video"></span>
  33. </div>
  34. <ul class="row list-inline plupload-preview" id="p-title_video"></ul>
  35. </div>
  36. </div>
  37. <div class="form-group">
  38. <label class="control-label col-xs-12 col-sm-2">{:__('Kind')}:</label>
  39. <div class="col-xs-12 col-sm-8">
  40. <div class="radio">
  41. {foreach name="kindList" item="vo"}
  42. <label for="row[kind]-{$key|htmlentities}">
  43. <input @change="changeKind" id="row[kind]-{$key|htmlentities}" name="row[kind]" type="radio" value="{$key|htmlentities}" {in name="key" value="$row.kind" }checked{/in} /> {$vo|htmlentities}
  44. </label>
  45. {/foreach}
  46. </div>
  47. </div>
  48. </div>
  49. <div class="form-group" id="is_material_child">
  50. <label class="control-label col-xs-12 col-sm-2">{:__('is_material_child')}:</label>
  51. <div class="col-xs-12 col-sm-8">
  52. <div class="radio">
  53. <label for="row[is_material_child]-0">
  54. <input @change="changeIsMaterialChild" id="row[is_material_child]-0" name="row[is_material_child]" type="radio" value="0" {eq name="$row.is_material_child" value="0"}checked{/eq} /> 否
  55. </label>
  56. <label for="row[is_material_child]-1">
  57. <input @change="changeIsMaterialChild" id="row[is_material_child]-1" name="row[is_material_child]" type="radio" value="1" {eq name="$row.is_material_child" value="1"}checked{/eq} /> 是
  58. </label>
  59. </div>
  60. </div>
  61. </div>
  62. <div class="form-group is_material_child">
  63. <label class="control-label col-xs-12 col-sm-2">{:__('material_question_id')}:</label>
  64. <div class="col-xs-12 col-sm-8">
  65. <input id="c-material_question_id" data-source="exam/question/index" data-field="title" data-params='{"custom[kind]":"MATERIAL"}' class="form-control selectpage" name="row[material_question_id]" type="text" value="{$row.material_question_id|htmlentities}">
  66. </div>
  67. </div>
  68. <div class="form-group is_material_child">
  69. <label class="control-label col-xs-12 col-sm-2">{:__('material_score')}:</label>
  70. <div class="col-xs-12 col-sm-8">
  71. <input id="c-material_score" class="form-control" name="row[material_score]" type="number" value="{$row.material_score|htmlentities}">
  72. </div>
  73. </div>
  74. <!--原题型-->
  75. <div v-show="kind === 'JUDGE' || kind === 'SINGLE' || kind === 'MULTI'">
  76. <div class="form-group">
  77. <label class="control-label col-xs-12 col-sm-2">{:__('Options_json')}:</label>
  78. <div class="col-xs-12 col-sm-8">
  79. <dl class="fieldlist" data-name="row[options_json]">
  80. <dd>
  81. <ins>选项</ins>
  82. <ins>内容</ins>
  83. </dd>
  84. <dd><a href="javascript:;" class="btn btn-sm btn-success btn-append"><i class="fa fa-plus"></i> {:__('Append')}</a></dd>
  85. <textarea name="row[options_json]" class="form-control hide" cols="30" rows="5">{$row.options_json|htmlentities}</textarea>
  86. </dl>
  87. <textarea id="c-options_img" name="row[options_img]" class="form-control hide" cols="30" rows="5">{$row.options_img|htmlentities}</textarea>
  88. </div>
  89. </div>
  90. <div class="form-group">
  91. <label class="control-label col-xs-12 col-sm-2">{:__('Answer')}:</label>
  92. <div class="col-xs-12 col-sm-8">
  93. <!--{ notin name="$row.kind" value="FILL,SHORT,MATERIAL" }-->
  94. <input id="c-answer" class="form-control" name="row[answer]" type="text" value="{$row.answer|htmlentities}" readonly="readonly">
  95. <!--{ /notin }-->
  96. </div>
  97. </div>
  98. </div>
  99. <!--填空题-->
  100. <div v-show="kind === 'FILL'">
  101. <div class="form-group">
  102. <label class="control-label col-xs-12 col-sm-2">填空位:</label>
  103. <div class="col-xs-12 col-sm-8">
  104. <button type="button" class="btn btn-success" @click="addFillOptions()"><i class="fa fa-plus"></i> 新增填空位</button>
  105. <div v-for="(option, index) in fillOptions" :key="index">
  106. <p style="margin-left: 10px; margin-top: 10px;">填空位({{(index + 1)}})答案(任意答案匹配即算正确)</p>
  107. <div class="fill-option" v-for="(answer, key) in option.answers" :key="key">
  108. <div>
  109. <input type="text" class="form-control" :name="'row[answer]['+index+'][answers][]'" v-model="fillOptions[index].answers[key]" placeholder="请输入答案" />
  110. </div>
  111. <div class="m-l-10">
  112. <button type="button" class="btn btn-danger" @click="deleteFillAnswer(index, key)"><i class="fa fa-trash"></i> </button>
  113. </div>
  114. </div>
  115. <button type="button" class="btn btn-info" @click="addFillAnswer(index)"><i class="fa fa-plus"></i> 新增答案项</button>
  116. </div>
  117. </div>
  118. </div>
  119. </div>
  120. <!--简答题-->
  121. <div v-show="kind === 'SHORT'">
  122. <div class="form-group">
  123. <label class="control-label col-xs-12 col-sm-2">标准答案:</label>
  124. <div class="col-xs-12 col-sm-8">
  125. <textarea id="c-short_answer" class="form-control" name="row[short_answer]" rows="5">{$row.answer|htmlentities}</textarea>
  126. </div>
  127. </div>
  128. <div class="form-group">
  129. <label class="control-label col-xs-12 col-sm-2">关键词:</label>
  130. <div class="col-xs-12 col-sm-8">
  131. <button type="button" class="btn btn-success" @click="addShortOptions()"><i class="fa fa-plus"></i> 新增关键词</button>
  132. <p style="margin-left: 10px; margin-top: 10px;" class="text-info">任意关键词匹配得分数</p>
  133. <div v-for="(option, index) in shortOptions" :key="index" class="row m-t-5">
  134. <div class="col-sm-7">
  135. <input type="text" class="form-control" :name="'row[answer_config]['+index+'][answer]'" v-model="option.answer" placeholder="请输入关键词" />
  136. </div>
  137. <div class="col-sm-2">
  138. <label class="m-t-5">得</label>
  139. <input type="number" step="1" min="1" class="form-control" :name="'row[answer_config]['+index+'][score]'" v-model="option.score" placeholder="请输入分数" style="width: 60px;"/>
  140. <label class="m-t-5">分</label>
  141. </div>
  142. <div class="col-sm-3">
  143. <button type="button" class="btn btn-danger" @click="deleteShortAnswer(index)"><i class="fa fa-trash"></i> </button>
  144. </div>
  145. </div>
  146. </div>
  147. </div>
  148. </div>
  149. <!--材料题-->
  150. <div v-show="kind === 'MATERIAL'">
  151. <div class="form-group">
  152. <label class="control-label col-xs-12 col-sm-2">选择题目:</label>
  153. <div class="col-xs-12 col-sm-8">
  154. <button class="btn btn-success" type="button" @click="selectMaterialQuestion()"><i class="fa fa-search"></i> 选择题目</button>
  155. <!--材料题子题目设置-->
  156. {include file="../application/admin/view/exam/question/material_questions.html" /}
  157. </div>
  158. </div>
  159. </div>
  160. <div class="form-group">
  161. <label class="control-label col-xs-12 col-sm-2">{:__('Difficulty')}:</label>
  162. <div class="col-xs-12 col-sm-8">
  163. <select id="c-difficulty" data-rule="required" class="form-control selectpicker" name="row[difficulty]">
  164. {foreach name="difficultyList" item="vo"}
  165. <option value="{$key|htmlentities}" {in name="key" value="$row.difficulty"}selected{/in}>{$vo|htmlentities}</option>
  166. {/foreach}
  167. </select>
  168. </div>
  169. </div>
  170. <div class="form-group">
  171. <label class="control-label col-xs-12 col-sm-2">{:__('Explain')}:</label>
  172. <div class="col-xs-12 col-sm-8">
  173. <!-- <input id="c-explain" class="form-control" name="row[explain]" type="text" value="{$row.explain|htmlentities}">-->
  174. <textarea id="c-explain" class="form-control editor" name="row[explain]">{$row.explain|htmlentities}</textarea>
  175. </div>
  176. </div>
  177. <div class="form-group">
  178. <label class="control-label col-xs-12 col-sm-2">{:__('explain_video')}:</label>
  179. <div class="col-xs-12 col-sm-8">
  180. <div class="input-group">
  181. <input id="c-explain_video" class="form-control" size="50" name="row[explain_video]" type="text" value="{$row.explain_video|htmlentities}">
  182. <div class="input-group-addon no-border no-padding">
  183. <span><button type="button" id="plupload-explain_video" class="btn btn-danger plupload" data-input-id="c-explain_video" data-mimetype="mp4" data-multiple="false" data-preview-id="p-explain_video"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
  184. <span><button type="button" id="fachoose-explain_video" class="btn btn-primary fachoose" data-input-id="c-explain_video" data-mimetype="mp4" data-multiple="false"><i class="fa fa-list"></i> {:__('Choose')}</button></span>
  185. </div>
  186. <span class="msg-box n-right" for="c-explain_video"></span>
  187. </div>
  188. <ul class="row list-inline plupload-preview" id="p-explain_video"></ul>
  189. </div>
  190. </div>
  191. <div class="form-group">
  192. <label class="control-label col-xs-12 col-sm-2">{:__('Status')}:</label>
  193. <div class="col-xs-12 col-sm-8">
  194. <div class="radio">
  195. {foreach name="statusList" item="vo"}
  196. <label for="row[status]-{$key|htmlentities}"><input id="row[status]-{$key|htmlentities}" name="row[status]" type="radio" value="{$key|htmlentities}" {in name="key" value="$row.status"}checked{/in} /> {$vo|htmlentities}</label>
  197. {/foreach}
  198. </div>
  199. </div>
  200. </div>
  201. <div class="form-group layer-footer">
  202. <label class="control-label col-xs-12 col-sm-2"></label>
  203. <div class="col-xs-12 col-sm-8">
  204. <input type="button" id="valid" @click="valid" class="hide">
  205. <button type="submit" class="btn btn-success btn-embossed disabled">{:__('OK')}</button>
  206. <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
  207. </div>
  208. </div>
  209. </form>
  210. </div>
  211. <!--试题设置扩展-->
  212. {include file="../application/admin/view/exam/question/extend.html" /}