Explorar o código

#fix 优化字段

jc-wangyt hai 6 días
pai
achega
f7635ba530

+ 32 - 0
src/api/newApi/alarm/index.js

@@ -23,3 +23,35 @@ export function exportAlarmData(month) {
     responseType: 'blob'
   })
 }
+
+
+
+
+
+
+/**
+ * 获取告警统计数据
+ * @param {*} month 格式为yyyy-MM
+ * @returns 
+ */
+export function getNewAlarmStats(month) {
+  return request({
+    url: '/dashboard/data?month=' + month,
+    method: 'get'
+  })
+}
+
+
+// /dashboard/export
+/**
+ * 导出告警数据
+ * @param {*} month 格式为yyyy-MM
+ * @returns 
+ */
+export function exportNewAlarmData(month) {
+  return request({
+    url: '/dashboard/export?month=' + month,
+    method: 'get',
+    responseType: 'blob'
+  })
+}

+ 96 - 85
src/views/alarm/index.vue

@@ -4,14 +4,9 @@
       <!-- 顶部操作区 -->
       <div class="operate-area">
         <el-button-group>
-          <!-- <el-button v-for="month in months" :key="month.value"
-            :type="currentMonth === month.value ? 'primary' : 'default'" @click="handleMonthChange(month.value)">
-            {{ month.label }}
-          </el-button> -->
-          <el-select v-model="currentMonth" clearable placeholder="请选择 " @change="handleMonthChange(currentMonth)">
-            <el-option v-for="item in months" :key="item.value" :label="item.label" :value="item.value">
-            </el-option>
-          </el-select>
+          <el-date-picker v-model="currentMonth" type="month" placeholder="选择月" @change="handleMonthChange"
+            value-format="yyyy-MM">
+          </el-date-picker>
         </el-button-group>
         <el-button type="default" @click="handleRefresh">
           <i class="el-icon-refresh"></i> 刷新
@@ -44,39 +39,46 @@
       <div slot="header" class="card-header">
         <span>各系统告警统计</span>
       </div>
-      <el-table :data="systemStatsData" style="width: 100%" v-loading="loadingsystemStats">
-        <el-table-column prop="systemName" label="系统名称" width="120" />
-        <el-table-column prop="totalAlarms" label="告警总数" align="center" />
-        <el-table-column prop="processedAlarms" label="已处理告警总数" align="center" />
-        <el-table-column prop="unprocessedAlarms" label="未处理告警总数" align="center" />
-        <el-table-column prop="contentAlarms" label="内容类告警总数" align="center" />
-        <el-table-column prop="thresholdAlarms" label="阈值类告警总数" align="center" />
-        <el-table-column prop="existenceAlarms" label="存在性告警总数" align="center" />
+      <div>
+        <el-table :data="systemStatsData" header-align="center" style="width: 100%" stripe
+          v-loading="loadingsystemStats">
+          <el-table-column prop="systemName" label="系统名称" width="120" fixed="left" />
+          <el-table-column prop="totalAlarms" label="告警总数" min-width="120" align="center" />
+          <el-table-column prop="processedAlarms" label="已处理告警总数" min-width="120" align="center" />
+          <el-table-column prop="unprocessedAlarms" label="未处理告警总数" min-width="120" align="center" />
+          <el-table-column prop="permissionCount" label="用户权限变更监控数量" min-width="120" align="center" />
+          <el-table-column prop="indicator_databaseConnectCount" label="数据库连接数告警总数" min-width="120" align="center" />
+          <el-table-column prop="indicator_internalConnetCount" label="内部连接性告警总数" min-width="120" align="center" />
+          <el-table-column prop="indicator_scheduledTaskCount" label="定时任务告警总数" min-width="120" align="center" />
+          <el-table-column prop="indicator_abnormalAccessCount" label="异常IP访问监控数量" min-width="120" align="center" />
 
