<script setup>
// 这是客户钱包页面
import { useAdminStore } from "@/store/index.js"
import { storeToRefs } from "pinia"
import { findMenuById, permissionMapping } from "@/utils/menuTreePermission.js"
const adminStore = useAdminStore()
const { adminData, menuTree, flag } = storeToRefs(adminStore)
// 监听全局flag状态变化(员工数据的)
 watch(flag, (newFlag, oldFlag) => {
  // 当flag状态改变时，重新发送请求
  if (newFlag !== oldFlag) {
    console.log('员工数据flag状态改变，重新加载数据', newFlag)
    get()
  }
})
import { onMounted, ref, watch, nextTick } from 'vue'
import { ElMessage } from 'element-plus'
import moment from 'moment'
import API from '@/util/http.js'
import { reverseMarketMapping } from "@/utils/marketMap.js";
// 国际化
import { useI18n } from 'vue-i18n'
const { t } = useI18n()

// 变量
const dialogVisible = ref(false)

// 定义加载状态，获取地区数据
const markets = ref([])


// 充值明细表格
// 替换你代码中的 tableData 初始化部分
const tableData = ref([]);
const walletMap = {
  2: 'hkGold',
  3: 'sgHcGold',
  4: 'myGold',
  5: 'sgGold',
  6: 'caGold',
  7: 'thHsGold',
  8: 'thHaGold',
  9: 'vnGold',
  10: 'bjGold'
};
const propToWalletId = {
  hkGold: 2,
  sgHcGold: 3,
  myGold: 4,
  sgGold: 5,
  caGold: 6,
  thHsGold: 7,
  thHaGold: 8,
  vnGold: 9,
  bjGold: 10
};
const tableRef = ref(null)
const scrollTableTop = () => {
  tableRef.value?.setScrollTop?.(0)
}

//客户消费记录
const userInfo = ref({})

// 搜索===========================================
//分页总条目
const total = ref(100)
// 搜索对象时间
const getTime = ref([])
// 搜索User
const selectData = ref({
  jwcode: '',
  markets: [],
})
// 不分页的搜索对象
const getAllObj = ref({})
// 搜索对象
const getObj = ref({
  pageNum: 1,
  pageSize: 50
})
// 新增排序字段和排序方式
const sortField = ref('')
const sortOrder = ref('')

