| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228 |
- <template>
- <ele-page>
- <!-- Stats Header -->
- <div class="stats-container">
- <el-row :gutter="15">
- <el-col :span="4">
- <el-card shadow="never" class="stat-card bg-gray-50" :body-style="{ padding: '10px' }">
- <div class="stat-title">退款处理时长</div>
- <div class="stat-value">6.35h</div>
- </el-card>
- </el-col>
- <el-col :span="4">
- <el-card shadow="never" class="stat-card bg-gray-50" :body-style="{ padding: '10px' }">
- <div class="stat-title">待平台处理</div>
- <div class="stat-value">10</div>
- </el-card>
- </el-col>
- <el-col :span="4">
- <el-card shadow="never" class="stat-card bg-gray-50" :body-style="{ padding: '10px' }">
- <div class="stat-title">退款待处理</div>
- <div class="stat-value">10</div>
- </el-card>
- </el-col>
- <el-col :span="4">
- <el-card shadow="never" class="stat-card bg-gray-50" :body-style="{ padding: '10px' }">
- <div class="stat-title">待平台收货</div>
- <div class="stat-value">10</div>
- </el-card>
- </el-col>
- <el-col :span="4">
- <el-card shadow="never" class="stat-card bg-gray-50" :body-style="{ padding: '10px' }">
- <div class="stat-title">24小时内即将追期</div>
- <div class="stat-value">10</div>
- </el-card>
- </el-col>
- <el-col :span="4">
- <el-card shadow="never" class="stat-card bg-gray-50" :body-style="{ padding: '10px' }">
- <div class="stat-title">待买家处理</div>
- <div class="stat-value">10</div>
- </el-card>
- </el-col>
- </el-row>
- </div>
- <!-- Search -->
- <page-search @search="handleSearch" />
- <ele-card :body-style="{ padding: '10px' }" class="mt-4">
- <!-- Tabs -->
- <el-tabs v-model="activeTab" @tab-click="handleTabClick">
- <el-tab-pane label="全部售后状态" name="all" />
- <el-tab-pane label="进行中的订单" name="processing" />
- <el-tab-pane label="待商家处理" name="merchant_pending" />
- <el-tab-pane label="待商家收货" name="merchant_receiving" />
- <el-tab-pane label="待买家发货" name="buyer_shipping" />
- <el-tab-pane label="已拒绝退款" name="rejected" />
- <el-tab-pane label="退款成功" name="success" />
- <el-tab-pane label="退款取消" name="cancelled" />
- </el-tabs>
- <!-- Table Header -->
- <div class="mt-2">
- <refund-table-header
- v-model:checkAll="checkAll"
- :is-indeterminate="isIndeterminate"
- @change="handleCheckAllChange"
- />
- </div>
- <!-- List -->
- <div class="refund-list" v-loading="loading">
- <refund-item
- v-for="(item, index) in list"
- :key="index"
- :item="item"
- @push-sms="handlePushSms"
- @send-packet="handleSendPacket"
- />
- </div>
- <!-- Pagination -->
- <div class="pagination-wrapper mt-4 flex justify-end">
- <el-pagination
- v-model:current-page="pageParams.page"
- v-model:page-size="pageParams.limit"
- :total="total"
- layout="total, sizes, prev, pager, next, jumper"
- @size-change="handleSizeChange"
- @current-change="handlePageChange"
- />
- </div>
- </ele-card>
- <!-- Dialogs -->
- <push-sms-dialog ref="pushSmsDialogRef" @success="handleSearch" />
- </ele-page>
- </template>
- <script setup>
- import { ref, reactive } from 'vue';
- import { EleMessage } from 'ele-admin-plus/es';
- import PageSearch from './components/page-search.vue';
- import RefundTableHeader from './components/refund-table-header.vue';
- import RefundItem from './components/refund-item.vue';
- import PushSmsDialog from './components/push-sms-dialog.vue';
- const activeTab = ref('all');
- const loading = ref(false);
- const total = ref(10);
- const pageParams = reactive({
- page: 1,
- limit: 10
- });
- const checkAll = ref(false);
- const isIndeterminate = ref(false);
- const list = ref([
- {
- checked: false,
- orderId: '4066879393210936038',
- refundId: '4066879393210936038',
- applyTime: '2024-10-04 12:01:09',
- product: {
- image: 'https://img14.360buyimg.com/n0/jfs/t1/157997/3/36676/122176/65e975a0F98822998/5023348143493720.jpg',
- title: '毛泽东思想和中国特色社会主义理论体系概论(2023年版)',
- isbn: '9787040599012',
- condition: '中等',
- code: 'wk-725154',
- qty: 1,
- price: 2.9
- },
- refundAmount: 2.9,
- buyer: {
- avatar: 'https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png',
- name: '书嗨4654645'
- },
- refundReason: '不喜欢,效果不好',
- logistics: {
- merchantShipped: true,
- buyerReturned: true
- },
- status: '退款成功'
- },
- {
- checked: false,
- orderId: '4066879393210936038',
- refundId: '4066879393210936038',
- applyTime: '2024-10-04 12:01:09',
- product: {
- image: 'https://img14.360buyimg.com/n0/jfs/t1/157997/3/36676/122176/65e975a0F98822998/5023348143493720.jpg',
- title: '毛泽东思想和中国特色社会主义理论体系概论(2023年版)',
- isbn: '9787040599012',
- condition: '中等',
- code: 'wk-725154',
- qty: 1,
- price: 2.9
- },
- refundAmount: 2.9,
- buyer: {
- avatar: 'https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png',
- name: '书嗨4654645'
- },
- refundReason: '不喜欢,效果不好',
- logistics: {
- merchantShipped: true,
- buyerReturned: true
- },
- status: '同意退款'
- }
- ]);
- const pushSmsDialogRef = ref(null);
- const handleSearch = (where) => {
- loading.value = true;
- setTimeout(() => {
- loading.value = false;
- EleMessage.success('查询成功');
- }, 500);
- };
- const handleTabClick = (tab) => {
- handleSearch();
- };
- const handleSizeChange = (val) => {
- pageParams.limit = val;
- handleSearch();
- };
- const handlePageChange = (val) => {
- pageParams.page = val;
- handleSearch();
- };
- const handleCheckAllChange = (val) => {
- list.value.forEach(item => item.checked = val);
- isIndeterminate.value = false;
- };
- const handlePushSms = (item) => {
- pushSmsDialogRef.value?.handleOpen(item);
- };
- const handleSendPacket = (item) => {
- EleMessage.warning('发红包功能暂未实现');
- };
- </script>
- <style scoped lang="scss">
- .stat-card {
- text-align: center;
- border: none;
-
- .stat-title {
- font-size: 13px;
- color: #606266;
- font-weight: bold;
- }
-
- .stat-value {
- font-size: 24px;
- font-weight: bold;
- color: #303133;
- }
- }
- </style>
|