推拿小程序前端代码仓库
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

207 lines
4.3 KiB

3 weeks ago
  1. <template>
  2. <view class="page">
  3. <navbar title="核销明细" leftClick @leftClick="$utils.navigateBack" color="#fff" />
  4. <view class="tabs">
  5. <uv-tabs
  6. :list="tabs"
  7. @click="onTabChange"
  8. :customStyle="{
  9. backgroundColor: '#FFFFFF',
  10. }"
  11. :activeStyle="{
  12. color: '#84A73F',
  13. fontSize: '28rpx',
  14. whiteSpace: 'nowrap',
  15. paddingTop: '29rpx',
  16. paddingBottom: '21rpx',
  17. }"
  18. :inactiveStyle="{
  19. color: '#000000',
  20. fontSize: '28rpx',
  21. whiteSpace: 'nowrap',
  22. paddingTop: '29rpx',
  23. paddingBottom: '21rpx',
  24. }"
  25. lineHeight="5rpx"
  26. lineWidth="92rpx"
  27. lineColor="linear-gradient(to right, #84A73F, #D8FF8F)"
  28. :scrollable="false"
  29. ></uv-tabs>
  30. </view>
  31. <view class="flex bar">
  32. <view class="left">
  33. <uv-datetime-picker
  34. ref="datetimePicker"
  35. v-model="queryParams.useTime"
  36. mode="year-month"
  37. confirmColor="#84A73F"
  38. @confirm="onTimeChange"
  39. ></uv-datetime-picker>
  40. <button plain class="flex btn" @click="openTimePicker">
  41. <text>{{ displaySelectedTime }}</text>
  42. <image class="btn-icon" src="../static/runningWater/icon-arrow.png" mode="widthFix"></image>
  43. </button>
  44. </view>
  45. <view class="right">
  46. <text>{{ `${displaySelectedMonth}总核销:` }}</text>
  47. <text class="highlight">{{ total }}</text>
  48. </view>
  49. </view>
  50. <template v-if="current == 0" >
  51. <view class="list order">
  52. <orderCard class="list-item"
  53. v-for="item in list"
  54. :key="item.id"
  55. :data="item"
  56. :readonly="true"
  57. ></orderCard>
  58. </view>
  59. </template>
  60. <template v-else-if="current == 1" >
  61. <view class="list voucher">
  62. <voucherCard class="list-item"
  63. v-for="item in list"
  64. :key="item.id"
  65. :data="item"
  66. ></voucherCard>
  67. </view>
  68. </template>
  69. </view>
  70. </template>
  71. <script>
  72. import dayjs from 'dayjs'
  73. import mixinsList from '@/mixins/list.js'
  74. import orderCard from '@/components/order/orderCard.vue'
  75. import voucherCard from '../components/verifyRecord/voucherCard.vue'
  76. const TAB_AND_API_FIELDS_MAPPING = {
  77. 0: 'fetchOverOrder',
  78. 1: 'fetchOverVoucher',
  79. }
  80. export default {
  81. mixins : [mixinsList],
  82. components: {
  83. orderCard,
  84. voucherCard,
  85. },
  86. data() {
  87. return {
  88. tabs: [{
  89. name: "核销商品"
  90. }, {
  91. name: "核销代金券"
  92. }],
  93. current: 0,
  94. queryParams: {
  95. pageNo: 1,
  96. pageSize: 10,
  97. useTime: dayjs().format('YYYY-MM'),
  98. },
  99. };
  100. },
  101. computed: {
  102. mixinsListApi() {
  103. return TAB_AND_API_FIELDS_MAPPING[this.current]
  104. },
  105. displaySelectedTime() {
  106. return this.$dayjs(this.queryParams.useTime).format("YYYY年M月")
  107. },
  108. displaySelectedMonth() {
  109. return this.$dayjs(this.queryParams.useTime).format("M月")
  110. },
  111. },
  112. methods: {
  113. onTabChange(e) {
  114. this.current = e.index
  115. this.list = []
  116. this.total = 0
  117. this.getData()
  118. },
  119. openTimePicker() {
  120. this.$refs.datetimePicker.open();
  121. },
  122. onTimeChange(e) {
  123. this.queryParams.useTime = this.$dayjs(e.value).format('YYYY-MM')
  124. this.getData()
  125. },
  126. },
  127. }
  128. </script>
  129. <style scoped lang="scss">
  130. .page {
  131. background-color: $uni-bg-color;
  132. min-height: 100vh;
  133. /deep/ .nav-bar__view {
  134. background-image: linear-gradient(#84A73F, #D8FF8F);
  135. }
  136. }
  137. .tabs {
  138. /deep/ .uv-tabs__wrapper__nav__line {
  139. bottom: 0;
  140. }
  141. }
  142. .bar {
  143. padding: 0 58rpx 0 25rpx;
  144. margin-top: 32rpx;
  145. justify-content: space-between;
  146. .left {
  147. .btn {
  148. border: none;
  149. color: #000000;
  150. font-size: 28rpx;
  151. line-height: 40rpx;
  152. &-icon {
  153. width: 28rpx;
  154. height: auto;
  155. margin-left: 12rpx;
  156. }
  157. }
  158. }
  159. .right {
  160. color: #333333;
  161. font-size: 28rpx;
  162. .highlight {
  163. margin-left: 10rpx;
  164. color: $uni-color-light;
  165. }
  166. }
  167. }
  168. .list {
  169. margin-top: 26rpx;
  170. &-item {
  171. display: block;
  172. & + & {
  173. margin-top: 20rpx;
  174. }
  175. }
  176. &.order {
  177. padding: 0 17rpx;
  178. }
  179. &.voucher {
  180. padding: 0 13rpx;
  181. }
  182. }
  183. </style>