index.html 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  6. <meta http-equiv="pragma" content="no-cache">
  7. <meta http-equiv="cache-control" content="no-cache">
  8. <meta http-equiv="expires" content="0">
  9. <!-- Bootstrap CSS -->
  10. <link rel="stylesheet" href="../vendor/bootstrap-4.4.1/css/bootstrap.min.css">
  11. <link rel="stylesheet" href="../vendor/fontawesome-free-5.12.1-web/css/all.min.css">
  12. <!-- <link rel="stylesheet" href="./judge.css"> -->
  13. <link rel="stylesheet" type="text/css" href="css/sindex.css"/>
  14. <!--阿里播放组件 -->
  15. <link rel="stylesheet" href="../vendor/aliplayer/aliplayer-min.css">
  16. <script type="text/javascript" charset="utf-8" src="../vendor/aliplayer/aliplayer-min.js"></script>
  17. <!--阿里播放组件 -->
  18. <!-- <link rel="stylesheet" href="https://g.alicdn.com/de/prismplayer/2.8.7/skins/default/aliplayer-min.css" /> -->
  19. <script type="text/javascript" charset="utf-8" src="./js/aliplayer-min.js"></script>
  20. <title>无纸化评分系统</title>
  21. </head>
  22. <body class="{{currStep == 'Examing' || currStep == 'ConfirmScore'?'grey':'logining'}}" ng-app="app" ng-controller="AppCtrl" ontouchstart>
  23. <div class="outside-container" id="main_div" ng-controller="LoginCtrl">
  24. <!-- 这里放弹出框 -->
  25. <!-- 评委详细信息弹窗 -->
  26. <div class="modal fade" id="judgeModal" tabindex="-1" role="dialog" aria-labelledby="judge_title" aria-hidden="true">
  27. <div class="modal-dialog" role="document">
  28. <div class="modal-content">
  29. <div class="modal-header">
  30. <h5 class="modal-title" id="judge_title">评委详细信息</h5>
  31. <button type="button" class="close" data-dismiss="modal" aria-label="Close">
  32. <span aria-hidden="true">&times;</span>
  33. </button>
  34. </div>
  35. <div class="modal-body">
  36. <form>
  37. <div class="row">
  38. <div class="form-group col-xs-12 col-lg-12">
  39. <div class="form-group">
  40. <label class="col-form-label">考场地址:</label> <input type="text" class="form-control" value="{{room.room_addr}}" readonly>
  41. </div>
  42. </div>
  43. </div>
  44. <div class="row" style="margin-top: -20px;">
  45. <div class="form-group col-xs-6 col-lg-6">
  46. <label class="col-form-label">登录帐号:</label> <input type="text" class="form-control" value="{{judge.login_name}}" readonly>
  47. </div>
  48. <div class="form-group col-xs-6 col-lg-6">
  49. <label class="col-form-label">评委姓名:</label>
  50. <input type="text" class="form-control" ng-readonly="getParamValue('ModifyJudgeInfo') != 'Active'" ng-model="modifyJudge.judge_name">
  51. </div>
  52. </div>
  53. <div class="row" style="margin-top: -15px;">
  54. <div class="form-group col-xs-12 col-lg-12">
  55. <label class="col-form-label">联系电话:</label>
  56. <input type="text" class="form-control" ng-readonly="getParamValue('ModifyJudgeInfo') != 'Active'" ng-model="modifyJudge.judge_tel">
  57. </div>
  58. </div>
  59. </form>
  60. </div>
  61. <div class="modal-footer">
  62. <button type="button" class="btn btn-secondary" data-dismiss="modal">关闭窗口</button>
  63. <button type="button" class="btn btn-primary" ng-if="getParamValue('ModifyJudgeInfo') == 'Active'" ng-click="changeJudge()">更新评委信息</button>
  64. </div>
  65. </div>
  66. </div>
  67. </div>
  68. <!-- 考题展示 -->
  69. <div class="modal fade" id="topicModal" tabindex="-1" role="dialog" aria-labelledby="judge_title" aria-hidden="true" >
  70. <div class="modal-dialog" role="document">
  71. <div class="modal-content">
  72. <div class="modal-header">
  73. <h5 class="modal-title" id="judge_title">考题展示</h5>
  74. <button type="button" class="close" data-dismiss="modal" aria-label="Close">
  75. <span aria-hidden="true">&times;</span>
  76. </button>
  77. </div>
  78. <div class="modal-body" ng-repeat="t in topic">
  79. <img ng-if="t.topic_path!=null" ng-src="{{t.topic_path}}" class="head">
  80. <span ng-if="t.topic_path==null" ng-bind-html="t.topic_content"></span>
  81. </div>
  82. </div>
  83. </div>
  84. </div>
  85. <!-- 作品展示-->
  86. <div class="modal fade" id="judgeModal2" tabindex="-1" role="dialog" aria-labelledby="judge_title" aria-hidden="true" style="width:1000px">
  87. <div class="modal-dialog" role="document">
  88. <div class="modal-content">
  89. <div class="modal-header">
  90. <h5 class="modal-title" id="judge_title">作品展示</h5>
  91. <button type="button" class="close" data-dismiss="modal" aria-label="Close">
  92. <span aria-hidden="true">&times;</span>
  93. </button>
  94. </div>
  95. <div class="modal-body">
  96. <img width="750px" height="600px" src="{{currentSubject.material_file}}" />
  97. </div>
  98. </div>
  99. </div>
  100. </div>
  101. <div class="login" ng-if="currStep == 'LoginName'">
  102. <div class="box">
  103. <div class="title">
  104. {{getParamValue('JudgeLoginTitleText','武汉启明禾木软件服务有限公司')}}
  105. </div>
  106. <div class="tips">
  107. {{getParamValue('JudgeLoginMajorText','武汉启明禾木软件服务有限公司')}}
  108. </div>
  109. <div class="input first">
  110. <img src="img/user1.png" alt="">
  111. <input type="text" placeholder="请输入用户名" id="login_name"
  112. ng-keyup="changeLogin($event)" placeholder="请输入用户名" autocomplete="off" autofocus="" tabindex="0" maxlength=11 autocorrect="off"
  113. autocapitalize="off" spellcheck="false">
  114. </div>
  115. <div class="input second" ng-if="getParamValue('ExamJudgeLoginWithPassword') == 'Active'">
  116. <img src="img/pwd.png" alt="">
  117. <input type="password" placeholder="请输入密码" id="login_pass"
  118. ng-keyup="changeLoginName($event)" placeholder="请输入密码" autocomplete="off" autofocus=""
  119. tabindex="0" maxlength=11 autocorrect="off" autocapitalize="off" spellcheck="false" />
  120. </div>
  121. <div class="btn-box">
  122. <button class="login-btn" ng-click="login()"> 登录</button>
  123. </div>
  124. </div>
  125. </div>
  126. <div class="login-confirm" ng-if="currStep == 'ConfrimJudge'">
  127. <div class="box">
  128. <div class="title">
  129. {{getParamValue('JudgeLoginTitleText','武汉启明禾木软件服务有限公司')}}
  130. </div>
  131. <div class="tips">
  132. {{getParamValue('JudgeLoginMajorText','武汉启明禾木软件服务有限公司')}}
  133. </div>
  134. <div class="info">
  135. <div class="name">面试项目</div>
  136. <div class="text">{{group.group_name}}</div>
  137. </div>
  138. <div class="info">
  139. <div class="name">考场地址</div>
  140. <div class="text">{{room.room_addr}}</div>
  141. </div>
  142. <div class="info">
  143. <div class="name">登录名称</div>
  144. <div class="text">{{judge.login_name}}</div>
  145. </div>
  146. <div class="info">
  147. <div class="name">评委名称</div>
  148. <div class="text">{{judge.judge_name}}</div>
  149. </div>
  150. <div class="btns">
  151. <div class="confirm-login">
  152. <button ng-click="judgeLogin()">确认登录</button>
  153. </div>
  154. <div class="choose">
  155. <button ng-click="showLoginName()">重新选择</button>
  156. </div>
  157. </div>
  158. </div>
  159. </div>
  160. <div class="top-nav" ng-if="currStep == 'Examing' || currStep == 'ConfirmScore'" >
  161. <div class="logo">
  162. <!-- <img src="img/logo.png" > -->
  163. {{getParamValue('SchoolName','武汉启明禾木软件服务有限公司')}}
  164. </div>
  165. <div class="username" ng-click="showJudge()">
  166. <img src="img/user.png" >
  167. {{judge.login_name}}
  168. </div>
  169. <div class="close" ng-click="exitJudge()">
  170. <img src="./img/close.png" >
  171. </div>
  172. </div>
  173. <div class="joining" ng-if="currStep == 'Examing' && currentStd ==undefined" >
  174. <div class="box">
  175. <div class="waiting">
  176. <div class="red-ling"></div>
  177. <div class="title">等待考生进场</div>
  178. <div class="last-time">上次查询时间:{{lastRequestTime}}</div>
  179. <div class="toast">
  180. 工作人员正在核实考生身份,请稍后...
  181. </div>
  182. <div class="toast1">
  183. 考生进场系统将自动刷新,无需进行其他操作!
  184. </div>
  185. </div>
  186. <div class="loading">
  187. <img src="img/load.png" >
  188. </div>
  189. </div>
  190. </div>
  191. <div class="stu-choose" ng-if="currStep == 'Examing' && currentStd !=undefined">
  192. <div class="box">
  193. <div id="stuList" class="stu-list {{ getParamValue('JudgeVideoScore') == 'Active'?'long':''}}">
  194. <div class="stu-info {{std.std_id == currentStd.std_id?'active':''}}" ng-repeat="std in StdArray"
  195. ng-click="clickChooseStd(std)">
  196. <div class="no">
  197. {{std.real_exam_echo}}
  198. </div>
  199. <div class="muce {{std['SubjectArray'].length-1 == $index?'last':''}}" ng-repeat="sb in std['SubjectArray']">
  200. <div class="name">{{sb.subject_name}} </div>
  201. <div class="value">
  202. <img src="img/okred.png" ng-if="sb.judge_score == undefined && sb.judge_avoid !='Active' && std.std_id == currentStd.std_id ">
  203. <img src="img/ok.png" ng-if="sb.judge_score == undefined && sb.judge_avoid !='Active' && std.std_id != currentStd.std_id ">
  204. <span ng-if="sb.judge_avoid == 'Active'" >回避</span>
  205. <span ng-if="sb.judge_score!= undefined && !sb.discipline_id" >{{sb.judge_score}}</span>
  206. <span ng-if="sb.discipline_id">违规 {{sb.judge_score}}</span>
  207. </div>
  208. </div>
  209. </div>
  210. </div>
  211. <div class="stu-detail">
  212. <div class="detail-box">
  213. <div class="base">
  214. <img ng-if="currentStd.std_image!=undefined" ng-src="{{currentStd.std_image}}" class="head">
  215. <div class="name-code">
  216. <div class="stu-name" ng-if="currentStd.std_name!=undefined">
  217. {{currentStd.std_name}}<span ng-if="currentStd.std_sex!=undefined">({{currentStd.std_sex}})</span>
  218. </div>
  219. <div class="stu-name" ng-if="currentStd.std_height!=undefined">
  220. <span ng-if="currentStd.std_sex!=undefined">{{currentStd.std_sex}}&nbsp;</span>
  221. <span ng-if="currentStd.std_height!=undefined">{{currentStd.std_height}}cm&nbsp;</span>
  222. <span ng-if="currentStd.std_weight!=undefined">{{currentStd.std_weight}}kg&nbsp;</span>
  223. </div>
  224. <div class="stu-no">
  225. {{currentStd.real_exam_echo}}号考生
  226. <span style="padding-left: 40px;" ng-if = "currentStd.SubjectArray.length > 1 && currentStd.totalScore">总分:<font color="red">{{currentStd.totalScore}}</font></span>
  227. </div>
  228. <div ng-click="showPhoto()">
  229. <span class="text-primary">查看作品</span>
  230. </div>
  231. <div ng-repeat="t in currentStd.tracksArray">
  232. <s ng-if="t.tracks_status == 'InActive'" class="text-muted">{{getBatchName(t)}}{{t.tracks_name}}</s>
  233. <span ng-if="t.tracks_status == 'Active'" class="{{getTracksClass(t)}}">{{getBatchName(t)}}{{t.tracks_name}}</span>
  234. </div>
  235. <div><span class="text-danger mt-2" ng-if="currentStd.show_topic =='Active'" ng-click="lookTopic()">查看考题</span></div>
  236. <!-- 考题展示
  237. <div>
  238. <span>{{currentStd.draw_topic}}</span>
  239. </div> -->
  240. <!-- 考题展示 -->
  241. <!-- 曲目信息 -->
  242. </div>
  243. <div class="rule">
  244. <!-- ng-if="scoreStep == 'scorePanel' || currentStd.material_file != undefined" -->
  245. <span ng-click='chooseLastStd()' class="prev" >
  246. 上个考生
  247. </span>
  248. <span ng-click='chooseNextStd()' class="next" >
  249. 下个考生
  250. </span>
  251. </div>
  252. </div>
  253. <!-- <div class="video" ng-if="currentStd.material_file !=undefined && currentStd.material_file != '' && getParamValue('JudgeVideoScore') == 'Active' && currentStd.separate_score == 'Active'">
  254. <div id="video-player">
  255. <font style="font-size:26px;margin:20px">等待视频控件加载...</font>
  256. </div>
  257. </div>-->
  258. <div ng-if="currentStd.ExVideoList !=undefined && currentStd.ExVideoList.length>0 && getParamValue('JudgeVideoScore') == 'Active' && currentStd.separate_score == 'Active'">
  259. <!-- 多科目显示科目名称 -->
  260. <div class="row display: inline;">
  261. <button ng-repeat="subj in currentStd.ExVideoList" ng-if="currentStd.ExVideoList.length > 1" ng-click="changeSubjVideo(subj,$index)" class="btn {{currentNum == $index ? 'btn-success' : 'btn-secondary' }}" style="margin-left: 20px;">{{subj.subject_name}}</button>
  262. </div>
  263. <div class="video">
  264. <div id="video-player">
  265. <font style="font-size:26px;margin:20px">等待视频控件加载...</font>
  266. </div>
  267. </div>
  268. </div>
  269. <div class="step-1" ng-if="scoreStep == 'subjectPanel'">
  270. <div class="ping-title">
  271. 评分科目-{{currentStd.real_exam_echo}}
  272. </div>
  273. <div class="score-item" ng-repeat="sb in currentStd.SubjectArray" ng-click="chooseSubject(sb)">
  274. <div class="item-name">
  275. {{sb.subject_name}}
  276. </div>
  277. <div class="img" >
  278. <img ng-if="sb.judge_score == undefined && currentStd.avoid_flag !='Active'" src="img/ok.png" >
  279. <span class="score" ng-if="currentStd.avoid_flag =='Active'" >回避该考生</span>
  280. <span class="score" ng-if="sb.judge_score != undefined && !sb.discipline_id" >{{sb.judge_score}}</span>
  281. <span class="score" ng-if="sb.discipline_id">违规 {{sb.judge_score}}</span>
  282. </div>
  283. </div>
  284. <div class="btns {{getParamValue('ShowAppraise') == 'Active' && disciplineFlag == 'Active'?'top':''}}">
  285. <!-- <div class="prev" ng-if="currentStd.material_file == undefined">
  286. <button ng-click='chooseLastStd()' >上个考生</button>
  287. </div>
  288. <div class="next" ng-if="currentStd.material_file == undefined">
  289. <button ng-click='chooseNextStd()' >下个考生</button>
  290. </div> -->
  291. <div class="prev" ng-if="getParamValue('JudgeAvoidFlag') == 'Active' && currentStd.avoid_flag =='Active'" >
  292. <button type="button" ng-click="avoidStd()">取消回避,正常评分</button>
  293. </div>
  294. <div class="prev" ng-if="getParamValue('JudgeAvoidFlag') == 'Active' && currentStd.avoid_flag !='Active'">
  295. <button type="button" ng-click="avoidStd()">回避该考生</button>
  296. </div>
  297. <div class="prev" ng-if="scoreStdTotal>0" >
  298. <button type="button" class="btn {{scoreStdTotal == StdArray.length?'btn-success':'btn-warning'}}"ng-click='confirmScore()' style="background:#4caf50;color:#FFF">提交已评分数({{scoreStdTotal}}/{{StdArray.length}})</button>
  299. </div>
  300. </div>
  301. </div>
  302. <div class="step-2" ng-if="scoreStep == 'scorePanel'">
  303. <div class="sub-title">
  304. 评分科目-{{currentStd.real_exam_echo}}:{{currentSubject.subject_name}}
  305. </div>
  306. <!-- 九宫格录入分数 -->
  307. <div ng-if="getParamValue('NineScore') == 'Active' ">
  308. <input type="text" class="numkeyboard" id ="score_cur" placeholder="分数" readonly maxlength="3" />
  309. <button class="text-danger ml-2" ng-click="backPanel()" ng-if="currentStd.SubjectArray.length>1">返回</button>
  310. </div>
  311. <!-- 九宫格录入分数 -->
  312. <!-- 选择打分 -->
  313. <div class="score-box" ng-if="getParamValue('NineScore') == 'InActive' || getParamValue('NineScore') == undefined">
  314. <div class="item {{s.score_id===currentScore.score_id?'active':''}}" ng-click="chooseScore(s)" ng-repeat="s in ExamParamMap['SubjectScore_' + currentSubject.subject_id]" ng-bind-html="showHtml(s.score_name)">
  315. <!-- {{s.score_name | showHtml}} -->
  316. </div>
  317. </div>
  318. <div class="nums" ng-if="showScore && (getParamValue('NineScore') == 'InActive' || getParamValue('NineScore') == undefined)">
  319. <div class="item {{currentSubject.judge_score == s.score_value?'active':'btn-secondary'}} " ng-repeat="s in scoreArray" ng-click="gradeScore(s.score_value)">
  320. {{s.score_value}}
  321. </div>
  322. </div>
  323. <!-- 选择打分 -->
  324. <div ng-if="getParamValue('ShowComment') == 'Active'">
  325. <textarea rows="3" cols="60" ng-model="currentSubject.discipline_notice"
  326. onfocus="if(value=='请输入评语'){value=''}" ng-blur="gradeScore(currentSubject.judge_score)">
  327. </textarea>
  328. </div>
  329. <div class="wei" ng-if="getParamValue('ShowAppraise') == 'Active' && currentSubject.disciplineFlag == 'Active'">
  330. <label ng-repeat= "dis in disArr"><input type="radio" name="optradio" value="{{dis.discipline_id}}" ng-click="gradeScore(20,dis.discipline_id)"
  331. ng-model="currentSubject.discipline_id">{{dis.discipline_value}}</label>
  332. </div>
  333. <div class="confirm-btn" >
  334. <!-- sb.discipline_id -->
  335. <div class="btn" ng-if="getParamValue('ShowAppraise') == 'Active'">
  336. <button ng-click='stdDiscipline()' ng-if="!currentSubject.discipline_id" >标记违规</button>
  337. <button ng-click='clearDiscipline()'ng-if="currentSubject.discipline_id" >清除违规标记</button>
  338. </div>
  339. <div class="btn" ng-if="getParamValue('JudgeAvoidFlag') == 'Active' && currentStd.avoid_flag =='Active' && currentStd.SubjectArray.length <= 1" >
  340. <button type="button" ng-click="avoidStd()">取消回避,正常评分</button>
  341. </div>
  342. <div class="btn" ng-if="getParamValue('JudgeAvoidFlag') == 'Active' && currentStd.avoid_flag !='Active' && currentStd.SubjectArray.length <= 1">
  343. <button type="button" ng-click="avoidStd()">回避该考生</button>
  344. </div>
  345. <div class="btn" ng-if="getParamValue('JudgeShowSubScore') == 'Active'" ng-click='lookScore()' >
  346. <button type="button" >查看评分</button>
  347. </div>
  348. <div class="btn" ng-if="scoreStdTotal>0 && currentStd.SubjectArray.length <= 1" >
  349. <button type="button" class="btn {{scoreStdTotal == StdArray.length?'btn-success':'btn-warning'}}"ng-click='confirmScore()' style="background:#4caf50;color:#FFF">提交已评分数({{scoreStdTotal}}/{{StdArray.length}})</button>
  350. </div>
  351. </div>
  352. </div>
  353. </div>
  354. </div>
  355. </div>
  356. </div>
  357. <!-- 分数回看页面 -->
  358. <div class="confirm-page" ng-if="currStep == 'LookScore'">
  359. <div class="box">
  360. <div class="opr">
  361. <div class="ths">
  362. <div class="th1">考生序号</div>
  363. <div class="th2">科目及成绩</div>
  364. </div>
  365. <div class="tds" ng-repeat="std in stdScoreArray">
  366. <div class="td1"> {{std.real_exam_seq}} </div>
  367. <div class="td2"> {{std.subject_name}} </div>
  368. </div>
  369. <div class="btns" style="margin-left: 260px;" ng-if="commitScoreFlag == undefined">
  370. <div class="clear" ng-click="cancelConfirm()">返回 </div>
  371. </div>
  372. </div>
  373. </div>
  374. </div>
  375. <!-- 分数回看页面 -->
  376. <div class="confirm-page" ng-if="currStep == 'ConfirmScore'">
  377. <div class="box">
  378. <div class="title">
  379. 确认提交分数,本次共提交<b>「{{confirmStdArray.length}}」</b>位学生
  380. </div>
  381. <div class="opr">
  382. <div class="ths">
  383. <div class="th1">
  384. 序号
  385. </div>
  386. <div class="th2">
  387. 科目及成绩
  388. </div>
  389. <div class="th3">状态</div>
  390. </div>
  391. <div class="tds" ng-repeat="std in confirmStdArray">
  392. <div class="td1">
  393. {{std.real_exam_echo}}
  394. </div>
  395. <div class="td2">
  396. {{std.confirm_score_value}}
  397. <!-- 目测<span>(99)</span>台词<span>(99)</span>表演<span>(99)</span> -->
  398. </div>
  399. <div class="td3">
  400. <span ng-if="std.commit_flag == true">已提交</span>
  401. </div>
  402. </div>
  403. <div class="sign" ng-if="getParamValue('ShowJudgeSign') == 'Active'">
  404. <div class="tips">
  405. 请填写签名
  406. </div>
  407. <div class="cav">
  408. <input type="hidden" value="{{judge.login_name}}" id="judgeName" />
  409. <input type="hidden" value="{{numberBetween}}" id="numberBetween" />
  410. <input type="hidden" value="{{room.ly_room_id}}" id="ly_room_id" />
  411. <input type="hidden" value="{{judge.judge_id}}" id="judge_id" />
  412. <input type="hidden" value="{{time_type}}" id="time_type" />
  413. <iframe src="sign.html" id="signature" name="signature" width="100%" height="265" frameborder="no" border="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
  414. </div>
  415. </div>
  416. <div class="btns" ng-if="commitScoreFlag == undefined">
  417. <div class="clear" ng-click="clearCanvas()" ng-if="getParamValue('ShowJudgeSign') == 'Active'">
  418. 清除签名
  419. </div>
  420. <div class="confirm" >
  421. <button ng-click="submitScore()">
  422. 确认分数无误,提交
  423. </button>
  424. </div>
  425. <div class="cancel" ng-click="cancelConfirm()">
  426. 暂不提交
  427. </div>
  428. </div>
  429. </div>
  430. </div>
  431. </div>
  432. </div>
  433. <script src="../vendor/jquery-3.4.1/jquery.slim.min.js"></script>
  434. <script src="../vendor/popper-1.16.0/popper.min.js"></script>
  435. <script src="../vendor/bootstrap-4.4.1/js/bootstrap.min.js"></script>
  436. <script src="../vendor/angular-1.7.8/angular.min.js"></script>
  437. <script src="../vendor/angular-1.7.8/angular-sanitize.min.js"></script>
  438. <script src="../vendor/cryptojs-3.1.2/cryptojs.min.js"></script>
  439. <script src="../vendor/cryptojs-3.1.2/mode-ecb.js"></script>
  440. <script src="./js/angular.init.js"></script>
  441. <script src="./js/angular.app.js"></script>
  442. <script src="./js/angular.login.js?v=20200519"></script>
  443. <script type="text/javascript" charset="utf-8" src="./js/numkeyboard.js"></script>
  444. </body>
  445. </html>