paperedit.html 53 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830
  1. {extend name="public/layout" /} {block name="title"}修改试卷{/block} {block name="body"}
  2. <style type="text/css">
  3. html,
  4. body {
  5. display: block;
  6. width: 100%;
  7. background-color: #fff;
  8. }
  9. .layui-fluid {
  10. display: block;
  11. border-radius: 5px;
  12. background-color: #ffffff;
  13. padding: 15px 30px;
  14. }
  15. .layui-input-inline {
  16. line-height: 38px;
  17. }
  18. .layui-input-inline input {
  19. margin-right: 10px;
  20. }
  21. .layui-form-item .layui-input-inline {}
  22. .input-indent-box-small {
  23. margin-left: 10px;
  24. }
  25. .layui-tab {
  26. padding: 15px;
  27. height: 100%;
  28. }
  29. .layui-table-view .layui-table th,
  30. .layui-table-view .layui-table td {
  31. text-align: center;
  32. border-color: #B6CADE;
  33. }
  34. .layui-table thead tr,
  35. .layui-table-header {
  36. background-color: #D8E6F1;
  37. }
  38. .upload-img .area i {
  39. font-size: 50px;
  40. color: #009688;
  41. }
  42. /*///*/
  43. .text-detail>span {
  44. font-size: 40px;
  45. }
  46. .imageDiv div {
  47. width: 100%;
  48. height: 100%;
  49. position: absolute;
  50. top: 0px;
  51. background-color: #e6e6e600;
  52. }
  53. .imageDiv div i {
  54. display: none;
  55. font-size: 31px;
  56. position: absolute;
  57. top: 37%;
  58. left: 40%;
  59. }
  60. .imageDiv div:hover {
  61. background-color: #e6e6e680;
  62. }
  63. .imageDiv div:hover i {
  64. display: block;
  65. cursor: pointer;
  66. }
  67. .layui-input-inline.input-longer-inline {
  68. width: 290px;
  69. }
  70. .layui-item-inline {
  71. width: 290px;
  72. display: inline;
  73. margin-left: 20px;
  74. margin-bottom: 5px;
  75. }
  76. .submit-btn {
  77. text-align: right;
  78. }
  79. .select_items {
  80. display: block;
  81. float: left;
  82. margin-left: 10px;
  83. }
  84. .layui-input-answer {
  85. width: 330px;
  86. }
  87. .layui-tab-title {
  88. position: relative;
  89. left: 0;
  90. height: 40px;
  91. white-space: nowrap;
  92. font-size: 0;
  93. border-bottom-width: 1px;
  94. border-bottom-style: solid;
  95. transition: all .2s;
  96. -webkit-transition: all .2s;
  97. border-color: #e6e6e6;
  98. color: #666;
  99. background-color: #f2f2f2;
  100. margin-bottom: 2%;
  101. }
  102. .layui-tab-title li {
  103. display: inline-block;
  104. vertical-align: middle;
  105. font-size: 14px;
  106. transition: all .2s;
  107. -webkit-transition: all .2s;
  108. position: relative;
  109. line-height: 40px;
  110. width: 25%;
  111. text-align: center;
  112. cursor: pointer;
  113. box-sizing: border-box;
  114. }
  115. .layui-tab-title li:hover {
  116. color: #249EFB;
  117. }
  118. .layui-tab-title .layui-this:hover {
  119. color: #fff;
  120. }
  121. .layui-tab-title .layui-this {
  122. color: #000;
  123. border-bottom-color: transparent;
  124. background-color: #249EFB;
  125. color: #FFFFFF;
  126. }
  127. .layui-tab-title .layui-this:after {
  128. position: absolute;
  129. left: 0;
  130. top: 0;
  131. content: '';
  132. width: 100%;
  133. height: 41px;
  134. border-width: 1px;
  135. border-style: solid;
  136. border-color: #e6e6e6;
  137. border-bottom-color: #fff;
  138. border-radius: 2px 2px 0 0;
  139. box-sizing: border-box;
  140. pointer-events: none;
  141. }
  142. .cancel,
  143. .cancel:hover {
  144. border: 1px solid #249EFB;
  145. background-color: #fff;
  146. color: #249EFB;
  147. }
  148. .layui-btn {
  149. padding: 0px 20px;
  150. }
  151. .submit-btn {
  152. text-align: right;
  153. }
  154. .select_items {
  155. display: block;
  156. float: left;
  157. margin-left: 10px;
  158. }
  159. .layui-input-answer {
  160. width: 330px;
  161. }
  162. @media screen and (min-width: 992px) {
  163. .layui-container {
  164. width: 900px;
  165. }
  166. }
  167. .layui-titlebox {
  168. position: relative;
  169. left: 0;
  170. height: 40px;
  171. white-space: nowrap;
  172. font-size: 0;
  173. border-bottom-width: 1px;
  174. border-bottom-style: solid;
  175. transition: all .2s;
  176. -webkit-transition: all .2s;
  177. border-color: #e6e6e6;
  178. color: #666;
  179. background-color: #f2f2f2;
  180. margin-bottom: 2%;
  181. }
  182. .layui-titlebox li {
  183. display: inline-block;
  184. vertical-align: middle;
  185. font-size: 14px;
  186. transition: all .2s;
  187. -webkit-transition: all .2s;
  188. position: relative;
  189. line-height: 40px;
  190. width: 25%;
  191. text-align: center;
  192. cursor: pointer;
  193. box-sizing: border-box;
  194. }
  195. .layui-titlebox .layui-this {
  196. color: #000;
  197. border-bottom-color: transparent;
  198. background-color: #249EFB;
  199. color: #FFFFFF;
  200. }
  201. .layui-titlebox .layui-this:after {
  202. position: absolute;
  203. left: 0;
  204. top: 0;
  205. content: '';
  206. width: 100%;
  207. height: 41px;
  208. border-width: 1px;
  209. border-style: solid;
  210. border-color: #e6e6e6;
  211. border-bottom-color: #fff;
  212. border-radius: 2px 2px 0 0;
  213. box-sizing: border-box;
  214. pointer-events: none;
  215. }
  216. .search_input {
  217. width: 38% !important;
  218. margin-right: 1%;
  219. float: left;
  220. height: 38px;
  221. border: 1px solid #e6e6e6;
  222. overflow: hidden;
  223. }
  224. .search_inputs {
  225. width: 32% !important;
  226. margin-right: 1%;
  227. float: left;
  228. height: 38px;
  229. /*border:1px solid #e6e6e6;*/
  230. overflow: hidden;
  231. padding-top: 10px;
  232. }
  233. .search_input .layui-select {
  234. width: 100%;
  235. border: 0 !important;
  236. }
  237. .wright {
  238. float: right !important;
  239. }
  240. .search_input input {
  241. border: 0;
  242. width: 100%;
  243. display: block;
  244. height: 100%;
  245. padding-left: 10px;
  246. }
  247. .wright_btn {
  248. float: right;
  249. width: 41.666667%;
  250. overflow: hidden;
  251. }
  252. .wleft_btn {
  253. width: 41.666667%;
  254. float: left;
  255. }
  256. .wright_btn div {
  257. float: left;
  258. }
  259. .radio-style {
  260. transform: scale(1.2, 1.2);
  261. margin: 0px 10px;
  262. }
  263. @media only screen and (min-width: 900px) {
  264. .layui-container,
  265. .layui-form-item .tant {
  266. width: 100% !important;
  267. }
  268. .layui-col-md5 {
  269. width: 41.66666667%;
  270. float: left;
  271. }
  272. .layui-col-md2 {
  273. width: 16.66666667%;
  274. float: left;
  275. }
  276. }
  277. .demo-transfer {
  278. width: 100%;
  279. }
  280. .layui-btn {
  281. padding: 0px 20px;
  282. }
  283. .layui-select-title {
  284. height: 38px;
  285. }
  286. .flex-row {
  287. display: flex;
  288. }
  289. .leftScore {
  290. width: 300px;
  291. }
  292. .rightScroe {
  293. width: calc(100% - 300px);
  294. box-sizing: border-box;
  295. padding-left: 20px;
  296. }
  297. .leftjige {
  298. width: 100%;
  299. display: flex;
  300. justify-content: space-between;
  301. }
  302. .danxuantitle {
  303. width: 100%;
  304. height: 30px;
  305. line-height: 30px;
  306. display: flex;
  307. justify-content: space-between;
  308. }
  309. .cleartext,
  310. .stow {
  311. color: #249EFB;
  312. cursor: pointer;
  313. }
  314. .itemScore {
  315. width: 100%;
  316. height: 30px;
  317. display: flex;
  318. justify-content: space-between;
  319. align-items: center;
  320. }
  321. .requireditag {
  322. font-style: normal;
  323. color: red;
  324. }
  325. .leftdanxuan {
  326. margin-top: 15px;
  327. border-top: 1px solid #ccc;
  328. padding-top: 10px;
  329. }
  330. .righttitle {
  331. width: 100%;
  332. height: 30px;
  333. display: flex;
  334. justify-content: space-between;
  335. align-items: center;
  336. border-bottom: 2px solid #f5f5f5;
  337. margin-bottom: 10px;
  338. }
  339. .dxtitle {
  340. width: 100%;
  341. height: 30px;
  342. display: flex;
  343. }
  344. .dxtitle>span {
  345. flex: 1;
  346. }
  347. .dxflexcenter {
  348. display: flex;
  349. justify-content: center;
  350. }
  351. .dxflex-end {
  352. flex: 1;
  353. display: flex;
  354. justify-content: flex-end;
  355. }
  356. .dxflex-end>span {
  357. color: #249EFB;
  358. }
  359. .pl15 {
  360. padding-left: 30px;
  361. }
  362. .pl15>div {
  363. line-height: 25px;
  364. }
  365. .itemRightline {
  366. border-bottom: 1px solid #f2f2f2;
  367. padding-bottom: 10px;
  368. margin-bottom: 15px;
  369. }
  370. .flex {
  371. display: flex;
  372. }
  373. .layui-icon-ok:before {
  374. transform: scale(0.5, 0.5) !important;
  375. }
  376. .fixed40 {
  377. position: fixed;
  378. bottom: 60px;
  379. left: 50%;
  380. transform: translateX(-50%);
  381. }
  382. </style>
  383. <body>
  384. <div class="layui-fluid">
  385. <form class="layui-form" enctype="multipart/form-data" lay-filter="layuiadmin-paper-form">
  386. <div class="layui-tab">
  387. <ul class="layui-tab-title">
  388. <li data-index="0" class="layui-this">创建试卷</li>
  389. <li data-index="1">选择试题</li>
  390. <li data-index="2">设置分值</li>
  391. <li data-index="3">发布考试</li>
  392. </ul>
  393. <div class="layui-tab-content">
  394. <!-- 创建试卷 -->
  395. <div class="layui-tab-item layui-show">
  396. <!-- <form class="layui-form" enctype="multipart/form-data" lay-filter="layuiadmin-paper-form"> -->
  397. <div class="layui-form-item">
  398. <label class="layui-form-label"><span style="color:red;">*</span>试卷名称:</label>
  399. <div class="layui-input-block">
  400. <input class="layui-input layui-input-inline input-longer-inline" type="text"
  401. name="name" value="{$data.name}" placeholder="试卷名称" lay-verify="required"
  402. title="试卷名称" autocomplete="off" id="nameElement">
  403. </div>
  404. </div>
  405. <div class="layui-form-item layui-hide">
  406. <label for="for_newbie" class="layui-form-label"><span
  407. style="color:red;">*</span>类型:</label>
  408. <div class="layui-input-block">
  409. <div class="layui-input-inline" style="width:100%;max-width: 205px;margin-left: 0;"
  410. required>
  411. <select id="for_newbie" name="for_newbie">
  412. <option value="">--请选择类型--</option>
  413. <option value="0" selected>课程考核</option>
  414. <option value="1">新兵考核</option>
  415. </select>
  416. </div>
  417. </div>
  418. </div>
  419. <div class="layui-form-item">
  420. <label class="layui-form-label">备注:</label>
  421. <div class="layui-input-block ">
  422. <input class="layui-input" type="text" name="desc" value="{$data.desc}" title="备注"
  423. autocomplete="off">
  424. </div>
  425. </div>
  426. <div class="layui-form-item submit-btn" style="text-align: center;margin-top: 30px;">
  427. <input class="layui-btn " type="button" id="firstStep" value="下一步">
  428. <input class="layui-btn cancel" type="button" lay-filter="cancel1" id="cancel1" value="取消">
  429. </div>
  430. <!-- </form> -->
  431. </div>
  432. <!-- 选择试题 -->
  433. <div class="layui-tab-item">
  434. <div class="layui-form-item" style="margin-left: 14px;width:97%;">
  435. <div class="wleft_btn">
  436. <div class="">
  437. <div class="search_input">
  438. <input class="input-longer-inline" type="text" name="keyword" id="keyword"
  439. value="" placeholder="请输入题干" title="请输入题干"
  440. autocomplete="off">
  441. </div>
  442. <div class="search_input layui-form" style="overflow: unset;">
  443. <select name="cate" id="cate" class="layui-select" lay-verify='' lay-search>
  444. <option value="">请选择分类</option>
  445. {volist name="data.cate" id="t"}
  446. <option value="{$t}">{$t}</option>
  447. {/volist}
  448. </select>
  449. </div>
  450. <div class="" style="float:right;">
  451. <button type="button" class="layui-btn" id="onSearch">搜索</button>
  452. </div>
  453. <div style="clear: both;"></div>
  454. </div>
  455. <div style="display: flex;align-items: center;justify-content: flex-start;width: 100%;">
  456. <div class="layui-input-block"
  457. style="display: flex;align-items: center;margin: 10px 10px 0px 0px;">
  458. <input type="checkbox" lay-skin="primary" lay-filter="radiosfilter" name="radios" id="single" class="radio-style"
  459. lay-filter="ChoiceRadio" value="单选" title="单选">
  460. <!-- <label for="single"> 单选 </label> -->
  461. <input type="checkbox" lay-skin="primary" lay-filter="radiosfilter" name="radios" value="多选" class="radio-style"
  462. lay-filter="ChoiceRadio" id="multi" title="多选">
  463. <!-- <label for="multi"> 多选 </label> -->
  464. <input type="checkbox" lay-skin="primary" lay-filter="radiosfilter" name="radios" value="判断" class="radio-style"
  465. lay-filter="ChoiceRadio" id="panduan" title="判断">
  466. <!-- <label for="panduan"> 判断 </label> -->
  467. <input type="checkbox" lay-skin="primary" lay-filter="radiosfilter" name="radios" value="简答" class="radio-style"
  468. lay-filter="ChoiceRadio" id="answer" title="简答">
  469. <!-- <label for="answer"> 简答 </label> -->
  470. </div>
  471. </div>
  472. </div>
  473. <div class="wright_btn">
  474. <div class="search_inputs">
  475. <span>已选择<span id="count">{$data.count}</span>题</span>
  476. </div>
  477. <div class="wright">
  478. <button type="button" class="layui-btn" id="clean">清除所有</button>
  479. </div>
  480. </div>
  481. <div class="wright_btn" style="font-size: 16px;line-height: 44px;">试卷试题</div>
  482. </div>
  483. <!-- <form class="layui-form" enctype="multipart/form-data" lay-filter="layuiadmin-paperaddques-form"> -->
  484. <div class="layui-form-item">
  485. <div class="layui-input-inline tant" style="width: 100%;">
  486. <div id="transfer-questions" class="demo-transfer"></div>
  487. </div>
  488. </div>
  489. <div class="layui-form-item submit-btn">
  490. <div class="layui-form-item submit-btn" style="text-align: center;">
  491. <input class="layui-btn " type="button" id="returnFirst" value="上一步">
  492. <input class="layui-btn " type="button" id="secondStep" value="下一步">
  493. </div>
  494. </div>
  495. <!-- </form> -->
  496. </div>
  497. <!-- 设置分值 -->
  498. <div class="layui-tab-item">
  499. <div class="flex-row">
  500. <div class="leftScore">
  501. <div class="leftjige">
  502. <div>总分:<input type="text" readonly id="total_score" name="total_score" value="100"
  503. style="width: 50px;border:none;outline: none;"></div>
  504. <div>及格设置:<input type="number" id="passExam" name="base_score" style="width: 80px;"
  505. min="0"></div>
  506. </div>
  507. <div id="scoreElement1"></div>
  508. </div>
  509. <div class="rightScroe">
  510. </div>
  511. </div>
  512. <div class="layui-form-item submit-btn fixed40">
  513. <div class="layui-form-item submit-btn" style="text-align: center;">
  514. <input class="layui-btn " type="button" id="returnSecond" value="上一步">
  515. <input class="layui-btn " type="button" id="threwStep" value="下一步">
  516. </div>
  517. </div>
  518. </div>
  519. <!-- 发布考试 -->
  520. <div class="layui-tab-item">
  521. <!-- <form class="layui-form" enctype="multipart/form-data" lay-filter="layuiadmin-publish-form"> -->
  522. <div class="layui-form-item" id="range">
  523. <label class="layui-form-label"><span style="color: red;">*</span>考试人员</label>
  524. <div class="layui-input-block">
  525. <div id="range_person"></div>
  526. </div>
  527. </div>
  528. <div class="layui-form-item layui-hide">
  529. <label class="layui-form-label"><span style="color:red;">*</span>考试对象:</label>
  530. <div class="layui-input-inline" style="width: 380px">
  531. <input type="radio" name="target_group" lay-filter="targetGroup" value="全员" title="全员"
  532. checked>
  533. <input type="radio" name="target_group" lay-filter="targetGroup" value="新兵" title="新兵">
  534. <input type="radio" name="target_group" lay-filter="targetGroup" value="老兵" title="老兵">
  535. </div>
  536. </div>
  537. <div class="layui-form-item">
  538. <label class="layui-form-label"><span style="color:red;">*</span>考试时长(分钟):</label>
  539. <div class="layui-input-block">
  540. <input class="layui-input layui-input-inline " type="number" id="duringtime"
  541. name="duringtime" value="{$data.duringtime}" placeholder="考试时长 比如:45" title="及格分数"
  542. autocomplete="off" lay-verify="required">
  543. </div>
  544. </div>
  545. <div class="layui-form-item">
  546. <label class="layui-form-label"><span style="color:red;">*</span>考试时间:</label>
  547. <div class="layui-input-inline ">
  548. <input type="text" class="layui-input layui-input-inline" name="starttime"
  549. id="starttime" placeholder="开始时间" autocomplete="off" lay-verify="required"
  550. value="{$data.starttime}">
  551. <span style="margin-right: 10px">至</span>
  552. <input type="text" class="layui-input layui-input-inline" name="endtime" id="endtime"
  553. placeholder="结束时间" autocomplete="off" lay-verify="required" value="{$data.endtime}">
  554. </div>
  555. </div>
  556. <div class="layui-form-item">
  557. <label class="layui-form-label">审核方式:</label>
  558. <div class="layui-input-block ">
  559. <input type="radio" name="checkway" lay-filter="checkway" value="sys" title="系统审核" {if
  560. $data.checkway=='sys' }checked{/if}>
  561. <input type="radio" name="checkway" lay-filter="checkway" value="employee" title="人工审核"
  562. {if $data.checkway=='employee' }checked{/if}>
  563. </div>
  564. </div>
  565. <div class="layui-form-item">
  566. <label class="layui-form-label">状态:</label>
  567. <div class="layui-input-block ">
  568. <input type="radio" name="state" lay-filter="state" value="0" title="保存草稿" {if
  569. $data.state=='0' }checked{/if}>
  570. <input type="radio" name="state" lay-filter="state" value="1" title="正式发布" {if
  571. $data.state=='1' }checked{/if}>
  572. </div>
  573. </div>
  574. <div class="layui-form-item {if $data.checkway=='sys' }layui-hide{/if}" id="person" >
  575. <label class="layui-form-label"><span style="color: red;">*</span>审核人员</label>
  576. <div class="layui-input-block">
  577. <div id="label"></div>
  578. </div>
  579. </div>
  580. <div class="layui-form-item">
  581. <label class="layui-form-label">批卷是否展示真实姓名:</label>
  582. <div class="layui-input-block ">
  583. <input type="radio" name="show_real_name" lay-filter="show_real_name" value="0" title="否" {if
  584. $data.show_real_name=='0' }checked{/if}>
  585. <input type="radio" name="show_real_name" lay-filter="show_real_name" value="1" title="是" {if
  586. $data.show_real_name=='1' }checked{/if}>
  587. </div>
  588. </div>
  589. <div class="layui-form-item submit-btn" style="text-align: center;">
  590. <input class="layui-btn " type="button" lay-filter="" id="returnThrew" value="上一步">
  591. <input class="layui-btn " type="button" lay-submit lay-filter="layuiadmin-publish-submit"
  592. id="layuiadmin-publish-submit" value="保存">
  593. </div>
  594. <!-- </form> -->
  595. </div>
  596. <input type="hidden" id="paper_id" name="paper_id" value="{$data.id}">
  597. </div>
  598. </div>
  599. </form>
  600. </div>
  601. </body>
  602. {/block}
  603. {block name="js"}
  604. <script src="__STATIC__/layui/layui/layui.js"></script>
  605. <script src="__STATIC__/layui/layui/lay/modules/xm-select.js" type="text/javascript" charset="utf-8"></script>
  606. <script>
  607. layui.config({
  608. base: '__LAYUI__/',
  609. urlbase: '/sys'
  610. }).extend({
  611. index: 'lib/index' //主入口模块
  612. }).use(['index', 'table', 'layedit', 'laydate', 'transfer'], function () {
  613. var $ = layui.$,
  614. layedit = layui.layedit,
  615. laydate = layui.laydate,
  616. transfer = layui.transfer,
  617. form = layui.form,
  618. allQuestionData = {},
  619. tb1 = null;
  620. $('#cancel1').click(function () {
  621. var index = parent.layer.getFrameIndex(window.name);
  622. parent.layer.close(index);
  623. })
  624. //------------------------------选择试题-------------------------
  625. var data1 = [];
  626. getQuestionFunc();
  627. function getQuestionFunc() {
  628. $.ajax({
  629. url: '{:url("exam/getExamQuestion")}',
  630. type: 'post',
  631. data: {},
  632. success: function (res) {
  633. if (res.code == 0) {
  634. data1 = res.data;
  635. }
  636. }
  637. });
  638. }
  639. var datastr2 = '{$choosedquestListstr|raw}';
  640. var data2 = JSON.parse(datastr2);
  641. //表格列
  642. var cols = [
  643. { type: 'checkbox', fixed: 'left' },
  644. { field: 'type', title: '题型' },
  645. { field: 'cate', title: '分类' },
  646. { field: 'ask', title: '题干' },
  647. ];
  648. //表格配置文件
  649. var tabConfig = { 'page': true, 'limits': [10, 50, 100], 'height': 400 }
  650. $('.layui-tab-title li').click(function () {
  651. let index = $(this).prop('dataset').index;
  652. if (index == 1||index == 3||index == 2) {
  653. setTimeout(() => {
  654. tb1 = transfer.render({
  655. elem: "#transfer-questions", //指定元素
  656. cols: cols, //表格列 支持layui数据表格所有配置
  657. data: [data1, data2],//[左表数据,右表数据[非必填]]
  658. tabConfig: tabConfig, //表格配置项 支持layui数据表格所有配置
  659. })
  660. searchkey();
  661. }, 500)
  662. }
  663. })
  664. getEditScorelist();
  665. $('#firstStep').click(function () {
  666. let val = $('#nameElement').val().trim();
  667. if (val) {
  668. $('.layui-tab-title').children().eq(1).addClass('layui-this').siblings().removeClass("layui-this");
  669. $('.layui-tab-item').eq(1).addClass('layui-show').siblings().removeClass("layui-show");
  670. setTimeout(() => {
  671. tb1 = transfer.render({
  672. elem: "#transfer-questions", //指定元素
  673. cols: cols, //表格列 支持layui数据表格所有配置
  674. data: [data1, data2],//[左表数据,右表数据[非必填]]
  675. tabConfig: tabConfig, //表格配置项 支持layui数据表格所有配置
  676. })
  677. }, 500)
  678. } else {
  679. layer.msg('请填写试卷名称', {
  680. anim: 6
  681. , time: 2000
  682. });
  683. }
  684. })
  685. $('#returnFirst').click(function () {
  686. $('.layui-tab-title').children().eq(0).addClass('layui-this').siblings().removeClass("layui-this");
  687. $('.layui-tab-item').eq(0).addClass('layui-show').siblings().removeClass("layui-show");
  688. })
  689. $('#secondStep').click(function () {
  690. var tranferdata = transfer.get(tb1, 'right', 'id');
  691. if (Array.isArray(tranferdata) && !tranferdata.length) {
  692. layer.msg('请选择试题', {
  693. anim: 6
  694. , time: 2000
  695. });
  696. return;
  697. }
  698. $('.layui-tab-title').children().eq(2).addClass('layui-this').siblings().removeClass("layui-this");
  699. $('.layui-tab-item').eq(2).addClass('layui-show').siblings().removeClass("layui-show");
  700. })
  701. $('#returnSecond').click(function () {
  702. $('.layui-tab-title').children().eq(1).addClass('layui-this').siblings().removeClass("layui-this");
  703. $('.layui-tab-item').eq(1).addClass('layui-show').siblings().removeClass("layui-show");
  704. setTimeout(() => {
  705. tb1 = transfer.render({
  706. elem: "#transfer-questions", //指定元素
  707. cols: cols, //表格列 支持layui数据表格所有配置
  708. data: [data1, data2],//[左表数据,右表数据[非必填]]
  709. tabConfig: tabConfig, //表格配置项 支持layui数据表格所有配置
  710. })
  711. }, 500)
  712. })
  713. $('#threwStep').click(function() {
  714. var tranferdata = transfer.get(tb1, 'right', 'id');
  715. if (Array.isArray(tranferdata) && !tranferdata.length) {
  716. layer.msg('请选择试题', {
  717. anim: 6
  718. , time: 2000
  719. });
  720. return;
  721. }
  722. for(var i=0;i<$('.itemRightline').length;i++){
  723. if($('.itemRightline').eq(i).find('input').val()){}else{
  724. layer.msg('分数不能为空', {
  725. anim: 6
  726. , time: 2000
  727. });
  728. return;
  729. }
  730. }
  731. var base_score = Number($('#passExam').val());
  732. var sum_score = Number($('#total_score').val());
  733. if (sum_score > 100) {
  734. layer.msg('总分不能超过100分', {
  735. anim: 6
  736. , time: 2000
  737. });
  738. return false;
  739. }
  740. if (base_score > sum_score) {
  741. layer.msg('及格分不能大过总分', {
  742. anim: 6
  743. , time: 2000
  744. });
  745. return false;
  746. }
  747. var single_choice = $('#single_choice').val() ? Number($('#single_choice').val()) : 0;
  748. if (single_choice > 100) {
  749. layer.msg('单选题分值不能超过100分', {
  750. anim: 6
  751. , time: 2000
  752. });
  753. return false;
  754. }
  755. var multiple_selection = $('#multiple_selection').val() ? Number($('#multiple_selection').val()) : 0;
  756. if (multiple_selection > 100) {
  757. layer.msg('多选题分值不能超过100分', {
  758. anim: 6
  759. , time: 2000
  760. });
  761. return false;
  762. }
  763. var multiple_judge = $('#multiple_judge').val() ? Number($('#multiple_judge').val()) : 0;
  764. if (multiple_judge > 100) {
  765. layer.msg('判断题分值不能超过100分', {
  766. anim: 6
  767. , time: 2000
  768. });
  769. return false;
  770. }
  771. var short_answer = $('#short_answer').val() ? Number($('#short_answer').val()) : 0;
  772. if (short_answer > 100) {
  773. layer.msg('简答题分值不能超过100分', {
  774. anim: 6
  775. , time: 2000
  776. });
  777. return false;
  778. }
  779. $('.layui-tab-title').children().eq(3).addClass('layui-this').siblings().removeClass("layui-this");
  780. $('.layui-tab-item').eq(3).addClass('layui-show').siblings().removeClass("layui-show");
  781. })
  782. $('#returnThrew').click(function() {
  783. $('.layui-tab-title').children().eq(2).addClass('layui-this').siblings().removeClass("layui-this");
  784. $('.layui-tab-item').eq(2).addClass('layui-show').siblings().removeClass("layui-show");
  785. })
  786. $('.layui-row .layui-col-md5').addClass('layui-col-xs5');
  787. $('.layui-row .layui-col-md5').addClass('layui-col-sm5');
  788. $('.layui-row .layui-col-md2').addClass('layui-col-xs2');
  789. $('.layui-row .layui-col-md2').addClass('layui-col-sm2');
  790. $('.layui-btn-disabled').attr('type', 'button');
  791. $(document).on('click', "#left-btn-1", function () {
  792. getlist_r();
  793. });
  794. $(document).on('click', "#right-btn-1", function () {
  795. getlist_r();
  796. });
  797. function getlist_r() {
  798. $('.layui-btn-disabled').attr('type', 'button');
  799. setTimeout(function () {
  800. var tranferdata = transfer.get(tb1, 'right', 'id');
  801. var listarr = tranferdata.split(',');
  802. var counts = [];
  803. for (var i in listarr) {
  804. counts.push(listarr[i]);
  805. }
  806. $('#count').html(counts.length);
  807. getScorelist(tranferdata)
  808. }, 300)
  809. }
  810. $('.radio-style').click(function () {
  811. searchkey();
  812. })
  813. //搜索题目
  814. $('#onSearch').click(function () {
  815. searchkey();
  816. });
  817. form.on('checkbox(radiosfilter)', function (data) {
  818. searchkey();
  819. });
  820. function getEditScorelist() {
  821. $.ajax({
  822. url: '{:url("exam/papereditscore")}',
  823. type: 'post',
  824. data: { paper_id: "{$data.id}" },
  825. success: function (res) {
  826. allQuestionData = res.data;
  827. renderSetRender(res.data,'1');
  828. renderQHtml(res.data);
  829. setQQArr()
  830. }
  831. });
  832. }
  833. function getScorelist(ids) {
  834. $.ajax({
  835. url: '{:url("exam/paperscore")}',
  836. type: 'post',
  837. data: { question_ids: ids },
  838. success: function (res) {
  839. allQuestionData = res.data;
  840. renderSetRender(res.data,'2');
  841. renderQHtml(res.data);
  842. setQQArr()
  843. }
  844. });
  845. }
  846. function renderSetRender(data, typeStr) {
  847. let html1 = '';
  848. let html2 = '';
  849. let html3 = '';
  850. let html4 = '';
  851. if (data.type0.count > 0) {
  852. html1 = `<div class="leftdanxuan">
  853. <div class="danxuantitle">
  854. <strong>单选题</strong>
  855. <span class="cleartext" id="singleEl">清空</span>
  856. </div>
  857. <div class="itemScore">
  858. <span>题目数量</span>
  859. <span><span id="danxuan_count">${data.type0.count}</span>题</span>
  860. </div>
  861. <div class="itemScore">
  862. <span>合计分值</span>
  863. <span id="danxuan_total_fen">${data.type0.score_sum}</span>
  864. </div>
  865. <div class="itemScore">
  866. <span>分值占比</span>
  867. <span id="danxuan_grawth">${data.type0.grawth}</span>
  868. </div>
  869. <div class="itemScore" style="display:none;">
  870. <span><i class="requireditag">*</i>每题分数</span>
  871. <div>
  872. <input type="number" value="${data.type0.score ? data.type0.score : 1}" name="single" min="0" id="single_choice" style="width: 60px;">
  873. <span>分</span>
  874. </div>
  875. </div>
  876. </div>`
  877. }
  878. if (data.type1.count > 0) {
  879. html2 = `<div class="leftdanxuan">
  880. <div class="danxuantitle">
  881. <strong>多选题</strong>
  882. <span class="cleartext" id="multiEl">清空</span>
  883. </div>
  884. <div class="itemScore">
  885. <span>题目数量</span>
  886. <span><span id="duoxuan_count">${data.type1.count}</span>题</span>
  887. </div>
  888. <div class="itemScore">
  889. <span>合计分值</span>
  890. <span id="duoxuan_total_fen">${data.type1.score_sum}</span>
  891. </div>
  892. <div class="itemScore">
  893. <span>分值占比</span>
  894. <span id="duoxuan_grawth">${data.type1.grawth}</span>
  895. </div>
  896. <div class="itemScore" style="display:none;">
  897. <span><i class="requireditag">*</i>每题分数</span>
  898. <div>
  899. <input type="number" name="multi" id="multiple_selection" value="${data.type1.score ? data.type1.score : 2}" min="0" style="width: 60px;">
  900. <span>分</span>
  901. </div>
  902. </div>
  903. </div>`
  904. }
  905. if (data.type2.count > 0) {
  906. html3 = `<div class="leftdanxuan">
  907. <div class="danxuantitle">
  908. <strong>判断题</strong>
  909. <span class="cleartext" id="judgeEl">清空</span>
  910. </div>
  911. <div class="itemScore">
  912. <span>题目数量</span>
  913. <span><span id="panduan_count">${data.type2.count}</span>题</span>
  914. </div>
  915. <div class="itemScore">
  916. <span>合计分值</span>
  917. <span id="panduan_total_fen">${data.type2.score_sum}</span>
  918. </div>
  919. <div class="itemScore">
  920. <span>分值占比</span>
  921. <span id="panduan_grawth">${data.type2.grawth}</span>
  922. </div>
  923. <div class="itemScore" style="display:none;">
  924. <span><i class="requireditag">*</i>每题分数</span>
  925. <div>
  926. <input type="number" name="judge" id="multiple_judge" value="${data.type2.score ? data.type2.score : 5}" min="0" style="width: 60px;">
  927. <span>分</span>
  928. </div>
  929. </div>
  930. </div>`
  931. }
  932. if (data.type3.count > 0) {
  933. html4 = `<div class="leftdanxuan">
  934. <div class="danxuantitle">
  935. <strong>简答题</strong>
  936. <span class="cleartext" id="answerEl">清空</span>
  937. </div>
  938. <div class="itemScore">
  939. <span>题目数量</span>
  940. <span><span id="jianda_count">${data.type3.count}</span>题</span>
  941. </div>
  942. <div class="itemScore">
  943. <span>合计分值</span>
  944. <span id="jianda_total_fen">${data.type3.score_sum}</span>
  945. </div>
  946. <div class="itemScore">
  947. <span>分值占比</span>
  948. <span id="jianda_grawth">${data.type3.grawth}</span>
  949. </div>
  950. <div class="itemScore" style="display:none;">
  951. <span><i class="requireditag">*</i>每题分数</span>
  952. <div>
  953. <input type="number" name="answer" id="short_answer" value="${data.type3.score ? data.type3.score : 10}" min="0" style="width: 60px;">
  954. <span>分</span>
  955. </div>
  956. </div>
  957. </div>`
  958. }
  959. $('#total_score').val(data.total_score);
  960. $('#passExam').val(data.base_score);
  961. $('#scoreElement1').html(`${html1}${html2}${html3}${html4}`);
  962. setTimeout(() => {
  963. active = {
  964. totalscore: function (type, totals) {
  965. //数量
  966. var danxuan_count = $('#danxuan_count').html() ? Number($('#danxuan_count').html()) : 0;
  967. var duoxuan_count = $('#duoxuan_count').html() ? Number($('#duoxuan_count').html()) : 0;
  968. var panduan_count = $('#panduan_count').html() ? Number($('#panduan_count').html()) : 0;
  969. var jianda_count = $('#jianda_count').html() ? Number($('#jianda_count').html()) : 0;
  970. //分数
  971. // var danxuan = $("input[name='single']").val() ? $("input[name='single']").val() : 0;
  972. // var danxuan_fen = Number(danxuan);
  973. // var duoxuan_fen = $("input[name='multi']").val() ? Number($("input[name='multi']").val()) : 0;
  974. // var panduan_fen = $("input[name='judge']").val() ? Number($("input[name='judge']").val()) : 0;
  975. // var jianda_fen = $("input[name='answer']").val() ? Number($("input[name='answer']").val()) : 0;
  976. // console.log(danxuan_fen, duoxuan_fen, panduan_fen, jianda_fen)
  977. // var sum = (danxuan_count * danxuan_fen) + (duoxuan_count * duoxuan_fen) + (panduan_count * panduan_fen) + (jianda_count * jianda_fen);
  978. danxuan_fen = 0;
  979. for(var i=1;i<$("input[name='single']").length;i++){
  980. danxuan_fen += $("input[name='single']").eq(i).val() ? Number($("input[name='single']").eq(i).val()) : 0;
  981. }
  982. duoxuan_fen = 0;
  983. for(var i=1;i<$("input[name='multi']").length;i++){
  984. duoxuan_fen += $("input[name='multi']").eq(i).val() ? Number($("input[name='multi']").eq(i).val()) : 0;
  985. }
  986. panduan_fen = 0;
  987. for(var i=1;i<$("input[name='judge']").length;i++){
  988. panduan_fen += $("input[name='judge']").eq(i).val() ? Number($("input[name='judge']").eq(i).val()) : 0;
  989. }
  990. jianda_fen = 0;
  991. for(var i=1;i<$("input[name='answer']").length;i++){
  992. jianda_fen += $("input[name='answer']").eq(i).val() ? Number($("input[name='answer']").eq(i).val()) : 0;
  993. }
  994. var sum = danxuan_fen + duoxuan_fen + panduan_fen + jianda_fen;
  995. //分值占比
  996. var danxuan_total1 = danxuan_fen;
  997. var grawth1 = sum == 0 ? '0%' : (danxuan_total1 / sum * 100).toFixed(2) + '%';
  998. if ($('#danxuan_grawth')) {
  999. $('#danxuan_grawth').html(grawth1);
  1000. }
  1001. if ($('#danxuan_total_fen')) {
  1002. $('#danxuan_total_fen').html(danxuan_total1 + '分');
  1003. }
  1004. var duoxuan_total2 = duoxuan_fen;
  1005. var grawth2 = sum == 0 ? '0%' : (duoxuan_total2 / sum * 100).toFixed(2) + '%';
  1006. if ($('#duoxuan_grawth')) {
  1007. $('#duoxuan_grawth').html(grawth2);
  1008. }
  1009. if ($('#duoxuan_total_fen')) {
  1010. $('#duoxuan_total_fen').html(duoxuan_total2 + '分');
  1011. }
  1012. var panduan_total3 = panduan_fen;
  1013. var grawth3 = sum == 0 ? '0%' : (panduan_total3 / sum * 100).toFixed(2) + '%';
  1014. if ($('#panduan_grawth')) {
  1015. $('#panduan_grawth').html(grawth3);
  1016. }
  1017. if ($('#panduan_total_fen')) {
  1018. $('#panduan_total_fen').html(panduan_total3 + '分');
  1019. }
  1020. var jianda_total4 = jianda_fen;
  1021. var grawth4 = sum == 0 ? '0%' : (jianda_total4 / sum * 100).toFixed(2) + '%';
  1022. if ($('#jianda_grawth')) {
  1023. $('#jianda_grawth').html(grawth4);
  1024. }
  1025. if ($('#jianda_total_fen')) {
  1026. $('#jianda_total_fen').html(jianda_total4 + '分');
  1027. }
  1028. $('#total_score').val(sum);
  1029. var passExam = Math.round(sum * 0.6);
  1030. if (totals == 999999999 && allQuestionData.base_score <= 0) {
  1031. $('#passExam').val(passExam);
  1032. } else if (totals != 999999999) {
  1033. $('#passExam').val(passExam);
  1034. }
  1035. }
  1036. };
  1037. setTimeout(() => {
  1038. if (typeStr == '2') {
  1039. active.totalscore('single', 999999999);
  1040. }
  1041. form.render();
  1042. }, 800);
  1043. //清空输入框分值
  1044. $('#singleEl').click(function () {
  1045. $("input[name='single']").val('');
  1046. var danxuan_count = Number($('#danxuan_count').html());
  1047. var danxuan_fen = Number($("input[name='single']").val());
  1048. var total_fen = danxuan_count * danxuan_fen;
  1049. active.totalscore('single', total_fen);
  1050. });
  1051. $('#multiEl').click(function () {
  1052. $("input[name='multi']").val('');
  1053. var duoxuan_count = Number($('#duoxuan_count').html());
  1054. var duoxuan_fen = Number($("input[name='multi']").val());
  1055. var total_fen = duoxuan_count * duoxuan_fen;
  1056. active.totalscore('multi', total_fen);
  1057. });
  1058. $('#judgeEl').click(function () {
  1059. $("input[name='judge']").val('');
  1060. var panduan_count = Number($('#panduan_count').html());
  1061. var panduan_fen = Number($("input[name='judge']").val());
  1062. var total_fen = panduan_count * panduan_fen;
  1063. active.totalscore('judge', total_fen);
  1064. });
  1065. $('#answerEl').click(function () {
  1066. $("input[name='answer']").val('');
  1067. var jianda_count = Number($('#jianda_count').html());
  1068. var jianda_fen = Number($("input[name='answer']").val());
  1069. var total_fen = jianda_count * jianda_fen;
  1070. active.totalscore('answer', total_fen);
  1071. });
  1072. }, 500)
  1073. }
  1074. function renderQHtml(data) {
  1075. let html1 = '', html2 = '', html3 = '', html4 = '';
  1076. if (data.type0.questions.length > 0) {
  1077. html1 = `<div class="rightItem">
  1078. <div class="righttitle">
  1079. <strong>单选题(${data.type0.questions.length})</strong>
  1080. <span class="stow stowdx">收起</span>
  1081. </div>
  1082. <div class="dxrefEle">
  1083. ${data.type0.questions.map((item, index) => {
  1084. return `<div class="itemRightline">
  1085. <div class="dxtitle">
  1086. <span>题序${index + 1}</span>
  1087. <span class="dxflexcenter danxuanEle" style="display:none">${item.score?item.score:'1分'}</span>
  1088. <div>
  1089. <input class="inputText" type="number" data-id="${item.id}" name="single" id="" value="${item.score ? item.score : (data.type0.score || 1)}" min="1" max='100' style="width: 60px;">
  1090. <span>分</span>
  1091. </div>
  1092. <div class="dxflex-end">
  1093. <span data-type="type0" data-index="${index}" class="delItem">删除</span>
  1094. </div>
  1095. </div>
  1096. <div>题干: ${item.ask}</div>
  1097. <div class="pl15">
  1098. ${item.content.map((citem, i) => {
  1099. return `<div>${citem.title}:${citem.content}</div>`
  1100. }).join('')}
  1101. </div>
  1102. <div>答案:${item.answer}</div>
  1103. </div>`;
  1104. }).join('')}
  1105. </div>
  1106. </div>`
  1107. }
  1108. if (data.type1.questions.length > 0) {
  1109. html2 = `<div class="rightItem">
  1110. <div class="righttitle">
  1111. <strong>多选题(${data.type1.questions.length})</strong>
  1112. <span class="stow stowMore">收起</span>
  1113. </div>
  1114. <div class="morerefele">
  1115. ${data.type1.questions.map((item, index) => {
  1116. return `<div class="itemRightline">
  1117. <div class="dxtitle">
  1118. <span>题序${index + 1}</span>
  1119. <span class="dxflexcenter duoxuanEle" style="display:none">${item.score?item.score:'2分'}</span>
  1120. <div>
  1121. <input class="inputText" type="number" data-id="${item.id}" name="multi" id="" value="${item.score ? item.score : (data.type1.score||2)}" min="1" max='100' style="width: 60px;">
  1122. <span>分</span>
  1123. </div>
  1124. <div class="dxflex-end">
  1125. <span data-type="type1" data-index="${index}" class="delItem">删除</span>
  1126. </div>
  1127. </div>
  1128. <div>题干: ${item.ask}</div>
  1129. <div class="pl15">
  1130. ${item.content.map((citem, i) => {
  1131. return `<div>${citem.title}:${citem.content}</div>`
  1132. }).join('')}
  1133. </div>
  1134. <div>答案:${item.answer}</div>
  1135. </div>`;
  1136. }).join('')}
  1137. </div>
  1138. </div>`
  1139. }
  1140. if (data.type2.questions.length > 0) {
  1141. html3 = `<div class="rightItem">
  1142. <div class="righttitle">
  1143. <strong>判断题(${data.type2.questions.length})</strong>
  1144. <span class="stow stowpdrr">收起</span>
  1145. </div>
  1146. <div class="pdrefEle">
  1147. ${data.type2.questions.map((item, index) => {
  1148. return `<div class="itemRightline">
  1149. <div class="dxtitle">
  1150. <span>题序${index + 1}</span>
  1151. <span class="dxflexcenter judgeEle" style="display:none">${item.score?item.score:'5分'}</span>
  1152. <div>
  1153. <input class="inputText" type="number" data-id="${item.id}" name="judge" id="" value="${item.score ? item.score : (data.type2.score||5)}" min="1" max='100' style="width: 60px;">
  1154. <span>分</span>
  1155. </div>
  1156. <div class="dxflex-end">
  1157. <span data-type="type2" data-index="${index}" class="delItem">删除</span>
  1158. </div>
  1159. </div>
  1160. <div>题干: ${item.ask}</div>
  1161. <div>答案:${item.answer}</div>
  1162. </div>`
  1163. }).join('')}
  1164. </div>
  1165. </div>`
  1166. }
  1167. if (data.type3.questions.length > 0) {
  1168. html4 = `<div class="rightItem">
  1169. <div class="righttitle">
  1170. <strong>简答题(${data.type3.questions.length})</strong>
  1171. <span class="stow stowjdrr">收起</span>
  1172. </div>
  1173. <div class="jdrefEle">
  1174. ${data.type3.questions.map((item, index) => {
  1175. return `<div class="itemRightline">
  1176. <div class="dxtitle">
  1177. <span>题序${index + 1}</span>
  1178. <span class="dxflexcenter answerEle" style="display:none;">${item.score?item.score:'10分'}</span>
  1179. <div>
  1180. <input class="inputText" type="number" name="answer" data-id="${item.id}" value="${item.score ? item.score : 10}" min="1" max='100' style="width: 60px;">
  1181. <span>分</span>
  1182. </div>
  1183. <div class="dxflex-end">
  1184. <span data-type="type3" data-index="${index}" class="delItem">删除</span>
  1185. </div>
  1186. </div>
  1187. <div>题干: ${item.ask}</div>
  1188. <div class="flex">答案:${item.answer}</div>
  1189. <div>答案关键字:${item.answer_j}</div>
  1190. </div>`
  1191. }).join('')}
  1192. </div>
  1193. </div>`
  1194. }
  1195. $('.rightScroe').html(`${html1}${html2}${html3}${html4}`);
  1196. setTimeout(() => {
  1197. $(".inputText").keyup(function(){
  1198. $(this).val($(this).val().replace(/\D|^0/g,''));
  1199. }).bind("paste",function(){
  1200. return false;
  1201. })
  1202. //输入框的值改变时触发
  1203. $("input[name='single']").on("input", function (e) {
  1204. danxuan_fen = 0;
  1205. for(var i=1;i<$("input[name='single']").length;i++){
  1206. danxuan_fen += Number($("input[name='single']").eq(i).val());
  1207. }
  1208. active.totalscore();
  1209. $('#danxuan_total_fen').each(function () {
  1210. $(this).html(`${danxuan_fen}分`)
  1211. })
  1212. });
  1213. $("input[name='multi']").on("input", function (e) {
  1214. duoxuan_fen = 0;
  1215. for(var i=1;i<$("input[name='multi']").length;i++){
  1216. duoxuan_fen += Number($("input[name='multi']").eq(i).val());
  1217. }
  1218. active.totalscore();
  1219. $('#duoxuan_total_fen').each(function () {
  1220. $(this).html(`${duoxuan_fen}分`)
  1221. })
  1222. });
  1223. $("input[name='judge']").on("input", function (e) {
  1224. panduan_fen = 0;
  1225. for(var i=1;i<$("input[name='judge']").length;i++){
  1226. panduan_fen += Number($("input[name='judge']").eq(i).val());
  1227. }
  1228. active.totalscore();
  1229. $('#panduan_total_fen').each(function () {
  1230. $(this).html(`${panduan_fen}分`)
  1231. })
  1232. });
  1233. $("input[name='answer']").on("input", function (e) {
  1234. jianda_fen = 0;
  1235. for(var i=1;i<$("input[name='answer']").length;i++){
  1236. jianda_fen += Number($("input[name='answer']").eq(i).val());
  1237. }
  1238. active.totalscore();
  1239. $('#jianda_total_fen').each(function () {
  1240. $(this).html(`${jianda_fen}分`)
  1241. })
  1242. });
  1243. $('.stowdx').click(function () {
  1244. if ($('.dxrefEle').is(":hidden")) {
  1245. $('.dxrefEle').show();
  1246. $(this).html('收起');
  1247. } else {
  1248. $('.dxrefEle').hide();
  1249. $(this).html('展开');
  1250. }
  1251. })
  1252. $('.stowMore').click(function () {
  1253. if ($('.morerefele').is(":hidden")) {
  1254. $('.morerefele').show();
  1255. $(this).html('收起');
  1256. } else {
  1257. $('.morerefele').hide();
  1258. $(this).html('展开');
  1259. }
  1260. })
  1261. $('.stowpdrr').click(function () {
  1262. if ($('.pdrefEle').is(":hidden")) {
  1263. $('.pdrefEle').show();
  1264. $(this).html('收起');
  1265. } else {
  1266. $('.pdrefEle').hide();
  1267. $(this).html('展开');
  1268. }
  1269. })
  1270. $('.stowjdrr').click(function () {
  1271. if ($('.jdrefEle').is(":hidden")) {
  1272. $('.jdrefEle').show();
  1273. $(this).html('收起');
  1274. } else {
  1275. $('.jdrefEle').hide();
  1276. $(this).html('展开');
  1277. }
  1278. })
  1279. $('.delItem').click(function () {
  1280. let props = $(this).prop('dataset');
  1281. allQuestionData[props.type].questions.splice(parseInt(props.index), 1);
  1282. renderQHtml(allQuestionData);
  1283. if (props.type == 'type0') {
  1284. $('#danxuan_count').html(allQuestionData[props.type].questions.length)
  1285. } else if (props.type == 'type1') {
  1286. $('#duoxuan_count').html(allQuestionData[props.type].questions.length)
  1287. } else if (props.type == 'type2') {
  1288. $('#panduan_count').html(allQuestionData[props.type].questions.length)
  1289. } else {
  1290. $('#jianda_count').html(allQuestionData[props.type].questions.length)
  1291. }
  1292. active.totalscore('single', 999999999);
  1293. setQdata();
  1294. })
  1295. form.render();
  1296. }, 500)
  1297. }
  1298. function setQdata() {
  1299. let arr1 = allQuestionData.type0.questions.map(v => {
  1300. return { id: v.id, ask: v.ask, cate: v.cate, type: v.type }
  1301. })
  1302. let arr2 = allQuestionData.type1.questions.map(v => {
  1303. return { id: v.id, ask: v.ask, cate: v.cate, type: v.type }
  1304. })
  1305. let arr3 = allQuestionData.type2.questions.map(v => {
  1306. return { id: v.id, ask: v.ask, cate: v.cate, type: v.type }
  1307. })
  1308. let arr4 = allQuestionData.type3.questions.map(v => {
  1309. return { id: v.id, ask: v.ask, cate: v.cate, type: v.type }
  1310. })
  1311. let arr = [...arr1, ...arr2, ...arr3, ...arr4];
  1312. data2 = arr;
  1313. transfer.render({
  1314. elem: "#transfer-questions", //指定元素
  1315. cols: cols, //表格列 支持layui数据表格所有配置
  1316. data: [data1, arr], //[左表数据,右表数据[非必填]]
  1317. tabConfig: tabConfig //表格配置项 支持layui数据表格所有配置
  1318. })
  1319. }
  1320. function setQQArr() {
  1321. let arr1 = allQuestionData.type0.questions.map(v => {
  1322. return { id: v.id, ask: v.ask, cate: v.cate, type: v.type }
  1323. })
  1324. let arr2 = allQuestionData.type1.questions.map(v => {
  1325. return { id: v.id, ask: v.ask, cate: v.cate, type: v.type }
  1326. })
  1327. let arr3 = allQuestionData.type2.questions.map(v => {
  1328. return { id: v.id, ask: v.ask, cate: v.cate, type: v.type }
  1329. })
  1330. let arr4 = allQuestionData.type3.questions.map(v => {
  1331. return { id: v.id, ask: v.ask, cate: v.cate, type: v.type }
  1332. })
  1333. let arr = [...arr1, ...arr2, ...arr3, ...arr4];
  1334. data2 = arr;
  1335. }
  1336. function searchkey() {
  1337. var keyword = $('#keyword').val();
  1338. var type = '';
  1339. $('input[name="radios"]:checked').each(function (index, element) {
  1340. type = type + $(this).val() + ',';
  1341. });
  1342. var cate = $('#cate').val();
  1343. var paperid = '{:$paperid}';
  1344. $.ajax({
  1345. url: '{:url("exam/searchquestion")}',
  1346. type: 'post',
  1347. data: { type: type, keyword: keyword, data2: data2, paperid: paperid, cate: cate },
  1348. success: function (res) {
  1349. data2 = data2;
  1350. transfer.render({
  1351. elem: "#transfer-questions", //指定元素
  1352. cols: cols, //表格列 支持layui数据表格所有配置
  1353. data: [res.data.data1, data2], //[左表数据,右表数据[非必填]]
  1354. tabConfig: tabConfig //表格配置项 支持layui数据表格所有配置
  1355. })
  1356. $('#count').html(res.data.count);
  1357. }
  1358. });
  1359. }
  1360. //清除所有
  1361. $('#clean').click(function () {
  1362. var keyword = $('#keyword').val();
  1363. var type = $('#type').val();
  1364. var paperid = '{:$paperid}';
  1365. $.ajax({
  1366. url: '{:url("exam/searchquestion")}',
  1367. type: 'post',
  1368. data: { type: type, keyword: keyword, data2: [], paperid: paperid },
  1369. success: function (res) {
  1370. data2 = [];
  1371. transfer.render({
  1372. elem: "#transfer-questions", //指定元素
  1373. cols: cols, //表格列 支持layui数据表格所有配置
  1374. data: [res.data.data1, []], //[左表数据,右表数据[非必填]]
  1375. tabConfig: tabConfig //表格配置项 支持layui数据表格所有配置
  1376. })
  1377. $('#count').html(0);
  1378. }
  1379. });
  1380. })
  1381. // -----------------------------发布考试--------------------------------------
  1382. var orgids_str = '{:$orgids}';
  1383. var orgids = JSON.parse(orgids_str);
  1384. var org = eval('{$org|raw}');
  1385. $('#org').append(setOrgOption(org, ''));
  1386. form.render('select')
  1387. // let date = new Date($('#starttime').val());
  1388. // let time = date.getTime() + $('#duringtime').val() * 60 * 1000;
  1389. // let date1 = new Date(time);
  1390. // let time1 = date1.getFullYear() + '/' + (date1.getMonth() * 1 + 1) + '/' + date1.getDate() + ' ' + (date1.getHours() < 10 ? ('0' + date1.getHours()) : date1.getHours()) + ':' + (date1.getMinutes() < 10 ? '0' + date1.getMinutes() : date1.getMinutes()) + ':' + (date1.getSeconds() < 10 ? ('0'+date1.getSeconds()): date1.getSeconds());
  1391. // $('#endtime').val(time1);
  1392. setTimeout(() => {
  1393. $('#starttime').val("{$data.starttime}")
  1394. },800)
  1395. laydate.render({
  1396. elem: '#starttime'
  1397. , type: 'datetime',
  1398. trigger: 'click',//呼出事件改成click
  1399. done: function (value, date, endDate) {
  1400. $('#starttime').val(value);
  1401. if ($('#duringtime').val()) {
  1402. let date = new Date(value);
  1403. let time = date.getTime() + $('#duringtime').val() * 60 * 1000;
  1404. let date1 = new Date(time);
  1405. let time1 = date1.getFullYear() + '-' + (date1.getMonth() * 1 + 1) + '-' + date1.getDate() + ' ' + (date1.getHours() < 10 ? ('0' + date1.getHours()) : date1.getHours()) + ':' + (date1.getMinutes() < 10 ? '0' + date1.getMinutes() : date1.getMinutes()) + ':' + (date1.getSeconds() < 10 ? ('0'+date1.getSeconds()): date1.getSeconds());
  1406. $('#endtime').val(time1);
  1407. }
  1408. }
  1409. });
  1410. laydate.render({
  1411. elem: '#endtime'
  1412. , type: 'datetime',
  1413. trigger: 'click',//呼出事件改成click
  1414. });
  1415. //监听审核方式单项框
  1416. form.on('radio(checkway)', function (data) {
  1417. console.log(data);//打印当前选择的信息
  1418. var value = data.value; // 当前选中的value值
  1419. if (value == "employee") {
  1420. $('#person').removeClass('layui-hide');
  1421. } else {
  1422. $('#person').addClass('layui-hide');
  1423. }
  1424. });
  1425. form.on('select(org_select)', function (data) {
  1426. var val = data.value;
  1427. $.ajax({
  1428. url: '{:url("org/employee")}'
  1429. , data: { org: val }
  1430. , type: 'get'
  1431. , success: function (res) {
  1432. if (res.code == 0) {
  1433. $('#employee').html('<option value="">请选择</option>');
  1434. res.data.forEach(element => {
  1435. $('#employee').append('<option value="' + element.id + '">' + element.name + '</option>');
  1436. });
  1437. form.render('select')
  1438. }
  1439. }
  1440. });
  1441. });
  1442. function setOrgOption(opt, sj) {
  1443. var html = '';
  1444. opt.forEach(element => {
  1445. if (orgids.length > 0) {
  1446. if (in_array(element.id, orgids)) {
  1447. html += '<option value="' + element.id + '">' + sj + element.title + '</option>';
  1448. }
  1449. }
  1450. if (element.children.length > 0) html += setOrgOption(element.children, sj + '-');
  1451. });
  1452. return html;
  1453. }
  1454. function in_array(search, array) {
  1455. for (var i in array) {
  1456. if (array[i] == search) {
  1457. return true;
  1458. }
  1459. }
  1460. return false;
  1461. }
  1462. //考试范围选择人员
  1463. var approve_ids = xmSelect.render({
  1464. el: "#range_person",
  1465. autoRow: true,
  1466. filterable: true,
  1467. tips: '考试人员',
  1468. layVerify: 'required',
  1469. toolbar: {
  1470. //工具条,全选,清空,反选,自定义
  1471. show: true,
  1472. list: [
  1473. 'ALL',
  1474. 'CLEAR',
  1475. 'REVERSE'
  1476. ]
  1477. },
  1478. tree: {
  1479. show: true,
  1480. showFolderIcon: true,
  1481. showLine: true,
  1482. indent: 20,
  1483. expandedKeys: [-3],
  1484. },
  1485. height: "200px",
  1486. data: [],
  1487. //文本显示模式
  1488. //处理方式
  1489. });
  1490. $(function () {
  1491. selectperson();
  1492. });
  1493. function selectperson() {
  1494. var assessment = '{:$data.assessment}';
  1495. setTimeout(function () {
  1496. //data是ajax异步获取的
  1497. $.ajax({
  1498. type: "get",
  1499. url: "{:url('exam/get_person')}",
  1500. data: { type: 1, id: assessment },
  1501. dataType: 'json',
  1502. success: function (data) {
  1503. // var data = JSON.parse(data);
  1504. // var res = JSON.parse(data);
  1505. //通过ajax 获取json数据,异步更新多选下拉框的值
  1506. approve_ids.update({ data: data })
  1507. }
  1508. });
  1509. }, 100);
  1510. }
  1511. //多选审核人员
  1512. var options = {
  1513. el: '#label',
  1514. autoRow: true,
  1515. filterable: true,
  1516. name: 'approve_employee_ids',//表单的name属性
  1517. layVerify: '',
  1518. //layVerType: 'tips',//提示类型 同layui
  1519. tips: '审核人员',
  1520. toolbar: {
  1521. //工具条,全选,清空,反选,自定义
  1522. show: true,
  1523. list: [
  1524. 'ALL',
  1525. 'CLEAR',
  1526. 'REVERSE'
  1527. ]
  1528. },
  1529. tree: {
  1530. show: true,
  1531. showFolderIcon: true,
  1532. showLine: true,
  1533. indent: 20,
  1534. expandedKeys: [-3],
  1535. },
  1536. data: [],
  1537. // max: 1,
  1538. };
  1539. var label = xmSelect.render(options)
  1540. $(function () {
  1541. selectdata();
  1542. });
  1543. function selectdata() {
  1544. var personid = '{:$data.approve_employee_ids}';
  1545. setTimeout(function () {
  1546. //data是ajax异步获取的
  1547. $.ajax({
  1548. type: "get",
  1549. url: "{:url('exam/get_person')}",
  1550. data: { id: personid, type: 1 },
  1551. dataType: 'json',
  1552. success: function (data) {
  1553. var data = data;
  1554. //通过ajax 获取json数据,异步更新多选下拉框的值
  1555. label.update({ data: data })
  1556. }
  1557. });
  1558. }, 100);
  1559. }
  1560. // ----------------------------------------------设置分值---------------------------------------------
  1561. form.on('submit(layuiadmin-publish-submit)', function (data) {
  1562. var tranferdata = transfer.get(tb1, 'right', 'id');
  1563. if (Array.isArray(tranferdata) && !tranferdata.length) {
  1564. layer.msg('请选择试题', {
  1565. anim: 6
  1566. , time: 2000
  1567. });
  1568. return false;
  1569. }
  1570. var base_score = Number($('#passExam').val());
  1571. var sum_score = Number($('#total_score').val());
  1572. if (sum_score>100) {
  1573. layer.msg('总分不能超过100分', {
  1574. anim: 6
  1575. , time: 2000
  1576. });
  1577. return false;
  1578. }
  1579. if (base_score>sum_score) {
  1580. layer.msg('及格分不能大过总分', {
  1581. anim: 6
  1582. , time: 2000
  1583. });
  1584. return false;
  1585. }
  1586. var single_choice = $('#single_choice').val()?Number($('#single_choice').val()):0;
  1587. if (single_choice > 100) {
  1588. layer.msg('单选题分值不能超过100分', {
  1589. anim: 6
  1590. , time: 2000
  1591. });
  1592. return false;
  1593. }
  1594. var multiple_selection = $('#multiple_selection').val()?Number($('#multiple_selection').val()):0;
  1595. if (multiple_selection > 100) {
  1596. layer.msg('多选题分值不能超过100分', {
  1597. anim: 6
  1598. , time: 2000
  1599. });
  1600. return false;
  1601. }
  1602. var multiple_judge = $('#multiple_judge').val()?Number($('#multiple_judge').val()):0;
  1603. if (multiple_judge > 100) {
  1604. layer.msg('判断题分值不能超过100分', {
  1605. anim: 6
  1606. , time: 2000
  1607. });
  1608. return false;
  1609. }
  1610. var short_answer = $('#short_answer').val()?Number($('#short_answer').val()):0;
  1611. if (short_answer > 100) {
  1612. layer.msg('简答题分值不能超过100分', {
  1613. anim: 6
  1614. , time: 2000
  1615. });
  1616. return false;
  1617. }
  1618. var formData = new FormData(data.form);
  1619. var checkway = 'sys';
  1620. var employee = '';
  1621. formData.forEach((value, key) => {
  1622. if (key == 'checkway') {
  1623. checkway = value;
  1624. }
  1625. if (key == 'approve_employee_ids') {
  1626. employee = value;
  1627. }
  1628. })
  1629. formData.append('idstr', tranferdata);
  1630. var fraction = [];
  1631. for(var i=0;i<$('.itemRightline').length;i++){
  1632. fraction.push($('.itemRightline').eq(i).find('input').data('id')+'@'+$('.itemRightline').eq(i).find('input').val())
  1633. }
  1634. fraction = fraction.toString();
  1635. formData.append('fraction',fraction);
  1636. if (checkway == 'employee' && employee == '') {
  1637. layer.msg('人工审核请选择审核人员', {
  1638. anim: 6
  1639. , time: 2000
  1640. });
  1641. return false;
  1642. }
  1643. var load = layer.load(1, {
  1644. shade: [0.8, '#000']
  1645. });
  1646. $.ajax({
  1647. url: '{:url("dashboard/exam/paperedit")}',
  1648. type: 'post',
  1649. data: formData,
  1650. dataType: 'json',
  1651. processData: false,
  1652. contentType: false,
  1653. success: function (res) {
  1654. if (res.code === 0) {
  1655. layer.msg(res.msg, {
  1656. anim: 0
  1657. , time: 2000
  1658. }, function () {
  1659. var index = parent.layer.getFrameIndex(window.name);
  1660. parent.layui.table.reload('LAY-exam-paper-list'); //重载表格
  1661. parent.layer.close(index); //再执行关闭
  1662. });
  1663. } else {
  1664. layer.msg(res.msg, {
  1665. anim: 6
  1666. , time: 2000
  1667. });
  1668. }
  1669. layer.close(load);
  1670. }
  1671. });
  1672. return false;
  1673. });
  1674. });
  1675. </script>
  1676. {/block}