From 664db98c9e8595ce4dd636a27f480e3a08b81ff5 Mon Sep 17 00:00:00 2001 From: xyc <jc_xiong@hotmail.com> Date: 星期五, 21 二月 2025 11:13:51 +0800 Subject: [PATCH] 新增可忽略的维修时间 --- web/src/views/modules/taskReliability/SchemeCompar.vue | 273 +++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 185 insertions(+), 88 deletions(-) diff --git a/web/src/views/modules/taskReliability/SchemeCompar.vue b/web/src/views/modules/taskReliability/SchemeCompar.vue index 9666b44..d735ea1 100644 --- a/web/src/views/modules/taskReliability/SchemeCompar.vue +++ b/web/src/views/modules/taskReliability/SchemeCompar.vue @@ -1,78 +1,121 @@ <template> <div class="fa-card-a"> <el-row :gutter="5"> - <div class="mod-taskReliability-simulatAssess"> - <el-form :inline="true" :model="dataForm" ref="dataForm" :disabled="dataForm.disabled"> - <zt-form-item label="浜у搧鑺傜偣" prop="productId" width="100px"> - <zt-select v-model="dataForm.productId" :datas="productList" @change="onProductSelected"/> - </zt-form-item> - <zt-form-item label="鍙潬鎬ф柟妗�" prop="taskModelId" width="500px"> - <zt-select style="width: 400px" v-model="dataForm.taskModelId" :datas="schemeList" - @change="onTaskSelected" :multiple="true"/> - </zt-form-item> - <zt-form-item> - <zt-button @click="compair()">鏂规瀵规瘮</zt-button> - </zt-form-item> - </el-form> - <div> - <el-col :span="4"> - <div style="margin-right: 5px;height: calc(88vh - 100px)" v-if="isSelect"> - <product-model-tree @on-selected="onTreeSelected" showXdy="false" - ref="ProductModelTree" :isShow="false" basic="4" :productId="dataForm.productId"/> - </div> - </el-col> - <el-col :span="20"> - <div style="margin-top: 20px;position: relative;height: 600px"> - <div v-if="isShow"> - <el-button v-if="isZk" type="info" size="small" icon="el-icon-caret-bottom" - style="position: absolute;right: 10%;top: 10%;z-index: 1" @click="zk()"></el-button> - <el-button v-if="!isZk" type="info" size="small" icon="el-icon-caret-right" - style="position: absolute;right: 10%;top: 10%;z-index: 1" @click="zk()"></el-button> - <div v-if="isZk" style="position: absolute;right: 10%;top: 15%"> - <el-table :data="tableData" border style="width: 500px"> - <el-table-column - prop="name" - label="鏂规鍚嶇О" - > - </el-table-column> - <el-table-column - prop="mtbf" - label="MTBF" - width="100px" - align="right"> - <template slot-scope="scope"> - <span>{{ keepNumber(scope.row.mtbf) }}</span> - </template> - </el-table-column> - <el-table-column - prop="mttr" - label="MTTR" - width="100px" - align="right"> - <template slot-scope="scope"> - <span>{{ keepNumber(scope.row.mttr) }}</span> - </template> - </el-table-column> - <el-table-column - prop="msr" - label="MSR" - width="100px" - align="right"> - <template slot-scope="scope"> - <span>{{ keepNumber(scope.row.mttr) }}</span> - </template> - </el-table-column> - </el-table> - </div> - </div> - <div :disabled="isShow"> - <div class="echart" id="myChart" :style="myChartStyle"></div> - </div> - </div> - </el-col> + <el-form :inline="true" :model="dataForm" ref="dataForm" :disabled="dataForm.disabled"> + <zt-form-item label="浜у搧鑺傜偣" prop="productId" width="100px"> + <zt-select v-model="dataForm.productId" :datas="productList" @change="onProductSelected"/> + </zt-form-item> + <zt-form-item label="鍙潬鎬ф柟妗�" prop="taskModelId" width="500px"> + <zt-select style="width: 400px" v-model="dataForm.taskModelId" :datas="schemeList" + @change="onTaskSelected" :multiple="true"/> + </zt-form-item> + <zt-form-item label="鏃堕棿鍒嗙墖" prop="samplPeriod"> + <el-input type="number" :min="1" v-model="dataForm.samplPeriod" style="width: 150px;vertical-align: baseline;"> + <template slot="append">鍒嗛挓</template> + </el-input> + </zt-form-item> + <zt-form-item label="浠跨湡娆℃暟" prop="simulatFrequency"> + <el-input type="number" :min="1" v-model="dataForm.simulatFrequency" style="width: 150px;vertical-align: baseline;"> + <template slot="append">娆℃暟</template> + </el-input> + </zt-form-item> + <zt-form-item> + <zt-button @click="compair()">鏂规瀵规瘮</zt-button> + </zt-form-item> + </el-form> + <el-progress v-if="isShow" :percentage="percentage"></el-progress> + <el-col :span="4"> + <div style="margin-right: 5px;height: calc(100vh - 230px)" v-if="isSelect"> + <product-model-tree @on-selected="onTreeSelected" showXdy="false" + ref="ProductModelTree" :isShow="false" basic="4" :productId="dataForm.productId"/> </div> - </div> + </el-col> + <el-col :span="20"> + <div class="fa-card-a" style="position: relative;height: calc(100vh - 230px)"> + <div v-if="Show"> + <el-button v-if="isZk" type="info" size="small" icon="el-icon-caret-bottom" + style="position: absolute;right: 0;top: 0;z-index: 1" @click="zk()"></el-button> + <el-button v-if="!isZk" type="info" size="small" icon="el-icon-caret-right" + style="position: absolute;right: 0;top: 0;z-index: 1" @click="zk()"></el-button> + <div v-if="isZk" style="position: absolute;right: 0;top: 5%"> + <el-table :data="tableData" border style="width: 500px"> + <el-table-column + prop="name" + label="鏂规鍚嶇О" + > + </el-table-column> + <el-table-column + prop="mtbf" + label="MTTF" + width="100px" + align="right"> + <template slot-scope="scope"> + <span>{{ keepNumberBy2(scope.row.mtbf) }}</span> + </template> + </el-table-column> + <el-table-column + prop="mttr" + label="MTTR" + width="100px" + align="right"> + <template slot-scope="scope"> + <span>{{ keepNumberBy2(scope.row.mttr) }}</span> + </template> + </el-table-column> + <el-table-column + prop="msr" + label="MSR" + width="100px" + align="right"> + <template slot-scope="scope"> + <span>{{ keepNumberBy4(scope.row.msr) }}</span> + </template> + </el-table-column> + <el-table-column + prop="mttfMle" + label="鑺傜偣瀵垮懡" + width="100px" + align="right"> + <template slot-scope="scope"> + <span>{{ keepNumberBy4(scope.row.mttfMle) }}</span> + </template> + </el-table-column> + <el-table-column + prop="mttrMle" + label="骞冲潎缁翠慨鏃堕棿" + width="100px" + align="right"> + <template slot-scope="scope"> + <span>{{ keepNumberBy4(scope.row.mttrMle) }}</span> + </template> + </el-table-column> + </el-table> + </div> + </div> + <div :disabled="isShow"> + <div class="echart" id="SchemeCompar" :style="myChartStyle"></div> + </div> + </div> + </el-col> </el-row> + <el-dialog v-dialogDrag :close-on-click-modal="false" top="8vh" :visible.sync="dialogVisible" title="妯″瀷妫�鏌�" + width="60%" @close="dialogVisible = false"> + <el-tag type="danger" style="margin-bottom: 10px">妯″瀷瀹氫箟/鍙傛暟閰嶇疆閲屽瓨鍦ㄤ互涓嬮棶棰橈細</el-tag> + <el-table :data="modelCheckResult" height="350" + :header-cell-style="{'text-align':'center'}"> + <el-table-column prop="category" label="妫�鏌ョ粨鏋�" align="center" width="150"/> + <el-table-column prop="taskName" label="浠诲姟鍚嶇О" align="center"/> + <el-table-column prop="taskPhaseName" label="浠诲姟闃舵鍚嶇О" align="center"/> + <el-table-column prop="gkName" label="宸ュ喌鍚嶇О" align="center"/> + <el-table-column prop="nodeName" label="鑺傜偣鍚嶇О" align="center"/> + <el-table-column prop="modelName" label="妯″瀷鍚嶇О" align="center"/> + <el-table-column prop="deviceName" label="璁惧鍚嶇О" align="center"/> + <el-table-column prop="paramName" label="鍙傛暟鍚嶇О" align="center"/> + </el-table> + <div slot="footer" class="dialog-footer"> + <el-button type="primary" @click="dialogVisible = false">鍏� 闂�</el-button> + </div> + </el-dialog> </div> </template> @@ -87,6 +130,7 @@ myChartStyle: {float: "left", width: "100%", height: "600px"}, //鍥捐〃鏍峰紡 isSelect: false, isShow: false, + Show: false, isZk: true, productList: [], schemeList: [], @@ -96,20 +140,32 @@ productId: '', showProductId: '', dataType: 'fz', + samplPeriod: '10', + simulatFrequency: 500, }, + percentage: 2, xDataList: [], seriesList: [], tableData: [], taskList: [], + fzIdList: [], + dialogVisible: false, + modelCheckResult: [], } }, mounted() { this.getProductList() }, computed: { - keepNumber() { //杩囨护鍣ㄤ繚鐣�4涓哄皬鏁� + keepNumberBy4() { //杩囨护鍣ㄤ繚鐣�4涓哄皬鏁� return function (val) { // 瀵硅绠楀睘鎬ц繘琛屼紶鍙� const numM = Number(val).toFixed(5); + return numM.substring(0, numM.length - 1); + } + }, + keepNumberBy2() { //杩囨护鍣ㄤ繚鐣�4涓哄皬鏁� + return function (val) { // 瀵硅绠楀睘鎬ц繘琛屼紶鍙� + const numM = Number(val).toFixed(3); return numM.substring(0, numM.length - 1); } }, @@ -117,23 +173,22 @@ components: { ProductModelTree, }, - + watch: { + // percentage() { + // if (this.percentage === 100) { + // this.getEcharts(); + // } + // } + }, methods: { - async onTreeSelected(data) { + onTreeSelected(data) { if (this.dataForm.taskModelId.length > 0) { console.log(this.dataForm.taskModelId) console.log(data, 'onProductSelected') this.dataForm.showProductId = data.id - let params = { - taskList: this.dataForm.taskModelId, - showProductId: this.dataForm.showProductId - } - console.log(this.dataForm.taskModelId, 'this.dataForm.taskModelId') - let res = await this.$http.get('/taskReliability/SimulatAssess/SchemeCompar', {params: params}) - console.log(res.data, "res") - this.xDataList = res.data.xdataList - this.seriesList = res.data.curveList - this.tableData = res.data.dataList + this.$nextTick(() => { + this.getEcharts() + }) } }, // 鑾峰彇淇℃伅 @@ -168,27 +223,69 @@ console.log(res.data) this.schemeList = res.data }, + async getStroke() { + let param = { + taskList: this.fzIdList + } + let res = await this.$http.get(`/taskReliability/SimulatAssess/getCalcProgress`, {params: param}) + if (res.success) { + if (res.data) { + this.percentage = parseFloat(res.data) + if (this.percentage >= 100) { + clearInterval(this.timers) + this.percentage = 0 + await this.getEcharts(); + } + } + } else { + clearInterval(this.timers) + this.percentage = 0 + } + }, async compair() { + this.isShow = true + this.dialogVisible = false + this.modelCheckResult = [] let params = { taskList: this.dataForm.taskModelId, - showProductId: null + showProductId: this.dataForm.productId, + samplPeriod: this.dataForm.samplPeriod, + simulatFrequency: this.dataForm.simulatFrequency } console.log(this.dataForm.taskModelId, 'this.dataForm.taskModelId') + this.percentage = 0 let res = await this.$http.get('/taskReliability/SimulatAssess/SchemeCompar', {params: params}) + console.log(res.data, "res") + if (res.success) { + if (res.data.type=="errorList") { + this.modelCheckResult = res.data.errList + this.dialogVisible = true + this.isShow = false + } else { + this.fzIdList = res.data.idList + this.timers = window.setInterval(this.getStroke, 1000) + } + } + }, + async getEcharts() { + let params = { + taskList: this.dataForm.taskModelId, + showProductId: this.dataForm.showProductId + } + let res = await this.$http.get('/taskReliability/SimulatAssess/getEcharts', {params: params}) console.log(res.data, "res") this.xDataList = res.data.xdataList this.seriesList = res.data.curveList this.tableData = res.data.dataList - - this.isShow = true + this.Show = true this.option = { xAxis: { data: this.xDataList, name: '浠跨湡鎬绘椂闀�', type: 'category', axisLabel: { - formatter: function(value) { + formatter: function (value) { // 灏� X 杞村埢搴﹀�兼牸寮忓寲涓轰繚鐣欎袱浣嶅皬鏁扮殑瀛楃涓� return parseFloat(value).toFixed(2); } @@ -203,7 +300,7 @@ }, series: this.seriesList }; - this.myChart = echart.init(document.getElementById("myChart")); + this.myChart = echart.init(document.getElementById("SchemeCompar")); console.log(this.option, ' this.option ') this.myChart.setOption(this.option); //闅忕潃灞忓箷澶у皬璋冭妭鍥捐〃 -- Gitblit v1.9.1