assess_ranking.js 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644
  1. $(function () {
  2. // 道管中心选择变化
  3. $("#center-manager").change(function () {
  4. $("#fsList").empty();
  5. if (GV(this) != '') {
  6. getFsStationList(GV(this), function (options) {
  7. $("#fsList").append(options);
  8. });
  9. }
  10. })
  11. // end
  12. })
  13. function queryEmpClick() {
  14. //每次点击前清空表格数据
  15. $(".table-tbody").empty('');
  16. var start_date = $("#start-time").val();
  17. var end_date = $("#end-time").val();
  18. var start_score = $("#start-score").val();
  19. var end_score = $("#end-score").val();
  20. var flag = param_method(start_score, end_score);
  21. if (flag == false) {
  22. return;
  23. }
  24. if (start_date == '' || end_date == '') {
  25. tip("请选择起止日期");
  26. return;
  27. } else {
  28. start_date += " 23:00:00";
  29. end_date += " 23:00:00";
  30. }
  31. var startStr = start_date.replace(/-/g, '/');
  32. var endStr = end_date.replace(/-/g, '/');
  33. var start = new Date(startStr);
  34. //开始日期取前一天的23:00
  35. start.setDate(start.getDate() - 1);
  36. start_date = start.Format("yyyy-MM-dd HH:mm:ss");
  37. var end = new Date(endStr);
  38. if (start > end) {
  39. tip("开始时间不能比结束时间大");
  40. return;
  41. }
  42. var param = {
  43. "parent_dept_id": GV("#center-manager"),
  44. "dept_id": GV("#fsList"),
  45. "start_date": start_date,
  46. "end_date": end_date,
  47. }
  48. var url = "statistics/employee/order";
  49. getEmployeeInfosClick(url, param, start_score, end_score)
  50. }
  51. function initQueryEmp() {
  52. //默认初始化前一周查所有
  53. var endD = new Date();
  54. var now = new Date();
  55. var startD = new Date(now.getTime() - 7 * 24 * 3600 * 1000);
  56. var start_time = startD.getFullYear() + "-" + (startD.getMonth() + 1) + "-" + startD.getDate();
  57. var end_time = endD.getFullYear() + "-" + (endD.getMonth() + 1) + "-" + endD.getDate();
  58. var start_score = $("#start-score").val();
  59. var end_score = $("#end-score").val();
  60. setJobSelect("#jobSelect");
  61. //默认初始化时间页面回显
  62. $("#start-time").val("2017-6-09");//start_time);
  63. $("#end-time").val("2017-6-25");//end_time);
  64. var start_date = start_time + " 23:00:00";
  65. var end_date = end_time + " 23:00:00";
  66. var start = new Date(start_date);
  67. //开始日期取前一天的23:00
  68. start.setDate(start.getDate() - 1);
  69. start_date = start.Format("yyyy-MM-dd HH:mm:ss");
  70. var param = {
  71. "start_date": start_date,
  72. "end_date": end_date,
  73. }
  74. var url = "statistics/employee/order";
  75. getEmployeeInfosClick(url, param, start_score, end_score);
  76. }
  77. /**
  78. * click
  79. * @param {*} url
  80. * @param {*} param
  81. */
  82. function getEmployeeInfosClick(url, param, start_score, end_score) {
  83. post_common_service(url, param, function (data) {
  84. var strTbody = '';
  85. var count = 0;
  86. for (var i = 0; i < data.length; i++) {
  87. var score = 1000 - filterByZeroHandle(average(data[i]).toFixed(2), '0');
  88. var flag = judgeParamFilter(data, i, score, start_score, end_score)
  89. if (flag) {
  90. html = "<button id=\"user_" + data[i].user.id + "\" onClick='addTask(" + data[i].user.id + ",\"" + data[i].user.truename + "\",\"" + param.start_date + "\",\"" + param.end_date + "\")' class=\"btn\" style='margin-left: 10px;padding: 0px;border: 0;background: none;' type=\"button\"><i class=\"icon icon-plus-sign\"></i></button>"
  91. strTbody += "<tr><td width='4%;'>" + (count + 1) + "</td><td width='6%;'>" + data[i].user.fee_station_name + "</td>"
  92. + "<td width='6%;'>" + data[i].user.truename + "</td><td width='6%;'>" + data[i].user.position_name + "</td>"
  93. + "<td width='6%;'>" + data[i].user.workno + "</td><td width='4%;'>" + data[i].company_ranking + "</td>"
  94. + "<td width='4%;'>" + data[i].center_ranking + "</td><td width='4%;'>" + data[i].fee_station_ranking
  95. + "</td><td width='4%;'>" + getItemScore(data[i], '环境') + "</td>"
  96. + "<td width='4%;'>" + getItemScore(data[i], '仪容仪表') + "</td><td width='4%;'>" + getItemScore(data[i], '表情') + "</td>"
  97. + "<td width='4%;'>" + getItemScore(data[i], '动作') + "</td><td width='4%;'>" + getItemScore(data[i], '文明用语') + "</td>"
  98. + "<td width='4%;'>" + getItemScore(data[i], '工作纪律') + "</td><td width='4%'>" + getItemScore(data[i], '便民服务') + "</td><td width='4%;'>"
  99. + getItemScore(data[i], '安全管理') + "</td><td width='4%;'>" + data[i].check_all_score + "</td>"
  100. + "<td width='6%;'>" + filter(data[i].checked_num, '0') + (data[i].checked_num < 6 ? html : "") + "</td><td width='4%;'>" + filterSlash(filterByZeroHandle(average(data[i]).toFixed(2), '0'), filter(data[i].checked_num, '0')) + "</td>"
  101. + "<td width='4%;'>" + filterSlash(score, filter(data[i].checked_num, '0')) + "</td><td width='4%;'>" + "</td><td width='4%;'>" + "</td></tr>";
  102. count++;
  103. }
  104. }
  105. $(".table-tbody").append(strTbody);
  106. }, function (error) {
  107. return "";
  108. });
  109. }
  110. function addTask(userid, username, start_date, end_date) {
  111. //获取该人员排班
  112. var url = "teamClass/getUserClasss"
  113. var param = {
  114. "user_id": userid,
  115. "start_time": start_date,
  116. "end_time": end_date
  117. }
  118. post_common_service(url, param, function (data) {
  119. console.log(data)
  120. var tasklist = data.teamClasseList;
  121. var userclasslist = data.userClassCountList;
  122. var allheight = 600;
  123. var height = allheight - 150 - 45;
  124. var allwidth = 1100;
  125. //计算日期
  126. var satrtday = new Date(start_date);
  127. var endday = new Date(end_date);
  128. var taskmap= new Map();
  129. var userClassmap= new Map();
  130. for(var i=0;i<tasklist.length;i++){
  131. var task = tasklist[i];
  132. if(!taskmap.get(task.work_date)){
  133. taskmap.put(task.work_date,[]);
  134. }
  135. var arr = taskmap.get(task.work_date);
  136. arr.push(task);
  137. taskmap.put(task.work_date,arr);
  138. }
  139. for(var i=0;i<userclasslist.length;i++){
  140. var usercount = userclasslist[i];
  141. var daytime = new Date(usercount.start_time)
  142. if(daytime.getHours()>=23){
  143. daytime = new Date(daytime.valueOf()+(1000 * 60 * 60 * 24))
  144. }
  145. var work_date = daytime.Format("yyyy-MM-dd")+" 00:00";
  146. if(!userClassmap.get(work_date)){
  147. userClassmap.put(work_date,[]);
  148. }
  149. var arr = userClassmap.get(work_date);
  150. arr.push(usercount);
  151. userClassmap.put(work_date,arr);
  152. }
  153. var days = (endday.valueOf() - satrtday.valueOf()) / (1000 * 60 * 60 * 24);
  154. var header = "<td></td>"
  155. var nighttd = "<td>夜班</td>"
  156. var middletd = "<td>中班</td>"
  157. var morningtd = "<td>早班</td>"
  158. for (var i = 1; i <= days; i++) {
  159. var daytime = new Date(satrtday.valueOf() + i * 1000 * 60 * 60 * 24 -1000 * 60 * 60 * 23);
  160. var workday = daytime.Format("yyyy-MM-dd HH:mm");
  161. var html1 = ""
  162. var html2 = ""
  163. var html3 = ""
  164. if(taskmap.get(workday)){
  165. var userclassarry = null;
  166. if(userClassmap.get(workday)){
  167. userclassarry = userClassmap.get(workday);
  168. }
  169. var arry = taskmap.get(workday);
  170. for(var j=0;j<arry.length;j++){
  171. var hasin = false;
  172. var tasktemp = arry[j];
  173. var hasmin = false;
  174. var taskfail = false;
  175. if(userclassarry!=null){
  176. var d = hasinList(tasktemp,userclassarry)
  177. hasin = d!=null
  178. if(hasin){
  179. if(d.check_status == 22){
  180. taskfail = true;
  181. }
  182. }
  183. }
  184. if((new Date(tasktemp.end_time)).valueOf() - (new Date(tasktemp.start_time)).valueOf()< 1000*60*15){
  185. hasmin = true;
  186. }
  187. var classname = "btn-success";
  188. if(hasmin){
  189. classname = "disabled";
  190. }
  191. if(hasin){
  192. classname = "btn-danger disabled";
  193. }
  194. if(taskfail){
  195. classname = "btn-info disabled";
  196. }
  197. var teamid = tasktemp.class_id +"_"+ ( typeof(tasktemp.unregular_id)=="undefined"?"":tasktemp.unregular_id)
  198. var name = (new Date(tasktemp.start_time)).Format("HH:mm") + "--"+(new Date(tasktemp.end_time)).Format("HH:mm")
  199. if(tasktemp.class_type==1){
  200. html1+="<div class='row'><button class=\"btn "+classname+" classbtn\" id="+teamid+" data="+workday+" onclick='selectTeamClass(this)' type=\"button\">"+name+"</button></div>"
  201. // html1 +='<div class="row"><label class="btn '+classname+'"><input type="radio" name="options" id="option2">'+name+'</label></div>'
  202. continue;
  203. }
  204. if(tasktemp.class_type==2){
  205. html2+="<div class='row'><button class=\"btn "+classname+" classbtn\" id="+teamid+" data="+workday+" onclick='selectTeamClass(this)' type=\"button\">"+name+"</button></div>"
  206. continue;
  207. }
  208. if(tasktemp.class_type==3){
  209. html3+="<div class='row'><button class=\"btn "+classname+" classbtn\" id="+teamid+" data="+workday+" onclick='selectTeamClass(this)' type=\"button\">"+name+"</button></div>"
  210. continue;
  211. }
  212. }
  213. }
  214. if(userClassmap.get(workday)){
  215. var teamclassarry = null;
  216. if(taskmap.get(workday)){
  217. teamclassarry = taskmap.get(workday);
  218. }
  219. var arry = userClassmap.get(workday);
  220. for(var j=0;j<arry.length;j++){
  221. var hasin = false;
  222. var usercounttemp = arry[j];
  223. var taskfail = false;
  224. if(teamclassarry!=null){
  225. var d = hasinList(usercounttemp,teamclassarry)
  226. hasin = d!=null
  227. if(usercounttemp.check_status == 22){
  228. taskfail = true;
  229. }
  230. }
  231. if(usercounttemp.check_status == 22){
  232. taskfail = true;
  233. }
  234. var classname = "btn-danger disabled";
  235. var name = (new Date(usercounttemp.start_time)).Format("HH:mm") + "--"+(new Date(usercounttemp.end_time)).Format("HH:mm")+"<span class=\"label label-badge\">删</span>";
  236. if(hasin){
  237. continue;
  238. }
  239. if(taskfail){
  240. classname = "btn-info disabled";
  241. // name+="<span class=\"label label-badge\">无效</span>";
  242. }
  243. if(usercounttemp.class_type==1){
  244. html1+="<div class='row'><button class=\"btn "+classname+" classbtn\" type=\"button\">"+name+"</button></div>"
  245. continue;
  246. }
  247. if(usercounttemp.class_type==2){
  248. html2+="<div class='row'><button class=\"btn "+classname+" classbtn\" type=\"button\">"+name+"</button></div>"
  249. continue;
  250. }
  251. if(usercounttemp.class_type==3){
  252. html3+="<div class='row'><button class=\"btn "+classname+" classbtn\" type=\"button\">"+name+"</button></div>"
  253. continue;
  254. }
  255. }
  256. }
  257. nighttd+="<td>" + (html3==""?"无":html3) + "</td>"
  258. middletd+="<td>" + (html1==""?"无":html1) + "</td>"
  259. morningtd+="<td>" + (html2==""?"无":html2) + "</td>"
  260. header += "<td>" + daytime.Format("dd") + "</td>"
  261. }
  262. var css = '<style lang="css">' +
  263. '.row{' +
  264. ' margin-right: 0px; ' +
  265. ' margin-left: 0px;' +
  266. '}' +
  267. '.selecttag{' +
  268. ' line-height:32px' +
  269. '}' +
  270. '.table td {' +
  271. ' vertical-align: middle;' +
  272. ' text-align: center;' +
  273. ' border-left: 1px solid #ddd;' +
  274. ' border-right: 1px solid #ddd;' +
  275. ' border-top: 1px solid #ddd;' +
  276. '}' +
  277. '.classbtn{' +
  278. ' font-size:10px;' +
  279. ' text-align: center;' +
  280. ' padding: 0;' +
  281. '}' +
  282. '.spanclass{' +
  283. ' width:10px;' +
  284. ' height: 10px;' +
  285. '}' +
  286. '.gimportant{' +
  287. ' background:#BD7B46 !important;' +
  288. ' color:#ffffff !important'+
  289. '}' +
  290. '</style>';
  291. var table1 = '<div class="row scrollbar" style="height:' + height + 'px;width:' + (allwidth - 21) + 'px;overflow:scroll;padding-top:10px;padding-bottom:10px"><table class="table" style="height:' + height + 'px;margin:0px">' +
  292. ' <tbody>' +
  293. ' <tr style="height:10px" >' +
  294. header +
  295. ' </tr>' +
  296. ' <tr class="danger">' +
  297. nighttd+
  298. ' </tr>' +
  299. ' <tr class="warning">' +
  300. morningtd+
  301. ' </tr>' +
  302. ' <tr class="active">' +
  303. middletd+
  304. ' </tr>' +
  305. ' </tbody>' +
  306. '</table></div>';
  307. var tips = '<div class="row" style="text-align: left;"><div class="spanclass col-xs-2 " style="background:#3280FC"/><div class="col-xs-10">排班已被稽查</div></div>'+
  308. // '<div class="row" style="text-align: left;"><div class="spanclass col-xs-2 " style="background:#F1A325"/><div class="col-xs-10">已稽查但排班被删除</div></div>'+
  309. '<div class="row" style="text-align: left;"><div class="spanclass col-xs-2 " style="background:#03B8CF"/><div class="col-xs-10">排班已稽查但任务无效</div></div>'+
  310. // '<div class="row" style="text-align: left;"><div class="spanclass col-xs-2 " style="background:#BD7B46"/><div class="col-xs-10">已稽查但任务无效且排班已删除</div></div>'+
  311. '<div class="row" style="text-align: left;"><div class="spanclass col-xs-2 " style="background:#38B03F"/><div class="col-xs-10">排班可被稽查</div></div>'+
  312. '<div class="row" style="text-align: left;"><div class="spanclass col-xs-2 " style="background:#f2f2f2"/><div class="col-xs-10">排班未满15分钟</div></div>'+
  313. '<div class="row" style="text-align: left;"><span class=\"label label-badge\">删</span> 排班已删除</div>';
  314. var selectdiv = '<div class="row" style="text-align: left;"><div class="col-xs-10">已选择的排班:</div></div>'+
  315. '<div class="row" style="text-align: left;"><div class="col-xs-2"/><div class="col-xs-10"><span id="selectedclass" style="font-size:10px"></span></div></div>';
  316. var optlist = "";
  317. var userlist = data.userList;
  318. for(var q=0;q<userlist.length;q++){
  319. var user = userlist[q];
  320. optlist+=' <option value="'+user.id+'">'+user.truename+'</option>'
  321. }
  322. var html = css + '<div class="row row_alert" style="padding-left:10px;padding-right:10px;">' + table1 + '</div><div class="row row_alert" style="bottom: 0;position: absolute;width: 100%;text-align: right;}">' +
  323. '<div class="col-xs-4">'+tips+'</div><div class="col-xs-3">'+selectdiv+'</div><div class="col-xs-3"><span class="selecttag" style="text-align: right;">请分配对应的稽查人员:</span></div><div class="col-xs-2 class="selecttag""><select data-placeholder="选择稽查员" id="selectusers" class="chosen-select form-control" >' +
  324. optlist+
  325. '</select></div><div class="row row_alert"><button class="btn btn-primary" style="margin:20px;margin-right:10px" onclick="creatTask()" type="button">生成任务</button></div></div>';
  326. layer.open({
  327. type: 1,
  328. title: "生成稽查任务:"+username,
  329. skin: 'layui-layer-rim', //加上边框
  330. area: [allwidth + 'px', allheight + 'px'], //宽高
  331. scrollbar: false,
  332. content: html
  333. });
  334. });
  335. }
  336. function selectTeamClass(obj){
  337. $("#selectedclass").html( $(obj).attr('data') +" "+ $(obj).html() +"的排班");
  338. $("#selectedclass").attr('data',obj.id);
  339. }
  340. function creatTask(){
  341. //获取classid
  342. var id = $("#selectedclass").attr('data');
  343. //获取userid
  344. var userid = $("#selectusers").val();
  345. if(id!=null && typeof(id)!="undefined"){
  346. var ids=id.split("_");
  347. var classid = ids[0];
  348. var unregular_id = ids[1];
  349. var url = task_server_url + "/task/add"
  350. if(unregular_id==null||unregular_id==""){
  351. url+='?classid='+classid+'&userid='+userid;
  352. }else{
  353. url+='?classid='+classid+'&unregularid='+unregular_id+'&userid='+userid;
  354. }
  355. $.ajax({
  356. type: 'GET',
  357. url: url,
  358. contentType: "application/json",
  359. dataType: "json",
  360. async: true,
  361. success: function(response){
  362. var data = response;
  363. if (data.result_code == 0) {
  364. tip("生成成功",null)
  365. } else {
  366. tip(data.result_desc,null)
  367. }
  368. },
  369. error: function(error) {
  370. tip("网络错误",null)
  371. }
  372. })
  373. }else{
  374. tip("未选择任务",null)
  375. }
  376. }
  377. function hasinList(task,list){
  378. var hasin = false;
  379. for(var p=0;p<list.length;p++){
  380. var userclasscount = list[p];
  381. if(typeof(task.unregular_id)=="undefined"){
  382. if(typeof(userclasscount.unregular_id)=="undefined"){
  383. if(task.class_id == userclasscount.class_id){
  384. return userclasscount;
  385. }else{
  386. continue;
  387. }
  388. }else{
  389. continue;
  390. }
  391. }else{
  392. if(typeof(userclasscount.unregular_id)=="undefined"){
  393. continue;
  394. }else{
  395. if(task.class_id == userclasscount.class_id && userclasscount.unregular_id==task.unregular_id){
  396. return userclasscount;
  397. }
  398. }
  399. }
  400. }
  401. return null;
  402. }
  403. /**
  404. * 对于受检次数为0,扣分和得分都为 /
  405. * @param {*} value , check_num 受此次数
  406. * @return value or /
  407. */
  408. function filterSlash(value, check_num) {
  409. if (check_num == 0) {
  410. return '/';
  411. } else {
  412. return value;
  413. }
  414. }
  415. function judgeParamFilter(data, i, score, start_score, end_score) {
  416. var flag1 = false;
  417. if (score >= parseFloat(start_score) && score <= parseFloat(end_score)) {
  418. flag1 = true;
  419. } else {
  420. flag1 = false;
  421. }
  422. var checkCount = $("#check_count").val();
  423. if (checkCount) {
  424. if (filter(data[i].checked_num, '0') == checkCount) {
  425. flag2 = true;
  426. } else {
  427. flag2 = false;
  428. }
  429. } else {
  430. flag2 = true;
  431. }
  432. var jobSelect = $("#jobSelect").val();
  433. if (jobSelect) {
  434. if (data[i].user.positionid == jobSelect) {
  435. flag3 = true;
  436. } else {
  437. flag3 = false;
  438. }
  439. } else {
  440. flag3 = true;
  441. }
  442. return flag1 & flag2 & flag3;
  443. }
  444. function average(obj) {
  445. if (filter(obj.checked_num, '0') == 0) {
  446. return 0;
  447. } else {
  448. return obj.check_all_score / filter(obj.checked_num, '1')
  449. }
  450. }
  451. /**
  452. * 过滤undefined
  453. * @param {*} value
  454. * @param {*} default_display_value
  455. */
  456. function filter(value, default_display_value) {
  457. if (value != '' && value != undefined) {
  458. return value;
  459. } else if (default_display_value != undefined) {
  460. return default_display_value;
  461. } else {
  462. return "";
  463. }
  464. }
  465. /**
  466. * 获取扣分详情
  467. * @param {*} obj
  468. * @param {*} check_item_name
  469. */
  470. function getItemScore(obj, check_item_name) {
  471. var names = obj.checked_socre_name;
  472. var scores = obj.checked_score;
  473. for (var i = 0; i < names.length; i++) {
  474. if (names[i].indexOf(check_item_name) > -1) {
  475. return scores[i];
  476. }
  477. }
  478. return 0;
  479. }
  480. /**
  481. * 过滤除数为0和保留二位小数时出现的0.00
  482. * @param {*} value
  483. * @param {*} default_display_value
  484. */
  485. function filterByZeroHandle(value, default_display_value) {
  486. if (isNaN(value)) {
  487. return default_display_value;
  488. } else {
  489. if ((value + '').endsWith('.00')) {
  490. return value.substring(0, value.length - 3);
  491. }
  492. return value;
  493. }
  494. }
  495. function exportExcel() {
  496. var dept_id = $("#fsList").val();
  497. var start_date = $("#start-time").val();
  498. var end_date = $("#end-time").val();
  499. var start_score = $("#start-score").val();
  500. var end_score = $("#end-score").val();
  501. var flag = param_method(start_score, end_score);
  502. if (flag == false) {
  503. return;
  504. }
  505. if (start_date == '' || end_date == '') {
  506. tip("请选择起止日期");
  507. return;
  508. } else {
  509. start_date += " 23:00:00";
  510. end_date += " 23:00:00";
  511. var start = new Date(start_date);
  512. //开始日期取前一天的23:00
  513. start.setDate(start.getDate()-1);
  514. start_date = start.Format("yyyy-MM-dd HH:mm:ss");
  515. }
  516. if (!dept_id) dept_id = "";
  517. window.open(getserveraddr() + "/file/employee/order?dept_id=" + dept_id +
  518. "&start_date=" + start_date + "&end_date=" + end_date + "&start_score=" + start_score + "&end_score=" + end_score);
  519. }
  520. function param_method(start_score, end_score) {
  521. if (start_score == '' || end_score == '') {
  522. tip("请输入得分区间");
  523. return false;
  524. } else if (!(/^[0-9]*$/).test(start_score) || !(/^[0-9]*$/).test(end_score)) {
  525. tip("数字不合法!");
  526. return false;
  527. } else if (parseInt(start_score) > parseInt(end_score)) {
  528. tip("开始得分不能比结束得分大");
  529. return false;
  530. } else if (start_score < 0 || start_score > 1000 || end_score < 0 || end_score > 1000) {
  531. tip("得分只能在0-1000之间");
  532. return false;
  533. } else {
  534. return true;
  535. }
  536. }