index.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720
  1. <template>
  2. <div>
  3. <basic-container v-show="isShow">
  4. <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" :permission="permissionList"
  5. id="out-table" :header-cell-class-name="headerClassName" :before-open="beforeOpen" v-model="form" ref="crud"
  6. @row-update="rowUpdate" @row-save="rowSave" @row-del="rowDel" @search-change="searchChange"
  7. @search-reset="searchReset" @selection-change="selectionChange" @current-change="currentChange"
  8. @size-change="sizeChange" @refresh-change="refreshChange" :search.sync="query"
  9. @resetColumn="resetColumnTwo('crud', 'option', 'optionBack', 316.1)"
  10. @saveColumn="saveColumnTwo('crud', 'option', 'optionBack', 316.1)" @on-load="onLoad"
  11. @expand-change="expandChange">
  12. <template slot="expand" slot-scope="{row}">
  13. <finstlbillsitems :tableData="row.finStlBillsItemsList || []" :brfalse="false"></finstlbillsitems>
  14. </template>
  15. <tempalte slot="feeCnNameSearch">
  16. <dic-select v-model="query.feeCnName" placeholder="费用名称" key="id" label="cnName" res="records"
  17. url="/blade-los/bfees/list" :filterable="true" :remote="true" dataName="cnName"></dic-select>
  18. </tempalte>
  19. <template slot="menuLeft">
  20. <el-button type="success" size="small" icon="el-icon-plus" plain @click="newbillFun">新建付费申请
  21. </el-button>
  22. <el-button type="danger" size="small" icon="el-icon-delete" plain @click="handleDelete">一键删除
  23. </el-button>
  24. </template>
  25. <template slot="menu" slot-scope="{row}">
  26. <el-button type="text" size="small" @click="editFun(row)">编辑
  27. </el-button>
  28. <!--:disabled="saberUserInfo.role_name.indexOf('允许修改他人业务') == -1?saberUserInfo.user_id != row.createUser:false"-->
  29. <el-button type="text" size="small"
  30. v-if="saberUserInfo.role_name.indexOf('admin') == -1 ? saberUserInfo.role_name.indexOf('允许修改他人业务') == -1 ? saberUserInfo.user_id == row.createUser : true : true"
  31. :disabled="row.status == 1 || row.status == 3" @click="rowDel(row)">删除
  32. </el-button>
  33. </template>
  34. <template slot="billNo" slot-scope="{row}">
  35. <span class="pointerClick" @click="editFun(row)">{{ row.billNo }}
  36. </span>
  37. </template>
  38. </avue-crud>
  39. </basic-container>
  40. <finstlbillsDetails ref="finstlbillsDetails" v-if="!isShow" :editSave="editSave" @goBack="goBack"
  41. @toAddEdit="toAddEdit" :key="datekey">
  42. </finstlbillsDetails>
  43. </div>
  44. </template>
  45. <script>
  46. import { finstlbillsList, finstlbillsDetail, finstlbillsSubmit, finstlbillsRemove, finstlbillsitemsList } from "@/api/iosBasicData/finstlbills";
  47. import { mapGetters } from "vuex";
  48. import finstlbillsDetails from '@/views/iosBasicData/PaymentApplication/finstlbillsDetails.vue'
  49. import { getWorkDicts } from "@/api/system/dictbiz";
  50. import finstlbillsitems from "@/views/iosBasicData/PaymentApplication/assembly/finstlbillsitems.vue";
  51. import { getRateList } from "@/api/iosBasicData/rateManagement";
  52. import reports from "@/views/iosBasicData/SeafreightExportF/bills/assembly/reports.vue";
  53. import dicSelect from "@/components/dicSelect/main";
  54. export default {
  55. components: { finstlbillsitems, finstlbillsDetails, reports, dicSelect },
  56. data() {
  57. return {
  58. datekey: Date.now(),
  59. // 详情页面和列表切换
  60. isShow: true,
  61. form: {},
  62. query: {},
  63. loading: true,
  64. page: {
  65. pageSize: 10,
  66. currentPage: 1,
  67. total: 0
  68. },
  69. selectionList: [],
  70. option: {},
  71. optionBack: {
  72. height: 'auto',
  73. calcHeight: 30,
  74. tip: false,
  75. searchShow: true,
  76. searchMenuSpan: 6,
  77. border: true,
  78. index: true,
  79. viewBtn: true,
  80. selection: true,
  81. dialogClickModal: false,
  82. menuWidth: 100,
  83. expand: true,
  84. rowKey: 'id',
  85. column: [
  86. {
  87. label: "单据编号",
  88. prop: "billNo",
  89. search: true,
  90. width: "120",
  91. overHidden: true
  92. },
  93. {
  94. label: "付费对象",
  95. prop: "corpCnName",
  96. search: true,
  97. width: "120",
  98. searchOrder: 1,
  99. overHidden: true
  100. },
  101. {
  102. label: "银行账号",
  103. prop: "bankAccountNo",
  104. width: "120",
  105. overHidden: true
  106. },
  107. {
  108. label: "账户名称",
  109. prop: "bankAccountName",
  110. width: "120",
  111. overHidden: true
  112. },
  113. {
  114. label: "账户银行",
  115. prop: "bankAccountBank",
  116. width: "120",
  117. overHidden: true
  118. },
  119. {
  120. label: "付费事由",
  121. prop: "remarks",
  122. overHidden: true,
  123. search: true,
  124. },
  125. {
  126. label: "收款情况",
  127. prop: "collectionSituation",
  128. search: true,
  129. width: "120",
  130. overHidden: true
  131. },
  132. {
  133. label: "审核状态",
  134. prop: "status",
  135. search: true,
  136. width: "120",
  137. type: 'select',
  138. dicData: [
  139. {
  140. label: '未审核',
  141. value: 0
  142. }, {
  143. label: '审核中',
  144. value: 1
  145. }, {
  146. label: '已审核',
  147. value: 3
  148. }, {
  149. label: '驳回',
  150. value: 4
  151. }
  152. ],
  153. overHidden: true
  154. },
  155. {
  156. label: "费用名称",
  157. prop: "feeCnName",
  158. width: "140",
  159. search: true,
  160. overHidden: true,
  161. },
  162. {
  163. label: "预计收回",
  164. prop: "estimatedTime",
  165. type: 'date',
  166. format: "yyyy-MM-dd",
  167. valueFormat: 'yyyy-MM-dd',
  168. width: "120",
  169. overHidden: true
  170. },
  171. {
  172. label: "预计开始收回",
  173. prop: "estimatedTimeStart",
  174. search: true,
  175. overHidden: true,
  176. searchLabelWidth: "100",
  177. hide: true,
  178. type: "date",
  179. format: "yyyy-MM-dd",
  180. valueFormat: "yyyy-MM-dd HH:mm:ss",
  181. },
  182. {
  183. label: "预计结束收回",
  184. prop: "estimatedTimeEnd",
  185. search: true,
  186. overHidden: true,
  187. searchLabelWidth: "100",
  188. hide: true,
  189. type: "date",
  190. format: "yyyy-MM-dd",
  191. valueFormat: "yyyy-MM-dd HH:mm:ss",
  192. },
  193. {
  194. label: "应付(CNY)",
  195. prop: "amountCr",
  196. width: "160",
  197. overHidden: true
  198. },
  199. {
  200. label: "合计应付(CNY)",
  201. prop: "amountCrLoc",
  202. width: "160",
  203. overHidden: true
  204. },
  205. {
  206. label: "应收(CNY)",
  207. prop: "amountDr",
  208. width: "160",
  209. overHidden: true
  210. },
  211. {
  212. label: "合计应收(CNY)",
  213. prop: "amountDrLoc",
  214. width: "160",
  215. overHidden: true
  216. },
  217. // {
  218. // label: "业务日期",
  219. // prop: "billDate",
  220. // overHidden: true,
  221. // width: "150",
  222. // },
  223. {
  224. label: "业务开始日期",
  225. prop: "billDateStart",
  226. width: "140",
  227. overHidden: true,
  228. search: true,
  229. hide: true,
  230. searchLabelWidth: "100",
  231. type: "date",
  232. format: "yyyy-MM-dd",
  233. valueFormat: "yyyy-MM-dd HH:mm:ss",
  234. },
  235. {
  236. label: "业务结束日期",
  237. prop: "billDateEnd",
  238. width: "140",
  239. overHidden: true,
  240. search: true,
  241. hide: true,
  242. searchLabelWidth: "100",
  243. type: "date",
  244. format: "yyyy-MM-dd",
  245. valueFormat: "yyyy-MM-dd HH:mm:ss",
  246. },
  247. // {
  248. // label: "业务日期",
  249. // prop: "billDateList",
  250. // search:true,
  251. // hide:true,
  252. // searchProp: "billDateList",
  253. // type: "date",
  254. // overHidden: true,
  255. // width: 100,
  256. // searchRange: true,
  257. // searchDefaultTime: ["00:00:00", "23:59:59"],
  258. // format: "yyyy-MM-dd",
  259. // valueFormat: "yyyy-MM-dd HH:mm:ss"
  260. // },
  261. {
  262. label: "费用收付",
  263. prop: "dc",
  264. search: true,
  265. type: 'select',
  266. dicData: [
  267. {
  268. label: '收',
  269. value: 'D'
  270. }, {
  271. label: '付',
  272. value: 'C'
  273. }
  274. ],
  275. overHidden: true
  276. },
  277. {
  278. label: "币种",
  279. prop: "curCode",
  280. search: true,
  281. type: 'select',
  282. dicData: [],
  283. dicUrl: '/api/blade-los/bcurrency/page?current=1&size=20',
  284. props: {
  285. label: "code",
  286. value: "id"
  287. },
  288. overHidden: true
  289. },
  290. {
  291. label: "JOB NO",
  292. prop: "businessNo",
  293. width: "120",
  294. search: true,
  295. searchOrder: 3,
  296. overHidden: true
  297. },
  298. {
  299. label: "ACCT NO",
  300. prop: "accountNo",
  301. width: "100",
  302. search: true,
  303. searchOrder: 5,
  304. overHidden: true
  305. },
  306. {
  307. label: "MB/L NO",
  308. prop: "mblno",
  309. search: true,
  310. searchOrder: 2,
  311. overHidden: true
  312. },
  313. {
  314. label: "HB/L NO",
  315. prop: "hblno",
  316. search: true,
  317. searchOrder: 4,
  318. overHidden: true
  319. },
  320. {
  321. label: "对账单号",
  322. prop: "checkNo",
  323. search: true,
  324. width: "100",
  325. searchOrder: 6,
  326. overHidden: true
  327. },
  328. {
  329. label: "船名",
  330. prop: "vesselCnName",
  331. search: true,
  332. searchOrder: 7,
  333. overHidden: true
  334. },
  335. {
  336. label: "航次",
  337. prop: "voyageNo",
  338. search: true,
  339. searchOrder: 8,
  340. overHidden: true
  341. },
  342. {
  343. label: "业务类型",
  344. prop: "businessTypes",
  345. width: "120",
  346. overHidden: true,
  347. type: 'select',
  348. multiple: true,
  349. dicData: [
  350. {
  351. label: '海运出口',
  352. value: 'SE'
  353. }, {
  354. label: '海运进口',
  355. value: 'SI'
  356. }
  357. ],
  358. },
  359. ]
  360. },
  361. data: [],
  362. editSave: false, // 编辑保存打印状态
  363. saberUserInfo: {}, // 当前登录人个人信息
  364. };
  365. },
  366. computed: {
  367. ...mapGetters(["permission"]),
  368. permissionList() {
  369. return {
  370. addBtn: this.vaildData(this.permission.finstlbills_add, false),
  371. viewBtn: this.vaildData(this.permission.finstlbills_view, false),
  372. delBtn: this.vaildData(this.permission.finstlbills_delete, false),
  373. editBtn: this.vaildData(this.permission.finstlbills_edit, false)
  374. };
  375. },
  376. ids() {
  377. let ids = [];
  378. this.selectionList.forEach(ele => {
  379. ids.push(ele.id);
  380. });
  381. return ids.join(",");
  382. }
  383. },
  384. async created() {
  385. // 获取当前登录人个人信息
  386. this.saberUserInfo = JSON.parse(localStorage.getItem('saber-userInfo')).content
  387. this.option = await this.getColumnData(this.getColumnName(316.1), this.optionBack);
  388. if (this.$route.query.billId) {
  389. // 从审批里查看跳进来的
  390. this.editFun({ id: this.$route.query.billId })
  391. }
  392. this.$store.commit('FFQSF_IN_DETAIL')
  393. // this.dictionaryfun() // 获取字典数据
  394. this.getRateListfun() // 币别数据
  395. },
  396. activated() {
  397. if (this.$route.query.id) {
  398. setTimeout(() => {
  399. if (!this.$store.getters.payAppStatus) {
  400. this.editFun(this.$route.query)
  401. }
  402. }, 200);
  403. }
  404. if (this.$route.query.mblno) {
  405. setTimeout(() => {
  406. if (!this.$store.getters.payAppStatus) {
  407. this.newbillFun()
  408. }
  409. }, 200);
  410. }
  411. },
  412. methods: {
  413. // 展开行
  414. expandChange(row, expendList) {
  415. finstlbillsitemsList(1, 20, { pid: row.id }).then(res => {
  416. row.finStlBillsItemsList = res.data.data.records.map(item => {
  417. if (item.currentStlCurCode == 'CNY') {
  418. // 发票
  419. this.$set(item, 'currentInvoiceAmountRMB', item.currentInvoiceAmount)
  420. // 应结算金额
  421. this.$set(item, 'amountRMB', item.amount)
  422. // 已结算金额
  423. this.$set(item, 'stlTtlAmountRMB', item.stlTtlAmount)
  424. // 本次金额
  425. this.$set(item, 'currentStlAmountRMB', item.currentStlAmount)
  426. } else {
  427. // 发票
  428. this.$set(item, 'currentInvoiceAmountUSD', item.currentInvoiceAmount)
  429. // 应结算金额
  430. this.$set(item, 'amountUSD', item.amount)
  431. // 已结算金额
  432. this.$set(item, 'stlTtlAmountUSD', item.stlTtlAmount)
  433. // 本次金额
  434. this.$set(item, 'currentStlAmountUSD', item.currentStlAmount)
  435. }
  436. return item
  437. })
  438. })
  439. },
  440. // 新建账单
  441. newbillFun() {
  442. this.isShow = false
  443. this.editSave = false
  444. // this.$refs.finstlbillsDetails
  445. this.$store.commit("IN_PAYAPP_DETAIL");
  446. },
  447. toAddEdit() {
  448. this.datekey = Date.now()
  449. this.isShow = false
  450. this.editSave = false
  451. },
  452. // 编辑
  453. editFun(row) {
  454. this.isShow = false
  455. this.editSave = true
  456. this.$nextTick(() => {
  457. this.$refs.finstlbillsDetails.finstlbillsDetailfun(row.id)
  458. })
  459. this.$store.commit("IN_PAYAPP_DETAIL");
  460. },
  461. // 详情的返回列表
  462. goBack() {
  463. // 初始化数据
  464. // this.detailData = this.$options.data().detailData;
  465. if (JSON.stringify(this.$route.query) != "{}") {
  466. this.$router.$avueRouter.closeTag();
  467. this.$router.push({
  468. path: "/iosBasicData/PaymentApplication/index"
  469. });
  470. }
  471. this.isShow = true;
  472. this.onLoad(this.page, this.search);
  473. this.$store.commit("OUT_PAYAPP_DETAIL");
  474. },
  475. // 添加
  476. rowSave(row, done, loading) {
  477. finstlbillsSubmit(row).then(() => {
  478. this.onLoad(this.page);
  479. this.$message({
  480. type: "success",
  481. message: "操作成功!"
  482. });
  483. done();
  484. }, error => {
  485. loading();
  486. window.console.log(error);
  487. });
  488. },
  489. // 保存
  490. rowUpdate(row, index, done, loading) {
  491. finstlbillsSubmit(row).then(() => {
  492. this.onLoad(this.page);
  493. this.$message({
  494. type: "success",
  495. message: "操作成功!"
  496. });
  497. done();
  498. }, error => {
  499. loading();
  500. console.log(error);
  501. });
  502. },
  503. // 删除
  504. rowDel(row) {
  505. this.$confirm("确定将选择数据删除?", {
  506. confirmButtonText: "确定",
  507. cancelButtonText: "取消",
  508. type: "warning"
  509. })
  510. .then(() => {
  511. return finstlbillsRemove(row.id);
  512. })
  513. .then(() => {
  514. this.onLoad(this.page);
  515. this.$message({
  516. type: "success",
  517. message: "操作成功!"
  518. });
  519. });
  520. },
  521. // 批量删除
  522. handleDelete() {
  523. if (this.selectionList.length === 0) {
  524. this.$message.warning("请选择至少一条数据");
  525. return;
  526. }
  527. // 判断是否可以编辑别人业务 true 就没有权限
  528. if (this.ModifyOthersfun()) return;
  529. this.$confirm("确定将选择数据删除?", {
  530. confirmButtonText: "确定",
  531. cancelButtonText: "取消",
  532. type: "warning"
  533. })
  534. .then(() => {
  535. return finstlbillsRemove(this.ids);
  536. })
  537. .then(() => {
  538. this.onLoad(this.page);
  539. this.$message({
  540. type: "success",
  541. message: "操作成功!"
  542. });
  543. this.$refs.crud.toggleSelection();
  544. });
  545. },
  546. // 判断是否可以编辑别人业务
  547. ModifyOthersfun() {
  548. let sumArr = []
  549. const h = this.$createElement
  550. // 判断是否有权限
  551. if (this.saberUserInfo.role_name.indexOf('允许修改他人业务') != -1) return false
  552. // 当前登录人和选择的创建人对比是不是一个人
  553. for (let item of this.selectionList) {
  554. if (this.saberUserInfo.user_id != item.createUser) {
  555. sumArr.push(h('p', `你没有"允许修改他人业务"权限,请重新选择数据`))
  556. }
  557. }
  558. if (sumArr.length != 0) {
  559. this.$confirm('提示', {
  560. message: h('div', sumArr),
  561. confirmButtonText: "确定",
  562. cancelButtonText: "取消",
  563. type: "warning"
  564. }).catch(err => { })
  565. return true
  566. }
  567. },
  568. // 详情
  569. beforeOpen(done, type) {
  570. if (["edit", "view"].includes(type)) {
  571. finstlbillsDetail(this.form.id).then(res => {
  572. this.form = res.data.data;
  573. });
  574. }
  575. done();
  576. },
  577. searchReset() {
  578. this.query = {};
  579. this.onLoad(this.page);
  580. },
  581. searchChange(params, done) {
  582. this.query = params;
  583. this.page.currentPage = 1;
  584. this.onLoad(this.page, this.query);
  585. done();
  586. },
  587. selectionChange(list) {
  588. this.selectionList = list;
  589. },
  590. selectionClear() {
  591. this.selectionList = [];
  592. this.$refs.crud.toggleSelection();
  593. },
  594. currentChange(currentPage) {
  595. this.page.currentPage = currentPage;
  596. },
  597. sizeChange(pageSize) {
  598. this.page.pageSize = pageSize;
  599. },
  600. refreshChange() {
  601. this.onLoad(this.page, this.query);
  602. },
  603. onLoad(page, params = {}) {
  604. this.loading = true;
  605. finstlbillsList(
  606. page.currentPage,
  607. page.pageSize,
  608. { ...Object.assign(params, this.query), businessType: 'FFSQ' },
  609. ).then(res => {
  610. const data = res.data.data;
  611. this.page.total = data.total;
  612. this.data = data.records.map(item => {
  613. item.isApproved = item.isApproved + ''
  614. item.isSignfor = item.isSignfor + ''
  615. item.isChecked = item.isChecked + ''
  616. item.isCleared = item.isCleared + ''
  617. item.isInvoice = item.isInvoice + ''
  618. item.isTax = item.isTax + ''
  619. item.corpIsSigned = item.corpIsSigned + ''
  620. return item
  621. })
  622. this.loading = false;
  623. this.selectionClear();
  624. });
  625. },
  626. // 获取字典数据
  627. dictionaryfun() {
  628. // 全部是否
  629. getWorkDicts('ifInvoice').then(res => {
  630. // this.findObject(this.option.column, "isApproved").dicData = res.data.data
  631. // this.findObject(this.option.column, "isSignfor").dicData = res.data.data
  632. this.findObject(this.option.column, "isChecked").dicData = res.data.data
  633. this.findObject(this.option.column, "isCleared").dicData = res.data.data
  634. })
  635. // 是否开发票
  636. // getWorkDicts('invoice_los').then(res=>{
  637. // this.findObject(this.option.column, "isInvoice").dicData = res.data.data
  638. // })
  639. // 是否
  640. // getWorkDicts('ifInvoice').then(res=>{
  641. // // this.findObject(this.option.column, "corpIsSigned").dicData = res.data.data
  642. // this.findObject(this.option.column, "isTax").dicData = res.data.data
  643. // })
  644. },
  645. // 获取币别数据
  646. getRateListfun(cnName) {
  647. getRateList({ current: 1, size: 20, cnName }).then(res => {
  648. this.findObject(this.option.column, "curCode").dicData = res.data.data.records
  649. })
  650. },
  651. //自定义列保存
  652. async saveColumnTwo(ref, option, optionBack, code) {
  653. /**
  654. * 已定义全局方法,直接使用,saveColumnData保存列数据方法,参数传值(表格名称,当前表格的option数据)
  655. * 已定义全局方法,直接使用,getColumnName方法用来获取枚举值,参数根据自己定义的code值获取中文名
  656. * 一定要执行异步操作,要等接口成功返回,才能执行下一行代码
  657. */
  658. const inSave = await this.saveColumnData(this.getColumnName(code), this[option]);
  659. if (inSave) {
  660. this.$message.success("保存成功");
  661. //关闭窗口
  662. this.$refs[ref].$refs.dialogColumn.columnBox = false;
  663. }
  664. },
  665. //自定义列重置
  666. async resetColumnTwo(ref, option, optionBack, code) {
  667. this[option] = this[optionBack];
  668. const inSave = await this.delColumnData(this.getColumnName(code), this[optionBack]);
  669. if (inSave) {
  670. this.$message.success("重置成功");
  671. this.$refs[ref].$refs.dialogColumn.columnBox = false;
  672. }
  673. },
  674. // 更改表格颜色
  675. headerClassName(tab) {
  676. //颜色间隔
  677. let back = ""
  678. if (tab.columnIndex >= 0 && tab.column.level === 1) {
  679. if (tab.columnIndex % 2 === 0) {
  680. back = "back-one"
  681. } else if (tab.columnIndex % 2 === 1) {
  682. back = "back-two"
  683. }
  684. }
  685. return back;
  686. },
  687. }
  688. };
  689. </script>
  690. <style scoped>
  691. ::v-deep#out-table .back-one {
  692. background: #ecf5ff !important;
  693. text-align: center;
  694. }
  695. ::v-deep#out-table .back-two {
  696. background: #ecf5ff !important;
  697. text-align: center;
  698. }
  699. /deep/ .el-col-md-8 {
  700. width: 24.33333%;
  701. }
  702. .pointerClick {
  703. cursor: pointer;
  704. color: #1e9fff;
  705. }
  706. </style>