血透系统pad前端

WaitingArea.vue 22KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733
  1. <template>
  2. <div>
  3. <div v-loading="loading">
  4. <div class="screening">
  5. <!--<div @click="reloads()">刷新</div>-->
  6. <ul>
  7. <li
  8. v-for="(item, i) in menuList"
  9. :class="select_index == i ? 'active' : ''"
  10. @click="menuTabClick(i)"
  11. :key="i"
  12. >
  13. {{ item.label + (item.count > 0 ? "(" + item.count + ")" : "") }}
  14. </li>
  15. <el-popover
  16. v-model="zone_options_visible"
  17. placement="bottom"
  18. trigger="click"
  19. >
  20. <li slot="reference">
  21. {{ zone_options[zone_selected].text }}
  22. <span class="iconfont">&#xe74a;</span>
  23. </li>
  24. <div class="popover-demo-content">
  25. <ul>
  26. <li
  27. v-for="(option, index) in zone_options"
  28. :key="index"
  29. @click="handleZoneChange(index, option)"
  30. :class="zone_selected == index ? 'tick' : ''"
  31. >
  32. {{ option.text }}
  33. </li>
  34. </ul>
  35. </div>
  36. </el-popover>
  37. <el-popover
  38. v-model="time_options_visible"
  39. placement="bottom"
  40. trigger="click"
  41. >
  42. <li slot="reference">
  43. {{ time_options[time_selected].text }}
  44. <span class="iconfont">&#xe74a;</span>
  45. </li>
  46. <div class="popover-demo-content">
  47. <ul>
  48. <li
  49. v-for="(option, index) in time_options"
  50. :key="index"
  51. @click="handleTimeChange(index)"
  52. :class="time_selected == index ? 'tick' : ''"
  53. >
  54. {{ option.text }}
  55. </li>
  56. </ul>
  57. </div>
  58. </el-popover>
  59. </ul>
  60. </div>
  61. <div class="stateBox">
  62. <!-- <patient-box class="clearfix" :patients="filtedScheduals "></patient-box> -->
  63. <div v-for="(item, index) in filtedScheduals" :key="index">
  64. <h2 class="title">{{ item.zone_name }}</h2>
  65. <patient-box
  66. class="clearfix"
  67. :patients="item.scheduals"
  68. ></patient-box>
  69. </div>
  70. <div class="NoData" v-if="filtedScheduals.length == 0 && networkStates">
  71. <img
  72. style="margin-top: 50px; margin-bottom: 50px"
  73. src="@/assets/login/data.jpg"
  74. alt
  75. />
  76. </div>
  77. <div
  78. class="NoData"
  79. v-if="!networkStates"
  80. style="display: block;text-align: center;"
  81. >
  82. <!--<img style="margin-top: 50px; margin-bottom: 50px" src="@/assets/login/no_network.jpg" alt="">-->
  83. <p style="margin-top: 100px;font-size: 18px">
  84. 网络异常,请点击重新加载
  85. </p>
  86. <van-button
  87. slot="button"
  88. size="normal"
  89. type="info"
  90. style="display:block;margin:0 auto"
  91. @click="reloads()"
  92. >重新加载</van-button
  93. >
  94. </div>
  95. </div>
  96. </div>
  97. </div>
  98. </template>
  99. <script>
  100. import PatientBox from './PatientBox'
  101. import { getWaitingScheduals } from '@/api/dialysis'
  102. import { parseTime } from '@/utils'
  103. import { Popover } from 'vux'
  104. import { Toast } from 'vant'
  105. import {
  106. getSelectedAreaDataConfigList,
  107. getSelectedTimesDataConfigList,
  108. setSelectedAreaDataConfigList,
  109. setSelectedTimesDataConfigList,
  110. setWaitTypeSelectedConfig,
  111. getWaitTypeSelectedConfig
  112. } from '@/utils/data_config'
  113. export default {
  114. name: 'WaitingArea',
  115. components: {
  116. PatientBox,
  117. Popover
  118. },
  119. inject: ['reload'],
  120. data () {
  121. return {
  122. loading: false,
  123. menuList: [
  124. { value: '1', label: '全部', count: 0 },
  125. { value: '3', label: '待开处方', count: 0 },
  126. { value: '2', label: '待称重', count: 0 }
  127. ],
  128. select_index: 0,
  129. zone_selected: 0,
  130. time_selected: 0,
  131. cur_zone_selected: 0,
  132. networkStates: true,
  133. scheduals: [],
  134. timer:null,
  135. zone_options: [{ value: 0, text: '全部分区' }],
  136. zone_scheduals: [],
  137. time_options: [
  138. { value: 0, text: '全部班' },
  139. { value: 1, text: '上午' },
  140. { value: 2, text: '下午' },
  141. { value: 3, text: '晚上' }
  142. ],
  143. zone_options_visible: false,
  144. time_options_visible: false
  145. }
  146. },
  147. props: {
  148. search_keyword: {
  149. type: String
  150. }
  151. },
  152. computed: {
  153. filtedScheduals: function () {
  154. var search_keyword = this.search_keyword
  155. if (this.search_keyword.length > 0) {
  156. var scheduals = []
  157. for (let index = 0; index < this.scheduals.length; index++) {
  158. const schedual = this.scheduals[index]
  159. if ( schedual.patient.name.indexOf(search_keyword) != -1) {
  160. scheduals.push(schedual)
  161. }
  162. }
  163. return this.processScheduals(scheduals)
  164. }
  165. //
  166. if (this.zone_selected != 0) {
  167. // var zone_name = this.zone_options[this.zone_selected].text
  168. // for (let index = 0; index < this.zone_scheduals.length; index++) {
  169. // const zone_scheduals = this.zone_scheduals[index]
  170. // if (zone_scheduals.zone_name == zone_name) {
  171. // return [zone_scheduals]
  172. // }
  173. // }
  174. var zone_name = this.zone_options[this.zone_selected].text
  175. var schedules = []
  176. var filtedSchedules = []
  177. for (let o_i = 0; o_i < this.zone_scheduals.length; o_i++) {
  178. const scheduleInfo = this.zone_scheduals[o_i]
  179. var originSchedules = scheduleInfo.scheduals
  180. for (let s_i = 0; s_i < originSchedules.length; s_i++) {
  181. const schedule = originSchedules[s_i]
  182. if (this.zone_selected == 0) {
  183. if (
  184. this.time_selected == 0 ||
  185. schedule.schedule_type == this.time_selected
  186. ) {
  187. filtedSchedules.push(schedule)
  188. }
  189. } else {
  190. if (
  191. zone_name.length > 0 &&
  192. zone_name == schedule.device_number.zone.name
  193. ) {
  194. if (
  195. this.time_selected == 0 ||
  196. schedule.schedule_type == this.time_selected
  197. ) {
  198. filtedSchedules.push(schedule)
  199. }
  200. }
  201. }
  202. }
  203. // if (filtedSchedules.length > 0) {
  204. // schedules.push({
  205. // zone_name: scheduleInfo.zone_name,
  206. // scheduals: filtedSchedules
  207. // });
  208. // }
  209. }
  210. console.log(filtedSchedules)
  211. return this.processScheduals(filtedSchedules)
  212. }
  213. if (this.time_selected != 0) {
  214. var zone_name = this.zone_options[this.zone_selected].text
  215. var schedules = []
  216. var filtedSchedules = []
  217. for (let o_i = 0; o_i < this.zone_scheduals.length; o_i++) {
  218. const scheduleInfo = this.zone_scheduals[o_i]
  219. var originSchedules = scheduleInfo.scheduals
  220. for (let s_i = 0; s_i < originSchedules.length; s_i++) {
  221. const schedule = originSchedules[s_i]
  222. if (this.zone_selected == 0) {
  223. if (
  224. this.time_selected == 0 ||
  225. schedule.schedule_type == this.time_selected
  226. ) {
  227. filtedSchedules.push(schedule)
  228. }
  229. } else {
  230. if (
  231. zone_name.length > 0 &&
  232. zone_name == schedule.device_number.zone.name
  233. ) {
  234. if (
  235. this.time_selected == 0 ||
  236. schedule.schedule_type == this.time_selected
  237. ) {
  238. filtedSchedules.push(schedule)
  239. }
  240. }
  241. }
  242. }
  243. // if (filtedSchedules.length > 0) {
  244. // schedules.push({
  245. // zone_name: scheduleInfo.zone_name,
  246. // scheduals: filtedSchedules
  247. // });
  248. // }
  249. }
  250. console.log(filtedSchedules)
  251. return this.processScheduals(filtedSchedules)
  252. }
  253. var zone_selected = this.zone_selected
  254. var timetype_selected = this.time_selected
  255. var assessment_before_dislysis_count = 0
  256. var prescription_count = 0
  257. if (zone_selected != 0 || timetype_selected != 0) {
  258. var zone_name =
  259. zone_selected == 0 ? '' : this.zone_options[zone_selected].text
  260. var schedules = []
  261. var filtedSchedules = []
  262. for (let o_i = 0; o_i < this.zone_scheduals.length; o_i++) {
  263. const scheduleInfo = this.zone_scheduals[o_i]
  264. var originSchedules = scheduleInfo.scheduals
  265. for (let s_i = 0; s_i < originSchedules.length; s_i++) {
  266. const schedule = originSchedules[s_i]
  267. if (
  268. zone_name.length == 0 ||
  269. (zone_name.length > 0 &&
  270. zone_name == schedule.device_number.zone.name)
  271. ) {
  272. if (
  273. timetype_selected == 0 ||
  274. schedule.schedule_type == timetype_selected
  275. ) {
  276. filtedSchedules.push(schedule)
  277. }
  278. }
  279. }
  280. // if (filtedSchedules.length > 0) {
  281. // schedules.push({
  282. // zone_name: scheduleInfo.zone_name,
  283. // scheduals: filtedSchedules
  284. // });
  285. // }
  286. }
  287. console.log(filtedSchedules)
  288. return this.processScheduals(filtedSchedules)
  289. // eslint-disable-next-line no-unreachable
  290. if (this.select_index == 2) {
  291. var scheduals = []
  292. for (let index = 0; index < this.scheduals.length; index++) {
  293. const schedual = this.scheduals[index]
  294. if (
  295. schedual.assessment_before_dislysis == null ||
  296. schedual.assessment_before_dislysis.weight_before == 0
  297. ) {
  298. if (
  299. this.cur_zone_selected > 0 &&
  300. schedual.device_number.zone.id != this.cur_zone_selected
  301. ) {
  302. continue
  303. }
  304. if (
  305. timetype_selected > 0 &&
  306. schedual.schedule_type != timetype_selected
  307. ) {
  308. continue
  309. }
  310. scheduals.push(schedual)
  311. }
  312. }
  313. return this.processScheduals(scheduals)
  314. // return scheduals;
  315. } else if (this.select_index == 1) {
  316. var scheduals = []
  317. for (let index = 0; index < this.scheduals.length; index++) {
  318. const schedual = this.scheduals[index]
  319. if (
  320. schedual.prescription == null ||
  321. schedual.prescription.creater == 0
  322. ) {
  323. if (
  324. this.cur_zone_selected > 0 &&
  325. schedual.device_number.zone.id != this.cur_zone_selected
  326. ) {
  327. continue
  328. }
  329. if (
  330. timetype_selected > 0 &&
  331. schedual.schedule_type != timetype_selected
  332. ) {
  333. continue
  334. }
  335. scheduals.push(schedual)
  336. }
  337. }
  338. // return scheduals;
  339. return this.processScheduals(scheduals)
  340. } else {
  341. // return this.zone_scheduals;
  342. var scheduals = []
  343. for (let index = 0; index < this.scheduals.length; index++) {
  344. const schedual = this.scheduals[index]
  345. if (schedual.dialysis_order == null) {
  346. if (
  347. this.cur_zone_selected > 0 &&
  348. schedual.device_number.zone.id != this.cur_zone_selected
  349. ) {
  350. continue
  351. }
  352. if (
  353. timetype_selected > 0 &&
  354. schedual.schedule_type != timetype_selected
  355. ) {
  356. continue
  357. }
  358. scheduals.push(schedual)
  359. }
  360. }
  361. // return scheduals;
  362. return this.processScheduals(scheduals)
  363. }
  364. }
  365. if (this.select_index == 2) {
  366. var scheduals = []
  367. for (let index = 0; index < this.scheduals.length; index++) {
  368. const schedual = this.scheduals[index]
  369. if (
  370. schedual.assessment_before_dislysis == null ||
  371. schedual.assessment_before_dislysis.weight_before == 0
  372. ) {
  373. scheduals.push(schedual)
  374. }
  375. }
  376. return this.processScheduals(scheduals)
  377. // return scheduals;
  378. } else if (this.select_index == 1) {
  379. var scheduals = []
  380. for (let index = 0; index < this.scheduals.length; index++) {
  381. const schedual = this.scheduals[index]
  382. if (
  383. schedual.prescription == null ||
  384. schedual.prescription.creater == 0
  385. ) {
  386. scheduals.push(schedual)
  387. }
  388. }
  389. // return scheduals;
  390. return this.processScheduals(scheduals)
  391. } else {
  392. // return this.zone_scheduals;
  393. var scheduals = []
  394. for (let index = 0; index < this.scheduals.length; index++) {
  395. const schedual = this.scheduals[index]
  396. if (schedual.dialysis_order == null) {
  397. scheduals.push(schedual)
  398. }
  399. }
  400. // return scheduals;
  401. return this.processScheduals(scheduals)
  402. }
  403. }
  404. },
  405. created () {
  406. var area = getSelectedAreaDataConfigList()
  407. var time = getSelectedTimesDataConfigList()
  408. var type = getWaitTypeSelectedConfig()
  409. if (area != null) {
  410. this.zone_options_visible = false
  411. this.zone_selected = parseInt(area)
  412. this.select_index = -1
  413. }
  414. if (time != null) {
  415. this.time_selected = parseInt(time)
  416. this.select_index = -1
  417. this.time_options_visible = false
  418. }
  419. if (type != null) {
  420. this.select_index = parseInt(type)
  421. }
  422. var storedata = this.$store.getters.waitscheduals
  423. var scheduals = storedata.waitscheduals
  424. if (Object.keys(storedata).length > 0) {
  425. var totalCount = scheduals.length
  426. var prescription_count = 0
  427. var assessment_before_dislysis_count = 0
  428. for (let index = 0; index < scheduals.length; index++) {
  429. const schedual = scheduals[index]
  430. if (schedual.assessment_before_dislysis == null) {
  431. assessment_before_dislysis_count += 1
  432. }
  433. if (schedual.prescription == null) {
  434. prescription_count += 1
  435. }
  436. }
  437. this.menuList[2].count = assessment_before_dislysis_count
  438. this.menuList[1].count = prescription_count
  439. this.scheduals = scheduals
  440. this.zone_options = this.makeZones(scheduals)
  441. this.zone_scheduals = this.processScheduals(scheduals)
  442. }
  443. // else {
  444. // this.requestScheduals()
  445. // }
  446. },
  447. mounted () {
  448. // this.timer = window.setInterval(() => {
  449. // setTimeout(this.requestScheduals(), 0)
  450. // }, 120000)
  451. },
  452. beforeDestroy () {
  453. clearInterval(this.timer)
  454. this.timer = null
  455. this.$once('hook:beforeDestroy', () => {
  456. clearInterval(this.timer)
  457. })
  458. },
  459. methods: {
  460. processScheduals: function (scheduals) {
  461. var zoneMap = {}
  462. var schedualMap = {}
  463. var assessment_before_dislysis_count = 0
  464. var prescription_count = 0
  465. for (let index = 0; index < scheduals.length; index++) {
  466. const schedual = scheduals[index]
  467. if (schedualMap[schedual.device_number.zone.id] == null) {
  468. schedualMap[schedual.device_number.zone.id] = []
  469. }
  470. if (this.select_index == 1) {
  471. if (
  472. schedual.prescription == null ||
  473. schedual.prescription.creater == 0
  474. ) {
  475. schedualMap[schedual.device_number.zone.id].push(schedual)
  476. prescription_count++
  477. }
  478. } else if (this.select_index == 2) {
  479. if (
  480. schedual.assessment_before_dislysis == null ||
  481. schedual.assessment_before_dislysis.weight_before == 0
  482. ) {
  483. schedualMap[schedual.device_number.zone.id].push(schedual)
  484. assessment_before_dislysis_count++
  485. }
  486. } else {
  487. if (schedual.dialysis_order == null) {
  488. schedualMap[schedual.device_number.zone.id].push(schedual)
  489. }
  490. }
  491. if (zoneMap[schedual.device_number.zone.id] == null) {
  492. zoneMap[schedual.device_number.zone.id] = schedual.device_number.zone
  493. }
  494. }
  495. if (this.select_index == 1) {
  496. this.menuList[1].count = prescription_count
  497. }
  498. if (this.select_index == 2) {
  499. this.menuList[2].count = assessment_before_dislysis_count
  500. }
  501. var zones = []
  502. // zones.push({ value: 0, text: "全部分区" })
  503. for (var zoneId in zoneMap) {
  504. zones.push({ id: zoneMap[zoneId].id, name: zoneMap[zoneId].name })
  505. }
  506. zones = zones.sort(function (a, b) {
  507. return a.id > b.id
  508. })
  509. // this.zones = zones
  510. var zone_scheduals = []
  511. for (let index = 0; index < zones.length; index++) {
  512. const zone = zones[index]
  513. var scheduals = schedualMap[zone.id]
  514. zone_scheduals.push({
  515. zone_id: zone.id,
  516. zone_name: zone.name,
  517. scheduals: scheduals
  518. })
  519. }
  520. // this.zone_scheduals = zone_scheduals;
  521. return zone_scheduals
  522. },
  523. reloads: function () {
  524. this.reload()
  525. },
  526. handleAllChange: function (tabIndex) {
  527. this.select_index = tabIndex
  528. this.zone_selected = 0
  529. this.time_selected = 0
  530. },
  531. menuTabClick: function (tabIndex) {
  532. this.select_index = tabIndex
  533. this.zone_selected = 0
  534. this.time_selected = 0
  535. setSelectedAreaDataConfigList(this.zone_selected)
  536. setSelectedTimesDataConfigList(this.time_selected)
  537. setWaitTypeSelectedConfig(tabIndex)
  538. },
  539. handleZoneChange: function (index, zone) {
  540. this.zone_options_visible = false
  541. this.zone_selected = index
  542. this.cur_zone_selected = zone.value
  543. // this.select_index = -1;
  544. setSelectedAreaDataConfigList(index.toString())
  545. },
  546. handleTimeChange: function (index) {
  547. this.time_selected = index
  548. // this.select_index = -1;
  549. this.time_options_visible = false
  550. setSelectedTimesDataConfigList(index.toString())
  551. },
  552. requestScheduals: function () {
  553. // this.loading = true;
  554. // var date = parseTime(Date.parse(new Date()), '{y}-{m}-{d}')
  555. // getWaitingScheduals({ date: date }).then(rs => {
  556. // var resp = rs.data
  557. // if (resp.state == 1) {
  558. this.loading = false
  559. var storedata = this.$store.getters.waitscheduals
  560. var scheduals = storedata.waitscheduals
  561. // var scheduals = resp.data.scheduals
  562. // this.$store.dispatch('SetWaitScheduals', {
  563. // waitscheduals: scheduals
  564. // })
  565. var totalCount = scheduals.length
  566. var prescription_count = 0
  567. var assessment_before_dislysis_count = 0
  568. for (let index = 0; index < scheduals.length; index++) {
  569. const schedual = scheduals[index]
  570. if (schedual.assessment_before_dislysis == null) {
  571. assessment_before_dislysis_count += 1
  572. }
  573. if (schedual.prescription == null) {
  574. prescription_count += 1
  575. }
  576. }
  577. this.menuList[2].count = assessment_before_dislysis_count
  578. this.menuList[1].count = prescription_count
  579. this.scheduals = scheduals
  580. this.zone_options = this.makeZones(scheduals)
  581. this.zone_scheduals = this.processScheduals(scheduals)
  582. // } else {
  583. // this.loading = false
  584. // this.$toast({
  585. // message: resp.msg
  586. // })
  587. // }
  588. // }).catch(error => {
  589. // this.loading = false
  590. // // 超时之后在这里捕抓错误信息.
  591. // if (error.response) {
  592. // this.networkStates = false
  593. // } else if (error.request) {
  594. // this.networkStates = false
  595. // // if(error.request.readyState == 4 && error.request.status == 0){
  596. // // //我在这里重新请求
  597. // // this.networkStates = false
  598. // // }
  599. // } else {
  600. // this.networkStates = false
  601. // }
  602. // })
  603. },
  604. makeZones: function (scheduals) {
  605. var zoneMap = {}
  606. for (let index = 0; index < scheduals.length; index++) {
  607. const schedual = scheduals[index]
  608. if (zoneMap[schedual.device_number.zone.id] == null) {
  609. zoneMap[schedual.device_number.zone.id] = schedual.device_number.zone
  610. }
  611. }
  612. var zones = []
  613. zones.push({ value: 0, text: '全部分区' })
  614. for (var zoneId in zoneMap) {
  615. zones.push({ value: zoneMap[zoneId].id, text: zoneMap[zoneId].name })
  616. }
  617. // zones = zones.sort(function (a, b) {
  618. // return a.value > b.value
  619. // })
  620. return zones
  621. }
  622. }
  623. }
  624. </script>
  625. <style style="stylesheet/scss" lang="scss" scoped>
  626. .screening {
  627. border-bottom: 1px #e5e5e5 solid;
  628. position: fixed;
  629. top: 100px;
  630. @media only screen and (min-width: 768px) {
  631. top: 163px;
  632. }
  633. @media only screen and (min-width: 415px) and (max-width: 767px) {
  634. top: 134px;
  635. }
  636. right: 0;
  637. z-index: 66;
  638. left: 0;
  639. background: #fff;
  640. // @media only screen and (max-width: 812px) {
  641. // top: 50px !important;
  642. // }
  643. ul {
  644. @include display-flex;
  645. @include align-items-center;
  646. @include text-align;
  647. @include justify-content-between;
  648. width: 96%;
  649. margin: 0 auto;
  650. font-size: 0.45rem;
  651. color: $title-color;
  652. li {
  653. padding: 0.3rem 0;
  654. .iconfont {
  655. font-size: 0.45rem;
  656. margin-left: 0.1rem;
  657. }
  658. }
  659. .active {
  660. position: relative;
  661. &::before {
  662. position: absolute;
  663. bottom: 0;
  664. left: 0;
  665. width: 100%;
  666. height: 2px;
  667. background: $main-color;
  668. // border-bottom: 0.04rem $main-color solid;
  669. content: "";
  670. }
  671. }
  672. }
  673. }
  674. .stateBox {
  675. // padding: 0.5rem 0 0 0.6rem;
  676. .title {
  677. font-size: 0.34rem;
  678. color: #34495e;
  679. font-weight: 600;
  680. height: 1rem;
  681. line-height: 1rem;
  682. display: inline-block;
  683. }
  684. }
  685. .shadow {
  686. width: 100%;
  687. height: 100%;
  688. position: absolute;
  689. left: 0;
  690. top: 0;
  691. z-index: 998;
  692. background-color: #000;
  693. opacity: 0.6;
  694. display: none;
  695. }
  696. </style>