// 方法
// 搜索===========================================================================
// 搜索方法
const get = async function (val) {
  try {
    // 搜索参数页码赋值
    if (typeof val === 'number') {
      getObj.value.pageNum = val
    }
    if (selectData.value.jwcode) {
      // 纯数字
      const numberRegex = /^\d{1,9}$/;
      // 检查是否不是数字
      if (!numberRegex.test(selectData.value.jwcode)) {
        ElMessage.error(t('elmessage.checkJwcodeFormat'))
        return
      }
    }

    console.log('搜索参数', getObj.value, selectData.value)
    
    // 构建请求参数
    const params = {
      pageNum: getObj.value.pageNum,
      pageSize: getObj.value.pageSize
    }
    
    // 只有当有值时才加入参数，且转换类型
    if (selectData.value.jwcode) {
      params.jwcode = Number(selectData.value.jwcode)
    }
    
    if (selectData.value.markets && selectData.value.markets.length > 0) {
      // 确保市场代码也是正确类型（根据示例是字符串）
      params.market = String(selectData.value.markets[0])
    }

    console.log('最终请求参数', params)

    const result = await API({
      url: '/cashCollection/selectUserWallets',
      method: 'post',
      data: params
    })
    console.log('响应数据', result)
    
    if (result.code === 200) {
      tableData.value = result.data.list.map(item => {
        const row = {
          name: item.userName,
          jwcode: item.jwcode,
          market: item.marketName,
          hkGold: 0,
          sgHcGold: 0,
          myGold: 0,
          sgGold: 0,
          caGold: 0,
          thHsGold: 0,
          thHaGold: 0,
          vnGold: 0,
          bjGold: 0
        };
        
        if (item.walletList && Array.isArray(item.walletList)) {
          item.walletList.forEach(wallet => {
            const prop = walletMap[wallet.walletId];
            if (prop) {
              row[prop] = wallet.currentPermanentGold;
            }
          });
        }
        return row;
      });
      total.value = result.data.total;
    } else {
      ElMessage.error(result.msg || t('elmessage.getDataFailed'));
    }
  } catch (error) {
    console.log('请求失败', error)
  }
}
// 精网号去空格，同时处理 selectData 和 putExcel 中的 jwcode
const trimJwCode = () => {
  if (selectData.value.jwcode) {
    selectData.value.jwcode = selectData.value.jwcode.replace(/\s/g, '');
  }

}
// 搜索
const search = function () {
  trimJwCode();
  getObj.value.pageNum = 1
  get()
}
// 重置
const reset = function () {
  selectData.value = {
    jwcode: '',
    markets: [],
  }
  sortField.value = ''
  sortOrder.value = ''
  selectedMarketPath.value = []
  // 重置页码
  getObj.value.pageNum = 1
  get()
}
const cellClick = function (row, column) {
  console.log('cellClick', column)
  const walletId = propToWalletId[column.property];
  const propToMarketName = {
       hkGold: t('clientCount.market.hkGold'),
       sgHcGold: t('clientCount.market.sgHcGold'),
       myGold: t('clientCount.market.myGold'),
       sgGold: t('clientCount.market.sgCmGold'),
       caGold: t('clientCount.market.caGold'),
       thHsGold: t('clientCount.market.thHsGold'),
       thHaGold: t('clientCount.market.thHaGold'),
       vnGold: t('clientCount.market.vnGold'),
       bjGold: t('clientCount.market.bjGold')
    }
    const marketName = propToMarketName[column.property]
    
    if (marketName && walletId) {
        currentWalletInfo.value = {
          userName: row.name,
          jwcode: row.jwcode,
          marketName: row.market, // 用户所属地区
          walletName: marketName + t('clientCount.wallet'), // 钱包名称
          currentBalance: row[column.property] || 0,
          walletId: walletId
        }
      walletDetailQuery.value.pageNum = 1
      getWalletDetail()
      walletDetailVisible.value = true
  }
}

// 钱包明细弹窗相关
const walletDetailVisible = ref(false)
const walletDetailList = ref([])
const walletDetailTotal = ref(0)
const walletDetailLoading = ref(false)
const currentWalletInfo = ref({})
const walletDetailQuery = ref({
  pageNum: 1,
  pageSize: 20
})

const getWalletDetail = async () => {
  walletDetailLoading.value = true
  try {
    const params = {
      pageNum: walletDetailQuery.value.pageNum,
      pageSize: walletDetailQuery.value.pageSize,
      userWalletRecord: {
        jwcode: Number(currentWalletInfo.value.jwcode),
        walletId: currentWalletInfo.value.walletId
      }
    }
    
    const result = await API({
      url: '/cashCollection/selectWalletRecords',
      method: 'post',
      data: params
    })
    
    if (result.code === 200) {
       walletDetailList.value = result.data.list.map(item => ({
         time: moment(item.createTime).format('YYYY-MM-DD HH:mm:ss'),
         type: item.type === 0 ? t('common.recharge') : t('common.consume'), 
         amount: item.type === 1 ? -Math.abs(item.amount) : Math.abs(item.amount),
         desc: item.description,
         orderNo: item.orderCode,
         status: item.status === 0 ? 1 : 2
       }))
       walletDetailTotal.value = result.data.total
    } else {
       ElMessage.error(result.msg || t('elmessage.getDetailFailed'))
    }
  } catch (error) {
    console.error(error)
  } finally {
    walletDetailLoading.value = false
  }
}

