|
@@ -2,22 +2,6 @@
|
|
|
<div class="container1">
|
|
|
<div class="infobox">
|
|
|
<div class="header">
|
|
|
- <div class="text">工序名称:</div>
|
|
|
- <el-select
|
|
|
- v-model="value"
|
|
|
- placeholder="Select"
|
|
|
- ref="selectRef"
|
|
|
- @change="changeSelect"
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="item in opOptions"
|
|
|
- :key="item.value"
|
|
|
- :label="item.dictLabel"
|
|
|
- :value="item.remark"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
- </div>
|
|
|
- <div class="body">
|
|
|
<div>
|
|
|
<div class="text">控制图:</div>
|
|
|
<el-select
|
|
@@ -34,53 +18,104 @@
|
|
|
/>
|
|
|
</el-select>
|
|
|
</div>
|
|
|
- <div class="text" style="margin-top: 20px">
|
|
|
- Xbar-UCL:{{ value ? JSON.parse(value).avgMax : "-" }}
|
|
|
- </div>
|
|
|
- <div class="text">
|
|
|
- Xbar-MED:{{ value ? JSON.parse(value).avgMid : "-" }}
|
|
|
- </div>
|
|
|
- <div class="text">
|
|
|
- Xbar-LCL:{{ value ? JSON.parse(value).avgMin : "-" }}
|
|
|
- </div>
|
|
|
- <div class="text">
|
|
|
- R-UCL:{{ value ? JSON.parse(value).rangeMax : "-" }}
|
|
|
- </div>
|
|
|
- <div class="text">
|
|
|
- R-MED:{{ value ? JSON.parse(value).rangeMid : "-" }}
|
|
|
- </div>
|
|
|
- <div class="text">
|
|
|
- R-LCL:{{ value ? JSON.parse(value).rangeMin : "-" }}
|
|
|
- </div>
|
|
|
- <div class="text">
|
|
|
+ <!-- <div class="text">
|
|
|
计量单位:{{ value ? JSON.parse(value).unit : "-" }}
|
|
|
+ </div>-->
|
|
|
+ </div>
|
|
|
+ <div class="body" v-if="value2 === 'Xbar-R' || value2 === 'Xbar-S'">
|
|
|
+ <div>
|
|
|
+ <div class="text">工序名称:</div>
|
|
|
+ <el-select
|
|
|
+ v-model="value"
|
|
|
+ placeholder="Select"
|
|
|
+ ref="selectRef"
|
|
|
+ @change="changeSelect"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in opOptions"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.dictLabel"
|
|
|
+ :value="item.remark"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ <div class="text" style="margin-top: 20px">
|
|
|
+ 上限(3σ):{{ value ? JSON.parse(value).ucl : "-" }}
|
|
|
+ </div>
|
|
|
+ <div class="text">
|
|
|
+ 上限子界限(2σ):{{ value ? JSON.parse(value).ucl_c : "-" }}
|
|
|
+ </div>
|
|
|
+ <div class="text">
|
|
|
+ 上限子界限(σ):{{ value ? JSON.parse(value).ucl_b : "-" }}
|
|
|
+ </div>
|
|
|
+ <div class="text">
|
|
|
+ 中心线:{{ value ? JSON.parse(value).cl : "-" }}
|
|
|
+ </div>
|
|
|
+ <div class="text">
|
|
|
+ 下限子界限(σ):{{ value ? JSON.parse(value).lcl_c : "-" }}
|
|
|
+ </div>
|
|
|
+ <div class="text">
|
|
|
+ 下限子界限(2σ):{{ value ? JSON.parse(value).lcl_b : "-" }}
|
|
|
+ </div>
|
|
|
+ <div class="text">
|
|
|
+ 下限(3σ):{{ value ? JSON.parse(value).lcl : "-" }}
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="databox">
|
|
|
<el-scrollbar :style="{ height: Height + 'px' }">
|
|
|
<div class="box">
|
|
|
- <div class="info" v-if="value2 === 'Xbar-R' || value2 === 'Xbar-S'">
|
|
|
- <XbarList ref="xbarListRef" @tableData="handleDataFromChild" />
|
|
|
+ <div class="info" v-if="value2 === 'Xbar-R'">
|
|
|
+ <XbarRList
|
|
|
+ ref="xbarrListRef"
|
|
|
+ @table-data="handleDataFromChildXbarR"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div class="info" v-if="value2 === 'Xbar-S'">
|
|
|
+ <XbarSList
|
|
|
+ ref="xbarsListRef"
|
|
|
+ @table-data="handleDataFromChildXbarS"
|
|
|
+ />
|
|
|
</div>
|
|
|
<div class="info" v-if="value2 === 'P'">
|
|
|
<PList
|
|
|
ref="pListRef"
|
|
|
- @tableData="handleDataFromChildP"
|
|
|
+ @table-data="handleDataFromChildP"
|
|
|
:chart="chart"
|
|
|
/>
|
|
|
</div>
|
|
|
<div class="info" v-if="value2 === 'NP'">
|
|
|
<NPList
|
|
|
ref="npListRef"
|
|
|
- @tableData="handleDataFromChildNP"
|
|
|
+ @table-data="handleDataFromChildNP"
|
|
|
:chart="chart"
|
|
|
/>
|
|
|
</div>
|
|
|
<div class="info" v-if="value2 === 'C'">
|
|
|
<CList
|
|
|
ref="cListRef"
|
|
|
- @tableData="handleDataFromChildC"
|
|
|
+ @table-data="handleDataFromChildC"
|
|
|
+ :chart="chart"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div class="info" v-if="value2 === 'U'">
|
|
|
+ <UList
|
|
|
+ ref="uListRef"
|
|
|
+ @table-data="handleDataFromChildU"
|
|
|
+ :chart="chart"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div class="info" v-if="value2 === 'I-MR'">
|
|
|
+ <IMRList
|
|
|
+ ref="imrListRef"
|
|
|
+ @table-data="handleDataFromChildIMR"
|
|
|
+ :chart="chart"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div class="info" v-if="value2 === 'EWMA'">
|
|
|
+ <EWMAList
|
|
|
+ ref="imrListRef"
|
|
|
+ @table-data="handleDataFromChildEWMA"
|
|
|
:chart="chart"
|
|
|
/>
|
|
|
</div>
|
|
@@ -118,20 +153,15 @@
|
|
|
|
|
|
<script setup>
|
|
|
import { ref } from "vue";
|
|
|
-import XbarList from "./XbarList.vue";
|
|
|
+import XbarRList from "./Xbar-RList.vue";
|
|
|
+import XbarSList from "./Xbar-SList.vue";
|
|
|
import PList from "./PList.vue";
|
|
|
import NPList from "./NPList.vue";
|
|
|
import CList from "./CList.vue";
|
|
|
-import * as echarts from "echarts";
|
|
|
+import UList from "./UList.vue";
|
|
|
+import IMRList from "./I-MRList.vue";
|
|
|
+import EWMAList from "./EWMAList.vue";
|
|
|
import { useDictionaryStore } from "@/store";
|
|
|
-import {
|
|
|
- getData,
|
|
|
- addDatas,
|
|
|
- deleteData,
|
|
|
- updateData,
|
|
|
- getTaskCode,
|
|
|
-} from "@/api/analysis";
|
|
|
-import Search from "@/components/Search/index.vue";
|
|
|
import XbarR from "@/views/analysis/process/Xbar-R-2.vue";
|
|
|
import NP from "@/views/analysis/process/NP.vue";
|
|
|
import C from "@/views/analysis/process/C.vue";
|
|
@@ -139,11 +169,27 @@ import XbarS from "@/views/analysis/process/Xbar-S-2.vue";
|
|
|
import P from "@/views/analysis/process/P.vue";
|
|
|
import EWMA from "@/views/analysis/process/EWMA.vue";
|
|
|
import IMR from "@/views/analysis/process/I-MR.vue";
|
|
|
+import U from "@/views/analysis/process/U.vue";
|
|
|
|
|
|
-const handleDataFromChild = async (data) => {
|
|
|
+const handleDataFromChildXbarR = async (data) => {
|
|
|
+ await nextTick();
|
|
|
+ xbarRRefMethod(data);
|
|
|
+};
|
|
|
+const handleDataFromChildXbarS = async (data) => {
|
|
|
+ await nextTick();
|
|
|
+ xbarSRefMethod(data);
|
|
|
+};
|
|
|
+const handleDataFromChildEWMA = async (data) => {
|
|
|
await nextTick();
|
|
|
- tableData.value = data;
|
|
|
- changeSelect2();
|
|
|
+ eWMARefMethod(data);
|
|
|
+};
|
|
|
+const handleDataFromChildIMR = async (data) => {
|
|
|
+ await nextTick();
|
|
|
+ imrRefMethod(data);
|
|
|
+};
|
|
|
+const handleDataFromChildU = async (data) => {
|
|
|
+ await nextTick();
|
|
|
+ uRefMethod(data);
|
|
|
};
|
|
|
const handleDataFromChildC = async (data) => {
|
|
|
await nextTick();
|
|
@@ -159,19 +205,19 @@ const handleDataFromChildP = async (data) => {
|
|
|
};
|
|
|
|
|
|
const xbarRRef = ref("xbarRRef");
|
|
|
-const xbarRRefMethod = async () => {
|
|
|
+const xbarRRefMethod = async (data) => {
|
|
|
await nextTick(() => {
|
|
|
if (xbarRRef.value) {
|
|
|
- xbarRRef.value.init(tableData.value);
|
|
|
+ xbarRRef.value.init(data);
|
|
|
}
|
|
|
});
|
|
|
};
|
|
|
|
|
|
const xbarSRef = ref("xbarSRef");
|
|
|
-const xbarSRefMethod = async () => {
|
|
|
+const xbarSRefMethod = async (data) => {
|
|
|
await nextTick();
|
|
|
if (xbarSRef.value) {
|
|
|
- xbarSRef.value.init(tableData.value);
|
|
|
+ xbarSRef.value.init(data);
|
|
|
}
|
|
|
};
|
|
|
const pRef = ref("pRef");
|
|
@@ -196,79 +242,29 @@ const cRefMethod = async (data) => {
|
|
|
}
|
|
|
};
|
|
|
const uRef = ref("uRef");
|
|
|
-const uRefMethod = async () => {
|
|
|
+const uRefMethod = async (data) => {
|
|
|
await nextTick();
|
|
|
if (uRef.value) {
|
|
|
- uRef.value.init();
|
|
|
+ uRef.value.init(data);
|
|
|
}
|
|
|
};
|
|
|
const iMRRef = ref("iMRRef");
|
|
|
-const imrRefMethod = async () => {
|
|
|
+const imrRefMethod = async (data) => {
|
|
|
await nextTick();
|
|
|
if (iMRRef.value) {
|
|
|
- iMRRef.value.init();
|
|
|
+ iMRRef.value.init(data);
|
|
|
}
|
|
|
};
|
|
|
const eWMARef = ref("EWMA");
|
|
|
-const eWMARefMethod = async () => {
|
|
|
+const eWMARefMethod = async (data) => {
|
|
|
await nextTick();
|
|
|
if (eWMARef.value) {
|
|
|
- eWMARef.value.init();
|
|
|
+ eWMARef.value.init(data);
|
|
|
}
|
|
|
};
|
|
|
const year = ref("0");
|
|
|
-const currentOption = reactive({
|
|
|
- total: 0,
|
|
|
- page: 1,
|
|
|
- limit: 12,
|
|
|
- pageSizes: [12],
|
|
|
-});
|
|
|
const lableValue = ref("");
|
|
|
-const searchRef = ref(null);
|
|
|
-const getTaskOption = async () => {
|
|
|
- const { data } = await getTaskCode({
|
|
|
- operationCode: JSON.parse(value.value).value,
|
|
|
- });
|
|
|
- taskOption.value = data;
|
|
|
-};
|
|
|
-const getTableData = async () => {
|
|
|
- const { data, code, msg } = await getData({
|
|
|
- ...searchRef.value.searchForm,
|
|
|
- pageNo: currentOption.page,
|
|
|
- pageSize: currentOption.limit,
|
|
|
- // yearStr: year.value,
|
|
|
- operation: lableValue.value,
|
|
|
- });
|
|
|
- if (code == "200") {
|
|
|
- tableData.value = data.records;
|
|
|
- showData.value = { ...data, list: null };
|
|
|
- // if (tableData.value.length > 0) {
|
|
|
- // setChart1();
|
|
|
- // setChart2();
|
|
|
- // }
|
|
|
- currentOption.total = data.totalCount;
|
|
|
- currentOption.page = data.pageNo;
|
|
|
- oldDataJSON.value = JSON.stringify(data.records);
|
|
|
- }
|
|
|
- disabled.value = false;
|
|
|
-};
|
|
|
-const searchForm = [
|
|
|
- {
|
|
|
- label: "日期",
|
|
|
- prop: "createds",
|
|
|
- type: "daterange",
|
|
|
- },
|
|
|
- {
|
|
|
- label: "产品型号",
|
|
|
- prop: "model",
|
|
|
- type: "input",
|
|
|
- },
|
|
|
- {
|
|
|
- label: "生产批号",
|
|
|
- prop: "batchNo",
|
|
|
- type: "input",
|
|
|
- },
|
|
|
-];
|
|
|
+
|
|
|
const { dicts } = useDictionaryStore();
|
|
|
const sccOptions = ref([...dicts.spc_control_chart]);
|
|
|
const value2 = ref(sccOptions.value[0].dictValue);
|
|
@@ -280,285 +276,18 @@ const changeEditstatus = () => {
|
|
|
editStatus.value = !changeEditstatus.value;
|
|
|
addStatus.value = false;
|
|
|
};
|
|
|
-const changeaddstatus = () => {
|
|
|
- addStatus.value = !addStatus.value;
|
|
|
- editStatus.value = false;
|
|
|
-};
|
|
|
-const canceleOp = () => {
|
|
|
- addStatus.value = false;
|
|
|
- editStatus.value = false;
|
|
|
- reset();
|
|
|
-};
|
|
|
-const Y1value = ref([]);
|
|
|
-const X1array = ref([]);
|
|
|
-const setY1value = () => {
|
|
|
- Y1value.value = [];
|
|
|
- tableData.value.forEach((item) => {
|
|
|
- Y1value.value.push(item.avg);
|
|
|
- });
|
|
|
- Y1value.value.unshift("");
|
|
|
- Y1value.value.push("");
|
|
|
-
|
|
|
- chartsOption1.value.series[0].data = Y1value.value;
|
|
|
-};
|
|
|
-const setX1array = async () => {
|
|
|
- X1array.value = await [];
|
|
|
- tableData.value.forEach((item, index) => {
|
|
|
- X1array.value.push(index + 1);
|
|
|
- });
|
|
|
- X1array.value.unshift("");
|
|
|
- X1array.value.push("");
|
|
|
- chartsOption1.value.xAxis[0].data = X1array.value;
|
|
|
-};
|
|
|
|
|
|
-const importStatus = ref(false);
|
|
|
-const disabled = ref(false);
|
|
|
const tableData = ref([]);
|
|
|
-//Form
|
|
|
-const ruleFormRef = ref(null);
|
|
|
-
|
|
|
-const addItem = {
|
|
|
- // abnormal: "",
|
|
|
- accuracy1: 0,
|
|
|
- accuracy2: 0,
|
|
|
- accuracy3: 0,
|
|
|
- accuracy4: 0,
|
|
|
- accuracy5: 0,
|
|
|
- analyseUser: "",
|
|
|
- avg: 0,
|
|
|
- batchNo: "",
|
|
|
- checkDeviceNo: "",
|
|
|
- checkUser: "",
|
|
|
- dateStr: "",
|
|
|
- measure: "",
|
|
|
- model: "",
|
|
|
- range: 0,
|
|
|
-};
|
|
|
-const rules = {
|
|
|
- qualityTaskId: [
|
|
|
- {
|
|
|
- required: true,
|
|
|
- trigger: "change",
|
|
|
- },
|
|
|
- ],
|
|
|
- dateStr: [
|
|
|
- {
|
|
|
- required: true,
|
|
|
- trigger: "change",
|
|
|
- },
|
|
|
- ],
|
|
|
- model: [
|
|
|
- {
|
|
|
- required: true,
|
|
|
-
|
|
|
- trigger: "change",
|
|
|
- },
|
|
|
- ],
|
|
|
- batchNo: [
|
|
|
- {
|
|
|
- required: true,
|
|
|
-
|
|
|
- trigger: "change",
|
|
|
- },
|
|
|
- ],
|
|
|
- accuracy1: [
|
|
|
- {
|
|
|
- required: true,
|
|
|
-
|
|
|
- trigger: "change",
|
|
|
- },
|
|
|
- ],
|
|
|
- accuracy2: [
|
|
|
- {
|
|
|
- required: true,
|
|
|
-
|
|
|
- trigger: "change",
|
|
|
- },
|
|
|
- ],
|
|
|
- accuracy3: [
|
|
|
- {
|
|
|
- required: true,
|
|
|
-
|
|
|
- trigger: "change",
|
|
|
- },
|
|
|
- ],
|
|
|
- accuracy4: [
|
|
|
- {
|
|
|
- required: true,
|
|
|
-
|
|
|
- trigger: "change",
|
|
|
- },
|
|
|
- ],
|
|
|
- accuracy5: [
|
|
|
- {
|
|
|
- required: true,
|
|
|
-
|
|
|
- trigger: "change",
|
|
|
- },
|
|
|
- ],
|
|
|
- checkUser: [
|
|
|
- {
|
|
|
- required: true,
|
|
|
-
|
|
|
- trigger: "change",
|
|
|
- },
|
|
|
- ],
|
|
|
- checkDeviceNo: [
|
|
|
- {
|
|
|
- required: true,
|
|
|
-
|
|
|
- trigger: "change",
|
|
|
- },
|
|
|
- ],
|
|
|
- // abnormal: [
|
|
|
- // {
|
|
|
- // required: true,
|
|
|
-
|
|
|
- // trigger: "change",
|
|
|
- // },
|
|
|
- // ],
|
|
|
- analyseUser: [
|
|
|
- {
|
|
|
- required: true,
|
|
|
-
|
|
|
- trigger: "change",
|
|
|
- },
|
|
|
- ],
|
|
|
- measure: [
|
|
|
- {
|
|
|
- required: false,
|
|
|
-
|
|
|
- trigger: "change",
|
|
|
- },
|
|
|
- ],
|
|
|
-};
|
|
|
-const resItem = {
|
|
|
- // abnormal: "",
|
|
|
- analyseUser: "",
|
|
|
- batchNo: "",
|
|
|
- checkDeviceNo: "",
|
|
|
- checkUser: "",
|
|
|
- dateStr: "",
|
|
|
- measure: "",
|
|
|
- model: "",
|
|
|
-};
|
|
|
-const addData = ref({
|
|
|
- // abnormal: "",
|
|
|
- analyseUser: "",
|
|
|
- batchNo: "",
|
|
|
- checkDeviceNo: "",
|
|
|
- checkUser: "",
|
|
|
- dateStr: "",
|
|
|
- measure: "",
|
|
|
- model: "",
|
|
|
-});
|
|
|
-const accuracysSum = ref(0);
|
|
|
-const taskChange = (value) => {
|
|
|
- taskOption.value.forEach((item) => {
|
|
|
- if (item.id == value) {
|
|
|
- addData.value.model = item.prodtModel;
|
|
|
- accuracysSum.value = Number(item.processCount);
|
|
|
- addData.value.accuracys = [];
|
|
|
- let array = [];
|
|
|
- for (let i = 0; i < accuracysSum.value; i++) {
|
|
|
- array.push(0);
|
|
|
- }
|
|
|
- addData.value.accuracys = array;
|
|
|
- }
|
|
|
- });
|
|
|
-};
|
|
|
-const oldDataJSON = ref("");
|
|
|
-const showData = ref({});
|
|
|
-const url = ref(import.meta.env.VITE_APP_BASE_API + "/api/v1/spc/import");
|
|
|
-const headers = { Authorization: `${localStorage.getItem("token")}` };
|
|
|
const opOptions = ref([...dicts.spc_operation]);
|
|
|
-const setChart1Info = () => {
|
|
|
- // chartsOption1.value.title[0].text = `上限=${showData.value.avgMax ? showData.value.avgMax : "-"}`;
|
|
|
- // chartsOption1.value.title[0].text = `x̄=${showData.value.avgAvg ? showData.value.avgAvg : "-"}`;
|
|
|
- chartsOption1.value.series[0].markLine.data[0].yAxis = JSON.parse(
|
|
|
- value.value
|
|
|
- ).avgMax;
|
|
|
- chartsOption1.value.series[0].markLine.data[0].label.formatter = ` 上限=${
|
|
|
- JSON.parse(value.value).avgMax ? JSON.parse(value.value).avgMax : "0"
|
|
|
- }`;
|
|
|
- chartsOption1.value.series[0].markLine.data[1].yAxis = JSON.parse(value.value)
|
|
|
- .avgMin
|
|
|
- ? JSON.parse(value.value).avgMin
|
|
|
- : 0;
|
|
|
- chartsOption1.value.series[0].markLine.data[1].label.formatter = ` 下限=${JSON.parse(value.value).avgMin ? JSON.parse(value.value).avgMin : "0"}`;
|
|
|
- chartsOption1.value.series[0].markLine.data[2].yAxis = JSON.parse(
|
|
|
- value.value
|
|
|
- ).avgMid;
|
|
|
- chartsOption1.value.series[0].markLine.data[2].label.formatter = `x̄=${
|
|
|
- JSON.parse(value.value).avgMid
|
|
|
- }`;
|
|
|
- // chartsOption1.value.title[2].text = `下限=${showData.value.avgMin ? showData.value.avgMin : "0"}`;
|
|
|
-};
|
|
|
-const setChart2Info = () => {
|
|
|
- // chartsOption2.value.title[0].text = `上限=${showData.value.rangeMax ? showData.value.rangeMax : "-"}`;
|
|
|
- // chartsOption2.value.title[0].text = `R=${showData.value.rangeAvg ? showData.value.rangeAvg : "-"}`;
|
|
|
- chartsOption2.value.series[0].markLine.data[0].yAxis = JSON.parse(
|
|
|
- value.value
|
|
|
- ).rangeMax;
|
|
|
- chartsOption2.value.series[0].markLine.data[0].label.formatter = ` 上限=${
|
|
|
- JSON.parse(value.value).rangeMax ? JSON.parse(value.value).rangeMax : "0"
|
|
|
- }`;
|
|
|
- chartsOption2.value.series[0].markLine.data[1].yAxis = JSON.parse(value.value)
|
|
|
- .rangeMin
|
|
|
- ? JSON.parse(value.value).rangeMin
|
|
|
- : 0;
|
|
|
- chartsOption2.value.series[0].markLine.data[1].label.formatter = ` 下限=${
|
|
|
- JSON.parse(value.value).rangeMin ? JSON.parse(value.value).rangeMin : "0"
|
|
|
- }`;
|
|
|
- chartsOption2.value.series[0].markLine.data[2].yAxis = JSON.parse(
|
|
|
- value.value
|
|
|
- ).rangeMid;
|
|
|
- chartsOption2.value.series[0].markLine.data[2].label.formatter = `x̄=${
|
|
|
- JSON.parse(value.value).rangeMid
|
|
|
- }`;
|
|
|
- // chartsOption2.value.title[2].text = `下限=${showData.value.rangeMin ? showData.value.rangeMin : "0"}`;
|
|
|
-};
|
|
|
-const setChart1 = () => {
|
|
|
- setChart1Info();
|
|
|
- setY1value();
|
|
|
- setX1array();
|
|
|
- charts1.value.setOption(chartsOption1.value, true);
|
|
|
-};
|
|
|
-const setChart2 = () => {
|
|
|
- setChart2Info();
|
|
|
- setY2value();
|
|
|
- setX2array();
|
|
|
- charts2.value.setOption(chartsOption2.value, true);
|
|
|
-};
|
|
|
-//修改
|
|
|
-const updataItem = (row) => {
|
|
|
- editStatus.value = true;
|
|
|
- addData.value = row;
|
|
|
- addStatus.value = true;
|
|
|
-};
|
|
|
-//导入按钮
|
|
|
-const onSuccess = (res) => {
|
|
|
- const { code, msg, data } = res;
|
|
|
- if (code != "200") {
|
|
|
- ElMessage.error(msg);
|
|
|
- } else {
|
|
|
- tableData.value = data.list;
|
|
|
- showData.value = { ...data, list: null };
|
|
|
- setChart1();
|
|
|
- setChart2();
|
|
|
- oldDataJSON.value = JSON.stringify(data.list);
|
|
|
- importStatus.value = true;
|
|
|
- ElMessage.success(msg);
|
|
|
- }
|
|
|
-};
|
|
|
-const taskOption = ref([]);
|
|
|
+
|
|
|
const value = ref(opOptions.value[0].remark);
|
|
|
const title = ref("调阻精度");
|
|
|
+const xbarrListRef = ref("xbarrListRef");
|
|
|
+const xbarsListRef = ref("xbarsListRef");
|
|
|
|
|
|
const showLable = ref("调阻");
|
|
|
const changeSelect = () => {
|
|
|
- setTimeout(async () => {
|
|
|
- getTaskOption();
|
|
|
+ setTimeout(() => {
|
|
|
showLable.value = selectRef.value.currentPlaceholder;
|
|
|
opOptions.value.forEach((item) => {
|
|
|
if (item.dictLabel == showLable.value) {
|
|
@@ -579,19 +308,15 @@ const changeSelect = () => {
|
|
|
title.value = "调阻精度";
|
|
|
break;
|
|
|
}
|
|
|
- // await getTableData();
|
|
|
chartsOption1.value.title[0].text = `${title.value}的Xbar-R控制图`;
|
|
|
- // tableData.value.forEach((item) => {
|
|
|
- // item.accuracy1 = 0;
|
|
|
- // item.accuracy2 = 0;
|
|
|
- // item.accuracy3 = 0;
|
|
|
- // item.accuracy4 = 0;
|
|
|
- // item.accuracy5 = 0;
|
|
|
- // item.avg = 0;
|
|
|
- // item.range = 0;
|
|
|
- // });
|
|
|
- // setChart1();
|
|
|
- changeSelect2();
|
|
|
+
|
|
|
+ if (value2.value === "Xbar-R") {
|
|
|
+ xbarrListRef.value.init(lableValue.value);
|
|
|
+ xbarrListRef.value.init(lableValue.value);
|
|
|
+ } else if (value2.value === "Xbar-S") {
|
|
|
+ xbarsListRef.value.init(lableValue.value);
|
|
|
+ xbarsListRef.value.init(lableValue.value);
|
|
|
+ }
|
|
|
}, 0);
|
|
|
};
|
|
|
const changeSelect2 = () => {
|
|
@@ -619,26 +344,6 @@ const changeSelect2 = () => {
|
|
|
// );
|
|
|
const selectRef = ref(null);
|
|
|
//保存
|
|
|
-const changeEdit = async () => {
|
|
|
- if (disabled.value == false) {
|
|
|
- disabled.value = true;
|
|
|
- } else {
|
|
|
- const { data, code, msg } = await getHandleData([...tableData.value]);
|
|
|
- if (code == "200") {
|
|
|
- ElMessage.success(msg);
|
|
|
- tableData.value = data.list;
|
|
|
- showData.value = { ...data, list: null };
|
|
|
- setChart1();
|
|
|
- setChart2();
|
|
|
- oldDataJSON.value = JSON.stringify(data.list);
|
|
|
- }
|
|
|
- disabled.value = false;
|
|
|
- }
|
|
|
-};
|
|
|
-const cancelEdit = () => {
|
|
|
- tableData.value = JSON.parse(oldDataJSON.value);
|
|
|
- disabled.value = false;
|
|
|
-};
|
|
|
const maxHeight = ref(null);
|
|
|
const maxWidth = ref(null);
|
|
|
const charts1 = shallowRef(null);
|
|
@@ -917,78 +622,11 @@ const setX2array = () => {
|
|
|
X2array.value.push("");
|
|
|
chartsOption2.value.xAxis[0].data = X2array.value;
|
|
|
};
|
|
|
-//当新增或者编辑的确定操作
|
|
|
-const submit = () => {
|
|
|
- if (editStatus.value == true) {
|
|
|
- updateSubmit();
|
|
|
- } else {
|
|
|
- addSubmit();
|
|
|
- }
|
|
|
-};
|
|
|
-const addSubmit = async () => {
|
|
|
- await ruleFormRef.value.validate(async (valid, fields) => {
|
|
|
- if (valid) {
|
|
|
- const { data, code } = await addDatas({
|
|
|
- ...addData.value,
|
|
|
- yearStr: year.value,
|
|
|
- operation: lableValue.value,
|
|
|
- });
|
|
|
- if (code == "200") {
|
|
|
- ElMessage.success("添加成功!");
|
|
|
- reset();
|
|
|
- // getTableData();
|
|
|
- }
|
|
|
- } else {
|
|
|
- ElMessage.error("请检查表单信息");
|
|
|
- }
|
|
|
- });
|
|
|
-};
|
|
|
-const deleteSubmit = async (id) => {
|
|
|
- const { data, code } = await deleteData({
|
|
|
- id,
|
|
|
- });
|
|
|
- if (code == "200") {
|
|
|
- ElMessage.success("删除成功!");
|
|
|
- // getTableData();
|
|
|
- }
|
|
|
-};
|
|
|
-const updateSubmit = async () => {
|
|
|
- const { data, code } = await updateData({
|
|
|
- ...addData.value,
|
|
|
- });
|
|
|
- if (code == "200") {
|
|
|
- ElMessage.success("更新成功!");
|
|
|
- reset();
|
|
|
- // getTableData();
|
|
|
- }
|
|
|
-};
|
|
|
-const reset = () => {
|
|
|
- addStatus.value = false;
|
|
|
- editStatus.value = false;
|
|
|
- addData.value = { ...resItem };
|
|
|
- searchRef.value.searchForm = {};
|
|
|
- currentOption.value = {
|
|
|
- total: 0,
|
|
|
- page: 0,
|
|
|
- limit: 12,
|
|
|
- pageSizes: [12],
|
|
|
- operation: value.value,
|
|
|
- };
|
|
|
- // getTableData();
|
|
|
-};
|
|
|
-const setView = () => {
|
|
|
- setHeight();
|
|
|
- charts1.value = echarts.init(document.getElementById("charts"));
|
|
|
- charts2.value = echarts.init(document.getElementById("charts1"));
|
|
|
- charts1.value.setOption(chartsOption1.value, true);
|
|
|
- charts2.value.setOption(chartsOption2.value, true);
|
|
|
-};
|
|
|
|
|
|
// 父组件的数据
|
|
|
const chart = ref(value2);
|
|
|
|
|
|
onMounted(async () => {
|
|
|
- getTaskOption();
|
|
|
setHeight();
|
|
|
year.value = new Date().getFullYear() + "";
|
|
|
opOptions.value.forEach((item) => {
|
|
@@ -996,17 +634,8 @@ onMounted(async () => {
|
|
|
lableValue.value = item.dictValue;
|
|
|
}
|
|
|
});
|
|
|
-
|
|
|
- // await getTableData();
|
|
|
value2.value = "Xbar-R";
|
|
|
- // await changeSelect2();
|
|
|
- // nextTick(() => {
|
|
|
- // charts1.value = echarts.init(document.getElementById("charts"));
|
|
|
- // charts2.value = echarts.init(document.getElementById("charts1"));
|
|
|
- // charts1.value.setOption(chartsOption1.value, true);
|
|
|
- // charts2.value.setOption(chartsOption2.value, true);
|
|
|
- // });
|
|
|
- // window.addEventListener("resize", setView);
|
|
|
+ xbarrListRef.value.init(lableValue.value);
|
|
|
});
|
|
|
onBeforeUnmount(() => {
|
|
|
// window.removeEventListener("resize", setView);
|
|
@@ -1039,15 +668,16 @@ onBeforeUnmount(() => {
|
|
|
background-color: white;
|
|
|
|
|
|
.infobox {
|
|
|
- width: 200px;
|
|
|
+ width: 230px;
|
|
|
|
|
|
.header {
|
|
|
- height: 120px;
|
|
|
- border-bottom: 2px solid #00000010;
|
|
|
+ //height: 120px;
|
|
|
+ //border-bottom: 2px solid #00000010;
|
|
|
padding: 20px;
|
|
|
}
|
|
|
|
|
|
.body {
|
|
|
+ border-top: 2px solid #00000010;
|
|
|
padding: 20px;
|
|
|
}
|
|
|
}
|
|
@@ -1057,7 +687,7 @@ onBeforeUnmount(() => {
|
|
|
border-left: 2px solid #00000010;
|
|
|
|
|
|
.box {
|
|
|
- height: 710px;
|
|
|
+ height: 810px;
|
|
|
padding: 5px 20px;
|
|
|
display: flex;
|
|
|
flex-direction: column;
|