index.vue 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819
  1. <script setup>
  2. import {
  3. ref
  4. } from 'vue';
  5. import {
  6. onLoad,
  7. onPullDownRefresh,
  8. onReachBottom,
  9. onPageScroll
  10. } from "@dcloudio/uni-app";
  11. import {
  12. getProjectInfoList,
  13. getAmtCount
  14. } from "@/api/work/projectInfo.js";
  15. import {
  16. addFocus,
  17. cancelFocus
  18. } from "@/api/work/focus.js";
  19. function backToBefore() {
  20. uni.reLaunch({
  21. url: "/pages/index"
  22. });
  23. };
  24. let scrollTop = ref(0)
  25. let loading = ref(true)
  26. // 参数
  27. let searchInfo = ref({
  28. pageNo: 1,
  29. pageSize: 10,
  30. beginDateStart: null,
  31. beginDateEnd: null,
  32. light: 2
  33. })
  34. // tabs
  35. let tabsCurrent = ref(0);
  36. let lightList = [{
  37. name: "红灯项目"
  38. }, {
  39. name: "黄灯项目"
  40. }]
  41. const lightChange = e => {
  42. if (e.name === "黄灯项目") {
  43. searchInfo.value.light = 1;
  44. defaultCurrent.value = 1;
  45. } else {
  46. searchInfo.value.light = 2;
  47. defaultCurrent.value = 0;
  48. };
  49. }
  50. // swiper
  51. let defaultCurrent = ref(0);
  52. const chgangeSwiperItem = function(e) {
  53. tabsCurrent.value = e.detail.current;
  54. searchInfo.value.light = e.detail.current === 0 ? 2 : 1;
  55. searchInfo.value.pageNo = 1;
  56. projectList.value = [];
  57. moreListFlag = true;
  58. firstGetCount = true;
  59. getList();
  60. }
  61. const ReachBottom = e => {
  62. if (!moreListFlag) {
  63. return uni.showToast({
  64. title: "已经到底了。",
  65. icon: "none",
  66. duration: 2000
  67. })
  68. }
  69. searchInfo.value.pageNo++;
  70. getList();
  71. }
  72. // 触底加载flag
  73. let moreListFlag = true
  74. // 获取列表
  75. let projectList = ref([]);
  76. let listTotal = ref(0);
  77. function getList(params) {
  78. if (searchInfo.value.pageNo == 1) loading.value = true;
  79. if (firstGetCount) getAmtCountValue(searchInfo.value);
  80. getProjectInfoList(searchInfo.value).then(res => {
  81. loading.value = false
  82. projectList.value = projectList.value.concat(res.data.list);
  83. listTotal.value = res.data.total;
  84. if (res.data.total == searchInfo.value.pageNo * searchInfo.value.pageSize - (10 - res.data.list
  85. .length)) {
  86. moreListFlag = false;
  87. }
  88. }).catch(() => {
  89. loading.value = false
  90. })
  91. }
  92. function goToDetail(id, subName) {
  93. uni.navigateTo({
  94. url: `/pages/projectInfo/detail/index?id=${id}&subName=${subName}`
  95. })
  96. }
  97. function goToPage(url) {
  98. uni.navigateTo({
  99. url
  100. })
  101. }
  102. function goToReport(type, subId, subName) {
  103. if (type === 'wtdb') {
  104. uni.navigateTo({
  105. url: `/pages/problemSupervision/index?type=${type}&subId=${subId}&subName=${subName}`
  106. })
  107. } else if (type === 'qtldjbm') {
  108. uni.navigateTo({
  109. url: `/pages/leadersList/index?type=${type}&subId=${subId}&subName=${subName}`
  110. })
  111. } else if (type === 'xcyx') {
  112. uni.navigateTo({
  113. url: `/pages/projectImageAndVideo/index?type=${type}&subId=${subId}&subName=${subName}`
  114. })
  115. } else if (type === 'more') {
  116. uni.navigateTo({
  117. url: `/pages/projectBtnList/index?type=${type}&subId=${subId}&subName=${subName}`
  118. })
  119. } else {
  120. uni.navigateTo({
  121. url: `/pages/projectInfo/report/index?type=${type}&subId=${subId}&subName=${subName}`
  122. })
  123. }
  124. }
  125. // 折叠/展开
  126. const changeFoldItem = (status, id) => {
  127. let item = projectList.value.find(item => item.id === id);
  128. item.unfold = status;
  129. }
  130. // 收藏/取消
  131. function changeFocus(id, status) {
  132. let item = projectList.value.find(item => item.id === id);
  133. if (status) {
  134. cancelFocus({
  135. subId: id
  136. }).then(res => {
  137. if (res.code === 200) {
  138. item.isAttention = 0;
  139. }
  140. }).catch(() => {
  141. uni.showToast({
  142. title: "更改收藏状态失败。",
  143. icon: "none",
  144. duration: 2000
  145. })
  146. })
  147. } else {
  148. addFocus({
  149. subId: id
  150. }).then(res => {
  151. if (res.code === 200) {
  152. item.isAttention = 1;
  153. }
  154. }).catch(() => {
  155. uni.showToast({
  156. title: "更改收藏状态失败。",
  157. icon: "none",
  158. duration: 2000
  159. })
  160. })
  161. }
  162. }
  163. // 选择年
  164. let projectYear = ref(null);
  165. let yearShow = ref(false);
  166. let defaultIndex = ref([0]);
  167. let yearColumns = ref([
  168. ["2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010", "2011", "2012",
  169. "2013",
  170. "2014", "2015", "2016", "2017", "2018", "2019", "2020", "2021", "2022", "2023", "2024", "2025", "2026",
  171. "2027", "2028", "2029", "2030", "2031", "2032", "2033"
  172. ]
  173. ])
  174. const yearShowChoose = function() {
  175. yearShow.value = true;
  176. }
  177. const yearClose = function(e) {
  178. if (e) {
  179. projectYear.value = e.value[0];
  180. searchInfo.value.beginDateStart = projectYear.value + "/01/01";
  181. searchInfo.value.beginDateEnd = projectYear.value + "/12/31";
  182. // 获取最新数据
  183. searchInfo.value.pageNo = 1;
  184. projectList.value = [];
  185. moreListFlag = true;
  186. getList();
  187. }
  188. yearShow.value = false;
  189. }
  190. let seachFalg = ref(true)
  191. // 统计
  192. let countList = ref([{
  193. title: "年度计划投资(万元)",
  194. key: "sumYearAmt",
  195. value: 0,
  196. color: ""
  197. }, {
  198. title: "全年占比",
  199. key: "yearRt",
  200. value: 0,
  201. color: "",
  202. isRate: true,
  203. }, {
  204. title: "当月完成金额(万元)",
  205. key: "sumMonthAmtSj",
  206. value: 0,
  207. color: "count-special-value"
  208. }, {
  209. title: "当月占比",
  210. key: "monthRt",
  211. value: 0,
  212. color: "count-special-value",
  213. isRate: true,
  214. }]);
  215. let firstGetCount = true;
  216. const getAmtCountValue = paramsOrginal => {
  217. getAmtCount(paramsOrginal).then(res => {
  218. firstGetCount = false
  219. for (let i in countList.value) {
  220. countList.value[i].value = res.data[countList.value[i].key] ?? 0;
  221. }
  222. })
  223. };
  224. onLoad(() => {
  225. let year = projectYear.value = new Date().getFullYear();
  226. searchInfo.value.beginDateStart = year + "/01/01";
  227. searchInfo.value.beginDateEnd = year + "/12/31";
  228. defaultIndex.value = [year - 2000];
  229. getList();
  230. });
  231. onPageScroll((e) => {
  232. scrollTop.value = e.scrollTop
  233. })
  234. onPullDownRefresh(() => {
  235. let year = projectYear.value = new Date().getFullYear();
  236. searchInfo.value.beginDateStart = year + "/01/01";
  237. searchInfo.value.beginDateEnd = year + "/12/31";
  238. searchInfo.value.pageNo = 1;
  239. projectList.value = [];
  240. moreListFlag = true;
  241. firstGetCount = true;
  242. try {
  243. getList();
  244. } finally {
  245. uni.stopPullDownRefresh()
  246. }
  247. })
  248. function searchClick() {
  249. goToPage('/pages/projectInfo/search/index')
  250. }
  251. onReachBottom(() => {
  252. return;
  253. if (!moreListFlag) {
  254. return uni.showToast({
  255. title: "已经到底了。",
  256. icon: "none",
  257. duration: 2000
  258. })
  259. }
  260. searchInfo.value.pageNo++;
  261. getList();
  262. })
  263. </script>
  264. <template>
  265. <view class="container">
  266. <page-title @searchClick='searchClick'>红黄灯项目</page-title>
  267. <view class="cards-list">
  268. <view class="tabs">
  269. <u-tabs :list="lightList" @click="lightChange" activeStyle='color:#1763E7' :scrollable='false'
  270. :current="tabsCurrent" lineWidth='174rpx'></u-tabs>
  271. </view>
  272. <view class="choose-year" @click="yearShowChoose()">
  273. 年度:{{projectYear}}
  274. <u-icon name="arrow-right" color="#fff" size="14" customStyle="margin-left:5rpx"></u-icon>
  275. </view>
  276. <view class="count-value">
  277. <view class="count-item" v-for="(item,index) in countList" :key="index">
  278. <view class="count-item-value" :class="item.color">{{item.value}}{{item.isRate ? "%" : ""}}</view>
  279. <view class="count-item-description">{{item.title}}</view>
  280. </view>
  281. </view>
  282. <swiper class="swiper" :current="defaultCurrent" @change="chgangeSwiperItem">
  283. <swiper-item>
  284. <scroll-view class="swiper-item-content" scroll-y @scrolltolower="ReachBottom">
  285. <view v-for="(item,index) in projectList" :key="index">
  286. <!-- 未折叠卡片 -->
  287. <view class="card" v-if="item.unfold">
  288. <!-- 项目名称 -->
  289. <view class="card-item">
  290. <view class="card-item-name">项目名称</view>
  291. <view class="card-item-content">{{item.subName ?? "--"}}</view>
  292. </view>
  293. <!-- 总投资(万元) -->
  294. <view class="card-item">
  295. <view class="card-item-name">总投资(万元)</view>
  296. <view class="card-item-content">{{item.amtTotal ?? "--"}}</view>
  297. </view>
  298. <!-- 年度计划投资-申报单位(万元) -->
  299. <view class="card-item">
  300. <view class="card-item-name">年度计划投资-申报单位(万元)</view>
  301. <view class="card-item-content">{{item.yearAmt ?? "--"}}</view>
  302. </view>
  303. <!-- 已完成投资(万元)-->
  304. <view class="card-item">
  305. <view class="card-item-name">已完成投资(万元)</view>
  306. <view class="card-item-content">{{item.yearAmtSj ?? "--"}}</view>
  307. </view>
  308. <!-- 当前状态 -->
  309. <view class="card-item">
  310. <view class="card-item-name">当前状态</view>
  311. <view class="card-item-content">{{item.status || "--"}}</view>
  312. </view>
  313. <!-- 功能按钮 -->
  314. <view class="card-item">
  315. <!-- 项目查看按钮(特殊) -->
  316. <view class="card-btn fat-btn special-btn" @click="goToDetail(item.id,item.subName)"
  317. v-if="item.usersub == 1">
  318. 项目查看</view>
  319. <!-- 项目查看按钮 -->
  320. <view class="card-btn fat-btn project-btn" @click="goToDetail(item.id,item.subName)" v-else>项目查看
  321. </view>
  322. <!-- 关注按钮 -->
  323. <view class="card-btn fat-btn focus-btn" @click="changeFocus(item.id,item.isAttention)"
  324. v-if="!item.isAttention">关注</view>
  325. <view class="card-btn fat-btn focus-btn-no" @click="changeFocus(item.id,item.isAttention)" v-else>
  326. 取消关注</view>
  327. </view>
  328. <!-- 周月年报按钮 -->
  329. <view class="card-item bottom-item">
  330. <view class="card-btn thin-btn report-btn" @click="goToReport('weekly',item.id,item.subName)">周报
  331. </view>
  332. <view class="card-btn thin-btn report-btn" @click="goToReport('monthly',item.id,item.subName)">月报
  333. </view>
  334. <view class="card-btn thin-btn more-btn" @click="goToReport('more',item.id,item.subName)">更多操作
  335. </view>
  336. </view>
  337. <!-- 编号 -->
  338. <view class="card-fold-option"
  339. :class="item.status_fgw === '2' ? 'card-fold-red' :item.status_fgw === '1' ?'card-fold-yellow':''">
  340. <view class="card-fold-count">{{index + 1}} / {{listTotal}}</view>
  341. <view class="card-fold-center" @click.stop="changeFoldItem(false,item.id)">
  342. <view class="card-fold-btn card-unfold-btn"></view>
  343. </view>
  344. <view class="card-fold-chaos"></view>
  345. </view>
  346. </view>
  347. <!-- 折叠卡片 -->
  348. <view class="card-fold" v-else>
  349. {{item.subName ?? "--"}}
  350. <view class="card-fold-option"
  351. :class="item.status_fgw === '2' ? 'card-fold-red' :item.status_fgw === '1' ?'card-fold-yellow':''">
  352. <view class="card-fold-count">{{index + 1}} / {{listTotal}}</view>
  353. <view class="card-fold-center" @click.stop="changeFoldItem(true, item.id)">
  354. <view class="card-fold-btn"></view>
  355. </view>
  356. <view class="card-fold-chaos"></view>
  357. </view>
  358. </view>
  359. </view>
  360. <empty-show v-if="projectList.length===0"></empty-show>
  361. <view class="gap-bottom"></view>
  362. </scroll-view>
  363. </swiper-item>
  364. <swiper-item>
  365. <scroll-view class="swiper-item-content" scroll-y @scrolltolower="ReachBottom">
  366. <view v-for="(item,index) in projectList" :key="index">
  367. <!-- 未折叠卡片 -->
  368. <view class="card" v-if="item.unfold">
  369. <!-- 项目名称 -->
  370. <view class="card-item">
  371. <view class="card-item-name">项目名称</view>
  372. <view class="card-item-content">{{item.subName ?? "--"}}</view>
  373. </view>
  374. <!-- 总投资(万元) -->
  375. <view class="card-item">
  376. <view class="card-item-name">总投资(万元)</view>
  377. <view class="card-item-content">{{item.amtTotal ?? "--"}}</view>
  378. </view>
  379. <!-- 年度计划投资-申报单位(万元) -->
  380. <view class="card-item">
  381. <view class="card-item-name">年度计划投资-申报单位(万元)</view>
  382. <view class="card-item-content">{{item.yearAmt ?? "--"}}</view>
  383. </view>
  384. <!-- 已完成投资(万元)-->
  385. <view class="card-item">
  386. <view class="card-item-name">已完成投资(万元)</view>
  387. <view class="card-item-content">{{item.yearAmtSj ?? "--"}}</view>
  388. </view>
  389. <!-- 当前状态 -->
  390. <view class="card-item">
  391. <view class="card-item-name">当前状态</view>
  392. <view class="card-item-content">{{item.status ?? "--"}}</view>
  393. </view>
  394. <!-- 功能按钮 -->
  395. <view class="card-item">
  396. <!-- 项目查看按钮(特殊) -->
  397. <view class="card-btn fat-btn special-btn" @click="goToDetail(item.id,item.subName)"
  398. v-if="item.usersub == 1">
  399. 项目查看</view>
  400. <!-- 项目查看按钮 -->
  401. <view class="card-btn fat-btn project-btn" @click="goToDetail(item.id,item.subName)" v-else>项目查看
  402. </view>
  403. <!-- 关注按钮 -->
  404. <view class="card-btn fat-btn focus-btn" @click="changeFocus(item.id,item.isAttention)"
  405. v-if="!item.isAttention">关注</view>
  406. <view class="card-btn fat-btn focus-btn-no" @click="changeFocus(item.id,item.isAttention)" v-else>
  407. 取消关注</view>
  408. </view>
  409. <!-- 周月年报按钮 -->
  410. <view class="card-item bottom-item">
  411. <view class="card-btn thin-btn report-btn" @click="goToReport('weekly',item.id,item.subName)">周报
  412. </view>
  413. <view class="card-btn thin-btn report-btn" @click="goToReport('monthly',item.id,item.subName)">月报
  414. </view>
  415. <view class="card-btn thin-btn more-btn" @click="goToReport('more',item.id,item.subName)">更多操作
  416. </view>
  417. </view>
  418. <!-- 编号 -->
  419. <view class="card-fold-option"
  420. :class="item.status_fgw === '2' ? 'card-fold-red' :item.status_fgw === '1' ?'card-fold-yellow':''">
  421. <view class="card-fold-count">{{index + 1}} / {{listTotal}}</view>
  422. <view class="card-fold-center" @click.stop="changeFoldItem(false,item.id)">
  423. <view class="card-fold-btn card-unfold-btn"></view>
  424. </view>
  425. <view class="card-fold-chaos"></view>
  426. </view>
  427. </view>
  428. <!-- 折叠卡片 -->
  429. <view class="card-fold" v-else>
  430. {{item.subName ?? "--"}}
  431. <view class="card-fold-option"
  432. :class="item.status_fgw === '2' ? 'card-fold-red' :item.status_fgw === '1' ?'card-fold-yellow':''">
  433. <view class="card-fold-count">{{index + 1}} / {{listTotal}}</view>
  434. <view class="card-fold-center" @click.stop="changeFoldItem(true, item.id)">
  435. <view class="card-fold-btn"></view>
  436. </view>
  437. <view class="card-fold-chaos"></view>
  438. </view>
  439. </view>
  440. </view>
  441. <empty-show v-if="projectList.length===0"></empty-show>
  442. <view class="gap-bottom"></view>
  443. </scroll-view>
  444. </swiper-item>
  445. </swiper>
  446. </view>
  447. <u-back-top :scroll-top="scrollTop"></u-back-top>
  448. <u-loading-page :loading="loading"></u-loading-page>
  449. <!-- 年度选择 -->
  450. <u-picker :show="yearShow" :defaultIndex="defaultIndex" :columns="yearColumns" @confirm="yearClose"
  451. @cancel="yearClose" @close="yearClose" closeOnClickOverlay></u-picker>
  452. </view>
  453. </template>
  454. <style lang="scss" scoped>
  455. .tabs {
  456. width: 100%;
  457. height: 90rpx;
  458. margin: 0 auto 20rpx;
  459. border-radius: 28rpx;
  460. background: #FFF;
  461. }
  462. .choose-year {
  463. display: flex;
  464. align-items: center;
  465. justify-content: flex-end;
  466. font-size: 24rpx;
  467. font-weight: 500;
  468. color: #fff;
  469. }
  470. .count-value {
  471. display: flex;
  472. flex-wrap: wrap;
  473. width: 100%;
  474. height: 200rpx;
  475. margin: 20rpx 0;
  476. background: linear-gradient(180deg, #FFFFFF 2%, #A5C6FF 100%);
  477. border-radius: 40rpx 40rpx 40rpx 40rpx;
  478. opacity: 1;
  479. border: 4rpx solid #fff;
  480. .count-item {
  481. display: flex;
  482. flex-direction: column;
  483. justify-content: center;
  484. width: 50%;
  485. height: 50%;
  486. text-align: center;
  487. .count-item-value {
  488. margin-bottom: 8rpx;
  489. font-size: 34rpx;
  490. font-weight: 500;
  491. color: #FF4000;
  492. }
  493. .count-special-value {
  494. color: #330DDF;
  495. }
  496. .count-item-description {
  497. font-size: 24rpx;
  498. color: #343437;
  499. }
  500. }
  501. }
  502. .swiper {
  503. width: 100%;
  504. height: calc(100vh - 268rpx);
  505. .swiper-item-content {
  506. height: 100%;
  507. padding: 20rpx 0 30rpx;
  508. }
  509. }
  510. .card-box {
  511. padding: 0 36rpx 36rpx 36rpx;
  512. border-radius: 28rpx 28rpx 28rpx 28rpx;
  513. border: 2rpx solid #C2C9D4;
  514. }
  515. .project-btn {
  516. width: 48% !important;
  517. background: #1869F6;
  518. }
  519. .focus-btn {
  520. width: 48% !important;
  521. background-color: #fff;
  522. border-radius: 16rpx 16rpx 16rpx 16rpx;
  523. border: 3rpx solid #1869F6;
  524. color: #1869F6;
  525. }
  526. .focus-btn-no {
  527. width: 48% !important;
  528. background-color: #fff;
  529. border-radius: 16rpx 16rpx 16rpx 16rpx;
  530. border: 3rpx solid #FF2D2D;
  531. color: #FF2D2D;
  532. }
  533. .lamp {
  534. display: flex;
  535. justify-content: center;
  536. align-items: center;
  537. image {
  538. width: 72rpx;
  539. height: 72rpx;
  540. margin-right: 20rpx;
  541. }
  542. text {
  543. font-size: 32rpx;
  544. }
  545. }
  546. .card-box2 {
  547. padding: 0 0 36rpx 0;
  548. border-radius: 28rpx 28rpx 28rpx 28rpx;
  549. }
  550. .focusText {
  551. font-size: 12rpx;
  552. margin-right: 12rpx;
  553. }
  554. .card {
  555. padding-top: 16rpx;
  556. overflow: hidden;
  557. }
  558. .light-item {
  559. margin-bottom: 32rpx;
  560. }
  561. .card-light {
  562. display: flex;
  563. align-items: center;
  564. justify-content: center;
  565. }
  566. .card-light-bottom {
  567. width: 122rpx;
  568. height: 44rpx;
  569. margin: auto 0;
  570. background-size: 100% 100%;
  571. }
  572. .light-red {
  573. background-image: url('@/static/icon-light-red.png');
  574. }
  575. .light-yellow {
  576. background-image: url('@/static/icon-light-yellow.png');
  577. }
  578. .light-green {
  579. background-image: url('@/static/icon-light-green.png');
  580. }
  581. .focus {
  582. width: 46rpx;
  583. height: 40rpx;
  584. background-image: url("@/static/focus-off.png");
  585. background-size: 100% 100%;
  586. }
  587. .focus-on {
  588. background-image: url("@/static/focus-on.png");
  589. }
  590. .more-btn {
  591. background-color: #fff;
  592. color: #1869F6;
  593. font-size: 32rpx;
  594. }
  595. .special-btn {
  596. width: 48% !important;
  597. background: linear-gradient(225deg, #2428F1 0%, #12C8C2 94%);
  598. }
  599. .bottom-item {
  600. display: flex;
  601. flex-wrap: wrap;
  602. justify-content: space-between;
  603. align-content: flex-start;
  604. row-gap: 20rpx;
  605. margin-bottom: 64rpx;
  606. }
  607. .card-value {
  608. position: absolute;
  609. bottom: 0;
  610. right: 50%;
  611. transform: translate(50%);
  612. width: 255rpx;
  613. height: 68rpx;
  614. padding-right: 22rpx;
  615. text-align: center;
  616. line-height: 68rpx;
  617. color: #1869F6;
  618. font-size: 32rpx;
  619. background: linear-gradient(90deg, rgba(211, 227, 255, 0) 0%, rgba(178, 206, 255, 0.5548) 54%, rgba(219, 232, 255, 0) 100%);
  620. }
  621. .card-fold {
  622. position: relative;
  623. width: 100%;
  624. min-height: 152rpx;
  625. margin-bottom: 20rpx;
  626. padding: 24rpx 30rpx 52rpx;
  627. box-sizing: border-box;
  628. background: #FFFFFF;
  629. border-radius: 40rpx;
  630. overflow: hidden;
  631. }
  632. .card-fold-option {
  633. position: absolute;
  634. display: flex;
  635. justify-content: space-between;
  636. align-items: center;
  637. left: 0;
  638. bottom: 0;
  639. width: 100%;
  640. height: 38rpx;
  641. padding: 0 40rpx;
  642. box-sizing: border-box;
  643. background: linear-gradient(270deg, #CADDFF 4%, rgba(219, 232, 255, 0) 100%);
  644. z-index: 999;
  645. .card-fold-count {
  646. flex: 1;
  647. font-size: 28rpx;
  648. color: #1869F6;
  649. }
  650. .card-fold-center {
  651. flex: 1;
  652. .card-fold-btn {
  653. width: 32rpx;
  654. height: 20rpx;
  655. margin: 0 auto;
  656. background-image: url("@/static/icon-fold.png");
  657. background-size: 100% 100%;
  658. }
  659. .card-unfold-btn {
  660. transform: rotate(180deg);
  661. }
  662. }
  663. .card-fold-chaos {
  664. flex: 1;
  665. }
  666. }
  667. .card-fold-red {
  668. background: linear-gradient(270deg, #FF8080 0%, rgba(219, 232, 255, 0) 100%);
  669. .card-fold-count {
  670. color: #FF0000;
  671. }
  672. .card-fold-center {
  673. .card-fold-btn {
  674. background-image: url("@/static/icon-fold-red.png");
  675. }
  676. }
  677. }
  678. .card-fold-yellow {
  679. background: linear-gradient(270deg, #FFAA00 4%, rgba(219, 232, 255, 0) 100%);
  680. .card-fold-count {
  681. color: #E19703;
  682. }
  683. .card-fold-center {
  684. .card-fold-btn {
  685. background-image: url("@/static/icon-fold-yellow.png");
  686. }
  687. }
  688. }
  689. .gap-bottom {
  690. width: 100%;
  691. height: 60rpx;
  692. }
  693. </style>