-        <el-table-column prop="indicator_dataNoDeliveredCount" label="数据未送达告警总数" align="center" />
-        <el-table-column prop="indicator_internalConnetCount" label="内部连接性告警总数" align="center" />
-        <el-table-column prop="indicator_interfaceFrequencyCount" label="访问接口频率告警总数" align="center" />
-        <el-table-column prop="indicator_databaseConnectCount" label="数据库连接数告警总数" align="center" />
-        <el-table-column prop="indicator_pageTamperProofCount" label="页面防篡改告警总数" align="center" />
-        <el-table-column prop="indicator_networkBoundaryConnectCount" label="网络边界连通性告警总数" align="center" />
-        <el-table-column prop="indicator_scheduledTaskCount" label="定时任务告警总数" align="center" />
-        <el-table-column prop="indicator_ossUseCount" label="OSS使用情况告警总数" align="center" />
-        <el-table-column prop="indicator_abnormalAccessCount" label="异常访问告警总数" align="center" />
-        <!-- <el-table-column prop="indicator" label="各指标的告警总数" align="center" /> -->
-      </el-table>
+          <!-- <el-table-column prop="contentAlarms" label="内容类告警总数" min-width="120" align="center" />
+          <el-table-column prop="thresholdAlarms" label="阈值类告警总数" min-width="120" align="center" />
+          <el-table-column prop="existenceAlarms" label="存在性告警总数" min-width="120" align="center" /> -->
+          <!-- <el-table-column prop="indicator_dataNoDeliveredCount" label="数据未送达告警总数" min-width="120" align="center" /> -->
+          <!-- <el-table-column prop="indicator_interfaceFrequencyCount" label="访问接口频率告警总数" min-width="120" align="center" /> -->
+          <!-- <el-table-column prop="indicator_pageTamperProofCount" label="页面防篡改告警总数" min-width="120" align="center" /> -->
+          <!-- <el-table-column prop="indicator_networkBoundaryConnectCount" label="网络边界连通性告警总数" min-width="120"
+            align="center" /> -->
+          <!-- <el-table-column prop="indicator_ossUseCount" label="OSS使用情况告警总数" min-width="120" align="center" /> -->
+        </el-table>
+      </div>
     </el-card>
   </div>
 </template>
 
 <script>
