1
0

paperadd.html 51 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783
  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. <div class="layui-form-item">
  397. <label class="layui-form-label"><span style="color:red;">*</span>试卷名称:</label>
  398. <div class="layui-input-block">
  399. <input class="layui-input layui-input-inline input-longer-inline" type="text"
  400. name="name" value="" placeholder="试卷名称" lay-verify="required" title="试卷名称"
  401. autocomplete="off" id="nameElement">
  402. </div>
  403. </div>
  404. <div class="layui-form-item layui-hide">
  405. <label for="for_newbie" class="layui-form-label"><span
  406. style="color:red;">*</span>类型:</label>
  407. <div class="layui-input-block">
  408. <div class="layui-input-inline" style="width:100%;max-width: 205px;margin-left: 0;"
  409. required>
  410. <select id="for_newbie" name="for_newbie">
  411. <option value="">--请选择类型--</option>
  412. <option value="0" selected>课程考核</option>
  413. <option value="1">新兵考核</option>
  414. </select>
  415. </div>
  416. </div>
  417. </div>
  418. <div class="layui-form-item">
  419. <label class="layui-form-label">备注:</label>
  420. <div class="layui-input-block ">
  421. <input class="layui-input" type="text" name="desc" value="" title="备注"
  422. autocomplete="off">
  423. </div>
  424. </div>
  425. <div class="layui-form-item submit-btn" style="text-align: center;margin-top: 30px;">
  426. <input class="layui-btn " type="button" id="firstStep" value="下一步">
  427. <input class="layui-btn cancel" type="button" lay-filter="cancel1" id="cancel1" value="取消">
  428. </div>
  429. </div>
  430. <!-- 选择试题 -->
  431. <div class="layui-tab-item">
  432. <div class="layui-form-item" style="margin-left: 14px;width:97%;">
  433. <div class="wleft_btn">
  434. <div class="">
  435. <div class="search_input">
  436. <input class="input-longer-inline" type="text" name="keyword" id="keyword"
  437. value="" placeholder="请输入题干" title="请输入题干" autocomplete="off">
  438. </div>
  439. <div class="search_input layui-form" style="overflow: unset;">
  440. <select name="cate" id="cate" class="layui-select" lay-verify='' lay-search>
  441. <option value="">请选择分类</option>
  442. {volist name="data.cate" id="t"}
  443. <option value="{$t}">{$t}</option>
  444. {/volist}
  445. </select>
  446. </div>
  447. <div class="" style="float:right;">
  448. <button type="button" class="layui-btn" id="onSearch">搜索</button>
  449. </div>
  450. <div style="clear: both;"></div>
  451. </div>
  452. <div style="display: flex;align-items: center;justify-content: flex-start;width: 100%;">
  453. <div class="layui-input-block"
  454. style="display: flex;align-items: center;margin: 10px 10px 0px 0px;">
  455. <input type="checkbox" lay-skin="primary" lay-filter="radiosfilter"
  456. name="radios" id="single" class="radio-style" lay-filter="ChoiceRadio"
  457. value="单选" title="单选">
  458. <!-- <label for="single"> 单选 </label> -->
  459. <input type="checkbox" lay-skin="primary" lay-filter="radiosfilter"
  460. name="radios" value="多选" class="radio-style" lay-filter="ChoiceRadio"
  461. id="multi" title="多选">
  462. <!-- <label for="multi"> 多选 </label> -->
  463. <input type="checkbox" lay-skin="primary" lay-filter="radiosfilter"
  464. name="radios" value="判断" class="radio-style" lay-filter="ChoiceRadio"
  465. id="panduan" title="判断">
  466. <!-- <label for="panduan"> 判断 </label> -->
  467. <input type="checkbox" lay-skin="primary" lay-filter="radiosfilter"
  468. name="radios" value="简答" class="radio-style" lay-filter="ChoiceRadio"
  469. id="answer" title="简答">
  470. <!-- <label for="answer"> 简答 </label> -->
  471. </div>
  472. </div>
  473. </div>
  474. <div class="wright_btn">
  475. <div class="search_inputs">
  476. <span>已选择<span id="count">0</span>题</span>
  477. </div>
  478. <div class="wright">
  479. <button type="button" class="layui-btn" id="clean">清除所有</button>
  480. </div>
  481. </div>
  482. <div class="wright_btn" style="font-size: 16px;line-height: 44px;">试卷试题</div>
  483. </div>
  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. </div>
  496. <!-- 设置分值 -->
  497. <div class="layui-tab-item">
  498. <div class="flex-row">
  499. <div class="leftScore">
  500. <div class="leftjige">
  501. <div>总分:<input type="text" readonly id="total_score" name="total_score" value="100"
  502. style="width: 50px;border:none;outline: none;"></div>
  503. <div>及格设置:<input type="number" id="passExam" name="base_score" style="width: 80px;"
  504. min="0"></div>
  505. </div>
  506. <div id="scoreElement1"></div>
  507. </div>
  508. <div class="rightScroe">
  509. </div>
  510. </div>
  511. <div class="layui-form-item submit-btn fixed40">
  512. <div class="layui-form-item submit-btn" style="text-align: center;">
  513. <input class="layui-btn " type="button" id="returnSecond" value="上一步">
  514. <input class="layui-btn " type="button" id="threwStep" value="下一步">
  515. </div>
  516. </div>
  517. </div>
  518. <!-- 发布考试 -->
  519. <div class="layui-tab-item">
  520. <div class="layui-form-item" id="range">
  521. <label class="layui-form-label"><span style="color: red;">*</span>考试人员</label>
  522. <div class="layui-input-block">
  523. <div id="range_person"></div>
  524. </div>
  525. </div>
  526. <div class="layui-form-item layui-hide">
  527. <label class="layui-form-label"><span style="color:red;">*</span>考试对象:</label>
  528. <div class="layui-input-inline" style="width: 380px">
  529. <input type="radio" name="target_group" lay-filter="targetGroup" value="全员" title="全员"
  530. checked>
  531. <input type="radio" name="target_group" lay-filter="targetGroup" value="新兵" title="新兵">
  532. <input type="radio" name="target_group" lay-filter="targetGroup" value="老兵" title="老兵">
  533. </div>
  534. </div>
  535. <div class="layui-form-item">
  536. <label class="layui-form-label"><span style="color:red;">*</span>考试时长(分钟):</label>
  537. <div class="layui-input-block">
  538. <input class="layui-input layui-input-inline " type="number" id="duringtime"
  539. name="duringtime" value="45" placeholder="考试时长 比如:45" title="及格分数"
  540. autocomplete="off" lay-verify="required">
  541. </div>
  542. </div>
  543. <div class="layui-form-item">
  544. <label class="layui-form-label"><span style="color:red;">*</span>考试时间:</label>
  545. <div class="layui-input-inline ">
  546. <input type="text" class="layui-input layui-input-inline" name="starttime"
  547. id="starttime" placeholder="开始时间" autocomplete="off" lay-verify="required"
  548. value="">
  549. <span style="margin-right: 10px">至</span>
  550. <input type="text" class="layui-input layui-input-inline" name="endtime" id="endtime"
  551. placeholder="结束时间" autocomplete="off" lay-verify="required" value="">
  552. </div>
  553. </div>
  554. <div class="layui-form-item">
  555. <label class="layui-form-label">审核方式:</label>
  556. <div class="layui-input-block ">
  557. <input type="radio" name="checkway" lay-filter="checkway" value="sys" title="系统审核"
  558. checked>
  559. <input type="radio" name="checkway" lay-filter="checkway" value="employee" title="人工审核">
  560. </div>
  561. </div>
  562. <div class="layui-form-item">
  563. <label class="layui-form-label">状态:</label>
  564. <div class="layui-input-block ">
  565. <input type="radio" name="state" lay-filter="state" value="0" title="保存草稿">
  566. <input type="radio" name="state" lay-filter="state" value="1" title="正式发布" checked>
  567. </div>
  568. </div>
  569. <div class="layui-form-item layui-hide" id="person">
  570. <label class="layui-form-label"><span style="color: red;">*</span>审核人员</label>
  571. <div class="layui-input-block">
  572. <div id="label"></div>
  573. </div>
  574. </div>
  575. <div class="layui-form-item">
  576. <label class="layui-form-label">批卷是否展示真实姓名:</label>
  577. <div class="layui-input-block ">
  578. <input type="radio" name="show_real_name" lay-filter="show_real_name" value="0" title="否" checked>
  579. <input type="radio" name="show_real_name" lay-filter="show_real_name" value="1" title="是" >
  580. </div>
  581. </div>
  582. <div class="layui-form-item submit-btn" style="text-align: center;">
  583. <input class="layui-btn " type="button" lay-filter="" id="returnThrew" value="上一步">
  584. <input class="layui-btn " type="button" lay-submit lay-filter="layuiadmin-publish-submit"
  585. id="layuiadmin-publish-submit" value="保存">
  586. </div>
  587. </div>
  588. </div>
  589. </div>
  590. </form>
  591. </div>
  592. </body>
  593. {/block}
  594. {block name="js"}
  595. <script src="__STATIC__/layui/layui/layui.js"></script>
  596. <script src="__STATIC__/layui/layui/lay/modules/xm-select.js" type="text/javascript" charset="utf-8"></script>
  597. <script>
  598. layui.config({
  599. base: '__LAYUI__/',
  600. urlbase: '/sys'
  601. }).extend({
  602. index: 'lib/index' //主入口模块
  603. }).use(['index', 'table', 'layedit', 'laydate', 'transfer'], function () {
  604. var $ = layui.$,
  605. layedit = layui.layedit,
  606. laydate = layui.laydate,
  607. transfer = layui.transfer,
  608. form = layui.form,
  609. allQuestionData = {},
  610. active = {},
  611. tb1 = null;
  612. $('.cancel').click(function () {
  613. var index = parent.layer.getFrameIndex(window.name);
  614. parent.layer.close(index);
  615. })
  616. //------------------------------选择试题-------------------------
  617. var data1 = [];
  618. getQuestionFunc();
  619. function getQuestionFunc() {
  620. $.ajax({
  621. url: '{:url("exam/getExamQuestion")}',
  622. type: 'post',
  623. data: {},
  624. success: function (res) {
  625. if (res.code == 0) {
  626. data1 = res.data;
  627. }
  628. }
  629. });
  630. }
  631. var datastr2 = '{:$data.data2}';
  632. var data2 = JSON.parse(datastr2);
  633. //表格列
  634. var cols = [
  635. { type: 'checkbox', fixed: 'left', },
  636. { field: 'type', title: '题型', },
  637. { field: 'cate', title: '分类' },
  638. { field: 'ask', title: '题干' },
  639. ];
  640. //表格配置文件
  641. var tabConfig = { 'page': true, 'limits': [10, 50, 100], 'height': 400 }
  642. $('.layui-tab-title li').click(function () {
  643. let index = $(this).prop('dataset').index;
  644. if (index == 1||index == 2||index == 3) {
  645. setTimeout(() => {
  646. tb1 = transfer.render({
  647. elem: "#transfer-questions", //指定元素
  648. cols: cols, //表格列 支持layui数据表格所有配置
  649. data: [data1, data2],//[左表数据,右表数据[非必填]]
  650. tabConfig: tabConfig, //表格配置项 支持layui数据表格所有配置
  651. })
  652. }, 500)
  653. }
  654. })
  655. $('#firstStep').click(function () {
  656. let val = $('#nameElement').val().trim();
  657. if (val) {
  658. $('.layui-tab-title').children().eq(1).addClass('layui-this').siblings().removeClass("layui-this");
  659. $('.layui-tab-item').eq(1).addClass('layui-show').siblings().removeClass("layui-show");
  660. setTimeout(() => {
  661. tb1 = transfer.render({
  662. elem: "#transfer-questions", //指定元素
  663. cols: cols, //表格列 支持layui数据表格所有配置
  664. data: [data1, data2],//[左表数据,右表数据[非必填]]
  665. tabConfig: tabConfig, //表格配置项 支持layui数据表格所有配置
  666. })
  667. }, 500)
  668. } else {
  669. layer.msg('请填写试卷名称', {
  670. anim: 6
  671. , time: 2000
  672. });
  673. }
  674. })
  675. $('#returnFirst').click(function () {
  676. $('.layui-tab-title').children().eq(0).addClass('layui-this').siblings().removeClass("layui-this");
  677. $('.layui-tab-item').eq(0).addClass('layui-show').siblings().removeClass("layui-show");
  678. })
  679. $('#secondStep').click(function () {
  680. var tranferdata = transfer.get(tb1, 'right', 'id');
  681. if (Array.isArray(tranferdata) && !tranferdata.length) {
  682. layer.msg('请选择试题', {
  683. anim: 6
  684. , time: 2000
  685. });
  686. return;
  687. }
  688. $('.layui-tab-title').children().eq(2).addClass('layui-this').siblings().removeClass("layui-this");
  689. $('.layui-tab-item').eq(2).addClass('layui-show').siblings().removeClass("layui-show");
  690. })
  691. $('#returnSecond').click(function () {
  692. $('.layui-tab-title').children().eq(1).addClass('layui-this').siblings().removeClass("layui-this");
  693. $('.layui-tab-item').eq(1).addClass('layui-show').siblings().removeClass("layui-show");
  694. setTimeout(() => {
  695. tb1 = transfer.render({
  696. elem: "#transfer-questions", //指定元素
  697. cols: cols, //表格列 支持layui数据表格所有配置
  698. data: [data1, data2],//[左表数据,右表数据[非必填]]
  699. tabConfig: tabConfig, //表格配置项 支持layui数据表格所有配置
  700. })
  701. }, 500)
  702. })
  703. $('#threwStep').click(function() {
  704. var tranferdata = transfer.get(tb1, 'right', 'id');
  705. if (Array.isArray(tranferdata) && !tranferdata.length) {
  706. layer.msg('请选择试题', {
  707. anim: 6
  708. , time: 2000
  709. });
  710. return;
  711. }
  712. for(var i=0;i<$('.itemRightline').length;i++){
  713. if($('.itemRightline').eq(i).find('input').val()){}else{
  714. layer.msg('分数不能为空', {
  715. anim: 6
  716. , time: 2000
  717. });
  718. return;
  719. }
  720. }
  721. var base_score = Number($('#passExam').val());
  722. var sum_score = Number($('#total_score').val());
  723. if (sum_score > 100) {
  724. layer.msg('总分不能超过100分', {
  725. anim: 6
  726. , time: 2000
  727. });
  728. return false;
  729. }
  730. if (base_score > sum_score) {
  731. layer.msg('及格分不能大过总分', {
  732. anim: 6
  733. , time: 2000
  734. });
  735. return false;
  736. }
  737. var single_choice = $('#single_choice').val() ? Number($('#single_choice').val()) : 0;
  738. if (single_choice > 100) {
  739. layer.msg('单选题分值不能超过100分', {
  740. anim: 6
  741. , time: 2000
  742. });
  743. return false;
  744. }
  745. var multiple_selection = $('#multiple_selection').val() ? Number($('#multiple_selection').val()) : 0;
  746. if (multiple_selection > 100) {
  747. layer.msg('多选题分值不能超过100分', {
  748. anim: 6
  749. , time: 2000
  750. });
  751. return false;
  752. }
  753. var multiple_judge = $('#multiple_judge').val() ? Number($('#multiple_judge').val()) : 0;
  754. if (multiple_judge > 100) {
  755. layer.msg('判断题分值不能超过100分', {
  756. anim: 6
  757. , time: 2000
  758. });
  759. return false;
  760. }
  761. var short_answer = $('#short_answer').val() ? Number($('#short_answer').val()) : 0;
  762. if (short_answer > 100) {
  763. layer.msg('简答题分值不能超过100分', {
  764. anim: 6
  765. , time: 2000
  766. });
  767. return false;
  768. }
  769. $('.layui-tab-title').children().eq(3).addClass('layui-this').siblings().removeClass("layui-this");
  770. $('.layui-tab-item').eq(3).addClass('layui-show').siblings().removeClass("layui-show");
  771. })
  772. $('#returnThrew').click(function() {
  773. $('.layui-tab-title').children().eq(2).addClass('layui-this').siblings().removeClass("layui-this");
  774. $('.layui-tab-item').eq(2).addClass('layui-show').siblings().removeClass("layui-show");
  775. })
  776. $('.layui-row .layui-col-md5').addClass('layui-col-xs5');
  777. $('.layui-row .layui-col-md5').addClass('layui-col-sm5');
  778. $('.layui-row .layui-col-md2').addClass('layui-col-xs2');
  779. $('.layui-row .layui-col-md2').addClass('layui-col-sm2');
  780. $('.layui-btn-disabled').attr('type', 'button');
  781. $(document).on('click', "#left-btn-1", function () {
  782. getlist_r();
  783. });
  784. $(document).on('click', "#right-btn-1", function () {
  785. getlist_r();
  786. });
  787. function getlist_r() {
  788. $('.layui-btn-disabled').attr('type', 'button');
  789. setTimeout(function () {
  790. var tranferdata = transfer.get(tb1, 'right', 'id');
  791. var listarr = tranferdata.split(',');
  792. var counts = [];
  793. for (var i in listarr) {
  794. counts.push(listarr[i]);
  795. }
  796. $('#count').html(counts.length);
  797. getScorelist(tranferdata)
  798. }, 300)
  799. }
  800. $('.radio-style').click(function () {
  801. searchkey();
  802. })
  803. //搜索题目
  804. $('#onSearch').click(function () {
  805. searchkey();
  806. });
  807. form.on('checkbox(radiosfilter)', function (data) {
  808. searchkey();
  809. });
  810. function getScorelist(ids) {
  811. $.ajax({
  812. url: '{:url("exam/paperscore")}',
  813. type: 'post',
  814. data: { question_ids: ids },
  815. success: function (res) {
  816. allQuestionData = res.data;
  817. renderSetRender(res.data);
  818. renderQHtml(res.data);
  819. setQQArr()
  820. }
  821. });
  822. }
  823. function renderSetRender(data) {
  824. let html1 = '';
  825. let html2 = '';
  826. let html3 = '';
  827. let html4 = '';
  828. if (data.type0.count > 0) {
  829. html1 = `<div class="leftdanxuan">
  830. <div class="danxuantitle">
  831. <strong>单选题</strong>
  832. <span class="cleartext" id="singleEl">清空</span>
  833. </div>
  834. <div class="itemScore">
  835. <span>题目数量</span>
  836. <span><span id="danxuan_count">${data.type0.count}</span>题</span>
  837. </div>
  838. <div class="itemScore">
  839. <span>合计分值</span>
  840. <span id="danxuan_total_fen">${data.type0.score_sum}</span>
  841. </div>
  842. <div class="itemScore">
  843. <span>分值占比</span>
  844. <span id="danxuan_grawth">${data.type0.grawth}</span>
  845. </div>
  846. <div class="itemScore" style="display:none;">
  847. <span><i class="requireditag">*</i>每题分数</span>
  848. <div>
  849. <input type="number" value="${data.type0.score ? data.type0.score : 1}" name="single" min="0" id="single_choice" style="width: 60px;">
  850. <span>分</span>
  851. </div>
  852. </div>
  853. </div>`
  854. }
  855. if (data.type1.count > 0) {
  856. html2 = `<div class="leftdanxuan">
  857. <div class="danxuantitle">
  858. <strong>多选题</strong>
  859. <span class="cleartext" id="multiEl">清空</span>
  860. </div>
  861. <div class="itemScore">
  862. <span>题目数量</span>
  863. <span><span id="duoxuan_count">${data.type1.count}</span>题</span>
  864. </div>
  865. <div class="itemScore">
  866. <span>合计分值</span>
  867. <span id="duoxuan_total_fen">${data.type1.score_sum}</span>
  868. </div>
  869. <div class="itemScore">
  870. <span>分值占比</span>
  871. <span id="duoxuan_grawth">${data.type1.grawth}</span>
  872. </div>
  873. <div class="itemScore" style="display:none;">
  874. <span><i class="requireditag">*</i>每题分数</span>
  875. <div>
  876. <input type="number" name="multi" id="multiple_selection" value="${data.type1.score ? data.type1.score : 2}" min="0" style="width: 60px;">
  877. <span>分</span>
  878. </div>
  879. </div>
  880. </div>`
  881. }
  882. if (data.type2.count > 0) {
  883. html3 = `<div class="leftdanxuan">
  884. <div class="danxuantitle">
  885. <strong>判断题</strong>
  886. <span class="cleartext" id="judgeEl">清空</span>
  887. </div>
  888. <div class="itemScore">
  889. <span>题目数量</span>
  890. <span><span id="panduan_count">${data.type2.count}</span>题</span>
  891. </div>
  892. <div class="itemScore">
  893. <span>合计分值</span>
  894. <span id="panduan_total_fen">${data.type2.score_sum}</span>
  895. </div>
  896. <div class="itemScore">
  897. <span>分值占比</span>
  898. <span id="panduan_grawth">${data.type2.grawth}</span>
  899. </div>
  900. <div class="itemScore" style="display:none;">
  901. <span><i class="requireditag">*</i>每题分数</span>
  902. <div>
  903. <input type="number" name="judge" id="multiple_judge" value="${data.type2.score ? data.type2.score : 5}" min="0" style="width: 60px;">
  904. <span>分</span>
  905. </div>
  906. </div>
  907. </div>`
  908. }
  909. if (data.type3.count > 0) {
  910. html4 = `<div class="leftdanxuan">
  911. <div class="danxuantitle">
  912. <strong>简答题</strong>
  913. <span class="cleartext" id="answerEl">清空</span>
  914. </div>
  915. <div class="itemScore">
  916. <span>题目数量</span>
  917. <span><span id="jianda_count">${data.type3.count}</span>题</span>
  918. </div>
  919. <div class="itemScore">
  920. <span>合计分值</span>
  921. <span id="jianda_total_fen">${data.type3.score_sum}</span>
  922. </div>
  923. <div class="itemScore">
  924. <span>分值占比</span>
  925. <span id="jianda_grawth">${data.type3.grawth}</span>
  926. </div>
  927. <div class="itemScore" style="display:none;">
  928. <span><i class="requireditag">*</i>每题分数</span>
  929. <div>
  930. <input type="number" name="answer" id="short_answer" value="${data.type3.score ? data.type3.score : 10}" min="0" style="width: 60px;">
  931. <span>分</span>
  932. </div>
  933. </div>
  934. </div>`
  935. }
  936. $('#total_score').val(data.total_score);
  937. $('#passExam').val(data.base_score);
  938. $('#scoreElement1').html(`${html1}${html2}${html3}${html4}`);
  939. var danxuan_fen = 0;
  940. var duoxuan_fen = 0;
  941. var panduan_fen = 0;
  942. var jianda_fen = 0;
  943. setTimeout(() => {
  944. active = {
  945. totalscore: function (type, totals) {
  946. //数量
  947. var danxuan_count = $('#danxuan_count').html() ? Number($('#danxuan_count').html()) : 0;
  948. var duoxuan_count = $('#duoxuan_count').html() ? Number($('#duoxuan_count').html()) : 0;
  949. var panduan_count = $('#panduan_count').html() ? Number($('#panduan_count').html()) : 0;
  950. var jianda_count = $('#jianda_count').html() ? Number($('#jianda_count').html()) : 0;
  951. //分数
  952. danxuan_fen = 0;
  953. for(var i=1;i<$("input[name='single']").length;i++){
  954. danxuan_fen += $("input[name='single']").eq(i).val() ? Number($("input[name='single']").eq(i).val()) : 0;
  955. }
  956. duoxuan_fen = 0;
  957. for(var i=1;i<$("input[name='multi']").length;i++){
  958. duoxuan_fen += $("input[name='multi']").eq(i).val() ? Number($("input[name='multi']").eq(i).val()) : 0;
  959. }
  960. panduan_fen = 0;
  961. for(var i=1;i<$("input[name='judge']").length;i++){
  962. panduan_fen += $("input[name='judge']").eq(i).val() ? Number($("input[name='judge']").eq(i).val()) : 0;
  963. }
  964. jianda_fen = 0;
  965. for(var i=1;i<$("input[name='answer']").length;i++){
  966. jianda_fen += $("input[name='answer']").eq(i).val() ? Number($("input[name='answer']").eq(i).val()) : 0;
  967. }
  968. var sum = danxuan_fen + duoxuan_fen + panduan_fen + jianda_fen;
  969. //分值占比
  970. var danxuan_total1 = danxuan_fen;
  971. var grawth1 = sum == 0 ? '0%' : (danxuan_total1 / sum * 100).toFixed(2) + '%';
  972. if ($('#danxuan_grawth')) {
  973. $('#danxuan_grawth').html(grawth1);
  974. }
  975. if ($('#danxuan_total_fen')) {
  976. $('#danxuan_total_fen').html(danxuan_total1 + '分');
  977. }
  978. var duoxuan_total2 = duoxuan_fen;
  979. var grawth2 = sum == 0 ? '0%' : (duoxuan_total2 / sum * 100).toFixed(2) + '%';
  980. if ($('#duoxuan_grawth')) {
  981. $('#duoxuan_grawth').html(grawth2);
  982. }
  983. if ($('#duoxuan_total_fen')) {
  984. $('#duoxuan_total_fen').html(duoxuan_total2 + '分');
  985. }
  986. var panduan_total3 = panduan_fen;
  987. var grawth3 = sum == 0 ? '0%' : (panduan_total3 / sum * 100).toFixed(2) + '%';
  988. if ($('#panduan_grawth')) {
  989. $('#panduan_grawth').html(grawth3);
  990. }
  991. if ($('#panduan_total_fen')) {
  992. $('#panduan_total_fen').html(panduan_total3 + '分');
  993. }
  994. var jianda_total4 = jianda_fen;
  995. var grawth4 = sum == 0 ? '0%' : (jianda_total4 / sum * 100).toFixed(2) + '%';
  996. if ($('#jianda_grawth')) {
  997. $('#jianda_grawth').html(grawth4);
  998. }
  999. if ($('#jianda_total_fen')) {
  1000. $('#jianda_total_fen').html(jianda_total4 + '分');
  1001. }
  1002. $('#total_score').val(sum);
  1003. var passExam = Math.round(sum * 0.6);
  1004. if (totals == 999999999 && allQuestionData.base_score <= 0) {
  1005. $('#passExam').val(passExam);
  1006. } else if (totals != 999999999) {
  1007. $('#passExam').val(passExam);
  1008. }
  1009. }
  1010. };
  1011. setTimeout(() => {
  1012. active.totalscore('single', 999999999);
  1013. form.render();
  1014. }, 800);
  1015. //清空输入框分值
  1016. $('#singleEl').click(function () {
  1017. $("input[name='single']").val('');
  1018. var danxuan_count = Number($('#danxuan_count').html());
  1019. var danxuan_fen = Number($("input[name='single']").val());
  1020. var total_fen = danxuan_count * danxuan_fen;
  1021. active.totalscore('single', total_fen);
  1022. });
  1023. $('#multiEl').click(function () {
  1024. $("input[name='multi']").val('');
  1025. var duoxuan_count = Number($('#duoxuan_count').html());
  1026. var duoxuan_fen = Number($("input[name='multi']").val());
  1027. var total_fen = duoxuan_count * duoxuan_fen;
  1028. active.totalscore('multi', total_fen);
  1029. });
  1030. $('#judgeEl').click(function () {
  1031. $("input[name='judge']").val('');
  1032. var panduan_count = Number($('#panduan_count').html());
  1033. var panduan_fen = Number($("input[name='judge']").val());
  1034. var total_fen = panduan_count * panduan_fen;
  1035. active.totalscore('judge', total_fen);
  1036. });
  1037. $('#answerEl').click(function () {
  1038. $("input[name='answer']").val('');
  1039. var jianda_count = Number($('#jianda_count').html());
  1040. var jianda_fen = Number($("input[name='answer']").val());
  1041. var total_fen = jianda_count * jianda_fen;
  1042. active.totalscore('answer', total_fen);
  1043. });
  1044. }, 500)
  1045. }
  1046. function renderQHtml(data) {
  1047. let html1 = '', html2 = '', html3 = '', html4 = '';
  1048. if (data.type0.questions.length > 0) {
  1049. html1 = `<div class="rightItem">
  1050. <div class="righttitle">
  1051. <strong>单选题(${data.type0.questions.length})</strong>
  1052. <span class="stow stowdx">收起</span>
  1053. </div>
  1054. <div class="dxrefEle">
  1055. ${data.type0.questions.map((item, index) => {
  1056. return `<div class="itemRightline">
  1057. <div class="dxtitle">
  1058. <span>题序${index + 1}</span>
  1059. <span class="dxflexcenter danxuanEle" style="display:none">1分</span>
  1060. <div>
  1061. <input class="inputText" type="number" data-id="${item.id}" name="single" id="" value="${data.type0.score ? data.type0.score : 1}" min="1" max='100' style="width: 60px;">
  1062. <span>分</span>
  1063. </div>
  1064. <div class="dxflex-end">
  1065. <span data-type="type0" data-index="${index}" class="delItem">删除</span>
  1066. </div>
  1067. </div>
  1068. <div>题干: ${item.ask}</div>
  1069. <div class="pl15">
  1070. ${item.content.map((citem, i) => {
  1071. return `<div>${citem.title}:${citem.content}</div>`
  1072. }).join('')}
  1073. </div>
  1074. <div>答案:${item.answer}</div>
  1075. </div>`;
  1076. }).join('')}
  1077. </div>
  1078. </div>`
  1079. }
  1080. if (data.type1.questions.length > 0) {
  1081. html2 = `<div class="rightItem">
  1082. <div class="righttitle">
  1083. <strong>多选题(${data.type1.questions.length})</strong>
  1084. <span class="stow stowMore">收起</span>
  1085. </div>
  1086. <div class="morerefele">
  1087. ${data.type1.questions.map((item, index) => {
  1088. return `<div class="itemRightline">
  1089. <div class="dxtitle">
  1090. <span>题序${index + 1}</span>
  1091. <span class="dxflexcenter duoxuanEle" style="display:none">2分</span>
  1092. <div>
  1093. <input class="inputText" type="number" data-id="${item.id}" name="multi" id="" value="${data.type1.score ? data.type1.score : 2}" min="1" max='100' style="width: 60px;">
  1094. <span>分</span>
  1095. </div>
  1096. <div class="dxflex-end">
  1097. <span data-type="type1" data-index="${index}" class="delItem">删除</span>
  1098. </div>
  1099. </div>
  1100. <div>题干: ${item.ask}</div>
  1101. <div class="pl15">
  1102. ${item.content.map((citem, i) => {
  1103. return `<div>${citem.title}:${citem.content}</div>`
  1104. }).join('')}
  1105. </div>
  1106. <div>答案:${item.answer}</div>
  1107. </div>`;
  1108. }).join('')}
  1109. </div>
  1110. </div>`
  1111. }
  1112. if (data.type2.questions.length > 0) {
  1113. html3 = `<div class="rightItem">
  1114. <div class="righttitle">
  1115. <strong>判断题(${data.type2.questions.length})</strong>
  1116. <span class="stow stowpdrr">收起</span>
  1117. </div>
  1118. <div class="pdrefEle">
  1119. ${data.type2.questions.map((item, index) => {
  1120. return `<div class="itemRightline">
  1121. <div class="dxtitle">
  1122. <span>题序${index + 1}</span>
  1123. <span class="dxflexcenter judgeEle" style="display:none">5分</span>
  1124. <div>
  1125. <input class="inputText" type="number" data-id="${item.id}" name="judge" id="" value="${data.type2.score ? data.type2.score : 5}" min="1" max='100' style="width: 60px;">
  1126. <span>分</span>
  1127. </div>
  1128. <div class="dxflex-end">
  1129. <span data-type="type2" data-index="${index}" class="delItem">删除</span>
  1130. </div>
  1131. </div>
  1132. <div>题干: ${item.ask}</div>
  1133. <div>答案:${item.answer}</div>
  1134. </div>`
  1135. }).join('')}
  1136. </div>
  1137. </div>`
  1138. }
  1139. if (data.type3.questions.length > 0) {
  1140. html4 = `<div class="rightItem">
  1141. <div class="righttitle">
  1142. <strong>简答题(${data.type3.questions.length})</strong>
  1143. <span class="stow stowjdrr">收起</span>
  1144. </div>
  1145. <div class="jdrefEle">
  1146. ${data.type3.questions.map((item, index) => {
  1147. return `<div class="itemRightline">
  1148. <div class="dxtitle">
  1149. <span>题序${index + 1}</span>
  1150. <span class="dxflexcenter answerEle" style="display:none">10分</span>
  1151. <div>
  1152. <input class="inputText" type="number" name="answer" data-id="${item.id}" value="${data.type3.score ? data.type3.score : 10}" min="1" max='100' style="width: 60px;">
  1153. <span>分</span>
  1154. </div>
  1155. <div class="dxflex-end">
  1156. <span data-type="type3" data-index="${index}" class="delItem">删除</span>
  1157. </div>
  1158. </div>
  1159. <div>题干: ${item.ask}</div>
  1160. <div class="flex">答案:${item.answer}</div>
  1161. <div>答案关键字:${item.answer_j}</div>
  1162. </div>`
  1163. }).join('')}
  1164. </div>
  1165. </div>`
  1166. }
  1167. $('.rightScroe').html(`${html1}${html2}${html3}${html4}`);
  1168. setTimeout(() => {
  1169. //
  1170. $(".inputText").keyup(function(){
  1171. $(this).val($(this).val().replace(/\D|^0/g,''));
  1172. }).bind("paste",function(){
  1173. return false;
  1174. })
  1175. //输入框的值改变时触发
  1176. $("input[name='single']").on("input", function (e) {
  1177. danxuan_fen = 0;
  1178. for(var i=1;i<$("input[name='single']").length;i++){
  1179. danxuan_fen += Number($("input[name='single']").eq(i).val());
  1180. }
  1181. active.totalscore();
  1182. $('#danxuan_total_fen').each(function () {
  1183. $(this).html(`${danxuan_fen}分`)
  1184. })
  1185. });
  1186. $("input[name='multi']").on("input", function (e) {
  1187. duoxuan_fen = 0;
  1188. for(var i=1;i<$("input[name='multi']").length;i++){
  1189. duoxuan_fen += Number($("input[name='multi']").eq(i).val());
  1190. }
  1191. active.totalscore();
  1192. $('#duoxuan_total_fen').each(function () {
  1193. $(this).html(`${duoxuan_fen}分`)
  1194. })
  1195. });
  1196. $("input[name='judge']").on("input", function (e) {
  1197. panduan_fen = 0;
  1198. for(var i=1;i<$("input[name='judge']").length;i++){
  1199. panduan_fen += Number($("input[name='judge']").eq(i).val());
  1200. }
  1201. active.totalscore();
  1202. $('#panduan_total_fen').each(function () {
  1203. $(this).html(`${panduan_fen}分`)
  1204. })
  1205. });
  1206. $("input[name='answer']").on("input", function (e) {
  1207. jianda_fen = 0;
  1208. for(var i=1;i<$("input[name='answer']").length;i++){
  1209. jianda_fen += Number($("input[name='answer']").eq(i).val());
  1210. }
  1211. active.totalscore();
  1212. $('#jianda_total_fen').each(function () {
  1213. $(this).html(`${jianda_fen}分`)
  1214. })
  1215. });
  1216. //
  1217. $('.stowdx').click(function () {
  1218. if ($('.dxrefEle').is(":hidden")) {
  1219. $('.dxrefEle').show();
  1220. $(this).html('收起');
  1221. } else {
  1222. $('.dxrefEle').hide();
  1223. $(this).html('展开');
  1224. }
  1225. })
  1226. $('.stowMore').click(function () {
  1227. if ($('.morerefele').is(":hidden")) {
  1228. $('.morerefele').show();
  1229. $(this).html('收起');
  1230. } else {
  1231. $('.morerefele').hide();
  1232. $(this).html('展开');
  1233. }
  1234. })
  1235. $('.stowpdrr').click(function () {
  1236. if ($('.pdrefEle').is(":hidden")) {
  1237. $('.pdrefEle').show();
  1238. $(this).html('收起');
  1239. } else {
  1240. $('.pdrefEle').hide();
  1241. $(this).html('展开');
  1242. }
  1243. })
  1244. $('.stowjdrr').click(function () {
  1245. if ($('.jdrefEle').is(":hidden")) {
  1246. $('.jdrefEle').show();
  1247. $(this).html('收起');
  1248. } else {
  1249. $('.jdrefEle').hide();
  1250. $(this).html('展开');
  1251. }
  1252. })
  1253. $('.delItem').click(function () {
  1254. let props = $(this).prop('dataset');
  1255. allQuestionData[props.type].questions.splice(parseInt(props.index), 1);
  1256. renderQHtml(allQuestionData);
  1257. if (props.type == 'type0') {
  1258. $('#danxuan_count').html(allQuestionData[props.type].questions.length)
  1259. } else if (props.type == 'type1') {
  1260. $('#duoxuan_count').html(allQuestionData[props.type].questions.length)
  1261. } else if (props.type == 'type2') {
  1262. $('#panduan_count').html(allQuestionData[props.type].questions.length)
  1263. } else {
  1264. $('#jianda_count').html(allQuestionData[props.type].questions.length)
  1265. }
  1266. active.totalscore('single', 999999999);
  1267. setQdata();
  1268. })
  1269. form.render();
  1270. }, 500)
  1271. }
  1272. function setQdata() {
  1273. let arr1 = allQuestionData.type0.questions.map(v => {
  1274. return { id: v.id, ask: v.ask, cate: v.cate, type: v.type }
  1275. })
  1276. let arr2 = allQuestionData.type1.questions.map(v => {
  1277. return { id: v.id, ask: v.ask, cate: v.cate, type: v.type }
  1278. })
  1279. let arr3 = allQuestionData.type2.questions.map(v => {
  1280. return { id: v.id, ask: v.ask, cate: v.cate, type: v.type }
  1281. })
  1282. let arr4 = allQuestionData.type3.questions.map(v => {
  1283. return { id: v.id, ask: v.ask, cate: v.cate, type: v.type }
  1284. })
  1285. let arr = [...arr1, ...arr2, ...arr3, ...arr4];
  1286. data2 = arr;
  1287. transfer.render({
  1288. elem: "#transfer-questions", //指定元素
  1289. cols: cols, //表格列 支持layui数据表格所有配置
  1290. data: [data1, arr], //[左表数据,右表数据[非必填]]
  1291. tabConfig: tabConfig //表格配置项 支持layui数据表格所有配置
  1292. })
  1293. }
  1294. function setQQArr() {
  1295. let arr1 = allQuestionData.type0.questions.map(v => {
  1296. return { id: v.id, ask: v.ask, cate: v.cate, type: v.type }
  1297. })
  1298. let arr2 = allQuestionData.type1.questions.map(v => {
  1299. return { id: v.id, ask: v.ask, cate: v.cate, type: v.type }
  1300. })
  1301. let arr3 = allQuestionData.type2.questions.map(v => {
  1302. return { id: v.id, ask: v.ask, cate: v.cate, type: v.type }
  1303. })
  1304. let arr4 = allQuestionData.type3.questions.map(v => {
  1305. return { id: v.id, ask: v.ask, cate: v.cate, type: v.type }
  1306. })
  1307. let arr = [...arr1, ...arr2, ...arr3, ...arr4];
  1308. data2 = arr;
  1309. }
  1310. function searchkey() {
  1311. var keyword = $('#keyword').val();
  1312. var type = '';
  1313. $('input[name="radios"]:checked').each(function (index, element) {
  1314. type = type + $(this).val() + ',';
  1315. });
  1316. var cate = $('#cate').val();
  1317. $.ajax({
  1318. url: '{:url("exam/searchquestion")}',
  1319. type: 'post',
  1320. data: { type: type, keyword: keyword, data2: data2, cate: cate },
  1321. success: function (res) {
  1322. data2 = data2;
  1323. transfer.render({
  1324. elem: "#transfer-questions", //指定元素
  1325. cols: cols, //表格列 支持layui数据表格所有配置
  1326. data: [res.data.data1, data2], //[左表数据,右表数据[非必填]]
  1327. tabConfig: tabConfig //表格配置项 支持layui数据表格所有配置
  1328. })
  1329. $('#count').html(res.data.count);
  1330. }
  1331. });
  1332. }
  1333. //清除所有
  1334. $('#clean').click(function () {
  1335. var keyword = $('#keyword').val();
  1336. var type = $('#type').val();
  1337. $.ajax({
  1338. url: '{:url("exam/searchquestion")}',
  1339. type: 'post',
  1340. data: { type: type, keyword: keyword, data2: [] },
  1341. success: function (res) {
  1342. data2 = [];
  1343. transfer.render({
  1344. elem: "#transfer-questions", //指定元素
  1345. cols: cols, //表格列 支持layui数据表格所有配置
  1346. data: [res.data.data1, []], //[左表数据,右表数据[非必填]]
  1347. tabConfig: tabConfig //表格配置项 支持layui数据表格所有配置
  1348. })
  1349. $('#count').html(0);
  1350. }
  1351. });
  1352. })
  1353. // -----------------------------发布考试--------------------------------------
  1354. var orgids_str = '{:$orgids}';
  1355. var orgids = JSON.parse(orgids_str);
  1356. var org = eval('{$org|raw}');
  1357. $('#org').append(setOrgOption(org, ''));
  1358. form.render('select')
  1359. // let date = new Date($('#starttime').val());
  1360. // let time = date.getTime() + $('#duringtime').val() * 60 * 1000;
  1361. // let date1 = new Date(time);
  1362. // 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());
  1363. // $('#endtime').val(time1);
  1364. laydate.render({
  1365. elem: '#starttime'
  1366. , type: 'datetime',
  1367. trigger: 'click',//呼出事件改成click
  1368. format: 'yyyy/MM/dd HH:mm:ss',
  1369. done: function (value, date, endDate) {
  1370. $('#starttime').val(value);
  1371. if ($('#duringtime').val()) {
  1372. let date = new Date(value);
  1373. let time = date.getTime() + $('#duringtime').val() * 60 * 1000;
  1374. let date1 = new Date(time);
  1375. 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());
  1376. $('#endtime').val(time1);
  1377. }
  1378. }
  1379. });
  1380. laydate.render({
  1381. elem: '#endtime'
  1382. , type: 'datetime',
  1383. trigger: 'click',//呼出事件改成click
  1384. format: 'yyyy/MM/dd HH:mm:ss'
  1385. });
  1386. //监听审核方式单项框
  1387. form.on('radio(checkway)', function (data) {
  1388. console.log(data);//打印当前选择的信息
  1389. var value = data.value; // 当前选中的value值
  1390. if (value == "employee") {
  1391. $('#person').removeClass('layui-hide');
  1392. } else {
  1393. $('#person').addClass('layui-hide');
  1394. }
  1395. });
  1396. form.on('select(org_select)', function (data) {
  1397. var val = data.value;
  1398. $.ajax({
  1399. url: '{:url("org/employee")}'
  1400. , data: { org: val }
  1401. , type: 'get'
  1402. , success: function (res) {
  1403. if (res.code == 0) {
  1404. $('#employee').html('<option value="">请选择</option>');
  1405. res.data.forEach(element => {
  1406. $('#employee').append('<option value="' + element.id + '">' + element.name + '</option>');
  1407. });
  1408. form.render('select')
  1409. }
  1410. }
  1411. });
  1412. });
  1413. function setOrgOption(opt, sj) {
  1414. var html = '';
  1415. opt.forEach(element => {
  1416. if (orgids.length > 0) {
  1417. if (in_array(element.id, orgids)) {
  1418. html += '<option value="' + element.id + '">' + sj + element.title + '</option>';
  1419. }
  1420. }
  1421. if (element.children.length > 0) html += setOrgOption(element.children, sj + '-');
  1422. });
  1423. return html;
  1424. }
  1425. function in_array(search, array) {
  1426. for (var i in array) {
  1427. if (array[i] == search) {
  1428. return true;
  1429. }
  1430. }
  1431. return false;
  1432. }
  1433. //考试范围选择人员
  1434. var approve_ids = xmSelect.render({
  1435. el: "#range_person",
  1436. autoRow: true,
  1437. filterable: true,
  1438. tips: '考试人员',
  1439. layVerify: 'required',
  1440. toolbar: {
  1441. //工具条,全选,清空,反选,自定义
  1442. show: true,
  1443. list: [
  1444. 'ALL',
  1445. 'CLEAR',
  1446. 'REVERSE'
  1447. ]
  1448. },
  1449. tree: {
  1450. show: true,
  1451. showFolderIcon: true,
  1452. showLine: true,
  1453. indent: 20,
  1454. expandedKeys: [-3],
  1455. },
  1456. height: "200px",
  1457. data: [],
  1458. //文本显示模式
  1459. //处理方式
  1460. });
  1461. $(function () {
  1462. selectperson();
  1463. });
  1464. function selectperson() {
  1465. setTimeout(function () {
  1466. //data是ajax异步获取的
  1467. $.ajax({
  1468. type: "get",
  1469. url: "{:url('exam/get_person')}",
  1470. data: { type: 1 },
  1471. dataType: 'json',
  1472. success: function (data) {
  1473. // var data = JSON.parse(data);
  1474. // var res = JSON.parse(data);
  1475. //通过ajax 获取json数据,异步更新多选下拉框的值
  1476. approve_ids.update({ data: data })
  1477. }
  1478. });
  1479. }, 100);
  1480. }
  1481. //多选审核人员
  1482. var options = {
  1483. el: '#label',
  1484. autoRow: true,
  1485. filterable: true,
  1486. name: 'approve_employee_ids',//表单的name属性
  1487. layVerify: '',
  1488. //layVerType: 'tips',//提示类型 同layui
  1489. tips: '审核人员',
  1490. toolbar: {
  1491. //工具条,全选,清空,反选,自定义
  1492. show: true,
  1493. list: [
  1494. 'ALL',
  1495. 'CLEAR',
  1496. 'REVERSE'
  1497. ]
  1498. },
  1499. tree: {
  1500. show: true,
  1501. showFolderIcon: true,
  1502. showLine: true,
  1503. indent: 20,
  1504. expandedKeys: [-3],
  1505. },
  1506. data: [],
  1507. // max: 1,
  1508. };
  1509. var label = xmSelect.render(options)
  1510. $(function () {
  1511. selectdata();
  1512. });
  1513. function selectdata() {
  1514. setTimeout(function () {
  1515. //data是ajax异步获取的
  1516. $.ajax({
  1517. type: "get",
  1518. url: "{:url('exam/get_person')}",
  1519. data: {type: 1},
  1520. dataType: 'json',
  1521. success: function (data) {
  1522. var data = data;
  1523. //通过ajax 获取json数据,异步更新多选下拉框的值
  1524. label.update({ data: data })
  1525. }
  1526. });
  1527. }, 100);
  1528. }
  1529. // ----------------------------------------------设置分值---------------------------------------------
  1530. form.on('submit(layuiadmin-publish-submit)', function (data) {
  1531. var tranferdata = transfer.get(tb1, 'right', 'id');
  1532. if (Array.isArray(tranferdata) && !tranferdata.length) {
  1533. layer.msg('请选择试题', {
  1534. anim: 6
  1535. , time: 2000
  1536. });
  1537. return false;
  1538. }
  1539. var base_score = Number($('#passExam').val());
  1540. var sum_score = Number($('#total_score').val());
  1541. if (sum_score > 100) {
  1542. layer.msg('总分不能超过100分', {
  1543. anim: 6
  1544. , time: 2000
  1545. });
  1546. return false;
  1547. }
  1548. if (base_score > sum_score) {
  1549. layer.msg('及格分不能大过总分', {
  1550. anim: 6
  1551. , time: 2000
  1552. });
  1553. return false;
  1554. }
  1555. var single_choice = $('#single_choice').val() ? Number($('#single_choice').val()) : 0;
  1556. if (single_choice > 100) {
  1557. layer.msg('单选题分值不能超过100分', {
  1558. anim: 6
  1559. , time: 2000
  1560. });
  1561. return false;
  1562. }
  1563. var multiple_selection = $('#multiple_selection').val() ? Number($('#multiple_selection').val()) : 0;
  1564. if (multiple_selection > 100) {
  1565. layer.msg('多选题分值不能超过100分', {
  1566. anim: 6
  1567. , time: 2000
  1568. });
  1569. return false;
  1570. }
  1571. var multiple_judge = $('#multiple_judge').val() ? Number($('#multiple_judge').val()) : 0;
  1572. if (multiple_judge > 100) {
  1573. layer.msg('判断题分值不能超过100分', {
  1574. anim: 6
  1575. , time: 2000
  1576. });
  1577. return false;
  1578. }
  1579. var short_answer = $('#short_answer').val() ? Number($('#short_answer').val()) : 0;
  1580. if (short_answer > 100) {
  1581. layer.msg('简答题分值不能超过100分', {
  1582. anim: 6
  1583. , time: 2000
  1584. });
  1585. return false;
  1586. }
  1587. var index = parent.layer.getFrameIndex(window.name);
  1588. var formData = new FormData(data.form);
  1589. var fraction = [];
  1590. for(var i=0;i<$('.itemRightline').length;i++){
  1591. fraction.push($('.itemRightline').eq(i).find('input').data('id')+'@'+$('.itemRightline').eq(i).find('input').val())
  1592. }
  1593. fraction = fraction.toString();
  1594. formData.append('fraction',fraction);
  1595. var checkway = 'sys';
  1596. var employee = '';
  1597. formData.forEach((value, key) => {
  1598. if (key == 'checkway') {
  1599. checkway = value;
  1600. }
  1601. if (key == 'approve_employee_ids') {
  1602. employee = value;
  1603. }
  1604. })
  1605. formData.append('idstr', tranferdata);
  1606. if (checkway == 'employee' && employee == '') {
  1607. layer.msg('人工审核请选择审核人员', {
  1608. anim: 6
  1609. , time: 2000
  1610. });
  1611. return false;
  1612. }
  1613. var load = layer.load(1, {
  1614. shade: [0.8, '#000']
  1615. });
  1616. $.ajax({
  1617. url: '{:url("dashboard/exam/paperadd")}',
  1618. type: 'post',
  1619. data: formData,
  1620. dataType: 'json',
  1621. processData: false,
  1622. contentType: false,
  1623. success: function (res) {
  1624. if (res.code === 0) {
  1625. layer.msg(res.msg, {
  1626. anim: 0
  1627. , time: 2000
  1628. }, function () {
  1629. parent.layui.table.reload('LAY-exam-paper-list'); //重载表格
  1630. parent.layer.close(index); //再执行关闭
  1631. });
  1632. } else {
  1633. layer.msg(res.msg, {
  1634. anim: 6
  1635. , time: 2000
  1636. });
  1637. }
  1638. layer.close(load);
  1639. }
  1640. });
  1641. return false;
  1642. });
  1643. });
  1644. </script>
  1645. {/block}