Преглед изворни кода

添加处理Cp图表 条件过滤

liujiejie пре 8 месеци
родитељ
комит
b5657587c0

Разлика између датотеке није приказан због своје велике величине
+ 0 - 1
src/icons/svg/Cp.svg


+ 1 - 0
src/icons/svg/Cp1.svg

@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1732600138141" class="icon" viewBox="0 0 1056 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="88507" xmlns:xlink="http://www.w3.org/1999/xlink" width="132" height="128"><path d="M48 64h64v928h-64z" fill="#59697C" p-id="88508"></path><path d="M80 928h928v64h-928z" fill="#59697C" p-id="88509"></path><path d="M208 806.4l-3.2-44.8c182.4-12.8 294.4-89.6 348.8-236.8 9.6-28.8 19.2-54.4 25.6-76.8 54.4-160 64-163.2 313.6-246.4l22.4-6.4 12.8 41.6-22.4 6.4c-240 80-240 80-284.8 217.6-6.4 22.4-16 48-25.6 76.8-57.6 166.4-188.8 256-387.2 268.8z" fill="#0070CC" p-id="88510"></path><path d="M608 736c0 54.4 41.6 96 96 96s96-41.6 96-96-41.6-96-96-96-96 41.6-96 96z" fill="#6FA8D6" p-id="88511"></path><path d="M224 608c0 35.2 28.8 64 64 64s64-28.8 64-64-28.8-64-64-64-64 28.8-64 64zM384 336c0 25.6 22.4 48 48 48s48-22.4 48-48S457.6 288 432 288s-48 22.4-48 48zM800 352c0 35.2 28.8 64 64 64s64-28.8 64-64-28.8-64-64-64-64 28.8-64 64z" fill="#B2D4EF" p-id="88512"></path></svg>

Разлика између датотеке није приказан због своје велике величине
+ 0 - 1
src/icons/svg/Heatmap.svg


+ 1 - 1
src/icons/svg/bar.svg

@@ -1 +1 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1730425074944" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="25213" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M180.906667 798.72V126.293333H105.813333v747.52l808.96 3.413334v-78.506667z" fill="#5DA1FD" p-id="25214"></path><path d="M529.066667 180.906667c0-17.066667-17.066667-30.72-30.72-30.72H477.866667c-17.066667 0-27.306667 13.653333-27.306667 27.306666V750.933333h78.506667V180.906667z" fill="#5DA1FD" p-id="25215"></path><path d="M348.16 351.573333c0-17.066667-10.24-30.72-23.893333-30.72H307.2c-17.066667 0-34.133333 17.066667-34.133333 30.72V750.933333h75.093333V351.573333zM706.56 508.586667c0-17.066667-10.24-30.72-23.893333-30.72h-17.066667c-17.066667 0-30.72 17.066667-30.72 30.72V750.933333h75.093333v-242.346666z" fill="#F87D06" p-id="25216"></path><path d="M863.573333 641.706667h-17.066666c-17.066667 0-30.72 17.066667-30.72 30.72V750.933333H887.466667v-78.506666c0-13.653333-6.826667-30.72-23.893334-30.72z" fill="#5DA1FD" p-id="25217"></path></svg>
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1732005686328" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="11713" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M229.333333 341.333333v480h-160V341.333333h160z m181.333334-106.666666v586.666666h-160V234.666667h160z m362.666666 53.333333v533.333333h-160V288h160z m181.333334 138.666667v394.666666h-160V426.666667h160z" fill="#001E59" fill-opacity=".3" p-id="11714"></path><path d="M981.333333 864v32H42.666667v-32h938.666666zM592 128v693.333333h-160V128h160z" fill="#00102F" fill-opacity=".75" p-id="11715"></path></svg>

+ 1 - 0
src/icons/svg/bar1.svg

