index.vue 43 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314
  1. <template>
  2. <div class="work-content">
  3. <div class="work-space">
  4. <div class="space-title">{{ spaceInfo.spaceName }} 申请延时</div>
  5. <div class="device-tip">延时期间,空间相关设备会开启</div>
  6. </div>
  7. <div class="add-time" id="addTimeId">
  8. <div class="date_box" v-if="dateArr && dateArr.length">
  9. <div
  10. class="date-item"
  11. :class="item.isActive ? 'date-item-active' : ''"
  12. @click.stop="checkDate(item, index)"
  13. :key="'date' + index"
  14. v-for="(item, index) in dateArr"
  15. >
  16. <span>{{ item.week }}</span>
  17. <span>{{ item.day }}</span>
  18. </div>
  19. </div>
  20. <div class="sliders-list" id="sliderListId">
  21. <template v-for="(item, index) in nowTimerArr" :key="'slider' + index">
  22. <div class="sliders-wrapper" id="slidersWrapperId">
  23. <div class="sliders">
  24. <div class="label" v-show="index === 0 || index % 2 === 0">
  25. {{ item.timer }}
  26. </div>
  27. <div
  28. class="slider-box"
  29. @click="checkSlider(item, index)"
  30. :data-index="index"
  31. ></div>
  32. </div>
  33. </div>
  34. </template>
  35. <div class="slider-btn" id="sliderBtnId" @click="triggerDelTime">
  36. <div class="start" id="startId"></div>
  37. <div class="end-box" id="endBoxId">
  38. <div class="end" id="endId"></div>
  39. <div class="end-radio" id="endRadioId"></div>
  40. </div>
  41. </div>
  42. </div>
  43. </div>
  44. <div class="add-time-btn">
  45. <div class="cancel-btn" @click="closeWorkTimer">取消</div>
  46. <div
  47. class="comfirm-btn"
  48. :class="formBtn ? 'comfirm-btn-diabled' : ''"
  49. @click="addWorkTimer"
  50. >
  51. 提交申请
  52. </div>
  53. </div>
  54. </div>
  55. </template>
  56. <script lang="ts">
  57. import { Dialog, Slider } from "vant";
  58. import {
  59. defineComponent,
  60. reactive,
  61. toRefs,
  62. ref,
  63. onBeforeMount,
  64. onMounted,
  65. onUpdated,
  66. nextTick,
  67. watch,
  68. getCurrentInstance,
  69. } from "vue";
  70. import { swiper } from "@/utils/swiper";
  71. import {
  72. formatDate,
  73. formatDateStr,
  74. getDate,
  75. getNowTime,
  76. getRelNowTime,
  77. getTimers,
  78. getUserInfo,
  79. getWeekDate,
  80. parseImgUrl,
  81. } from "@/utils";
  82. import { myTime } from "@/model/workTimeData";
  83. import { propsToAttrMap } from "@vue/shared";
  84. import { isTemplateElement } from "@babel/types";
  85. import { saveBatchCustomScene } from "@/apis/envmonitor";
  86. export default defineComponent({
  87. components: {
  88. VanSlider: Slider,
  89. },
  90. props: {
  91. workkArr: {
  92. type: Array,
  93. default: () => [],
  94. },
  95. projectId: {
  96. type: String,
  97. default: () => "",
  98. },
  99. spaceInfo: {
  100. type: Object,
  101. default: () => {},
  102. },
  103. },
  104. setup(props, context) {
  105. const proxyGlobal: any = getCurrentInstance();
  106. const screenInfo: any = {
  107. screenWidth: 0,
  108. screenHeight: 0,
  109. };
  110. let dateArr: any = [];
  111. let myTimeArr: any = [];
  112. let timerArr: any = getTimers();
  113. let nowTimerArr: any = [];
  114. let nowData: any = {};
  115. let redUrl: any = `${parseImgUrl("ipdImages", "time-check.svg")}`;
  116. let bgRed: any = `linear-gradient(0deg, rgba(255, 0, 0, 0.2), rgba(255, 0, 0, 0.2)), url(${redUrl})`;
  117. const userInfo: any = getUserInfo();
  118. const proxyData = reactive({
  119. userInfo: userInfo,
  120. screenInfo: screenInfo,
  121. projectId: props.projectId,
  122. workkArr: props.workkArr,
  123. bgRed: bgRed,
  124. startIndex: 0,
  125. endIndex: 0,
  126. nowData: nowData,
  127. nowTimerArr: nowTimerArr,
  128. timerArr: timerArr,
  129. startLen: 0,
  130. formBtn: false,
  131. setScreennWidth() {
  132. let addTimeEl: any = document.querySelector("#addTimeId");
  133. proxyData.screenInfo.screenWidth = addTimeEl.offsetWidth;
  134. },
  135. // 获取当前位置
  136. getNowIndex() {
  137. // let nowIndex: any = 0;
  138. // if (proxyData.nowData.week === "今天") {
  139. // nowIndex = getNowTime()[1];
  140. // }
  141. let nowIndex: any = getNowTime()[1];
  142. return nowIndex;
  143. },
  144. // 获取每天真实的下标
  145. getTomorrowIndex() {
  146. let nowIndex: any = 0;
  147. if (proxyData.nowData.week === "今天") {
  148. nowIndex = getNowTime()[1];
  149. }
  150. return nowIndex;
  151. },
  152. // 获取当前位置的坐标
  153. getNowPerstion(timerArr: any) {
  154. let nowIndex: any = proxyData.getNowIndex();
  155. let obj: any = {
  156. nowIndex: nowIndex,
  157. len: 4,
  158. };
  159. let formatTimer: any = timerArr[nowIndex].formatTimer;
  160. let cusStartTime: any = proxyData.parseCusStartTime(
  161. proxyData.nowData.cusStartTime
  162. );
  163. let cusEndTime: any = proxyData.parseCusEndTime(
  164. proxyData.nowData.cusEndTime
  165. );
  166. if (formatTimer >= cusStartTime && formatTimer <= cusEndTime) {
  167. //在服务定制时间之间
  168. timerArr.map((item: any, index: any) => {
  169. if (item.formatTimer === cusEndTime) {
  170. obj.nowIndex = index;
  171. }
  172. });
  173. } else if (formatTimer < cusStartTime) {
  174. timerArr.map((item: any, index: any) => {
  175. if (item.formatTimer === cusStartTime) {
  176. obj.len = index - nowIndex;
  177. if (obj.len > 4) {
  178. obj.len = 4;
  179. }
  180. }
  181. });
  182. }
  183. return obj;
  184. },
  185. // 设置可选时间
  186. setOptionnalTime(timerArr: any) {
  187. let sliderList: any = document.querySelector("#sliderListId");
  188. let slidersWrapper: any = document.querySelector("#slidersWrapperId");
  189. let sliderWidth: any = slidersWrapper.getBoundingClientRect().width;
  190. sliderList.style.width = sliderWidth * timerArr.length + "px";
  191. let index: any = proxyData.getNowPerstion(timerArr).nowIndex;
  192. let len: any = proxyData.getNowPerstion(timerArr).len;
  193. let sliderLeft: any = sliderWidth * index;
  194. if (
  195. sliderLeft >
  196. proxyData.screenInfo.screenWidth +
  197. proxyData.screenInfo.screenWidth / 2
  198. ) {
  199. sliderLeft = sliderLeft - sliderWidth;
  200. }
  201. sliderList.style.left = -sliderLeft + "px";
  202. proxyData.setOptionnalPerstion(index, len);
  203. },
  204. sliderSwiper() {
  205. // 获取当前时间的下标
  206. let sliderList: any = document.querySelector("#sliderListId");
  207. let slidersWrapper: any = document.querySelector("#slidersWrapperId");
  208. let width: any =
  209. sliderList.offsetWidth - proxyData.screenInfo.screenWidth;
  210. swiper(sliderList, {
  211. swipeLeft: function (e: any) {
  212. if (!proxyData.checkMoveTarget(e)) {
  213. let left: any = isNaN(parseInt(sliderList.style.left))
  214. ? 0
  215. : parseInt(sliderList.style.left);
  216. left = Math.abs(left);
  217. if (left >= width) {
  218. sliderList.style.left = -width + "px";
  219. } else {
  220. sliderList.style.left =
  221. -left - Math.abs(e.mation.moveX - e.mation.startX) + "px";
  222. }
  223. }
  224. },
  225. swipeRight: function (e: any) {
  226. if (!proxyData.checkMoveTarget(e)) {
  227. let left: any = isNaN(parseInt(sliderList.style.left))
  228. ? 0
  229. : parseInt(sliderList.style.left);
  230. if (left >= 0) {
  231. sliderList.style.left = 0 + "px";
  232. } else {
  233. sliderList.style.left =
  234. left + Math.abs(e.mation.moveX - e.mation.startX) + "px";
  235. }
  236. }
  237. },
  238. });
  239. },
  240. // 判断滑动的是否是滑快
  241. checkMoveTarget(el: any) {
  242. let endBox: any = document.querySelector("#endBoxId");
  243. let endEnd: any = document.querySelector("#endId");
  244. let endRadio: any = document.querySelector("#endRadioId");
  245. if (
  246. el.target === endBox ||
  247. el.target === endEnd ||
  248. el.target === endRadio
  249. ) {
  250. return true;
  251. }
  252. return false;
  253. },
  254. // 判断滑动的位置是否包含服务定制的位置(如果当前滑动的位置在服务定制处不让滑动)
  255. checkPersionService() {
  256. let flag: any = false;
  257. for (let i = proxyData.startIndex; i < proxyData.endIndex; i++) {
  258. if (proxyData.nowTimerArr[i].isServiceTime) {
  259. flag = true;
  260. break;
  261. }
  262. }
  263. proxyData.formBtn = flag;
  264. },
  265. cancelRemoveListener() {
  266. let endBox: any = document.querySelector("#endBoxId");
  267. endBox.removeEventListener("touchstart", function (e: any) {}, false);
  268. endBox.removeEventListener("touchend", function (e: any) {}, false);
  269. endBox.removeEventListener("touchmove", function (e: any) {}, false);
  270. let sliderList: any = document.querySelector("#sliderListId");
  271. sliderList.removeEventListener(
  272. "touchstart",
  273. function (e: any) {},
  274. false
  275. );
  276. sliderList.removeEventListener("touchend", function (e: any) {}, false);
  277. sliderList.removeEventListener(
  278. "touchmove",
  279. function (e: any) {},
  280. false
  281. );
  282. },
  283. /**
  284. * 日历滑动
  285. */
  286. endBoxSwiper() {
  287. let sliderList: any = document.querySelector("#sliderListId");
  288. let endBox: any = document.querySelector("#endBoxId");
  289. let sliderBtnEl: any = document.querySelector("#sliderBtnId");
  290. let startEl: any = document.querySelector("#startId");
  291. let sliderBoxEl: any = document.querySelectorAll(".slider-box")[0];
  292. let sliderInitLeft: any = 0;
  293. let sliderBtnLeft: any = 0;
  294. let screenLeft: any = 0;
  295. let startElLeft: any = 0;
  296. let sliderBtnWidth: any = 0;
  297. let sliderBoxWidth: any = 0;
  298. let direction: any = 0; // 0是像左 1表示向右边移动
  299. let isMove: any = false;
  300. endBox.addEventListener("touchstart", function (e: any) {
  301. isMove = false;
  302. startElLeft = isNaN(parseInt(startEl.style.left))
  303. ? 0
  304. : parseInt(startEl.style.left);
  305. sliderInitLeft = isNaN(parseInt(sliderList.style.left))
  306. ? 0
  307. : parseInt(sliderList.style.left);
  308. sliderBtnLeft = isNaN(parseInt(sliderBtnEl.style.left))
  309. ? 0
  310. : parseInt(sliderBtnEl.style.left);
  311. sliderInitLeft = Math.abs(sliderInitLeft);
  312. sliderBtnWidth = sliderBtnEl.offsetWidth;
  313. sliderBoxWidth = sliderBoxEl.offsetWidth;
  314. });
  315. endBox.addEventListener("touchend", function (e: any) {
  316. if (isMove) {
  317. sliderBtnWidth = sliderBtnEl.offsetWidth;
  318. let index: any = Math.ceil(
  319. sliderBtnWidth / sliderBoxEl.offsetWidth
  320. );
  321. if (proxyData.startIndex + index >= proxyData.timerArr.length - 1) {
  322. index = proxyData.timerArr.length - 1 - proxyData.startIndex;
  323. }
  324. sliderBtnEl.style.width = sliderBoxEl.offsetWidth * index + "px";
  325. sliderBtnEl.style.background = `rgba(0,0,0,0.2)`;
  326. proxyData.setOptionnalPerstion(proxyData.startIndex, index);
  327. isMove = false;
  328. // 判断按钮是否可以点击(如果选择的时候包含服务定制时间,则不可点击)
  329. proxyData.checkPersionService();
  330. }
  331. });
  332. swiper(endBox, {
  333. swipeLeft: function (e: any) {
  334. if (proxyData.checkMoveTarget(e)) {
  335. direction = 0;
  336. isMove = true;
  337. let moveRealX: any = Math.abs(e.mation.moveX - e.mation.startX);
  338. let sliderLeft: any = isNaN(parseInt(sliderList.style.left))
  339. ? 0
  340. : parseInt(sliderList.style.left);
  341. sliderLeft = Math.abs(sliderLeft);
  342. let width: any = sliderBoxEl.offsetWidth;
  343. if (sliderBtnWidth - moveRealX <= width) {
  344. sliderBtnEl.style.width = width + "px";
  345. } else {
  346. sliderBtnEl.style.width = sliderBtnWidth - moveRealX + "px";
  347. proxyData.cancelSliderBoxColor();
  348. }
  349. let bg: any = parseImgUrl("ipdImages", "time-wait.svg");
  350. sliderBtnEl.style.background = `linear-gradient(0deg, rgba(0, 255, 163, 0.2), rgba(0, 255, 163, 0.2))`;
  351. if (
  352. sliderBtnLeft + (sliderBtnWidth - moveRealX) - sliderBoxWidth <
  353. sliderLeft
  354. ) {
  355. let left: any =
  356. -sliderLeft +
  357. (sliderLeft +
  358. sliderBoxWidth -
  359. (sliderBtnLeft + sliderBtnWidth - moveRealX));
  360. if (left > 0) {
  361. sliderList.style.left = 0 + "px";
  362. } else {
  363. sliderList.style.left = left + "px";
  364. }
  365. }
  366. }
  367. },
  368. swipeRight: function (e: any) {
  369. if (proxyData.checkMoveTarget(e)) {
  370. isMove = true;
  371. direction = 1;
  372. let moveRealX: any = Math.abs(e.mation.moveX - e.mation.startX);
  373. sliderBtnEl.style.background = `linear-gradient(0deg, rgba(0, 255, 163, 0.2), rgba(0, 255, 163, 0.2))`;
  374. let sliderLeft: any = isNaN(parseInt(sliderList.style.left))
  375. ? 0
  376. : parseInt(sliderList.style.left);
  377. sliderLeft = Math.abs(sliderLeft);
  378. let width: any =
  379. sliderList.offsetWidth - proxyData.screenInfo.screenWidth;
  380. screenLeft = sliderLeft + proxyData.screenInfo.screenWidth;
  381. if (
  382. sliderBtnLeft +
  383. sliderBtnWidth +
  384. moveRealX +
  385. sliderBoxEl.offsetWidth * 2 >=
  386. screenLeft
  387. ) {
  388. let left: any =
  389. -sliderLeft -
  390. (sliderBtnLeft +
  391. sliderBtnWidth +
  392. moveRealX +
  393. sliderBoxEl.offsetWidth * 2 -
  394. screenLeft);
  395. sliderList.style.left = left + "px";
  396. if (sliderLeft >= width) {
  397. sliderList.style.left = -width + "px";
  398. }
  399. }
  400. if (
  401. sliderBtnLeft +
  402. sliderBtnWidth +
  403. moveRealX +
  404. sliderBoxEl.offsetWidth >=
  405. sliderList.offsetWidth
  406. ) {
  407. sliderBtnEl.style.width =
  408. sliderList.offsetWidth -
  409. sliderBtnLeft -
  410. sliderBoxEl.offsetWidth +
  411. "px";
  412. } else {
  413. sliderBtnEl.style.width = sliderBtnWidth + moveRealX + "px";
  414. }
  415. }
  416. },
  417. });
  418. },
  419. cancelSliderBoxColor() {
  420. let sliderBoxArr: any = document.querySelectorAll(".slider-box");
  421. for (let i = 0; i < sliderBoxArr.length; i++) {
  422. if (!proxyData.nowTimerArr[i].isCheck) {
  423. if (
  424. i >= proxyData.startIndex &&
  425. i < proxyData.startIndex + proxyData.startLen
  426. ) {
  427. sliderBoxArr[i].style.background =
  428. "linear-gradient(0deg, rgba(0, 255, 163, 0.2), rgba(0, 255, 163, 0.2))";
  429. }
  430. }
  431. }
  432. },
  433. /**
  434. * 设置可选日期的位置
  435. */
  436. setOptionnalPerstion(index: any, len: any = 1) {
  437. let sliderList: any = document.querySelector("#sliderListId");
  438. proxyData.startIndex = index;
  439. proxyData.startLen = len;
  440. proxyData.endIndex = proxyData.startIndex + len;
  441. let slidersWrapper: any = document.querySelector("#slidersWrapperId");
  442. let slidersWrapperWidth: any =
  443. slidersWrapper.getBoundingClientRect().width;
  444. let sliderBtnEl: any = document.querySelector("#sliderBtnId");
  445. let endEnd: any = document.querySelector("#endBoxId");
  446. let sliderBoxArr: any = document.querySelectorAll(".slider-box");
  447. let parseIndex = proxyData.getTomorrowIndex();
  448. for (let i = 0; i < sliderBoxArr.length; i++) {
  449. if (i >= parseIndex) {
  450. sliderBoxArr[i].style.background = "transparent";
  451. }
  452. }
  453. let bg: any = parseImgUrl("ipdImages", "time-wait.svg");
  454. for (let i = 0; i < len; i++) {
  455. sliderBoxArr[
  456. index + i
  457. ].style.background = `linear-gradient(0deg, rgba(0, 255, 163, 0.2), rgba(0, 255, 163, 0.2)), url(${bg})`;
  458. }
  459. sliderBtnEl.style.width = slidersWrapperWidth * len + "px";
  460. sliderBtnEl.style.background = `rgba(0,0,0,0.2)`;
  461. let left: any = slidersWrapperWidth * index;
  462. sliderBtnEl.style.left = left + "px";
  463. // // 已被选择的时间
  464. proxyData.setCheckTimeStyle();
  465. // // 固定服务时间(空间服务时间)
  466. proxyData.setServiceTimerStyle();
  467. },
  468. /**
  469. * 设置过去的时间
  470. */
  471. setPastTime(index: any) {
  472. if (proxyData.nowData.week === "今天") {
  473. let sliderBoxArr: any = document.querySelectorAll(".slider-box");
  474. for (let i = 0; i < sliderBoxArr.length; i++) {
  475. if (i < index) {
  476. sliderBoxArr[i].style.background = `rgba(196, 196, 196, 0.2)`;
  477. }
  478. }
  479. }
  480. },
  481. /**
  482. * 设置已经选中时间
  483. */
  484. setCheckTimeStyle() {
  485. let timerArr: any = proxyData.nowTimerArr;
  486. let sliderBoxArr: any = document.querySelectorAll(".slider-box");
  487. for (let i = 0; i < timerArr.length; i++) {
  488. if (timerArr[i].isCheck) {
  489. sliderBoxArr[i].style.background = proxyData.bgRed;
  490. }
  491. }
  492. },
  493. /***
  494. * 固定服务时间的颜色增加
  495. */
  496. setServiceTimerStyle() {
  497. let timerArr: any = proxyData.nowTimerArr;
  498. // debugger
  499. let sliderBoxArr: any = document.querySelectorAll(".slider-box");
  500. for (let i = 0; i < timerArr.length; i++) {
  501. if (timerArr[i].isServiceTime) {
  502. sliderBoxArr[i].style.background = `rgba(196, 196, 196, 0.2)`;
  503. }
  504. }
  505. },
  506. // 转化日期(分钟处理成可选择)
  507. parseCusStartTime(time: any) {
  508. let newTime: any = time;
  509. if (time) {
  510. let minute: any = (time / 100) % 100;
  511. if (minute) {
  512. let temTimeInt: any = time / 10000;
  513. temTimeInt = parseInt(temTimeInt);
  514. if (minute < 30) {
  515. if (temTimeInt < 10) {
  516. newTime = "0" + temTimeInt + "30" + "00";
  517. } else {
  518. newTime = temTimeInt + "30" + "00";
  519. }
  520. } else if (minute > 30) {
  521. temTimeInt = temTimeInt + 1;
  522. if (temTimeInt < 10) {
  523. newTime = "0" + temTimeInt + "00" + "00";
  524. } else {
  525. newTime = temTimeInt + "00" + "00";
  526. }
  527. }
  528. }
  529. }
  530. return newTime;
  531. },
  532. // 转化日期(分钟处理成可选择)
  533. parseCusEndTime(time: any) {
  534. let newTime: any = time;
  535. if (time) {
  536. let minute: any = (time / 100) % 100;
  537. if (minute) {
  538. let temTimeInt: any = time / 10000;
  539. temTimeInt = parseInt(temTimeInt);
  540. if (minute < 30) {
  541. if (temTimeInt < 10) {
  542. newTime = "0" + temTimeInt + "00" + "00";
  543. } else {
  544. newTime = temTimeInt + "00" + "00";
  545. }
  546. } else if (minute > 30) {
  547. if (temTimeInt < 10) {
  548. newTime = "0" + temTimeInt + "30" + "00";
  549. } else {
  550. newTime = temTimeInt + "30" + "00";
  551. }
  552. }
  553. }
  554. }
  555. return newTime;
  556. },
  557. /**
  558. * 选中当前模块
  559. */
  560. checkSlider(item: any, index: any) {
  561. if (index === proxyData.nowTimerArr.length - 1) {
  562. return;
  563. }
  564. // 按钮的状态
  565. proxyData.formBtn = false;
  566. let nowIndex: any = proxyData.getNowIndex();
  567. if (proxyData.nowData.week === "今天" && index < nowIndex) {
  568. // 过去的时间不可选择
  569. // 过去的时间不可选择
  570. return;
  571. }
  572. if (proxyData.nowData.cusStartTime && proxyData.nowData.cusEndTime) {
  573. let formatTimer: any = proxyData.nowTimerArr[index].formatTimer; //在服务定制时间之间
  574. let cusStartTime: any = proxyData.parseCusStartTime(
  575. proxyData.nowData.cusStartTime
  576. );
  577. let cusEndTime: any = proxyData.parseCusEndTime(
  578. proxyData.nowData.cusEndTime
  579. );
  580. if (formatTimer >= cusStartTime && formatTimer < cusEndTime) {
  581. return;
  582. }
  583. }
  584. proxyData.setOptionnalPerstion(index);
  585. },
  586. /**
  587. * 获取个人加班申请数据
  588. */
  589. dateArr: dateArr,
  590. myTimeArr: myTimeArr,
  591. // // 服务定制开始时间转化(处理服务定制时间包含几分钟的问题)
  592. // parseCusStatTime() {},
  593. // // 服务定制结束时间转化(处理服务定制时间包含几分钟的问题)
  594. // parseCusEndTime(time: any) {
  595. // let newTime: any = "";
  596. // if (time) {
  597. // let minute: any = (time / 100) % 100;
  598. // if (minute < 30) {
  599. // } else if (minute > 30) {
  600. // } else {
  601. // newTime = time;
  602. // }
  603. // }
  604. // },
  605. setWorkTimeList() {
  606. proxyData.isUpdate = false;
  607. proxyGlobal.proxy.$loadinngEnd();
  608. let data: any = proxyData.workkArr;
  609. proxyData.dateArr = [];
  610. let nowDate: any = formatDate("YYYY-MM-DD");
  611. for (let i = 0; i < data.length; i++) {
  612. let date: any = formatDateStr(data[i].date);
  613. let cusStartTime: any = proxyData.parseCusStartTime(
  614. data[i].cusStartTime
  615. );
  616. let cusEndTime: any = proxyData.parseCusEndTime(data[i].cusEndTime);
  617. // let isActive: Boolean = false;
  618. let week: any = getWeekDate(new Date(date).getDay());
  619. if (date === nowDate) {
  620. // isActive = true;
  621. week = "今天";
  622. }
  623. let timerArr: any = [];
  624. for (let i = 0; i < proxyData.timerArr.length; i++) {
  625. let obj: any = {
  626. timer: proxyData.timerArr[i],
  627. isCheck: false,
  628. formatTimer: proxyData.timerArr[i].replace(/[:]/g, "") + "00",
  629. };
  630. timerArr.push(obj);
  631. }
  632. let customSceneList: any = data[i]?.customSceneList ?? [];
  633. customSceneList.map((custom: any) => {
  634. for (let j = 0; j < timerArr.length; j++) {
  635. // debugger
  636. if (timerArr[j].formatTimer < cusStartTime) {
  637. let tempStartTime: any = proxyData.parseCusStartTime(
  638. custom.startTime
  639. );
  640. let tempEndTime: any = proxyData.parseCusStartTime(
  641. custom.endTime
  642. );
  643. // 加班时间在服务定制时间之前
  644. if (
  645. timerArr[j].formatTimer >= tempStartTime &&
  646. timerArr[j].formatTimer < tempEndTime
  647. ) {
  648. timerArr[j].isCheck = true;
  649. }
  650. } else {
  651. // 加班时间在服务外定制时间之后
  652. let tempStartTime: any = proxyData.parseCusEndTime(
  653. custom.startTime
  654. );
  655. let tempEndTime: any = proxyData.parseCusEndTime(
  656. custom.endTime
  657. );
  658. if (
  659. timerArr[j].formatTimer >= tempStartTime &&
  660. timerArr[j].formatTimer < tempEndTime
  661. ) {
  662. timerArr[j].isCheck = true;
  663. }
  664. }
  665. }
  666. });
  667. // 是否在固定区域时间
  668. if (cusStartTime && cusEndTime) {
  669. timerArr.map((item: any) => {
  670. if (
  671. item.formatTimer >= cusStartTime &&
  672. item.formatTimer < cusEndTime
  673. ) {
  674. item.isServiceTime = true;
  675. } else {
  676. item.isServiceTime = false;
  677. }
  678. });
  679. }
  680. proxyData.dateArr.push({
  681. date: date,
  682. isActive: false,
  683. oldDate: data[i].date,
  684. objectId: data[i].objectId,
  685. cusStartTime: data[i].cusStartTime,
  686. customSceneList: customSceneList,
  687. cusEndTime: data[i].cusEndTime,
  688. day: getDate(new Date(date)),
  689. week: week,
  690. timerArr: timerArr,
  691. });
  692. }
  693. // debugger
  694. proxyData.dateArr.map((item: any, index: any) => {
  695. if (index === proxyData.activeIndex) {
  696. proxyData.checkDate(item, index);
  697. return;
  698. }
  699. });
  700. },
  701. clearTimerBoxStyle() {
  702. proxyData.dateArr.map((elItem: any) => {
  703. elItem.isActive = false;
  704. });
  705. let timerArr: any = proxyData.nowTimerArr;
  706. let sliderBoxArr: any = document.querySelectorAll(".slider-box");
  707. for (let i = 0; i < timerArr.length; i++) {
  708. sliderBoxArr[i].style.background = `transparent`;
  709. }
  710. // 切换日期的时候取消绑定
  711. // proxyData.cancelRemoveListener();
  712. },
  713. /**
  714. * 切换日期
  715. */
  716. activeIndex: 0,
  717. checkDate(item: any, index: any) {
  718. proxyData.clearTimerBoxStyle();
  719. item.isActive = true;
  720. proxyData.activeIndex = index;
  721. proxyData.nowTimerArr = proxyData.dateArr[index].timerArr;
  722. proxyData.nowData = proxyData.dateArr[index];
  723. nextTick(() => {
  724. proxyData.setOptionnalTime(proxyData.nowTimerArr);
  725. let nowIndex: any = proxyData.getNowIndex();
  726. if (proxyData.nowData.week === "今天") {
  727. proxyData.setPastTime(nowIndex);
  728. }
  729. // // 已经被选择的时间
  730. proxyData.setCheckTimeStyle();
  731. // // 固定服务时间
  732. proxyData.setServiceTimerStyle();
  733. // dom元素宽高调整
  734. proxyData.changeEl();
  735. });
  736. },
  737. /**
  738. * dom的滚动功能设置
  739. */
  740. flag: false,
  741. changeEl() {
  742. proxyData.setScreennWidth();
  743. proxyData.sliderSwiper();
  744. proxyData.endBoxSwiper();
  745. // if (!proxyData.flag) {
  746. // proxyData.setScreennWidth();
  747. // proxyData.sliderSwiper();
  748. // proxyData.endBoxSwiper();
  749. // proxyData.flag = true;
  750. // }
  751. },
  752. // 加班数据格式化=》后台需要的数据结构(添加加班逻辑)
  753. formateAddTimer() {
  754. let customSceneList: any = proxyData.nowData.customSceneList;
  755. let timerArr: any = proxyData.nowData.timerArr;
  756. let startTime: any = timerArr[proxyData.startIndex].formatTimer;
  757. let endTime: any = timerArr[proxyData.endIndex].formatTimer;
  758. // debugger;
  759. let delTimerArr: any = [];
  760. // 加班时间拼接
  761. customSceneList.map((item: any, index: any) => {
  762. // let itemStartTime:any=proxyData.parseCusStartTime(item.startTime)
  763. // let itemEndTime:any=proxyData.parseCusStartTime(item.endTime)
  764. // item时间段保护当前时间端
  765. if (startTime < item.startTime) {
  766. if (endTime < item.startTime) {
  767. } else if (endTime >= item.startTime) {
  768. // 时间段连续拼接上
  769. let delObj: any = proxyData.formaTimeObj(
  770. item,
  771. "1",
  772. item.startTime,
  773. item.endTime
  774. );
  775. delTimerArr.push(delObj);
  776. startTime = startTime;
  777. endTime = endTime;
  778. }
  779. } else if (startTime >= item.startTime && startTime < item.endTime) {
  780. if (endTime <= item.endTime) {
  781. let delObj: any = proxyData.formaTimeObj(
  782. item,
  783. "1",
  784. item.startTime,
  785. item.endTime
  786. );
  787. delTimerArr.push(delObj);
  788. startTime = startTime;
  789. endTime = endTime;
  790. } else if (endTime > item.endTime) {
  791. let delObj: any = proxyData.formaTimeObj(
  792. item,
  793. "1",
  794. item.startTime,
  795. item.endTime
  796. );
  797. delTimerArr.push(delObj);
  798. startTime = item.startTime;
  799. endTime = endTime;
  800. }
  801. } else if (startTime > item.endTime) {
  802. if (startTime === item.endTime) {
  803. let delObj: any = proxyData.formaTimeObj(
  804. item,
  805. "1",
  806. item.startTime,
  807. item.endTime
  808. );
  809. startTime = item.startTime;
  810. endTime = endTime;
  811. }
  812. } else if (startTime === item.startTime && endTime === item.endTime) {
  813. // 两个时间段一致
  814. }
  815. });
  816. // 加班时间处理好后和服务定制时间做对比(处理时分秒的情况)
  817. let cusStartTime: any = proxyData.parseCusStartTime(
  818. proxyData.nowData.cusStartTime
  819. );
  820. let cusEndTime: any = proxyData.parseCusEndTime(
  821. proxyData.nowData.cusEndTime
  822. );
  823. if (startTime < cusStartTime && endTime <= cusStartTime) {
  824. if (endTime === cusStartTime) {
  825. endTime = proxyData.nowData.cusStartTime;
  826. }
  827. } else if (startTime >= cusEndTime) {
  828. if (startTime === cusEndTime) {
  829. startTime = proxyData.nowData.cusEndTime;
  830. }
  831. }
  832. let relNowTime: any = getRelNowTime();
  833. let type = "0";
  834. if (
  835. proxyData.nowData.week === "今天" &&
  836. relNowTime >= startTime &&
  837. relNowTime <= endTime
  838. ) {
  839. type = "2";
  840. }
  841. let addObj: any = proxyData.formaTimeObj(
  842. customSceneList[0],
  843. type,
  844. startTime,
  845. endTime
  846. );
  847. delTimerArr.push(addObj);
  848. let formTimeArr: any = delTimerArr;
  849. return formTimeArr;
  850. },
  851. // 格式化加班单个数据
  852. formaTimeObj(item: any, type: any, startTime: any, endTime: any) {
  853. let obj: any = {
  854. projectId: proxyData.projectId, //类型:String 必有字段 备注:项目id
  855. objectId: proxyData.nowData.objectId, //类型:String 必有字段 备注:空间id
  856. sourceType: "sagacareAndtenantslink", //类型:String 必有字段 备注:sagacareAndtenantslink 来源
  857. startDate: proxyData.nowData.oldDate, //类型:String 必有字段 备注://开始日期
  858. endDate: proxyData.nowData.oldDate, //类型:String 必有字段 备注://结束日期
  859. startTime: startTime, //类型:String 必有字段 备注://开始时间
  860. endTime: endTime, //类型:String 必有字段 备注://结束时间
  861. type: type, //类型:String 必有字段 备注://0 预约加班,1 取消,2 加班(我来了), 3 最后一个走
  862. userId: proxyData.userInfo.userId, //类型:String 必有字段 备注://用户id
  863. userPhone: proxyData.userInfo.userPhone, //类型:String 必有字段 备注://手机号
  864. customSceneEqType: "ALL", //类型:String 必有字段 备注://来源 AC 空调入口, SE 灯入口 ALL 加班入口
  865. userName: proxyData.userInfo.userName, //类型:String 必有字段 备注://名字
  866. };
  867. if (type === "1") {
  868. obj.id = item.id; //类型:String 必有字段 备注:取消加班时必传
  869. }
  870. return obj;
  871. },
  872. // 加班数据格式化=》后台需要的数据结构(删除加班逻辑)
  873. formateDelTimer() {
  874. let timerArr: any = proxyData.nowData.timerArr;
  875. let endIndex: any = proxyData.endIndex > 0 ? proxyData.endIndex - 1 : 0;
  876. // debugger
  877. // 如果当前选择的日期只在已经选中的范围内
  878. if (
  879. timerArr[proxyData.startIndex].isCheck &&
  880. timerArr[endIndex].isCheck
  881. ) {
  882. let customSceneList: any = proxyData.nowData.customSceneList;
  883. let startTime: any = timerArr[proxyData.startIndex].formatTimer;
  884. let endTime: any = timerArr[proxyData.endIndex].formatTimer;
  885. let delTimerArr: any = [];
  886. let addTimeArr: any = [];
  887. // 删除时间的数据拼接
  888. customSceneList.map((item: any, index: any) => {
  889. if (item.startTime < startTime) {
  890. if (item.endTime <= endTime) {
  891. let delObj: any = proxyData.formaTimeObj(
  892. item,
  893. "1",
  894. item.startTime,
  895. item.endTime
  896. );
  897. delTimerArr.push(delObj);
  898. let addObj: any = proxyData.formaTimeObj(
  899. customSceneList[0],
  900. "0",
  901. item.startTime,
  902. startTime
  903. );
  904. addTimeArr.push(addObj);
  905. } else if (item.endTime > endTime) {
  906. let delObj: any = proxyData.formaTimeObj(
  907. item,
  908. "1",
  909. item.startTime,
  910. item.endTime
  911. );
  912. delTimerArr.push(delObj);
  913. let addObj1: any = proxyData.formaTimeObj(
  914. customSceneList[0],
  915. "0",
  916. item.startTime,
  917. startTime
  918. );
  919. addTimeArr.push(addObj1);
  920. let addObj2: any = proxyData.formaTimeObj(
  921. customSceneList[0],
  922. "0",
  923. endTime,
  924. item.endTime
  925. );
  926. addTimeArr.push(addObj2);
  927. }
  928. } else if (item.startTime === item.startTime) {
  929. if (item.endTime <= endTime) {
  930. // 整段删除
  931. let delObj: any = proxyData.formaTimeObj(
  932. item,
  933. "1",
  934. item.startTime,
  935. item.endTime
  936. );
  937. delTimerArr.push(delObj);
  938. } else if (item.endTime > endTime) {
  939. let delObj: any = proxyData.formaTimeObj(
  940. item,
  941. "1",
  942. item.startTime,
  943. item.endTime
  944. );
  945. delTimerArr.push(delObj);
  946. let addObj1: any = proxyData.formaTimeObj(
  947. customSceneList[0],
  948. "0",
  949. endTime,
  950. item.endTime
  951. );
  952. addTimeArr.push(addObj1);
  953. }
  954. } else if (item.startTime > startTime) {
  955. if (item.endTime <= endTime) {
  956. // 整段删除
  957. let delObj: any = proxyData.formaTimeObj(
  958. item,
  959. "1",
  960. item.startTime,
  961. item.endTime
  962. );
  963. delTimerArr.push(delObj);
  964. } else if (item.endTime > endTime) {
  965. let delObj: any = proxyData.formaTimeObj(
  966. item,
  967. "1",
  968. item.startTime,
  969. item.endTime
  970. );
  971. delTimerArr.push(delObj);
  972. let addObj1: any = proxyData.formaTimeObj(
  973. customSceneList[0],
  974. "0",
  975. endTime,
  976. item.endTime
  977. );
  978. addTimeArr.push(addObj1);
  979. }
  980. }
  981. });
  982. addTimeArr.map((item: any) => {
  983. let realTime: any = getRelNowTime();
  984. if (realTime >= item.startTime && realTime <= item.endTime) {
  985. item.type === "2";
  986. }
  987. });
  988. let formTimeArr: any = addTimeArr.concat(delTimerArr);
  989. return formTimeArr;
  990. } else {
  991. return [];
  992. }
  993. },
  994. // 关闭加班弹窗
  995. closeWorkTimer() {
  996. proxyData.formBtn = false;
  997. },
  998. // 提交申请
  999. addWorkTimer() {
  1000. let formTimerArr: any = proxyData.formateAddTimer();
  1001. proxyData.saveBatchCustomScene(formTimerArr);
  1002. // console.log("提交申请-----");
  1003. // console.log(formTimerArr);
  1004. },
  1005. // 提交加班记录
  1006. saveBatchCustomScene(formTimerArr: any, type: any = 1) {
  1007. proxyGlobal.proxy.$loadingStart(0);
  1008. proxyData.formBtn = true;
  1009. saveBatchCustomScene(formTimerArr)
  1010. .then((res) => {
  1011. let timer: any = setTimeout(() => {
  1012. if (type === 1) {
  1013. context.emit("closeWork");
  1014. proxyGlobal.proxy.$loadinngEnd();
  1015. } else if (type === 2) {
  1016. // 删除
  1017. proxyData.isUpdate = true;
  1018. // proxyData.setWorkTimeList();
  1019. }
  1020. timer = null;
  1021. clearTimeout(timer);
  1022. proxyData.formBtn = false;
  1023. }, 1000);
  1024. })
  1025. .catch(() => {
  1026. proxyGlobal.proxy.$loadinngEnd();
  1027. proxyData.formBtn = false;
  1028. });
  1029. },
  1030. // 删除
  1031. isUpdate: false, // 删除更新弹窗数据
  1032. triggerDelTime() {
  1033. let formTimeArr: any = proxyData.formateDelTimer();
  1034. if (formTimeArr && formTimeArr.length) {
  1035. console.log(formTimeArr);
  1036. // alert("确定删除当前时间吗?");
  1037. Dialog.confirm({
  1038. title: "确认",
  1039. message: "确定删除当前时间吗?",
  1040. })
  1041. .then(() => {
  1042. proxyData.saveBatchCustomScene(formTimeArr, 2);
  1043. })
  1044. .catch(() => {
  1045. // on cancel
  1046. });
  1047. }
  1048. },
  1049. });
  1050. nextTick(() => {
  1051. // proxyData.setScreennWidth()
  1052. });
  1053. watch(props, (newProps: any) => {
  1054. proxyData.workkArr = newProps.workkArr;
  1055. proxyData.projectId = newProps.projectId;
  1056. if (proxyData.isUpdate) {
  1057. console.log("数据更新了");
  1058. proxyData.setWorkTimeList();
  1059. }
  1060. // proxyData.getWorkTimeList();
  1061. });
  1062. onMounted(() => {
  1063. // 设置dom最外层的宽
  1064. proxyData.setWorkTimeList();
  1065. });
  1066. return {
  1067. ...toRefs(proxyData),
  1068. };
  1069. },
  1070. });
  1071. </script>
  1072. <style lang="scss" scoped>
  1073. .work-content {
  1074. position: relative;
  1075. height: 100%;
  1076. width: 100%;
  1077. background: #fff;
  1078. }
  1079. .work-space {
  1080. width: 100%;
  1081. padding-left: 10px;
  1082. .space-title {
  1083. padding-bottom: 10px;
  1084. font-family: "Noto Sans SC";
  1085. font-style: normal;
  1086. font-weight: 500;
  1087. font-size: 22px;
  1088. line-height: 31px;
  1089. color: #000000;
  1090. }
  1091. .device-tip {
  1092. padding-bottom: 36px;
  1093. font-family: "Noto Sans SC";
  1094. font-style: normal;
  1095. font-weight: 400;
  1096. font-size: 12px;
  1097. line-height: 17px;
  1098. color: #8d9399;
  1099. }
  1100. }
  1101. .add-time {
  1102. width: 100%;
  1103. // height: 80%;
  1104. background: #fff;
  1105. box-sizing: border-box;
  1106. // padding: 10px;
  1107. overflow: hidden;
  1108. .date_box {
  1109. display: flex;
  1110. justify-content: space-between;
  1111. width: 100%;
  1112. padding-bottom: 35px;
  1113. .date-item {
  1114. padding-top: 20px;
  1115. width: 50px;
  1116. height: 74px;
  1117. box-sizing: border-box;
  1118. border: 1px solid #eff0f1;
  1119. border-radius: 16px;
  1120. span {
  1121. display: block;
  1122. width: 100%;
  1123. text-align: center;
  1124. &:nth-child(1) {
  1125. font-family: "Noto Sans SC";
  1126. padding-bottom: 10px;
  1127. font-style: normal;
  1128. font-weight: 400;
  1129. font-size: 10px;
  1130. line-height: 12px;
  1131. text-align: center;
  1132. color: #8d9399;
  1133. }
  1134. &:nth-child(2) {
  1135. font-family: "Persagy";
  1136. font-style: normal;
  1137. font-weight: 700;
  1138. font-size: 14px;
  1139. line-height: 19px;
  1140. text-align: center;
  1141. color: #000000;
  1142. }
  1143. }
  1144. }
  1145. .date-item-active {
  1146. background: rgba(206, 159, 39, 0.4);
  1147. border: 1px solid rgba(206, 159, 39, 0.4);
  1148. }
  1149. }
  1150. .sliders-list {
  1151. position: relative;
  1152. // padding-top: 20px;
  1153. margin-top: 20px;
  1154. height: 135px;
  1155. white-space: nowrap;
  1156. overflow-x: auto;
  1157. overflow-y: hidden;
  1158. &::-webkit-scrollbar {
  1159. display: none;
  1160. }
  1161. .sliders-wrapper {
  1162. display: inline-block;
  1163. box-sizing: border-box;
  1164. width: 72px;
  1165. height: 135px;
  1166. //border-bottom: 1px solid #ECEFF4;
  1167. &:nth-child(2n + 1) {
  1168. border-left: 1px solid #eceff4;
  1169. }
  1170. .sliders {
  1171. position: relative;
  1172. // width: 36px;
  1173. width: 100%;
  1174. height: 100%;
  1175. .label {
  1176. position: absolute;
  1177. height: 34px;
  1178. left: 0px;
  1179. top: 0px;
  1180. font-family: "PingFang SC";
  1181. font-style: normal;
  1182. font-weight: 400;
  1183. font-size: 10px;
  1184. line-height: 14px;
  1185. padding-left: 5px;
  1186. color: #8d9399;
  1187. }
  1188. .slider-box {
  1189. position: absolute;
  1190. //width: 100%;
  1191. width: 72px;
  1192. height: 100px;
  1193. left: -1px;
  1194. // top:25px;
  1195. bottom: 0px;
  1196. //background: linear-gradient(0deg, rgba(255, 0, 0, 0.2), rgba(255, 0, 0, 0.2));
  1197. }
  1198. }
  1199. }
  1200. .slider-btn {
  1201. position: absolute;
  1202. height: 100px;
  1203. //left: 40px;
  1204. top: 35px;
  1205. .start {
  1206. position: absolute;
  1207. width: 2px;
  1208. top: 0;
  1209. height: 100px;
  1210. left: 0px;
  1211. //left: 176px;
  1212. background: #04b49c;
  1213. }
  1214. .end-box {
  1215. position: absolute;
  1216. top: 0;
  1217. width: 20px;
  1218. height: 100px;
  1219. right: -5px;
  1220. z-index: 999;
  1221. //left: 286px;
  1222. .end {
  1223. position: absolute;
  1224. top: 0;
  1225. left: 10px;
  1226. width: 2px;
  1227. height: 100px;
  1228. background: #04b49c;
  1229. }
  1230. .end-radio {
  1231. width: 22px;
  1232. position: absolute;
  1233. top: 37px;
  1234. left: -1px;
  1235. height: 22px;
  1236. background: #ffffff;
  1237. border-radius: 50%;
  1238. box-shadow: 0px 1px 2px rgba(4, 38, 0, 0.2);
  1239. }
  1240. }
  1241. }
  1242. }
  1243. }
  1244. .add-time-btn {
  1245. position: absolute;
  1246. // display: flex;
  1247. // justify-content: space-between;
  1248. // width: 100%;
  1249. bottom: 5vh;
  1250. left: 50%;
  1251. transform: translateX(-50%);
  1252. display: flex;
  1253. padding-top: 24px;
  1254. text-align: center;
  1255. .cancel-btn {
  1256. // width: 32%;
  1257. width: 170px;
  1258. height: 50px;
  1259. line-height: 50px;
  1260. background: #ffffff;
  1261. border: 1px solid #c3c7cb;
  1262. border-radius: 25px;
  1263. font-size: 16px;
  1264. margin-right: 20px;
  1265. font-weight: 400;
  1266. color: #1f2529;
  1267. }
  1268. .comfirm-btn {
  1269. // width: 52%;
  1270. width: 265px;
  1271. height: 50px;
  1272. line-height: 50px;
  1273. font-weight: 400;
  1274. font-size: 16px;
  1275. text-align: center;
  1276. background: #ce9f27;
  1277. border-radius: 25px;
  1278. color: #fff;
  1279. }
  1280. .comfirm-btn-diabled {
  1281. background: rgba(196, 196, 196, 0.2);
  1282. color: #1f2529;
  1283. }
  1284. }
  1285. </style>