order2.vue 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914
  1. <template>
  2. <view class="content">
  3. <view class="navbar">
  4. <view v-for="(item, index) in navList" :key="index" class="nav-item" :class="{ current: tabCurrentIndex === index }" @click="tabClick(index)">{{ item.text }}</view>
  5. </view>
  6. <swiper :current="tabCurrentIndex" class="swiper-box" duration="300" @change="changeTab">
  7. <swiper-item class="tab-content" v-for="(tabItem, tabIndex) in navList" :key="tabIndex">
  8. <scroll-view class="list-scroll-content" scroll-y @scrolltolower="loadData">
  9. <!-- 空白页 -->
  10. <empty v-if="tabItem.loaded === true && tabItem.orderList.length === 0"></empty>
  11. <!-- 订单列表 -->
  12. <view @click="goToOrderDetail(item)" v-for="(item, index) in tabItem.orderList" :key="index" class="order-item">
  13. <view class="i-top b-b">
  14. <text class="time">订单编号:{{ item.order_id }}</text>
  15. <text class="state" >{{ item.status_name }}</text>
  16. </view>
  17. <view class="goods-box-single">
  18. <image class="goods-img" :src="item._info[0].cart_info.productInfo.image" mode="scaleToFill"></image>
  19. <view class="productBox ">
  20. <view class="left">
  21. <text class="title clamp">{{ item._info[0].cart_info.productInfo.store_name }}</text>
  22. </view>
  23. <view class="right">
  24. <text class="price">{{ item._info[0].cart_info.productInfo.price || moneyNum }}</text>
  25. <text class="attr-box"> x {{ item._info[0].cart_info.cart_num }}</text>
  26. </view>
  27. </view>
  28. </view>
  29. <view class="price-box">
  30. <text class="num">{{ item.total_num }}</text>
  31. 件商品 邮费:
  32. <text class="price blank">{{ item.total_postage | moneyNum }}</text>
  33. 合计:
  34. <text class="price">{{ item.total_price | moneyNum }}</text>
  35. </view>
  36. </view>
  37. <uni-load-more :status="tabItem.loadingType"></uni-load-more>
  38. </scroll-view>
  39. </swiper-item>
  40. </swiper>
  41. </view>
  42. </template>
  43. <script>
  44. import uniLoadMore from '@/components/uni-load-more/uni-load-more.vue';
  45. import empty from '@/components/empty';
  46. import { mapState } from 'vuex';
  47. import { saveUrl } from '@/utils/loginUtils.js';
  48. import { orderList, orderCancel, orderDel, orderTake,getEarnings } from '@/api/order.js';
  49. export default {
  50. filters: {
  51. // 过滤金额为数字
  52. moneyNum: function(value) {
  53. return +value;
  54. }
  55. },
  56. components: {
  57. uniLoadMore,
  58. empty
  59. },
  60. data() {
  61. return {
  62. tabCurrentIndex: 0,
  63. state: '',
  64. showModal: false,
  65. navList: [
  66. {
  67. state: 0,
  68. text: '待配送',
  69. loadingType: 'more',
  70. orderList: [],
  71. page: 1, //当前页数
  72. limit: 10 //每次信息条数
  73. },
  74. {
  75. state: 1,
  76. text: '配送中',
  77. loadingType: 'more',
  78. orderList: [],
  79. page: 1, //当前页数
  80. limit: 10 //每次信息条数
  81. },
  82. {
  83. state: 2,
  84. text: '已送达',
  85. loadingType: 'more',
  86. orderList: [],
  87. page: 1, //当前页数
  88. limit: 10 //每次信息条数
  89. },
  90. ]
  91. };
  92. },
  93. onLoad(options) {
  94. this.loadData();
  95. // this.state = options.state;
  96. // saveUrl();
  97. /**
  98. * 修复app端点击除全部订单外的按钮进入时不加载数据的问题
  99. * 替换onLoad下代码即可
  100. */
  101. // this.tabCurrentIndex = +options.state||0;
  102. // #ifndef MP
  103. this.loadData();
  104. // #endif
  105. // // #ifdef MP
  106. // if (options.state == 0) {
  107. // this.loadData();
  108. // }
  109. // // #endif
  110. },
  111. computed: {
  112. ...mapState(['userInfo'])
  113. },
  114. methods: {
  115. // 确认收货
  116. orderTake(item, index) {
  117. let obj = this;
  118. uni.showModal({
  119. title: '是否确认收货?',
  120. success: function(res) {
  121. if (res.confirm) {
  122. orderTake({
  123. uni: item.order_id
  124. })
  125. .then(e => {
  126. obj.navList[obj.tabCurrentIndex].orderList.splice(index, 1);
  127. uni.showToast({
  128. title: '收货成功',
  129. icon: 'none'
  130. });
  131. })
  132. .catch(e => {
  133. console.log(e);
  134. });
  135. } else if (res.cancel) {
  136. console.log('用户点击取消');
  137. }
  138. }
  139. });
  140. },
  141. // 跳转到查询快递页面
  142. expressCheck(item) {
  143. uni.navigateTo({
  144. url: '/pages/order/expressInfo?id=' + item.id
  145. });
  146. },
  147. //跳转到订单详情
  148. goToOrderDetail(e) {
  149. uni.navigateTo({
  150. url: '/pages/order/orderDetail?id=' + e.order_id
  151. });
  152. },
  153. //分享
  154. share(e) {
  155. console.log(e);
  156. uni.navigateTo({
  157. url: '/pages/product/details?pink_id=' + e.pink_id
  158. });
  159. },
  160. // 申请退款
  161. orderRefund(e) {
  162. uni.navigateTo({
  163. url: '/pages/order/orderRefund?id=' + e.order_id
  164. });
  165. },
  166. // 订单支付
  167. orderPay(e) {
  168. if (e.combination_id > 0) {
  169. uni.navigateTo({
  170. url: '/pages/money/pay?type=1&ordid=' + e.order_id + '&money=' + e.pay_price + '&goodsType=2'
  171. });
  172. } else {
  173. uni.navigateTo({
  174. url: '/pages/money/pay?type=1&ordid=' + e.order_id + '&money=' + e.pay_price
  175. });
  176. }
  177. },
  178. //获取订单列表
  179. loadData(source) {
  180. //这里是将订单挂载到tab列表下
  181. let index = this.tabCurrentIndex;
  182. console.log('this.tabCurrentIndex',this.tabCurrentIndex)
  183. let navItem = this.navList[index];
  184. console.log('this.navList[index]',this.navList[index])
  185. console.log('navItem.state',navItem.state)
  186. let state = navItem.state;
  187. if (source === 'tabChange' && navItem.loaded === true) {
  188. //tab切换只有第一次需要加载数据
  189. return;
  190. }
  191. if (navItem.loadingType === 'loading') {
  192. //防止重复加载
  193. return;
  194. }
  195. if (navItem.loadingType === 'noMore') {
  196. //防止重复加载
  197. return;
  198. }
  199. // 修改当前对象状态为加载中
  200. navItem.loadingType = 'loading';
  201. if(index == 0) {
  202. getEarnings({
  203. page: navItem.page,
  204. limit: navItem.limit,
  205. status: 0
  206. })
  207. .then(({ data }) => {
  208. console.log('--1---',data);
  209. navItem.orderList = navItem.orderList.concat(data);
  210. navItem.page++;
  211. if (navItem.limit == data.length) {
  212. navItem.page++;
  213. navItem.loadingType = 'more';
  214. } else {
  215. navItem.loadingType = 'nomore';
  216. }
  217. if (type === 'refresh') {
  218. if (loading == 1) {
  219. uni.hideLoading();
  220. } else {
  221. uni.stopPullDownRefresh();
  222. }
  223. }
  224. })
  225. .catch(err => {
  226. console.log(err);
  227. });
  228. getEarnings({
  229. page: navItem.page,
  230. limit: navItem.limit,
  231. status: 1
  232. })
  233. .then(({ data }) => {
  234. console.log('--2---',data);
  235. navItem.orderList = navItem.orderList.concat(data);
  236. navItem.page++;
  237. if (navItem.limit == data.length) {
  238. navItem.page++;
  239. navItem.loadingType = 'more';
  240. } else {
  241. navItem.loadingType = 'nomore';
  242. }
  243. if (type === 'refresh') {
  244. if (loading == 1) {
  245. uni.hideLoading();
  246. } else {
  247. uni.stopPullDownRefresh();
  248. }
  249. }
  250. })
  251. .catch(err => {
  252. console.log(err);
  253. });
  254. }
  255. if(index == 1) {
  256. getEarnings({
  257. page: navItem.page,
  258. limit: navItem.limit,
  259. status: 2
  260. })
  261. .then(({ data }) => {
  262. console.log('--2---',data);
  263. navItem.orderList = navItem.orderList.concat(data);
  264. navItem.page++;
  265. if (navItem.limit == data.length) {
  266. navItem.page++;
  267. navItem.loadingType = 'more';
  268. } else {
  269. navItem.loadingType = 'nomore';
  270. }
  271. if (type === 'refresh') {
  272. if (loading == 1) {
  273. uni.hideLoading();
  274. } else {
  275. uni.stopPullDownRefresh();
  276. }
  277. }
  278. })
  279. .catch(err => {
  280. console.log(err);
  281. });
  282. }
  283. if(index == 2) {
  284. getEarnings({
  285. page: navItem.page,
  286. limit: navItem.limit,
  287. status: 3
  288. })
  289. .then(({ data }) => {
  290. console.log('--3---',data);
  291. navItem.orderList = navItem.orderList.concat(data);
  292. navItem.page++;
  293. if (navItem.limit == data.length) {
  294. navItem.page++;
  295. navItem.loadingType = 'more';
  296. } else {
  297. navItem.loadingType = 'nomore';
  298. }
  299. if (type === 'refresh') {
  300. if (loading == 1) {
  301. uni.hideLoading();
  302. } else {
  303. uni.stopPullDownRefresh();
  304. }
  305. }
  306. })
  307. .catch(err => {
  308. console.log(err);
  309. });
  310. getEarnings({
  311. page: navItem.page,
  312. limit: navItem.limit,
  313. status: 4
  314. })
  315. .then(({ data }) => {
  316. console.log('--4---',data);
  317. navItem.orderList = navItem.orderList.concat(data);
  318. navItem.page++;
  319. if (navItem.limit == data.length) {
  320. navItem.page++;
  321. navItem.loadingType = 'more';
  322. } else {
  323. navItem.loadingType = 'nomore';
  324. }
  325. if (type === 'refresh') {
  326. if (loading == 1) {
  327. uni.hideLoading();
  328. } else {
  329. uni.stopPullDownRefresh();
  330. }
  331. }
  332. })
  333. .catch(err => {
  334. console.log(err);
  335. });
  336. }
  337. // orderList({
  338. // type: state,
  339. // page: navItem.page,
  340. // limit: navItem.limit
  341. // })
  342. // .then(({ data }) => {
  343. // let arr = data.map(e => {
  344. // let b = this.orderStateExp(e.status);
  345. // e.stateTip = b.stateTip;
  346. // e.stateTipColor = b.stateTipColor;
  347. // return e;
  348. // });
  349. // navItem.orderList = navItem.orderList.concat(arr);
  350. // // console.log(navItem.orderList);
  351. // navItem.page++;
  352. // if (navItem.limit == data.length) {
  353. // //判断是否还有数据, 有改为 more, 没有改为noMore
  354. // navItem.loadingType = 'more';
  355. // return;
  356. // } else {
  357. // //判断是否还有数据, 有改为 more, 没有改为noMore
  358. // navItem.loadingType = 'noMore';
  359. // }
  360. // this.$set(navItem, 'loaded', true);
  361. // })
  362. // .catch(e => {
  363. // console.log(e);
  364. // });
  365. },
  366. //swiper 切换
  367. changeTab(e) {
  368. this.tabCurrentIndex = e.target.current;
  369. this.loadData('tabChange');
  370. },
  371. //顶部tab点击
  372. tabClick(index) {
  373. this.tabCurrentIndex = index;
  374. },
  375. //删除订单
  376. deleteOrder(item, index) {
  377. uni.showModal({
  378. content: '是否确认删除订单?',
  379. success: res => {
  380. uni.showLoading({
  381. title: '请稍后'
  382. });
  383. setTimeout((e) => {
  384. orderDel({
  385. uni: item.order_id
  386. })
  387. .then(e => {
  388. this.navList[this.tabCurrentIndex].orderList.splice(index, 1);
  389. uni.hideLoading();
  390. })
  391. .catch(e => {
  392. console.log(e);
  393. uni.hideLoading();
  394. });
  395. },1000)
  396. },
  397. fail: e => {
  398. console.log(e);
  399. }
  400. });
  401. },
  402. //取消订单
  403. cancelOrder(item) {
  404. uni.showModal({
  405. title: '订单取消',
  406. content: '是否取消订单?',
  407. success: e => {
  408. if (e.confirm) {
  409. uni.showLoading({
  410. title: '请稍后'
  411. });
  412. orderCancel({ id: item.order_id })
  413. .then(e => {
  414. uni.showToast({
  415. title: '取消成功',
  416. duration: 2000,
  417. position: 'top'
  418. });
  419. })
  420. .catch(e => {
  421. console.log(e);
  422. });
  423. //取消订单后删除待付款中该项
  424. let list = this.navList[this.tabCurrentIndex].orderList;
  425. let index = list.findIndex(val => val.id === item.id);
  426. index !== -1 && list.splice(index, 1);
  427. uni.hideLoading();
  428. }
  429. }
  430. });
  431. },
  432. //订单状态文字和颜色
  433. orderStateExp(state) {
  434. let stateTip = '',
  435. stateTipColor = '#EF041F';
  436. switch (+state) {
  437. case 0:
  438. stateTip = '全部';
  439. break;
  440. case 1:
  441. stateTip = '待付款';
  442. break;
  443. case 2:
  444. stateTip = '待发货';
  445. break;
  446. case 3:
  447. stateTip = '待收货';
  448. break;
  449. case 4:
  450. stateTip = '已完成';
  451. stateTipColor = '#5dbc7c';
  452. break;
  453. case 9:
  454. stateTip = '订单已关闭';
  455. stateTipColor = '#909399';
  456. break;
  457. //更多自定义
  458. }
  459. return { stateTip, stateTipColor };
  460. }
  461. }
  462. };
  463. </script>
  464. <style lang="scss">
  465. page,
  466. .content {
  467. background: $page-color-base;
  468. height: 100%;
  469. }
  470. .swiper-box {
  471. height: calc(100% - 40px);
  472. padding: 0 20rpx;
  473. }
  474. .list-scroll-content {
  475. height: 100%;
  476. }
  477. .navbar {
  478. display: flex;
  479. height: 40px;
  480. padding: 0 5px;
  481. background: #fff;
  482. box-shadow: 0 1px 5px rgba(0, 0, 0, 0.06);
  483. position: relative;
  484. z-index: 10;
  485. .nav-item {
  486. flex: 1;
  487. display: flex;
  488. justify-content: center;
  489. align-items: center;
  490. height: 100%;
  491. font-size: 15px;
  492. color: $font-color-dark;
  493. position: relative;
  494. &.current {
  495. color: #FF0000;
  496. &:after {
  497. content: '';
  498. position: absolute;
  499. left: 50%;
  500. bottom: 0;
  501. transform: translateX(-50%);
  502. width: 44px;
  503. height: 0;
  504. border-bottom: 2px solid #FF0000;
  505. }
  506. }
  507. }
  508. }
  509. .uni-swiper-item {
  510. height: auto;
  511. }
  512. .order-item {
  513. display: flex;
  514. flex-direction: column;
  515. padding-left: 30rpx;
  516. background: #fff;
  517. margin-top: 16rpx;
  518. border-radius: 15rpx;
  519. .i-top {
  520. display: flex;
  521. align-items: center;
  522. height: 80rpx;
  523. padding-right: 30rpx;
  524. font-size: $font-base;
  525. color: $font-color-dark;
  526. position: relative;
  527. .time {
  528. flex: 1;
  529. font-size: 24rpx;
  530. font-family: PingFang SC;
  531. font-weight: 400;
  532. color: #666666;
  533. }
  534. .state {
  535. font-size: 28rpx;
  536. font-family: PingFang SC;
  537. font-weight: 500;
  538. color: #FF0000;
  539. }
  540. .del-btn {
  541. padding: 10rpx 0 10rpx 36rpx;
  542. font-size: $font-lg;
  543. color: $font-color-light;
  544. position: relative;
  545. &:after {
  546. content: '';
  547. width: 0;
  548. height: 30rpx;
  549. border-left: 1px solid $border-color-dark;
  550. position: absolute;
  551. left: 20rpx;
  552. top: 50%;
  553. transform: translateY(-50%);
  554. }
  555. }
  556. }
  557. /* 多条商品 */
  558. .goods-box {
  559. height: 160rpx;
  560. padding: 20rpx 0;
  561. white-space: nowrap;
  562. .goods-item {
  563. width: 120rpx;
  564. height: 120rpx;
  565. display: inline-block;
  566. margin-right: 24rpx;
  567. }
  568. .goods-img {
  569. display: block;
  570. width: 120rpx;
  571. height: 120rpx;
  572. }
  573. }
  574. /* 单条商品 */
  575. .goods-box-single {
  576. display: flex;
  577. padding-top: 20rpx;
  578. .goods-img {
  579. width: 160rpx;
  580. height: 160rpx;
  581. flex-shrink:0
  582. }
  583. .productBox{
  584. width: 100%;
  585. display: flex;
  586. justify-content: space-between;
  587. padding: 0 31rpx 0rpx 27rpx;
  588. .left {
  589. display: flex;
  590. flex-direction: column;
  591. padding: 0 30rpx 0 24rpx;
  592. overflow: hidden;
  593. .title {
  594. font-size: 26rpx;
  595. font-family: PingFang SC;
  596. font-weight: 500;
  597. color: #3F454B;
  598. line-height: 1;
  599. }
  600. }
  601. .right {
  602. text-align: right;
  603. display: flex;
  604. flex-direction: column;
  605. .attr-box {
  606. font-size: 26rpx;
  607. font-family: PingFang SC;
  608. font-weight: bold;
  609. color: #333333;
  610. padding: 10rpx 12rpx;
  611. }
  612. .price {
  613. font-size: 26rpx;
  614. font-family: PingFang SC;
  615. font-weight: bold;
  616. color: #333333;
  617. // color: $font-color-dark;
  618. &:before {
  619. content: '¥';
  620. margin: 0 2rpx 0 8rpx;
  621. }
  622. }
  623. }
  624. }
  625. }
  626. .price-box {
  627. display: flex;
  628. justify-content: flex-end;
  629. align-items: baseline;
  630. padding-right: 30rpx;
  631. // padding: 20rpx 30rpx;
  632. font-size: $font-sm + 2rpx;
  633. color: $font-color-light;
  634. font-size: 26rpx;
  635. font-family: PingFang SC;
  636. font-weight: 500;
  637. color: #333333;
  638. .num {
  639. margin: 0 8rpx;
  640. }
  641. .blank {
  642. margin-right: 10rpx;
  643. }
  644. .price {
  645. &:before {
  646. content: '¥';
  647. margin: 0 2rpx 0 8rpx;
  648. }
  649. }
  650. }
  651. .action-box {
  652. display: flex;
  653. justify-content: space-between;
  654. align-items: center;
  655. height: 100rpx;
  656. position: relative;
  657. padding-right: 30rpx;
  658. }
  659. .btn_box_action {
  660. display: flex;
  661. align-items: center;
  662. }
  663. .action-btn {
  664. width: 160rpx;
  665. height: 60rpx;
  666. margin: 0;
  667. margin-left: 24rpx;
  668. padding: 0;
  669. text-align: center;
  670. line-height: 60rpx;
  671. font-size: $font-sm + 2rpx;
  672. color: $font-color-dark;
  673. background: #fff;
  674. border-radius: 100px;
  675. &:after {
  676. border-radius: 100px;
  677. }
  678. &.recom {
  679. color: #12ADA9;
  680. &:after {
  681. border-color: #12ADA9;
  682. }
  683. }
  684. &.evaluate {
  685. color: $color-yellow;
  686. &:after {
  687. border-color: $color-yellow;
  688. }
  689. }
  690. &.share {
  691. color: #ffffff;
  692. background: linear-gradient(0deg, rgba(250, 39, 64, 1), rgba(254, 85, 68, 1));
  693. }
  694. }
  695. }
  696. // 积分投注弹窗
  697. .mask {
  698. z-index: 10;
  699. position: fixed;
  700. top: 0;
  701. right: 0;
  702. bottom: 0;
  703. left: 0;
  704. background-color: rgba(0, 0, 0, 0.5);
  705. width: 100%;
  706. height: 100%;
  707. display: flex;
  708. justify-content: center;
  709. align-items: center;
  710. flex-direction: column;
  711. .pop {
  712. z-index: 12;
  713. width: 560rpx;
  714. height: 379rpx;
  715. background: rgba(255, 255, 255, 1);
  716. border-radius: 30px;
  717. .pop-box {
  718. width: 100%;
  719. height: 100%;
  720. display: flex;
  721. flex-direction: column;
  722. text-align: center;
  723. align-items: center;
  724. margin-top: -72rpx !important;
  725. .pop-img {
  726. width: 177rpx;
  727. height: 186rpx;
  728. margin-bottom: 34rpx;
  729. }
  730. .pop-title {
  731. height: 34rpx;
  732. font-size: 36rpx;
  733. font-weight: 500;
  734. color: rgba(51, 51, 51, 1);
  735. margin-bottom: 32rpx;
  736. }
  737. .number {
  738. width: 454rpx;
  739. height: 78rpx;
  740. background: rgba(234, 234, 234, 1);
  741. background: #eaeaea;
  742. }
  743. }
  744. //关闭按钮
  745. .close-box {
  746. margin-top: 130rpx;
  747. text-align: center;
  748. .close {
  749. width: 83rpx;
  750. height: 83rpx;
  751. }
  752. }
  753. }
  754. }
  755. /* load-more */
  756. .uni-load-more {
  757. display: flex;
  758. flex-direction: row;
  759. height: 80rpx;
  760. align-items: center;
  761. justify-content: center;
  762. }
  763. .uni-load-more__text {
  764. font-size: 28rpx;
  765. color: #999;
  766. }
  767. .uni-load-more__img {
  768. height: 24px;
  769. width: 24px;
  770. margin-right: 10px;
  771. }
  772. .uni-load-more__img > view {
  773. position: absolute;
  774. }
  775. .uni-load-more__img > view view {
  776. width: 6px;
  777. height: 2px;
  778. border-top-left-radius: 1px;
  779. border-bottom-left-radius: 1px;
  780. background: #999;
  781. position: absolute;
  782. opacity: 0.2;
  783. transform-origin: 50%;
  784. animation: load 1.56s ease infinite;
  785. }
  786. .uni-load-more__img > view view:nth-child(1) {
  787. transform: rotate(90deg);
  788. top: 2px;
  789. left: 9px;
  790. }
  791. .uni-load-more__img > view view:nth-child(2) {
  792. transform: rotate(180deg);
  793. top: 11px;
  794. right: 0;
  795. }
  796. .uni-load-more__img > view view:nth-child(3) {
  797. transform: rotate(270deg);
  798. bottom: 2px;
  799. left: 9px;
  800. }
  801. .uni-load-more__img > view view:nth-child(4) {
  802. top: 11px;
  803. left: 0;
  804. }
  805. .load1,
  806. .load2,
  807. .load3 {
  808. height: 24px;
  809. width: 24px;
  810. }
  811. .load2 {
  812. transform: rotate(30deg);
  813. }
  814. .load3 {
  815. transform: rotate(60deg);
  816. }
  817. .load1 view:nth-child(1) {
  818. animation-delay: 0s;
  819. }
  820. .load2 view:nth-child(1) {
  821. animation-delay: 0.13s;
  822. }
  823. .load3 view:nth-child(1) {
  824. animation-delay: 0.26s;
  825. }
  826. .load1 view:nth-child(2) {
  827. animation-delay: 0.39s;
  828. }
  829. .load2 view:nth-child(2) {
  830. animation-delay: 0.52s;
  831. }
  832. .load3 view:nth-child(2) {
  833. animation-delay: 0.65s;
  834. }
  835. .load1 view:nth-child(3) {
  836. animation-delay: 0.78s;
  837. }
  838. .load2 view:nth-child(3) {
  839. animation-delay: 0.91s;
  840. }
  841. .load3 view:nth-child(3) {
  842. animation-delay: 1.04s;
  843. }
  844. .load1 view:nth-child(4) {
  845. animation-delay: 1.17s;
  846. }
  847. .load2 view:nth-child(4) {
  848. animation-delay: 1.3s;
  849. }
  850. .load3 view:nth-child(4) {
  851. animation-delay: 1.43s;
  852. }
  853. @-webkit-keyframes load {
  854. 0% {
  855. opacity: 1;
  856. }
  857. 100% {
  858. opacity: 0.2;
  859. }
  860. }
  861. </style>