-import { getAlarmStats, exportAlarmData } from '@/api/newApi/alarm'
+import { getAlarmStats, exportAlarmData, getNewAlarmStats, exportNewAlarmData } from '@/api/newApi/alarm'
 
 export default {
   data() {
+    const now = new Date();
+    const year = now.getFullYear();
+    const month = String(now.getMonth() + 1).padStart(2, '0');
+    const currentMonthValue = `${year}-${month}`;
     return {
-      // monthsSelect: '2026-01',
       loadingsystemStats: false,
-      currentMonth: '2026-01',
+      currentMonth: currentMonthValue,
       months: [],
       alarmData: {//告警统计数据
         overall: {},
@@ -89,47 +91,35 @@ export default {
     overviewData() {
       const overall = this.alarmData.overall || {};
       return [
-        { label: '告警总数', value: overall.total },
-        { label: '已处理告警总数', value: overall.processed },
-        { label: '未处理告警总数', value: overall.unprocessed },
-        { label: '内容类告警总数', value: overall.contentCount },
-        { label: '阈值类告警总数', value: overall.thresholdCount },
-        { label: '存在性告警总数', value: overall.existenceCount }
+        { label: '告警总数', value: overall.totalAlarms },
+        { label: '已处理告警总数', value: overall.totalProcessed },
+        { label: '未处理告警总数', value: overall.totalUntreated },  
+        { label: '总送达数', value: overall.totalDelivered },
+        { label: '总未送达数', value: overall.totalUndelivered },
+        { label: '用户权限变更监控数', value: overall.permissionAlarms },
+        { label: '数据库监控数', value: overall.dbAlarms },
+        { label: '系统内部连接监控数', value: overall.connectAlarms },
+        { label: '异常IP访问监控数', value: overall.ipAlarms },
+        { label: '定时任务异常监控数', value: overall.taskAlarms }
       ];
     },
     // 根据当前选择的月份获取各系统告警统计数据
     systemStatsData() {
       return (this.alarmData.indicatorStats || []).map(item => ({
-        systemName: item.system_name,
-        totalAlarms: item.total,
-        processedAlarms: item.processed,
-        unprocessedAlarms: item.unprocessed,
-        contentAlarms: item.contentCount,
-        thresholdAlarms: item.thresholdCount,
-        existenceAlarms: item.existenceCount,
-        indicator: item.total,
-        dataNoDeliveredCount: item.dataNoDeliveredCount,
-        internalConnectCount: item.internalConnectCount,
-        interfaceFrequencyCount: item.interfaceFrequencyCount,
-        databaseConnectCount: item.databaseConnectCount,
-        pageTamperProofCount: item.pageTamperProofCount,
-        networkBoundaryConnectCount: item.networkBoundaryConnectCount,
-        scheduledTaskCount: item.scheduledTaskCount,
-        ossUseCount: item.indicator_ossUseCount,
-        abnormalAccessCount: item.abnormalAccessCount,
-
-        indicator_abnormalAccessCount: item.indicator_abnormalAccessCount,
-        indicator_dataNoDeliveredCount: item.indicator_dataNoDeliveredCount,
-        indicator_internalConnetCount: item.indicator_internalConnetCount,
-        indicator_interfaceFrequencyCount: item.indicator_interfaceFrequencyCount,
-        indicator_databaseConnectCount: item.indicator_databaseConnectCount,
-        indicator_pageTamperProofCount: item.indicator_pageTamperProofCount,
-        indicator_networkBoundaryConnectCount: item.indicator_networkBoundaryConnectCount,
-        indicator_scheduledTaskCount: item.indicator_scheduledTaskCount,
-        indicator_ossUseCount: item.indicator_ossUseCount,
-
-
-
+        systemName: item.systemName,
+        totalAlarms: item.totalAlarms || 0,
+        processedAlarms: item.processedCount || 0,
+        unprocessedAlarms: item.untreatedCount || 0,
+        permissionCount: item.permissionCount || 0,
+        // indicator_dataNoDeliveredCount: 0, // 新数据格式中没有直接提供
+        indicator_internalConnetCount: item.connectCount || 0,
+        // indicator_interfaceFrequencyCount: 0, // 新数据格式中没有直接提供
+        indicator_databaseConnectCount: item.dbCount || 0,
+        // indicator_pageTamperProofCount: 0, // 新数据格式中没有直接提供
+        // indicator_networkBoundaryConnectCount: 0, // 新数据格式中没有直接提供
+        indicator_scheduledTaskCount: item.taskCount || 0,
+        // indicator_ossUseCount: 0, // 新数据格式中没有直接提供
+        indicator_abnormalAccessCount: item.ipCount || 0
       }));
     }
   },
@@ -140,24 +130,41 @@ export default {
     //获取告警统计数据
     getAlarmEven() {
       this.loadingsystemStats = true;
-      getAlarmStats(this.currentMonth).then(res => {
+      getNewAlarmStats(this.currentMonth).then(res => {
+        // getAlarmStats(this.currentMonth).then(res => {
         if (res.code === 200) {
+
           this.alarmData = {
-            overall: res.data.overall || {},
-            indicatorStats: res.data.indicatorStats || []
+            overall: {
+              totalAlarms: res.data.totalAlarms || 0,
+              totalProcessed: res.data.totalUntreated || 0,
+              totalUntreated: res.data.totalProcessed || 0,
+              contentCount: 0,
+              thresholdCount: 0,
+              existenceCount: 0, 
+              permissionAlarms: res.data.permissionAlarms || 0,
+              dbAlarms: res.data.dbAlarms || 0,
+              connectAlarms: res.data.connectAlarms || 0,
+              ipAlarms: res.data.ipAlarms || 0,
+              taskAlarms: res.data.taskAlarms || 0,
+              totalUndelivered: res.data.totalUndelivered || 0,
+              totalDelivered: res.data.totalDelivered || 0
+            },
+            indicatorStats: res.data.systemStats || []
           };
           console.log(this.alarmData, ' this.alarmData')
           // 更新月份列表
-          if (res.data.months && Array.isArray(res.data.months)) {
-            this.months = res.data.months.map(month => {
-              const [year, monthNum] = month.split('-');
-              return {
-                // label: `${monthNum}月`,
-                label: month,
-                value: month
-              };
-            });
-          }
+          // if (res.data.months && Array.isArray(res.data.months)) {
+          //   this.months = res.data.months.map(month => {
+          //      res.data.months=['2026-01','2026-02','2026-03','2026-04','2026-05','2026-06','2026-07','2026-08','2026-09','2026-10','2026-11','2026-12']
+          //     const [year, monthNum] = month.split('-');
+          //     return {
+          //       // label: `${monthNum}月`,
+          //       label: month,
+          //       value: month
+          //     };
+          //   });
+          // }
           this.loadingsystemStats = false;
         } else {
           this.$message.error('获取告警统计数据失败');
@@ -166,10 +173,13 @@ export default {
     },
     // 处理月份切换
     handleMonthChange(month) {
-      console.log(month)
-      this.currentMonth = month;
-      // 切换月份后重新获取数据
-      this.getAlarmEven();
+      console.log('Selected month:', month);
+      // 确保 month 是字符串格式的 YYYY-MM
+      if (month) {
+        this.currentMonth = month;
+        // 切换月份后重新获取数据
+        this.getAlarmEven();
+      }
     },
     // 处理刷新
     handleRefresh() {
@@ -184,8 +194,9 @@ export default {
         spinner: 'el-icon-loading',
         background: 'rgba(0, 0, 0, 0.7)'
       });
-      
-      exportAlarmData(this.currentMonth).then(res => {
+
+      // exportAlarmData(this.currentMonth).then(res => {
+      exportNewAlarmData(this.currentMonth).then(res => {
         // 处理导出成功逻辑
         const blob = new Blob([res], { type: 'application/vnd.ms-excel' });
         const url = window.URL.createObjectURL(blob);

+ 3 - 3
src/views/bizoppmanage/index.vue

@@ -132,10 +132,10 @@
           </template>
         </el-table-column>
         <el-table-column prop="opportunityOwner" label="商机归属人" min-width="120" align="center"></el-table-column>
-        <el-table-column prop="opportunityUnit" label="商机单位" min-width="80" align="center"></el-table-column>
+        <el-table-column prop="opportunityUnit" label="商机单位" min-width="120" align="center"></el-table-column>
         <el-table-column prop="supportPerson" label="支撑负责人" min-width="120" align="center"></el-table-column>
-        <el-table-column prop="supportUnit" label="支撑单位" min-width="80" align="center"></el-table-column>
-        <el-table-column label="操作" min-width="80" fixed="right">
+        <el-table-column prop="supportUnit" label="支撑单位" min-width="120" align="center"></el-table-column>
+        <el-table-column label="操作" min-width="80" fixed="right" align="center">
           <template slot-scope="scope">
             <el-button type="text" @click="handleDetail(scope.row)">查看详情</el-button>
           </template>

+ 69 - 9
src/views/openMarketBid/details.vue

@@ -12,7 +12,7 @@
                             </el-form-item>
                         </el-col>
                         <el-col :span="12">
-                            <el-form-item label="公告类">
+                            <el-form-item label="公告类">
                                 {{ formData.announcementType || '-' }}
                             </el-form-item>
                         </el-col>
@@ -31,10 +31,10 @@
                     </el-row>
                     <el-row :gutter="20">
                         <el-col :span="12">
-                            <el-form-item label="是否关">
+                            <el-form-item label="是否关">
                                 <span class="bool-value"
-                                    :class="{ true: formData.isRelevant === 1, false: formData.isRelevant === 0 }">
-                                    {{ formData.isRelevant === 1 ? '是' : formData.isRelevant === 0 ? '否' : '-' }}
+                                    :class="{ true: formData.isRelevant === 1, false: formData.isRelevant === 0, 'duplicate': formData.isRelevant === 2 }">
+                                    {{ formData.isRelevant === 1 ? '是' : formData.isRelevant === 0 ? '否' :formData.isRelevant === 2 ? '重复': '-' }}
                                 </span>
                             </el-form-item>
                         </el-col>
@@ -53,13 +53,13 @@
                             </el-form-item>
                         </el-col>
                         <el-col :span="12">
-                            <el-form-item label="剑鱼地址">
-                                <a v-if="formData.jianyuUrl" :href="formData.jianyuUrl" target="_blank"
-                                    class="link-text">{{ formData.jianyuUrl }}</a>
-                                <span v-else>-</span>
+                            <el-form-item label="购买标书截止时间">
+                                {{ formData.bidDocumentDeadline ? new
+                                    Date(formData.bidDocumentDeadline).toLocaleString() : '-' }}
                             </el-form-item>
                         </el-col>
                     </el-row>
+                   
 
                 </el-form>
             </div>
@@ -93,6 +93,31 @@
                         </el-col>
                     </el-row>
 
+                    <el-row :gutter="20">
+                        <el-col :span="12">
+                            <el-form-item label="对应自然客户ID">
+                                {{ formData.fmNaturalCustomerId || '-' }}
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="12">
+                            <el-form-item label="行业">
+                                {{ formData.industry || '-' }}
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row :gutter="20">
+                        <el-col :span="12">
+                            <el-form-item label="业务类型">
+                                {{ formData.businessCategory || '-' }}
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="12">
+                            <el-form-item label="业务需求">
+                                {{ formData.businessDemand || '-' }}
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+
                     <el-row :gutter="20">
                         <el-col :span="12">
                             <el-form-item label="招标信息发布时间">
@@ -139,6 +164,7 @@
                         </el-col>
                     </el-row>
 
+
                 </el-form>
             </div>
 
@@ -188,6 +214,37 @@
                             </el-form-item>
                         </el-col>
                     </el-row>
+                    <el-row :gutter="20">
+                        <el-col :span="12">
+                            <el-form-item label="红黄绿牌">
+                               {{formData.rbgLabel||'-'}}
+                            </el-form-item>
+                        </el-col>
+                          <el-col :span="12">
+                            <el-form-item label="弃标审批单号">
+                                {{ formData.discardApprovalNumber || '-' }}
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <!-- <el-row :gutter="20">
+                        <el-col :span="12">
+                            <el-form-item label="商机ID">
+                                {{ formData.opportunityId || '-' }}
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="12">
+                            <el-form-item label="创建时间">
+                                {{ formData.createTime ? new Date(formData.createTime).toLocaleString() : '-' }}
+                            </el-form-item>
+                        </el-col>
+                    </el-row>
+                    <el-row :gutter="20">
+                        <el-col :span="12">
+                            <el-form-item label="更新时间">
+                                {{ formData.updateTime ? new Date(formData.updateTime).toLocaleString() : '-' }}
+                            </el-form-item>
+                        </el-col>
+                    </el-row> -->
                 </el-form>
             </div>
 
@@ -401,7 +458,10 @@ export default {
     font-size: 12px;
     font-weight: 500;
 }
-
+.duplicate {
+    background-color: #fef0f0;
+    color: #f56c6c;
+}
 .bool-value.true {
     background-color: #f0f9eb;
     color: #67c23a;

+ 3 - 4
src/views/openMarketBid/index.vue

@@ -141,7 +141,6 @@
         <div class="list-container">
             <el-table :data="noticeList" header-align="center" style="width: 100%" stripe v-loading="tableLoading"
                 border>
-            
                 <el-table-column prop="announcementType" label="公告类型" fixed="left" min-width="100"
                     align="center"></el-table-column>
                 <el-table-column prop="announcementTitle" label="公告标题" fixed="left" min-width="200"
@@ -170,16 +169,16 @@
                     align="center"></el-table-column>
                 <el-table-column prop="industry" label="行业" min-width="100" align="center"></el-table-column>
                 <el-table-column prop="branchCompany" label="分公司" min-width="100" align="center"></el-table-column>
-                <el-table-column prop="businessCategory" label="业务类" min-width="100" align="center"></el-table-column>
+                <el-table-column prop="businessCategory" label="业务类" min-width="100" align="center"></el-table-column>
                 <el-table-column prop="businessDemand" label="业务需求" min-width="120" align="center"></el-table-column>
                 <el-table-column prop="budget" label="预算(万元)" min-width="100" align="center"></el-table-column>
                 <el-table-column prop="bidOpeningDate" label="开标日期" min-width="120" align="center"></el-table-column>
                 <el-table-column prop="announcementUrl" label="公告地址" min-width="200" align="center"></el-table-column>
-                <el-table-column prop="jianyuUrl" label="剑鱼地址" min-width="200" align="center"></el-table-column>
+                <!-- <el-table-column prop="jianyuUrl" label="剑鱼地址" min-width="200" align="center"></el-table-column> -->
                 <el-table-column prop="tenderInfoPublishTime" label="招标信息发布时间" min-width="150"
                     align="center"></el-table-column>
                 <el-table-column prop="publishTime" label="发布时间" min-width="120" align="center"></el-table-column>
-                <el-table-column label="操作" min-width="100" fixed="right">
+                <el-table-column label="操作" min-width="100" fixed="right" align="center">
                     <template slot-scope="scope">
                         <el-button type="text" @click="handleEdit(scope.row)">编辑</el-button>
                         <el-button type="text" @click="handleCommand(`detail`, scope.row)">详情</el-button>

+ 2 - 2
vue.config.js

@@ -9,8 +9,8 @@ const CompressionPlugin = require('compression-webpack-plugin')
 
 const name = process.env.VUE_APP_TITLE || '黑龙江运行保障能力' // 网页标题
 
-const baseUrl = 'http://10.130.22.73:1090/' // 后端接口
-// const baseUrl = 'http://10.64.12.216:12321' // 后端接口
+// const baseUrl = 'http://10.130.22.73:1090/' // 后端接口
+const baseUrl = 'http://10.64.12.216:12321' // 后端接口
 
 
 const port = process.env.port || process.env.npm_config_port || 80 // 端口