@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1730425074944" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="25213" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M180.906667 798.72V126.293333H105.813333v747.52l808.96 3.413334v-78.506667z" fill="#5DA1FD" p-id="25214"></path><path d="M529.066667 180.906667c0-17.066667-17.066667-30.72-30.72-30.72H477.866667c-17.066667 0-27.306667 13.653333-27.306667 27.306666V750.933333h78.506667V180.906667z" fill="#5DA1FD" p-id="25215"></path><path d="M348.16 351.573333c0-17.066667-10.24-30.72-23.893333-30.72H307.2c-17.066667 0-34.133333 17.066667-34.133333 30.72V750.933333h75.093333V351.573333zM706.56 508.586667c0-17.066667-10.24-30.72-23.893333-30.72h-17.066667c-17.066667 0-30.72 17.066667-30.72 30.72V750.933333h75.093333v-242.346666z" fill="#F87D06" p-id="25216"></path><path d="M863.573333 641.706667h-17.066666c-17.066667 0-30.72 17.066667-30.72 30.72V750.933333H887.466667v-78.506666c0-13.653333-6.826667-30.72-23.893334-30.72z" fill="#5DA1FD" p-id="25217"></path></svg>

Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
src/icons/svg/boxPlot.svg


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
src/icons/svg/line.svg


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
src/icons/svg/pareto.svg


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
src/icons/svg/pareto1.svg


+ 1 - 1
src/icons/svg/pie.svg

@@ -1 +1 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1730425168814" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="31707" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M509.827 514.31m-449.06 0a449.06 449.06 0 1 0 898.12 0 449.06 449.06 0 1 0-898.12 0Z" fill="#E0E0D1" p-id="31708"></path><path d="M832.589 500.276c0-155.006-125.657-280.662-280.662-280.662v280.662h280.662z" fill="#231F20" p-id="31709"></path><path d="M832.589 472.21c0-155.006-125.657-280.662-280.662-280.662V472.21h280.662z" fill="#4F5D73" p-id="31710"></path><path d="M495.794 247.68c-170.506 0-308.729 138.222-308.729 308.729s138.223 308.729 308.729 308.729c79.882 0 152.677-30.341 207.493-80.125L495.794 556.409V247.68z" fill="#231F20" p-id="31711"></path><path d="M495.794 219.614c-170.506 0-308.729 138.222-308.729 308.729s138.223 308.729 308.729 308.729c79.882 0 152.677-30.341 207.493-80.125L495.794 528.343V219.614z" fill="#76C2AF" p-id="31712"></path><path d="M804.523 528.343H495.794v28.066l207.493 228.604c62.187-56.478 101.236-166.046 101.236-256.67z" fill="#231F20" p-id="31713"></path><path d="M804.523 528.343H495.794l207.493 228.604c62.187-56.478 101.236-137.98 101.236-228.604z" fill="#C75C5C" p-id="31714"></path></svg>
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1732599138661" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="59985" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M183.92 520.22l369.1 73.82V186.37C714.9 206.55 840.17 344.65 840.17 512c0 181.25-146.93 328.17-328.17 328.17-178.5 0-323.71-142.5-328.08-319.95z" fill="#2E3133" opacity=".3" p-id="59986"></path><path d="M145.28 430.45c19.97-162.13 158.17-287.65 325.7-287.65v352.79l-325.7-65.14z" fill="#2E3133" p-id="59987"></path></svg>

Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
src/icons/svg/roseChart.svg


+ 1 - 0
src/icons/svg/roseChart1.svg

@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1732599077680" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="56997" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M512 256a256 256 0 1 0 256 256 256 256 0 0 0-256-256z m0 384a128 128 0 1 1 128-128 128 128 0 0 1-128 128z" fill="#9BA1B5" p-id="56998"></path><path d="M768 320l-153.6 115.84A128 128 0 0 1 640 512a128 128 0 0 1-37.44 90.56l135.68 135.68A320 320 0 0 0 768 320z" fill="#C0C5D3" p-id="56999"></path><path d="M602.56 602.56a128 128 0 0 1-181.12 0l-181.12 181.12a384 384 0 0 0 544 0z" fill="#9BA1B5" p-id="57000"></path><path d="M384 512a128 128 0 0 1 128-128V64a448 448 0 0 0-316.8 764.8l226.24-226.24A128 128 0 0 1 384 512z" fill="#C0C5D3" p-id="57001"></path></svg>

Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
src/icons/svg/sankeyDiagram.svg


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
src/icons/svg/scatter.svg


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
src/icons/svg/stackedBar.svg


+ 1 - 1
src/icons/svg/waterfall.svg