const handleWalletDetailSizeChange = (val) => {
  walletDetailQuery.value.pageSize = val
  walletDetailQuery.value.pageNum = 1
  getWalletDetail()
}
const handleWalletDetailCurrentChange = (val) => {
  walletDetailQuery.value.pageNum = val
  getWalletDetail()
}
// 处理排序事件
const handleSortChange = (column) => {
  console.log('排序字段：', column.prop)
  console.log('排序方式：', column.order)
  if (column.prop) {
    sortField.value = column.prop.replace(/([A-Z])/g, "_$1").toLowerCase();
  }
  sortOrder.value = column.order === 'ascending' ? 'ASC' : 'DESC'
  get()
}

// 挂载
onMounted(async function () {
  await get()
  await getMarket()
  await getExportList()
})
const handlePageSizeChange = function (val) {
  getObj.value.pageSize = val
  getObj.value.pageNum = 1
  get()
}
const handleCurrentChange = function (val) {
  getObj.value.pageNum = val
  get()
}
const exportExcel = async function () {
  const params = {
    pageNum: 1, // 导出通常从第一页开始
    pageSize: 10000, // 导出所有数据
  }

  // 只有当有值时才加入参数，且转换类型
  if (selectData.value.jwcode) {
    params.jwcode = Number(selectData.value.jwcode)
  }

  if (selectData.value.markets && selectData.value.markets.length > 0) {
    // 确保市场代码也是正确类型
    params.market = String(selectData.value.markets[0])
  }

  const res = await API({ 
    url: '/export/exportUserWallet', 
    method: 'post', 
    data: params 
  })
  if (res.code === 200) {
    ElMessage.success(t('elmessage.exportSuccess'))
    // 不需要立即打开导出列表
  } else {
    ElMessage.error(res.msg || t('elmessage.exportFailed'))
  }
}

const exportWalletDetail = async () => {
  const params = {
    pageNum: walletDetailQuery.value.pageNum,
    pageSize: walletDetailQuery.value.pageSize,
    userWalletRecord: {
      jwcode: Number(currentWalletInfo.value.jwcode),
      walletId: currentWalletInfo.value.walletId
    }
  }

  try {
    const res = await API({ 
      url: '/export/exportUserWalletRecord', 
      method: 'post', 
      data: params 
    })
    if (res.code === 200) {
      ElMessage.success(t('elmessage.exportSuccess'))
    } else {
      ElMessage.error(res.msg || t('elmessage.exportFailed'))
    }
  } catch (error) {
    console.error('导出钱包明细出错:', error)
    ElMessage.error(t('elmessage.exportWalletDetailError'))
  }
}

const selectWallet = async function () {
  selectWalletVisible.value = true
}
const exportExcelOnlyOne = async function () {
  if (!selectWalletForm.value.companyWalletId) {
    ElMessage.error(t('elmessage.selectCompanyWallet'))
    return
  }
  
  const params = {
    pageNum: 1, // 导出通常从第一页开始
    pageSize: 10000, // 导出大量数据，或者不传让后端处理全部？通常传大值
    userWalletRecord: {
      // id从1开始，后端walletId从2开始，需要+1
      walletId: selectWalletForm.value.companyWalletId + 1,
      jwcode: selectData.value.jwcode ? Number(selectData.value.jwcode) : null
    }
  }

  try {
    const res = await API({ 
      url: '/export/exportUserWalletRecord', 
      method: 'post', 
      data: params 
    })
    if (res.code === 200) {
      ElMessage.success(t('elmessage.exportSuccess'))
      openExportList() // 导出成功后打开导出列表
    } else {
      ElMessage.error(res.msg || t('elmessage.exportFailed'))
    }
  } catch (error) {
    console.error('导出失败:', error)
    ElMessage.error(t('elmessage.exportFailed'))
  } finally {
    selectWalletVisible.value = false
  }
}


const exportListVisible = ref(false)
const selectWalletVisible = ref(false)
const selectWalletFormRef = ref(null)
const selectWalletRules = {
  companyWalletId: [
    { required: true, message: t('common_list.companyWalletPlaceholder'), trigger: 'change' }
  ]
}
// 关闭选择公司钱包弹窗
const closeSelectWallet = () => {
  // 重置表单
  selectWalletFormRef.value.resetFields()
  selectWalletForm.value = {}
  selectWalletVisible.value = false
}

