ProjectProgressList.vue 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753
  1. <template>
  2. <el-card class="info-list-card progress_list_card">
  3. <div slot="header" class="flex-r-c">
  4. <span class="card-title"
  5. >关注项目列表<span class="title-tips"
  6. >(可关注 {{ projectAllNum }} 个项目,已关注
  7. <span style="color: #2cb7ca"> {{ projectNum }} </span> 个)</span
  8. ></span
  9. >
  10. <div
  11. class="flex-c-c right follow-manager"
  12. v-if="listState.list.length && !biMode"
  13. >
  14. <el-button @click="goManage" class="unfollow-btn" type="plain"
  15. >批量取消关注30天无更新的项目</el-button
  16. >
  17. </div>
  18. </div>
  19. <Tips tipText="解锁关注更多项目" v-if="!biMode"></Tips>
  20. <div class="info-list" v-loading="listState.loading">
  21. <!-- 工作桌面1.0 删除项目进度悬浮窗 -->
  22. <!-- <PoverTimeLine
  23. v-for="(item, index) in listState.list"
  24. :key="index"
  25. :stepList="item.stepList"
  26. @show="thisAnnouncement(item)">
  27. <template v-slot:content>
  28. <article-item
  29. :class="{ item_class: item.i_apppushunread !== 0 && item.i_apppushunread, visited: item.visited }"
  30. :index="(listState.pageSize * (listState.pageNum - 1)) + index + 1"
  31. :article="sortItemInfo(item)"
  32. @onClick="toDetail(item, index)"
  33. :projectData="projectInfoList">
  34. <span slot="right-time">{{ dateFromNow(item.l_lastpushtime * 1000) }}</span>
  35. </article-item>
  36. </template>
  37. </PoverTimeLine> -->
  38. <article-item
  39. v-for="(item, index) in listState.list"
  40. :key="index"
  41. :class="{
  42. item_class: item.i_apppushunread !== 0 && item.i_apppushunread,
  43. visited: item.visited
  44. }"
  45. :index="listState.pageSize * (listState.pageNum - 1) + index + 1"
  46. :article="sortItemInfo(item)"
  47. @onClick="toDetail(item, index)"
  48. :projectData="projectInfoList"
  49. >
  50. <span slot="right-time">{{ calcTime(item) }}</span>
  51. <!-- bi下显示添加按钮,不显示收藏标签 -->
  52. <button
  53. class="bi-report-inject-button"
  54. :disabled="item.added"
  55. v-if="biMode"
  56. @click="biAddProject(item)"
  57. slot="right-action"
  58. >
  59. {{ item.added ? '已添加' : '添加' }}
  60. </button>
  61. <template #right-handle-container>
  62. <span
  63. class="join-bid"
  64. @click.prevent.stop="joinBidHandle(item)"
  65. v-if="!biMode && item.joinBid !== undefined"
  66. >
  67. <i
  68. class="j-self-icon"
  69. :class="
  70. item.joinBid ? 'icon-canbiao-img-active' : 'icon-canbiao-img'
  71. "
  72. ></i>
  73. {{ item.joinBid ? '终止参标' : '参标' }}
  74. </span>
  75. </template>
  76. </article-item>
  77. <empty v-show="showEmpty && !nullProjectTips" images="jy-back.png">
  78. <div class="flex-c-c center">
  79. <span>暂无项目进度信息,前往招标搜索关注项目</span>
  80. <button class="null_tips_btn" @click="jumpPage" v-if="!biMode">
  81. 添加关注项目
  82. </button>
  83. </div>
  84. </empty>
  85. <empty v-show="nullProjectTips && showEmpty" images="jy-back.png">
  86. <div class="flex-c-c center">
  87. <span>暂无匹配数据</span>
  88. </div>
  89. </empty>
  90. </div>
  91. <div class="el-pagination-container" v-if="listState.total > 0">
  92. <el-pagination
  93. popper-class="pagination-custom-select"
  94. background
  95. layout="prev, pager, next, sizes, jumper"
  96. :current-page="listState.pageNum"
  97. :page-size="listState.pageSize"
  98. :total="listState.total"
  99. @current-change="onPageChange"
  100. :page-sizes="[5, 10, 50, 100]"
  101. :show-confirm-btn="true"
  102. @size-change="onSizeChange"
  103. >
  104. </el-pagination>
  105. </div>
  106. <!-- 参标更新状态弹窗 -->
  107. <BidrenewalDialog ref="BidrenewalDialog"></BidrenewalDialog>
  108. </el-card>
  109. </template>
  110. <script>
  111. import { Pagination, Card, Button } from 'element-ui'
  112. import Tips from '@/components/common/Tips.vue'
  113. import Empty from '@/components/common/Empty.vue'
  114. import ArticleItem from '@/components/article-item/ArticleItem.vue'
  115. import BidrenewalDialog from '@/views/BidrenewalDialog/index.vue'
  116. import { dateFromNow, dateFormatter, replaceKeyword } from '@/utils/'
  117. import {
  118. getFollowProjectList,
  119. setFollowRemove30Day,
  120. showAnnouncement,
  121. getBiAddedProjects,
  122. addBiProject,
  123. joinBidAction
  124. } from '@/api/modules/'
  125. import { mixinVisited } from '@/utils/mixins/visited'
  126. import { tryCallHooks } from '@jianyu/easy-inject-qiankun'
  127. // import PoverTimeLine from '@/components/time-line/PoverTimeLine.vue'
  128. export default {
  129. name: 'project-list',
  130. mixins: [mixinVisited],
  131. components: {
  132. [Pagination.name]: Pagination,
  133. [Card.name]: Card,
  134. [Button.name]: Button,
  135. ArticleItem,
  136. Tips,
  137. // PoverTimeLine,
  138. Empty,
  139. BidrenewalDialog
  140. },
  141. props: {
  142. biMode: {
  143. type: Boolean,
  144. default: false
  145. },
  146. showMore: {
  147. type: Boolean,
  148. default: false
  149. },
  150. filters: {
  151. type: Object,
  152. default() {
  153. return {
  154. area: '',
  155. time: ''
  156. }
  157. }
  158. },
  159. projectNum: {
  160. type: Number,
  161. default: 0
  162. },
  163. projectAllNum: {
  164. type: Number,
  165. default: 10
  166. },
  167. dataList: {
  168. type: Array,
  169. default: function () {
  170. return []
  171. }
  172. },
  173. areaItem: {
  174. type: String,
  175. default: '全国'
  176. },
  177. nullProjectTips: {
  178. type: Boolean,
  179. default: false
  180. }
  181. },
  182. computed: {
  183. showEmpty() {
  184. return this.listState.list.length === 0 && this.listState.loaded
  185. },
  186. getFilters() {
  187. return this.filters
  188. }
  189. },
  190. data() {
  191. return {
  192. bi: {
  193. loading: false,
  194. addedIds: [] // bi已添加项目列表
  195. },
  196. isAllFirst: false,
  197. listState: {
  198. loaded: true, // 是否已经搜索过
  199. loading: false,
  200. pageNum: 1, // 当前页
  201. pageSize: 10, // 每页多少条数据
  202. total: 0, // 一共多少条数据
  203. list: [] // 查询请求返回的数据
  204. },
  205. thisDataList: [],
  206. activeArea: '',
  207. projectInfoList: [] // 鼠标悬浮项目详细公告
  208. }
  209. },
  210. created() {
  211. // this.doQuery()
  212. this.listState.loading = true
  213. this.listState.loaded = false
  214. setTimeout(() => {
  215. this.listState.loading = false
  216. this.listState.loaded = true
  217. }, 500)
  218. if (this.biMode) {
  219. this.getBiAddedProjects()
  220. }
  221. },
  222. watch: {
  223. dataList(data) {
  224. this.thisDataList = data
  225. this.listState.total = this.thisDataList.length
  226. if (this.listState.total <= this.listState.pageSize) {
  227. this.listState.pageNum = 1
  228. }
  229. let thisList = []
  230. const start = this.listState.pageSize * (this.listState.pageNum - 1)
  231. const end = this.listState.pageSize * this.listState.pageNum
  232. thisList = this.thisDataList.slice(start, end)
  233. this.listState.list = thisList.map((item) => {
  234. const visited = this.pathVisited(
  235. this.createPathItem('/pro_follow_detail/*', `id=${item.sid}`)
  236. )
  237. return {
  238. ...item,
  239. visited
  240. }
  241. })
  242. },
  243. areaItem(name) {
  244. this.activeArea = name
  245. this.listState.pageNum = 1
  246. let thisList = []
  247. const start = this.listState.pageSize * (this.listState.pageNum - 1)
  248. const end = this.listState.pageSize * this.listState.pageNum
  249. thisList = this.thisDataList.slice(start, end)
  250. this.listState.list = thisList.map((item) => {
  251. const visited = this.pathVisited(
  252. this.createPathItem('/pro_follow_detail/*', `id=${item.sid}`)
  253. )
  254. return {
  255. ...item,
  256. visited
  257. }
  258. })
  259. }
  260. },
  261. methods: {
  262. dateFromNow,
  263. goManage() {
  264. setFollowRemove30Day()
  265. .then((res) => {
  266. if (res && res.error_code === 0) {
  267. if (res.data && res.data.flag === 'success') {
  268. this.$emit('showTips', {
  269. message:
  270. res.data.removeNum > 0
  271. ? '已批量取消关注30天无更新的项目'
  272. : '暂无30天无更新的数据可删除'
  273. })
  274. this.$emit('reloadArea')
  275. }
  276. }
  277. this.$emit('reloadData')
  278. // this.doQuery()
  279. })
  280. .catch(() => {
  281. // this.doQuery()
  282. this.$emit('reloadData')
  283. })
  284. },
  285. // 恢复数据至第一次请求的状态(页码等)
  286. resetListState() {
  287. const state = {
  288. loaded: false,
  289. loading: false,
  290. pageNum: 1,
  291. pageSize: 10,
  292. total: 0,
  293. list: []
  294. }
  295. Object.assign(this.listState, state)
  296. },
  297. doQuery(filters) {
  298. this.resetListState()
  299. this.getList(filters)
  300. },
  301. async getList(filters) {
  302. const query = {
  303. pageNum: this.listState.pageNum - 1,
  304. pageSize: this.listState.pageSize
  305. }
  306. if (filters && Object.keys(filters).length > 0) {
  307. Object.keys(filters).forEach((v) => {
  308. if (typeof filters[v] !== 'undefined') {
  309. query[v] = filters[v]
  310. }
  311. })
  312. }
  313. this.listState.loading = true
  314. this.listState.loaded = false
  315. // 判断是否无筛选条件
  316. this.isAllFirst = false
  317. if (query.pagenum === 1 && query.area === '' && query.time === '') {
  318. this.isAllFirst = true
  319. }
  320. const res = await getFollowProjectList(query)
  321. this.listState.loading = false
  322. this.listState.loaded = true
  323. if (res.error_code === 0) {
  324. this.listState.total = res.data.total
  325. if (res.data && Array.isArray(res.data.List)) {
  326. res.data.List.forEach((item) => {
  327. const visited = this.pathVisited(
  328. this.createPathItem('/pro_follow_detail/*', `id=${item.sid}`)
  329. )
  330. this.$set(item, 'visited', visited)
  331. })
  332. }
  333. this.listState.list = res.data.List || []
  334. } else {
  335. this.listState.total = 0
  336. this.listState.list = []
  337. }
  338. this.checkAddedState()
  339. },
  340. toDetail(item) {
  341. const { sid, fid } = item
  342. item.visited = true
  343. item.i_apppushunread = 0
  344. this.pathVisiting(
  345. this.createPathItem('/pro_follow_detail/*', `id=${sid}`)
  346. )
  347. // const link = this.$router.resolve({
  348. // path: '/pro_follow_detail',
  349. // query: {
  350. // sid,
  351. // fid
  352. // }
  353. // })
  354. // window.open(link.href)
  355. const link = `/swordfish/page_big_pc/pro_follow_detail?sid=${sid}&fid=${fid}`
  356. window.open(link)
  357. },
  358. sortItemInfo(item) {
  359. return {
  360. ...item,
  361. type: item.status // 类型
  362. }
  363. },
  364. calcTime(item) {
  365. const minDay = +new Date('2000/01/01')
  366. if (item.l_lastpushtime * 1000 <= minDay) {
  367. return dateFromNow(item.l_createtime * 1000)
  368. } else {
  369. return dateFromNow(item.l_lastpushtime * 1000)
  370. }
  371. },
  372. onPageChange(p) {
  373. this.listState.pageNum = p
  374. let thisList = []
  375. const start = this.listState.pageSize * (this.listState.pageNum - 1)
  376. const end = this.listState.pageSize * this.listState.pageNum
  377. thisList = this.thisDataList.slice(start, end)
  378. this.listState.list = thisList
  379. },
  380. onSizeChange(size) {
  381. this.listState.pageNum = 1
  382. this.listState.pageSize = size
  383. let thisList = []
  384. const start = this.listState.pageSize * (this.listState.pageNum - 1)
  385. const end = this.listState.pageSize * this.listState.pageNum
  386. thisList = this.thisDataList.slice(start, end)
  387. this.listState.list = thisList
  388. },
  389. async getBiAddedProjects() {
  390. const { data, error_code: code } = await getBiAddedProjects()
  391. if (code === 0 && Array.isArray(data)) {
  392. this.bi.addedIds = data
  393. this.checkAddedState()
  394. }
  395. },
  396. checkAddedState: function () {
  397. const addedIds = this.bi.addedIds || []
  398. if (!$.isArray(addedIds)) return
  399. if (addedIds.length === 0) return
  400. this.listState.list.forEach((item) => {
  401. const added = addedIds.indexOf(item.sid) !== -1
  402. this.$set(item, 'added', added)
  403. })
  404. },
  405. // 单个添加
  406. biAddProject(item) {
  407. if (item.added) return
  408. const id = item.sid
  409. if (!id) return
  410. this.biBatchAddRequest([id])
  411. },
  412. async biBatchAddRequest(ids) {
  413. if (this.bi.loading) return
  414. this.bi.loading = true
  415. const params = {
  416. info_id: ids.join(','),
  417. source: 3
  418. }
  419. const {
  420. data,
  421. error_code: code,
  422. error_msg: msg
  423. } = await addBiProject(params)
  424. this.bi.loading = false
  425. if (code === 0 && data) {
  426. if (data.status === 1) {
  427. this.$toast('添加成功')
  428. }
  429. this.getBiAddedProjects()
  430. } else {
  431. if (msg) {
  432. this.$toast(msg)
  433. }
  434. }
  435. },
  436. // 鼠标悬浮展示项目公告
  437. thisAnnouncement(itemA) {
  438. if (!itemA.stepList) {
  439. const data = {
  440. sid: itemA.sid
  441. }
  442. showAnnouncement(data).then((res) => {
  443. const thisTag = []
  444. if (res.data.projectInfo.list) {
  445. const list = res.data.projectInfo.list.reverse()
  446. list.forEach((item) => {
  447. // item.s_id = item.s_eid
  448. item.time = dateFormatter(item.l_publishtime * 1000, 'yyyy-MM-dd')
  449. if (item.s_subtype || item.s_toptype) {
  450. item.tags = [item.s_subtype || item.s_toptype]
  451. } else {
  452. item.tags = thisTag
  453. }
  454. item.content = replaceKeyword(
  455. item.s_title,
  456. itemA.title,
  457. `<span class="highlight-text">${itemA.title}</span>`
  458. )
  459. })
  460. this.$set(itemA, 'stepList', list)
  461. } else {
  462. this.$set(itemA, 'stepList', [])
  463. }
  464. })
  465. }
  466. },
  467. jumpPage() {
  468. const url = '/jylab/supsearch/index.html?publishtime=thisyear'
  469. tryCallHooks({
  470. fn: () => {
  471. this.$BRACE.methods.open({
  472. route: {
  473. link: url,
  474. appType: 'iframe'
  475. }
  476. })
  477. },
  478. spareFn: () => {
  479. window.open(url)
  480. }
  481. })
  482. },
  483. // 参标
  484. async joinBidHandle(item) {
  485. if (item.joinBid) {
  486. this.$toast('如需终止参标,需要在详情页进行操作。')
  487. return
  488. }
  489. const params = {
  490. bidIds: item.sid
  491. }
  492. try {
  493. const {
  494. error_code: code,
  495. error_msg: msg,
  496. data
  497. } = await joinBidAction('in', params)
  498. if (code === 0 && data) {
  499. // this.$toast('已参标,请前往我的参标项目列表查看。')
  500. // 拉起参标更新弹窗
  501. this.$refs.BidrenewalDialog.passVisible = true
  502. this.$refs.BidrenewalDialog.setid(item.sid)
  503. this.$refs.BidrenewalDialog.refreshData()
  504. this.$emit('joinBidBack', item)
  505. } else if (code === -1) {
  506. this.$toast(msg || '操作错误,请稍后重试')
  507. }
  508. } catch (e) {
  509. console.warn(e)
  510. this.$toast('操作错误,请稍后重试')
  511. }
  512. }
  513. }
  514. }
  515. </script>
  516. <style lang="scss" scoped>
  517. @include diy-icon('edit', 20, 20);
  518. // card样式重置
  519. ::v-deep {
  520. .el-card__header {
  521. margin: 0 40px;
  522. border-bottom: none;
  523. padding-left: 0;
  524. padding-right: 0;
  525. padding-bottom: 16px;
  526. padding-top: 20px;
  527. }
  528. .el-card__body {
  529. padding: 0 40px 20px 40px;
  530. }
  531. .get-more {
  532. display: flex;
  533. .el-icon-arrow-right {
  534. margin-left: 4px;
  535. order: 2;
  536. }
  537. }
  538. .article-item:hover {
  539. background: #f5f6f7;
  540. box-shadow: 0px -1px 0px 0px rgba(0, 0, 0, 0.05) inset;
  541. }
  542. .article-item:hover .a-i-left {
  543. color: #2cb7ca;
  544. }
  545. .article-item .tags span {
  546. background: #f5f5fb !important;
  547. border: 1px solid #ececec !important;
  548. font-size: 12px;
  549. font-weight: 400;
  550. text-align: center;
  551. color: #686868;
  552. }
  553. .el-icon-jy-time {
  554. display: none;
  555. }
  556. .item_class .a-i-left {
  557. max-width: min-content;
  558. display: flex;
  559. justify-content: flex-start;
  560. align-items: center;
  561. }
  562. .item_class .a-i-left::after {
  563. content: '';
  564. display: block;
  565. width: 8px;
  566. height: 8px;
  567. background: #ff3a20;
  568. border-radius: 50%;
  569. margin-left: 5px;
  570. }
  571. }
  572. .follow-manager {
  573. font-size: 12px;
  574. line-height: 20px;
  575. color: #aaaaaa;
  576. &-button {
  577. border: 1px solid #e0e0e0;
  578. box-sizing: border-box;
  579. border-radius: 6px;
  580. font-size: 13px;
  581. line-height: 20px;
  582. color: #1d1d1d;
  583. padding: 4px 12px;
  584. box-sizing: border-box;
  585. & + span {
  586. margin-top: 4px;
  587. }
  588. }
  589. }
  590. .sub-manager {
  591. display: flex;
  592. align-items: center;
  593. padding: 8px 16px;
  594. font-size: 14px;
  595. line-height: 24px;
  596. color: #1d1d1d;
  597. border-color: #e0e0e0;
  598. &.el-button:focus,
  599. &.el-button:hover {
  600. color: inherit;
  601. background-color: inherit;
  602. }
  603. }
  604. .info-list-card {
  605. .card-title {
  606. font-size: 18px;
  607. color: #1d1d1d;
  608. font-weight: 700;
  609. display: block;
  610. line-height: 34px;
  611. .title-tips {
  612. font-size: 14px;
  613. color: #666666;
  614. font-weight: 400;
  615. }
  616. }
  617. .sub-manager {
  618. float: right;
  619. }
  620. .info-list {
  621. min-height: 300px;
  622. border-top: 1px solid transparent;
  623. position: relative;
  624. }
  625. .add-key-button {
  626. display: flex;
  627. align-items: center;
  628. justify-content: center;
  629. margin-top: 32px;
  630. padding: 8px 16px;
  631. color: #f7f9fa;
  632. border-radius: 6px;
  633. background-color: #2abed1;
  634. cursor: pointer;
  635. .icon-chahao {
  636. margin-right: 4px;
  637. transform: rotate(-45deg);
  638. }
  639. .button-text {
  640. margin-left: 4px;
  641. white-space: nowrap;
  642. }
  643. }
  644. .icon-chahao {
  645. position: relative;
  646. display: inline-block;
  647. width: 14px;
  648. height: 14px;
  649. &:before,
  650. &:after {
  651. position: absolute;
  652. content: '' !important;
  653. background-color: #fff;
  654. top: 50%;
  655. left: 50%;
  656. width: 14px;
  657. height: 2px;
  658. border-radius: 2px;
  659. }
  660. &:before {
  661. transform: translate(-50%, -50%) rotate(45deg);
  662. }
  663. &:after {
  664. transform: translate(-50%, -50%) rotate(-45deg);
  665. }
  666. }
  667. .el-pagination-container.center {
  668. .el-pagination {
  669. left: 50%;
  670. right: unset;
  671. transform: translateX(-50%);
  672. }
  673. }
  674. }
  675. .unfollow-btn {
  676. padding: 9px 16px;
  677. border: 1px solid #2cb7ca;
  678. border-radius: 6px;
  679. font-size: 14px;
  680. font-weight: 400;
  681. text-align: center;
  682. color: #2cb7ca;
  683. line-height: 14px;
  684. }
  685. .unfollow-btn:hover {
  686. background: rgba(44, 183, 202, 0.1);
  687. }
  688. .flex-r-c {
  689. display: flex;
  690. justify-content: space-between;
  691. align-items: center;
  692. padding-top: 10px;
  693. }
  694. .null_tips_btn {
  695. padding: 7px 24px;
  696. background: #2cb7ca;
  697. border-radius: 6px;
  698. font-size: 14px;
  699. color: #fff;
  700. }
  701. .bi-report-inject-button {
  702. display: inline-block;
  703. margin-left: 16px;
  704. border: 1px solid #2cb7ca;
  705. color: #2cb7ca;
  706. background-color: #fff;
  707. padding: 0 6px;
  708. height: 22px;
  709. line-height: 22px;
  710. border-radius: 4px;
  711. font-size: 14px;
  712. text-align: center;
  713. cursor: pointer;
  714. box-sizing: content-box;
  715. min-width: 42px;
  716. }
  717. /* .bi-report-inject-button[disabled] {
  718. opacity: 0.6;
  719. cursor: not-allowed;
  720. } */
  721. .j-self-icon {
  722. display: inline-block;
  723. width: 20px;
  724. height: 20px;
  725. background-position: center;
  726. vertical-align: top;
  727. }
  728. .join-bid {
  729. display: inline-block;
  730. cursor: pointer;
  731. font-size: 14px;
  732. line-height: 22px;
  733. color: #1d1d1d;
  734. .icon-canbiao-img {
  735. background: url(~@/assets/images/icon/canbiao.png) no-repeat center;
  736. background-size: contain;
  737. }
  738. .icon-canbiao-img-active {
  739. background: url(~@/assets/images/icon/canbiao-active.png) no-repeat center;
  740. background-size: contain;
  741. }
  742. }
  743. </style>