ReservationSeat

可以自定义预约时间和自动签到

目前为 2023-12-11 提交的版本,查看 最新版本

此脚本不应直接安装,它是供其他脚本使用的外部库。如果你需要使用该库,请在脚本元属性加入:// @require https://update.cn-greasyfork.org/scripts/481926/1293768/ReservationSeat.js

  1. // @version 2.0
  2. var run=function() {
  3. 'use strict';
  4. var replce=function(){
  5. document.querySelector("body > div.app.has-head.has-banner.ng-scope > div.app-head > ul:nth-child(2)").style="height: 3rem;"
  6. var my_html=`
  7. <li class="col v-t" style="width:auto; padding-left: 5px;">
  8. <a class="btn btn-opatiy btn-conner has-icon c-b" style="width: 100%;text-align: center" ng-show="buildingReservationType!=1" ng-click="subscribeDay();" onclick="window.extendDay();" href="javaScript:void(0);"><img align="absmiddle" src="img/ion-clock.png">我要预约</a>
  9. <a class="btn btn-opatiy btn-conner has-icon c-b ng-hide" style="width: 100%;text-align: center" ng-show="buildingReservationType==1" ng-click="reservationShow();" href="javaScript:void(0);"><img align="absmiddle" src="img/ion-clock.png">我要预约</a>
  10. </li>
  11. <li class="col t-r v-t" style="padding-left: 5px;">
  12. <a class="btn btn-opatiy btn-conner has-icon c-b" style="width: 100%;text-align: center" ng-show="buildingReservationType!=0&amp;&amp;campusId!=58" ng-click="SweepCode();" onclick="window.myCheckIn();" href="javaScript:void(0);"><img align="absmiddle" src="img/take-code.png">扫码就坐</a>
  13. </li>
  14. `
  15. var dom=document.createElement('ul');
  16. dom.className="row"
  17. dom.style="height: 6rem;"
  18. dom.innerHTML=my_html
  19. document.querySelector("body > div.app.has-head.has-banner.ng-scope > div.app-head").appendChild(dom)
  20. //删除原有标签
  21. document.querySelector("body > div.app.has-head.has-banner.ng-scope > div.app-head > ul:nth-child(2)").remove()
  22. }
  23. if(document.querySelector("body > div.app.has-head.has-banner.ng-scope > div.app-head > ul:nth-child(2) > li:nth-child(1) > a:nth-child(1)").getAttribute("onclick")==null){
  24. replce()
  25. }
  26. //公共方法
  27. function diffDay(lastDate,earlyDate){
  28. var startDate = new Date(new Date(earlyDate).Format("yyyy-MM-dd"));
  29. var endDate = new Date(new Date(lastDate).Format("yyyy-MM-dd"));
  30. if (startDate>endDate){
  31. return 0;
  32. }
  33. if (startDate==endDate){
  34. return 0;
  35. }
  36. var days=(endDate - startDate)/1000/60/60/24;
  37. return days;
  38. }
  39. //签到模块
  40. window.myCheckIn=function (){
  41. var Reservation=window.Api.selectReservationByUser()
  42. //alert(JSON.stringify(Reservation))
  43. //alert('"false"')
  44. if(Reservation.success==false){
  45. alert("没有预约请先预约再签到")
  46. }else{
  47. for (let index = 0; index < Reservation.list.length; index++) {
  48. var tmp_time_timeDay=Reservation.list[index].time
  49. console.log(Reservation.list[index].time)
  50. if(diffDay((new Date(tmp_time_timeDay.split(" - ")[0])).Format("yyyy-MM-dd"),new Date())==0){
  51. //console.log(Reservation.list[index].time)
  52. var tmp_reseveation=Reservation.list[index]
  53. if(tmp_reseveation.notArrive==1){
  54. var Reservation_seatId=tmp_reseveation.seatId
  55. var result_json=window.Api.checkInSeat(Reservation_seatId)
  56. var OUT_TEXT=JSON.stringify(result_json.success)+"\t"+
  57. JSON.stringify(result_json.message)
  58. var tag=1
  59. if(result_json.message=='0') {
  60. OUT_TEXT="签到时间未到"
  61. alert(OUT_TEXT)
  62. //+OUT_TEXT
  63. }else if(result_json.message=='3') {
  64. OUT_TEXT="重复签到如果有多个预约在同一天请预约到一个时间段"
  65. alert(OUT_TEXT)
  66. //+OUT_TEXT
  67. }
  68. else{
  69. alert(OUT_TEXT)
  70. //location.reload();
  71. document.querySelector("#loadingToast").click()
  72. }
  73. }else{
  74. alert("已经签到不用签到")
  75. //break;
  76. }
  77. }else{
  78. alert("不用签到")
  79. }
  80. }
  81. }
  82. }
  83. var click_num=-1
  84. var day_list=[]
  85. var Reservation=window.Api.selectReservationByUser();
  86. var NoReservation=0
  87. //续约模块
  88. window.extendDay =function () {
  89. click_num+=1
  90. //var Reservation=window.Api.selectReservationByUser();
  91. var Reservation_ID=0
  92. var tmp_time_timeDay=""
  93. var go=true
  94. var getReservation_ID=function () {
  95. if(Reservation.success){//判断当天是否有记录优先使用最后一条记录的座位号
  96. // console.log(Reservation.success+"进入")
  97. var last_reseveation=Reservation.list[Reservation.list.length-1]
  98. Reservation_ID=last_reseveation.reservationId
  99. }else{//没有就选择历史记录的座位号
  100. Reservation_ID=window.Api.selectReservation(0,1,10).lists[0].id
  101. }
  102. }
  103. var toReservation=function (day) { //0今天 1 明天
  104. //console.log(day,"0今天 1 明天 toReservation")
  105. var day_num=day
  106. var date_day=new Date(new Date().getTime()+day_num*24*60*60*1000).Format("yyyy-MM-dd")
  107. var Frist_time=date_day+' '+My_var_start_time
  108. var End_time=date_day+' '+My_var_end_time
  109. var result_json=""
  110. getReservation_ID()
  111. if(day==0){
  112. //今天特殊预约yyyy-mm-dd hh:mm:ss
  113. console.log("今天预约",End_time,new Date(new Date().getTime()+60*1000))
  114. result_json=window.Api.extendSeatTimeDay(Reservation_ID,End_time,new Date(new Date().getTime()+60*1000).Format("yyyy-MM-dd HH:mm:ss"))
  115. //
  116. // location.reload();//刷新整个网页
  117. }else{
  118. result_json=window.Api.extendSeatTimeDay(Reservation_ID,End_time,Frist_time)
  119. }
  120. if(result_json.success){
  121. //alert("预约成功")
  122. if(NoReservation==1){
  123. alert("请刷新页面则按钮功能可能失效")
  124. location.reload();
  125. }
  126. }
  127. else{
  128. // console.log("------->",result_json)
  129. alert(JSON.stringify(result_json.success)+"\t"+
  130. date_day+"\t"+
  131. JSON.stringify(result_json.message)
  132. )
  133. }
  134. document.querySelector("#loadingToast").click()//刷新子页面
  135. }
  136. var getOkDay=function(){
  137. day_list=Array.from({length: 5}, () => 2);
  138. //console.log(Reservation)
  139. if (typeof Reservation.list === "undefined"){
  140. console.log("用户没有预约");
  141. NoReservation=1;
  142. return 0;
  143. }
  144. var curday=new Date();
  145. for (let index = 0; index < Reservation.list.length; index++) {
  146. tmp_time_timeDay=Reservation.list[index].time
  147. //alert(tmp_time_timeDay)
  148. var t=diffDay((new Date(tmp_time_timeDay.split(" - ")[0])).Format("yyyy-MM-dd"),curday)
  149. console.log(tmp_time_timeDay.split(" - ")[0]+">>与第"+index+"天"+new Date().Format("yyyy-MM-dd")+"相差"+t+"天")
  150. if(t==0&& curday.getHours()<22 && curday.getHours()>8){
  151. day_list[t]=1
  152. console.log(new Date(tmp_time_timeDay.split(" - ")[0]))
  153. continue;
  154. }
  155. day_list[t]=1
  156. //对于有记录的那天进行记录 1为有记录
  157. }
  158. //console.log(day_list)
  159. }
  160. var tomain = function () {
  161. //getReservation_ID()
  162. getOkDay();
  163. console.log(day_list)
  164. for (var index = 0,tmp=0; index < day_list.length; index++) {
  165. if(day_list[index]==2){
  166. if(click_num==tmp){
  167. toReservation(index)
  168. console.log(click_num+"--->"+index+">>>"+day_list[index])
  169. break;
  170. }
  171. tmp+=1
  172. }
  173. }
  174. }
  175. tomain()
  176. };
  177. //----------自动操作---------
  178. if(auto){
  179. window.myalert= function () { }
  180. window.myalert=window.alert
  181. window.alert=console.log
  182. console.log("自动签到开始")
  183. window.myCheckIn()
  184. console.log("自动签到结束")
  185. //八点后自动预约
  186. if(new Date().getHours()>20){
  187. //20点以后打开才自动执行
  188. console.log("自动预约开始")
  189. window.extendDay()
  190. console.log("自动预约结束")
  191. }
  192. window.alert=window.myalert
  193. }
  194. //----------自动操作---------
  195. //通知
  196. }