This commit is contained in:
BianLzhaoMin 2026-01-27 15:29:24 +08:00
parent 1e4ef09b67
commit 5a7d1bc77c
2 changed files with 130 additions and 43 deletions

View File

@ -56,3 +56,11 @@ export function updateLoopSendStatusAPI(data) {
}) })
} }
// 获取短信余额
export function getSmsBalanceAPI() {
return request({
url: '/msgJob/getMessageBalance',
method: 'GET',
})
}

View File

@ -1,26 +1,10 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<!-- 短信余额提示 -->
<el-alert
v-if="smsBalance !== null"
:title="`短信余额剩余${smsBalance}条,请及时充值!`"
type="warning"
:closable="false"
show-icon
style="margin-bottom: 20px"
/>
<!-- 循环发送短信列表 --> <!-- 循环发送短信列表 -->
<ComTable <div class="table-wrapper">
ref="comTableRef" <!-- 表格工具栏区域 -->
:form-columns="formColumns" <div class="table-toolbar">
:table-columns="tableColumns" <div class="toolbar-left">
:load-data="listLoopSendAPI"
:show-toolbar="true"
:show-action="true"
:action-columns="actionColumns"
>
<template #toolbar>
<ComButton <ComButton
type="primary" type="primary"
icon="Plus" icon="Plus"
@ -29,7 +13,29 @@
> >
新建 新建
</ComButton> </ComButton>
</template> </div>
<div class="toolbar-right">
<!-- 短信余额提醒 -->
<el-alert
v-if="smsBalance !== null"
:title="`短信余额剩余 ${smsBalance} 条,请及时充值!`"
type="warning"
:closable="false"
show-icon
class="balance-alert"
/>
</div>
</div>
<ComTable
ref="comTableRef"
:form-columns="formColumns"
:table-columns="tableColumns"
:load-data="listLoopSendAPI"
:show-toolbar="false"
:show-action="true"
:action-columns="actionColumns"
>
<template #taskStatus="{ row }"> <template #taskStatus="{ row }">
<el-switch <el-switch
active-value="0" active-value="0"
@ -42,15 +48,17 @@
</template> </template>
</ComTable> </ComTable>
</div> </div>
</div>
</template> </template>
<script setup name="LoopSend"> <script setup name="LoopSend">
import { ref, computed, getCurrentInstance } from 'vue' import { ref, computed, getCurrentInstance, onMounted } from 'vue'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import { debounce } from 'lodash-es' import { debounce } from 'lodash-es'
import { import {
listLoopSendAPI,
delLoopSendAPI, delLoopSendAPI,
listLoopSendAPI,
getSmsBalanceAPI,
updateLoopSendStatusAPI, updateLoopSendStatusAPI,
} from '@/api/sMsSendManage/loopSend.js' } from '@/api/sMsSendManage/loopSend.js'
import config from './config' import config from './config'
@ -62,7 +70,7 @@ const { proxy } = getCurrentInstance()
const { tableColumns, buildFormColumns } = config const { tableColumns, buildFormColumns } = config
const comTableRef = ref(null) const comTableRef = ref(null)
const smsBalance = ref(null) // const smsBalance = ref(null) //
const switchLoadingMap = new Map() // switch loading const switchLoadingMap = new Map() // switch loading
// //
@ -193,10 +201,81 @@ const onHandleStatusChange = (value, row) => {
// 使 300ms // 使 300ms
const debouncedStatusChange = debounce(onHandleStatusChange, 300) const debouncedStatusChange = debounce(onHandleStatusChange, 300)
//
const getSmsBalance = async () => {
try {
const result = await getSmsBalanceAPI()
if (result.code === 200) {
smsBalance.value = result.data || result.balance || null
}
} catch (error) {
console.error('获取短信余额失败:', error)
}
}
onMounted(() => {
getSmsBalance()
})
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.app-container { .app-container {
padding: 20px; padding: 20px;
} }
.table-wrapper {
display: flex;
flex-direction: column;
gap: 0;
}
.table-toolbar {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 16px;
padding: 0;
}
.toolbar-left {
display: flex;
align-items: center;
gap: 12px;
}
.toolbar-right {
display: flex;
align-items: center;
gap: 12px;
}
.balance-alert {
margin: 0;
max-width: 400px;
:deep(.el-alert__content) {
.el-alert__title {
font-size: 14px;
font-weight: 500;
color: #e6a23c;
}
}
}
@media (max-width: 768px) {
.table-toolbar {
flex-direction: column;
align-items: flex-start;
gap: 12px;
}
.toolbar-right {
width: 100%;
}
.balance-alert {
max-width: 100%;
}
}
</style> </style>