From 10f334d1b36f8dad1edcd3b489c9eb6b8773d444 Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期一, 03 三月 2025 14:47:53 +0800
Subject: [PATCH] Merge branch 'dev' of http://114.132.189.42:9002/r/lims-ruoyi-before into dev
---
src/views/business/materialOrder/copperOrder.vue | 15
src/components/echarts/echarts.vue | 238 +++++++
src/views/business/materialOrder/customsInspection.vue | 18
src/layout/components/Navbar.vue | 13
src/views/statisticalCharts/itemInspectionAnalysis/index.vue | 535 ++++++++++++++++
src/components/echarts/DataComparison.vue | 507 +++++++++++++++
src/views/statisticalCharts/qualificationRateStatistics/index.vue | 448 +++++++++++++
src/views/business/productOrder/components/add.vue | 74 +-
src/api/statisticalCharts/dataAnalysis.js | 73 ++
src/router/index.js | 11
src/views/structural/capabilityAndLaboratory/capability/index.vue | 4
11 files changed, 1,883 insertions(+), 53 deletions(-)
diff --git a/src/api/statisticalCharts/dataAnalysis.js b/src/api/statisticalCharts/dataAnalysis.js
new file mode 100644
index 0000000..0775c06
--- /dev/null
+++ b/src/api/statisticalCharts/dataAnalysis.js
@@ -0,0 +1,73 @@
+// 缁熻鍥捐〃
+import request from "@/utils/request";
+
+//鍚堟牸鐜囩粺璁�
+export function getRawPassRateByBarChart(query) {
+ return request({
+ url: "/dataAnalysis/getRawPassRateByBarChart",
+ method: "get",
+ params: query,
+ });
+}
+//鍘熸潗鏂欑粺璁�
+export function getRawPassRateByCake(query) {
+ return request({
+ url: "/dataAnalysis/getRawPassRateByCake",
+ method: "get",
+ params: query,
+ });
+}
+//鏈湀妫�楠岀被鍨嬫暟閲�
+export function getOrderTypeCookie() {
+ return request({
+ url: "/dataAnalysis/getOrderTypeCookie",
+ method: "get",
+ });
+}
+//鏈湀妫�楠岀被鍨嬫暟閲�
+export function getRawUpMonth() {
+ return request({
+ url: "/dataAnalysis/getRawUpMonth",
+ method: "get",
+ });
+}
+//鏌ヨ鍘熸潗鏂欓」妫�鍒嗘瀽
+export function getRawProductAnalysis(query) {
+ return request({
+ url: "/dataAnalysis/getRawProductAnalysis",
+ method: "post",
+ data: query,
+ });
+}
+//鏌ヨ鍘熸潗鏂欓」妫�鍒嗘瀽鍚堟牸鐜�
+export function getRawProductAnalysisRawPass(query) {
+ return request({
+ url: "/dataAnalysis/getRawProductAnalysisRawPass",
+ method: "post",
+ data: query,
+ });
+}
+//鏌ヨ鍘熸潗鏂欓」妫�鍒嗘瀽鍒楄〃
+export function getRawProductAnalysisAllList(query) {
+ return request({
+ url: "/dataAnalysis/getRawProductAnalysisAllList",
+ method: "post",
+ data: query,
+ });
+}
+//鏌ヨ妫�楠岄」
+export function getRawItemNames(query) {
+ return request({
+ url: "/dataAnalysis/getRawItemNames",
+ method: "get",
+ params: query,
+ });
+}
+//鏌ヨ鍘熸潗鏂欓」妫�鍜屽巶瀹舵暟鎹姣�
+export function getRawSupplierCompare(query) {
+ return request({
+ url: "/dataAnalysis/getRawSupplierCompare",
+ method: "post",
+ data: query,
+ });
+}
diff --git a/src/components/echarts/DataComparison.vue b/src/components/echarts/DataComparison.vue
new file mode 100644
index 0000000..b69b49d
--- /dev/null
+++ b/src/components/echarts/DataComparison.vue
@@ -0,0 +1,507 @@
+<template>
+ <div>
+ <div>
+ <el-row class="title">
+ <el-col :span="6" style="padding-left: 20px;text-align: left;">鏁版嵁鍒嗘瀽</el-col>
+ <el-col :span="18" style="text-align: right;">
+ <el-button size="medium" @click="$emit('goBack')">杩斿洖</el-button>
+ </el-col>
+ </el-row>
+ </div>
+ <div class="container">
+ <div>
+ <div style="padding: 0 0 10px 10px">濉啓鍘傚鏁版嵁</div>
+ <el-form ref="supplierForm" :model="supplierForm" :rules="rules" class="demo-ruleForm" label-width="40px">
+ <el-row :gutter="20">
+ <el-col :span="3">
+ <el-form-item label="1锛�" prop="one">
+ <el-input v-model="supplierForm.one" size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="3">
+ <el-form-item label="2锛�" prop="two">
+ <el-input v-model="supplierForm.two" size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="3">
+ <el-form-item label="3锛�" prop="three">
+ <el-input v-model="supplierForm.three" size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="3">
+ <el-form-item label="4锛�" prop="four">
+ <el-input v-model="supplierForm.four" size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="3">
+ <el-form-item label="5锛�" prop="five">
+ <el-input v-model="supplierForm.five" size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="4">
+ <el-form-item>
+ <el-button size="small" type="primary" @click="submitForm()">鏁版嵁鍒嗘瀽</el-button>
+ <el-button size="small" @click="resetForm()">閲嶇疆</el-button>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-form>
+ </div>
+ <table :border='true' class="table">
+ <tr>
+ <th class="thTitle"> </th>
+ <th class="thTitle">1</th>
+ <th class="thTitle">2</th>
+ <th class="thTitle">3</th>
+ <th class="thTitle">4</th>
+ <th class="thTitle">5</th>
+ <th class="thTitle">骞冲潎鍊�</th>
+ <th class="thTitle">鏍囧噯鍋忓樊</th>
+ <th class="thTitle">鐩稿鍋忓樊</th>
+ <th class="thTitle">骞冲潎鏍囧噯鍋忓樊</th>
+ </tr>
+ <tr>
+ <td class="thBack">鍘傚妫�娴嬫暟鎹�</td>
+ <td v-for="(item,index) in supplierData" :key="index" class="tdData">{{item}}</td>
+ </tr>
+ <tr>
+ <td class="thBack">妫�娴嬩腑蹇冩暟鎹�</td>
+ <td v-for="(item,index) in localData" :key="index" class="tdData">{{item}}</td>
+ </tr>
+ <tr>
+ <td class="thBack">缁濆鍋忓樊</td>
+ <td v-for="(item,index) in absoluteDeviation" :key="index" class="tdData">{{item}}</td>
+ </tr>
+ <tr>
+ <td class="thBack">骞冲潎鍊�</td>
+ <td v-for="(item,index) in average" :key="index" class="tdData">{{item}}</td>
+ </tr>
+ <tr>
+ <td class="thBack2">鍘傚</td>
+ </tr>
+ <tr>
+ <td class="thBack">UCL</td>
+ <td v-for="(item,index) in supplierULC" :key="index" class="tdData">{{item}}</td>
+ <td v-for="(item,index) in empty" :key="'a' + index" class="tdData"></td>
+ </tr>
+ <tr>
+ <td class="thBack">LCL</td>
+ <td v-for="(item,index) in supplierLCL" :key="index" class="tdData">{{item}}</td>
+ <td v-for="(item,index) in empty" :key="'b' + index" class="tdData"></td>
+ </tr>
+ <tr>
+ <td class="thBack">骞冲潎鍊�</td>
+ <td v-for="(item,index) in supplierAverage" :key="index" class="tdData">{{item}}</td>
+ <td v-for="(item,index) in empty" :key="'c' + index" class="tdData"></td>
+ </tr>
+ <tr>
+ <td class="thBack">鏋佸樊</td>
+ <td v-for="(item,index) in supplierRange" :key="index" class="tdData">{{item}}</td>
+ <td v-for="(item,index) in empty" :key="'d' + index" class="tdData"></td>
+ </tr>
+ <tr>
+ <td class="thBack2">妫�娴嬩腑蹇�</td>
+ </tr>
+ <tr>
+ <td class="thBack">UCL</td>
+ <td v-for="(item,index) in localULC" :key="index" class="tdData">{{item}}</td>
+ <td v-for="(item,index) in empty" :key="'e' + index" class="tdData"></td>
+ </tr>
+ <tr>
+ <td class="thBack">LCL</td>
+ <td v-for="(item,index) in localLCL" :key="index" class="tdData">{{item}}</td>
+ <td v-for="(item,index) in empty" :key="'f' + index" class="tdData"></td>
+ </tr>
+ <tr>
+ <td class="thBack">骞冲潎鍊�</td>
+ <td v-for="(item,index) in localAverage" :key="index" class="tdData">{{item}}</td>
+ <td v-for="(item,index) in empty" :key="'g' + index" class="tdData"></td>
+ </tr>
+ <tr>
+ <td class="thBack">鏋佸樊</td>
+ <td v-for="(item,index) in localRange" :key="index" class="tdData">{{item}}</td>
+ <td v-for="(item,index) in empty" :key="'h' + index" class="tdData"></td>
+ </tr>
+ </table>
+ <el-row>
+ <el-col :span="12">
+ <div class="inspection-card">
+ <div class="echartsTitle">妫�娴嬫暟鎹姣�</div>
+ <Echarts ref="chart"
+ :grid="grid"
+ :legend="legend"
+ :lineColors="lineColors"
+ :series="echartsSeries"
+ :tooltip="tooltip"
+ :xAxis="xAxis"
+ :yAxis="yAxis"
+ style="height: 40vh;"></Echarts>
+ </div>
+ </el-col>
+ <el-col :span="12">
+ <div class="inspection-card">
+ <div class="echartsTitle">娴嬮噺鏁版嵁鏍囧噯宸姣�</div>
+ <Echarts ref="chart"
+ :barColors="barColors"
+ :chartStyle="chartStyle"
+ :grid="grid"
+ :legend="legend1"
+ :series="echartsSeries1"
+ :tooltip="tooltip"
+ :xAxis="xAxis1"
+ :yAxis="yAxis1"
+ style="height: 40vh;"></Echarts>
+ </div>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="12">
+ <div class="inspection-card">
+ <div class="echartsTitle">鍋忓樊鍒嗘瀽</div>
+ <Echarts ref="chart"
+ :grid="grid"
+ :legend="legend2"
+ :lineColors="lineColors"
+ :series="echartsSeries2"
+ :tooltip="tooltip"
+ :xAxis="xAxis"
+ :yAxis="yAxis2"
+ style="height: 40vh;"></Echarts>
+ </div>
+ </el-col>
+ <el-col :span="12">
+ <div class="inspection-card">
+ <div class="echartsTitle">妫�娴嬩腑蹇冩暟鎹�</div>
+ <Echarts ref="chart"
+ :grid="grid"
+ :legend="legend"
+ :lineColors="lineColors"
+ :series="echartsSeries3"
+ :tooltip="tooltip"
+ :xAxis="xAxis"
+ :yAxis="yAxis"
+ style="height: 40vh;"></Echarts>
+ </div>
+ </el-col>
+ </el-row>
+ </div>
+ </div>
+</template>
+
+<script>
+import Echarts from "./echarts.vue";
+
+export default {
+ name: "DataComparison",
+ // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+ components: {Echarts},
+ props: {
+ comparisonData : {
+ type: Object,
+ default: () => {}
+ },
+ selectRow : {
+ type: Object,
+ default: () => {}
+ }
+ },
+ data() {
+ // 杩欓噷瀛樻斁鏁版嵁
+ return {
+ supplierForm: {
+ one: '',
+ two: '',
+ three: '',
+ four: '',
+ five: '',
+ },
+ rules: {
+ one: [{ required: true, message: '蹇呭~', trigger: 'blur' }],
+ two: [{ required: true, message: '蹇呭~', trigger: 'blur' }],
+ three: [{ required: true, message: '蹇呭~', trigger: 'blur' }],
+ four: [{ required: true, message: '蹇呭~', trigger: 'blur' }],
+ five: [{ required: true, message: '蹇呭~', trigger: 'blur' }],
+ },
+ comparisonData1: {},
+ supplierData: [], // 鍘傚鏁版嵁
+ localData: [], // 妫�娴嬩腑蹇冩娴嬫暟鎹�
+ absoluteDeviation: [], // 缁濆鍋忓樊
+ average: [], // 骞冲潎鍊�
+ supplierULC: [], // 鍘傚UCL
+ supplierLCL: [], // 鍘傚LCL
+ supplierAverage: [], // 鍘傚骞冲潎鍊�
+ supplierRange: [], // 鍘傚鏋佸樊
+ localULC: [], // 妫�娴嬩腑蹇僓CL
+ localLCL: [], // 妫�娴嬩腑蹇僉CL
+ localAverage: [], // 妫�娴嬩腑蹇冨钩鍧囧��
+ localRange: [], // 妫�娴嬩腑蹇冩瀬宸�
+ manufacturerData: [],
+ manufacturer: [
+ {value: '1.1'},
+ {value: '2.2'},
+ {value: '3.3'},
+ {value: '4.4'},
+ {value: '5.5'},
+ ],
+ testCenter: [
+ {value: '1.2'},
+ {value: '2.33'},
+ {value: '3.64'},
+ {value: '4.3'},
+ {value: '5.9'},
+ ],
+ empty: [
+ {data: '1'},
+ {data: '2'},
+ {data: '3'},
+ {data: '4'},
+ ],
+ lineColors: ['#ed7d31', '#409EFF'],
+ barColors: ['#ed7d31', '#409EFF', '#a5a5a5'],
+ chartStyle: {
+ width: '100%',
+ height: '96%' // 璁剧疆鍥捐〃瀹瑰櫒鐨勯珮搴�
+ },
+ grid: {
+ left: '3%',
+ right: '4%',
+ bottom: '3%',
+ containLabel: true
+ },
+ legend: {
+ data: ['鍘傚妫�娴嬫暟鎹�','妫�娴嬩腑蹇冩娴嬫暟鎹�']
+ },
+ tooltip: {
+ trigger: 'axis',
+ axisPointer: {
+ type: 'shadow'
+ }
+ },
+ xAxis: [{
+ type: 'category',
+ data: ['1', '2', '3', '4', '5']
+ }],
+ yAxis: [{
+ type: 'value'
+ }],
+ echartsSeries: [
+ {
+ name: '鍘傚妫�娴嬫暟鎹�',
+ type: 'line',
+ label: {
+ show: true,
+ position: 'top',
+ },
+ data: []
+ },
+ {
+ name: '妫�娴嬩腑蹇冩娴嬫暟鎹�',
+ type: 'line',
+ label: {
+ show: true,
+ position: 'top',
+ },
+ data: []
+ }
+ ],
+ xAxis1: [{
+ type: 'category',
+ data: ['鍘傚', '妫�娴嬩腑蹇�']
+ }],
+ legend1: {
+ data: ['UCL','LCL', '骞冲潎鍊�']
+ },
+ yAxis1: [
+ {
+ type: 'value',
+ },
+ ],
+ echartsSeries1: [
+ {
+ name: 'UCL',
+ type: 'bar',
+ label: {
+ show: true,
+ position: 'top'
+ },
+ data: []
+ },
+ {
+ name: 'LCL',
+ type: 'bar',
+ label: {
+ show: true,
+ position: 'top'
+ },
+ data: []
+ },
+ {
+ name: '骞冲潎鍊�',
+ type: 'bar',
+ label: {
+ show: true,
+ position: 'top'
+ },
+ data: []
+ },
+ ],
+ legend2: {
+ data: ['骞冲潎鍊�','缁濆鍋忓樊']
+ },
+ yAxis2: [{
+ type: 'value',
+ min: 0,
+ max: 1,
+ }],
+ echartsSeries2: [
+ {
+ name: '骞冲潎鍊�',
+ type: 'line',
+ label: {
+ show: true,
+ position: 'top',
+ formatter: (params) => Math.round(params.value * 1000) / 10 + '%'
+ },
+ data: [],
+ },
+ {
+ name: '缁濆鍋忓樊',
+ type: 'line',
+ label: {
+ show: true,
+ position: 'top',
+ formatter: (params) => Math.round(params.value * 1000) / 10 + '%'
+ },
+ data: [],
+ }
+ ],
+ echartsSeries3: [
+ {
+ name: '妫�娴嬩腑蹇冩娴嬫暟鎹�',
+ type: 'line',
+ data: []
+ }
+ ],
+ }
+ },
+ mounted() {
+ this.getInfo()
+ },
+ // 鏂规硶闆嗗悎
+ methods: {
+ getInfo () {
+ this.localData = this.comparisonData.localData === null ? ['', '', '', '', '','','', '', ''] : this.comparisonData.localData
+ this.localData = this.localData.map((number, index) => index === 7 ? `${Math.round(number * 100)}%` : number)
+ this.echartsSeries3[0].data = this.localData.slice(0, 5)
+ this.localULC = this.comparisonData.localULC
+ this.localLCL = this.comparisonData.localLCL
+ this.localAverage = this.comparisonData.localAverage
+ this.localRange = this.comparisonData.localRange
+ },
+ getInfo1 () {
+ this.echartsSeries1[0].data = []
+ this.supplierData = this.comparisonData1.supplierData === null ? ['', '', '', '', '','','', '', ''] : this.comparisonData1.supplierData
+ this.localData = this.comparisonData1.localData === null ? ['', '', '', '', '','','', '', ''] : this.comparisonData1.localData
+ this.localData = this.localData.map((number, index) => index === 7 ? `${Math.round(number * 100)}%` : number)
+ this.echartsSeries3[0].data = this.localData.slice(0, 5)
+ this.echartsSeries[0].data = this.supplierData
+ this.echartsSeries[1].data = this.localData
+ this.absoluteDeviation = this.comparisonData1.absoluteDeviation === null ? ['', '', '', '', '','','', '', ''] : this.comparisonData1.absoluteDeviation
+ this.echartsSeries2[1].data = this.absoluteDeviation
+ this.absoluteDeviation = this.absoluteDeviation.map(number => `${Math.round(number * 100)}%`) // 缁濆鍋忓樊鐧惧垎姣旇浆鎹�
+ this.average = this.comparisonData1.average === null ? ['', '', '', '', '','','', '', ''] : this.comparisonData1.average
+ this.echartsSeries2[0].data = this.average
+ this.average = this.average.map(number => `${Math.round(number * 100)}%`) // 骞冲潎鍊肩櫨鍒嗘瘮杞崲
+ this.supplierULC = this.comparisonData1.supplierULC === null ? ['', '', '', '', ''] : this.comparisonData1.supplierULC
+ this.echartsSeries1[0].data.push(this.supplierULC[0]) // 娴嬮噺鏁版嵁鏍囧噯宸姣旀煴鐘跺浘鏁版嵁
+ this.supplierLCL = this.comparisonData1.supplierLCL === null ? ['', '', '', '', ''] : this.comparisonData1.supplierLCL
+ this.echartsSeries1[1].data.push(this.supplierLCL[0]) // 娴嬮噺鏁版嵁鏍囧噯宸姣旀煴鐘跺浘鏁版嵁
+ this.supplierAverage = this.comparisonData1.supplierAverage === null ? ['', '', '', '', ''] : this.comparisonData1.supplierAverage
+ this.echartsSeries1[2].data.push(this.supplierAverage[0]) // 娴嬮噺鏁版嵁鏍囧噯宸姣旀煴鐘跺浘鏁版嵁
+ this.supplierRange = this.comparisonData1.supplierRange === null ? ['', '', '', '', ''] : this.comparisonData1.supplierRange
+ this.localULC = this.comparisonData1.localULC
+ this.echartsSeries1[0].data.push(this.localULC[0]) // 娴嬮噺鏁版嵁鏍囧噯宸姣旀煴鐘跺浘鏁版嵁
+ this.localLCL = this.comparisonData1.localLCL
+ this.echartsSeries1[1].data.push(this.localLCL[0]) // 娴嬮噺鏁版嵁鏍囧噯宸姣旀煴鐘跺浘鏁版嵁
+ this.localAverage = this.comparisonData1.localAverage
+ this.echartsSeries1[2].data.push(this.localAverage[0]) // 娴嬮噺鏁版嵁鏍囧噯宸姣旀煴鐘跺浘鏁版嵁
+ this.localRange = this.comparisonData1.localRange
+ },
+ submitForm () {
+ this.$refs['supplierForm'].validate((valid) => {
+ if (valid) {
+ const params = {
+ orderIds: this.selectRow.orderIds,
+ itemNames: this.selectRow.itemNames,
+ supplierDataList: Object.values(this.supplierForm)
+ }
+ this.$axios.post(this.$api.dataAnalysis.getRawSupplierCompare, params, {
+ headers: {
+ 'Content-Type': 'application/json'
+ },
+ noQs: true
+ }).then(res => {
+ if (res.code === 201) {
+ return
+ }
+ this.comparisonData1 = res.data
+ this.getInfo1()
+ })
+ } else {
+ console.log('error submit!!');
+ return false;
+ }
+ });
+ },
+ resetForm () {
+ this.$refs['supplierForm'].resetFields();
+ },
+ },
+}
+</script>
+
+<style scoped>
+.title {
+ height: 60px;
+ line-height: 60px;
+}
+.container {
+ width: calc(100% - 20px);
+ height: calc(100vh - 170px);
+ background-color: #fff;
+ padding: 10px;
+ overflow-y: auto;
+}
+.table {
+ width: 100%;
+}
+.thTitle {
+ background-color: #e0eaf5;
+ padding: 6px 2px;
+}
+.thBack {
+ text-align: center;
+ background-color: #e0eaf5;
+ padding: 2px;
+}
+.thBack2 {
+ text-align: center;
+ background-color: #e4f2da;
+ padding: 2px;
+}
+.tdData {
+ padding: 4px;
+ text-align: center;
+ font-size: 13px;
+ width: 10%;
+}
+.inspection-card{
+ width: 100%;
+ background: #FFFFFF;
+ margin-top: 10px;
+}
+.echartsTitle {
+ text-align: center;
+ padding-bottom: 10px;
+}
+</style>
diff --git a/src/components/echarts/echarts.vue b/src/components/echarts/echarts.vue
new file mode 100644
index 0000000..7b8e67c
--- /dev/null
+++ b/src/components/echarts/echarts.vue
@@ -0,0 +1,238 @@
+<template>
+ <div>
+ <div id="id" ref="chart" :style="chartStyle"></div>
+ </div>
+</template>
+
+<script>
+import * as echarts from 'echarts'
+import ResizeListener from 'element-resize-detector';
+
+export default {
+ name: 'EChart',
+ props: {
+ options: {
+ type: Object,
+ default: () => ({})
+ },
+ chartStyle: {
+ type: Object,
+ default: () => ({
+ height: '80%',
+ width: '100%'
+ })
+ },
+ dataset: {
+ type: Object,
+ default: () => {}
+ },
+ xAxis: {
+ type: Array,
+ default: () => []
+ },
+ yAxis: {
+ type: Array,
+ default: () => []
+ },
+ series: {
+ type: Array,
+ default: () => []
+ },
+ grid: {
+ type: Object,
+ default: () => ({})
+ },
+ legend: {
+ type: Object,
+ default: () => ({})
+ },
+ tooltip: {
+ type: Object,
+ default: () => ({})
+ },
+ lineColors: {
+ type: Array,
+ default: () => ['#00BAFF', '#3DE7C9', '#CCEDF0', '#FFB71C', '#FF5A5A']
+ },
+ barColors: {
+ type: Array,
+ default: () => ['#ff8800', '#3DE7C9', '#CCEDF0', '#FFB71C', '#FF5A5A']
+ },
+ loadingOption: {
+ type: Object,
+ default: () => ({
+ text: '鏁版嵁鍔犺浇涓�...',
+ color: '#00BAFF',
+ textColor: '#000',
+ maskColor: 'rgba(255, 255, 255, 0.8)',
+ zlevel: 0
+ })
+ }
+ },
+ data() {
+ return {
+ chartInstance: null,
+ }
+ },
+ watch: {
+ options: {
+ deep: true,
+ // immediate: true,
+ handler(val) {
+ this.$nextTick(() => {
+ this.renderChart()
+ })
+ },
+ },
+ series: {
+ deep: true,
+ // immediate: true,
+ handler(val) {
+ this.$nextTick(() => {
+ this.renderChart()
+ })
+ },
+ },
+ dataset: {
+ deep: true,
+ // immediate: true,
+ handler(val) {
+ this.$nextTick(() => {
+ this.renderChart()
+ })
+ },
+ },
+ xAxis: {
+ deep: true,
+ // immediate: true,
+ handler(val) {
+ this.$nextTick(() => {
+ this.renderChart()
+ })
+ },
+ },
+ yAxis: {
+ deep: true,
+ // immediate: true,
+ handler(val) {
+ this.$nextTick(() => {
+ this.renderChart()
+ })
+ },
+ },
+ grid: {
+ deep: true,
+ // immediate: true,
+ handler(val) {
+ this.$nextTick(() => {
+ this.renderChart()
+ })
+ },
+ },
+ legend: {
+ deep: true,
+ // immediate: true,
+ handler(val) {
+ this.$nextTick(() => {
+ this.renderChart()
+ })
+ },
+ },
+ tooltip: {
+ deep: true,
+ // immediate: true,
+ handler(val) {
+ this.$nextTick(() => {
+ this.renderChart()
+ })
+ },
+ },
+ lineColors: {
+ deep: true,
+ // immediate: true,
+ handler(val) {
+ this.$nextTick(() => {
+ this.renderChart()
+ })
+ },
+ },
+ barColors: {
+ deep: true,
+ // immediate: true,
+ handler(val) {
+ this.$nextTick(() => {
+ this.renderChart()
+ })
+ },
+ },
+ },
+ mounted() {
+ this.chartInstance = echarts.init(this.$refs.chart)
+ this.renderChart()
+ window.addEventListener('resize', this.windowResizeListener);
+ },
+ beforeDestroy() {
+ this.dispose()
+ },
+ methods: {
+ /* 褰撶獥鍙g缉鏀炬椂锛宔chart鍔ㄦ�佽皟鏁磋嚜韬ぇ灏� */
+ windowResizeListener() {
+ if (!this.chartInstance) return;
+ this.dispose()
+ this.chartInstance = echarts.init(this.$refs.chart)
+ this.renderChart()
+ this.chartInstance.resize();
+ },
+ renderChart() {
+ const option = {
+ backgroundColor: this.options.backgroundColor || '#fff',
+ xAxis: this.xAxis,
+ yAxis: this.yAxis,
+ dataset: this.dataset,
+ series: this.series,
+ grid: this.grid,
+ legend: this.legend,
+ tooltip: this.tooltip
+ }
+ // 鏍规嵁浼犲叆鐨勬暟鎹拰閰嶇疆鍙傛暟鐢熸垚鍥捐〃
+ this.generateChart(option)
+ },
+
+ generateChart(option) {
+ // 閰嶇疆鎶樼嚎鍥惧拰鏌辩姸鍥剧殑鏍峰紡
+ if (option.series && option.series.length > 0) {
+ option.series.forEach((s, index) => {
+ if (s.type === 'line') {
+ s.itemStyle = {
+ color: this.lineColors[index] || this.lineColors[0]
+ }
+ s.lineStyle = {
+ color: this.lineColors[index] || this.lineColors[0]
+ }
+ } else if (s.type === 'bar') {
+ s.itemStyle = {
+ color: this.barColors[index] || this.barColors[0]
+ }
+ }
+ })
+ }
+ this.chartInstance.clear()
+
+ // 娓叉煋鍥捐〃
+ this.chartInstance.setOption(option)
+ },
+
+ dispose() {
+ if (this.chartInstance) {
+ window.removeEventListener('resize', this.chartInstance.resize);//閿�姣佸浘琛ㄧ洃鍚簨浠�
+ this.chartInstance.dispose()
+ this.chartInstance = null
+ }
+ }
+ },
+}
+</script>
+
+<style scoped>
+/* 鍦ㄨ繖閲屽彲浠ュ啓鏍峰紡锛屾瘮濡傝缃浘琛ㄥ鍣ㄧ殑瀹藉害鍜岄珮搴� */
+</style>
diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue
index da89cf9..e9566ab 100644
--- a/src/layout/components/Navbar.vue
+++ b/src/layout/components/Navbar.vue
@@ -12,6 +12,16 @@
<div class="avatar-wrapper">
<img :src="avatar" class="user-avatar" />
<span class="userName">{{ nickName }}</span>
+ <el-dropdown class="avatar-container right-menu-item hover-effect" trigger="click">
+ <div class="avatar-wrapper">
+ <i class="el-icon-caret-bottom" />
+ </div>
+ <el-dropdown-menu slot="dropdown">
+ <router-link to="/user/profile">
+ <el-dropdown-item>涓汉涓績</el-dropdown-item>
+ </router-link>
+ </el-dropdown-menu>
+ </el-dropdown>
<img
class="logoout"
src="@/assets/images/logoout.png"
@@ -211,9 +221,6 @@
}
}
- .avatar-container {
- margin-right: 30px;
- }
}
}
</style>
diff --git a/src/router/index.js b/src/router/index.js
index f6b55c0..eb196f1 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -104,18 +104,19 @@
path: "customsInspection",
component: () =>
import("@/views/business/materialOrder/customsInspection"),
- name: "customsInspection",
+ name: "CustomsInspection",
meta: {
title: "鍘熸潗鏂欎笅鍗曡鎯�",
activeMenu: "/business/materialOrder",
+ keepAlive: true
},
},
{
// 閾滄潗鏂欎笅鍗�
path: "copperOrder",
component: () => import("@/views/business/materialOrder/copperOrder"),
- name: "copperOrder",
- meta: { title: "閾滄潗鏂欎笅鍗�", activeMenu: "/business/materialOrder" },
+ name: "CopperOrder",
+ meta: { title: "閾滄潗鏂欎笅鍗�", activeMenu: "/business/materialOrder",keepAlive: true },
},
],
},
@@ -131,8 +132,8 @@
path: "add",
component: () =>
import("@/views/business/productOrder/components/add.vue"),
- name: "add",
- meta: { title: "鎴愬搧涓嬪崟璇︽儏", activeMenu: "/business/materialOrder" },
+ name: "Add",
+ meta: { title: "鎴愬搧涓嬪崟璇︽儏", activeMenu: "/business/materialOrder",keepAlive: true },
},
],
},
diff --git a/src/views/business/materialOrder/copperOrder.vue b/src/views/business/materialOrder/copperOrder.vue
index 47ef83b..1ca4a5f 100644
--- a/src/views/business/materialOrder/copperOrder.vue
+++ b/src/views/business/materialOrder/copperOrder.vue
@@ -421,6 +421,7 @@
}
export default {
+ name: 'CopperOrder',
components: {},
dicts: ['check_type', 'urgency_level'],
data() {
@@ -723,7 +724,7 @@
this.noNeedCheckLoad = false
if (res.code == 201) return
this.$message.success('宸叉彁浜�')
- this.goBack()
+ this.closeOpenPage()
}).catch(e=>{
this.noNeedCheckLoad = false
})
@@ -1165,7 +1166,7 @@
if (res.code == 201) return
this.$message.success('宸叉彁浜�')
this.bsm3Dia = false;
- this.goBack()
+ this.closeOpenPage()
}).catch(e=>{
this.saveLoad = false
})
@@ -1781,8 +1782,16 @@
},
goBack () {
+ if (this.active == 1) {
+ this.$router.go(-1)
+ } else {
+ this.closeOpenPage()
+ }
+ },
+ closeOpenPage() {
this.$router.go(-1)
- }
+ this.$tab.closeOpenPage()
+ },
}
}
</script>
diff --git a/src/views/business/materialOrder/customsInspection.vue b/src/views/business/materialOrder/customsInspection.vue
index 79fc1b1..1f50604 100644
--- a/src/views/business/materialOrder/customsInspection.vue
+++ b/src/views/business/materialOrder/customsInspection.vue
@@ -388,7 +388,7 @@
width="32%">
<span>{{ dialogMessage }}</span>
<span slot="footer" class="dialog-footer">
- <el-button type="primary" @click="goBack()">纭� 瀹�</el-button>
+ <el-button type="primary" @click="dialogVisible= false,closeOpenPage()">纭� 瀹�</el-button>
</span>
</el-dialog>
<el-dialog
@@ -633,7 +633,7 @@
this.standardMethodListId = null
}
},
- mounted() {
+ created() {
this.active = this.$route.query.active
this.orderType = this.$route.query.orderType
this.currentId = this.$route.query.currentId
@@ -1017,7 +1017,7 @@
if (res.code == 201) return
this.noNeedCheckDia = false
this.$message.success('宸叉彁浜�')
- this.goBack()
+ this.closeOpenPage()
}).catch(e=>{
this.noNeedCheckLoad = false
})
@@ -1069,7 +1069,7 @@
if (res.code == 201) return
this.$message.success('宸叉彁浜�')
this.bsm3Dia = false;
- this.goBack()
+ this.closeOpenPage()
}).catch(e=>{
this.saveLoad = false
})
@@ -1832,8 +1832,16 @@
return row[property] === value;
},
goBack () {
+ if (this.active == 1) {
+ this.$router.go(-1)
+ } else {
+ this.closeOpenPage()
+ }
+ },
+ closeOpenPage() {
this.$router.go(-1)
- }
+ this.$tab.closeOpenPage()
+ },
}
}
</script>
diff --git a/src/views/business/productOrder/components/add.vue b/src/views/business/productOrder/components/add.vue
index 93e2d2c..d3e19c0 100644
--- a/src/views/business/productOrder/components/add.vue
+++ b/src/views/business/productOrder/components/add.vue
@@ -50,10 +50,10 @@
</el-select>
</el-form-item>
<el-form-item label="鍒跺崟浜�:">
- <el-input v-model="addObj.custom" disabled size="small"></el-input>
+ <el-input v-model="addObj.custom" disabled size="small" clearable></el-input>
</el-form-item>
<el-form-item label="濮旀墭鍗曚綅:" prop="company">
- <el-input v-model="addObj.company" disabled placeholder="閫夋嫨濮旀墭鍗曚綅" size="small" style="width: 200px">
+ <el-input v-model="addObj.company" disabled placeholder="閫夋嫨濮旀墭鍗曚綅" size="small" style="width: 208px">
<template slot="append">
<el-button slot="append" :disabled="active>1&&tabIndex!=4" icon="el-icon-search"
@click="openCompanyList"></el-button>
@@ -69,14 +69,14 @@
</el-select>
</el-form-item>
<el-form-item label="鏍峰搧鍚嶇О:" prop="sample">
- <el-input v-model="addObj.sample" disabled size="small" style="width: 178px">
+ <el-input v-model="addObj.sample" disabled size="small" style="width: 208px">
<template slot="append"><el-button slot="append" :disabled="active>1&&tabIndex!=4" icon="el-icon-search"
@click="selectStandardTree = true"></el-button></template>
</el-input>
</el-form-item>
- <el-form-item label="鏍峰搧鏁伴噺:" prop="sampleNum">
+ <el-form-item label="鏍峰搧鏁伴噺:" prop="sampleNum" style="margin-right: 0">
<el-input-number v-model="addObj.sampleNum" :disabled="active>1" :max="100" :min="1" :precision="0"
- size="small" style="width: 65%;" @change="addStandardTree"></el-input-number>
+ size="small" @change="addStandardTree"></el-input-number>
</el-form-item>
<el-form-item label="鏍峰搧鐘舵��:" prop="sampleStatus">
<el-select v-model="addObj.sampleStatus" :disabled="active>1&&tabIndex!=4" size="small">
@@ -87,21 +87,9 @@
<el-input v-model="addObj.testQuantity" :disabled="active>1&&tabIndex!=4" clearable size="small"></el-input>
</el-form-item>
<el-form-item label="鏉ユ牱鏂瑰紡:" prop="formType">
- <el-select v-model="addObj.formType" :disabled="active>1&&tabIndex!=4" size="small">
+ <el-select v-model="addObj.formType" :disabled="active>1&&tabIndex!=4" size="small" clearable>
<el-option v-for="(a,ai) in dict.type.form_type" :key="ai" :label="a.label" :value="a.value"></el-option>
</el-select>
- </el-form-item>
- <el-form-item label="鎶ュ憡鍙戦�佹柟寮�:">
- <el-radio-group v-model="addObj.send" :disabled="active>1&&tabIndex!=4">
- <el-radio :label="1">鑷彇</el-radio>
- <el-radio :label="0">鍏朵粬</el-radio>
- </el-radio-group>
- </el-form-item>
- <el-form-item label="鏍峰搧澶勭悊鏂瑰紡:">
- <el-radio-group v-model="addObj.processing" :disabled="active>1&&tabIndex!=4">
- <el-radio :label="0">濮旀墭鍗曚綅鍙栧洖</el-radio>
- <el-radio :label="1">瀹為獙瀹ゅ鐞�</el-radio>
- </el-radio-group>
</el-form-item>
<el-form-item label="鐢熶骇鍗曚綅:" prop="production">
<el-input v-model="addObj.production" :disabled="active>1&&tabIndex!=4" clearable placeholder="璇疯緭鍏�"
@@ -111,10 +99,22 @@
<el-input v-model="addObj.productionEn" :disabled="active>1&&tabIndex!=4" clearable placeholder="璇疯緭鍏�"
size="small"></el-input>
</el-form-item>
+ <el-form-item label="鏍峰搧澶勭悊鏂瑰紡:">
+ <el-radio-group v-model="addObj.processing" :disabled="active>1&&tabIndex!=4" size="mini">
+ <el-radio :label="0" border style="margin-right: 0">濮旀墭鍗曚綅鍙栧洖</el-radio>
+ <el-radio :label="1" border>瀹為獙瀹ゅ鐞�</el-radio>
+ </el-radio-group>
+ </el-form-item>
<el-form-item label="鏄惁鐣欐牱:">
- <el-radio-group v-model="addObj.isLeave" :disabled="active>1&&tabIndex!=4">
- <el-radio :label="0">涓嶇暀鏍�</el-radio>
- <el-radio :label="1">鐣欐牱</el-radio>
+ <el-radio-group v-model="addObj.isLeave" border :disabled="active>1&&tabIndex!=4" size="mini">
+ <el-radio :label="0" border style="margin-right: 0">涓嶇暀鏍�</el-radio>
+ <el-radio :label="1" border>鐣欐牱</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ <el-form-item label="鎶ュ憡鍙戦�佹柟寮�:">
+ <el-radio-group v-model="addObj.send" :disabled="active>1&&tabIndex!=4" size="mini">
+ <el-radio :label="1" border style="margin-right: 0">鑷彇</el-radio>
+ <el-radio :label="0" border>鍏朵粬</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="濮旀墭浜�:">
@@ -125,7 +125,7 @@
</el-form-item>
<el-form-item label="澶囨敞:">
<el-input v-model="addObj.remark" :autosize="{ minRows: 2, maxRows: 2}" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '璇疯緭鍏�'" clearable
- size="small" type="textarea"></el-input>
+ size="small" style="width: 100%" type="textarea"></el-input>
</el-form-item>
<el-form-item label="澶囨敞鑻辨枃:">
<el-input v-model="addObj.remarkEn" :autosize="{ minRows: 2, maxRows: 2}" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '璇疯緭鍏�'" clearable
@@ -176,10 +176,9 @@
</el-form-item>
</el-form>
</div>
- <div style="display: flex;align-items: center">
+ <div style="display: flex;align-items: center;margin-bottom: 10px">
<span style="width: 150px;font-size: 14px;text-align: right;">鐗规畩鏍囧噯锛�</span>
- <el-input v-model="specialStandardMethod" :disabled="!isSpecial" clearable
- size="small"></el-input>
+ <el-input v-model="specialStandardMethod" :disabled="!isSpecial" clearable size="small"></el-input>
<el-button v-show="active==1" size="small" style="margin-left: 10px"
type="primary" @click="editSpecial">缂栬緫</el-button>
</div>
@@ -432,7 +431,7 @@
</div>
<span slot="footer" class="dialog-footer">
<el-row>
- <el-button @click="issuedDialogVisible=false;goBack">鍙� 娑�</el-button>
+ <el-button @click="issuedDialogVisible=false;closeOpenPage">鍙� 娑�</el-button>
<el-button :loading="upLoad" type="primary" @click="submitForm2">纭� 瀹�</el-button>
</el-row>
</span>
@@ -560,6 +559,7 @@
import {selectCustomPageList} from "@/api/system/customer";
export default {
+ name: 'Add',
components: {
limsTable,
cableConfig,
@@ -1210,7 +1210,7 @@
this.saveLoad = false
this.$message.success('宸叉彁浜�')
this.bsm3Dia = false;
- this.goBack()
+ this.closeOpenPage()
}).catch(e=>{
this.saveLoad = false
})
@@ -1220,7 +1220,7 @@
this.saveLoad = false
this.$message.success('宸叉彁浜�')
this.bsm3Dia = false;
- this.goBack()
+ this.closeOpenPage()
}).catch(e=>{
this.saveLoad = false
})
@@ -1283,7 +1283,7 @@
this.$message.success('鎻愪氦鎴愬姛')
this.upLoad = false
this.issuedDialogVisible = false
- this.goBack()
+ this.closeOpenPage()
}).catch(e => {
this.$message.error('鎻愪氦澶辫触')
this.upLoad = false
@@ -1921,16 +1921,12 @@
state: 2,
id: this.currentId,
tell: this.tell
- }, {
- headers: {
- 'Content-Type': 'application/json'
- }
}).then(res => {
this.noLoading = false;
this.tell = '';
this.$message.success('鎻愪氦鎴愬姛')
this.issuedDialogVisible = false;
- this.goBack()
+ this.closeOpenPage()
})
},
filterHandler(value, row, column) {
@@ -2143,8 +2139,16 @@
this.productList0.splice(index,1)
},
goBack () {
+ if (this.active == 1) {
+ this.$router.go(-1)
+ } else {
+ this.closeOpenPage()
+ }
+ },
+ closeOpenPage() {
this.$router.go(-1)
- }
+ this.$tab.closeOpenPage()
+ },
}
}
</script>
diff --git a/src/views/statisticalCharts/itemInspectionAnalysis/index.vue b/src/views/statisticalCharts/itemInspectionAnalysis/index.vue
new file mode 100644
index 0000000..29616cd
--- /dev/null
+++ b/src/views/statisticalCharts/itemInspectionAnalysis/index.vue
@@ -0,0 +1,535 @@
+<template>
+ <div class="app-container">
+ <div v-if="!isShowDataCom">
+ <el-form ref="entity" size="small" :inline="true">
+ <el-form-item style="width: 16%;">
+ <el-date-picker
+ v-model="datePicker"
+ end-placeholder="缁撴潫鏃ユ湡"
+ format="yyyy-MM-dd"
+ placeholder="閫夋嫨鏃ユ湡"
+ range-separator="鑷�"
+ size="small"
+ start-placeholder="寮�濮嬫棩鏈�"
+ style="width: 100%;"
+ type="daterange"
+ value-format="yyyy-MM-dd">
+ </el-date-picker>
+ </el-form-item>
+ <el-form-item label="鏍峰搧鍚嶇О" prop="sampleName">
+ <el-input v-model="sampleName" clearable placeholder="璇疯緭鍏ユ牱鍝佸悕绉�" size="small"></el-input>
+ </el-form-item>
+ <el-form-item label="鍨嬪彿" prop="modelName">
+ <el-input v-model="modelName" clearable placeholder="璇疯緭鍏ュ瀷鍙�" size="small"></el-input>
+ </el-form-item>
+ <el-form-item label="渚涘簲鍟嗗悕绉�" prop="supplierName">
+ <el-input v-model="supplierName" clearable placeholder="璇疯緭鍏ヤ緵搴斿晢鍚嶇О" size="small"></el-input>
+ </el-form-item>
+ <el-form-item label="妫�楠岄」鍚嶇О" prop="supplierName">
+ <el-select v-model="itemNames" :loading="selectLoading" clearable multiple placeholder="璇烽�夋嫨"
+ size="small" style="width: 90%;" @focus="getItemList">
+ <el-option
+ v-for="item in itemNamesList"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item>
+ <el-button size="small" type="primary" @click="changeData">鏌ヨ</el-button>
+ </el-form-item>
+ </el-form>
+ </div>
+ <div v-if="!isShowDataCom" style="overflow-y: auto;height: calc(100% - 70px);overflow-x: hidden">
+ <el-row>
+ <el-col :span="24">
+ <div class="inspection-card">
+ <div style="display: flex;align-items: center;margin-bottom: 10px;justify-content: space-between;">
+ <div>鍘熸潗鏂欓」妫�鍒嗘瀽鍒楄〃</div>
+ <el-button size="small" type="primary" @click="openShowData">鏌ョ湅鏁版嵁鍒嗘瀽</el-button>
+ </div>
+ <lims-table :tableData="editTableData" :column="editColumn"
+ height="400" key="tableData" :isSelection="true"
+ :handleSelectionChange="handleSelectionChange"
+ :tableLoading="editLoading"></lims-table>
+ </div>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="6" style="padding-top: 14px">
+ <div style="display: flex;margin-left: 10px;align-items: center">
+ <span style="width: 100px">鍒嗙粍绫诲瀷锛�</span>
+ <el-select v-model="groupType" clearable placeholder="璇烽�夋嫨"
+ size="small"
+ style="width: 90%;" @change="getBarInfo">
+ <el-option
+ v-for="item in groupTypeList"
+ :key="item.value"
+ :label="item.label"
+ :value="item.value">
+ </el-option>
+ </el-select>
+ </div>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="24">
+ <div class="inspection-card">
+ <div class="title">妫�楠岄」鏁版嵁瀵规瘮</div>
+ <Echarts ref="chart"
+ :chartStyle="chartStyle"
+ :dataset="dataset"
+ :grid="grid"
+ :options="echartsOptions"
+ :series="echartsSeries"
+ :tooltip="tooltip"
+ :xAxis="xAxis"
+ :yAxis="yAxis"
+ style="height: 40vh;"></Echarts>
+ </div>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="24">
+ <div class="inspection-card">
+ <div class="title">鍘熸潗鏂欓」妫�鍚堟牸鐜�</div>
+ <Echarts ref="chart"
+ :chartStyle="chartStyle"
+ :dataset="dataset1"
+ :grid="grid"
+ :options="echartsOptions1"
+ :series="echartsSeries1"
+ :tooltip="tooltip"
+ :xAxis="xAxis"
+ :yAxis="yAxis1"
+ style="height: 40vh;"></Echarts>
+ </div>
+ </el-col>
+ </el-row>
+ </div>
+ <el-dialog :visible.sync="dataDialogVisible" title="鏁版嵁鏌ョ湅" width="80%">
+ <div v-if="dataDialogVisible" style="height: 70vh;overflow-y: auto;">
+ <lims-table :tableData="tableData" :column="column"
+ @pagination="pagination" key="tableData"
+ :page="page" :tableLoading="tableLoading"></lims-table>
+ </div>
+ </el-dialog>
+ <DataComparison v-if="isShowDataCom" :comparisonData="comparisonData"
+ :selectRow="selectRow" @goBack="goBack"></DataComparison>
+ </div>
+</template>
+
+<script>
+import Echarts from "@/components/echarts/echarts.vue";
+import DataComparison from '@/components/echarts/DataComparison.vue'
+import limsTable from "@/components/Table/lims-table.vue";
+import {
+ getRawItemNames,
+ getRawProductAnalysis,
+ getRawProductAnalysisAllList,
+ getRawProductAnalysisRawPass, getRawSupplierCompare
+} from "@/api/statisticalCharts/dataAnalysis";
+import {selectSampleAndProductByOrderId} from "@/api/business/rawMaterialOrder";
+
+export default {
+ name: "ItemInspectionAnalysis",
+ // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+ components: {limsTable, Echarts, DataComparison},
+ data() {
+ // 杩欓噷瀛樻斁鏁版嵁
+ return {
+ selectChangeRows: [], // 閫変腑鐨勬暟鎹�
+ groupTypeList: [
+ {label: '鏍峰搧', value: '0'},
+ {label: '鍚屼竴鍘傚, 鍚屼竴鍨嬪彿, 涓嶅悓鎵规', value: '1'},
+ {label: '鍚屼竴鍨嬪彿, 涓嶅悓鍘傚', value: '2'},
+ ],
+ itemNames: [], // 妫�楠岄」鍚嶇О
+ itemNamesList: [],
+ selectLoading: false,
+ datePicker: [], // 鏃堕棿
+ groupType: '', // 鍒嗙粍
+ beginDate: '',
+ endDate: '',
+ sampleName: '', // 鏍峰搧鍚嶇О
+ modelName: '', // 鍨嬪彿
+ supplierName: '', // 渚涘簲鍟嗗悕绉�
+ grid: {
+ left: '3%',
+ right: '4%',
+ bottom: '3%',
+ containLabel: true
+ },
+ echartsOptions: {},
+ echartsOptions1: {},
+ dataset: {
+ dimensions: [],
+ source: [],
+ },
+ dataset1: {
+ dimensions: [],
+ source: [],
+ },
+ xAxis: [{ type: 'category' }],
+ yAxis: [{}],
+ yAxis1: [{
+ axisLabel: {
+ formatter: '{value} %'
+ }
+ }],
+ echartsSeries: [],
+ echartsSeries1: [],
+ tooltip: {},
+ chartStyle: {
+ width: '100%',
+ height: '96%' // 璁剧疆鍥捐〃瀹瑰櫒鐨勯珮搴�
+ },
+ editColumn: [
+ {
+ label: '鎵瑰彿',
+ minWidth: '120px',
+ prop: 'updateBatchNo'
+ }, {
+ label: '濮旀墭缂栧彿',
+ minWidth: '120px',
+ prop: 'entrustCode'
+ }, {
+ label: '闆朵欢鍙�',
+ minWidth: '120px',
+ prop: 'partNo'
+ }, {
+ label: '闆朵欢鎻忚堪',
+ minWidth: '120px',
+ prop: 'partDesc'
+ }, {
+ label: '渚涘簲鍟嗗悕绉�',
+ minWidth: '120px',
+ prop: 'supplierName',
+ }, {
+ dataType: 'tag',
+ label: '妫�楠岀姸鎬�',
+ prop: 'inspectStatus',
+ minWidth: '120px',
+ formatData: (params) => {
+ if (params == 0) {
+ return '妫�楠屼腑'
+ } else if (params == 1) {
+ return '鍚堟牸'
+ } else if (params == 2) {
+ return '涓嶅悎鏍�'
+ } else if (params == 3) {
+ return '鏈笅鍗�'
+ } else if (params == 4) {
+ return '璁╂鏀捐'
+ }
+ },
+ formatType: (params) => {
+ if (params == 1 || params == 4) {
+ return 'success'
+ } else if (params == 3) {
+ return 'warning'
+ } else if (params == 0 || params == 2) {
+ return 'danger'
+ }
+ }
+ }, {
+ label: '鏍峰搧鍚嶇О',
+ minWidth: '300px',
+ prop: 'sampleName'
+ }, {
+ label: '鏍峰搧鍨嬪彿',
+ minWidth: '300px',
+ prop: 'sampleModel'
+ },{
+ label: '涓嬪彂鏃堕棿',
+ minWidth: '120px',
+ prop: 'sendTime'
+ },{
+ label: '鎶佃揪鐨勯噰璐暟閲�',
+ minWidth: '130px',
+ prop: 'qtyArrived'
+ },{
+ label: '鍗曚綅',
+ minWidth: '120px',
+ prop: 'buyUnitMeas'
+ },
+ {
+ dataType: 'action',
+ width: '80px',
+ label: '鎿嶄綔',
+ fixed: 'right',
+ operation: [
+ {
+ name: '鏁版嵁鏌ョ湅',
+ type: 'text',
+ clickFun: (row) => {
+ this.handleDataLook(row);
+ },
+ },
+ ]
+ }
+ ],
+ editTableData: [],
+ editLoading: false,
+ dataDialogVisible: false,
+ tableData: [],
+ tableLoading: false,
+ column: [
+ {label: '鏍峰搧缂栧彿', prop: 'sampleCode'},
+ {label: '鏍峰搧鍚嶇О', prop: 'sample'},
+ {label: '妫�楠岄」鍒嗙被', prop: 'inspectionItemClass'},
+ {label: '妫�楠岄」', prop: 'inspectionItem'},
+ {label: '妫�楠屽瓙椤�', prop: 'inspectionItemSubclass'},
+ {label: '鍗曚綅', prop: 'unit'},
+ {label: '鏍峰搧鍨嬪彿', prop: 'model'},
+ {label: '鏉′欢', prop: 'radius'},
+ {label: '鐢电紗鏍囪瘑', prop: 'cableTag'},
+ {label: '璇曢獙瑕佹眰', prop: 'tell'},
+ {label: '妫�楠岀粨鏋�', prop: 'lastValue'},
+ {
+ dataType: 'tag',
+ label: '缁撴灉鍒ゅ畾',
+ prop: 'insResult',
+ formatData: (params) => {
+ if (params == 1) {
+ return '鍚堟牸'
+ } else if (params == 0) {
+ return '涓嶅悎鏍�'
+ } else if (params == 3) {
+ return '涓嶅垽瀹�'
+ } else {
+ return null
+ }
+ },
+ formatType: (params) => {
+ if (params == 1) {
+ return 'success'
+ } else if (params == 0) {
+ return 'danger'
+ } else if (params == 3) {
+ return ''
+ } else {
+ return null
+ }
+ }
+ }
+ ],
+ page: {
+ total:0,
+ size:10,
+ current:1
+ },
+ currentRow: {},
+ isShowDataCom: false,
+ comparisonData: {},
+ selectRow: {},
+ }
+ },
+ mounted() {
+ // this.getBar()
+ },
+ // 鏂规硶闆嗗悎
+ methods: {
+ getBarInfo (val) {
+ if (val === '1') {
+ if (!this.modelName || !this.supplierName) {
+ this.$message.warning('鍨嬪彿鎴栦緵搴斿晢涓嶈兘涓虹┖')
+ this.groupType = ''
+ return
+ }
+ } else if (val === '2') {
+ if (!this.modelName) {
+ this.$message.warning('鍨嬪彿涓嶈兘涓虹┖')
+ this.groupType = ''
+ return
+ }
+ if (this.supplierName) {
+ this.$message.warning('涓嶅彲閫変緵搴斿晢鍚嶇О')
+ this.groupType = ''
+ return
+ }
+ }
+ this.getBar()
+ this.getBar1()
+ },
+ // 鑾峰彇鍚堟牸鐜囧浘琛ㄦ暟鎹�
+ getBar() {
+ this.echartsSeries = []
+ const params = {
+ beginDate: this.beginDate,
+ endDate: this.endDate,
+ sampleName: this.sampleName,
+ modelName: this.modelName,
+ supplierName: this.supplierName,
+ itemNames: this.itemNames,
+ groupType: this.groupType,
+ }
+ getRawProductAnalysis(params).then((res) => {
+ if (res.data === null) {
+ this.$message.warning('鏆傛棤鏁版嵁')
+ return
+ }
+ for (let i = 0; i < res.data.itemNames.length; i++) {
+ this.echartsSeries.push({type: 'line', label: {
+ show: true,
+ position: 'top'
+ },})
+ }
+ this.dataset.dimensions = this.HaveJson(res.data.itemNames)
+ this.dataset.dimensions.unshift('product')
+ this.dataset.source = this.HaveJson(res.data.productList)
+
+ })
+ },
+ getBar1() {
+ this.echartsSeries1 = []
+ const params = {
+ beginDate: this.beginDate,
+ endDate: this.endDate,
+ sampleName: this.sampleName,
+ modelName: this.modelName,
+ supplierName: this.supplierName,
+ itemNames: this.itemNames,
+ groupType: this.groupType,
+ }
+ getRawProductAnalysisRawPass(params).then((res) => {
+ if (res.data === null) {
+ this.$message.warning('鏆傛棤鏁版嵁')
+ return
+ }
+ for (let i = 0; i < res.data.itemNames.length; i++) {
+ this.echartsSeries1.push({type: 'line',tooltip: {
+ valueFormatter: function (value) {
+ return value + '%';
+ }
+ },label: {
+ show: true,
+ position: 'top',
+ formatter: (params) => params.value[params.dimensionNames[params.encode.y[0]]] + '%'
+ },})
+ }
+ this.dataset1.dimensions = this.HaveJson(res.data.itemNames)
+ this.dataset1.dimensions.unshift('product')
+ this.dataset1.source = this.HaveJson(res.data.productList)
+
+ })
+ },
+ // 鏁版嵁鏌ョ湅
+ handleDataLook(row) {
+ this.dataDialogVisible = true;
+ this.currentRow = row
+ this.refreshTable(row)
+ },
+ // 鏌ヨ鍥炶皟
+ refreshTable(row) {
+ selectSampleAndProductByOrderId({id: row.id}).then(res => {
+ this.tableLoading = false
+ if (res.code === 200) {
+ this.tableData = res.data.records
+ this.page.total = res.data.total
+ }
+ }).catch(err => {
+ this.tableLoading = false
+ })
+ },
+ pagination (page) {
+ this.page.size = page.limit
+ this.refreshTable(this.currentRow)
+ },
+ changeData () {
+ if (this.datePicker !== null && this.datePicker.length > 0) {
+ this.beginDate = this.datePicker[0] + ' 00:00:00'
+ this.endDate = this.datePicker[1] + ' 23:59:59'
+ } else {
+ this.beginDate = ''
+ this.endDate = ''
+ }
+ this.getBar()
+ this.getBar1()
+ this.getTableData()
+ },
+ getTableData () {
+ this.editLoading = true
+ const params = {
+ beginDate: this.beginDate,
+ endDate: this.endDate,
+ sampleName: this.sampleName,
+ modelName: this.modelName,
+ supplierName: this.supplierName,
+ itemNames: this.itemNames,
+ }
+ getRawProductAnalysisAllList(params).then(res => {
+ this.editLoading = false
+ this.editTableData = res.data
+ }).catch(() => {
+ this.editLoading = false
+ })
+ },
+ // 鑾峰彇妫�楠岄」涓嬫媺妗�
+ getItemList () {
+ this.selectLoading = true
+ this.itemNamesList = []
+ const params = {
+ beginDate: this.beginDate,
+ endDate: this.endDate,
+ sampleName: this.sampleName,
+ modelName: this.modelName,
+ supplierName: this.supplierName,
+ }
+ getRawItemNames(params).then((res) => {
+ this.selectLoading = false
+ res.data.map(val => {
+ const obj = Object.assign({
+ label: val,
+ value: val,
+ })
+ this.itemNamesList.push(obj)
+ })
+ }).catch(() => {
+ this.selectLoading = false
+ })
+ },
+ goBack () {
+ this.isShowDataCom = false
+ },
+ openShowData () {
+ if (this.selectChangeRows.length !== 5) {
+ this.$message.warning('璇烽�夋嫨5鏉℃暟鎹�')
+ return
+ }
+ if (this.itemNames.length !== 1) {
+ this.$message.warning('鍙兘閫夋嫨1椤规楠岄」鍚嶇О')
+ return
+ }
+ let ids = []
+ let itemNames = []
+ this.selectChangeRows.forEach(item => {
+ ids.push(item.enterOrderId)
+ })
+ this.itemNames.forEach(item => {
+ itemNames.push(item)
+ })
+ const params = {
+ orderIds: ids,
+ itemNames: itemNames
+ }
+ getRawSupplierCompare(params).then(res => {
+ this.comparisonData = res.data
+ this.selectRow = params
+ this.isShowDataCom = true
+ })
+ },
+ handleSelectionChange (val) {
+ this.selectChangeRows = val
+ },
+ },
+}
+</script>
+
+<style scoped>
+.inspection-card{
+ width: 100%;
+ margin-top: 10px;
+}
+</style>
diff --git a/src/views/statisticalCharts/qualificationRateStatistics/index.vue b/src/views/statisticalCharts/qualificationRateStatistics/index.vue
new file mode 100644
index 0000000..4e8ae3c
--- /dev/null
+++ b/src/views/statisticalCharts/qualificationRateStatistics/index.vue
@@ -0,0 +1,448 @@
+<template>
+ <div class="app-container">
+ <el-row>
+ <el-col :span="4">
+ <el-radio-group v-model="dateType" @change="changeDate">
+ <el-radio-button label="1">鏈懆</el-radio-button>
+ <el-radio-button label="2">鏈湀</el-radio-button>
+ <el-radio-button label="3">浠婂勾</el-radio-button>
+ </el-radio-group>
+ </el-col>
+ <el-col :span="20">
+ <el-form ref="entity" size="small" :inline="true">
+ <el-form-item style="width: 20%;">
+ <el-date-picker
+ v-model="datePicker"
+ end-placeholder="缁撴潫鏃ユ湡"
+ format="yyyy-MM-dd"
+ placeholder="閫夋嫨鏃ユ湡"
+ range-separator="鑷�"
+ size="small"
+ start-placeholder="寮�濮嬫棩鏈�"
+ type="daterange"
+ style="width: 100%;"
+ value-format="yyyy-MM-dd"
+ @change="changeDatePicker">
+ </el-date-picker>
+ </el-form-item>
+ <el-form-item label="鏍峰搧鍚嶇О" prop="sampleName">
+ <el-input v-model="sampleName" clearable placeholder="璇疯緭鍏ユ牱鍝佸悕绉�" size="small" @change="changeDate"></el-input>
+ </el-form-item>
+ <el-form-item label="鍨嬪彿" prop="modelName">
+ <el-input v-model="modelName" clearable placeholder="璇疯緭鍏ュ瀷鍙�" size="small" @change="changeDate"></el-input>
+ </el-form-item>
+ <el-form-item label="渚涘簲鍟嗗悕绉�" prop="supplierName">
+ <el-input v-model="supplierName" clearable placeholder="璇疯緭鍏ヤ緵搴斿晢鍚嶇О" size="small" @change="changeDate"></el-input>
+ </el-form-item>
+ </el-form>
+ </el-col>
+ </el-row>
+ <el-row :gutter="20">
+ <el-col :span="8">
+ <div class="pie-card">
+ <div class="title">鍘熸潗鏂欏悎鏍肩巼</div>
+ <span class="data">{{passRate}}</span>
+ <Echarts ref="chart"
+ :legend="pieLegend"
+ :series="materialPieSeries"
+ :tooltip="pieTooltip"
+ style="height: 36vh;"></Echarts>
+ </div>
+ </el-col>
+ <el-col :span="8">
+ <div class="pie-card">
+ <div class="title"><span style="color: #F56C6C">鏈湀</span>妫�楠岀被鍨嬫暟閲�</div>
+ <Echarts ref="chart"
+ :chartStyle="chartStyle2"
+ :legend="pieLegend"
+ :series="materialPieSeries1"
+ :tooltip="pieTooltip"
+ style="height: 36vh;"></Echarts>
+ </div>
+ </el-col>
+ <el-col :span="8">
+ <div class="pie-card">
+ <div class="title">鍘熸潗鏂�<span style="color: #F56C6C">鏈湀</span>涓�<span style="color: #F56C6C">涓婃湀</span>鍚堟牸鐜囧姣�</div>
+ <Echarts ref="chart"
+ :barColors="barColors2"
+ :chartStyle="chartStyle"
+ :grid="grid"
+ :legend="barLegend"
+ :series="barSeries"
+ :tooltip="tooltip"
+ :xAxis="xAxis1"
+ :yAxis="yAxis1"
+ style="height: 36vh;"></Echarts>
+ </div>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col :span="24">
+ <div class="inspection-card">
+ <div class="title">鍚堟牸鐜�</div>
+ <Echarts ref="chart"
+ :barColors="barColors"
+ :grid="grid"
+ :legend="legend"
+ :lineColors="lineColors"
+ :options="echartsOptions"
+ :series="echartsSeries"
+ :tooltip="tooltip"
+ :xAxis="xAxis"
+ :yAxis="yAxis"
+ style="height: 40vh;"></Echarts>
+ </div>
+ </el-col>
+ </el-row>
+ </div>
+</template>
+
+<script>
+import Echarts from "@/components/echarts/echarts.vue";
+import {
+ getOrderTypeCookie,
+ getRawPassRateByBarChart,
+ getRawPassRateByCake,
+ getRawUpMonth
+} from "@/api/statisticalCharts/dataAnalysis";
+
+export default {
+ name: "QualificationRateStatistics",
+ // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+ components: {Echarts},
+ data() {
+ // 杩欓噷瀛樻斁鏁版嵁
+ return {
+ dateType: '1',
+ datePicker: [],
+ beginDate: '',
+ endDate: '',
+ sampleName: '',
+ modelName: '',
+ supplierName: '',
+ echartsOptions: {
+ title: {
+ text: '绀轰緥鍥捐〃',
+ left: 'center'
+ }
+ },
+ xAxis: [
+ {
+ type: 'category',
+ data: [],
+ axisPointer: {
+ type: 'shadow'
+ }
+ }
+ ],
+ yAxis: [
+ {
+ type: 'value',
+ name: '鎬绘暟',
+ min: 0,
+ },
+ {
+ type: 'value',
+ name: '鍚堟牸鐜�',
+ min: 0,
+ max: 100,
+ axisLabel: {
+ formatter: '{value} %'
+ }
+ }
+ ],
+ echartsSeries: [
+ {
+ name: '鎬绘暟',
+ type: 'bar',
+ data: [],
+ label: {
+ show: true,
+ position: 'top'
+ },
+ },
+ {
+ name: '鍚堟牸鐜�',
+ type: 'line',
+ smooth: true,
+ tooltip: {
+ valueFormatter: function (value) {
+ return value + ' %';
+ }
+ },
+ label: {
+ show: true,
+ position: 'top',
+ formatter: function (value) {
+ return value.value + ' %';
+ },
+ distance: 14
+ },
+ yAxisIndex: 1,
+ data: []
+ },
+ ],
+ grid: {
+ left: '3%',
+ right: '4%',
+ bottom: '3%',
+ containLabel: true
+ },
+ legend: {
+ data: ['鎬绘暟','鍚堟牸鐜�']
+ },
+ tooltip: {
+ trigger: 'axis',
+ axisPointer: {
+ type: 'shadow'
+ }
+ },
+ lineColors: ['#409EFF'],
+ barColors: ['#E6A23C'],
+ barColors2: ['#adde8b'],
+ pieTooltip: {
+ trigger: 'item'
+ },
+ pieLegend: {
+ orient: 'vertical',
+ right: 20,
+ top: 'middle',
+ },
+ materialPieSeries: [
+ {
+ name: 'Access From',
+ type: 'pie',
+ radius: ['40%', '70%'],
+ right: '22%',
+ avoidLabelOverlap: false,
+ itemStyle: {
+ borderRadius: 5,
+ borderColor: '#fff',
+ borderWidth: 2
+ },
+ label: {
+ alignTo: 'edge',
+ formatter: '{name|{b}}\n{time|{c}}',
+ edgeDistance: 10,
+ lineHeight: 15,
+ rich: {
+ time: {
+ fontSize: 10,
+ color: '#999'
+ }
+ },
+ },
+ labelLine: {
+ length: 20,
+ length2: 40,
+ },
+ data: [
+ { value: 0, name: '涓嶅悎鏍兼暟閲�' },
+ { value: 0, name: '鍚堟牸鏁伴噺' },
+ ]
+ }
+ ],
+ materialPieSeries1: [
+ {
+ name: 'Access From',
+ type: 'pie',
+ radius: ['40%', '70%'],
+ right: '22%',
+ avoidLabelOverlap: false,
+ itemStyle: {
+ borderRadius: 5,
+ borderColor: '#fff',
+ borderWidth: 2
+ },
+ label: {
+ alignTo: 'edge',
+ formatter: '{name|{b}}\n{time|{c}}',
+ edgeDistance: 10,
+ lineHeight: 15,
+ rich: {
+ time: {
+ fontSize: 10,
+ color: '#999'
+ }
+ },
+ },
+ labelLine: {
+ length: 20,
+ length2: 50,
+ },
+ data: [
+ { value: 0, name: '濮旀墭妫�楠�' },
+ { value: 0, name: '杩涘巶妫�楠�' },
+ { value: 0, name: '瀛e害妫�楠�' },
+ { value: 0, name: '鎶芥牱' },
+ ]
+ }
+ ],
+ barLegend: {},
+ chartStyle: {
+ width: '90%',
+ height: '100%',
+ },
+ chartStyle2: {
+ width: '90%',
+ height: '80%',
+ },
+ xAxis1: [
+ {
+ type: 'value',
+ min: 0,
+ max: 100,
+ axisLabel: {
+ formatter: '{value} %'
+ }
+ }
+ ],
+ yAxis1: [
+ {
+ type: 'category',
+ data: []
+ }
+ ],
+ barSeries: [
+ {
+ type: 'bar',
+ data: [],
+ tooltip: {
+ valueFormatter: function (value) {
+ return value + ' %';
+ }
+ },
+ label: {
+ show: true,
+ formatter: (params) => Math.round(params.value * 100) / 100 + '%'
+ }
+ },
+ ],
+ tableData: [],
+ passRate: '',
+ sum: '',
+ }
+ },
+ mounted() {
+ this.getBar()
+ this.getRawPass()
+ this.getOrderType()
+ this.getPassRateCom()
+ },
+ // 鏂规硶闆嗗悎
+ methods: {
+ // 鑾峰彇鍚堟牸鐜囧浘琛ㄦ暟鎹�
+ getBar() {
+ const params = {
+ dateType: this.dateType,
+ beginDate: this.beginDate,
+ endDate: this.endDate,
+ sampleName: this.sampleName,
+ modelName: this.modelName,
+ supplierName: this.supplierName,
+ }
+ getRawPassRateByBarChart(params).then((res) => {
+ let lineData = []
+ let barData = []
+ let xAxis = []
+ res.data.forEach(item => {
+ barData.push(item.sum)
+ lineData.push(item.passRate)
+ xAxis.push(item.searchTime)
+ })
+ this.echartsSeries[0].data = barData
+ this.echartsSeries[1].data = lineData
+ this.yAxis[0].max = Math.ceil(Math.max.apply(null, barData) / 50) * 50
+ this.yAxis[0].interval = this.yAxis[0].max / 5
+ this.xAxis[0].data = xAxis
+ })
+ },
+ // 鑾峰彇鍘熸潗鏂欏悎鏍肩巼鍥捐〃鏁版嵁
+ getRawPass() {
+ const params = {
+ dateType: this.dateType,
+ beginDate: this.beginDate,
+ endDate: this.endDate,
+ sampleName: this.sampleName,
+ modelName: this.modelName,
+ supplierName: this.supplierName,
+ }
+ getRawPassRateByCake(params).then((res) => {
+ this.materialPieSeries[0].data[0].value = res.data.unQualified
+ this.materialPieSeries[0].data[1].value = res.data.qualified
+ this.passRate = res.data.passRate + '%'
+ })
+ },
+ // 鑾峰彇鏈湀妫�楠岀被鍨嬫暟閲�
+ getOrderType() {
+ getOrderTypeCookie().then((res) => {
+ if (res.code === 201) return
+ this.materialPieSeries1[0].data[0].value = res.data.customer // 濮旀墭
+ this.materialPieSeries1[0].data[1].value = res.data.enter // 杩涘巶
+ this.materialPieSeries1[0].data[2].value = res.data.quarterly // 瀛e害
+ this.materialPieSeries1[0].data[3].value = res.data.spotCheck // 鎶芥牱
+ })
+ },
+ // 鏈湀涓庝笂鏈堝悎鏍肩巼瀵规瘮
+ getPassRateCom() {
+ getRawUpMonth().then((res) => {
+ let month = []
+ let barData = []
+ res.data.forEach(item => {
+ month.push(item.month)
+ barData.push(item.passRate)
+ })
+ this.yAxis1[0].data = month
+ this.barSeries[0].data = barData
+ })
+ },
+ changeDate () {
+ this.getBar()
+ this.getRawPass()
+ // this.getOrderType()
+ // this.getPassRateCom()
+ },
+ changeDatePicker (val) {
+ if (val) {
+ this.beginDate = val[0] + ' 00:00:00'
+ this.endDate = val[1] + ' 23:59:59'
+ } else {
+ this.beginDate = ''
+ this.endDate = ''
+ }
+ this.getBar()
+ this.getRawPass()
+ // this.getOrderType()
+ // this.getPassRateCom()
+ },
+ },
+}
+</script>
+
+<style scoped>
+.title {
+ padding: 10px 0 0 20px;
+}
+.table {
+ padding: 0 10px 10px;
+}
+.pie-card {
+ width: 100%;
+ background: #FFFFFF;
+ margin-top: 10px;
+ position: relative;
+}
+.data {
+ position: absolute;
+ font-size: 20px;
+ transform: translate(-50%);
+ left: 40%;
+ top: 42%;
+ z-index: 1;
+}
+.inspection-card{
+ width: 100%;
+ background: #FFFFFF;
+ margin-top: 10px;
+}
+</style>
diff --git a/src/views/structural/capabilityAndLaboratory/capability/index.vue b/src/views/structural/capabilityAndLaboratory/capability/index.vue
index 1bb6202..11d2981 100644
--- a/src/views/structural/capabilityAndLaboratory/capability/index.vue
+++ b/src/views/structural/capabilityAndLaboratory/capability/index.vue
@@ -385,8 +385,8 @@
this.$refs.upload.clearFiles()
this.uploadDia = false
this.uploading = false
- if (response.code === 201) {
- this.$message.error(response.message)
+ if (response.code !== 200) {
+ this.$message.error(response.msg)
return
}
this.$message.success('涓婁紶鎴愬姛')
--
Gitblit v1.9.3