|
|
@@ -0,0 +1,603 @@
|
|
|
+<!--
|
|
|
+ 售后/退款记录列表
|
|
|
+ 用途:工作台「退款记录」;顶部交互对齐 home/order.vue(日期+搜客户+筛选面板)。
|
|
|
+ 接口:GET /refund/list?useDefaultLast30=1&sameDay=&customId=
|
|
|
+-->
|
|
|
+<template>
|
|
|
+ <view class="app-content">
|
|
|
+ <!-- 客户搜索下拉,对齐订单列表 -->
|
|
|
+ <view class="search-dropdown-wrap" v-if="showSearch">
|
|
|
+ <view class="search-dropdown">
|
|
|
+ <block v-if="!$util.isEmpty(searchList)">
|
|
|
+ <view
|
|
|
+ class="search-item"
|
|
|
+ v-for="(item, index) in searchList"
|
|
|
+ :key="index"
|
|
|
+ @click="getCustom(item)"
|
|
|
+ >
|
|
|
+ <view class="search-name">{{ item.name }}</view>
|
|
|
+ <view class="search-sub">
|
|
|
+ {{ item.visitTime ? item.visitTime.substr(5, 11) : '' }}
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </block>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+
|
|
|
+ <view class="input-wrap_box">
|
|
|
+ <view class="select-dn_bx">
|
|
|
+ <DateSelect
|
|
|
+ ref="dateSelectRef"
|
|
|
+ class="bar"
|
|
|
+ top="0"
|
|
|
+ defaultShowName="近30天"
|
|
|
+ @selectDateFn="selectDateFn"
|
|
|
+ />
|
|
|
+ </view>
|
|
|
+ <view class="search-container">
|
|
|
+ <AppSearchModule ref="appSearch" placeholder="搜索客户" @input="searchFn" />
|
|
|
+ <view v-if="customId != 0" class="search-clear-overlay" @click.stop="clearSearch">清空</view>
|
|
|
+ </view>
|
|
|
+ <view class="filter-btn-wrap">
|
|
|
+ <button class="admin-button-com filter-btn" @click="openFilterPanel">筛选</button>
|
|
|
+ <view v-if="hasActiveFilters" class="filter-dot"></view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+
|
|
|
+ <view class="total-bar">合计 ¥{{ totalAmount }}</view>
|
|
|
+
|
|
|
+ <view class="list-wrap">
|
|
|
+ <block v-if="!$util.isEmpty(list.data)">
|
|
|
+ <view
|
|
|
+ class="refund-card"
|
|
|
+ v-for="(item, index) in list.data"
|
|
|
+ :key="index"
|
|
|
+ @click="goDetail(item)"
|
|
|
+ >
|
|
|
+ <view class="row-top">
|
|
|
+ <text class="custom-name">{{ item.customName || '客户' }}</text>
|
|
|
+ <text class="amount">¥{{ formatMoney(item.refundPrice) }}</text>
|
|
|
+ </view>
|
|
|
+ <view class="row">
|
|
|
+ <text class="tag" :class="{ next: item.sameDay == 0 }">
|
|
|
+ {{ item.sameDay == 0 ? '隔天售后' : '当天售后' }}
|
|
|
+ </text>
|
|
|
+ <text v-if="!item.relateOrderSn" class="tag free">无原单</text>
|
|
|
+ </view>
|
|
|
+ <view class="row">单号:{{ item.orderSn || '-' }}</view>
|
|
|
+ <view class="row" v-if="item.relateOrderSn">原单:{{ item.relateOrderSn }}</view>
|
|
|
+ <view class="row">
|
|
|
+ 类型:{{ item.refundType == 1 ? '退货退款' : '仅退款' }}
|
|
|
+ <text class="split">·</text>
|
|
|
+ {{ fundText(item) }}
|
|
|
+ </view>
|
|
|
+ <view class="row">操作:{{ item.shopAdminName || '-' }}</view>
|
|
|
+ <view class="row">时间:{{ item.addTime ? item.addTime.substr(5, 11) : '' }}</view>
|
|
|
+ <view class="row remark" v-if="!$util.isEmpty(item.remark)">备注:{{ item.remark }}</view>
|
|
|
+ <view
|
|
|
+ class="status"
|
|
|
+ :class="{
|
|
|
+ pending: item.status == 0,
|
|
|
+ pass: item.status == 1,
|
|
|
+ reject: item.status == 2,
|
|
|
+ cancel: item.status == 3
|
|
|
+ }"
|
|
|
+ >{{ statusText(item.status) }}</view>
|
|
|
+ <view class="arrow iconfont iconxiangyou"></view>
|
|
|
+ </view>
|
|
|
+ </block>
|
|
|
+ <block v-else>
|
|
|
+ <app-wrapper-empty title="暂无数据" :is-empty="$util.isEmpty(list.data)" />
|
|
|
+ </block>
|
|
|
+ </view>
|
|
|
+
|
|
|
+ <!-- 筛选面板:售后类型 -->
|
|
|
+ <view v-if="showFilterPanel" class="filter-overlay" @click="closeFilterPanel">
|
|
|
+ <view class="filter-panel" @click.stop>
|
|
|
+ <view class="filter-header">筛选售后</view>
|
|
|
+ <scroll-view class="filter-body" scroll-y>
|
|
|
+ <view class="filter-section">
|
|
|
+ <view class="filter-title">售后类型</view>
|
|
|
+ <view class="filter-options">
|
|
|
+ <view
|
|
|
+ v-for="(item, index) in sameDayOptions"
|
|
|
+ :key="index"
|
|
|
+ class="filter-option"
|
|
|
+ :class="{ active: sameDay === item.value }"
|
|
|
+ @click="onSelectSameDay(index)"
|
|
|
+ >
|
|
|
+ {{ item.label }}
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <view class="filter-section">
|
|
|
+ <view class="filter-title">状态</view>
|
|
|
+ <view class="filter-options">
|
|
|
+ <view
|
|
|
+ v-for="(item, index) in statusOptions"
|
|
|
+ :key="index"
|
|
|
+ class="filter-option"
|
|
|
+ :class="{ active: filterStatus === item.value }"
|
|
|
+ @click="onSelectStatus(index)"
|
|
|
+ >
|
|
|
+ {{ item.label }}
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </scroll-view>
|
|
|
+ <view class="filter-actions">
|
|
|
+ <button class="filter-action-btn clear-btn" @click="clearFilters">重置</button>
|
|
|
+ <button class="filter-action-btn confirm-btn" @click="confirmFilters">确定</button>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import AppWrapperEmpty from '@/components/app-wrapper-empty'
|
|
|
+import AppSearchModule from '@/components/module/app-search'
|
|
|
+import DateSelect from '@/components/module/dateSelect'
|
|
|
+import { list } from '@/mixins'
|
|
|
+import { refundList } from '@/api/refund'
|
|
|
+import { getList } from '@/api/member'
|
|
|
+
|
|
|
+export default {
|
|
|
+ name: 'freeRefundList',
|
|
|
+ components: { AppWrapperEmpty, AppSearchModule, DateSelect },
|
|
|
+ mixins: [list],
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ searchTime: 'last30Days',
|
|
|
+ startTime: '',
|
|
|
+ endTime: '',
|
|
|
+ totalAmount: 0,
|
|
|
+ // -1全部 1当天售后 0隔天售后
|
|
|
+ sameDay: -1,
|
|
|
+ filterStatus: -1,
|
|
|
+ customId: 0,
|
|
|
+ searchList: [],
|
|
|
+ showSearch: false,
|
|
|
+ showFilterPanel: false,
|
|
|
+ sameDayOptions: [
|
|
|
+ { label: '全部', value: -1 },
|
|
|
+ { label: '当天售后', value: 1 },
|
|
|
+ { label: '隔天售后', value: 0 }
|
|
|
+ ],
|
|
|
+ statusOptions: [
|
|
|
+ { label: '全部', value: -1 },
|
|
|
+ { label: '待审核', value: 0 },
|
|
|
+ { label: '已通过', value: 1 },
|
|
|
+ { label: '已驳回', value: 2 },
|
|
|
+ { label: '已取消', value: 3 }
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ hasActiveFilters() {
|
|
|
+ return this.sameDay !== -1 || this.filterStatus !== -1
|
|
|
+ }
|
|
|
+ },
|
|
|
+ onLoad() {
|
|
|
+ this.resetList()
|
|
|
+ this._list()
|
|
|
+ },
|
|
|
+ onPullDownRefresh() {
|
|
|
+ this.resetList()
|
|
|
+ this._list().then(() => {
|
|
|
+ uni.stopPullDownRefresh()
|
|
|
+ })
|
|
|
+ },
|
|
|
+ onReachBottom() {
|
|
|
+ if (!this.list.finished) {
|
|
|
+ this._list()
|
|
|
+ }
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ formatMoney(v) {
|
|
|
+ return v != null ? parseFloat(v) : 0
|
|
|
+ },
|
|
|
+ fundText(item) {
|
|
|
+ if (Number(item.sameDay) !== 0) {
|
|
|
+ return '常规售后'
|
|
|
+ }
|
|
|
+ const t = Number(item.fundType)
|
|
|
+ if (t === 2) return '返充余额'
|
|
|
+ if (t === 3) return '仅记账'
|
|
|
+ if (t === 1) return '原路退回'
|
|
|
+ return '隔天售后'
|
|
|
+ },
|
|
|
+ statusText(status) {
|
|
|
+ const map = { 0: '待审核', 1: '已通过', 2: '已驳回', 3: '已取消' }
|
|
|
+ return map[status] || ''
|
|
|
+ },
|
|
|
+ selectDateFn(val) {
|
|
|
+ this.searchTime = val.searchTime || 'last30Days'
|
|
|
+ this.startTime = val.startTime || ''
|
|
|
+ this.endTime = val.endTime || ''
|
|
|
+ this.resetList()
|
|
|
+ this._list()
|
|
|
+ },
|
|
|
+ /** 搜索客户:弹出联想列表 */
|
|
|
+ searchFn(e) {
|
|
|
+ const that = this
|
|
|
+ if (that.$util.isEmpty(e)) {
|
|
|
+ that.showSearch = false
|
|
|
+ that.searchList = []
|
|
|
+ return
|
|
|
+ }
|
|
|
+ getList({ page: 1, name: e }).then((res) => {
|
|
|
+ if (!that.$util.isEmpty(res.data) && !that.$util.isEmpty(res.data.list)) {
|
|
|
+ that.showSearch = true
|
|
|
+ that.searchList = res.data.list
|
|
|
+ } else {
|
|
|
+ that.showSearch = false
|
|
|
+ that.searchList = []
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ getCustom(item) {
|
|
|
+ this.showSearch = false
|
|
|
+ this.customId = item.id
|
|
|
+ this.resetList()
|
|
|
+ this._list()
|
|
|
+ },
|
|
|
+ clearSearch() {
|
|
|
+ if (this.$refs.appSearch && typeof this.$refs.appSearch.inputEmptyFn === 'function') {
|
|
|
+ this.$refs.appSearch.inputEmptyFn()
|
|
|
+ }
|
|
|
+ this.showSearch = false
|
|
|
+ this.searchList = []
|
|
|
+ this.customId = 0
|
|
|
+ this.resetList()
|
|
|
+ this._list()
|
|
|
+ },
|
|
|
+ openFilterPanel() {
|
|
|
+ this.showFilterPanel = true
|
|
|
+ },
|
|
|
+ closeFilterPanel() {
|
|
|
+ this.showFilterPanel = false
|
|
|
+ },
|
|
|
+ onSelectSameDay(index) {
|
|
|
+ const item = this.sameDayOptions[index]
|
|
|
+ if (item) {
|
|
|
+ this.sameDay = item.value
|
|
|
+ }
|
|
|
+ },
|
|
|
+ onSelectStatus(index) {
|
|
|
+ const item = this.statusOptions[index]
|
|
|
+ if (item) {
|
|
|
+ this.filterStatus = item.value
|
|
|
+ }
|
|
|
+ },
|
|
|
+ clearFilters() {
|
|
|
+ this.sameDay = -1
|
|
|
+ this.filterStatus = -1
|
|
|
+ this.resetDefaultDateRange()
|
|
|
+ this.closeFilterPanel()
|
|
|
+ this.resetList()
|
|
|
+ this._list()
|
|
|
+ },
|
|
|
+ resetDefaultDateRange() {
|
|
|
+ this.searchTime = 'last30Days'
|
|
|
+ this.startTime = ''
|
|
|
+ this.endTime = ''
|
|
|
+ if (this.$refs.dateSelectRef && this.$refs.dateSelectRef.reset) {
|
|
|
+ this.$refs.dateSelectRef.reset()
|
|
|
+ }
|
|
|
+ },
|
|
|
+ confirmFilters() {
|
|
|
+ this.closeFilterPanel()
|
|
|
+ this.resetList()
|
|
|
+ this._list()
|
|
|
+ },
|
|
|
+ goDetail(item) {
|
|
|
+ if (!item.relateOrderSn) {
|
|
|
+ this.$util.pageTo({
|
|
|
+ url: '/admin/billing/freeRefundDetail',
|
|
|
+ query: { id: item.id }
|
|
|
+ })
|
|
|
+ return
|
|
|
+ }
|
|
|
+ this.$util.pageTo({
|
|
|
+ url: '/pagesOrder/refundDetail',
|
|
|
+ query: { id: item.id, from: 1 }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ _list() {
|
|
|
+ const params = {
|
|
|
+ page: this.list.page,
|
|
|
+ useDefaultLast30: 1,
|
|
|
+ refundSearchTime: this.searchTime,
|
|
|
+ startTime: this.startTime,
|
|
|
+ endTime: this.endTime,
|
|
|
+ sameDay: this.sameDay,
|
|
|
+ status: this.filterStatus,
|
|
|
+ customId: this.customId || ''
|
|
|
+ }
|
|
|
+ return refundList(params).then((res) => {
|
|
|
+ this.completes(res)
|
|
|
+ this.totalAmount = res.data && res.data.totalRefundPrice != null
|
|
|
+ ? parseFloat(res.data.totalRefundPrice)
|
|
|
+ : 0
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="scss" scoped>
|
|
|
+.app-content {
|
|
|
+ padding-top: 100upx;
|
|
|
+}
|
|
|
+.search-dropdown-wrap {
|
|
|
+ position: fixed;
|
|
|
+ top: 100upx;
|
|
|
+ left: 0;
|
|
|
+ right: 0;
|
|
|
+ z-index: 999999;
|
|
|
+ background-color: white;
|
|
|
+}
|
|
|
+.search-dropdown {
|
|
|
+ width: 80%;
|
|
|
+ border: 1upx solid #cccccc;
|
|
|
+ margin: 0 auto;
|
|
|
+ padding: 10upx 0 0 20upx;
|
|
|
+ max-height: 60vh;
|
|
|
+ overflow: scroll;
|
|
|
+}
|
|
|
+.search-item {
|
|
|
+ margin-bottom: 30upx;
|
|
|
+}
|
|
|
+.search-name {
|
|
|
+ font-size: 37upx;
|
|
|
+ margin-bottom: 10upx;
|
|
|
+}
|
|
|
+.search-sub {
|
|
|
+ font-size: 29upx;
|
|
|
+ color: #666;
|
|
|
+}
|
|
|
+.input-wrap_box {
|
|
|
+ background-color: #fff;
|
|
|
+ position: fixed;
|
|
|
+ top: 0;
|
|
|
+ left: 0;
|
|
|
+ z-index: 10;
|
|
|
+ width: 100%;
|
|
|
+ height: 100upx;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ padding: 0 10upx;
|
|
|
+ box-sizing: border-box;
|
|
|
+}
|
|
|
+.select-dn_bx {
|
|
|
+ padding-left: 10upx;
|
|
|
+ padding-right: 10upx;
|
|
|
+ flex-shrink: 0;
|
|
|
+}
|
|
|
+.search-container {
|
|
|
+ position: relative;
|
|
|
+ flex: 1;
|
|
|
+}
|
|
|
+.search-clear-overlay {
|
|
|
+ position: absolute;
|
|
|
+ top: 50%;
|
|
|
+ right: 20upx;
|
|
|
+ transform: translateY(-50%);
|
|
|
+ z-index: 11;
|
|
|
+ padding: 10upx 20upx;
|
|
|
+ border-radius: 24upx;
|
|
|
+ font-size: 24upx;
|
|
|
+ color: #3385ff;
|
|
|
+ border: 1upx solid #3385ff;
|
|
|
+ background-color: rgba(255, 255, 255, 0.9);
|
|
|
+}
|
|
|
+.filter-btn-wrap {
|
|
|
+ position: relative;
|
|
|
+ margin-left: 16upx;
|
|
|
+ flex-shrink: 0;
|
|
|
+}
|
|
|
+.filter-btn {
|
|
|
+ width: 120upx;
|
|
|
+ height: 80upx;
|
|
|
+ line-height: 80upx;
|
|
|
+ padding: 0;
|
|
|
+ margin: 0;
|
|
|
+ box-sizing: border-box;
|
|
|
+ text-align: center;
|
|
|
+ font-size: 28upx;
|
|
|
+}
|
|
|
+.filter-dot {
|
|
|
+ position: absolute;
|
|
|
+ top: 6upx;
|
|
|
+ right: 6upx;
|
|
|
+ width: 14upx;
|
|
|
+ height: 14upx;
|
|
|
+ border-radius: 50%;
|
|
|
+ background-color: #3385ff;
|
|
|
+}
|
|
|
+.total-bar {
|
|
|
+ padding: 16upx 30upx;
|
|
|
+ font-size: 26upx;
|
|
|
+ color: #333;
|
|
|
+ font-weight: bold;
|
|
|
+ background: #fff;
|
|
|
+ margin-bottom: 16upx;
|
|
|
+}
|
|
|
+.list-wrap {
|
|
|
+ padding-bottom: 30upx;
|
|
|
+}
|
|
|
+.refund-card {
|
|
|
+ position: relative;
|
|
|
+ background: #fff;
|
|
|
+ margin-bottom: 16upx;
|
|
|
+ padding: 24upx 30upx;
|
|
|
+}
|
|
|
+.row-top {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+ margin-bottom: 10upx;
|
|
|
+}
|
|
|
+.custom-name {
|
|
|
+ font-size: 30upx;
|
|
|
+ font-weight: bold;
|
|
|
+ color: #333;
|
|
|
+}
|
|
|
+.amount {
|
|
|
+ font-size: 32upx;
|
|
|
+ font-weight: bold;
|
|
|
+ color: #ff2842;
|
|
|
+ margin-right: 36upx;
|
|
|
+}
|
|
|
+.row {
|
|
|
+ font-size: 26upx;
|
|
|
+ color: #666;
|
|
|
+ line-height: 42upx;
|
|
|
+}
|
|
|
+.tag {
|
|
|
+ display: inline-block;
|
|
|
+ font-size: 22upx;
|
|
|
+ color: #3385ff;
|
|
|
+ border: 1upx solid #3385ff;
|
|
|
+ border-radius: 6upx;
|
|
|
+ padding: 0 10upx;
|
|
|
+ margin-right: 10upx;
|
|
|
+ line-height: 36upx;
|
|
|
+}
|
|
|
+.tag.next {
|
|
|
+ color: #ff9900;
|
|
|
+ border-color: #ff9900;
|
|
|
+}
|
|
|
+.tag.free {
|
|
|
+ color: #19be6b;
|
|
|
+ border-color: #19be6b;
|
|
|
+}
|
|
|
+.split {
|
|
|
+ margin: 0 8upx;
|
|
|
+}
|
|
|
+.remark {
|
|
|
+ color: #e54d42;
|
|
|
+}
|
|
|
+.status {
|
|
|
+ position: absolute;
|
|
|
+ right: 50upx;
|
|
|
+ top: 70upx;
|
|
|
+ font-size: 24upx;
|
|
|
+}
|
|
|
+.status.pass {
|
|
|
+ color: #19be6b;
|
|
|
+}
|
|
|
+.status.pending {
|
|
|
+ color: #3385ff;
|
|
|
+}
|
|
|
+.status.reject,
|
|
|
+.status.cancel {
|
|
|
+ color: #999;
|
|
|
+}
|
|
|
+.arrow {
|
|
|
+ position: absolute;
|
|
|
+ right: 20upx;
|
|
|
+ top: 50%;
|
|
|
+ margin-top: -16upx;
|
|
|
+ color: #ccc;
|
|
|
+ font-size: 28upx;
|
|
|
+}
|
|
|
+.filter-overlay {
|
|
|
+ position: fixed;
|
|
|
+ top: 0;
|
|
|
+ left: 0;
|
|
|
+ right: 0;
|
|
|
+ bottom: 0;
|
|
|
+ z-index: 9999999;
|
|
|
+ display: flex;
|
|
|
+ align-items: flex-start;
|
|
|
+ justify-content: center;
|
|
|
+ background-color: rgba(0, 0, 0, 0.5);
|
|
|
+}
|
|
|
+.filter-panel {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ width: 100%;
|
|
|
+ height: 90vh;
|
|
|
+ max-height: 90vh;
|
|
|
+ overflow: hidden;
|
|
|
+ border-radius: 0 0 24upx 24upx;
|
|
|
+ background: #fff;
|
|
|
+}
|
|
|
+.filter-header {
|
|
|
+ flex-shrink: 0;
|
|
|
+ padding: 24upx 0;
|
|
|
+ text-align: center;
|
|
|
+ color: #333;
|
|
|
+ font-size: 32upx;
|
|
|
+ font-weight: 700;
|
|
|
+ border-bottom: 1upx solid #f0f0f0;
|
|
|
+}
|
|
|
+.filter-body {
|
|
|
+ flex: 1;
|
|
|
+ min-height: 0;
|
|
|
+ height: 0;
|
|
|
+ width: 100%;
|
|
|
+ box-sizing: border-box;
|
|
|
+}
|
|
|
+.filter-section {
|
|
|
+ padding: 30upx 40upx;
|
|
|
+ border-bottom: 1upx solid #f0f0f0;
|
|
|
+}
|
|
|
+.filter-title {
|
|
|
+ margin-bottom: 20upx;
|
|
|
+ color: #333;
|
|
|
+ font-size: 28upx;
|
|
|
+ font-weight: 700;
|
|
|
+}
|
|
|
+.filter-options {
|
|
|
+ display: flex;
|
|
|
+ flex-wrap: wrap;
|
|
|
+}
|
|
|
+.filter-option {
|
|
|
+ min-width: 120upx;
|
|
|
+ padding: 15upx 28upx;
|
|
|
+ margin-right: 18upx;
|
|
|
+ margin-top: 18upx;
|
|
|
+ border: 1upx solid #dce2e0;
|
|
|
+ border-radius: 28upx;
|
|
|
+ color: #60666d;
|
|
|
+ background: #fff;
|
|
|
+ font-size: 26upx;
|
|
|
+ text-align: center;
|
|
|
+}
|
|
|
+.filter-option.active {
|
|
|
+ color: #3385ff;
|
|
|
+ border-color: #3385ff;
|
|
|
+ background: #eef5ff;
|
|
|
+ font-weight: 700;
|
|
|
+}
|
|
|
+.filter-actions {
|
|
|
+ flex-shrink: 0;
|
|
|
+ display: flex;
|
|
|
+ padding: 30upx 40upx 40upx;
|
|
|
+ padding-bottom: calc(40upx + env(safe-area-inset-bottom));
|
|
|
+ border-top: 1upx solid #f0f0f0;
|
|
|
+ background: #fff;
|
|
|
+}
|
|
|
+.filter-action-btn {
|
|
|
+ flex: 1;
|
|
|
+ height: 80upx;
|
|
|
+ line-height: 80upx;
|
|
|
+ font-size: 28upx;
|
|
|
+ border-radius: 40upx;
|
|
|
+}
|
|
|
+.filter-action-btn::after {
|
|
|
+ border: none;
|
|
|
+}
|
|
|
+.clear-btn {
|
|
|
+ margin-right: 20upx;
|
|
|
+ color: #60666d;
|
|
|
+ background: #f5f5f5;
|
|
|
+}
|
|
|
+.confirm-btn {
|
|
|
+ color: #fff;
|
|
|
+ background: #3385ff;
|
|
|
+}
|
|
|
+</style>
|