const selectWalletForm = ref({})
const companyWalletList = ref([
  {
    id: 1,
    name: t('clientCount.market.hkGold') + t('clientCount.wallet')
  },
  {
    id: 2,
    name: t('clientCount.market.sgHcGold')
  },
  {
    id: 3,
    name: t('clientCount.market.myGold')
  },
  {
    id: 4,
    name: t('clientCount.market.sgCmGold')
  },
  {
    id: 5,
    name: t('clientCount.market.caGold')
  },
  {
    id: 6,
    name: t('clientCount.market.thHsGold')
  },
  {
    id: 7,
    name: t('clientCount.market.thHaGold')
  },
  {
    id: 8,
    name: t('clientCount.market.vnGold')
  },
  {
    id: 9,
    name: t('clientCount.market.bjGold')
  }
])
// 打开导出列表弹窗
const openExportList = () => {
  getExportList()
  exportListVisible.value = true
}

// 导出列表数据
const exportList = ref([])
// 导出列表加载状态
const exportListLoading = ref(false)
// 获取导出列表
const getExportList = async () => {
  exportListLoading.value = true
  try {
    const result = await API({ url: '/export/export' })
    if (result.code === 200) {
      // 过滤只显示type为16和17的导出记录
      const filteredData = result.data.filter(item => {
        return item.type === 16 || item.type === 17;
      });
      exportList.value = filteredData
    } else {
      ElMessage.error(result.msg || t('elmessage.getExportListError'))
    }
  } catch (error) {
    console.error('获取导出列表出错:', error)
    ElMessage.error(t('elmessage.getExportListError'))
  } finally {
    exportListLoading.value = false
  }
}
// 下载导出文件
const downloadExportFile = (item) => {
  if (item.state === 2) {
    const link = document.createElement('a')
    link.href = item.url
    link.download = item.fileName
    link.click()
  } else {
    ElMessage.warning(t('elmessage.exportingInProgress'))
  }
}
//根据状态返回对应的标签类型
const getTagType = (state) => {
  switch (state) {
    case 0:
      return 'info';
    case 1:
      return 'primary';
    case 2:
      return 'success';
    case 3:
      return 'danger';
    default:
      return 'info';
  }
}
//根据状态返回对应的标签文案
const getTagText = (state) => {
  switch (state) {
    case 0:
      return t('elmessage.pendingExecution');
    case 1:
      return t('elmessage.executing');
    case 2:
      return t('elmessage.executed');
    case 3:
      return t('elmessage.errorExecution');
    default:
      return t('elmessage.unknownStatus');
  }
}
// 存储地区选择变化
const selectedMarketPath = ref([])

const handleMarketChange = (value) => {
  if (value && value.length > 0) {
    const lastValue = value[value.length - 1];
    // 确保返回值是数组，如果不是则包装成数组
    const marketValue = reverseMarketMapping[lastValue];
    selectData.value.markets = Array.isArray(marketValue) ? marketValue : [marketValue];
  } else {
    // 保持[]格式
    selectData.value.markets = [];
  }
};
// 获取地区，修改为级联下拉框
const getMarket = async function () {
  try {
    // 发送POST请求
    const result = await API({

      url: '/market/selectMarket',
    });
    // 将响应结果存储到响应式数据中
    console.log('请求成功', result)

    // 递归转换树形结构为级联选择器需要的格式（跳过第一级节点）
    const transformTree = (nodes) => {
      // 直接处理第一级节点的子节点
      const allChildren = nodes.flatMap(node => node.children || []);

      return allChildren.map(child => {
        const grandchildren = child.children && child.children.length
          ? transformTree([child]) // 递归处理子节点
          : null;

        return {
          value: child.name,
          label: child.name,
          children: grandchildren
        };
      });
    };
    // 存储地区信息
    markets.value = transformTree(result.data)
    console.log('转换后的地区树==============', markets.value)
  } catch (error) {
    console.log('请求失败', error)
  }
}
const format3 = (num) => {
  // 每三位添加逗号
  return num.toLocaleString('en-US')
}

