add.html 14 KB

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