order.vue 30 KB

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