@@ -1 +1 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1732066795849" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="40610" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M623.995259 111.995259h99.991704v497.000297h-99.991704z" fill="#0BCC93" p-id="40611"></path><path d="M247.99763 288.995556h99.991703v491.008h-99.991703z" fill="#4ABCFA" p-id="40612"></path><path d="M811.994074 111.009185h99.991704v355.991704H811.994074z" fill="#9387FD" p-id="40613"></path><path d="M435.996444 288.995556h99.991704v283.003259h-99.991704z" fill="#3B64E9" p-id="40614"></path><path d="M152.007111 111.995259v759.99763h759.99763v40.011852H111.995259V111.995259z" fill="#D1DDF8" p-id="40615"></path></svg>
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1732599712541" class="icon" viewBox="0 0 1536 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="73266" width="192" height="128" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M0 960h1536v64H0z" fill="#5182E4" fill-opacity=".3" p-id="73267"></path><path d="M128 192h192v704H128V192z m640 320V0h192v512h-192z" fill="#5182E4" p-id="73268"></path><path d="M448 512V192h192v320H448z m768-512h192v896h-192V0z" fill="#5182E4" fill-opacity=".504" p-id="73269"></path></svg>

+ 8 - 16
src/store/dragChart.js

@@ -24,7 +24,6 @@ export default {
       state.triggerGetData = value;
     },
     setRelatedFieldsData(state, data) {
-      console.log(data);
       state.relatedFieldsData = [...state.relatedFieldsData, { ...data }];
     },
     // 清空图表
