feat: 迁移商务与游戏商务画像及交互看板

This commit is contained in:
Yvan
2026-11-03 23:11:46 +08:00
parent 7f8105f6fb
commit 0de822f121
30 changed files with 1959 additions and 26 deletions
+7
View File
@@ -38,6 +38,7 @@
</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 label="状态" width="110"><template #default="{ row }"><el-tag :type="statusType(row.status)">{{ statuses[row.status] || row.status }}</el-tag></template></el-table-column>
<el-table-column label="操作" width="90" fixed="right"><template #default="{ row }"><el-button v-if="canQuery" type="primary" link @click="showPortrait(row)">画像</el-button></template></el-table-column>
</el-table>
<div 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" />
@@ -45,6 +46,7 @@
</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>
<business-profile-drawer v-model="portraitOpen" :user-id="portraitUser?.userId || 0" :name="portraitUser?.realName || portraitUser?.userName || ''" />
<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">
<el-form-item label="商务账号" prop="userName"><el-input v-model="form.userName" maxlength="30" /></el-form-item>
@@ -68,6 +70,7 @@ import { useBtnAuth } from '@/utils/btnAuth'
import { listBusiness, createBusiness } from '@/api/business'
import BusinessBindings from './components/BusinessBindings.vue'
import BusinessChannels from './components/BusinessChannels.vue'
import BusinessProfileDrawer from './components/BusinessProfileDrawer.vue'
defineOptions({ name: 'SwBusinessList' })
const user = useUserStore()
@@ -79,9 +82,13 @@ 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 portraitOpen = ref(false)
const portraitUser = ref(null)
const showPortrait = row => { portraitUser.value = row; portraitOpen.value = true }
const levels = { 1: '一级商务', 2: '二级商务', 3: '三级商务' }
const statuses = { 0: '正常', 1: '停用', 2: '已驳回', 3: '待审核' }
const isAdmin = computed(() => Number(user.userInfo.authorityId) === 888)
const canQuery = computed(() => isAdmin.value || !!buttons['sw:business:query'])
const canAdd = computed(() => (isAdmin.value || buttons['sw:business:add']) && (isAdmin.value || Number(user.userInfo.level) < 3))
const isLevel3 = computed(() => Number(user.userInfo.level) === 3)
const childLevel = computed(() => levels[isAdmin.value ? 1 : Number(user.userInfo.level || 1) + 1])