</script>

<template>
  <el-card class="card1" style="margin-bottom: 1vh;">
    <div class="head-card">
      <div class="head-card-element">
        <el-text class="mx-1" size="large">{{ $t('common.jwcode') }}：</el-text>
        <el-input v-model="selectData.jwcode" style="width: 160px" :placeholder="$t('common.jwcodePlaceholder')" clearable />
      </div>
      <div class="head-card-element">
        <el-text class="mx-1" size="large">{{ $t('common.market') }}：</el-text>
        <el-cascader v-model="selectedMarketPath" :options="markets" :placeholder="$t('common.marketPlaceholder')" clearable style="width:180px"
          @change="handleMarketChange" />
      </div>
      <div class="head-card-element">
        <!-- <el-checkbox v-model="showEmployeeData" @change="search()">员工数据</el-checkbox> -->
      </div>
      <el-button type="primary" @click="search()">{{ $t('common.search') }}</el-button>
      <el-button @click="reset" type="success">{{ $t('common.reset') }}</el-button>
      <el-button type="primary" @click="exportExcel()">{{ $t('common.exportExcel') }}</el-button>
      <el-button type="primary" @click="selectWallet()">{{ $t('common.exportCompanyWalletDetail') }}</el-button>
      <el-button type="primary" @click="openExportList">{{ $t('common.viewExportList') }}</el-button>
    </div>
    <!-- </div> -->
  </el-card>
  <el-card class="card2">
    <!-- 设置表格容器的高度和滚动样式 -->
    <div style="height: 69vh; overflow-y: auto">
      <el-table ref="tableRef" :data="tableData" @cellClick="cellClick" style="width: 100%; height: 69vh"
        @sort-change="handleSortChange" :row-style="{ height: '50px' }">
        <el-table-column type="index" :label="$t('common_list.id')" width="100px" fixed="left">
          <template #default="scope">
            <span>{{
              scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize
            }}</span>
          </template>
        </el-table-column>
        <el-table-column prop="name" :label="$t('common_list.name')" width="140" />
        <el-table-column prop="jwcode" :label="$t('common_list.jwcode')" width="140" />
        <el-table-column prop="market" :label="$t('common_list.market')" width="140" />
        <el-table-column prop="hkGold" :label="$t('clientCount.market.hkGold')" sortable="custom" min-width="140">
          <template #default="scope">
            <span>{{ (scope.row.hkGold || 0) }}</span>
          </template>
        </el-table-column>
        <el-table-column prop="sgHcGold" :label="$t('clientCount.market.sgHcGold')" sortable="custom" min-width="150">
          <template #default="scope">
            <span>{{ (scope.row.sgHcGold || 0) }}</span>
          </template>
        </el-table-column>
        <el-table-column prop="myGold" :label="$t('clientCount.market.myGold')" sortable="custom" min-width="120">
          <template #default="scope">
            <span>{{ (scope.row.myGold || 0) }}</span>
          </template>
        </el-table-column>
        <el-table-column prop="sgGold" :label="$t('clientCount.market.sgCmGold')" sortable="custom" min-width="120">
          <template #default="scope">
            <span>{{ (scope.row.sgGold || 0) }}</span>
          </template>
        </el-table-column>
        <el-table-column prop="caGold" :label="$t('clientCount.market.caGold')" sortable="custom" min-width="120">
          <template #default="scope">
            <span>{{ (scope.row.caGold || 0) }}</span>
          </template>
        </el-table-column>
        <el-table-column prop="thHsGold" :label="$t('clientCount.market.thHsGold')" sortable="custom" min-width="140">
          <template #default="scope">
            <span>{{ (scope.row.thHsGold || 0) }}</span>
          </template>
        </el-table-column>
        <el-table-column prop="thHaGold" :label="$t('clientCount.market.thHaGold')" sortable="custom" min-width="140">
          <template #default="scope">
            <span>{{ (scope.row.thHaGold || 0) }}</span>
          </template>
        </el-table-column>
        <el-table-column prop="vnGold" :label="$t('clientCount.market.vnGold')" sortable="custom" min-width="120">
          <template #default="scope">
            <span>{{ (scope.row.vnGold || 0) }}</span>
          </template>
        </el-table-column>
        <el-table-column prop="bjGold" :label="$t('clientCount.market.bjGold')" sortable="custom" min-width="120">
          <template #default="scope">
            <span>{{ (scope.row.bjGold || 0) }}</span>
          </template>
        </el-table-column>
      </el-table>
    </div>
    <!-- 分页 -->
    <div class="pagination" style="margin-top: 20px">
      <el-pagination background :current-page="getObj.pageNum" :page-size="getObj.pageSize" :page-sizes="[5, 10, 20, 50, 100]"
        layout="total, sizes, prev, pager, next, jumper" :total="total" @size-change="handlePageSizeChange"
        @current-change="handleCurrentChange"></el-pagination>
    </div>
  </el-card>
  <el-dialog v-model="exportListVisible" :title="$t('common_export.exportList')" width="80%">
    <el-table :data="exportList" style="width: 100% ;height: 60vh;" :loading="exportListLoading">
      <el-table-column prop="fileName" :label="$t('common_export.fileName')" />
      <el-table-column prop="state" :label="$t('common_export.status')">
        <template #default="scope">
          <el-tag :type="getTagType(scope.row.state)" :effect="scope.row.state === 3 ? 'light' : 'plain'">
            {{ getTagText(scope.row.state) }}
          </el-tag>
        </template>
      </el-table-column>
      <el-table-column prop="createTime" :label="$t('common_export.createTime')">
        <template #default="scope">
          {{ moment(scope.row.createTime).format('YYYY-MM-DD HH:mm:ss') }}
        </template>
      </el-table-column>
      <el-table-column :label="$t('common_export.operation')">
        <template #default="scope">
          <el-button type="primary" size="small" @click="downloadExportFile(scope.row)"
            :disabled="scope.row.state !== 2">
            {{ $t('common_export.download') }}
          </el-button>
        </template>
      </el-table-column>
    </el-table>
    <template #footer>
      <div class="dialog-footer">
        <el-button text @click="exportListVisible = false">{{ $t('common_export.close') }}</el-button>
      </div>
    </template>
  </el-dialog>

   <el-dialog v-model="selectWalletVisible" width="30%" top="20%" :before-close="closeSelectWallet">
     <el-form :model="selectWalletForm" :rules="selectWalletRules" ref="selectWalletFormRef" label-width="120px">
      <el-form-item :label="$t('common_list.companyWallet')" prop="companyWalletId" style="margin-top: 30px;">
        <el-select v-model="selectWalletForm.companyWalletId" :placeholder="$t('common_list.companyWalletPlaceholder')" style="width: 80%;">
          <el-option v-for="item in companyWalletList" :key="item.id" :label="item.name" :value="item.id" />
        </el-select>
      </el-form-item>
    </el-form>
    <template #footer>
      <div style="display: flex; justify-content: flex-end;">
        <el-button type="primary" @click="exportExcelOnlyOne()">{{ $t('common.confirm') }}</el-button>
      </div>
    </template>
  </el-dialog>

  <el-dialog v-model="walletDetailVisible" width="70%" top="20vh">
    <template #header>
      <div class="wallet-detail-header" style="display: flex; gap: 40px; justify-content: space-between; align-items: center; font-size: 16px;">
        <span style="font-weight: bold; color: #F56C6C;">* {{ currentWalletInfo.walletName }}</span>
        <span><span style="color: #F56C6C;">*</span> {{ $t('clientCount.user') }}: {{ currentWalletInfo.userName }} (ID: {{ currentWalletInfo.jwcode }})</span>
        <span><span style="color: #F56C6C;">*</span> {{ $t('common.market') }}: {{ currentWalletInfo.marketName }}</span>
      </div>
      <div style="margin-top: 15px; font-size: 16px;">
        <span style="color: #F56C6C; font-weight: bold;">* {{ $t('clientCount.currentBalance') }}: {{ format3(currentWalletInfo.currentBalance || 0) }} {{ $t('common.goldCoin') }}</span>
      </div>
    </template>
    
    <el-table :data="walletDetailList" v-loading="walletDetailLoading" style="width: 100%; height: 50vh; overflow-y: auto;" border stripe>
      <el-table-column prop="time" :label="$t('clientCount.time')" align="center" width="180">
         <template #default="scope">{{ scope.row.time }}</template>
      </el-table-column>
      <el-table-column prop="type" :label="$t('clientCount.transactionType')" align="center" width="120" />
      <el-table-column prop="amount" :label="$t('common_list.money')" align="center" width="120">
        <template #default="scope">
          <span :style="{ color: scope.row.amount >= 0 ? '#67C23A' : '#F56C6C', fontWeight: 'bold' }">
            {{ scope.row.amount > 0 ? '+' + format3(scope.row.amount) : format3(scope.row.amount) }}
          </span>
        </template>
      </el-table-column>
      <el-table-column prop="desc" :label="$t('clientCount.transactionDesc')" align="center" />
      <el-table-column prop="orderNo" :label="$t('clientCount.transactionOrderNo')" align="center" width="220" />
      <el-table-column prop="status" :label="$t('clientCount.transactionStatus')" align="center" width="220" fixed="right">
        <template #default="scope">
          <el-tag :type="scope.row.status === 1 ? 'success' : scope.row.status === 2 ? 'danger' : 'info'" :effect="scope.row.status === 1 ? 'light' : 'plain'">
            {{ scope.row.status === 1 ? t('common_list.normal') : scope.row.status === 2 ? t('common_list.refunded') : t('clientCount.exceptionData') }}
          </el-tag>
        </template>
      </el-table-column>
    </el-table>

    <template #footer>
      <div class="dialog-footer" style="display: flex; justify-content: space-between; align-items: center;">
        <div class="pagination-container">
           <el-pagination
            background
            :current-page="walletDetailQuery.pageNum"
            :page-size="walletDetailQuery.pageSize"
            :page-sizes="[10, 20, 50, 100]"
            layout="total, sizes, prev, pager, next, jumper"
            :total="walletDetailTotal"
            @size-change="handleWalletDetailSizeChange"
            @current-change="handleWalletDetailCurrentChange"
          />
        </div>
        <div>
          <el-button type="primary" @click="exportWalletDetail">{{ $t('common.exportExcel') }}</el-button>
          <el-button text @click="walletDetailVisible = false">{{ $t('common_export.close') }}</el-button>
        </div>
      </div>
    </template>
  </el-dialog>
