Browse Source

图表点击并跳转功能

ellisran 1 month ago
parent
commit
044794feeb
1 changed files with 20 additions and 2 deletions
  1. 20 2
      app/view/dashboard/workspace.ejs

+ 20 - 2
app/view/dashboard/workspace.ejs

@@ -593,6 +593,7 @@
     })
 </script>
 <script type="text/javascript">
+    let _param = '';
     const option = {
         color: ['rgba(38, 217, 217,0.7)','rgba(78, 139, 229,0.7)','rgba(78, 229, 139,0.7)','rgba(108, 78, 229,0.7)','rgba(164, 229, 78,0.7)','rgba(199, 78, 229,0.7)','rgba(229, 92, 174,0.7)','rgba(229, 214, 78,0.7)','rgba(241, 87, 96,0.7)','rgba(242, 179, 82,0.7)'],
         //backgroundColor: '#343a40 ',
@@ -600,6 +601,9 @@
             trigger: 'axis',
             axisPointer: {            // 坐标轴指示器,坐标轴触发有效
                 type: 'shadow'        // 默认为直线,可选为:'line' | 'shadow'
+            },
+            formatter: function (p) {
+                _param = p
             }
         },
         legend: {},
@@ -825,7 +829,8 @@
                 contract_tp:[],
                 qc_tp:[],
             };
-            for(const t of tenderList) {
+            const newTenders = tenderList.filter(t => t.stage_count > 0);
+            for(const t of newTenders) {
                 chart_option_name.push(t.name);
                 chart_option2_data.total_price.push(t.total_price ? t.total_price : 0);
                 chart_option2_data.contract_tp.push(t.end_contract_tp ? t.end_contract_tp : 0);
@@ -836,7 +841,7 @@
             // 图表数据赋值
             const option2 = myChart.getOption();
             option2.dataZoom[0].start = 0;
-            option2.dataZoom[0].end = computedPosition(tenderList.length);
+            option2.dataZoom[0].end = computedPosition(newTenders.length);
             option2.xAxis[0].data = chart_option_name;
             option2.series[0].data = chart_option2_data.total_price;
             option2.series[1].data = chart_option2_data.contract_tp;
@@ -850,6 +855,19 @@
             myChart.setOption(option2);
         }
 
+        // 处理点击事件并且弹出数据名称
+        myChart.getZr().on('click', function (p) {
+            const pointInPixel = [p.offsetX, p.offsetY];
+            if (myChart.containPixel('grid', pointInPixel)) {
+                const params = _param && _param[0] ? _param[0] : null;
+                if (params !== null) {
+                    const tender = tenders.filter(t => t.stage_count > 0)[params.dataIndex];
+                    console.log(tender);
+                    window.open(`/sp/${tender.spid}/datacollect`);
+                }
+            }
+        });
+
         // 计算显示滚动条长度
         function computedPosition(xArrayLength) {
             if (xArrayLength >= 8) {