ReservationSeat

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

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

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

  1. // @version 2.0
  2. function run(My_var_start_time,My_var_end_time,auto) {
  3. 'use strict';
  4. //-----
  5. if (typeof auto === "undefined") {
  6. auto=true;
  7. console.log("auto is undefined");
  8. }else {
  9. console.log("auto 被定义");
  10. }
  11. //----
  12. if (typeof My_var_start_time === "undefined") {
  13. My_var_start_time="09:40:00" //预约座位开始时间08:00:00 ,结束时间22:00:00
  14. console.log("true is undefined");
  15. }else {
  16. console.log("My_var_start_time 被定义");
  17. }
  18. //----
  19. if (typeof My_var_end_time === "undefined") {
  20. My_var_end_time="21:40:00"
  21. console.log("My_var_end_time is undefined");
  22. }else {
  23. console.log("My_var_end_time 被定义");
  24. }
  25. //-----
  26.  
  27. var replce=function(){
  28. document.querySelector("body > div.app.has-head.has-banner.ng-scope > div.app-head > ul:nth-child(2)").style="height: 3rem;"
  29. var my_html=`
  30. <li class="col v-t" style="width:auto; padding-left: 5px;">
  31. <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>
  32. <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>
  33. </li>
  34. <li class="col t-r v-t" style="padding-left: 5px;">
  35. <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>
  36. </li>
  37. `
  38. var dom=document.createElement('ul');
  39. dom.className="row"
  40. dom.style="height: 6rem;"
  41. dom.innerHTML=my_html
  42. document.querySelector("body > div.app.has-head.has-banner.ng-scope > div.app-head").appendChild(dom)
  43. //删除原有标签
  44. document.querySelector("body > div.app.has-head.has-banner.ng-scope > div.app-head > ul:nth-child(2)").remove()
  45. }
  46. 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){
  47. replce()
  48. }
  49. //公共方法
  50. function diffDay(lastDate,earlyDate){
  51. var startDate = new Date(new Date(earlyDate).Format("yyyy-MM-dd"));
  52. var endDate = new Date(new Date(lastDate).Format("yyyy-MM-dd"));
  53. if (startDate>endDate){
  54. return 0;
  55. }
  56. if (startDate==endDate){
  57. return 0;
  58. }
  59. var days=(endDate - startDate)/1000/60/60/24;
  60. return days;
  61. }
  62. //老的签到模块
  63. window.myCheckInOld=function (){
  64. var Reservation=window.Api.selectReservationByUser()
  65. //alert(JSON.stringify(Reservation))
  66. //alert('"false"')
  67. if(Reservation.success==false){
  68. alert("没有预约请先预约再签到")
  69. }else{
  70. for (let index = 0; index < Reservation.list.length; index++) {
  71. var tmp_time_timeDay=Reservation.list[index].time
  72. console.log(Reservation.list[index].time)
  73. if(diffDay((new Date(tmp_time_timeDay.split(" - ")[0])).Format("yyyy-MM-dd"),new Date())==0){
  74. //console.log(Reservation.list[index].time)
  75. var tmp_reseveation=Reservation.list[index]
  76. if(tmp_reseveation.notArrive==1){
  77. var Reservation_seatId=tmp_reseveation.seatId
  78. var result_json=window.Api.checkInSeat(Reservation_seatId)
  79. var OUT_TEXT=JSON.stringify(result_json.success)+"\t"+
  80. JSON.stringify(result_json.message)
  81. var tag=1
  82. if(result_json.message=='0') {
  83. OUT_TEXT="签到时间未到"
  84. alert(OUT_TEXT)
  85. //+OUT_TEXT
  86. }else if(result_json.message=='3') {
  87. OUT_TEXT="重复签到如果有多个预约在同一天请预约到一个时间段"
  88. alert(OUT_TEXT)
  89. //+OUT_TEXT
  90. }
  91. else{
  92. alert(OUT_TEXT)
  93. //location.reload();
  94. document.querySelector("#loadingToast").click()
  95. }
  96. }else{
  97. alert("已经签到不用签到")
  98. //break;
  99. }
  100. }else{
  101. alert("不用签到")
  102. }
  103. }
  104. }
  105. }
  106. //新的签到模块,增加了第二天签到功能
  107. window.myCheckIn=function (){
  108. var Reservation=window.Api.selectReservationByUser()
  109. //alert(JSON.stringify(Reservation))
  110. //alert('"false"')
  111. if(Reservation.success==false){
  112. alert("没有预约请先预约再签到")
  113. }else{
  114. for (let index = 0; index < Reservation.list.length; index++) {
  115. var tmp_time_timeDay=Reservation.list[index].time
  116. console.log(Reservation.list[index].time)
  117. var num=diffDay((new Date(tmp_time_timeDay.split(" - ")[0])).Format("yyyy-MM-dd"),new Date());
  118. if(num==0){
  119. //console.log(Reservation.list[index].time)
  120. var tmp_reseveation=Reservation.list[index]
  121. if(tmp_reseveation.notArrive==1){
  122. var Reservation_seatId=tmp_reseveation.seatId
  123. var result_json=window.Api.checkInSeat(Reservation_seatId)
  124. var OUT_TEXT=JSON.stringify(result_json.success)+"\t"+
  125. JSON.stringify(result_json.message)
  126. var tag=1
  127. if(result_json.message=='0') {
  128. OUT_TEXT="签到时间未到"
  129. alert(OUT_TEXT)
  130. //+OUT_TEXT
  131. }else if(result_json.message=='3') {
  132. OUT_TEXT="重复签到如果有多个预约在同一天请预约到一个时间段"
  133. alert(OUT_TEXT)
  134. //+OUT_TEXT
  135. }
  136. else{
  137. alert(OUT_TEXT)
  138. //location.reload();
  139. document.querySelector("#loadingToast").click()
  140. }
  141. }else{
  142. alert("已经签到不用签到")
  143. //break;
  144. }
  145. }else if(num==1){
  146. console.log("第二天");
  147. var tmp_reseveation=Reservation.list[index];
  148. //window.Api.addReservation("1398662","159640","2023-12-14 08:00:00","2023-12-14 08:10:00",2,1)
  149. g.userInfo().userInfoId
  150. var Reservation_seatId=tmp_reseveation.seatId
  151. var Reservation_sreservationEndTime=tmp_reseveation.sreservationEndTime
  152. var Reservation_sreservationBeginTime=tmp_reseveation.sreservationBeginTime
  153. window.Api.cancelReservation(tmp_reseveation.reservationId)
  154. window.Api.addReservation(g.userInfo().userInfoId,Reservation_seatId,Reservation_sreservationEndTime,Reservation_sreservationBeginTime,2,1)
  155. $("#loadingToast").click();
  156.  
  157. console.log(tmp_reseveation);
  158. }
  159. else{
  160. alert("不用签到")
  161. }
  162. }
  163. }
  164. }
  165. var click_num=-1
  166. var day_list=[]
  167. var Reservation=window.Api.selectReservationByUser();
  168. var NoReservation=0
  169. //续约模块
  170. window.extendDay =function () {
  171. click_num+=1
  172. //var Reservation=window.Api.selectReservationByUser();
  173. var Reservation_ID=0
  174. var tmp_time_timeDay=""
  175. var go=true
  176. var getReservation_ID=function () {
  177. if(typeof Reservation.list =='undefined' || !Reservation.success){
  178. Reservation_ID=window.Api.selectReservation(0,1,10).lists[0].id
  179. }
  180. else if(Reservation.success){//判断当天是否有记录优先使用最后一条记录的座位号
  181. // console.log(Reservation.success+"进入")
  182. var last_reseveation=Reservation.list[Reservation.list.length-1]
  183. Reservation_ID=last_reseveation.reservationId
  184. }else{//没有就选择历史记录的座位号
  185. Reservation_ID=window.Api.selectReservation(0,1,10).lists[0].id
  186. }
  187. }
  188. var toReservation=function (day) { //0今天 1 明天
  189. //console.log(day,"0今天 1 明天 toReservation")
  190. var day_num=day
  191. var date_day=new Date(new Date().getTime()+day_num*24*60*60*1000).Format("yyyy-MM-dd")
  192. var Frist_time=date_day+' '+My_var_start_time
  193. var End_time=date_day+' '+My_var_end_time
  194. var result_json=""
  195. getReservation_ID()
  196. if(day==0){
  197. //今天特殊预约yyyy-mm-dd hh:mm:ss
  198. console.log("今天预约",End_time,new Date(new Date().getTime()+60*1000))
  199. result_json=window.Api.extendSeatTimeDay(Reservation_ID,End_time,new Date(new Date().getTime()+60*1000).Format("yyyy-MM-dd HH:mm:ss"))
  200. //
  201. // location.reload();//刷新整个网页
  202. }else{
  203. result_json=window.Api.extendSeatTimeDay(Reservation_ID,End_time,Frist_time)
  204. }
  205. if(result_json.success){
  206. //alert("预约成功")
  207. if(NoReservation==1){
  208. alert("请刷新页面则按钮功能可能失效")
  209. location.reload();
  210. }
  211. }
  212. else{
  213. // console.log("------->",result_json)
  214. alert(JSON.stringify(result_json.success)+"\t"+
  215. date_day+"\t"+
  216. JSON.stringify(result_json.message)
  217. )
  218. }
  219. document.querySelector("#loadingToast").click()//刷新子页面
  220. }
  221. var getOkDay=function(){
  222. day_list=Array.from({length: 5}, () => 2);
  223. //console.log(Reservation)
  224. if (typeof Reservation.list === "undefined"){
  225. console.log("用户没有预约");
  226. NoReservation=1;
  227. return 0;
  228. }
  229. var curday=new Date();
  230. for (let index = 0; index < Reservation.list.length; index++) {
  231. tmp_time_timeDay=Reservation.list[index].time
  232. //alert(tmp_time_timeDay)
  233. var t=diffDay((new Date(tmp_time_timeDay.split(" - ")[0])).Format("yyyy-MM-dd"),curday)
  234. console.log(tmp_time_timeDay.split(" - ")[0]+">>与第"+index+"天"+new Date().Format("yyyy-MM-dd")+"相差"+t+"天")
  235. if(t==0&& curday.getHours()<22 && curday.getHours()>8){
  236. day_list[t]=1
  237. console.log(new Date(tmp_time_timeDay.split(" - ")[0]))
  238. continue;
  239. }
  240. day_list[t]=1
  241. //对于有记录的那天进行记录 1为有记录
  242. }
  243. //console.log(day_list)
  244. }
  245. var tomain = function () {
  246. //getReservation_ID()
  247. getOkDay();
  248. console.log(day_list)
  249. for (var index = 0,tmp=0; index < day_list.length; index++) {
  250. if(day_list[index]==2){
  251. if(click_num==tmp){
  252. toReservation(index)
  253. console.log(click_num+"--->"+index+">>>"+day_list[index])
  254. break;
  255. }
  256. tmp+=1
  257. }
  258. }
  259. }
  260. tomain()
  261. };
  262. //----------自动操作---------
  263. if(auto){
  264. window.myalert= function () { }
  265. window.myalert=window.alert
  266. window.alert=console.log
  267. console.log("自动签到开始")
  268. window.myCheckIn()
  269. console.log("自动签到结束")
  270. //八点后自动预约
  271. if(new Date().getHours()>20){
  272. //20点以后打开才自动执行
  273. console.log("自动预约开始")
  274. window.extendDay()
  275. console.log("自动预约结束")
  276. }
  277. window.alert=window.myalert
  278. }
  279. //----------自动操作---------
  280. //通知
  281. }