sporder.vue 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947
  1. <template>
  2. <app-layout>
  3. <view v-if="!toSearch" style="z-index: 50">
  4. <view class='status' v-if="is_mall">
  5. <view class='status-list main-between'>
  6. <view @click='tab(1)' class="left-status">碎屏险</view>
  7. </view>
  8. </view>
  9. <view :class="[`search`, `${is_mall?'':'no-mall'}`]">
  10. <view @click='beSearch' class="main-center search-content cross-center">
  11. <image src="/static/image/icon/icon-search.png"></image>
  12. <text>搜索</text>
  13. </view>
  14. </view>
  15. <app-tab-nav :setTop="setTop" :placeHeight="placeHeight" setHeight="96" :tabList="tabList" padding="0"
  16. :activeItem="activeTab" @click="tabStatus"></app-tab-nav>
  17. <view v-if="_num == 2" @click="scan" class='scan'>
  18. <image src='./../image/scan.png'></image>
  19. </view>
  20. </view>
  21. <view v-if="toSearch" class="search-item main-between cross-center">
  22. <view class="search-input">
  23. <image src='/static/image/icon/icon-search.png'></image>
  24. <input v-if="status == 1 && toSearch" focus @confirm='search' confirm-type='search' v-model='keyword'
  25. placeholder-style='color:#999999;font-size:13px;' placeholder='输入订单号/商品名称/店铺名称搜索'/>
  26. <input v-if="status == 2 && toSearch" focus @confirm='search' confirm-type='search' v-model='keyword'
  27. placeholder-style='color:#999999;font-size:13px;' placeholder='输入卡券名称/用户昵称搜索'/>
  28. </view>
  29. <view @click="cancelSeacrch">取消</view>
  30. </view>
  31. <view v-if="!searchResult && toSearch" :class="[`search-history`,`${list.length == 0 ? '' : 'go-out'}`]">
  32. <view v-if="candidate.length != 0" class='main-between search-title'>
  33. <view>历史搜索</view>
  34. <view @click="clear">
  35. <image class="history-img" src="/static/image/icon/delete.png"></image>
  36. </view>
  37. </view>
  38. <view class='flex-wrap history-list'>
  39. <view @click="keywordSearch(item)" class="keyword-item box-grow-0" v-for="item in candidate"
  40. :key="item">
  41. <text class="t-omit">{{item}}</text>
  42. </view>
  43. </view>
  44. </view>
  45. <view v-if="toSearch" class="search-place"></view>
  46. <template v-if="status == 1">
  47. <view v-for="item in list" :key="item.id" class="item">
  48. <view class='main-between item-top'>
  49. <view class='shop t-omit'>
  50. <image src='./../image/shop.png'></image>
  51. <text>{{item.store.name}}</text>
  52. </view>
  53. <view class="item-status" v-if="item.clerk_id > 0">已核销</view>
  54. <view class="item-status" v-else-if="item.cancel_status == 1">已退款</view>
  55. <view class="item-status" v-else>未核销</view>
  56. </view>
  57. <view @click="toDetail(item.id)">
  58. <view class="goods" :style="{'margin-top':`${index == 0 ?'0':'12'}px`}" v-for="goods in item.detail"
  59. :key="goods.id">
  60. <image :src='goods.goods.goodsWarehouse.cover_pic'></image>
  61. <view class='goods-info'>
  62. <view class='goods-name t-omit-two'>{{goods.goods.goodsWarehouse.name}}</view>
  63. <view class="goods-attr">
  64. <text v-for="attr in goods.attr_list" :key="attr.id">
  65. {{attr.attr_group_name}}:{{attr.attr_name}}
  66. </text>
  67. </view>
  68. <view>x{{goods.num}}</view>
  69. </view>
  70. <view class='goods-price'>¥ {{goods.total_price}}</view>
  71. </view>
  72. </view>
  73. <view class='total'>合计
  74. <text>¥{{item.total_pay_price}}</text>
  75. (含运费¥{{item.express_price}})
  76. </view>
  77. <view class='dir-right-nowrap' v-if="item.clerk_id == 0 && item.cancel_status != 1">
  78. <view class="refund-text" v-if="item.refund">{{item.refund}}</view>
  79. <view v-else class="clerk-btn dir-right-nowrap" @click="toClerk(item.id)">
  80. <button>核销</button>
  81. </view>
  82. </view>
  83. </view>
  84. </template>
  85. <template v-if="status == 2">
  86. <view v-for="item in list" :key="item.id" class="item card-item">
  87. <image class='card-img' :src='item.pic_url'></image>
  88. <view @click="toCardDetail(item.id)">
  89. <view class='t-omit-two card-name'>{{item.name}}</view>
  90. <view class="surplus-number">剩余{{item.number - item.use_number}}次</view>
  91. <view class='dir-left-nowrap platform cross-center'>
  92. <image class='platform-img' v-if="item.platform == 'wxapp'" src='./../image/wx.png'></image>
  93. <image class='platform-img' v-if="item.platform == 'aliapp'" src='./../image/ali.png'></image>
  94. <view>{{item.nickname}}</view>
  95. </view>
  96. </view>
  97. <view class='cross-center card-clerk'>
  98. <view v-if="item.is_use == 0 && item.receive_id == 0" class="clerk-btn dir-right-nowrap" @click="toClerkCard(item.id)">
  99. <button>核销</button>
  100. </view>
  101. <view v-else-if="item.is_use == 0 && item.receive_id > 0" class="clerk-btn-1">
  102. 已转赠
  103. </view>
  104. <image v-else class='clerked-img' src='./../image/clerked.png'></image>
  105. </view>
  106. </view>
  107. </template>
  108. <view class='no-tip' v-if="list.length == 0 && status == 1">
  109. <image :src='clerkImg.order'></image>
  110. <view>没有任何订单哦~</view>
  111. </view>
  112. <view class='no-tip' v-if="list.length == 0 && status == 2">
  113. <image :src='clerkImg.card'></image>
  114. <view>没有任何卡券哦~</view>
  115. </view>
  116. </app-layout>
  117. </template>
  118. <script>
  119. import appTabNav from "../../../components/basic-component/app-tab-nav/app-tab-nav.vue";
  120. import {mapState} from "vuex";
  121. export default {
  122. name: "sporder",
  123. components: {
  124. "app-tab-nav": appTabNav,
  125. },
  126. data() {
  127. return {
  128. activeTab: 1,
  129. order_list: [
  130. {id: 2, name: '未核销'},
  131. {id: 1, name: '已核销'},
  132. {id: 5, name: '已退款'},
  133. {id: 3, name: '我的'},
  134. ],
  135. card_list: [
  136. {id: 2, name: '未核销'},
  137. {id: 1, name: '已核销'},
  138. {id: 3, name: '我的'},
  139. ],
  140. tabList: [],
  141. candidate: [],
  142. status: 1,
  143. placeHeight: 312,
  144. setTop: 190,
  145. more_list: false,
  146. is_mall: false,
  147. toSearch: false,
  148. searchResult: false,
  149. first: false,
  150. keyword: '',
  151. list: []
  152. };
  153. },
  154. computed: {
  155. ...mapState({
  156. clerkImg: state => state.mallConfig.__wxapp_img.clerk,
  157. mall: state => state.mallConfig.mall
  158. }),
  159. },
  160. onLoad(options) {
  161. this.status = options.status
  162. if (options.type > 0) {
  163. this.activeTab = options.type
  164. }
  165. this.$showLoading({
  166. type: 'global',
  167. text: '加载中...'
  168. });
  169. this.$request({
  170. url: this.$api.clerk.info
  171. }).then(response => {
  172. if (response.code == 0) {
  173. this.is_mall = response.data.is_mall;
  174. if (!response.data.is_mall) {
  175. this.placeHeight = 210;
  176. this.setTop = 88;
  177. }
  178. this.list = [];
  179. this.getList();
  180. } else {
  181. uni.redirectTo({
  182. url: '/pages/user-center/user-center'
  183. })
  184. }
  185. })
  186. },
  187. onReachBottom: function () {
  188. if (this.more_list) {
  189. this.getMore();
  190. }
  191. },
  192. onShow(options) {
  193. let that = this;
  194. if (that.first) {
  195. that.$request({
  196. url: that.$api.clerk.info
  197. }).then(response => {
  198. if (response.code == 0) {
  199. that.is_mall = response.data.is_mall;
  200. if (!response.data.is_mall) {
  201. this.placeHeight = 112
  202. }
  203. that.getList();
  204. } else {
  205. uni.redirectTo({
  206. url: '/pages/user-center/user-center'
  207. })
  208. }
  209. })
  210. }
  211. if (!that.first) {
  212. that.getList();
  213. }
  214. },
  215. methods: {
  216. getMore() {
  217. let that = this;
  218. let url;
  219. let para;
  220. if (that.load) {
  221. return false
  222. }
  223. that.load = true;
  224. if (that.status == 1) {
  225. if (that.activeTab == 3) {
  226. url = that.$api.clerk.my;
  227. para = {
  228. page: that.page,
  229. }
  230. } else if (that.activeTab == 5) {
  231. url = that.$api.clerk.order;
  232. para = {
  233. status: that.activeTab,
  234. keyword_1: 8,
  235. keyword: that.keyword
  236. }
  237. } else {
  238. url = that.$api.clerk.order;
  239. para = {
  240. page: that.page,
  241. is_clerk: that.activeTab,
  242. }
  243. }
  244. } else {
  245. if (that.activeTab == 3) {
  246. url = that.$api.clerk.my_card;
  247. para = {
  248. page: that.page,
  249. }
  250. } else {
  251. url = that.$api.clerk.card;
  252. para = {
  253. page: that.page,
  254. is_clerk: that.activeTab,
  255. }
  256. }
  257. }
  258. that.$request({
  259. url: url,
  260. data: para,
  261. }).then(response => {
  262. that.$hideLoading();
  263. that.load = false;
  264. if (response.code == 0) {
  265. that.list = that.list.concat(response.data.list);
  266. that.page++;
  267. that.more_list = false;
  268. if (response.data.list.length == response.data.pagination.pageSize) {
  269. that.more_list = true;
  270. }
  271. that.list.forEach(function (row) {
  272. row.refund = null;
  273. if (row.cancel_status == 2) {
  274. row.refund = '申请取消中'
  275. } else if (row.is_pay == 0) {
  276. row.refund = '订单未支付'
  277. }
  278. })
  279. } else {
  280. uni.showToast({
  281. title: response.msg,
  282. icon: 'none',
  283. duration: 1000
  284. });
  285. }
  286. }).catch(response => {
  287. that.load = false;
  288. that.$hideLoading();
  289. });
  290. },
  291. toClerk(id) {
  292. uni.navigateTo({
  293. url: '/pages/order/clerk/clerk?id=' + id
  294. });
  295. },
  296. toClerkCard(id) {
  297. uni.navigateTo({
  298. url: '/pages/card/clerk/clerk?cardId=' + id
  299. });
  300. },
  301. toDetail(id) {
  302. uni.navigateTo({
  303. url: '/plugins/clerk/detail/detail?id=' + id
  304. });
  305. },
  306. toCardDetail(id) {
  307. uni.navigateTo({
  308. url: '/plugins/clerk/detail/detail?card_id=' + id
  309. });
  310. },
  311. keywordSearch(e) {
  312. this.keyword = e;
  313. this.searchResult = true;
  314. this.getList();
  315. // if (this.status == 1) {
  316. // this.getList();
  317. // } else {
  318. // this.getCard();
  319. // }
  320. },
  321. beSearch() {
  322. this.candidate = uni.getStorageSync('clerk_keyword');
  323. if (this.status == 2) {
  324. this.candidate = uni.getStorageSync('clerk_card_keyword');
  325. }
  326. this.toSearch = !this.toSearch;
  327. this.list = [];
  328. this.searchResult = false;
  329. uni.setNavigationBarTitle({
  330. title: "搜索",
  331. })
  332. },
  333. cancelSeacrch() {
  334. this.toSearch = !this.toSearch;
  335. this.keyword = '';
  336. this.getList();
  337. },
  338. search() {
  339. var value = uni.getStorageSync('clerk_keyword');
  340. if (this.status == 2) {
  341. value = uni.getStorageSync('clerk_card_keyword');
  342. }
  343. if (this.keyword.length == 0 || this.keyword.trim().length == 0) {
  344. this.keyword = ''
  345. return
  346. } else if (value.length > 0) {
  347. value.unshift(this.keyword)
  348. } else {
  349. value = [this.keyword]
  350. }
  351. value.forEach(function (row, index) {
  352. if (value[0] == value[index] && index > 0) {
  353. value.splice(index, 1)
  354. }
  355. })
  356. uni.setStorage({
  357. key: "clerk_keyword",
  358. data: value
  359. })
  360. this.getList();
  361. },
  362. // 清除搜索记录
  363. clear() {
  364. let that = this;
  365. uni.removeStorage({
  366. key: this.status == 2 ? 'clerk_card_keyword' :'clerk_keyword',
  367. success(res) {
  368. that.candidate = [];
  369. uni.showToast({
  370. title: '清理成功',
  371. duration: 1000,
  372. type: 'success',
  373. mask: false
  374. });
  375. }
  376. });
  377. },
  378. tabStatus(e) {
  379. let that = this;
  380. if (that.load) {
  381. return false
  382. }
  383. uni.showLoading({
  384. title: '加载中...'
  385. });
  386. that.list = [];
  387. that.page = 2;
  388. that.activeTab = e.currentTarget.dataset.id;
  389. if (this.status == 1) {
  390. this.getList();
  391. } else {
  392. this.getCard();
  393. }
  394. },
  395. tab(e) {
  396. let that = this;
  397. if (that.load) {
  398. return false
  399. }
  400. uni.showLoading({
  401. title: '加载中...'
  402. });
  403. that.list = [];
  404. that.page = 2;
  405. that.activeTab = 2;
  406. that.status = e;
  407. if (e == 1) {
  408. this.tabList = this.order_list;
  409. this.getList();
  410. } else {
  411. this.tabList = this.card_list;
  412. this.getCard();
  413. }
  414. },
  415. getList() {
  416. let that = this;
  417. let url;
  418. let para;
  419. if (that.load) {
  420. return false
  421. }
  422. that.load = true;
  423. if (this.activeTab == 3) {
  424. url = that.$api.clerk.my_sp;
  425. para = {
  426. keyword_1: 8,
  427. keyword: this.keyword
  428. }
  429. } else if (this.activeTab == 5) {
  430. url = that.$api.clerk.order;
  431. para = {
  432. status: this.activeTab,
  433. keyword_1: 8,
  434. keyword: this.keyword
  435. }
  436. } else {
  437. url = that.$api.clerk.order;
  438. para = {
  439. is_clerk: this.activeTab,
  440. keyword_1: 8,
  441. keyword: this.keyword
  442. }
  443. }
  444. that.$request({
  445. url: url,
  446. data: para,
  447. }).then(response => {
  448. uni.hideLoading();
  449. that.$hideLoading();
  450. that.load = false;
  451. if (response.code == 0) {
  452. that.first = true;
  453. that.list = response.data.list;
  454. that.page = 2;
  455. that.searchResult = true;
  456. that.more_list = false;
  457. if (response.data.list.length == response.data.pagination.pageSize) {
  458. that.more_list = true;
  459. }
  460. that.list.forEach(function (row) {
  461. row.refund = null;
  462. if (row.cancel_status == 2) {
  463. row.refund = '申请退款中'
  464. } else if (row.is_pay == 0) {
  465. row.refund = '订单未支付'
  466. }
  467. })
  468. } else {
  469. uni.showToast({
  470. title: response.msg,
  471. icon: 'none',
  472. duration: 1000
  473. });
  474. }
  475. }).catch(response => {
  476. that.load = false;
  477. uni.hideLoading();
  478. that.$hideLoading();
  479. });
  480. },
  481. getCard() {
  482. let that = this;
  483. let url;
  484. let para;
  485. if (that.load) {
  486. return false
  487. }
  488. that.load = true;
  489. if (this.activeTab == 3) {
  490. url = that.$api.clerk.my_card;
  491. para = {
  492. keyword: this.keyword
  493. }
  494. } else {
  495. url = that.$api.clerk.card;
  496. para = {
  497. is_clerk: this.activeTab,
  498. keyword: this.keyword
  499. }
  500. }
  501. that.$request({
  502. url: url,
  503. data: para,
  504. }).then(response => {
  505. that.load = false;
  506. uni.hideLoading();
  507. that.$hideLoading();
  508. if (response.code == 0) {
  509. that.list = response.data.list;
  510. that.page = 2;
  511. that.searchResult = true;
  512. that.more_list = false;
  513. if (response.data.list.length == response.data.pagination.pageSize) {
  514. that.more_list = true;
  515. }
  516. } else {
  517. uni.showToast({
  518. title: response.msg,
  519. icon: 'none',
  520. duration: 1000
  521. });
  522. }
  523. }).catch(response => {
  524. that.load = false;
  525. uni.hideLoading();
  526. that.$hideLoading();
  527. });
  528. },
  529. }
  530. }
  531. </script>
  532. <style scoped lang="scss">
  533. .search {
  534. height: #{88rpx};
  535. padding: #{16rpx} #{26rpx};
  536. background-color: #efeff4;
  537. position: fixed;
  538. top: #{104rpx};
  539. left: 0;
  540. right: 0;
  541. z-index: 10;
  542. }
  543. .search-place {
  544. height: #{120rpx};
  545. width: 100%;
  546. }
  547. .search.no-mall {
  548. top: 0;
  549. }
  550. .search-content {
  551. background-color: #fff;
  552. height: #{56rpx};
  553. border-radius: #{28rpx};
  554. }
  555. .search-content image {
  556. height: #{24rpx};
  557. width: #{24rpx};
  558. }
  559. .search-content text {
  560. color: #b2b2b2;
  561. font-size: #{24rpx};
  562. margin: 0 #{5rpx};
  563. }
  564. .tab-list {
  565. height: #{96rpx};
  566. position: fixed;
  567. top: #{192rpx};
  568. left: 0;
  569. right: 0;
  570. z-index: 10;
  571. width: 100%;
  572. background-color: #fff;
  573. border-bottom: #{1rpx} solid #e2e2e2;
  574. }
  575. .tab-list.no-mall {
  576. top: #{88rpx};
  577. }
  578. .tab-item {
  579. text-align: center;
  580. font-size: #{28rpx};
  581. color: #666;
  582. }
  583. .tab-item text {
  584. height: #{92rpx};
  585. line-height: #{92rpx};
  586. display: inline-block;
  587. }
  588. .tab-item text.active {
  589. border-bottom: #{4rpx} solid #ff4544;
  590. color: #ff4544;
  591. }
  592. .status {
  593. width: 100%;
  594. height: #{104rpx};
  595. background-color: #fff;
  596. position: fixed;
  597. top: 0;
  598. left: 0;
  599. right: 0;
  600. z-index: 10;
  601. }
  602. .status-list {
  603. width: #{368rpx};
  604. height: #{56rpx};
  605. margin: #{24rpx} auto;
  606. border-radius: #{28rpx};
  607. line-height: #{54rpx};
  608. font-size: #{24rpx};
  609. color: #666666;
  610. background-color: #fff;
  611. }
  612. .status-list view {
  613. width: 50%;
  614. text-align: center;
  615. border: #{2rpx} solid #ff4544;
  616. }
  617. .status-list .active {
  618. background-color: #ff4544;
  619. height: #{56rpx};
  620. color: #ffffff;
  621. }
  622. .item {
  623. width: #{702rpx};
  624. margin: 0 #{24rpx} #{24rpx};
  625. background-color: #fff;
  626. border-radius: #{16rpx};
  627. padding: #{24rpx};
  628. position: relative;
  629. }
  630. .item.card-item {
  631. padding: #{40rpx} #{160rpx} #{40rpx} #{132rpx};
  632. }
  633. .shop {
  634. font-size: #{24rpx};
  635. color: #353535;
  636. max-width: #{500rpx};
  637. }
  638. .shop image {
  639. height: #{24rpx};
  640. width: #{24rpx};
  641. margin-right: #{12rpx};
  642. }
  643. .goods {
  644. height: #{160rpx};
  645. position: relative;
  646. }
  647. .goods image {
  648. height: #{160rpx};
  649. width: #{160rpx};
  650. border-radius: #{10rpx};
  651. float: left;
  652. margin-right: #{20rpx};
  653. }
  654. .goods-info {
  655. font-size: #{24rpx};
  656. color: #999999;
  657. }
  658. .goods-name {
  659. color: #353535;
  660. height: #{72rpx};
  661. }
  662. .goods-price {
  663. color: #353535;
  664. font-size: #{24rpx};
  665. position: absolute;
  666. bottom: 0;
  667. right: 0;
  668. }
  669. .total {
  670. font-size: #{24rpx};
  671. margin-top: #{28rpx};
  672. color: #999999;
  673. text-align: right;
  674. }
  675. .total text {
  676. color: #353535;
  677. font-size: #{28rpx};
  678. }
  679. .clerk-btn button {
  680. width: #{138rpx};
  681. text-align: center;
  682. height: #{48rpx} !important;
  683. border-radius: #{24rpx};
  684. border: #{1rpx} solid #ff4544;
  685. line-height: #{46rpx};
  686. margin-top: #{28rpx};
  687. font-size: #{24rpx};
  688. color: #ff4544;
  689. background-color: #fff;
  690. }
  691. .card-clerk .clerk-btn button {
  692. margin-top: 0;
  693. }
  694. .clerk-btn button::after {
  695. border: 0;
  696. }
  697. .clerk-btn-1 {
  698. width: #{138rpx};
  699. padding: #{8rpx 0};
  700. text-align: center;
  701. color: #ff4544;
  702. background-color: #ffecec;
  703. font-size: $uni-font-size-weak-one;
  704. }
  705. .search-item {
  706. height: #{96rpx};
  707. background-color: #efeff4;
  708. padding: 0 #{24rpx};
  709. font-size: #{28rpx};
  710. color: #00c203;
  711. width: 100%;
  712. position: fixed;
  713. top: 0;
  714. left: 0;
  715. z-index: 22;
  716. }
  717. .search-input {
  718. height: #{64rpx};
  719. position: relative;
  720. width: #{620rpx};
  721. }
  722. .search-input image {
  723. height: #{22rpx};
  724. width: #{22rpx};
  725. position: absolute;
  726. top: #{21rpx};
  727. left: #{28rpx};
  728. z-index: 10;
  729. }
  730. .search-input input {
  731. padding-left: #{62rpx};
  732. background-color: #fff;
  733. border-radius: #{32rpx};
  734. height: #{64rpx};
  735. font-size: #{26rpx};
  736. color: #353535;
  737. }
  738. .search-history {
  739. position: fixed;
  740. top: 0;
  741. left: 0;
  742. right: 0;
  743. height: 100%;
  744. background-color: #fff;
  745. padding: #{120rpx} #{4rpx} #{24rpx};
  746. font-size: #{28rpx};
  747. color: #666;
  748. z-index: 20;
  749. }
  750. .search-title {
  751. padding: 0 #{20rpx};
  752. margin-bottom: #{24rpx};
  753. }
  754. .keyword-item {
  755. height: #{64rpx};
  756. line-height: #{64rpx};
  757. padding: 0 #{20rpx};
  758. background-color: #f7f7f7;
  759. color: #333;
  760. border-radius: #{32rpx};
  761. font-size: #{28rpx};
  762. margin-left: #{20rpx};
  763. margin-bottom: #{20rpx};
  764. max-width: 90%;
  765. }
  766. .scan {
  767. position: fixed;
  768. bottom: #{80rpx};
  769. right: 0;
  770. z-index: 30;
  771. height: #{116rpx};
  772. width: #{112rpx};
  773. }
  774. .scan button {
  775. height: #{116rpx} !important;
  776. width: #{112rpx};
  777. border-top-left-radius: #{58rpx};
  778. border-bottom-left-radius: #{58rpx};
  779. border: #{1rpx} solid #cdcdcd;
  780. border-right: 0;
  781. background-color: rgba(255, 255, 255, 0.8);
  782. box-shadow: 0 0 #{10rpx} rgb(239, 239, 239);
  783. text-align: center;
  784. }
  785. .scan button image {
  786. height: #{64rpx};
  787. width: #{64rpx};
  788. margin-top: #{26rpx};
  789. }
  790. .item .card-img {
  791. position: absolute;
  792. top: #{40rpx};
  793. left: #{24rpx};
  794. width: #{88rpx};
  795. height: #{88rpx};
  796. border-radius: 50%;
  797. }
  798. .platform {
  799. font-size: #{24rpx};
  800. color: #999999;
  801. height: #{24rpx};
  802. margin-top: #{20rpx};
  803. }
  804. .platform-img {
  805. height: #{24rpx};
  806. width: #{24rpx};
  807. margin-right: #{12rpx};
  808. }
  809. .card-name {
  810. width: #{370rpx};
  811. font-size: #{28rpx};
  812. color: #353535;
  813. }
  814. .card-clerk {
  815. position: absolute;
  816. right: #{24rpx};
  817. top: 0;
  818. height: #{168rpx};
  819. }
  820. .card-clerk .clerked-img {
  821. width: #{120rpx};
  822. height: #{120rpx};
  823. }
  824. .no-tip {
  825. position: fixed;
  826. top: #{400rpx};
  827. left: 0;
  828. right: 0;
  829. margin: 0 auto;
  830. color: #666666;
  831. font-size: #{24rpx};
  832. width: #{240rpx};
  833. text-align: center;
  834. }
  835. .no-tip image {
  836. height: #{240rpx};
  837. width: #{240rpx};
  838. margin-bottom: #{20rpx};
  839. }
  840. .left-status {
  841. border-top-left-radius: #{28rpx};
  842. border-bottom-left-radius: #{28rpx};
  843. }
  844. .right-status {
  845. border-top-right-radius: #{28rpx};
  846. border-bottom-right-radius: #{28rpx};
  847. }
  848. .history-img {
  849. height: #{34rpx};
  850. width: #{28rpx};
  851. }
  852. .history-list {
  853. max-height: #{420rpx};
  854. overflow: hidden;
  855. }
  856. .item-top {
  857. margin-bottom: #{28rpx};
  858. }
  859. .item-top .item-status {
  860. font-size: #{24rpx};
  861. color: #ff4544;
  862. }
  863. .goods-attr {
  864. margin-bottom: #{16rpx};
  865. }
  866. .goods-attr text {
  867. margin-right: #{18rpx};
  868. }
  869. .refund-text {
  870. font-size: #{24rpx};
  871. color: #ff4544;
  872. margin-top: #{24rpx};
  873. text-align: right;
  874. }
  875. .surplus-number {
  876. font-size: 24#{rpx};
  877. color: #999999;
  878. margin: 12#{rpx} 0;
  879. }
  880. </style>