- 项目铁律:一律 MyDialog(Element 原生弹窗在本项目长期不可见) - 含用户报的 OKR 模板库「应用」弹窗(OKRTemplates.vue) - 等价适配:width 字符串 px → 数字绑定;append-to-body/destroy-on-close /top/show-close/class 等 EP 专有属性移除(MyDialog 已 teleport+卸载语义) - 新增 MyDialog 显式 import;零后端/零数据改动 - 全仓 <el-dialog> 0 命中;components.d.ts 随之移除 ElDialog 自动注册
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<el-dialog v-model="visible" title="" :width="560" :show-close="true" :close-on-click-modal="false" class="cma-welcome-dialog">
|
||||
<MyDialog v-model="visible" title="" :width="560">
|
||||
<div class="welcome-body">
|
||||
<div class="welcome-header">
|
||||
<div class="welcome-icon">👋</div>
|
||||
@@ -69,12 +69,13 @@
|
||||
<el-button text @click="skip">跳过引导</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</MyDialog>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, onMounted } from 'vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
import MyDialog from './MyDialog.vue'
|
||||
|
||||
const router = useRouter()
|
||||
const visible = ref(false)
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
</template>
|
||||
|
||||
<!-- 里程碑编辑弹窗 -->
|
||||
<el-dialog v-model="showEditDialog" title="编辑里程碑" width="400px" destroy-on-close>
|
||||
<MyDialog v-model="showEditDialog" title="编辑里程碑" :width="400">
|
||||
<el-form label-width="80px" v-if="editingMs">
|
||||
<el-form-item label="标签">
|
||||
<el-input v-model="editingMs.label" />
|
||||
@@ -102,7 +102,7 @@
|
||||
<el-button size="small" @click="showEditDialog = false">取消</el-button>
|
||||
<el-button size="small" type="primary" :loading="saving" @click="saveMilestone">保存</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</MyDialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -111,6 +111,7 @@ import { ref, onMounted, watch } from 'vue'
|
||||
import { ElMessage } from 'element-plus'
|
||||
import { Calendar, TrendCharts, Checked, Loading } from '@element-plus/icons-vue'
|
||||
import { okrApi } from '../../api/index'
|
||||
import MyDialog from '../MyDialog.vue'
|
||||
|
||||
const props = defineProps<{
|
||||
okrId: number
|
||||
|
||||
@@ -227,7 +227,7 @@
|
||||
</template>
|
||||
|
||||
<!-- 处理预警弹窗 -->
|
||||
<el-dialog v-model="showDialog" title="处理预警" width="500px">
|
||||
<MyDialog v-model="showDialog" title="处理预警" :width="500">
|
||||
<el-form :model="resolveForm" label-width="100px">
|
||||
<el-form-item label="预警类型">
|
||||
<el-tag :type="isTrendAlert(currentAlert?.alert_message) ? 'info' : 'primary'" size="small">
|
||||
@@ -258,10 +258,10 @@
|
||||
<el-button @click="showDialog=false">取消</el-button>
|
||||
<el-button type="primary" @click="doResolve" :loading="resolving">确认处理</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</MyDialog>
|
||||
|
||||
<!-- 编辑预警规则弹窗 -->
|
||||
<el-dialog v-model="showRuleForm" title="编辑预警规则" width="520px">
|
||||
<MyDialog v-model="showRuleForm" title="编辑预警规则" :width="520">
|
||||
<el-form :model="ruleForm" label-width="110px" size="small">
|
||||
<el-form-item label="规则类型">
|
||||
<el-select v-model="ruleForm.rule_type" style="width:100%">
|
||||
@@ -326,10 +326,10 @@
|
||||
<el-button @click="showRuleForm=false">取消</el-button>
|
||||
<el-button type="primary" @click="saveRule" :loading="savingRule">保存</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</MyDialog>
|
||||
|
||||
<!-- 新建/编辑改善计划弹窗 -->
|
||||
<el-dialog v-model="showPlanForm" :title="editingPlan ? '编辑改善计划' : '新建改善计划'" width="550px">
|
||||
<MyDialog v-model="showPlanForm" :title="editingPlan ? '编辑改善计划' : '新建改善计划'" :width="550">
|
||||
<el-form :model="planForm" label-width="100px">
|
||||
<el-form-item label="计划名称"><el-input v-model="planForm.title" /></el-form-item>
|
||||
<el-form-item label="关联KPI">
|
||||
@@ -360,7 +360,7 @@
|
||||
<el-button @click="showPlanForm=false">取消</el-button>
|
||||
<el-button type="primary" @click="savePlan" :loading="savingPlan">保存</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</MyDialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -372,6 +372,7 @@ import { alertApi, userApi, actionPlanApi, kpiApi, alertRulesApi } from '../api/
|
||||
import BotSourceTag from '../components/BotSourceTag.vue'
|
||||
import RiskCell from '../components/charts/RiskCell.vue'
|
||||
import { sessionEntityName } from '../utils/entity'
|
||||
import MyDialog from '../components/MyDialog.vue'
|
||||
|
||||
const route = useRoute()
|
||||
const activeTab = ref((route.meta?.tab as string) || 'alerts')
|
||||
|
||||
@@ -118,7 +118,7 @@
|
||||
</div>
|
||||
|
||||
<!-- 新增分析结论对话框 -->
|
||||
<el-dialog v-model="showCreateDialog" title="新增分析结论" width="640px" :close-on-click-modal="false">
|
||||
<MyDialog v-model="showCreateDialog" title="新增分析结论" :width="640">
|
||||
<el-form :model="form" label-width="100px" label-position="top">
|
||||
<el-row :gutter="16">
|
||||
<el-col :span="12">
|
||||
@@ -187,7 +187,7 @@
|
||||
<el-button @click="showCreateDialog = false">取消</el-button>
|
||||
<el-button type="primary" @click="submitResult" :loading="submitting">提交</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</MyDialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -196,6 +196,7 @@ import { ref, computed, onMounted } from 'vue'
|
||||
import { analysisApi } from '../api/index'
|
||||
import { DataAnalysis, Plus, Delete } from '@element-plus/icons-vue'
|
||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
import MyDialog from '../components/MyDialog.vue'
|
||||
|
||||
const loading = ref(false)
|
||||
const submitting = ref(false)
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
</el-card>
|
||||
|
||||
<!-- 模板选择对话框 -->
|
||||
<el-dialog v-model="showTemplateDialog" title="选择报表模板" :width="400">
|
||||
<MyDialog v-model="showTemplateDialog" title="选择报表模板" :width="400">
|
||||
<el-table :data="templates" highlight-current-row @row-click="tpl => { selectedTemplate = tpl; }" :show-header="false">
|
||||
<el-table-column prop="name" label="模板" min-width="120" />
|
||||
<el-table-column prop="report_type" label="类型" width="100">
|
||||
@@ -94,10 +94,10 @@
|
||||
<el-button @click="showTemplateDialog = false">取消</el-button>
|
||||
<el-button type="primary" @click="confirmTemplate" :disabled="!selectedTemplate">使用此模板</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</MyDialog>
|
||||
|
||||
<!-- 新建分析报表 -->
|
||||
<el-dialog v-model="showNewReport" title="新建分析报表" :width="600">
|
||||
<MyDialog v-model="showNewReport" title="新建分析报表" :width="600">
|
||||
<el-form label-width="100px">
|
||||
<el-form-item label="报表名称">
|
||||
<el-input v-model="newReportName" placeholder="输入报表名称" />
|
||||
@@ -123,10 +123,10 @@
|
||||
<el-button @click="showNewReport = false">取消</el-button>
|
||||
<el-button type="primary" @click="doAnalyze" :loading="analyzing">生成报表</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</MyDialog>
|
||||
|
||||
<!-- 保存报表对话框 -->
|
||||
<el-dialog v-model="showSaveDialog" title="保存报表" :width="400">
|
||||
<MyDialog v-model="showSaveDialog" title="保存报表" :width="400">
|
||||
<el-form label-width="80px">
|
||||
<el-form-item label="报表名称">
|
||||
<el-input v-model="saveReportName" placeholder="输入报表名称" />
|
||||
@@ -139,7 +139,7 @@
|
||||
<el-button @click="showSaveDialog = false">取消</el-button>
|
||||
<el-button type="primary" @click="saveReport" :loading="saving">保存</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</MyDialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -149,6 +149,7 @@ import { ElMessage } from 'element-plus'
|
||||
import VChart from 'vue-echarts'
|
||||
import 'echarts'
|
||||
import { biReportApi, kpiApi } from '../api/index'
|
||||
import MyDialog from '../components/MyDialog.vue'
|
||||
|
||||
const templates = ref<any[]>([])
|
||||
const reports = ref<any[]>([])
|
||||
|
||||
@@ -595,7 +595,7 @@
|
||||
</el-tab-pane>
|
||||
|
||||
<!-- 告警归因详情弹窗 (P1-③) -->
|
||||
<el-dialog v-model="showAttributionDialog" title="告警归因分析" width="720" append-to-body>
|
||||
<MyDialog v-model="showAttributionDialog" title="告警归因分析" :width="720">
|
||||
<template v-if="attributionDetail">
|
||||
<el-descriptions :column="2" border size="small" style="margin-bottom:12px;">
|
||||
<el-descriptions-item label="KPI">{{ attributionDetail.kpi_name }}</el-descriptions-item>
|
||||
@@ -666,7 +666,7 @@
|
||||
</div>
|
||||
</template>
|
||||
<template #footer><el-button @click="showAttributionDialog = false">关闭</el-button></template>
|
||||
</el-dialog>
|
||||
</MyDialog>
|
||||
|
||||
<!-- 年度预算分解弹窗 (P1-① 年度分解按钮修复; MyDialog 铁律) -->
|
||||
<MyDialog v-model="showDecompose" title="年度预算分解" :width="640">
|
||||
|
||||
@@ -275,7 +275,7 @@
|
||||
</el-tabs>
|
||||
|
||||
<!-- ── 新建/编辑弹窗 ── -->
|
||||
<el-dialog v-model="dialogVisible" :title="form.id ? '编辑收付款计划' : '新建收付款计划'" width="480px">
|
||||
<MyDialog v-model="dialogVisible" :title="form.id ? '编辑收付款计划' : '新建收付款计划'" :width="480">
|
||||
<el-form :model="form" label-width="90px">
|
||||
<el-form-item label="类型" required>
|
||||
<el-radio-group v-model="form.plan_type">
|
||||
@@ -307,7 +307,7 @@
|
||||
<el-button @click="dialogVisible = false">取消</el-button>
|
||||
<el-button type="primary" :loading="saving" @click="savePlan">保存</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</MyDialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -315,6 +315,7 @@
|
||||
import { ref, computed, reactive, onMounted, onBeforeUnmount, nextTick } from 'vue'
|
||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
import { cashApi } from '../api/index'
|
||||
import MyDialog from '../components/MyDialog.vue'
|
||||
|
||||
const entityId = Number(localStorage.getItem('cma_entity_id') || 1)
|
||||
|
||||
|
||||
@@ -247,7 +247,7 @@
|
||||
</div>
|
||||
|
||||
<!-- KPI详情弹窗(只读,A区) -->
|
||||
<el-dialog v-model="showDetail" :title="selectedKPI?.kpi_name" width="500px">
|
||||
<MyDialog v-model="showDetail" :title="selectedKPI?.kpi_name" :width="500">
|
||||
<div v-if="selectedKPI">
|
||||
<div class="dlg-summary">
|
||||
<el-tag :type="alertType(selectedKPI.alert_level)" size="large">
|
||||
@@ -262,7 +262,7 @@
|
||||
<div v-if="selectedKPIDetail" class="analysis-content" v-html="renderMd(selectedKPIDetail)"></div>
|
||||
<el-button v-else type="primary" plain @click="loadKPIAnalysis" :loading="loadingDetail">AI分析此KPI</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</MyDialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -276,6 +276,7 @@ import api from '../api/index'
|
||||
import CountUp from '../components/CountUp.vue'
|
||||
import GrowthQuality from '../components/GrowthQuality.vue'
|
||||
import BEPBreakEvenCard from '../components/BEPBreakEvenCard.vue'
|
||||
import MyDialog from '../components/MyDialog.vue'
|
||||
|
||||
const router = useRouter()
|
||||
|
||||
|
||||
@@ -269,7 +269,7 @@
|
||||
<el-empty v-if="!loading && !summary && selectedMap" description="暂无战略回顾数据" />
|
||||
|
||||
<!-- KPI详情弹出 -->
|
||||
<el-dialog v-model="showKpiDialog" :title="selectedObjName" width="600">
|
||||
<MyDialog v-model="showKpiDialog" :title="selectedObjName" :width="600">
|
||||
<div v-for="k in selectedKpis" :key="k.kpi_code" class="kpi-detail-row" :class="'kpi-' + k.level">
|
||||
<div class="kpi-detail-head">
|
||||
<span class="kpi-detail-badge">{{ badgeIcon(k.level) }}</span>
|
||||
@@ -293,10 +293,10 @@
|
||||
<el-button size="small" @click="$router.push('/kpis/'+k.kpi_id)" style="margin-top:8px;">查看KPI详情 →</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</MyDialog>
|
||||
|
||||
<!-- 保存复盘结论弹窗(大PDCA Act闭环 2026-08-27) -->
|
||||
<el-dialog v-model="saveDialogVisible" title="📝 保存复盘结论" width="560">
|
||||
<MyDialog v-model="saveDialogVisible" title="📝 保存复盘结论" :width="560">
|
||||
<el-form label-width="110px">
|
||||
<el-form-item label="复盘类型">
|
||||
<el-select v-model="reviewForm.review_type" style="width: 200px;">
|
||||
@@ -324,10 +324,10 @@
|
||||
<el-button @click="saveDialogVisible = false">取消</el-button>
|
||||
<el-button type="primary" :loading="saving" @click="saveReview">保存</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</MyDialog>
|
||||
|
||||
<!-- 历史复盘记录弹窗 -->
|
||||
<el-dialog v-model="showHistoryDialog" title="📚 历史复盘记录" width="600">
|
||||
<MyDialog v-model="showHistoryDialog" title="📚 历史复盘记录" :width="600">
|
||||
<div v-if="reviewRecords.length === 0" style="color:#909399;padding:20px;text-align:center;">暂无历史复盘记录</div>
|
||||
<el-timeline v-else>
|
||||
<el-timeline-item v-for="rec in reviewRecords" :key="rec.id" :timestamp="rec.review_date + ' · ' + (rec.review_type === 'quarterly' ? '季度战略回顾' : '月度运营复盘')" placement="top">
|
||||
@@ -339,7 +339,7 @@
|
||||
</el-card>
|
||||
</el-timeline-item>
|
||||
</el-timeline>
|
||||
</el-dialog>
|
||||
</MyDialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -348,6 +348,7 @@ import { ref, reactive, onMounted } from "vue"
|
||||
import { useRoute, useRouter } from "vue-router"
|
||||
import { ElMessage } from "element-plus"
|
||||
import api from "../api/index"
|
||||
import MyDialog from '../components/MyDialog.vue'
|
||||
|
||||
const route = useRoute()
|
||||
const $router = useRouter()
|
||||
|
||||
@@ -112,7 +112,7 @@
|
||||
</div>
|
||||
|
||||
<!-- 应用弹窗 — 选择目标地图 -->
|
||||
<el-dialog v-model="showApplyDialog" title="应用模板" width="480px" destroy-on-close>
|
||||
<MyDialog v-model="showApplyDialog" title="应用模板" :width="480">
|
||||
<div v-if="applyingTemplate">
|
||||
<p style="margin-bottom:12px;font-weight:500;">O:{{ applyingTemplate.name }}</p>
|
||||
<p style="margin-bottom:12px;color:#909399;font-size:13px;">
|
||||
@@ -133,7 +133,7 @@
|
||||
<el-button size="small" @click="showApplyDialog = false">取消</el-button>
|
||||
<el-button size="small" type="primary" :loading="applying" @click="confirmApply">确认应用</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</MyDialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -143,6 +143,7 @@ import { useRouter } from 'vue-router'
|
||||
import { ElMessage } from 'element-plus'
|
||||
import { Search, Document, Files, User, Loading } from '@element-plus/icons-vue'
|
||||
import { okrTemplateApi } from '../api/index'
|
||||
import MyDialog from '../components/MyDialog.vue'
|
||||
|
||||
const router = useRouter()
|
||||
|
||||
|
||||
@@ -88,7 +88,7 @@
|
||||
</div>
|
||||
|
||||
<!-- 编辑弹窗 -->
|
||||
<el-dialog v-model="showDialog" :title="isEdit ? '编辑节点' : '新增节点'" width="480" destroy-on-close>
|
||||
<MyDialog v-model="showDialog" :title="isEdit ? '编辑节点' : '新增节点'" :width="480">
|
||||
<el-form :model="form" label-width="90px" size="small">
|
||||
<el-form-item label="节点名称">
|
||||
<el-input v-model="form.name" placeholder="输入节点名称" />
|
||||
@@ -116,7 +116,7 @@
|
||||
<el-button @click="showDialog=false">取消</el-button>
|
||||
<el-button type="primary" @click="saveNode" :loading="saving">保存</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</MyDialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -129,6 +129,7 @@ import {
|
||||
Search, Plus, Edit, Delete,
|
||||
} from "@element-plus/icons-vue"
|
||||
import api from "../api/index"
|
||||
import MyDialog from '../components/MyDialog.vue'
|
||||
|
||||
const treeData = ref<any[]>([])
|
||||
const treeRef = ref<any>(null)
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
</el-row>
|
||||
|
||||
<!-- 回款登记弹窗 -->
|
||||
<el-dialog v-model="paymentVisible" title="登记回款" width="420px" append-to-body>
|
||||
<MyDialog v-model="paymentVisible" title="登记回款" :width="420">
|
||||
<el-form label-width="90px">
|
||||
<el-form-item label="客户">{{ currentRow?.name }}</el-form-item>
|
||||
<el-form-item label="应收金额">¥{{ currentRow?.amount }}万</el-form-item>
|
||||
@@ -86,7 +86,7 @@
|
||||
<el-button @click="paymentVisible = false">取消</el-button>
|
||||
<el-button type="primary" :loading="paying" @click="submitPayment">确认回款</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</MyDialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -95,6 +95,7 @@ import { ref, computed, onMounted, nextTick } from 'vue'
|
||||
import * as echarts from 'echarts'
|
||||
import api from '@/api'
|
||||
import { ElMessage } from 'element-plus'
|
||||
import MyDialog from '../components/MyDialog.vue'
|
||||
|
||||
const items = ref<any[]>([])
|
||||
const owners = ref<string[]>([])
|
||||
|
||||
@@ -19,13 +19,10 @@
|
||||
</div>
|
||||
|
||||
<!-- 验证对话框 -->
|
||||
<el-dialog
|
||||
<MyDialog
|
||||
v-model="dialogVisible"
|
||||
title="安全验证"
|
||||
width="380px"
|
||||
:close-on-click-modal="false"
|
||||
append-to-body
|
||||
top="20vh"
|
||||
:width="380"
|
||||
>
|
||||
<div class="captcha-body">
|
||||
<!-- 图形验证码模式 -->
|
||||
@@ -79,7 +76,7 @@
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</MyDialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -87,6 +84,7 @@
|
||||
import { ref, onMounted } from 'vue'
|
||||
import { ElMessage } from 'element-plus'
|
||||
import { securityApi } from '../api/index'
|
||||
import MyDialog from '../components/MyDialog.vue'
|
||||
|
||||
const emit = defineEmits<{
|
||||
(e: 'verified', token: string): void
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
</el-table>
|
||||
|
||||
<!-- 批量打标对话框 -->
|
||||
<el-dialog v-model="batchDialogVisible" title="批量设置新30号准则分类" width="400px">
|
||||
<MyDialog v-model="batchDialogVisible" title="批量设置新30号准则分类" :width="400">
|
||||
<div class="batch-dialog-body">
|
||||
<p>已选 <strong>{{ selectedIds.length }}</strong> 个科目</p>
|
||||
<el-select v-model="batchCategory" placeholder="选择分类" size="small" style="width:100%;">
|
||||
@@ -92,7 +92,7 @@
|
||||
<el-button size="small" @click="batchDialogVisible = false">取消</el-button>
|
||||
<el-button type="primary" size="small" :loading="batchLoading" @click="doBatchUpdate">确认打标</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</MyDialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -101,6 +101,7 @@ import { ref, onMounted } from 'vue'
|
||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
// 统一走 api/index.ts 的 axios 实例(拦截器自动带 Bearer / 401 跳登录)
|
||||
import api from '../api/index'
|
||||
import MyDialog from '../components/MyDialog.vue'
|
||||
|
||||
const loading = ref(false)
|
||||
const subjects = ref<any[]>([])
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
</div>
|
||||
|
||||
<!-- 应用建议弹窗 -->
|
||||
<el-dialog v-model="showApplyDialog" :title="'应用到:' + (applySug?.title || '')" width="520px">
|
||||
<MyDialog v-model="showApplyDialog" :title="'应用到:' + (applySug?.title || '')" :width="520">
|
||||
<div v-if="previewLoading" class="preview-box">预览加载中...</div>
|
||||
<div v-else-if="previewData" class="preview-box">
|
||||
<div class="preview-title">📋 将变更什么</div>
|
||||
@@ -109,7 +109,7 @@
|
||||
<el-button @click="showApplyDialog = false">取消</el-button>
|
||||
<el-button type="primary" :loading="applying" @click="submitApply">确认应用</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</MyDialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -117,6 +117,7 @@
|
||||
import { ref, onMounted } from 'vue'
|
||||
import { ElMessage } from 'element-plus'
|
||||
import { aiSuggestionApi } from '../api/index'
|
||||
import MyDialog from '../components/MyDialog.vue'
|
||||
|
||||
// 待批列表默认"未应用"(高危建议=人拍板入口,应用过的历史不占首屏);类型过滤支持高危两类+行动方案
|
||||
const statusFilter = ref('unapplied')
|
||||
|
||||
@@ -190,7 +190,7 @@
|
||||
</el-tabs>
|
||||
|
||||
<!-- 账户编辑弹窗 -->
|
||||
<el-dialog v-model="accountDialogVisible" :title="accountForm.id ? '编辑账户' : '新增账户'" width="520px" append-to-body>
|
||||
<MyDialog v-model="accountDialogVisible" :title="accountForm.id ? '编辑账户' : '新增账户'" :width="520">
|
||||
<el-form label-width="90px">
|
||||
<el-form-item label="账号" required>
|
||||
<el-input v-model="accountForm.account_no" placeholder="银行账号" />
|
||||
@@ -238,10 +238,10 @@
|
||||
<el-button @click="accountDialogVisible = false">取消</el-button>
|
||||
<el-button type="primary" :loading="accountSaving" @click="saveAccount">保存</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</MyDialog>
|
||||
|
||||
<!-- 头寸录入弹窗 -->
|
||||
<el-dialog v-model="balanceDialogVisible" title="录入头寸" width="480px" append-to-body>
|
||||
<MyDialog v-model="balanceDialogVisible" title="录入头寸" :width="480">
|
||||
<el-form label-width="90px">
|
||||
<el-form-item label="账户" required>
|
||||
<el-select v-model="balanceForm.account_id" filterable style="width:100%" placeholder="选择账户">
|
||||
@@ -275,7 +275,7 @@
|
||||
<el-button @click="balanceDialogVisible = false">取消</el-button>
|
||||
<el-button type="primary" :loading="balanceSaving" @click="saveBalance">保存</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</MyDialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -284,6 +284,7 @@ import { ref, onMounted } from 'vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
import api from '@/api'
|
||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
import MyDialog from '../components/MyDialog.vue'
|
||||
|
||||
const router = useRouter()
|
||||
const activeTab = ref('accounts')
|
||||
|
||||
@@ -193,7 +193,7 @@
|
||||
</el-tabs>
|
||||
|
||||
<!-- 新建/编辑支付单弹窗 -->
|
||||
<el-dialog v-model="payDialog.visible" :title="payDialog.mode === 'create' ? '新建支付单' : '编辑支付单'" width="520px" append-to-body>
|
||||
<MyDialog v-model="payDialog.visible" :title="payDialog.mode === 'create' ? '新建支付单' : '编辑支付单'" :width="520">
|
||||
<el-form label-width="90px">
|
||||
<el-form-item label="付款账户" required>
|
||||
<el-select v-model="payForm.from_account_id" filterable style="width:100%" placeholder="仅列出启用账户">
|
||||
@@ -227,10 +227,10 @@
|
||||
<el-button @click="payDialog.visible = false">取消</el-button>
|
||||
<el-button type="primary" :loading="payDialog.saving" @click="savePayment">保存</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</MyDialog>
|
||||
|
||||
<!-- 审批弹窗 -->
|
||||
<el-dialog v-model="approveVisible" title="审批支付单" width="460px" append-to-body>
|
||||
<MyDialog v-model="approveVisible" title="审批支付单" :width="460">
|
||||
<el-form label-width="90px">
|
||||
<el-form-item label="单号">{{ currentRow?.pay_no }}</el-form-item>
|
||||
<el-form-item label="收款方">{{ currentRow?.to_name }}</el-form-item>
|
||||
@@ -245,10 +245,10 @@
|
||||
<el-button type="danger" :loading="approving" @click="submitApprove(false)">驳回</el-button>
|
||||
<el-button type="primary" :loading="approving" @click="submitApprove(true)">通过</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</MyDialog>
|
||||
|
||||
<!-- 豁免弹窗 -->
|
||||
<el-dialog v-model="waiveVisible" title="豁免放行" width="460px" append-to-body>
|
||||
<MyDialog v-model="waiveVisible" title="豁免放行" :width="460">
|
||||
<el-alert type="warning" :closable="false" style="margin-bottom:12px"
|
||||
title="豁免通道仅对被 block 规则拦截的支付单开放,全程留痕,豁免级别不得低于该笔所需审批级数。" />
|
||||
<el-form label-width="90px">
|
||||
@@ -265,7 +265,7 @@
|
||||
<el-button @click="waiveVisible = false">取消</el-button>
|
||||
<el-button type="warning" :loading="waiving" @click="submitWaive">确认豁免</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</MyDialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -273,6 +273,7 @@
|
||||
import { ref, computed, onMounted } from 'vue'
|
||||
import api from '@/api'
|
||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
import MyDialog from '../components/MyDialog.vue'
|
||||
|
||||
const activeTab = ref('payments')
|
||||
|
||||
|
||||
Reference in New Issue
Block a user