reviewWork.vue 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762
  1. <template>
  2. <div class="work-wrap">
  3. <custom-header name="农事成效"></custom-header>
  4. <div class="work-content recheck-title" v-loading="loading">
  5. <div class="tabs-content-item">
  6. <div class="common-card-title">
  7. <img class="icon" src="@/assets/img/home/label-icon.png" alt="" />
  8. <span>农事信息</span>
  9. </div>
  10. <div class="info-box">
  11. <div class="info-l">
  12. <img class="farm-img" src="@/assets/img/gallery/farm-img.png" alt="" />
  13. </div>
  14. <div class="info-r">
  15. <div class="farm-name">{{ workItem.farmName }}</div>
  16. <div class="info-item">
  17. <div class="info-name">农事名称:</div>
  18. <div class="info-value">{{ workItem.farmWorkName }} ({{ workItem.executeDate }})</div>
  19. </div>
  20. <div class="info-item">
  21. <div class="info-name">农事目的:</div>
  22. <div class="info-value">{{ workItem.farmWorkTypeName || workItem.condition }}</div>
  23. </div>
  24. <div class="info-item">
  25. <div class="info-name">肥药处方:</div>
  26. <div class="info-value">
  27. <div class="rescription" v-if="workItem?.prescriptionList">
  28. <span
  29. v-for="(fertilizer, fertilizerI) in workItem.prescriptionList"
  30. :key="fertilizerI"
  31. >
  32. <span
  33. v-for="(pest, pestI) in fertilizer.pesticideFertilizerList"
  34. :key="'sub' + pestI"
  35. >
  36. {{ pest.defaultName }}
  37. <span
  38. v-if="
  39. pestI !== fertilizer.pesticideFertilizerList.length - 1 ||
  40. fertilizerI !== workItem.prescriptionList.length - 1
  41. "
  42. >
  43. +
  44. </span>
  45. </span>
  46. </span>
  47. </div>
  48. </div>
  49. </div>
  50. </div>
  51. </div>
  52. <div class="info-box subject-content">
  53. <div class="subject-box">
  54. <div class="subject-item cost-l">
  55. <img class="subject-img" src="@/assets/img/gallery/capital.png" alt="" />
  56. <div class="subject-tag">
  57. {{ workItem.executeMain }}
  58. <el-icon class="right-icon" size="10"><ArrowRight /></el-icon>
  59. </div>
  60. </div>
  61. <div class="subject-item cost-l">
  62. <img class="subject-img" src="@/assets/img/gallery/capital.png" alt="" />
  63. <div class="subject-tag">
  64. {{ workItem.serviceMain }}
  65. <el-icon class="right-icon" size="10"><ArrowRight /></el-icon>
  66. </div>
  67. </div>
  68. <div class="subject-item">
  69. <img class="subject-img" :src="workItem.expertIcon" alt="" />
  70. <div class="subject-tag">
  71. {{ workItem.expertName }}
  72. <el-icon class="right-icon" size="10"><ArrowRight /></el-icon>
  73. </div>
  74. </div>
  75. </div>
  76. </div>
  77. </div>
  78. <div class="tabs-content-item">
  79. <div class="common-card-title">
  80. <img class="icon" src="@/assets/img/home/label-icon.png" alt="" />
  81. <span>复核成效</span>
  82. </div>
  83. <div class="info-box bottom-box">
  84. <div class="result-box">
  85. <div class="result-text" v-if="workItem.reviewImage && workItem.reviewImage.length">
  86. 促进分蘖芽萌发、加快分蘖生长,同时补充氮素等关键养分,增强植株长势,为形成足够穗数、提高群体产量打基础。
  87. <!-- 通过精准农业技术的应用,作物产量实现了两位数的增长,病虫害的发生率大幅下降,土壤肥力的提升 -->
  88. </div>
  89. <div class="result-text time-text" v-else>
  90. 请抓紧时间上传照片!系统为您生成农事成效分析!
  91. <!-- 距离农事执行已 15 天,请抓紧时间上传照片!系统为您生成农事成效分析! -->
  92. </div>
  93. </div>
  94. <div class="recheck-box">
  95. <div class="recheck-ablum">
  96. <div class="img-list over-img-box">
  97. <album-carousel :key="1" labelText="农事前" :images="triggerImg"></album-carousel>
  98. </div>
  99. <div class="img-list over-img-box" v-if="workItem.reviewImage && workItem.reviewImage.length">
  100. <album-carousel :key="2" labelText="农事后" :images="workItem.reviewImage"></album-carousel>
  101. </div>
  102. <div class="img-list" v-else>
  103. <div
  104. class="recheck-text-wrap no-events"
  105. :class="{
  106. active: !diffInDays(workItem.reviewDate) > 0 && curRole === '0',
  107. 'yse-events': curRole === '0' && !diffInDays(workItem.reviewDate) > 0,
  108. 'center-wrap': !imageArr.length,
  109. }"
  110. >
  111. <div class="date" v-show="workItem.reviewDate">{{ workItem.reviewDate }}</div>
  112. <upload
  113. exampleImg
  114. @handleUpload="handleUpload"
  115. class="upload-wrap"
  116. :style="{
  117. height:
  118. imageArr.length && !diffInDays(workItem.reviewDate) > 0
  119. ? 'auto'
  120. : '254px',
  121. }"
  122. >
  123. <template
  124. v-if="
  125. diffInDays(workItem.reviewDate) == 0 ||
  126. diffInDays(workItem.reviewDate) == null
  127. "
  128. >
  129. <img
  130. class="img-icon"
  131. :src="
  132. require(`@/assets/img/gallery/img-icon${
  133. curRole === '0' ? '-act' : ''
  134. }.png`)
  135. "
  136. alt=""
  137. />
  138. <div class="recheck-text">
  139. {{ curRole === "2" ? "等待农户上传" : "点击上传照片" }}
  140. </div>
  141. <div
  142. class="recheck-desc"
  143. v-show="curRole === '2' && diffInDays(workItem.reviewDate) != 0"
  144. >
  145. <!-- (已逾期{{ diffInDays(workItem.reviewDate, "add") }}天) -->
  146. </div>
  147. </template>
  148. <template v-else>
  149. <img class="img-icon" src="@/assets/img/gallery/img-icon.png" alt="" />
  150. <div class="recheck-text">等待复核</div>
  151. <div class="recheck-desc" v-show="diffInDays(workItem.reviewDate) >= 0">
  152. (剩余{{ diffInDays(workItem.reviewDate) }}天)
  153. </div>
  154. </template>
  155. </upload>
  156. <div
  157. class="submit"
  158. v-show="imageArr.length && !diffInDays(workItem.reviewDate) > 0"
  159. @click="handleSubmit('reviewImage2')"
  160. >
  161. 确认上传
  162. </div>
  163. </div>
  164. </div>
  165. <!-- <div class="img-list" v-else>
  166. <div
  167. class="recheck-text-wrap no-events"
  168. :class="{
  169. active: !diffInDays(workItem.reviewDate) > 0 && curRole === '0',
  170. 'yse-events': curRole === '0' && !diffInDays(workItem.reviewDate) > 0,
  171. 'center-wrap': !imageArr2.length,
  172. }"
  173. >
  174. <div class="date" v-show="workItem.reviewDate">{{ workItem.reviewDate }}</div>
  175. <upload
  176. exampleImg
  177. @handleUpload="handleUpload2"
  178. class="upload-wrap"
  179. :style="{
  180. height:
  181. imageArr2.length && !diffInDays(workItem.reviewDate) > 0
  182. ? 'auto'
  183. : '254px',
  184. }"
  185. >
  186. <template
  187. v-if="
  188. diffInDays(workItem.reviewDate) == 0 ||
  189. diffInDays(workItem.reviewDate) == null
  190. "
  191. >
  192. <img
  193. class="img-icon"
  194. :src="
  195. require(`@/assets/img/gallery/img-icon${
  196. curRole === '0' ? '-act' : ''
  197. }.png`)
  198. "
  199. alt=""
  200. />
  201. <div class="recheck-text">
  202. {{ curRole === "2" ? "等待农户上传" : "点击上传照片" }}
  203. </div>
  204. <div
  205. class="recheck-desc"
  206. v-show="curRole === '2' && diffInDays(workItem.reviewDate) != 0"
  207. >
  208. </div>
  209. </template>
  210. <template v-else>
  211. <img class="img-icon" src="@/assets/img/gallery/img-icon.png" alt="" />
  212. <div class="recheck-text">等待复核</div>
  213. <div class="recheck-desc" v-show="diffInDays(workItem.reviewDate) >= 0">
  214. (剩余{{ diffInDays(workItem.reviewDate) }}天)
  215. </div>
  216. </template>
  217. </upload>
  218. <div
  219. class="submit"
  220. v-show="imageArr2.length && !diffInDays(workItem.reviewDate) > 0"
  221. @click="handleSubmit('reviewImage2')"
  222. >
  223. 确认上传
  224. </div>
  225. </div>
  226. </div> -->
  227. </div>
  228. </div>
  229. </div>
  230. </div>
  231. <!-- 按钮 -->
  232. <div class="up-btn-group" v-show="isPlan">
  233. <template v-if="curRole === '2'">
  234. <div
  235. class="up-btn"
  236. :class="{ btn: workItem.executeEvidence && workItem.executeEvidence.length }"
  237. v-show="workItem.reviewImage && !workItem.reviewImage.length"
  238. >
  239. 提醒农户拍照
  240. </div>
  241. </template>
  242. <template v-else>
  243. <div
  244. class="up-btn btn"
  245. @click="handleContact"
  246. v-show="workItem.reviewImage && workItem.reviewImage.length && !imageArr.length"
  247. >
  248. 联系专家
  249. </div>
  250. </template>
  251. </div>
  252. </div>
  253. <!-- 上传图片弹窗 -->
  254. <upload-popup :executionData="workItem"></upload-popup>
  255. </div>
  256. </template>
  257. <script setup>
  258. import { Tab, Tabs } from "vant";
  259. import customHeader from "@/components/customHeader.vue";
  260. import { onMounted, ref, onDeactivated, onActivated, onUnmounted } from "vue";
  261. import { useRoute, useRouter } from "vue-router";
  262. import upload from "@/components/upload";
  263. import AlbumCarousel from "@/components/album_compoents/albumCarousel";
  264. import { ElMessage } from "element-plus";
  265. import uploadPopup from "@/components/popup/uploadPopup.vue";
  266. const route = useRoute();
  267. const workItem = ref({});
  268. const curRole = ref("");
  269. // 农事规划页面-显示上传农事凭证按钮
  270. const isPlan = ref(false);
  271. const loading = ref(false);
  272. const diffInDays = (date, type = "minus") => {
  273. const targetDate = new Date(date);
  274. const currentDate = new Date(); // 获取当前系统时间
  275. let diffInMs;
  276. if (type === "minus") {
  277. diffInMs = targetDate - currentDate;
  278. } else {
  279. diffInMs = currentDate - targetDate;
  280. }
  281. const day = Math.floor(diffInMs / (1000 * 60 * 60 * 24));
  282. return day + 1 >= 0 ? day + 1 : null;
  283. };
  284. const paramsPage = ref({});
  285. onActivated(() => {
  286. window.scrollTo(0, 0);
  287. curRole.value = localStorage.getItem("SET_USER_CUR_ROLE");
  288. paramsPage.value = route.query.json ? JSON.parse(route.query.json) : {};
  289. getDetail();
  290. getTriggerImg(paramsPage.value.id);
  291. });
  292. const getDetail = () => {
  293. if (!paramsPage.value.id) return;
  294. loading.value = true;
  295. VE_API.z_farm_work_record.getDetail({ id: paramsPage.value.id }).then(({ data }) => {
  296. workItem.value = data[0];
  297. }).finally(() => {
  298. loading.value = false;
  299. });
  300. };
  301. const triggerImg = ref([]);
  302. const getTriggerImg = (farmWorkRecordId) => {
  303. VE_API.z_farm_work_record.getTriggerImg({ farmWorkRecordId }).then(({ data }) => {
  304. triggerImg.value = data || [];
  305. });
  306. };
  307. //确认上传
  308. const handleSubmit = () => {
  309. const params = {
  310. executeEvidence: imageArr.value,
  311. recordId: workItem.value.id,
  312. };
  313. VE_API.monitor.addReviewImg(params).then(({ code }) => {
  314. if (code === 0) {
  315. getDetail();
  316. ElMessage.success("您已上传成功");
  317. imageArr.value = [];
  318. }
  319. });
  320. };
  321. // 清理数据的函数
  322. const clearData = () => {
  323. workItem.value = {};
  324. triggerImg.value = [];
  325. imageArr.value = [];
  326. paramsPage.value = {};
  327. isPlan.value = false;
  328. curRole.value = "";
  329. loading.value = false;
  330. };
  331. onDeactivated(() => {
  332. clearData();
  333. });
  334. onUnmounted(() => {
  335. clearData();
  336. });
  337. // //联系专家
  338. // const handleContact = () => {
  339. // router.push(`/dialogue?userId=${workItem.value.expert}&name=${workItem.value.expertUserName}`);
  340. // };
  341. const imageArr = ref([]);
  342. const handleUpload = ({ imgArr }) => {
  343. imageArr.value = imgArr;
  344. };
  345. </script>
  346. <style lang="scss" scoped>
  347. .work-wrap {
  348. .center-wrap {
  349. ::v-deep {
  350. .van-uploader__wrapper {
  351. justify-content: center;
  352. }
  353. }
  354. }
  355. .work-content {
  356. padding-top: 1px;
  357. background: #f5f5f5;
  358. padding-bottom: 12px;
  359. font-size: 14px;
  360. height: calc(100vh - 40px);
  361. box-sizing: border-box;
  362. overflow: auto;
  363. &.recheck-title {
  364. padding-bottom: 26px;
  365. .common-card-title {
  366. font-size: 16px;
  367. display: flex;
  368. align-items: center;
  369. .icon {
  370. width: 14px;
  371. height: 8px;
  372. padding-right: 6px;
  373. }
  374. }
  375. }
  376. .up-btn-group {
  377. position: fixed;
  378. bottom: 80px;
  379. left: 12px;
  380. display: flex;
  381. justify-content: center;
  382. width: calc(100% - 24px);
  383. .up-btn {
  384. background: linear-gradient(45deg, #9fd5ff, #2199f8);
  385. flex: 1;
  386. height: 40px;
  387. border: 2px solid rgba(255, 255, 255, 0.66);
  388. color: #fff;
  389. font-size: 14px;
  390. border-radius: 40px;
  391. line-height: 38px;
  392. text-align: center;
  393. box-sizing: border-box;
  394. }
  395. .orange {
  396. margin-left: 12px;
  397. background: linear-gradient(45deg, #ffd887, #ed9e1e);
  398. }
  399. .btn {
  400. width: 200px;
  401. flex: none;
  402. }
  403. }
  404. .tabs-content-item {
  405. padding: 12px 12px 16px 12px;
  406. margin: 0 12px;
  407. border-radius: 8px;
  408. background: #fff;
  409. margin-top: 12px;
  410. position: relative;
  411. .card-title {
  412. display: flex;
  413. justify-content: space-between;
  414. align-items: center;
  415. padding-bottom: 10px;
  416. .card-title-l {
  417. display: flex;
  418. align-items: center;
  419. font-size: 16px;
  420. .icon {
  421. width: 14px;
  422. height: 8px;
  423. padding-right: 6px;
  424. }
  425. }
  426. .card-title-r {
  427. font-size: 14px;
  428. color: #2199f8;
  429. }
  430. }
  431. .info-box {
  432. &.subject-content {
  433. border: none;
  434. }
  435. &.cost-wrap {
  436. padding-top: 8px;
  437. }
  438. &.bottom-box {
  439. flex-direction: column;
  440. }
  441. // margin-top: 12px;
  442. border-top: 1px solid #f5f5f5;
  443. padding-top: 12px;
  444. display: flex;
  445. align-items: center;
  446. .info-l {
  447. .farm-img {
  448. width: 78px;
  449. width: 78px;
  450. border-radius: 8px;
  451. object-fit: scale-down;
  452. }
  453. }
  454. .info-r {
  455. padding-left: 12px;
  456. }
  457. .farm-name {
  458. font-weight: bold;
  459. font-size: 14px;
  460. color: #000;
  461. padding-bottom: 4px;
  462. }
  463. .info-item {
  464. display: flex;
  465. font-size: 12px;
  466. .info-name {
  467. color: #bbbbbb;
  468. flex: none;
  469. }
  470. .info-value {
  471. color: #666666;
  472. }
  473. }
  474. .info-item + .info-item {
  475. margin-top: 4px;
  476. }
  477. }
  478. .subject-box {
  479. width: 100%;
  480. display: flex;
  481. align-items: center;
  482. justify-content: space-around;
  483. background: #fafafa;
  484. .subject-item {
  485. border-radius: 8px;
  486. padding: 4px 4px;
  487. display: flex;
  488. flex-direction: column;
  489. align-items: center;
  490. justify-content: center;
  491. width: 33%;
  492. .subject-img {
  493. width: 30px;
  494. height: 30px;
  495. object-fit: cover;
  496. border-radius: 50%;
  497. padding-bottom: 4px;
  498. }
  499. .subject-tag {
  500. font-size: 12px;
  501. padding: 2px 3px 3px 8px;
  502. background: #e0efff;
  503. color: #2199f8;
  504. border-radius: 4px;
  505. &.cost-text {
  506. margin-left: 8px;
  507. font-size: 16px;
  508. color: #2199f8;
  509. padding: 1px 8px;
  510. }
  511. }
  512. }
  513. .subject-item + .subject-item {
  514. margin-left: 6px;
  515. }
  516. .cost-l {
  517. position: relative;
  518. &::after {
  519. content: "";
  520. position: absolute;
  521. right: 0;
  522. top: 16px;
  523. height: calc(100% - 32px);
  524. width: 1px;
  525. background: rgba(0, 0, 0, 0.05);
  526. }
  527. }
  528. }
  529. .cost-box {
  530. border-radius: 5px;
  531. background: none;
  532. .cost-item {
  533. display: flex;
  534. align-items: center;
  535. flex-direction: row;
  536. }
  537. .subject-item {
  538. background: none;
  539. width: 50%;
  540. }
  541. .cost-l {
  542. position: relative;
  543. &::after {
  544. content: "";
  545. position: absolute;
  546. right: 0;
  547. top: 0;
  548. height: 100%;
  549. width: 1px;
  550. background: rgba(0, 0, 0, 0.05);
  551. }
  552. }
  553. .cost-text {
  554. font-size: 16px;
  555. color: #2199f8;
  556. padding-bottom: 5px;
  557. }
  558. }
  559. .recheck-box{
  560. margin-top: 12px;
  561. }
  562. .recheck-box,
  563. .recheck-ablum {
  564. width: 100%;
  565. }
  566. .evaluate {
  567. background: #fff;
  568. border-radius: 5px;
  569. padding: 4px 8px 10px 8px;
  570. margin-right: 8px;
  571. .evaluate-title {
  572. font-size: 16px;
  573. font-weight: 500;
  574. display: flex;
  575. align-items: center;
  576. justify-content: space-between;
  577. margin-bottom: 8px;
  578. .more {
  579. font-size: 14px;
  580. color: #999999;
  581. font-weight: 400;
  582. display: flex;
  583. align-items: center;
  584. }
  585. }
  586. .rate {
  587. display: flex;
  588. justify-content: space-between;
  589. ::v-deep {
  590. .el-rate {
  591. --el-rate-icon-margin: 0;
  592. }
  593. .el-rate--small .el-rate__icon {
  594. font-size: 12px;
  595. }
  596. }
  597. .rate-item {
  598. display: flex;
  599. align-items: center;
  600. border-radius: 4px;
  601. padding: 4px 0px;
  602. font-size: 11px;
  603. .name {
  604. margin-right: 2px;
  605. color: #666666;
  606. position: relative;
  607. top: 2px;
  608. }
  609. .num {
  610. color: #f3c11d;
  611. margin-left: 2px;
  612. }
  613. }
  614. .line {
  615. width: 1px;
  616. height: 12px;
  617. background: #cdd7e1;
  618. position: relative;
  619. top: 13px;
  620. margin: 0 3px;
  621. }
  622. }
  623. .comment {
  624. .user-info {
  625. display: flex;
  626. align-items: center;
  627. margin-bottom: 2px;
  628. .user-name {
  629. font-weight: 500;
  630. margin-left: 8px;
  631. span {
  632. font-weight: 400;
  633. font-size: 12px;
  634. color: #999999;
  635. }
  636. }
  637. }
  638. }
  639. }
  640. .result-text {
  641. font-size: 12px;
  642. color: #666666;
  643. line-height: 18px;
  644. }
  645. .time-text {
  646. color: #ff953d;
  647. padding: 4px 12px;
  648. border-radius: 5px;
  649. background: rgba(255, 149, 61, 0.1);
  650. }
  651. .img-list + .img-list,
  652. .upload-wrap {
  653. margin-top: 12px;
  654. }
  655. .over-img-box {
  656. ::v-deep {
  657. img {
  658. border-radius: 8px;
  659. }
  660. }
  661. }
  662. .img-list {
  663. width: 100%;
  664. }
  665. .upload-wrap {
  666. display: flex;
  667. flex-direction: column;
  668. justify-content: center;
  669. height: 254px;
  670. width: 100%;
  671. padding: 25px 0 12px 10px;
  672. box-sizing: border-box;
  673. }
  674. .recheck-text-wrap {
  675. width: 100%;
  676. border-radius: 8px;
  677. background: #f2f3f5;
  678. color: #666666;
  679. font-size: 14px;
  680. position: relative;
  681. &.active {
  682. background: rgba(33, 153, 248, 0.1);
  683. border: 1px solid #2199f8;
  684. color: #2199f8;
  685. .date {
  686. background: linear-gradient(170deg, #9fd5ff, #2199f8);
  687. }
  688. .recheck-desc {
  689. color: #2199f8;
  690. }
  691. }
  692. .submit {
  693. background: #2199f8;
  694. border-radius: 4px;
  695. padding: 8px;
  696. font-size: 16px;
  697. color: #fff;
  698. margin: 0 10px 16px;
  699. text-align: center;
  700. }
  701. .date {
  702. position: absolute;
  703. top: 0;
  704. left: 0;
  705. background: #bebebe;
  706. border-radius: 8px 0 8px 0;
  707. color: #fff;
  708. font-size: 12px;
  709. padding: 3px 6px;
  710. font-family: "PangMenZhengDao";
  711. }
  712. .recheck-text {
  713. padding: 8px 0 2px 0;
  714. }
  715. .recheck-desc {
  716. font-size: 12px;
  717. color: #999999;
  718. }
  719. .img-icon {
  720. width: 40px;
  721. height: 40px;
  722. }
  723. }
  724. .sub-title {
  725. display: flex;
  726. align-items: center;
  727. justify-content: center;
  728. .sub-line {
  729. width: 12px;
  730. height: 2px;
  731. border-radius: 1px;
  732. background: #d9d9d9;
  733. }
  734. .sub-name {
  735. padding: 0 5px;
  736. font-size: 14px;
  737. color: #666666;
  738. }
  739. }
  740. }
  741. }
  742. }
  743. </style>