chargingGunSetup.vue 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885
  1. <template>
  2. <view>
  3. <u-navbar title="充电枪设置"></u-navbar>
  4. <u-tabs :list="list" :is-scroll="false" :current="current" @change="change" active-color="#101010"></u-tabs>
  5. <u-modal v-model="show2" @confirm="submitApi()" :show-cancel-button='true' :confirm-text="'继续提交'" >
  6. <view style="padding: 10px;text-align: center;">
  7. <p style="padding-bottom: 10px;">以下预约时段存在问题:</p>
  8. <p v-for="(item,i) in errorlist" :key="i" >
  9. {{item.name}}{{item.value}}
  10. </p>
  11. </view>
  12. </u-modal>
  13. <u-select v-model="show" :title="'开始时间-结束时间'"
  14. mode="mutil-column-auto" :list="listmutilcolumnauto" :default-value="defaultTime" @confirm="confirm"></u-select>
  15. <!-- <udoublepicker v-model="show"
  16. :defaultTime="defaultTime"
  17. :defaultTime2="defaultTime2"
  18. @confirm="confirm" ></udoublepicker> -->
  19. <!-- 开放共享 -->
  20. <view class="" v-if="current==0">
  21. <view class="share-set" >
  22. <view class="title">
  23. 开放共享
  24. </view>
  25. <view class="">
  26. <u-radio-group v-model="detail.enableShare" >
  27. <u-radio v-for="(item, index) in list2" :key="index+'a'" :name="item.value"
  28. :disabled="item.disabled" active-color="#00b962">
  29. {{item.name}}
  30. </u-radio>
  31. </u-radio-group>
  32. </view>
  33. </view>
  34. </view>
  35. <!-- 预约设置 -->
  36. <view class="" v-if="current==1">
  37. <view class="share-set" >
  38. <view class="title">
  39. 开放预约
  40. </view>
  41. <view class="">
  42. <u-radio-group v-model="detail.enableAppointment" >
  43. <u-radio v-for="(item, index) in list2" :key="index+'b'" :name="item.value"
  44. :disabled="item.disabled" active-color="#00b962">
  45. {{item.name}}
  46. </u-radio>
  47. </u-radio-group>
  48. </view>
  49. </view>
  50. <view class="share-set" >
  51. <view class="title">
  52. 预约自动确认
  53. </view>
  54. <view class="">
  55. <u-radio-group v-model="detail.autoConfirm" >
  56. <u-radio v-for="(item, index) in list2" :key="index+'c'" :name="item.value"
  57. active-color="#00b962">
  58. {{item.name}}
  59. </u-radio>
  60. </u-radio-group>
  61. </view>
  62. </view>
  63. <!-- 预留时长选项 -->
  64. <view class="time-options">
  65. <view class="title">
  66. 预留时长选项
  67. </view>
  68. <view class="radio-box">
  69. <u-checkbox-group shape="square">
  70. <u-checkbox v-for="(item, index) in timeList"
  71. v-model="item.checked" @change="checkboxChange(item,$event)"
  72. :key="index" :name="item.value"
  73. :disabled="item.disabled" active-color="#00b962">
  74. {{item.name}}
  75. </u-checkbox>
  76. </u-checkbox-group>
  77. </view>
  78. </view>
  79. </view>
  80. <!-- 开发时间设置 -->
  81. <view class="main">
  82. <view class="title">
  83. {{current?'预约':'共享'}}时段 <span style="
  84. float: right;
  85. color: #53b56b;
  86. font-size: 14px;
  87. "
  88. @click="copy"
  89. v-show="current==1">
  90. <u-icon name="file-text"></u-icon>
  91. 同步共享设置</span>
  92. </view>
  93. <view class="item" v-for="(item,i) in weekSz" :key="i">
  94. <view class="switch">
  95. <view class="week">
  96. {{item}} <!-- {{weekOpenSz[i].lookcollect}} -->
  97. </view>
  98. <u-switch v-model="weekOpenSz[i].op" @change="change2($event,i)" size="40" active-color="#00b962"></u-switch>
  99. </view>
  100. <view class="frame-box" v-for="(item2,index) in weekOpenSz[i].list" :key="index">
  101. <view class="time-frame">
  102. <view class="frame-title">
  103. 开放时段
  104. </view>
  105. <view class="time" @click="showDbTime(item2,index,i)">
  106. {{item2.startTime }} 至 {{item2.endTime}}
  107. </view>
  108. <view class="iconfont more" @click="showDbTime(item2,index,i)" >
  109. &#xe600;
  110. </view>
  111. </view>
  112. <view class="img"
  113. v-if="index==0&&weekOpenSz[i].list.length==2" >
  114. <img src="../../assets/img/add.png" alt="">
  115. </view>
  116. <view class="img"
  117. v-else-if="index==1" >
  118. <img
  119. @click="delItem(i)"
  120. src="../../assets/img/sub.png" alt="">
  121. </view>
  122. <view class="img"
  123. v-else >
  124. <img
  125. @click="addItem(i)"
  126. src="../../assets/img/add1.png" alt="">
  127. </view>
  128. </view>
  129. </view>
  130. </view>
  131. <!-- 底部 -->
  132. <view class="bottom">
  133. <view class="radio-box">
  134. <u-checkbox-group>
  135. <u-checkbox v-model="detail.changeOther" shape="circle" ></u-checkbox>
  136. </u-checkbox-group>
  137. <text class="text">将该设置同步到其他充电枪</text>
  138. </view>
  139. <u-button class="save" type="primary" @click="submit" >保存</u-button>
  140. </view>
  141. </view>
  142. </template>
  143. <script>
  144. import udoublepicker from '@/components/u-double-picker.vue'
  145. import * as API from '@/apis/finance.js'
  146. export default {
  147. components: {
  148. udoublepicker
  149. },
  150. data() {
  151. return {
  152. listmutilcolumnauto:[],
  153. list2: [{
  154. value:"1",
  155. name: "是"
  156. },
  157. {
  158. value:"0",
  159. name: "否"
  160. }
  161. ],
  162. errorlist:[],
  163. detail:{
  164. },
  165. weekSz:[
  166. '周一','周二','周三','周四',
  167. '周五','周六','周日',
  168. ],
  169. weekOpenSzData:[
  170. [{
  171. op:0,
  172. list:[]
  173. },
  174. {
  175. op:0,
  176. list:[]
  177. },
  178. {
  179. op:0,
  180. list:[]
  181. },
  182. {
  183. op:0,
  184. list:[]
  185. },
  186. {
  187. op:0,
  188. list:[]
  189. },
  190. {
  191. op:0,
  192. list:[]
  193. },
  194. {
  195. op:0,
  196. list:[]
  197. }],[
  198. {
  199. op:0,
  200. list:[]
  201. },
  202. {
  203. op:0,
  204. list:[]
  205. },
  206. {
  207. op:0,
  208. list:[]
  209. },
  210. {
  211. op:0,
  212. list:[]
  213. },
  214. {
  215. op:0,
  216. list:[]
  217. },
  218. {
  219. op:0,
  220. list:[]
  221. },
  222. {
  223. op:0,
  224. list:[]
  225. }
  226. ]
  227. ],
  228. obj1:[],
  229. obj2:[],
  230. show:false,
  231. show2:false,
  232. list: [{
  233. name: '共享设置'
  234. }, {
  235. name: '预约设置'
  236. }],
  237. shareList: [{
  238. name: '是',
  239. disabled: false
  240. },
  241. {
  242. name: '否',
  243. disabled: false
  244. }
  245. ],
  246. timeList: [
  247. {
  248. value:"10",
  249. name: "10分钟"
  250. },
  251. {
  252. value:"20",
  253. name: "20分钟"
  254. },
  255. {
  256. value:"30",
  257. name: "30分钟"
  258. }
  259. ],
  260. // u-radio-group的v-model绑定的值如果设置为某个radio的name,就会被默认选中
  261. value: '',
  262. current: 0,
  263. checked:false,
  264. defaultTime:[],
  265. defaultTime2:'',
  266. selectIndex:0,
  267. selectI:0,
  268. }
  269. },
  270. onLoad(op){
  271. this.initlistmutilcolumnauto();
  272. this.id=op.id;
  273. this.getInfo()
  274. },
  275. computed:{
  276. weekOpenSz(){
  277. return this.weekOpenSzData[this.current]
  278. }
  279. },
  280. methods: {
  281. initlistmutilcolumnauto(){
  282. function formatNumber(num) {
  283. return +num < 10 ? '0' + num : String(num);
  284. }
  285. function getSz(obj,ivalue,jvalue) {
  286. if(jvalue==0){
  287. var item={
  288. value:ivalue*100+30,
  289. label:formatNumber(ivalue)+":30",
  290. }
  291. obj.children.push(item)
  292. }
  293. for(var i=ivalue+1;i< 24;i++){
  294. for(var j=0;j< 2;j++){
  295. var item={
  296. value:i*100+j*30,
  297. label:formatNumber(i)+":"+(j==0?'00':'30'),
  298. }
  299. obj.children.push(item)
  300. }
  301. }
  302. var item={
  303. value:24*100,
  304. label:formatNumber(24)+":00",
  305. }
  306. obj.children.push(item)
  307. return obj.children;
  308. }
  309. this.listmutilcolumnauto=[]
  310. for(var i=0;i< 24;i++){
  311. for(var j=0;j< 2;j++){
  312. var obj={
  313. value:i*100+j*30,
  314. label:formatNumber(i)+":"+(j==0?'00':'30'),
  315. children:[]
  316. }
  317. obj.children=getSz(obj,i,j)
  318. this.listmutilcolumnauto.push(obj)
  319. }
  320. }
  321. console.log(this.listmutilcolumnauto);
  322. },
  323. copy(){
  324. var list= this.weekOpenSzData[1]
  325. for(var i in list){
  326. var obj1= this.weekOpenSzData[1][i]
  327. var obj0= this.weekOpenSzData[0][i]
  328. obj1.op=obj0.op;
  329. obj1.list=[];
  330. for(var j in obj0.list){
  331. var item=obj0.list[j]
  332. var newObj=Object.assign({},item)
  333. obj1.list.push(newObj);
  334. }
  335. }
  336. this.$nextTick(()=>{
  337. this.$forceUpdate()
  338. })
  339. },
  340. checkoverflow(){
  341. function getTime(time){
  342. return new Date("2020/01/01 "+time).getTime();
  343. }
  344. var step =false;
  345. this.errorlist=[];
  346. var list= this.weekOpenSzData[1]
  347. for(var i in list){
  348. //预约
  349. var obj1= this.weekOpenSzData[1][i]
  350. //开放
  351. var obj0= this.weekOpenSzData[0][i]
  352. //obj1.op=obj0.op;
  353. //obj1.list=[];
  354. if(obj1.op&&!obj0.op){
  355. this.errorlist.push({
  356. name:this.weekSz[i],
  357. value:"未开启共享"
  358. })
  359. }else if(obj1.op==0&&obj0.op==0){
  360. } else{
  361. var optionList=[];
  362. if(obj0.list.length==2){
  363. //判断是否有交集
  364. var startTime1=getTime(obj0.list[1].startTime);
  365. var endTime1=getTime(obj0.list[1].endTime);
  366. var startTime0=getTime(obj0.list[0].startTime);
  367. var endTime0=getTime(obj0.list[0].endTime);
  368. if(startTime1>=startTime0&&endTime1<=endTime0){
  369. optionList.push(obj0.list[0]);//并集
  370. obj0.lookcollect="并集"
  371. }else if(startTime1<=startTime0&&endTime1>=endTime0){
  372. optionList.push(obj0.list[1]);//并集
  373. obj0.lookcollect="并集"
  374. }
  375. else if(endTime0<startTime1&&endTime0<=endTime1){
  376. //不相交
  377. optionList=obj0.list;
  378. obj0.lookcollect="不相交"
  379. }else if(endTime1<startTime0&&endTime1<=endTime0){
  380. //不相交
  381. obj0.lookcollect="不相交"
  382. optionList=obj0.list;
  383. }else{
  384. obj0.lookcollect="交集"
  385. //交集
  386. if(startTime0<startTime1){
  387. optionList.push({
  388. startTime:obj0.list[0].startTime,
  389. endTime:obj0.list[1].endTime
  390. });
  391. }else{
  392. optionList.push({
  393. startTime:obj0.list[1].startTime,
  394. endTime:obj0.list[0].endTime
  395. });
  396. }
  397. }
  398. // if(){
  399. // optionList.push({
  400. // startTime:obj0.list[1].startTime
  401. // endTime:obj0.list[1].startTime
  402. // })
  403. // }
  404. }else{
  405. optionList=obj0.list;
  406. }
  407. for(var j in obj1.list){
  408. var item1=obj1.list[j]
  409. var bl=true;
  410. for(var k in optionList){
  411. var item2=optionList[k];
  412. var startTime1=getTime(item1.startTime);
  413. var endTime1=getTime(item1.endTime);
  414. var startTime0=getTime(item2.startTime);
  415. var endTime0=getTime(item2.endTime);
  416. if(startTime1>=startTime0&&endTime1<=endTime0){
  417. bl=false;
  418. }
  419. }
  420. if(bl){
  421. this.errorlist.push({
  422. name:this.weekSz[i],
  423. value:"不在开放时段"
  424. })
  425. }
  426. }
  427. }
  428. //this.weekOpenSzData[0][i]=obj0
  429. }
  430. if(this.errorlist.length==0){
  431. this.submitApi()
  432. }else{
  433. this.show2=true;
  434. }
  435. },
  436. submit(){
  437. this.detail.sharedWeekSetting=""
  438. this.detail.reserveWeekSetting=""
  439. var list = this.weekOpenSzData[0];
  440. var listJson=[]
  441. for(var i in list){
  442. var obj=list[i];
  443. listJson=listJson.concat(obj.list);
  444. }
  445. this.detail.sharedWeekSetting=JSON.stringify(listJson)
  446. if(this.detail.enableShare=="1"){
  447. if(listJson.length==0){
  448. uni.showToast({
  449. title:"开放共享功能需要添加【共享时段】"
  450. })
  451. return
  452. }
  453. }
  454. // var sz=[]
  455. // for(var i in this.weekList){
  456. // var item=this.weekList[i]
  457. // if(item.checked){
  458. // sz.push(item.value)
  459. // }
  460. // }
  461. // var weekDay=sz.join();
  462. var sz2=[]
  463. for(var i in this.timeList){
  464. var item=this.timeList[i]
  465. if(item.checked){
  466. sz2.push(item.value)
  467. }
  468. }
  469. var reserveMinutes=sz2.join();
  470. this.detail.reserveMinutes=reserveMinutes
  471. var list = this.weekOpenSzData[1];
  472. var listJson=[]
  473. for(var i in list){
  474. var obj=list[i];
  475. listJson=listJson.concat(obj.list);
  476. }
  477. this.detail.reserveWeekSetting=JSON.stringify(listJson)
  478. if(this.detail.enableAppointment=="1"){
  479. if(listJson.length==0){
  480. uni.showToast({
  481. title:"开放预约功能需要添加【预约时段】"
  482. })
  483. return
  484. }
  485. if(reserveMinutes==""){
  486. uni.showToast({
  487. title:"开放预约功能需要选择【预留时长】"
  488. })
  489. return
  490. }
  491. this.checkoverflow()
  492. }else{
  493. this.submitApi()
  494. }
  495. },
  496. submitApi(){
  497. uni.showLoading({
  498. title:"加载中",mask:true,
  499. })
  500. API.saveGunShare(this.detail).then((res) => {
  501. uni.hideLoading()
  502. uni.showToast({
  503. title:"操作成功"
  504. })
  505. }).catch(error => {
  506. uni.showToast({
  507. title:error
  508. })
  509. })
  510. },
  511. getInfo(){
  512. uni.showLoading({
  513. title:"加载中",mask:true,
  514. })
  515. API.gunShareDetail({
  516. gunId:this.id
  517. }).then((res) => {
  518. this.detail={};
  519. this.detail.sharedSettingList=res.data.sharedSettingList
  520. this.detail.reserveSettingList=res.data.reserveSettingList
  521. var obj=res.data.gunShare;
  522. for(var i in obj){
  523. if(obj[i]===true){
  524. this.detail[i]="1";
  525. }else if(obj===false){
  526. this.detail[i]="0";
  527. }else {
  528. this.detail[i]=obj[i];
  529. }
  530. }
  531. if(this.detail.reserveMinutes){
  532. var sz=this.detail.reserveMinutes.split(",")
  533. for(var i in this.timeList){
  534. var item=this.timeList[i]
  535. if(sz.indexOf(item.value)!=-1){
  536. item.checked=true;
  537. }
  538. }
  539. }
  540. if(this.detail.sharedSettingList.length){
  541. var list=this.detail.sharedSettingList;
  542. var weekOpenSzDataList=this.weekOpenSzData[0]
  543. for(var i in list){
  544. var obj={
  545. weekDay:list[i].weekDay,
  546. startTime:list[i].startTime,
  547. endTime:list[i].endTime
  548. }
  549. weekOpenSzDataList[parseInt(list[i].weekDay)-1].op=1;
  550. weekOpenSzDataList[parseInt(list[i].weekDay)-1].list.push(obj)
  551. }
  552. }
  553. if(this.detail.reserveSettingList.length){
  554. var list=this.detail.reserveSettingList;
  555. var weekOpenSzDataList=this.weekOpenSzData[1]
  556. for(var i in list){
  557. var obj={
  558. weekDay:list[i].weekDay,
  559. startTime:list[i].startTime,
  560. endTime:list[i].endTime
  561. }
  562. weekOpenSzDataList[parseInt(list[i].weekDay)-1].op=1;
  563. weekOpenSzDataList[parseInt(list[i].weekDay)-1].list.push(obj)
  564. }
  565. }
  566. uni.hideLoading()
  567. }).catch(error => {
  568. uni.showToast({
  569. title:error
  570. })
  571. })
  572. },
  573. checkboxChange(item,e){
  574. item.checked=e.value
  575. this.$forceUpdate()
  576. console.log(e)
  577. },
  578. confirm(e){
  579. console.log(e)
  580. var obj=this.weekOpenSz[this.selectI].list[this.selectIndex];
  581. obj.startTime=e[0].label;
  582. obj.endTime=e[1].label;
  583. },
  584. showDbTime(item,index,i){
  585. this.show=true;
  586. var sz=[];
  587. for(var i in this.listmutilcolumnauto){
  588. var obj=this.listmutilcolumnauto[i]
  589. if(obj.label==item.startTime){
  590. sz.push(parseInt(i))
  591. for(var j in obj.children){
  592. var ob=obj.children[j]
  593. if(ob.label==item.endTime){
  594. sz.push(parseInt(j))
  595. }
  596. }
  597. }
  598. }
  599. this.defaultTime=sz;
  600. console.log(sz)
  601. },
  602. change(index) {
  603. this.current = index;
  604. },
  605. change2(index,szindex) {
  606. if(index){
  607. if(this.weekOpenSz[szindex].list.length==0){
  608. this.weekOpenSz[szindex].list.push({
  609. weekDay:szindex+1,
  610. startTime:'00:00',
  611. endTime:'08:00'
  612. })
  613. }
  614. }else{
  615. this.weekOpenSz[szindex].list=[]
  616. }
  617. },
  618. addItem(szindex){
  619. this.weekOpenSz[szindex].list.push({
  620. weekDay:szindex+1,
  621. startTime:'20:00',
  622. endTime:'24:00'
  623. })
  624. },
  625. delItem(szindex){
  626. this.weekOpenSz[szindex].list.pop()
  627. }
  628. }
  629. }
  630. </script>
  631. <style lang="scss" scoped>
  632. page {
  633. background-color: #f3f4f7;
  634. padding-bottom: 147px;
  635. }
  636. /deep/.u-tabs-scorll-flex {
  637. width: 56.2%;
  638. margin: 0 auto;
  639. }
  640. /deep/.u-tab-bar {
  641. background-color: #0076ff !important;
  642. width: 28% !important;
  643. left: -19px;
  644. bottom: -3px;
  645. }
  646. // 开发共享
  647. .share-set{
  648. width: 100%;
  649. background-color: #fff;
  650. display: flex;
  651. padding: 8px 16px;
  652. .title{
  653. width: 28%;
  654. margin-right: 41px;
  655. line-height: 27px;
  656. }
  657. /deep/.u-radio{
  658. margin-right: 20px
  659. }
  660. border-top: 1px solid rgba(242, 242, 242, 100);
  661. border-bottom: 1px solid rgba(242, 242, 242, 100);
  662. }
  663. // 每周开放时间段设置
  664. .main{
  665. .title{
  666. line-height: 16px;
  667. color: rgba(16, 16, 16, 100);
  668. font-size: 16px;
  669. padding: 12px 16px;
  670. }
  671. .item{
  672. width: 91.4%;
  673. padding: 16px;
  674. line-height: 20px;
  675. border-radius: 8px;
  676. background-color: rgba(255, 255, 255, 100);
  677. color: rgba(16, 16, 16, 100);
  678. font-size: 14px;
  679. text-align: center;
  680. margin: 0 auto 12px;
  681. .switch{
  682. display: flex;
  683. justify-content: space-between;
  684. height: 42px;
  685. border-bottom: 1px solid rgba(229, 231, 234, 100);
  686. }
  687. .frame-box{
  688. display: flex;
  689. justify-content: space-between;
  690. }
  691. .time-frame{
  692. padding-top: 11px;
  693. display: flex;
  694. justify-content: start;
  695. .time{
  696. margin-left: 25px;
  697. }
  698. .more{
  699. margin-left: 8px;
  700. color: #b3b3b3;
  701. font-size: 24px
  702. }
  703. }
  704. .img{
  705. width: 24px;
  706. height: 24px;
  707. img{
  708. margin-top: 10px;
  709. width: 100%;
  710. height: 100%;
  711. }
  712. }
  713. }
  714. }
  715. // 预约时长选项
  716. .time-options{
  717. width: 100%;
  718. padding: 14px 0 14px 16px;
  719. background-color: #fff;
  720. .radio-box{
  721. margin-top: 12px;
  722. /deep/.u-checkbox-group {
  723. width: 100%;
  724. display: flex;
  725. justify-content: space-between;
  726. }
  727. }
  728. }
  729. // 底部
  730. .bottom{
  731. width: 100%;
  732. padding: 12px 16px ;
  733. background-color: #fff;
  734. position: fixed;
  735. bottom: 0;
  736. left: 0;
  737. z-index: 9999;
  738. .radio-box{
  739. height: 16px;
  740. margin-bottom: 10px;
  741. /deep/.uni-radio-input{
  742. width: 14px;
  743. height: 14px;
  744. }
  745. }
  746. .save{
  747. line-height: 40px;
  748. border-radius: 50px;
  749. background-color: rgba(24, 90, 198, 100);
  750. color: rgba(255, 255, 255, 100);
  751. font-size: 18px;
  752. text-align: center;
  753. }
  754. }
  755. </style>