</template>

<style scoped lang="scss">
// 搜索的卡片样式
.card1 {
  background: #F3FAFE;
}

// 表单的卡片样式
.card2 {
  background: #E7F4FD;
  flex: 1;
  display: flex;
  flex-direction: column;

   :deep(.el-card__body) {
    padding: 20px;
    flex: 1;
    display: flex;
    flex-direction: column;
    overflow: hidden;
  }
}
// 表头背景等
:deep(.el-table__header-wrapper),
:deep(.el-table__body-wrapper),
:deep(.el-table__cell),
/* 表格 */
:deep(.el-table__body td) {
  background-color: #F3FAFE !important;
}

/* 表头 */
:deep(.el-table__header th) {
  background-color: #F3FAFE !important;
}

/* 鼠标悬停 */
:deep(.el-table__row:hover > .el-table__cell) {
  background-color: #E5EBFE !important;
}


.pagination {
  display: flex;
}

.status {
  display: flex;
}

.head-card {
  display: flex;
}

.head-card-element {
  margin-right: 20px;
}

.head-card-btn {
  margin-left: auto;
}

.custom-box {
  display: flex;
  flex-wrap: wrap;
  row-gap: 5px;

  div:nth-child(1) {
    flex: 1 0 100%;
  }

  div {
    margin-right: 20px;
  }
}
</style>
