MyToDo.vue 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740
  1. <template>
  2. <div id="home">
  3. <!-- 第一行 -->
  4. <a-row type="flex" class="topRow">
  5. <!-- 用户信息 -->
  6. <a-col :span="4" :order="1" class="user colItem">
  7. <a-tabs default-active-key="1">
  8. <a-tab-pane key="1" tab="我的">
  9. <div class="userImg" style="float:left">
  10. <img src="../../assets/user.jpg" alt="" width="100px" />
  11. </div>
  12. <div class="userInfo" style="float:left">
  13. <span class="department">{{ userInfo.realname }}</span>
  14. <span>账号:{{ userInfo.username }}</span>
  15. <span class="telphone">Tel:{{ userInfo.telphone }}</span>
  16. </div>
  17. </a-tab-pane>
  18. </a-tabs>
  19. </a-col>
  20. <!-- 消息 -->
  21. <a-col :span="4" :order="2" class="messages colItem">
  22. <a-tabs default-active-key="1">
  23. <a-tab-pane key="1" tab="消息" class="msgBox">
  24. <div class="wait fl">
  25. <span> {{ todoList.length }}</span>
  26. <p>我的待办</p>
  27. </div>
  28. <div class="sysMsg fr">
  29. <span>{{ msgTotal }}</span>
  30. <p>系统消息</p>
  31. </div>
  32. </a-tab-pane>
  33. </a-tabs>
  34. </a-col>
  35. <!-- OA工作台按钮 -->
  36. <a-col :span="8" :order="3" class="oaBtn colItem">
  37. <a-tabs default-active-key="1">
  38. <a-tab-pane key="1" tab="OA工作台">
  39. <div class="oaButton">
  40. <a class="oaItem" v-for="(item, index) in activeKeyAll" :key="index.id" @click.prevent="aClick(item)">
  41. <span>
  42. <img :src="item.iconAddress" />
  43. </span>
  44. <p>{{ item.name }}</p>
  45. </a>
  46. </div>
  47. </a-tab-pane>
  48. </a-tabs>
  49. </a-col>
  50. <!-- 日历 -->
  51. <a-col :span="7" :order="4" class="date colItem">
  52. <div>
  53. <a-calendar :fullscreen="false" />
  54. </div>
  55. </a-col>
  56. </a-row>
  57. <!-- 新闻类 -->
  58. <a-row type="flex" class="news">
  59. <!-- 企业公告 -->
  60. <a-col :span="9" :order="1" class="notice">
  61. <a-tabs default-active-key="1">
  62. <a-tab-pane key="1" tab="企业公告">
  63. <div class="contain">
  64. <ul>
  65. <li class="fl">
  66. <a href="https://m.thepaper.cn/baijiahao_14855630">
  67. <span class="department fl">[人事]</span>
  68. <span class="info fl">王健林称万达高管全部换乘红旗汽车</span>
  69. <span class="time fr">2021-10-11</span>
  70. <span class="person fr">王健林</span>
  71. </a>
  72. </li>
  73. <li class="fl">
  74. <a href="https://baijiahao.baidu.com/s?id=1713375072968520817&wfr=spider&for=pc">
  75. <span class="department fl">[运动]</span>
  76. <span class="info fl">德国成为首支晋级卡塔尔世界杯球队</span>
  77. <span class="time fr">2021-10-12</span>
  78. <span class="person fr">卡塔尔</span>
  79. </a>
  80. </li>
  81. <li class="fl">
  82. <a href="https://news.sina.cn/kx/2021-10-12/detail-iktzscyx9169344.d.html">
  83. <span class="department fl">[财务]</span>
  84. <span class="info fl">浙江女子围观宰鸭后确诊鹦鹉热</span>
  85. <span class="time fr">2021-10-11</span>
  86. <span class="person fr">鹦鹉</span>
  87. </a>
  88. </li>
  89. <li class="fl">
  90. <a href="https://baijiahao.baidu.com/s?id=1713366904170468936&wfr=spider&for=pc">
  91. <span class="department fl">[人事]</span>
  92. <span class="info fl">李铁:有没有自己的球迷是巨大区别</span>
  93. <span class="time fr">2021-10-11</span>
  94. <span class="person fr">李铁</span>
  95. </a>
  96. </li>
  97. <li class="fl">
  98. <a href="https://haokan.baidu.com/v?pd=wisenatural&vid=15789314381003157969">
  99. <span class="department fl">[人事]</span>
  100. <span class="info fl">今年为什么会出现南旱北涝</span>
  101. <span class="time fr">2021-10-11</span>
  102. <span class="person fr">某某</span>
  103. </a>
  104. </li>
  105. </ul>
  106. </div>
  107. </a-tab-pane>
  108. </a-tabs>
  109. </a-col>
  110. <!-- 我的计划 -->
  111. <a-col :span="7" :order="2" class="plan">
  112. <a-tabs default-active-key="1">
  113. <a-tab-pane key="1" tab="我的计划">
  114. <!-- 数据显示 -->
  115. <div class="total">
  116. <div class="left fl">
  117. <span>上月我的计划:<strong>0</strong>份</span>
  118. <span>我的计划:<strong>1</strong>份</span>
  119. <span>已阅计划:<strong>1</strong>份</span>
  120. </div>
  121. <div class="right fr">
  122. <span>上月他人计划:<strong>0</strong>份</span>
  123. <span>他人计划:<strong>2</strong>份</span>
  124. <span>已回计划:<strong>0</strong>份</span>
  125. </div>
  126. </div>
  127. <div class="tabsLinks">
  128. <a href="">我的计划</a>
  129. <a-divider type="vertical" />
  130. <a href="">计划管理</a>
  131. <a-divider type="vertical" />
  132. <a href="">计划模块</a>
  133. </div>
  134. </a-tab-pane>
  135. </a-tabs>
  136. </a-col>
  137. <!-- 友情链接 -->
  138. <a-col :span="7" :order="3" class="link">
  139. <a-tabs default-active-key="1">
  140. <a-tab-pane key="1" tab="友情链接">
  141. <div class="linkBtn">
  142. <button><a href="https://www.yonyou.com/">用友</a></button>
  143. <button><a href="https://hc.yonyou.com/product.php?id=5">U8</a></button>
  144. <button><a href="http://www.dakabg.com/">哒咔办公</a></button>
  145. <button><a href="https://www.dingtalk.com/?lwfrom=2017120202091367000000111&source=1001">钉钉</a></button>
  146. <button><a href="https://www.11467.com/qiye/38026153.htm">品医</a></button>
  147. <button><a href="https://www.antgroup.com/">蚂蚁集团</a></button>
  148. </div>
  149. </a-tab-pane>
  150. </a-tabs>
  151. </a-col>
  152. </a-row>
  153. <!-- 我的待办表 -->
  154. <a-row :gutter="24" class="todoTable">
  155. <a-col :sm="24" :md="24" :xl="24" :style="{ marginBottom: '24px' }" class="tableInfo">
  156. <a-tabs default-active-key="1">
  157. <a-tab-pane key="1" tab="我的待办">
  158. <a-table
  159. :scroll="scroll"
  160. bordered
  161. :loading="loading"
  162. rowKey="id"
  163. :dataSource="todoList"
  164. :pagination="ipagination"
  165. @change="handleTableChange"
  166. ref="table"
  167. size="small"
  168. >
  169. <a-table-column title="#" :width="50">
  170. <template slot-scope="t, r, i">
  171. <span>{{ i + 1 }}</span>
  172. </template>
  173. </a-table-column>
  174. <a-table-column title="任务名称" data-index="name" :width="150" align="center">
  175. <template slot-scope="t">
  176. <span>{{ t }}</span>
  177. </template>
  178. </a-table-column>
  179. <a-table-column title="所属流程" data-index="processName" :width="150" align="center">
  180. <template slot-scope="t">
  181. <span>{{ t }}</span>
  182. </template>
  183. </a-table-column>
  184. <a-table-column title="委托代办人" data-index="owner" align="center" :width="150">
  185. <template slot-scope="t">
  186. <span>{{ t }}</span>
  187. </template>
  188. </a-table-column>
  189. <a-table-column title="流程发起人" data-index="applyer" :width="150" align="center">
  190. <template slot-scope="t">
  191. <span>{{ t }}</span>
  192. </template>
  193. </a-table-column>
  194. <a-table-column
  195. title="优先级"
  196. data-index="priority"
  197. :width="110"
  198. align="center"
  199. key="so"
  200. :sorter="(a, b) => a.priority - b.priority"
  201. >
  202. <template slot-scope="t">
  203. <span v-if="t == 0" style="color: green;">普通</span>
  204. <span v-else-if="t == 1" style="color: orange;">重要</span>
  205. <span v-else-if="t == 2" style="color: red;">紧急</span>
  206. <span v-else style="color: #999;">无</span>
  207. </template>
  208. </a-table-column>
  209. <a-table-column
  210. title="状态"
  211. data-index="isSuspended"
  212. :width="100"
  213. align="center"
  214. key="z"
  215. :sorter="(a, b) => (Boolean(a.isSuspended) ? 0 : 1 - Boolean(b.isSuspended) ? 0 : 1)"
  216. >
  217. <template slot-scope="t">
  218. <span v-if="!Boolean(t)" style="color: green;">已激活</span>
  219. <span v-if="Boolean(t)" style="color: orange;">已挂起</span>
  220. </template>
  221. </a-table-column>
  222. <a-table-column title="创建时间" data-index="createTime" :width="200" align="center">
  223. <template slot-scope="t">
  224. <span>{{ t }}</span>
  225. </template>
  226. </a-table-column>
  227. <a-table-column title="操作" data-index align="center" :width="100">
  228. <template slot-scope="t, r, i">
  229. <a href="javascript:void(0);" @click="toDealWith()" style="color: blue">去处理</a>
  230. </template>
  231. </a-table-column>
  232. </a-table>
  233. </a-tab-pane>
  234. </a-tabs>
  235. </a-col>
  236. </a-row>
  237. <!-- 按钮弹框 -->
  238. <a-modal v-model="lcModal.visible" :title="lcModal.Title" :footer="null" :maskClosable="false">
  239. <component
  240. :disabled="lcModal.disabled"
  241. v-if="lcModal.visible"
  242. :is="lcModal.formComponent"
  243. :processData="lcModal.processData"
  244. :isNew="lcModal.isNew"
  245. @afterSubmit="afterSub"
  246. @close=";(lcModal.visible = false), (lcModal.disabled = false)"
  247. >
  248. </component>
  249. </a-modal>
  250. </div>
  251. </template>
  252. <script>
  253. import { mapGetters } from 'vuex'
  254. import { getAction } from '@/api/manage'
  255. export default {
  256. name: 'Home',
  257. data() {
  258. return {
  259. userInfo: this.$store.getters.userInfo,
  260. todoList: [],
  261. activeKeyAll: [],
  262. msg1Count: '0',
  263. msg2Count: '0',
  264. url: {
  265. listCementByUser: '/sys/annountCement/listByUser'
  266. },
  267. //按钮弹框
  268. lcModal: {
  269. title: '',
  270. visible: false,
  271. disabled: false,
  272. formComponent: null,
  273. isNew: false
  274. },
  275. //
  276. data: [], // 表单数据
  277. total: 0, // 表单数据总数
  278. ipagination: {
  279. current: 1,
  280. pageSize: 3,
  281. pageSizeOptions: ['10', '20', '30'],
  282. showTotal: (total, range) => {
  283. return range[0] + '-' + range[1] + ' 共' + total + '条'
  284. },
  285. showQuickJumper: true,
  286. showSizeChanger: true,
  287. total: 0
  288. }
  289. }
  290. },
  291. created() {
  292. this.getDataList()
  293. this.getActiveKeyAll()
  294. },
  295. computed: {
  296. // 系统消息计算
  297. msgTotal() {
  298. return parseInt(this.msg1Count) + parseInt(this.msg2Count)
  299. },
  300. scroll: function() {
  301. var width = window.innerWidth
  302. // ant-table
  303. let $antTable = window.document.getElementsByClassName('ant-table')
  304. if ($antTable[0]) {
  305. width = $antTable[0].clientWidth
  306. }
  307. console.log('$antTable', $antTable)
  308. return {
  309. // x:'max-content',
  310. x: 1160,
  311. y: window.innerHeight / 2
  312. }
  313. },
  314. innerHeight: function() {
  315. var innerHeight = window.innerHeight
  316. return innerHeight
  317. }
  318. },
  319. mounted() {
  320. this.loadData()
  321. },
  322. methods: {
  323. loadData() {
  324. try {
  325. // 获取系统消息
  326. getAction(this.url.listCementByUser)
  327. .then(res => {
  328. if (res.success) {
  329. this.msg1Count = res.result.anntMsgTotal
  330. this.msg2Count = res.result.sysMsgTotal
  331. console.log(this.msg2Count)
  332. }
  333. })
  334. .catch(error => {
  335. console.log('系统消息通知异常', error) // 这行打印permissionName is undefined
  336. this.stopTimer = true
  337. console.log('清理timer')
  338. })
  339. } catch (err) {
  340. this.stopTimer = true
  341. console.log('通知异常', err)
  342. }
  343. },
  344. ...mapGetters(['nickname', 'avatar', 'userInfo']),
  345. // 代办数据
  346. getDataList() {
  347. this.loading = true
  348. this.postFormAction('/actTask/todoList', {}).then(res => {
  349. this.loading = false
  350. if (res.success) {
  351. this.todoList = res.result || []
  352. console.log('首页 我的待办数字:', this.todoList.length)
  353. this.total = this.data.leading
  354. console.log(this.data)
  355. }
  356. })
  357. },
  358. // 获取 OA 按钮
  359. getActiveKeyAll() {
  360. this.postFormAction('/activiti_process/listData', { status: 1, roles: true }).then(res => {
  361. this.activeKeyAll = []
  362. if (res.success) {
  363. var result = res.result || []
  364. if (result.length > 0) {
  365. this.activeKeyAll = result
  366. // this.activeKeyAll.push.apply(this.activeKeyAll,result);
  367. // console.log(this.activeKeyAll)
  368. console.log('OA 4个按钮被渲染')
  369. }
  370. }
  371. })
  372. },
  373. //OA图标点击事件
  374. aClick(v) {
  375. //点击的该项按钮
  376. console.log(v)
  377. // this.$refs.modal.add("1")
  378. if (!v.routeName) {
  379. this.$message.warning('该流程信息未配置表单,请联系开发人员!')
  380. return
  381. }
  382. if (v.routeName.indexOf('外部表单') != -1) {
  383. alert('调用其他项目页面')
  384. } else if (v.routeName.indexOf('自定义') != -1) {
  385. this.lcModal.disabled = false
  386. let com = { component: () => import(`@/views/activiti/form/demoForm2`) }
  387. this.lcModal.formComponent = com.component
  388. this.lcModal.title = '发起流程:' + v.name
  389. this.lcModal.isNew = true
  390. this.lcModal.processData = v
  391. this.lcModal.visible = true
  392. } else {
  393. this.lcModal.disabled = false
  394. this.lcModal.formComponent = this.getFormComponent(v.routeName).component
  395. this.lcModal.title = '发起流程:' + v.name
  396. this.lcModal.isNew = true
  397. this.lcModal.processData = v
  398. this.lcModal.visible = true
  399. }
  400. console.log('发起', v)
  401. // this.getDataList()
  402. },
  403. //提交后
  404. afterSub(formData) {
  405. this.lcModal.visible = false
  406. },
  407. // 分页、排序、筛选变化时触发
  408. handleTableChange(pagination, filters, sorter) {
  409. if (Object.keys(sorter).length > 0) {
  410. this.isorter.column = sorter.field
  411. this.isorter.order = sorter.order == 'ascend' ? 'asc' : 'desc'
  412. }
  413. this.ipagination = pagination
  414. // this.loadData();
  415. },
  416. // 去处理按钮
  417. toDealWith() {
  418. this.$router.push({ path: '/activiti/todoManage' })
  419. }
  420. }
  421. }
  422. </script>
  423. <style lang="less" scoped>
  424. ul {
  425. list-style: none;
  426. }
  427. a {
  428. text-decoration: none;
  429. }
  430. .fl {
  431. float: left;
  432. }
  433. .fr {
  434. float: right;
  435. }
  436. /deep/ .ant-row-flex {
  437. background-color: white;
  438. }
  439. // 年月选择消失
  440. /deep/ .ant-fullcalendar-header {
  441. display: none;
  442. }
  443. // 线消息
  444. /deep/ .ant-fullcalendar {
  445. border-top: none;
  446. }
  447. /deep/ .ant-fullcalendar-calendar-body {
  448. border-radius: 8px;
  449. // background-color: orange;
  450. background: url('../../assets/date01.jpg');
  451. background-size: cover;
  452. background-position: center;
  453. opacity: 0.8;
  454. -webkit-font-smoothing: antialiased;
  455. }
  456. /deep/ .ant-fullcalendar-calendar-body {
  457. padding: 0;
  458. }
  459. /deep/ .ant-fullcalendar {
  460. font-weight: 700;
  461. }
  462. /deep/ .ant-fullcalendar-column-header {
  463. padding-top: 10px;
  464. }
  465. /deep/ .ant-fullcalendar table {
  466. height: 237px;
  467. }
  468. /deep/ .ant-card-head {
  469. padding: 0;
  470. }
  471. /deep/ .ant-card-head-title {
  472. // background-color: red;
  473. padding: 0;
  474. }
  475. /deep/ .ant-card-body {
  476. // background-color: blue;
  477. padding: 0;
  478. }
  479. /deep/ .ant-tabs-nav .ant-tabs-tab-active {
  480. color: #fa6b5c;
  481. font-size: 16px;
  482. }
  483. /deep/ .ant-tabs-ink-bar {
  484. height: 4px;
  485. background: #fa6b5c;
  486. padding: 0 4px;
  487. }
  488. /deep/ .ant-tabs-bar {
  489. margin-bottom: 30px;
  490. }
  491. #home {
  492. .topRow {
  493. background-color: #f0f2f5;
  494. height: 280px;
  495. margin-bottom: 30px;
  496. .colItem {
  497. height: 280px;
  498. }
  499. .user {
  500. padding: 20px;
  501. margin-right: 24px;
  502. background-color: white;
  503. .userImg {
  504. margin: 0 20px 0 20px;
  505. img {
  506. border-radius: 6px;
  507. }
  508. }
  509. // 用户信息
  510. .userInfo {
  511. font-size: 14px;
  512. background-color: white;
  513. // 用户
  514. span {
  515. display: block;
  516. line-height: 40px;
  517. }
  518. .department {
  519. font-size: 14px;
  520. color: rgb(71, 70, 70);
  521. }
  522. }
  523. }
  524. // 消息
  525. .messages {
  526. padding: 20px;
  527. background-color: white;
  528. margin-right: 20px;
  529. .msgBox {
  530. padding: 0 20px;
  531. span {
  532. font-size: 38px;
  533. color: #fa6b5c;
  534. text-shadow: 2px 2px 1px rgb(94, 94, 94);
  535. }
  536. p {
  537. margin-top: 10px;
  538. font-size: 16px;
  539. }
  540. }
  541. }
  542. // 工作台按钮
  543. .oaBtn {
  544. background-color: white;
  545. padding: 20px;
  546. margin-right: 20px;
  547. .oaButton {
  548. display: flex;
  549. flex-flow: row wrap;
  550. text-align: center;
  551. .oaItem {
  552. line-height: 0px;
  553. width: 25%;
  554. margin-bottom: 4px;
  555. // 图
  556. span {
  557. border: transparent;
  558. display: flex;
  559. align-items: center;
  560. justify-content: center;
  561. img {
  562. width: 34px;
  563. height: 34px;
  564. }
  565. }
  566. // 文字
  567. p {
  568. margin-top: 14px;
  569. font-size: 14px;
  570. color: rgb(128, 127, 127);
  571. font-weight: 400;
  572. letter-spacing: 1px;
  573. }
  574. }
  575. }
  576. }
  577. .date {
  578. padding: 20px;
  579. background-color: white;
  580. }
  581. // 右分割线
  582. /deep/ .ant-divider {
  583. height: 240px;
  584. width: 2px;
  585. background-color: #eaeaea;
  586. float: right;
  587. }
  588. }
  589. .news {
  590. background-color: #f0f2f5;
  591. margin-bottom: 30px;
  592. .notice {
  593. background-color: white;
  594. padding: 20px;
  595. margin-right: 32px;
  596. .contain {
  597. ul {
  598. margin: 0;
  599. padding: 0;
  600. padding-left: 20px;
  601. width: 100%;
  602. li {
  603. width: 100%;
  604. display: inline-block;
  605. // background-color: #fa6b5c;
  606. line-height: 40px;
  607. a {
  608. font-size: 14px;
  609. color: #444;
  610. .department {
  611. margin-right: 12px;
  612. }
  613. .info {
  614. // margin-right:12px;
  615. }
  616. .person {
  617. color: #333;
  618. }
  619. .time {
  620. color: rgb(164, 164, 164);
  621. margin: 0 12px 0 20px;
  622. }
  623. }
  624. a:hover {
  625. color: #1890ff;
  626. }
  627. }
  628. }
  629. }
  630. }
  631. // 我的计划
  632. .plan {
  633. padding: 20px;
  634. background-color: white;
  635. margin-right: 32px;
  636. .total {
  637. height: 160px;
  638. // background-color: #e7c1bd;
  639. border-bottom: 1px dashed #ccc;
  640. span {
  641. display: block;
  642. line-height: 40px;
  643. strong {
  644. text-decoration: underline;
  645. margin-right: 6px;
  646. }
  647. }
  648. .left {
  649. margin: 0 0 0 30px;
  650. }
  651. .right {
  652. margin: 0 30px 0 0;
  653. }
  654. }
  655. .tabsLinks {
  656. height: 50px;
  657. margin: 30px 0 0 20px;
  658. // background-color: rgb(138, 191, 226);
  659. a {
  660. color: rgb(23, 119, 184);
  661. margin: 0 6px;
  662. }
  663. a:hover {
  664. color: #fa6b5c;
  665. }
  666. /deep/ .ant-divider,
  667. .ant-divider-vertical {
  668. width: 2px;
  669. background-color: rgb(200, 200, 200);
  670. }
  671. }
  672. }
  673. // 友情链接
  674. .link {
  675. padding: 20px;
  676. background-color: white;
  677. .linkBtn {
  678. padding: 10px 30px;
  679. display: flex;
  680. flex-flow: row wrap;
  681. text-align: center;
  682. button {
  683. width: calc((100% - 2px) / 4);
  684. border-radius: 4px;
  685. border: none;
  686. display: flex;
  687. margin: 10px 8px;
  688. justify-content: space-around;
  689. align-items: center;
  690. background-color: rgba(102, 155, 188, 0.8);
  691. letter-spacing: 1px;
  692. padding: 6px 10px;
  693. a {
  694. color: white;
  695. font-size: 12px;
  696. }
  697. }
  698. button:hover {
  699. background-color: #003049;
  700. color: white;
  701. box-shadow: 1px 1px 3px #333;
  702. }
  703. }
  704. }
  705. }
  706. .todoTable {
  707. background-color: #f0f2f5;
  708. padding: 20px;
  709. .tableInfo {
  710. background-color: white;
  711. }
  712. }
  713. }
  714. </style>