陶杰
2025-01-08 b05a84f9178894b40a1d6a601b577403d7d93c46
sub_pages/customer/coupon/point-history.vue
@@ -1,6 +1,84 @@
<template>
   <!-- 列表页面 -->
   <view>
      <!-- 查询条件 -->
      <view class="component-filter-container m-t-12 flex">
         <view class="flex1 w-fit m-l-a m-r-0" @click="show_time_picker_time=true"
            :class="[query.recordDateStart?'':'desc-gray']">
            <!-- {{query.recordDateStart&&( (query.recordDateStart||'') + ' ~ ' + (query.recordDateEnd || '')) || '请选择日期'}} -->
            {{query.recordDateStart || '请选择日期'}}
            <image src="@/static/common/icon-arrow-down.png" class="icon-arrow-down"></image>
         </view>
         <view class="flex1 w-fit m-l-a m-r-0" @click.stop="$refs.popup_level.open()">
            {{ query.typeStr || '积分类型' }}
            <image src="@/static/common/icon-arrow-down.png" class="icon-arrow-down"></image>
         </view>
         <view class="flex1 w-fit m-l-a m-r-0" @click.stop="()=>{
            query.typeStr = ''
            query.type = ''
            query.recordDateStart = ''
            query.recordDateEnd = ''
            refreshList()
         }">
            重置
         </view>
      </view>
      <view class="p15" style="min-height: calc(100vh - 260rpx);">
         <no-data v-if="!list||list.length==0" style="width: 100%;"></no-data>
         <view v-for="(item,index) in list" :key="index" class="m-b-24">
            <view @click.stop="toDetail(item)" class="notice-item">
               <view v-if="item.typeStr" class="type">{{item.typeStr||'-'}}</view>
               <view class="time">{{item.recordDate || ''}}</view>
               <view class="form-item">
                  <view class="form-item-label">变更类型</view>
                  <view class="form-item-value">{{item.changeTypeStr || ''}}</view>
               </view>
               <view class="form-item">
                  <view class="form-item-label">积分</view>
                  <view class="form-item-value">{{item.point || ''}}</view>
               </view>
               <view class="form-item">
                  <view class="form-item-label" style="min-width: 80rpx;">备注</view>
                  <view class="form-item-value" style="word-break: break-word;">{{item.remarks || ''}}</view>
               </view>
            </view>
         </view>
      </view>
      <!-- 判断是否到底了,自动吧 -->
      <footer-msg :more="page.total>0&&page.total>page.current*page.size"></footer-msg>
      <u-calendar :show="show_time_picker_time" mode="single" @confirm="select_time_picker_time" :monthNum="3"
         @cancel="show_time_picker_time = false" rowHeight="100" @close="show_time_picker_time = false"
         minDate="2024-07-01" :maxDate="maxDate" toolTip="选择日期">
      </u-calendar>
      <uni-popup ref="popup_level" type="bottom">
         <view class="component-popup_input_all">
            <view class="text-center m-b-40" style="font-size: 48rpx;font-weight: 600;">点击选择不同类型</view>
            <view v-for="(item,i) in type_columns" :key="i" class="m-t-20">
               <view class="m-t-12 flex value-items">
                  <view class="value-item" @click="()=>{
                     if(each.value!==query.value){
                        query.type = each.value
                        query.typeStr = each.label
                        refreshList()
                        $refs.popup_level.close()
                     }
                  }" :class="[query.type==each.value?'cur':'']" v-for="(each, j) in item" :key="j">
                     {{ each.label || '-' }}
                  </view>
               </view>
            </view>
            <view class="button-space"></view>
            <view>
               <view class="button-green" @click="$refs.popup_level.close()">关闭
               </view>
            </view>
         </view>
      </uni-popup>
   </view>
</template>
@@ -8,15 +86,88 @@
   export default {
      data() {
         return {
            query: {
               // status: ''
               recordDateStart: '',
               recordDateEnd: '',
               type: '',
               typeStr: '',
            },
            show_time_picker_time: false,
            maxDate: '',
            type_columns: [],
         }
      },
      onLoad() {
         this.maxDate = this.$util.toDate(new Date())
         this.$http.request('get', '/api/code/value', {
            params: {
               type: 'point_type'
            }
         }).then(res => {
            var data = res.data
            this.type_columns = [data || []]
            this.type_columns[0].unshift({
               label: '全部',
               value: ''
            })
         })
         this.listApi = '/api/customer/point/list'
         this.getList()
      },
      onReachBottom() {
         this.getMore()
      },
      async onPullDownRefresh() {
         this.page.current = 1
         await this.getList()
         uni.stopPullDownRefresh()
      },
      methods: {
         select_time_picker_time(e) {
            console.log('select_time_picker_time', e)
            if (e && e.length > 0) {
               this.query.recordDateStart = e[0]
               this.query.recordDateEnd = e[e.length - 1]
               this.show_time_picker_time = false
            } else {
               this.query.recordDateStart = ''
               this.query.recordDateEnd = ''
               this.show_time_picker_time = false
            }
            this.refreshList()
         }
      }
   }
</script>
<style>
<style lang="scss" scoped>
   .notice-item {
      padding: 20rpx;
      font-size: 28rpx;
      background-color: #fff;
</style>
      .type {
         font-weight: 600;
      }
      .time {
         font-size: 24rpx;
         color: darkgray;
      }
      .form-item {
         display: flex;
         .form-item-label {}
         .form-item-value {
            flex: 1;
            text-align: right;
         }
      }
   }
</style>