| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- <template>
- <div class="monitoring-page">
- <!-- 新增Tabs组件区分实时/历史数据 -->
- <Tabs v-model:activeKey="activeTab" type="card" style="margin-bottom: 16px">
- <TabPane tab="实时监测" key="realtime">
- <div class="board-info">
- <MiniBoard
- :key="index"
- v-for="(item, index) in boardData"
- type="A"
- :label="item.label"
- :value="item.value"
- layout="label-top"
- class="board-item"
- />
- </div>
- <!-- 实时数据表格 -->
- <BasicTable @register="registerRealtimeTable" :scroll="{ x: 'max-content' }">
- <template #action="{ record }">
- <div class="action-buttons">
- <!-- 操作按钮 -->
- <button @click="openModal(record, 'detail')" class="action-btn detail-btn" title="操作">
- <span class="action-text">详情</span>
- </button>
- <!-- 已解决按钮 -->
- <button @click="openModal(record, 'resolved')" class="action-btn resolved-btn" title="已解决">
- <span class="action-text">已解决</span>
- </button>
- </div>
- </template>
- </BasicTable>
- </TabPane>
- <TabPane tab="历史数据" key="history">
- <!-- 历史数据表格 -->
- <BasicTable @register="registerHistoryTable" :scroll="{ x: 'max-content' }">
- <template #action="{ record }">
- <div class="action-buttons">
- <button @click="openModal(record, 'history')" class="action-btn">
- <SvgIcon name="details" />
- </button>
- </div>
- </template>
- </BasicTable>
- </TabPane>
- </Tabs>
- <!-- 弹窗组件 -->
- <a-modal
- style="top: 30%; left: 170px"
- v-model:visible="visibleModal"
- :width="450"
- title="实时监测数据"
- @ok="handleOkEdit"
- @cancel="handleCancelEdit"
- >
- <a-table></a-table>
- </a-modal>
- <!-- 弹窗组件 -->
- <a-modal
- style="height: 400px"
- v-model:visible="visibleresolveModal"
- :width="600"
- centered
- title="密闭漏风处理情况"
- @ok="handleOkEdit()"
- @cancel="handleCancelEdit"
- >
- <a-textarea style="width: 90%; margin-left: 20px; margin-right: 20px" v-model:value="resolveValue" placeholder="请输入解决情况" :rows="4" />
- </a-modal>
- </div>
- </template>
- <script setup lang="ts">
- import { ref } from 'vue';
- import { BasicTable, useTable } from '/@/components/Table';
- import { Tabs, TabPane } from 'ant-design-vue';
- import MiniBoard from '/@/components/Configurable/detail/MiniBoard.vue';
- import { SvgIcon } from '/@/components/Icon';
- // 引入模拟数据
- import { boardData, columns, searchFormSchema, minesData, historicalMinesData } from './pressureDiffAnalysis.data';
- // 激活的Tab页签
- const activeTab = ref('realtime');
- const visibleModal = ref(false);
- const visibleresolveModal = ref(false);
- const resolveValue = ref('');
- // 注册实时数据表格
- const [registerRealtimeTable] = useTable({
- dataSource: minesData,
- columns,
- formConfig: {
- labelWidth: 120,
- schemas: searchFormSchema,
- showAdvancedButton: false,
- },
- pagination: false,
- striped: false,
- useSearchForm: true,
- bordered: true,
- showIndexColumn: false,
- canResize: false,
- actionColumn: {
- width: 120,
- title: '操作',
- dataIndex: 'action',
- slots: { customRender: 'action' },
- fixed: undefined,
- },
- });
- // 注册历史数据表格
- const [registerHistoryTable] = useTable({
- dataSource: historicalMinesData,
- columns,
- formConfig: {
- labelWidth: 120,
- schemas: searchFormSchema,
- showAdvancedButton: false,
- },
- pagination: false,
- striped: false,
- useSearchForm: true,
- bordered: true,
- showIndexColumn: false,
- canResize: false,
- actionColumn: {
- width: 120,
- title: '操作',
- dataIndex: 'action',
- slots: { customRender: 'action' },
- fixed: undefined,
- },
- });
- // 弹窗引用
- const realtimeModalRef = ref(null);
- const historyModalRef = ref(null);
- // 打开弹窗方法(区分实时/历史)
- const openModal = (record, type) => {
- if (type === 'realtime') {
- // 可向实时弹窗传递当前记录数据
- realtimeModalRef.value?.showModal(record);
- } else if (type === 'resolved') {
- visibleresolveModal.value = true;
- record.isResolved = resolveValue.value || '';
- } else if (type === 'detail') {
- visibleModal.value = true;
- } else {
- // 可向历史弹窗传递当前记录数据
- historyModalRef.value?.showModal(record);
- }
- };
- const handleOkEdit = () => {
- visibleresolveModal.value = false;
- };
- const handleCancelEdit = () => {
- visibleresolveModal.value = false;
- };
- </script>
- <style lang="less" scoped>
- .monitoring-page {
- padding: 16px;
- }
- .board-info {
- display: grid;
- grid-template-columns: repeat(5, auto); /* 3列:改5则为5列 */
- gap: auto;
- justify-content: start;
- flex-wrap: wrap;
- box-sizing: border-box;
- background-color: #fff;
- padding: 10px;
- margin: 0 10px;
- gap: 100px;
- }
- .board-item {
- box-sizing: border-box;
- }
- .action-btn {
- cursor: pointer;
- border: none;
- padding: 4px;
- }
- .action-icon {
- width: 16px;
- height: 16px;
- }
- .action-text {
- font-size: 12px;
- color: #6398fc;
- }
- </style>
|