| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246 |
- <template>
- <a-card :bordered="false">
- <!-- 查询区域 -->
- <div class="table-page-search-wrapper">
- <a-form layout="inline">
- <a-row :gutter="24">
- <a-col :md="8" :sm="8">
- <a-form-item label="账户ID">
- <a-textarea placeholder="请输入账户ID,多个用逗号或换行分隔" v-model="queryParam.accountIds" :autoSize="{ minRows: 1, maxRows: 4 }"></a-textarea>
- </a-form-item>
- </a-col>
- <a-col :md="8" :sm="8">
- <a-form-item label="客户名称">
- <a-input placeholder="请输入客户名称" v-model="queryParam.advertiserName"></a-input>
- </a-form-item>
- </a-col>
- <a-col :md="8" :sm="8">
- <span style="float: left; overflow: hidden" class="table-page-search-submitButtons">
- <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
- <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
- </span>
- </a-col>
- </a-row>
- </a-form>
- </div>
- <!-- 操作按钮区域 -->
- <div class="table-operator" style="margin-top: 16px">
- <a-button type="primary" @click="showClaimModal" :disabled="selectedRowKeys.length === 0">
- <a-icon type="check-circle" />批量认领 ({{ selectedRowKeys.length }})
- </a-button>
- </div>
- <!-- table区域 -->
- <div>
- <a-table
- ref="table"
- size="middle"
- bordered
- rowKey="accountId"
- :columns="columns"
- :dataSource="dataSource"
- :pagination="ipagination"
- :loading="loading"
- :rowSelection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
- @change="handleTableChange"
- >
- </a-table>
- </div>
- <!-- 认领弹窗 -->
- <a-modal
- title="账户认领 - 选择项目"
- v-model="claimVisible"
- @ok="handleClaim"
- :confirmLoading="claimLoading"
- :width="600"
- >
- <a-form layout="vertical">
- <a-form-item label="已选账户数">
- <span style="font-weight: bold; font-size: 16px">{{ selectedRowKeys.length }} 个</span>
- </a-form-item>
- <a-form-item label="选择项目" required>
- <a-select
- v-model="claimProjectId"
- placeholder="请选择项目"
- showSearch
- optionFilterProp="children"
- :filterOption="filterOption"
- @search="searchProjects"
- @focus="loadProjects"
- style="width: 100%"
- >
- <a-select-option :value="item.projectId" v-for="item of projectList" :key="item.projectId">
- {{ item.projectName }}
- </a-select-option>
- </a-select>
- </a-form-item>
- </a-form>
- </a-modal>
- </a-card>
- </template>
- <script>
- import { getAction, postAction } from '@/api/manage'
- export default {
- name: 'AdqAccountClaimList',
- data() {
- return {
- description: '腾讯账户认领',
- queryParam: {},
- dataSource: [],
- loading: false,
- selectedRowKeys: [],
- selectedRows: [],
- columns: [
- {
- title: '账户ID',
- align: 'center',
- dataIndex: 'accountId',
- },
- {
- title: '广告主名称',
- align: 'center',
- dataIndex: 'advertiserName',
- },
- {
- title: '客户名称',
- align: 'center',
- dataIndex: 'corporationName',
- },
- {
- title: '认证状态',
- align: 'center',
- dataIndex: 'systemStatus',
- },
- {
- title: '管家账户ID',
- align: 'center',
- dataIndex: 'adminAdvertiserId',
- },
- {
- title: '创建时间',
- align: 'center',
- dataIndex: 'createTime',
- },
- ],
- ipagination: {
- current: 1,
- pageSize: 10,
- pageSizeOptions: ['10', '20', '50', '100'],
- showTotal: (total, range) => {
- return range[0] + '-' + range[1] + ' 共' + total + '条'
- },
- showQuickJumper: true,
- showSizeChanger: true,
- total: 0,
- },
- // 认领相关
- claimVisible: false,
- claimLoading: false,
- claimProjectId: undefined,
- projectList: [],
- }
- },
- mounted() {
- this.loadData()
- },
- methods: {
- loadData(arg) {
- if (arg === 1) {
- this.ipagination.current = 1
- }
- this.loading = true
- let params = {
- pageNo: this.ipagination.current,
- pageSize: this.ipagination.pageSize,
- ...this.queryParam,
- }
- getAction('/ctop/adqAccountClaim/unclaimedList', params).then((res) => {
- this.loading = false
- if (res.success) {
- this.dataSource = res.result.records || []
- this.ipagination.total = res.result.total || 0
- } else {
- this.$message.error(res.message || '查询失败')
- }
- })
- },
- searchQuery() {
- this.loadData(1)
- },
- searchReset() {
- this.queryParam = {}
- this.loadData(1)
- },
- handleTableChange(pagination) {
- this.ipagination = pagination
- this.loadData()
- },
- onSelectChange(selectedRowKeys, selectedRows) {
- this.selectedRowKeys = selectedRowKeys
- this.selectedRows = selectedRows
- },
- showClaimModal() {
- if (this.selectedRowKeys.length === 0) {
- this.$message.warning('请至少选择一个账户')
- return
- }
- this.claimVisible = true
- this.claimProjectId = undefined
- this.loadProjects()
- },
- loadProjects() {
- getAction('/ctop/adqAccountClaim/projectList', {}).then((res) => {
- if (res.success) {
- this.projectList = res.result || []
- }
- })
- },
- searchProjects(value) {
- getAction('/ctop/adqAccountClaim/projectList', { projectName: value }).then((res) => {
- if (res.success) {
- this.projectList = res.result || []
- }
- })
- },
- filterOption(input, option) {
- return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
- },
- handleClaim() {
- if (!this.claimProjectId) {
- this.$message.warning('请选择项目')
- return
- }
- this.claimLoading = true
- let accountIds = this.selectedRows.map((item) => ({
- accountId: item.accountId,
- advertiserName: item.advertiserName,
- adminAdvertiserId: item.adminAdvertiserId,
- }))
- let params = {
- projectId: this.claimProjectId,
- accountIds: accountIds,
- }
- postAction('/ctop/adqAccountClaim/batchClaim', params).then((res) => {
- this.claimLoading = false
- if (res.success) {
- this.$message.success('账户认领成功')
- this.claimVisible = false
- this.selectedRowKeys = []
- this.selectedRows = []
- this.loadData()
- } else {
- this.$message.error(res.message || '认领失败')
- }
- })
- },
- },
- }
- </script>
- <style scoped>
- @import '~@assets/less/common.less';
- </style>
|