index.vue 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <template>
  2. <div class="app-container">
  3. <el-card shadow="never" class="mb16 filter-card">
  4. <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="100px" size="small">
  5. <el-form-item label="租户名称" prop="companyName">
  6. <el-input v-model="queryParams.companyName" placeholder="请输入租户名称" clearable size="small" @keyup.enter.native="handleQuery" />
  7. </el-form-item>
  8. <el-form-item label="账户名称" prop="accountName">
  9. <el-input v-model="queryParams.accountName" placeholder="请输入账户名称" clearable size="small" @keyup.enter.native="handleQuery" />
  10. </el-form-item>
  11. <el-form-item>
  12. <inline-tenant-selector @change="onTenantChange" />
  13. <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
  14. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
  15. </el-form-item>
  16. </el-form>
  17. </el-card>
  18. <el-row :gutter="10" class="mb8">
  19. <el-col :span="1.5">
  20. <el-button type="warning" plain icon="el-icon-download" size="mini" :loading="exportLoading" @click="handleExport">导出</el-button>
  21. </el-col>
  22. <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
  23. </el-row>
  24. <el-table border size="small" style="width:100%" v-loading="loading" :data="list">
  25. <el-table-column label="租户名称" align="center" prop="companyName" min-width="150" />
  26. <el-table-column label="账户名称" align="center" prop="accountName" />
  27. <el-table-column label="平台" align="center" prop="platform" width="100" />
  28. <el-table-column label="状态" align="center" prop="status" width="100" />
  29. <el-table-column label="消耗金额" align="center" prop="costAmount" width="120" />
  30. <el-table-column label="创建时间" align="center" prop="createTime" width="160" />
  31. </el-table>
  32. <pagination v-show="total>0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize" @pagination="getList" />
  33. </div>
  34. </template>
  35. <script>
  36. import { listAdAccount, exportAdAccount } from '@/api/admin/ad'
  37. import InlineTenantSelector from "@/components/InlineTenantSelector"
  38. export default {
  39. name: 'AdminAd',
  40. components: { InlineTenantSelector },
  41. data() {
  42. return {
  43. loading: false, exportLoading: false, showSearch: true,
  44. list: [], total: 0,
  45. queryParams: { pageNum: 1, pageSize: 10, accountName: null, companyName: null, companyId: null }
  46. }
  47. },
  48. created() { this.getList() },
  49. methods: {
  50. getList() {
  51. this.loading = true
  52. listAdAccount(this.queryParams).then(res => {
  53. this.list = res.rows || []
  54. this.total = res.total || 0
  55. this.loading = false
  56. }).catch(() => { this.loading = false })
  57. },
  58. onTenantChange(companyId) {
  59. this.queryParams.companyId = companyId
  60. this.handleQuery()
  61. },
  62. handleQuery() { this.queryParams.pageNum = 1; this.getList() },
  63. resetQuery() { this.resetForm('queryForm'); this.queryParams.companyId = null; this.handleQuery() },
  64. handleExport() {
  65. this.exportLoading = true
  66. exportAdAccount(this.queryParams).then(response => {
  67. this.download(response.msg)
  68. this.exportLoading = false
  69. }).catch(() => { this.exportLoading = false })
  70. }
  71. }
  72. }
  73. </script>
  74. <style scoped>
  75. .mb16 { margin-bottom: 16px; }
  76. .filter-card { padding-bottom: 0; }
  77. </style>