feat: 迁移商务旗下渠道查询和抽屉
This commit is contained in:
@@ -12,3 +12,4 @@ export const listBusinessBindings = (params) => service({ url: '/sw/business/bin
|
||||
export const listUserBindings = (id) => service({ url: `/sw/business/${id}/bindPlatform`, method: 'get' })
|
||||
export const bindPlatform = (data) => service({ url: '/sw/business/bindPlatform', method: 'post', data })
|
||||
export const unbindPlatform = (data) => service({ url: '/sw/business/bindPlatform', method: 'delete', data })
|
||||
export const listBusinessChannels = (id, params) => service({ url: `/sw/business/${id}/promotes`, method: 'get', params })
|
||||
|
||||
@@ -54,6 +54,7 @@
|
||||
"/src/view/superAdmin/user/user.vue": "User",
|
||||
"/src/view/sw/BusinessList.vue": "SwBusinessList",
|
||||
"/src/view/sw/components/BusinessBindings.vue": "SwBusinessBindings",
|
||||
"/src/view/sw/components/BusinessChannels.vue": "SwBusinessChannels",
|
||||
"/src/view/system/security/forceChangePassword.vue": "ForceChangePassword",
|
||||
"/src/view/system/security/index.vue": "SecurityConfig",
|
||||
"/src/view/system/state.vue": "State",
|
||||
|
||||
@@ -29,11 +29,11 @@
|
||||
<el-table-column prop="parentUserName" label="上级商务" min-width="140" />
|
||||
<el-table-column prop="realName" label="姓名" min-width="100" />
|
||||
<el-table-column prop="phoneNumber" label="手机号" min-width="130" />
|
||||
<el-table-column prop="bindCount" label="SDK商务" width="120"><template #default="{ row }"><el-button link type="primary" @click="showBindings(row)">{{ row.bindCount }}</el-button></template></el-table-column>
|
||||
<el-table-column prop="bindCount" label="SDK商务" width="120"><template #default="{ row }"><el-button link type="primary" aria-label="查看SDK商务绑定详情" @click="showBindings(row)">{{ row.bindCount }}</el-button></template></el-table-column>
|
||||
<el-table-column prop="promoteCount" label="旗下渠道数" width="120">
|
||||
<template #default="{ row }">
|
||||
<el-tooltip v-if="row.promoteCount === null" content="当前数据库尚未接入渠道数据,商务资料和绑定数仍可查看。"><span class="text-gray-400">未接入</span></el-tooltip>
|
||||
<span v-else>{{ row.promoteCount }}</span>
|
||||
<el-button v-else type="primary" link aria-label="查看旗下渠道" @click="showChannels(row)">{{ row.promoteCount }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="createTime" label="注册时间" min-width="130"><template #default="{ row }">{{ row.createTime?.slice(0, 10) }}</template></el-table-column>
|
||||
@@ -43,6 +43,7 @@
|
||||
<el-pagination v-model:current-page="query.pageNum" v-model:page-size="query.pageSize" :total="total" :page-sizes="[10, 20, 50, 100]" layout="total, sizes, prev, pager, next, jumper" @size-change="search" @current-change="load" />
|
||||
</div>
|
||||
</div>
|
||||
<el-drawer append-to-body v-model="channelsDrawer" title="旗下渠道" size="520px" destroy-on-close><business-channels :user-id="channelUserId" /></el-drawer>
|
||||
<el-drawer append-to-body v-model="bindingsDrawer" title="SDK商务绑定详情" size="85%" destroy-on-close><business-bindings :user-id="bindingUserId" /></el-drawer>
|
||||
<el-drawer append-to-body v-model="drawer" title="添加子商务" :size="480" destroy-on-close>
|
||||
<el-form ref="formRef" :model="form" :rules="rules" label-position="top">
|
||||
@@ -52,6 +53,7 @@
|
||||
<el-form-item label="手机号"><el-input v-model="form.phoneNumber" maxlength="11" /></el-form-item>
|
||||
<el-form-item label="QQ"><el-input v-model="form.qqNumber" maxlength="20" /></el-form-item>
|
||||
<el-form-item label="商务等级"><span>{{ childLevel }}</span></el-form-item>
|
||||
<el-form-item label="所属商务"><span>{{ user.userInfo.nickName || user.userInfo.userName }}</span></el-form-item>
|
||||
</el-form>
|
||||
<template #footer><el-button @click="drawer = false">取消</el-button><el-button type="primary" :loading="saving" @click="save">确定</el-button></template>
|
||||
</el-drawer>
|
||||
@@ -65,12 +67,16 @@ import { useUserStore } from '@/pinia/modules/user'
|
||||
import { useBtnAuth } from '@/utils/btnAuth'
|
||||
import { listBusiness, createBusiness } from '@/api/business'
|
||||
import BusinessBindings from './components/BusinessBindings.vue'
|
||||
import BusinessChannels from './components/BusinessChannels.vue'
|
||||
|
||||
defineOptions({ name: 'SwBusinessList' })
|
||||
const user = useUserStore()
|
||||
const activeTab = ref('accounts')
|
||||
const bindingsDrawer = ref(false)
|
||||
const bindingUserId = ref(0)
|
||||
const channelsDrawer = ref(false)
|
||||
const channelUserId = ref(0)
|
||||
const showChannels = (row) => { channelUserId.value = row.userId; channelsDrawer.value = true }
|
||||
const showBindings = (row) => { bindingUserId.value = row.userId; bindingsDrawer.value = true }
|
||||
const buttons = useBtnAuth()
|
||||
const levels = { 1: '一级商务', 2: '二级商务', 3: '三级商务' }
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
<el-table-column v-if="userId" prop="platformBusierId" label="ID" min-width="90" />
|
||||
<el-table-column prop="platformBusierAccount" label="游戏商务账号" min-width="140" />
|
||||
<el-table-column v-if="!userId" prop="bindUserName" label="绑定商务" min-width="140" />
|
||||
<el-table-column v-if="!userId" label="旗下渠道数" min-width="110"><template #default="{ row }"><span :class="{ 'text-gray-400': row.promoteCount === null }">{{ row.promoteCount === null ? '未接入' : row.promoteCount }}</span></template></el-table-column>
|
||||
<el-table-column v-if="!userId" label="旗下渠道数" min-width="110"><template #default="{ row }"><span v-if="row.promoteCount === null" class="text-gray-400">未接入</span><el-button v-else type="primary" link aria-label="查看旗下渠道" :disabled="row.status !== '0'" @click="showChannels(row)">{{ row.promoteCount }}</el-button></template></el-table-column>
|
||||
<el-table-column label="审核状态" width="110"><template #default="{ row }"><el-tag :type="row.status === '0' ? 'success' : row.status === '2' ? 'danger' : 'warning'">{{ statuses[row.status] || row.status }}</el-tag></template></el-table-column>
|
||||
<el-table-column prop="createTime" label="绑定时间" min-width="130"><template #default="{ row }">{{ row.createTime?.slice(0, 10) }}</template></el-table-column>
|
||||
<el-table-column v-if="!userId" label="操作" width="110" fixed="right">
|
||||
@@ -28,6 +28,7 @@
|
||||
</el-table>
|
||||
<div v-if="!userId" class="kra-pagination"><el-pagination v-model:current-page="query.pageNum" v-model:page-size="query.pageSize" :total="total" :page-sizes="[10, 20, 50, 100]" layout="total, sizes, prev, pager, next, jumper" @size-change="search" @current-change="load" /></div>
|
||||
</div>
|
||||
<el-drawer append-to-body v-model="channelsDrawer" title="旗下渠道" size="520px" destroy-on-close><business-channels v-if="selectedChannel" :user-id="selectedChannel.userId" :source-db="selectedChannel.sourceDb" :platform-busier-id="selectedChannel.platformBusierId" /></el-drawer>
|
||||
<el-drawer append-to-body v-model="dialog" title="绑定游戏商务" size="460px" destroy-on-close>
|
||||
<el-alert title="验证成功后提交 OA 审核,审核通过后可查看对应渠道数据。" type="info" :closable="false" class="mb-4" />
|
||||
<el-form ref="formRef" :model="form" :rules="rules" label-position="top">
|
||||
@@ -64,6 +65,7 @@ import { ElMessage } from 'element-plus'
|
||||
import { useUserStore } from '@/pinia/modules/user'
|
||||
import { useBtnAuth } from '@/utils/btnAuth'
|
||||
import { listBusinessBindings, listUserBindings, bindPlatform, unbindPlatform } from '@/api/business'
|
||||
import BusinessChannels from './BusinessChannels.vue'
|
||||
|
||||
defineOptions({ name: 'SwBusinessBindings' })
|
||||
const props = defineProps({ userId: { type: Number, default: 0 } })
|
||||
@@ -81,6 +83,9 @@ const dialog = ref(false)
|
||||
const rejectDrawer = ref(false)
|
||||
const unbindDrawer = ref(false)
|
||||
const selectedRow = ref(null)
|
||||
const channelsDrawer = ref(false)
|
||||
const selectedChannel = ref(null)
|
||||
const showChannels = (row) => { selectedChannel.value = row; channelsDrawer.value = true }
|
||||
const showReject = (row) => { selectedRow.value = row; rejectDrawer.value = true }
|
||||
const saving = ref(false)
|
||||
const formRef = ref()
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
<template>
|
||||
<div v-loading="loading">
|
||||
<el-empty v-if="!available" description="当前数据库尚未接入渠道数据" />
|
||||
<template v-else>
|
||||
<el-table :data="rows" :row-key="(row) => `${row.sourceDb}:${row.promoteId}`">
|
||||
<el-table-column type="index" label="序号" width="70" />
|
||||
<el-table-column prop="promoteName" label="渠道名称" min-width="180" show-overflow-tooltip />
|
||||
<el-table-column prop="platformName" label="所属平台" min-width="110" />
|
||||
</el-table>
|
||||
<div v-if="total" class="kra-pagination"><el-pagination v-model:current-page="page" :page-size="10" :total="total" layout="total, prev, pager, next" @current-change="load" /></div>
|
||||
</template>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref, watch } from 'vue'
|
||||
import { listBusinessChannels } from '@/api/business'
|
||||
|
||||
defineOptions({ name: 'SwBusinessChannels' })
|
||||
const props = defineProps({ userId: { type: Number, required: true }, sourceDb: { type: String, default: '' }, platformBusierId: { type: Number, default: 0 } })
|
||||
const page = ref(1)
|
||||
const rows = ref([])
|
||||
const total = ref(0)
|
||||
const available = ref(true)
|
||||
const loading = ref(false)
|
||||
const load = async () => {
|
||||
loading.value = true
|
||||
try {
|
||||
const res = await listBusinessChannels(props.userId, { pageNum: page.value, pageSize: 10, sourceDb: props.sourceDb || undefined, platformBusierId: props.platformBusierId || undefined })
|
||||
if (res.code === 0) { rows.value = res.data.rows; total.value = res.data.total; available.value = res.data.available !== false }
|
||||
} finally { loading.value = false }
|
||||
}
|
||||
watch(() => [props.userId, props.sourceDb, props.platformBusierId], () => { page.value = 1; load() }, { immediate: true })
|
||||
</script>
|
||||
Reference in New Issue
Block a user