金诚优选前端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

253 lines
5.9 KiB

  1. const forMatNum=(num)=>{
  2. return num<10?'0'+num:num+'';
  3. }
  4. const initPicker={
  5. initDays:(year,month)=>{
  6. let totalDays=new Date(year,month,0).getDate();
  7. let dates=[];
  8. for(let d=1;d<=totalDays;d++){
  9. dates.push(forMatNum(d));
  10. };
  11. return dates;
  12. },
  13. //日期初始化
  14. date:(start,end,mode="date",step,value,flag)=>{
  15. let aToday=new Date();
  16. let tYear,tMonth,tDay,tHours,tMinutes,tSeconds,defaultVal=[];
  17. let initstartDate=new Date(start);
  18. let endDate=new Date(end);
  19. if(start>end){
  20. initstartDate=new Date(end);
  21. endDate=new Date(start);
  22. };
  23. let startYear=initstartDate.getFullYear();
  24. let startMonth=initstartDate.getMonth()+1;
  25. let endYear=endDate.getFullYear();
  26. let years=[],months=[],days=[],hours=[],minutes=[],seconds=[],returnArr=[];
  27. let curMonth=flag?value[1]*1:(value[1]+1);
  28. let totalDays=new Date(startYear,curMonth,0).getDate();
  29. for(let s=startYear;s<=endYear;s++){
  30. years.push(s+'');
  31. };
  32. for(let m=1;m<=12;m++){
  33. months.push(forMatNum(m));
  34. };
  35. for(let d=1;d<=totalDays;d++){
  36. days.push(forMatNum(d));
  37. }
  38. for(let h=0;h<24;h++){
  39. hours.push(forMatNum(h));
  40. }
  41. for(let m=0;m<60;m+=step*1){
  42. minutes.push(forMatNum(m));
  43. }
  44. for(let s=0;s<60;s++){
  45. seconds.push(forMatNum(s));
  46. }
  47. if(flag){
  48. returnArr=[
  49. years.indexOf(value[0]),
  50. months.indexOf(value[1]),
  51. days.indexOf(value[2]),
  52. hours.indexOf(value[3]),
  53. minutes.indexOf(value[4])==-1?0:minutes.indexOf(value[4]),
  54. seconds.indexOf(value[5])
  55. ]
  56. };
  57. switch(mode){
  58. case "range":
  59. if(flag){
  60. defaultVal=[returnArr[0],returnArr[1],returnArr[2],0,returnArr[0],returnArr[1],returnArr[2]];
  61. return {years,months,days,defaultVal}
  62. }else{
  63. return {years,months,days}
  64. }
  65. break;
  66. case "date":
  67. if(flag){
  68. defaultVal=[returnArr[0],returnArr[1],returnArr[2]];
  69. return {years,months,days,defaultVal}
  70. }else{
  71. return {years,months,days}
  72. }
  73. break;
  74. case "yearMonth":
  75. if(flag){
  76. defaultVal=[returnArr[0],returnArr[1]];
  77. return {years,months,defaultVal}
  78. }else{
  79. return {years,months}
  80. }
  81. break;
  82. case "dateTime":
  83. if(flag){
  84. defaultVal=returnArr;
  85. return {years,months,days,hours,minutes,seconds,defaultVal}
  86. }else{
  87. return {years,months,days,hours,minutes,seconds}
  88. }
  89. break;
  90. case "time":
  91. if(flag){
  92. defaultVal=[returnArr[3],returnArr[4],returnArr[5]];
  93. return {hours,minutes,seconds,defaultVal}
  94. }else{
  95. return {hours,minutes,seconds}
  96. }
  97. break;
  98. }
  99. },
  100. //短期时间初始化小时
  101. initLimitHours:(startHour,endHour)=>{
  102. let hours=[];
  103. for(let k=startHour*1;k<=endHour*1;k++){
  104. hours.push({
  105. label:forMatNum(k),
  106. value:forMatNum(k),
  107. flag:false
  108. })
  109. }
  110. return hours;
  111. },
  112. //短期时间初始化分钟
  113. initLimitMinutes:(minuteStep)=>{
  114. let minutes=[];
  115. for(let j=0;j<60;j+=minuteStep*1){
  116. minutes.push({
  117. label:forMatNum(j),
  118. value:forMatNum(j)
  119. })
  120. }
  121. return minutes;
  122. },
  123. //短期时间初始化
  124. limit:(dayStep=7,startHour=8,endHour=20,minuteStep=1,afterStep=30)=>{
  125. let startDate=new Date();
  126. let bsDate=new Date(new Date().getTime()+afterStep*60*1000);
  127. let date=[];
  128. let hours=[];
  129. let minutes=[];
  130. let hour=bsDate.getHours();
  131. let minute=Math.floor(bsDate.getMinutes()/minuteStep)*minuteStep;
  132. let weeks=["周日","周一","周二","周三","周四","周五","周六"];
  133. for(let i=0;i<dayStep;i++){
  134. let year,month,day,weekday;
  135. year=startDate.getFullYear();
  136. month=forMatNum(startDate.getMonth()+1);
  137. day=forMatNum(startDate.getDate());
  138. weekday=weeks[startDate.getDay()];
  139. let label="";
  140. switch(i){
  141. case 0:
  142. label="今天";
  143. break;
  144. case 1:
  145. label="明天"
  146. break;
  147. case 2:
  148. label="后天"
  149. break;
  150. default:
  151. label=month+"月"+day+"日"+" "+weekday;
  152. break;
  153. }
  154. date.push({
  155. label:label,
  156. value:year+"-"+month+"-"+day,
  157. flag:i==0?true:false
  158. })
  159. startDate.setDate(startDate.getDate()+1);
  160. }
  161. if(hour>endHour){
  162. hour=endHour;
  163. };
  164. for(let k=hour*1;k<=endHour*1;k++){
  165. hours.push({
  166. label:forMatNum(k),
  167. value:forMatNum(k),
  168. flag:k==hour?true:false
  169. })
  170. };
  171. for(let j=minute;j<60;j+=minuteStep*1){
  172. minutes.push({
  173. label:forMatNum(j),
  174. value:forMatNum(j)
  175. });
  176. }
  177. return {date,hours,minutes};
  178. },
  179. //选择区间初始化日期
  180. initRangeDays:(year,month)=>{
  181. let totalDays=new Date(year,month,0).getDate();
  182. let dates=[];
  183. for(let d=1;d<=totalDays;d++){
  184. dates.push(forMatNum(d));
  185. };
  186. return dates;
  187. },
  188. //选择区间初始化
  189. range:(start,end,value,flag)=>{
  190. let aToday=new Date();
  191. let tYear,tMonth,tDay,tHours,tMinutes,tSeconds,defaultVal=[];
  192. let initstartDate=new Date(start);
  193. let endDate=new Date(end);
  194. if(start>end){
  195. initstartDate=new Date(end);
  196. endDate=new Date(start);
  197. };
  198. let startYear=initstartDate.getFullYear();
  199. let startMonth=initstartDate.getMonth()+1;
  200. let endYear=endDate.getFullYear();
  201. let fyears=[],fmonths=[],fdays=[],tyears=[],tmonths=[],tdays=[],returnArr=[];
  202. let curMonth=flag?value[1]*1:(value[1]+1);
  203. let totalDays=new Date(startYear,curMonth,0).getDate();
  204. for(let s=startYear;s<=endYear;s++){
  205. fyears.push(s+'');
  206. };
  207. for(let m=1;m<=12;m++){
  208. fmonths.push(forMatNum(m));
  209. };
  210. for(let d=1;d<=totalDays;d++){
  211. fdays.push(forMatNum(d));
  212. };
  213. for(let s=startYear;s<=endYear;s++){
  214. tyears.push(s+'');
  215. };
  216. for(let m=1;m<=12;m++){
  217. tmonths.push(forMatNum(m));
  218. };
  219. for(let d=1;d<=totalDays;d++){
  220. tdays.push(forMatNum(d));
  221. };
  222. if(flag){
  223. defaultVal=[
  224. fyears.indexOf(value[0]),
  225. fmonths.indexOf(value[1]),
  226. fdays.indexOf(value[2]),
  227. 0,
  228. tyears.indexOf(value[0]),
  229. tmonths.indexOf(value[1]),
  230. tdays.indexOf(value[2])
  231. ];
  232. return {
  233. fyears,
  234. fmonths,
  235. fdays,
  236. tyears,
  237. tmonths,
  238. tdays,
  239. defaultVal
  240. }
  241. }else{
  242. return {
  243. fyears,
  244. fmonths,
  245. fdays,
  246. tyears,
  247. tmonths,
  248. tdays,
  249. }
  250. }
  251. }
  252. }
  253. export default initPicker