feat: 手动实名和套餐列表退款
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 5m53s

This commit is contained in:
sexygoat
2026-04-23 18:13:07 +08:00
parent 719db517f2
commit cd2ca96873
12 changed files with 539 additions and 180 deletions

View File

@@ -27,8 +27,10 @@
@show-switch-mode="showSwitchModeDialog"
@show-set-wifi="showSetWiFiDialog"
@show-realname-policy="showRealnamePolicyDialog"
@show-update-realname-status="showUpdateRealnameStatusDialog"
@enable-binding-card="handleEnableBindingCard"
@disable-binding-card="handleDisableBindingCard"
@update-binding-card-realname-status="handleUpdateBindingCardRealnameStatus"
@navigate-to-card="handleNavigateToCard"
@navigate-to-device="handleNavigateToDevice"
/>
@@ -63,6 +65,7 @@
@page-change="handlePackagePageChange"
@size-change="handlePackageSizeChange"
@navigate-to-device="handleNavigateToDevice"
@refresh="handlePackageRefresh"
/>
</div>
@@ -127,6 +130,18 @@
:current-policy="cardInfo?.realname_policy"
@confirm="handleConfirmRealnamePolicy"
/>
<UpdateRealnameStatusDialog
v-model="updateRealnameStatusDialogVisible"
:asset-identifier="cardInfo?.identifier || ''"
:current-realname-status="cardInfo?.real_name_status"
@success="handleUpdateRealnameStatusSuccess"
/>
<UpdateRealnameStatusDialog
v-model="bindingCardRealnameStatusDialogVisible"
:asset-identifier="bindingCardRealnameStatusIccid"
:current-realname-status="bindingCardRealnameStatusValue"
@success="handleBindingCardRealnameStatusSuccess"
/>
</div>
</template>
@@ -152,6 +167,7 @@
} from './components/dialogs'
import SwitchCardDialog from '@/components/device/SwitchCardDialog.vue'
import RealnamePolicyDialog from '@/components/device/RealnamePolicyDialog.vue'
import UpdateRealnameStatusDialog from '@/components/business/UpdateRealnameStatusDialog.vue'
// 引入 composables
import { useAssetInfo } from './composables/useAssetInfo'
@@ -211,12 +227,18 @@
const dailyRecordsDialogVisible = ref(false)
const orderHistoryDialogVisible = ref(false)
const realnamePolicyDialogVisible = ref(false)
const updateRealnameStatusDialogVisible = ref(false)
const selectedPackageUsageId = ref<number | null>(null)
// 绑定卡实名状态更新
const bindingCardRealnameStatusDialogVisible = ref(false)
const bindingCardRealnameStatusIccid = ref('')
const bindingCardRealnameStatusValue = ref<number>(0)
// ========== 套餐列表分页状态 ==========
const packagePagination = ref({
page: 1,
pageSize: 10,
pageSize: 5,
total: 0
})
@@ -254,7 +276,7 @@
// 重置分页并加载套餐列表
packagePagination.value.page = 1
const result = await loadPackageList(identifier, 1, packagePagination.pageSize)
const result = await loadPackageList(identifier, 1, packagePagination.value.pageSize)
packagePagination.value.total = result.total
}
@@ -365,6 +387,36 @@
realnamePolicyDialogVisible.value = true
}
/**
* 显示更新实名状态对话框
*/
const showUpdateRealnameStatusDialog = () => {
updateRealnameStatusDialogVisible.value = true
}
/**
* 更新实名状态成功
*/
const handleUpdateRealnameStatusSuccess = async () => {
await refreshAsset(cardInfo.value!.identifier, cardInfo.value!.asset_type)
}
/**
* 显示绑定卡更新实名状态对话框
*/
const handleUpdateBindingCardRealnameStatus = (payload: { card: any }) => {
bindingCardRealnameStatusIccid.value = payload.card.iccid
bindingCardRealnameStatusValue.value = payload.card.real_name_status ?? 0
bindingCardRealnameStatusDialogVisible.value = true
}
/**
* 绑定卡更新实名状态成功
*/
const handleBindingCardRealnameStatusSuccess = async () => {
await refreshAsset(cardInfo.value!.identifier, cardInfo.value!.asset_type)
}
/**
* 确认实名认证策略
*/
@@ -472,6 +524,19 @@
packagePagination.value.total = result.total
}
/**
* 套餐列表刷新
*/
const handlePackageRefresh = async () => {
if (!cardInfo.value) return
const result = await loadPackageList(
cardInfo.value.identifier,
packagePagination.value.page,
packagePagination.value.pageSize
)
packagePagination.value.total = result.total
}
/**
* 显示流量详单
*/