- KPIAlignment.vue: 移除页头切换按钮与模式选择器,去 saveAlignConfig;新增右下浮窗 - BudgetManagement.vue: 预算模式 el-switch -> 只读标签,去 onBudgetModeChange;新增右下浮窗 - RolePermissions.vue: 保留目标对齐正本,新增「预算模式」Tab(系统级切换入口) - 仅 frontend/ 三件;build 通过
This commit is contained in:
committed by
Hermes CI Fix
parent
424c33c085
commit
26db15e6d3
@@ -134,6 +134,24 @@
|
||||
</div>
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
|
||||
<!-- Tab 3: 预算模式(系统级) -->
|
||||
<el-tab-pane label="预算模式" name="budget">
|
||||
<p style="color:#999;font-size:13px;margin-top:4px;">
|
||||
系统级设置,影响全部账套。业务页「预算管理」仅只读展示当前模式,切换入口统一在此。
|
||||
</p>
|
||||
<div style="margin-top:20px;display:flex;align-items:center;gap:12px;flex-wrap:wrap;">
|
||||
<el-radio-group v-model="budgetModeSel">
|
||||
<el-radio-button value="fixed">固定预算</el-radio-button>
|
||||
<el-radio-button value="rolling">滚动预算</el-radio-button>
|
||||
</el-radio-group>
|
||||
<el-button type="primary" :loading="savingBudget"
|
||||
:disabled="!budgetModeSel || budgetModeSel === budgetModeCur" @click="saveBudgetMode">保存</el-button>
|
||||
<span style="color:#909399;font-size:13px;">
|
||||
当前:{{ budgetModeCur === 'rolling' ? '滚动预算(滚动12月)' : '固定预算(固定年度)' }}
|
||||
</span>
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</div>
|
||||
</template>
|
||||
@@ -142,7 +160,7 @@
|
||||
import { ref, onMounted, computed } from 'vue'
|
||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
// 统一走 api/index.ts 的 axios 实例(拦截器自动带 Bearer / 401 跳登录)
|
||||
import { permissionApi, alignmentApi } from '../api/index'
|
||||
import { permissionApi, alignmentApi, budgetApi } from '../api/index'
|
||||
|
||||
// ── Tab 控制 ──
|
||||
const activeTab = ref('permissions')
|
||||
@@ -290,6 +308,38 @@ async function saveAlignmentConfig() {
|
||||
savingAlign.value = false
|
||||
}
|
||||
|
||||
// ── 预算模式(系统级;业务页仅只读,切换入口统一在此) ──
|
||||
const budgetModeCur = ref('fixed')
|
||||
const budgetModeSel = ref('fixed')
|
||||
const savingBudget = ref(false)
|
||||
|
||||
async function loadBudgetMode() {
|
||||
try {
|
||||
const r: any = await budgetApi.getConfig()
|
||||
budgetModeCur.value = r.budget_mode || r.mode || 'fixed'
|
||||
budgetModeSel.value = budgetModeCur.value
|
||||
} catch { budgetModeCur.value = 'fixed'; budgetModeSel.value = 'fixed' }
|
||||
}
|
||||
|
||||
async function saveBudgetMode() {
|
||||
if (!budgetModeSel.value || budgetModeSel.value === budgetModeCur.value) return
|
||||
const label = budgetModeSel.value === 'rolling' ? '滚动预算' : '固定预算'
|
||||
try {
|
||||
await ElMessageBox.confirm(
|
||||
`预算模式为系统级设置,切换后将立即作用于全部账套。确认切换为「${label}」?`,
|
||||
'系统级设置二次确认',
|
||||
{ type: 'warning', confirmButtonText: '确认切换', cancelButtonText: '取消' }
|
||||
)
|
||||
} catch { return }
|
||||
savingBudget.value = true
|
||||
try {
|
||||
await budgetApi.setConfig({ mode: budgetModeSel.value, rolling_months: 12 })
|
||||
ElMessage.success('预算模式已设置')
|
||||
await loadBudgetMode()
|
||||
} catch { ElMessage.error('设置失败') }
|
||||
savingBudget.value = false
|
||||
}
|
||||
|
||||
async function previewTree() {
|
||||
loadingTree.value = true
|
||||
try {
|
||||
@@ -304,6 +354,7 @@ async function previewTree() {
|
||||
onMounted(() => {
|
||||
loadPermData()
|
||||
loadAlignmentConfig()
|
||||
loadBudgetMode()
|
||||
})
|
||||
</script>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user