@@ -52,18 +51,12 @@ export default {
     setFormFilterAlignData(state, data) {
       //将数据存储起来用于回显 数据
       // 检查是否已经存在相同的 id
-      const index = state.curEdit.formFilterAlignData.findIndex(
-        (item) => item.id === data.id
-      );
-      if (index !== -1) {
-        // 如果找到相同的 id,直接更新
-        state.curEdit.formFilterAlignData[index] = {
-          ...data,
-        };
-      } else {
-        // 如果不存在,新增一条数据
-        state.curEdit.formFilterAlignData.push({ ...data });
-      }
+      state.currentChartList?.map((chartItem, ind) => {
+        if (chartItem.id === data.id) {
+          state.currentChartList[ind].formFilterAlignData = data.data;
+          // state.curEdit.formFilterAlignData = data.data
+        }
+      });
     },
     // 设置当前编辑的图表
     setCurEdit(state, data) {
@@ -81,12 +74,12 @@ export default {
     },
     //更新数据配置当前选中数据
     updateDataBase(state, data) {
-      //   console.log("更改了图表数据", data);
+      // console.log("更改了图表数据", data);
       state.dataBaseCheckList = data;
     },
     // 更新图表
     updateChart(state, data) {
-      //   console.log("更改了图表组件", data.index, data);
+      console.log("更改了图表组件", data.index, data);
       if (state.currentChartList[data.index]) {
         state.currentChartList[data.index] = Object.assign(
           state.currentChartList[data.index],
@@ -130,7 +123,6 @@ export default {
         state.originChartList = {};
       }
     },
-
     // 还原当前文件的原始数据
     restoreOriginChartList(state, id) {
       const fileList = state.fileList;

+ 81 - 17
src/views/performance/components/custonAsCom/dragChart/components/chartConfig/form/chartLogic/modules/cp.js

@@ -1,6 +1,6 @@
 import { filterData } from "../dargChartFIlter";
 import { getFormattedLabels, getFormattedSeries } from "../../configFn";
-
+//赋值需要给所有的X和Y赋值,拿到过滤的数据是用来渲染图表的,不需要保存
 // 通用函数,生成折线图或散点图的 series 数据
 function generateSeriesData(dataSource, xData, yData, labelKey) {
   return dataSource?.map((item, ind) => {
@@ -8,10 +8,19 @@ function generateSeriesData(dataSource, xData, yData, labelKey) {
       name: item.label,
       type: labelKey, // 'line' 或 'scatter'
       renderMode: "webgl", // 启用 WebGL 渲染
-      data: item.data?.map((val, valInd) => [
-        xData[ind]?.data[valInd][xData[ind].label], // x轴数据
-        val[item.label], // y轴数据
-      ]),
+      data: item.data
+        ?.map((val, valInd) => {
+          if (val === null) {
+            // 如果 val 为 null,直接跳过当前的散点
+            return null;
+          }
+          // 返回有效的散点数据
+          return [
+            xData[ind]?.data[valInd][xData[ind].label], // x轴数据
+            val[item.label], // y轴数据
+          ];
+        })
+        .filter(Boolean), // 使用 filter 去除 null 值
       symbolSize: labelKey === "scatter" ? 8 : undefined, // 仅对散点图设置 symbolSize
     };
   });
@@ -24,11 +33,67 @@ export function handleCpChartLogic(
   isFilter,
   type
 ) {
+  // 数据筛选逻辑
+  const filterResult = [
+    ...formLabelAlign.LineYdata,
+    ...formLabelAlign.ScatterYdata,
+  ].map((yItem, index) => {
+    if (formFilterAlign[index]?.filters.length > 0) {
+      return {
+        label: yItem.label,
+        id: yItem.id,
+        data: yItem.data.map((val) => {
+          const filters = formFilterAlign[index]?.filters || [];
+
+          return val !== null &&
+            filters.length > 0 &&
+            filters.includes(val[yItem.label])
+            ? val
+            : null;
+        }),
+      };
+    } else {
+      return yItem;
+    }
+  });
+
+  // 条件筛选逻辑
+  const filterList = filterResult.map((filteredItem, index) => {
+    const filter = formFilterAlign[index];
+    const { filterType1, filterType2, number1, number2 } = filter;
+    if (
+      (number1 === null || number1 === "") &&
+      (number2 === null || number2 === "")
+    ) {
+      return {
+        label: filteredItem.label,
+        id: filteredItem.id,
+        data: filteredItem.data,
+      };
+    } else {
+      const filterDatas = filterData(
+        filter,
+        filteredItem.data,
+        filteredItem.label
+      );
+      return {
+        label: filteredItem.label,
+        id: filteredItem.id,
+        data: [...filterDatas],
+      };
+    }
+  });
+
   // 默认数据
   item.LineXdata = formLabelAlign.LineXdata;
-  item.LineYdata = formLabelAlign.LineYdata;
+  item.LineYdata = formLabelAlign.LineYdata.map((filterItem) =>
+    filterList.find((findItem) => filterItem.id === findItem.id)
+  ).filter(Boolean);
+
   item.ScatterXdata = formLabelAlign.ScatterXdata;
-  item.ScatterYdata = formLabelAlign.ScatterYdata;
+  item.ScatterYdata = formLabelAlign.ScatterYdata.map((filterItem) =>
+    filterList.find((findItem) => filterItem.id === findItem.id)
+  ).filter(Boolean);
 
   // 设置 x 和 y 轴标签
   item.option.xAxis = {
@@ -39,7 +104,6 @@ export function handleCpChartLogic(
     ...item.option.yAxis,
     name: formLabelAlign.Ylable,
   };
-
   // 生成折线图数据
   if (item.LineYdata[0]?.data?.length > 0) {
     const lineSeries = generateSeriesData(
@@ -60,14 +124,14 @@ export function handleCpChartLogic(
   }
 
   // // x轴轴标对齐
-  // item.option.xAxis = {
-  //   ...item.option.xAxis,
-  //   axisTick: { alignWithLabel: true },
-  // };
+  item.option.xAxis = {
+    ...item.option.xAxis,
+    axisTick: { alignWithLabel: true },
+  };
 
-  // // 配置提示框
-  // item.option.tooltip = {
-  //   trigger: "axis",
-  //   axisPointer: { type: "shadow" },
-  // };
+  // 配置提示框
+  item.option.tooltip = {
+    trigger: "axis",
+    axisPointer: { type: "shadow" },
+  };
 }

+ 150 - 72
src/views/performance/components/custonAsCom/dragChart/components/chartConfig/form/chartTitle.vue

@@ -45,7 +45,7 @@
                   v-for="item in selectData"
                   :label="item.label"
                   :value="item.id"
-                  :key="item.id"
+                  :key="item.id + ind"
                 ></el-option>
               </el-select>
               <el-tooltip
@@ -103,7 +103,7 @@
                   v-for="item in selectData"
                   :label="item.label"
                   :value="item.id"
-                  :key="item.id"
+                  :key="item.id + ind"
                 ></el-option>
               </el-select>
               <el-tooltip
@@ -129,7 +129,6 @@
           </template>
         </el-form-item>
       </template>
-
       <el-form-item v-if="curEdit.type === 'pareto'" label="柱纬度标签">
         <div
           slot="label"
@@ -164,7 +163,7 @@
                 v-for="item in selectData"
                 :label="item.label"
                 :value="item.id"
-                :key="item.id"
+                :key="item.id + ind"
               ></el-option>
             </el-select>
             <el-tooltip
@@ -221,7 +220,7 @@
                 v-for="item in selectData"
                 :label="item.label"
                 :value="item.id"
-                :key="item.id"
+                :key="item.id + ind"
               ></el-option>
             </el-select>
             <el-tooltip
@@ -283,7 +282,7 @@
                 v-for="item in selectData"
                 :label="item.label"
                 :value="item.id"
-                :key="item.id"
+                :key="item.id + ind"
               ></el-option>
             </el-select>
             <!-- <el-tooltip
@@ -343,7 +342,7 @@
                 v-for="item in selectData"
                 :label="item.label"
                 :value="item.id"
-                :key="item.id"
+                :key="item.id + ind"
               ></el-option>
             </el-select>
             <el-tooltip
@@ -406,7 +405,7 @@
                 v-for="item in selectData"
                 :label="item.label"
                 :value="item.id"
-                :key="item.id"
+                :key="item.id + ind"
               ></el-option>
             </el-select>
             <el-tooltip
@@ -463,7 +462,7 @@
                 v-for="item in selectData"
                 :label="item.label"
                 :value="item.id"
-                :key="item.id"
+                :key="item.id + ind"
               ></el-option>
             </el-select>
             <el-tooltip
@@ -507,12 +506,22 @@
     <div style="margin: 20px 0">
       <el-divider style="height: 2px"></el-divider>
     </div>
-    <el-collapse v-if="formLabelAlign.Ydata[0].data.length > 0">
+    <!--     
+      <el-collapse v-if="formLabelAlign.Ydata[0].data.length > 0">
+      <el-collapse v-if="filteredYData.length > 0 && filteredYData[0].data.length > 0">
+ -->
+    <!-- 
+      v-for="(itemFilter, filterInd) in formLabelAlign.Ydata" 
+      v-for="(itemFilter, filterInd) in filteredYData"
+      -->
+    <el-collapse
+      v-if="filteredYData.length > 0 && filteredYData[0].data.length > 0"
+    >
       <el-collapse-item
-        v-for="(itemFilter, filterInd) in formLabelAlign.Ydata"
+        v-for="(itemFilter, filterInd) in filteredYData"
         :title="itemFilter.label || `数据筛选`"
         :name="itemFilter.id"
-        :key="itemFilter.id"
+        :key="itemFilter.id + filterInd"
       >
         <el-form
           label-position="top"
@@ -709,8 +718,21 @@ export default {
       currentChartList: "currentChartList",
       dataBaseCheckList: "dataBaseCheckList",
     }),
+    filteredYData() {
+      const { type } = this.curEdit;
+      const { BarYdata, LineYdata, ScatterYdata, Ydata } = this.formLabelAlign;
+      if (type === "pareto") {
+        console.log([...BarYdata, ...LineYdata], "[...BarYdata, ...LineYdata]");
+        return [...BarYdata, ...LineYdata];
+      } else if (type === "Cp") {
+        return [...LineYdata, ...ScatterYdata];
+      } else if (["bar", "line", "radar", "scatter"].includes(type)) {
+        console.log(Ydata, "Ydata");
+        return Ydata;
+      }
+      return []; // 默认返回空数组
+    },
   },
-
   watch: {
     curEdit() {
       this.changeData();
@@ -736,9 +758,6 @@ export default {
       deep: true, // 深度监听
     },
   },
-  mounted() {
-    // this.changeData();
-  },
   methods: {
     ...mapMutations("dragChart", [
       "updateChart",
@@ -746,6 +765,7 @@ export default {
       "setFormFilterAlignData",
     ]),
     handleMetrics(type) {
+      console.log(type, "tianjia yige");
       switch (type) {
         case "init":
           this.formLabelAlign.Ydata.push({ lable: "", data: [], id: "" });
@@ -875,11 +895,55 @@ export default {
       });
       return axisData;
     },
+    removeYdata(index, type) {
+      const { BarYdata, LineYdata, ScatterYdata, Ydata } = this.formLabelAlign;
+      switch (type) {
+        case "init":
+          this.formLabelAlign.Ydata.splice(index, 1); // 删除当前项
+          break;
+        case "bar":
+          this.formLabelAlign.BarYdata.splice(index, 1); // 删除当前项
 
+          break;
+        case "line":
+          this.formLabelAlign.LineYdata.splice(index, 1); // 删除当前项
+          if (this.curEdit.type === "Cp") {
+            this.formFilterAlign.splice(index, 1);
+          }
+          //这里需要处理this.formFilterAlign.filter(item)
+          break;
+        case "scatter":
+          if (this.curEdit.type === "Cp") {
+            this.formFilterAlign.splice(
+              this.formLabelAlign.LineYdata.length + index,
+              1
+            );
+          }
+          this.formLabelAlign.ScatterYdata.splice(index, 1); // 删除当前项
+          break;
+      }
+    },
+    removeXdata(index, type) {
+      switch (type) {
+        case "init":
+          this.formLabelAlign.Xdata.splice(index, 1); // 删除当前项
+          break;
+        case "bar":
+          this.formLabelAlign.BarXdata.splice(index, 1); // 删除当前项
+          break;
+        case "line":
+          this.formLabelAlign.LineXdata.splice(index, 1); // 删除当前项
+          break;
+        case "scatter":
+          this.formLabelAlign.ScatterXdata.splice(index, 1); // 删除当前项
+          break;
+      }
+    },
     changeData() {
       if (this.$refs.form) {
         this.$refs.form.resetFields();
       }
+      console.log(this.formFilterAlign, "this.formFilterAlign 默认");
       // 图表内容回显图表配置赋值
       if (this.curEdit && this.curEdit.option) {
         // 使用 this.$set 替代直接赋值
@@ -969,26 +1033,79 @@ export default {
                 ],
         });
         // 查找是否存在数据
-        const index = this.curEdit.formFilterAlignData.findIndex(
+        const index = this.currentChartList.findIndex(
           (item) => item.id === this.curEdit.id
         );
         if (index !== -1) {
           this.$set(
             this,
             "formFilterAlign",
-            this.curEdit.formFilterAlignData[index]?.data
+            this.curEdit.formFilterAlignData.length > 0
+              ? this.curEdit.formFilterAlignData
+              : this.curEdit.type === "Cp" || this.curEdit.type === "pareto"
+              ? [
+                  {
+                    filters: [],
+                    filterType1: "",
+                    number1: null,
+                    filterType2: "",
+                    number2: null,
+                    radio: null,
+                  },
+                  {
+                    filters: [],
+                    filterType1: "",
+                    number1: null,
+                    filterType2: "",
+                    number2: null,
+                    radio: null,
+                  },
+                ]
+              : [
+                  {
+                    filters: [],
+                    filterType1: "",
+                    number1: null,
+                    filterType2: "",
+                    number2: null,
+                    radio: null,
+                  },
+                ]
           );
         } else {
-          this.$set(this, "formFilterAlign", [
-            {
-              filters: [],
-              filterType1: "",
-              number1: null,
-              filterType2: "",
-              number2: null,
-              radio: null,
-            },
-          ]);
+          this.$set(
+            this,
+            "formFilterAlign",
+            this.curEdit.type === "Cp" || this.curEdit.type === "pareto"
+              ? [
+                  {
+                    filters: [],
+                    filterType1: "",
+                    number1: null,
+                    filterType2: "",
+                    number2: null,
+                    radio: null,
+                  },
+                  {
+                    filters: [],
+                    filterType1: "",
+                    number1: null,
+                    filterType2: "",
+                    number2: null,
+                    radio: null,
+                  },
+                ]
+              : [
+                  {
+                    filters: [],
+                    filterType1: "",
+                    number1: null,
+                    filterType2: "",
+                    number2: null,
+                    radio: null,
+                  },
+                ]
+          );
         }
       } else {
         this.$message.warning("请选择一个图表进行编辑");
@@ -1059,57 +1176,18 @@ export default {
         );
       }
       //设置仓库
-      console.log(
-        JSON.parse(
-          JSON.stringify(this.formFilterAlign.filter((item) => !item.id))
-        ),
-        "this.formFilterAlign"
-      );
-
       this.setFormFilterAlignData({
         id: this.curEdit.id,
-        data: JSON.parse(
-          JSON.stringify(this.formFilterAlign.filter((item) => !item.id))
-        ),
+        data: JSON.parse(JSON.stringify(this.formFilterAlign)),
       });
       this.updateChart({
         ...item,
-        Ydata: this.formLabelAlign.Ydata,
-        formFilterAlignData: this.formFilterAlign.filter((item) => !item.id),
+        LineYdata: this.formLabelAlign.LineYdata,
+        ScatterYdata: this.formLabelAlign.ScatterYdata,
+        Ydata: this.formLabelAlign.Ydata, //还是给所有的数据保存起来了,并不是过滤后的数据
+        formFilterAlignData: this.formFilterAlign,
       }); // 更新图表
     },
-    removeYdata(index, type) {
-      switch (type) {
-        case "init":
-          this.formLabelAlign.Ydata.splice(index, 1); // 删除当前项
-          break;
-        case "bar":
-          this.formLabelAlign.BarYdata.splice(index, 1); // 删除当前项
-          break;
-        case "line":
-          this.formLabelAlign.LineYdata.splice(index, 1); // 删除当前项
-          break;
-        case "scatter":
-          this.formLabelAlign.ScatterYdata.splice(index, 1); // 删除当前项
-          break;
-      }
-    },
-    removeXdata(index, type) {
-      switch (type) {
-        case "init":
-          this.formLabelAlign.Xdata.splice(index, 1); // 删除当前项
-          break;
-        case "bar":
-          this.formLabelAlign.BarXdata.splice(index, 1); // 删除当前项
-          break;
-        case "line":
-          this.formLabelAlign.LineXdata.splice(index, 1); // 删除当前项
-          break;
-        case "scatter":
-          this.formLabelAlign.ScatterXdata.splice(index, 1); // 删除当前项
-          break;
-      }
-    },
   },
 };
 </script>

+ 31 - 29
src/views/performance/components/custonAsCom/dragChart/components/chartsAttributes.vue

@@ -1,7 +1,7 @@
 <!--
  * @Author: your name
  * @Date: 2024-11-01 10:14:11
- * @LastEditTime: 2024-11-20 10:21:34
+ * @LastEditTime: 2024-11-26 14:16:44
  * @LastEditors: bogon
  * @Description: In User Settings Edit
  * @FilePath: /performance-test/src/views/performance/components/custonAsCom/dragChart/components/chartsContent.vue
@@ -81,8 +81,8 @@ export default {
       currentView: "",
       svgIcon: [
         {
-          type: "bar",
-          name: "直方图",
+          type: "Cp",
+          name: "散点折线图",
         },
         {
           type: "scatter",
@@ -93,53 +93,55 @@ export default {
           name: "折线图",
         },
         {
-          type: "Cp",
-          name: "散点折线图",
+          type: "pie",
+          name: "图",
         },
         {
-          type: "stackedBar",
-          name: "堆叠柱状图",
+          type: "roseChart",
+          name: "玫瑰图",
         },
         {
-          type: "pareto",
-          name: "帕累托图",
+          type: "radar",
+          name: "雷达图",
         },
+
         {
           type: "sankeyDiagram",
           name: "流图",
         },
-        // {
-        //   type: "hexbin",
-        //   name: "蜂巢图",
-        // },
-        // {
-        //   type: "timeSeries",
-        //   name: "时间序列图",
-        // },
-        {
-          type: "waterfall",
-          name: "瀑布图",
-        },
         {
           type: "boxPlot",
           name: "箱线图",
         },
+
         {
-          type: "radar",
-          name: "雷达图",
+          type: "Heatmap",
+          name: "热力图",
         },
         {
-          type: "pie",
-          name: "图",
+          type: "bar",
+          name: "直方图",
         },
         {
-          type: "roseChart",
-          name: "玫瑰图",
+          type: "stackedBar",
+          name: "堆叠柱状图",
         },
         {
-          type: "Heatmap",
-          name: "热力图",
+          type: "pareto",
+          name: "帕累托图",
         },
+        // {
+        //   type: "hexbin",
+        //   name: "蜂巢图",
+        // },
+        // {
+        //   type: "timeSeries",
+        //   name: "时间序列图",
+        // },
+        // {
+        //   type: "waterfall",
+        //   name: "瀑布图",
+        // },
       ],
     };
   },

Неке датотеке нису приказане због велике количине промена