order.vue 30 KB

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