From 3b84bfca833d90ad48702c2a22c010f6ca953f9c Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期四, 11 四月 2024 09:55:07 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/permission.js | 2 src/views/screen/components/screen-examine/components/examine-chart.vue | 2 src/views/screen/components/screen-data/index.vue | 15 src/views/system/result/detail/detail.vue | 841 ++++++++++++++++++++++++++++++++++++++++++++ src/views/system/result/detail/index1.vue | 185 +++++++++ src/views/screen/components/screen-wrapper/index.vue | 31 + src/views/screen/components/screen-examine/components/examine-hola.vue | 5 src/views/screen/components/screen-table/index.vue | 2 src/views/screen/components/screen-examine/index.vue | 2 9 files changed, 1,067 insertions(+), 18 deletions(-) diff --git a/src/permission.js b/src/permission.js index 462668d..67e53df 100644 --- a/src/permission.js +++ b/src/permission.js @@ -8,7 +8,7 @@ NProgress.configure({ showSpinner: false }) -const whiteList = ['/login', '/register', '/screen'] +const whiteList = ['/login', '/register',] router.beforeEach((to, from, next) => { NProgress.start() diff --git a/src/views/screen/components/screen-data/index.vue b/src/views/screen/components/screen-data/index.vue index 5518046..300142c 100644 --- a/src/views/screen/components/screen-data/index.vue +++ b/src/views/screen/components/screen-data/index.vue @@ -1,6 +1,6 @@ <template> <div class="data-container"> - <wrapper-title :title="'宸ュ崟鏁版嵁'" :path="'/monitorServe/car'"></wrapper-title> + <wrapper-title :title="'宸ュ崟鏁版嵁'" :path="'/work-order-center/maintenance/work-order/work-order'"></wrapper-title> <div class="data-content"> <div class="data-panel"> @@ -14,13 +14,13 @@ </div> <div class="panel-container"> <div class="panel-item"> - <data-hola :holaTitle="`宸ュ崟鎬绘暟`" :centerValue="1111" :holaColor="`#4ea8ff`"></data-hola> + <data-hola :holaTitle="`宸ュ崟鎬绘暟`" :centerValue="3000" :holaColor="`#4ea8ff`"></data-hola> </div> <div class="panel-item"> - <data-hola :holaTitle="`宸插鐞嗗伐鍗曟暟`" :centerValue="1111" :holaColor="`#4ea8ff`"></data-hola> + <data-hola :holaTitle="`宸插鐞嗗伐鍗曟暟`" :centerValue="1600" :holaColor="`#5dec24`"></data-hola> </div> <div class="panel-item"> - <data-hola :holaTitle="`鏈鐞嗗伐鍗曟暟`" :centerValue="1111" :holaColor="`#4ea8ff`"></data-hola> + <data-hola :holaTitle="`鏈鐞嗗伐鍗曟暟`" :centerValue="200" :holaColor="`#dfc639`"></data-hola> </div> </div> </div> @@ -124,7 +124,7 @@ <style lang="scss" scoped> .data-container { width: 100%; - height: 470px; + height: 500px; display: flex; flex-direction: column; @@ -167,10 +167,11 @@ width: 100%; display: flex; justify-content: space-around; + margin: 10px 0; .panel-item { - width: 100px; - height: 100px; + width: 120px; + height: 120px; } } </style> \ No newline at end of file diff --git a/src/views/screen/components/screen-examine/components/examine-chart.vue b/src/views/screen/components/screen-examine/components/examine-chart.vue index 36bf136..d12f01e 100644 --- a/src/views/screen/components/screen-examine/components/examine-chart.vue +++ b/src/views/screen/components/screen-examine/components/examine-chart.vue @@ -56,7 +56,7 @@ .hola-item { flex-shrink: 0; - width: 120px; + width: 150px; height: 120px; } } diff --git a/src/views/screen/components/screen-examine/components/examine-hola.vue b/src/views/screen/components/screen-examine/components/examine-hola.vue index e8e89d1..83a0396 100644 --- a/src/views/screen/components/screen-examine/components/examine-hola.vue +++ b/src/views/screen/components/screen-examine/components/examine-hola.vue @@ -151,7 +151,9 @@ .progressChart { width: 100%; height: 100%; - + display: flex; + flex-direction: column; + align-items: center; .chart { width: 100%; height: 75%; @@ -166,4 +168,5 @@ margin-top: 10px; } } + </style> diff --git a/src/views/screen/components/screen-examine/index.vue b/src/views/screen/components/screen-examine/index.vue index 5747188..8bdd44f 100644 --- a/src/views/screen/components/screen-examine/index.vue +++ b/src/views/screen/components/screen-examine/index.vue @@ -1,6 +1,6 @@ <template> <div class="examine-container"> - <wrapper-title :title="'鑰冩牳鏁版嵁'" :path="'/examine/check-rule'"></wrapper-title> + <wrapper-title :title="'鑰冩牳鏁版嵁'" :path="'/examine/default'"></wrapper-title> <div class="examine-content"> <div class="examine-wrapper"> diff --git a/src/views/screen/components/screen-table/index.vue b/src/views/screen/components/screen-table/index.vue index 0629df0..01e715d 100644 --- a/src/views/screen/components/screen-table/index.vue +++ b/src/views/screen/components/screen-table/index.vue @@ -1,6 +1,6 @@ <template> <div class="table-container"> - <wrapper-title :title="'鍖哄煙璁惧鏁版嵁'" :path="'/monitorServe/face'"></wrapper-title> + <wrapper-title :title="'鍖哄煙璁惧鏁版嵁'" :path="'/monitorServe/recovery'"></wrapper-title> <div class="table-content" ref="tabContent"> <div class="table-wrapper"> <el-table :data="tableData" border :height="tableHeight" :max-height="tableHeight" class="rank-table"> diff --git a/src/views/screen/components/screen-wrapper/index.vue b/src/views/screen/components/screen-wrapper/index.vue index dbc3d1b..b2dac5e 100644 --- a/src/views/screen/components/screen-wrapper/index.vue +++ b/src/views/screen/components/screen-wrapper/index.vue @@ -6,19 +6,19 @@ </div> <div class="wrapper-content"> <div class="left-container wrapper"> - <screen-face class="animate-enter-x enter-left"></screen-face> - <screen-car class="animate-enter-x enter-left animate-delay-1"></screen-car> - <screen-video class="animate-enter-x enter-left animate-delay-2"></screen-video> + <screen-face class="enter-left" :class="{ 'animate-enter-x': isEnd }"></screen-face> + <screen-car class="enter-left animate-delay-1" :class="{ 'animate-enter-x': isEnd }"></screen-car> + <screen-video class="enter-left animate-delay-2" :class="{ 'animate-enter-x': isEnd }"></screen-video> </div> <div class="center-container center-wrapper"> <screen-map></screen-map> - <screen-table class="animate-enter-y enter-top"></screen-table> + <screen-table class="enter-top" :class="{ 'animate-enter-y': isEnd }"></screen-table> <!-- <screen-detection></screen-detection> --> </div> <div class="right-container wrapper"> - <screen-examine class="animate-enter-x enter-right"></screen-examine> - <screen-data></screen-data> + <screen-examine class="enter-right" :class="{ 'animate-enter-x': isEnd }"></screen-examine> + <screen-data class="enter-right animate-delay-1" :class="{ 'animate-enter-x': isEnd }"></screen-data> </div> </div> </div> @@ -45,10 +45,29 @@ ScreenCar, ScreenData }, + data() { + return { + isEnd: false + } + }, methods: { returnPath() { this.$router.push('/index'); + }, + checkAnimationEnd(event) { + if (this.isEnd) return; + if (event.propertyName === 'transform') { + this.isEnd = true; + } } + }, + mounted() { + const container = document.querySelector('.screen-wrapper'); + container.addEventListener('transitionend', this.checkAnimationEnd); + }, + destroyed() { + const container = document.querySelector('.screen-wrapper'); + container.removeEventListener('transitionend', this.checkAnimationEnd); } } </script> diff --git a/src/views/system/result/detail/detail.vue b/src/views/system/result/detail/detail.vue new file mode 100644 index 0000000..16209a7 --- /dev/null +++ b/src/views/system/result/detail/detail.vue @@ -0,0 +1,841 @@ +<template> + <div class="app-container"> + <el-page-header @back="goBack" content="璇︽儏椤甸潰"> + </el-page-header> + <el-container> + <el-main style="padding-top: 0px"> + <h2>鑰冩牳鍒嗘暟鏄庣粏</h2> + <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> +<!-- <el-form-item label="鑰冩牳瀵硅薄" prop="ruleName">--> +<!-- <el-select--> +<!-- v-model="queryParams.address"--> +<!-- placeholder="璇烽�夋嫨鍖哄煙"--> +<!-- clearable--> +<!-- >--> +<!-- <el-option label="鑷础甯�" value="鑷础甯�"/>--> +<!-- <el-option label="娌挎哗鍖�" value="娌挎哗鍖�"/>--> +<!-- <el-option label="澶у畨鍖�" value="澶у畨鍖�"/>--> +<!-- <el-option label="璐′簳鍖�" value="璐′簳鍖�"/>--> +<!-- <el-option label="鑷祦浜曞尯" value="鑷祦浜曞尯"/>--> +<!-- <el-option label="楂樻柊鍖�" value="楂樻柊鍖�"/>--> +<!-- <el-option label="鑽e幙" value="鑽e幙"/>--> +<!-- <el-option label="瀵岄『鍘�" value="瀵岄『鍘�"/>--> +<!-- </el-select>--> +<!-- </el-form-item>--> + <el-form-item label="鑰冩牳鏃ユ湡" prop="createTime"> + <div class="block"> + <el-date-picker + v-model="value2" + align="right" + type="date" + placeholder="閫夋嫨鏃ユ湡" + :picker-options="pickerOptions"> + </el-date-picker> + </div> + </el-form-item> + <el-form-item> + <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">鎼滅储</el-button> + <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲嶇疆</el-button> + </el-form-item> + </el-form> + <el-row :gutter="10" class="mb8"> + <el-col :span="1.5"> + <el-button + type="success" + plain + icon="el-icon-edit" + size="mini" + :disabled="single" + @click="handleScoreUpdate" + >淇敼</el-button> + </el-col> + <el-col :span="1.5"> + <el-button + type="danger" + plain + icon="el-icon-delete" + size="mini" + :disabled="multiple" + @click="handleDelete" + >鍒犻櫎</el-button> + </el-col> + <right-toolbar :showSearch.sync="showSearch" @queryTable="getScoreList"></right-toolbar> + </el-row> + + <el-table v-loading="loading" :data="scoreList" @selection-change="handleSelectionChange"> + <el-table-column type="selection" width="55" align="center" /> + <el-table-column label="鑰冩牳瑙勫垯" align="center" prop="ruleId"> + <template slot-scope="scope"> + <div v-if="scope.row.ruleId == 5">涓�鏈轰竴妗f敞鍐岀巼</div> + <div v-else-if="scope.row.ruleId == 4">涓�鏈轰竴妗e悎鏍肩巼</div> + <div v-else-if="scope.row.ruleId == 3">骞冲彴鍦ㄧ嚎鐜�</div> + </template> + </el-table-column> + <el-table-column label="鑰冩牳瀵硅薄" align="center" prop="unitName"> + <template slot-scope="scope"> + <div v-if="scope.row.unitName ==='鎴愰兘x杩愮淮' ">鎴愰兘x杩愮淮</div> + <div v-else>鑷祦浜曞尯</div> + </template> + </el-table-column> + <el-table-column label="鍒嗗��" align="center" prop="score" /> + <el-table-column label="鑰冩牳鏃堕棿" align="center" prop="createTime" /> + <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width"> + <template slot-scope="scope"> + <el-button + size="mini" + type="text" + icon="el-icon-edit" + @click="handleScoreUpdate(scope.row)" + >淇敼</el-button> + <el-button + size="mini" + type="text" + icon="el-icon-delete" + @click="handleScoreDelete(scope.row)" + >鍒犻櫎</el-button> + </template> + </el-table-column> + </el-table> + <pagination + v-show="total>0" + :total="scoreTotal" + :page.sync="queryParams.pageNum" + :limit.sync="queryParams.pageSize" + @pagination="getRuleList" + /> + </el-main> + </el-container> + <el-container> + <el-main> + <h2>鑰冩牳瑙勫垯</h2> + <el-row :gutter="10" class="mb8"> + <el-col :span="1.5"> + <el-button + type="success" + plain + icon="el-icon-edit" + size="mini" + :disabled="single" + @click="handleRuleUpdate" + >淇敼</el-button> + </el-col> + <el-col :span="1.5"> + <el-button + type="danger" + plain + icon="el-icon-delete" + size="mini" + :disabled="multiple" + @click="handleDelete" + >鍒犻櫎</el-button> + </el-col> + <right-toolbar :showSearch.sync="showSearch" @queryTable="getRuleList"></right-toolbar> + </el-row> + + <el-table v-loading="loading" :data="ruleList" @selection-change="handleSelectionChange"> + <el-table-column type="selection" width="55" align="center" /> + <el-table-column label="瑙勫垯鍚嶇О" align="center" prop="ruleName" /> + <el-table-column label="瑙勫垯鏉冮噸" align="center" prop="ruleWeight" /> + <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width"> + <template slot-scope="scope"> + <el-button + size="mini" + type="text" + icon="el-icon-edit" + @click="handleRuleUpdate(scope.row)" + >淇敼</el-button> + <el-button + size="mini" + type="text" + icon="el-icon-delete" + @click="handleDelete(scope.row)" + >鍒犻櫎</el-button> + </template> + </el-table-column> + </el-table> + + <pagination + v-show="total>0" + :total="total" + :page.sync="queryParams.pageNum" + :limit.sync="queryParams.pageSize" + @pagination="getRuleList" + /> + </el-main> + </el-container> + + <el-container> + <el-main> + <h2>鑰冩牳鎴愮哗</h2> + <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> +<!-- <el-form-item label="鑰冩牳瀵硅薄" prop="ruleName">--> +<!-- <el-select--> +<!-- v-model="queryParams.address"--> +<!-- placeholder="璇烽�夋嫨鍖哄煙"--> +<!-- clearable--> +<!-- >--> +<!-- <el-option label="鑷础甯�" value="鑷础甯�"/>--> +<!-- <el-option label="娌挎哗鍖�" value="娌挎哗鍖�"/>--> +<!-- <el-option label="澶у畨鍖�" value="澶у畨鍖�"/>--> +<!-- <el-option label="璐′簳鍖�" value="璐′簳鍖�"/>--> +<!-- <el-option label="鑷祦浜曞尯" value="鑷祦浜曞尯"/>--> +<!-- <el-option label="楂樻柊鍖�" value="楂樻柊鍖�"/>--> +<!-- <el-option label="鑽e幙" value="鑽e幙"/>--> +<!-- <el-option label="瀵岄『鍘�" value="瀵岄『鍘�"/>--> +<!-- </el-select>--> +<!-- </el-form-item>--> + <el-form-item label="鑰冩牳鏃ユ湡" prop="createTime"> + <div class="block"> + <el-date-picker + v-model="value2" + align="right" + type="date" + placeholder="閫夋嫨鏃ユ湡" + :picker-options="pickerOptions"> + </el-date-picker> + </div> + </el-form-item> + <el-form-item> + <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">鎼滅储</el-button> + <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲嶇疆</el-button> + </el-form-item> + </el-form> + + <el-row :gutter="10" class="mb8"> + <el-col :span="1.5"> + <el-button + type="warning" + plain + icon="el-icon-download" + size="mini" + @click="handleExport" + v-hasPermi="['system:checkRule:export']" + >瀵煎嚭</el-button> + </el-col> + <right-toolbar :showSearch.sync="showSearch" @queryTable="getRuleList"></right-toolbar> + </el-row> + <el-table v-loading="loading" :data="checkResultList" @selection-change="handleSelectionChange"> + <el-table-column type="selection" width="55" align="center" /> + <el-table-column label="鑰冩牳鏃ユ湡" align="center" prop="date" width="120px"/> + <el-table-column label="鑰冩牳瀵硅薄" align="center" prop="target" width="120px"/> + <el-table-column label="骞冲彴鍦ㄧ嚎鐜�(鏉冮噸锛�0.5)" align="center" prop="platformOnline" width="120px"/> + <el-table-column label="涓�鏈轰竴妗e悎鏍肩巼(鏉冮噸锛�0.5)" align="center" prop="monitorQualification" width="120px"/> + <el-table-column label="涓�鏈轰竴妗f敞鍐岀巼(鏉冮噸锛�0.5)" align="center" prop="monitorRegistration" width="120px"/> + <el-table-column label="妗f鑰冩牳姣�(鏉冮噸锛�0.5)" align="center" prop="archivesRate" width="120px"/> + <el-table-column label="鐐逛綅鍦ㄧ嚎鐜�(鏉冮噸锛�1)" align="center" prop="siteOnline" width="120px"/> + <el-table-column label="褰曞儚鍙敤鐜�(鏉冮噸锛�1)" align="center" prop="videoAvailable" width="120px"/> + <el-table-column label="鏍囨敞姝g‘鐜�(鏉冮噸锛�0.5)" align="center" prop="annotationAccuracy" width="120px"/> + <el-table-column label="鏍℃椂姝g‘鐜�(鏉冮噸锛�0.5)" align="center" prop="timingAccuracy" width="120px"/> + <el-table-column label="閲嶇偣鐐逛綅鍦ㄧ嚎鐜�(鏉冮噸锛�0.5)" align="center" prop="keySiteOnline" width="120px"/> + <el-table-column label="閲嶇偣鐐逛綅褰曞儚鍙敤鐜�(鏉冮噸锛�0.5)" align="center" prop="keyVideoAvailable" width="120px"/> + <el-table-column label="閲嶇偣鐐逛綅鏍囨敞姝g‘鐜�(鏉冮噸锛�0.5)" align="center" prop="keyAnnotationAccuracy" width="120px"/> + <el-table-column label="閲嶇偣鐐逛綅鎸夋椂姝g‘鐜�(鏉冮噸锛�0.5)" align="center" prop="keyTimingAccuracy" width="120px"/> + <el-table-column label="閲嶇偣鎸囨尌鍥惧儚鍏畨閮ㄥ贰妫�缁撴灉(鏉冮噸锛�0.2)" align="center" prop="keyCommandImageInspection" width="120px"/> + <el-table-column label="閲嶇偣鎸囨尌鍥惧儚鐩綍鏍�(鏉冮噸锛�0.8)" align="center" prop="keyCommandImageDirectoryTree" width="120px"/> + <el-table-column label="鍦ㄧ嚎妫�鏌ュ钩鍙伴儴缃插強杩愯鐜�(鏉冮噸锛�0.075)" align="center" prop="onlineInspectionPlatform" width="120px"/> + <el-table-column label="瑙嗛浼犺緭缃戣祫浜у噯纭巼(鏉冮噸锛�0.075)" align="center" prop="videoTransmissionAssetsAccuracy" width="120px"/> + <el-table-column label="瑙嗛浼犺緭缃戣祫浜у急鍙d护寰楀垎姣斾緥(鏉冮噸锛�0.075)" align="center" prop="videoTransmissionAssetsWeakPasswordScore" width="120px"/> + <el-table-column label="瑙嗛浼犺緭缃戝嵄闄╄祫浜у緱鍒嗘瘮閲�(鏉冮噸锛�0.075)" align="center" prop="videoTransmissionDangerousAssetsScore" width="120px"/> + <el-table-column label="瑙嗛浼犺緭缃戣竟鐣屽畬鏁存�ф娴嬫墸鍒嗛」(鏉冮噸锛�0.2)" align="center" prop="videoTransmissionBoundaryIntegrityDetection" width="120px"/> + <el-table-column label="鏈堣繍琛岀巼" align="center" prop="operatingRate"/> + </el-table> + </el-main> + </el-container> + + <!-- 娣诲姞鎴栦慨鏀硅�冩牳瑙勫垯瀵硅瘽妗� --> + <el-dialog :title="title" :visible.sync="ruleOpen" width="600px" append-to-body> + <el-form ref="form" :model="ruleForm" :rules="rules" label-width="80px"> + <el-form-item label="瑙勫垯鍚嶇О" prop="ruleName"> + <el-input v-model="ruleForm.ruleName" placeholder="璇疯緭鍏ヨ鍒欏悕绉�" /> + </el-form-item> + <el-form-item label="瑙勫垯绫诲瀷" prop="category"> + <el-select v-model="ruleForm.category" placeholder="瑙勫垯绫诲瀷"> + <el-option + v-for="item in categoryList" + :key="item.id" + :label="item.value" + :value="item.id"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="瑙勫垯鎻忚堪" prop="ruleDetail"> + <el-input v-model="ruleForm.ruleDetail" type="textarea" show-word-limit maxlength="150" placeholder="璇疯緭鍏ヨ鍒欐弿杩�"/> + </el-form-item> + <el-form-item label="鍙傛暟閰嶇疆" prop="ruleDetail"> + <div class="row-warp"> + <div class="row"> + <div class="row-left">鍙傛暟鍚�</div> + <div class="row-right">鏉′欢</div> + </div> + <div class="row"> + <div class="row-left">澶╃綉瑙嗛鐐逛綅鏁�</div> + <div class="row-right"> + <div>涓嶅皯浜�</div> + <div> + <el-input class="input-w" type="number" v-model="ruleForm.videoPointNum"/>{{" %"}} + </div> + </div> + </div> + <div class="row"> + <div class="row-left">杞﹁締鍗″彛鐐逛綅鏁�</div> + <div class="row-right"> + <div>涓嶅皯浜�</div> + <div><el-input class="input-w" type="number" v-model="ruleForm.vehicleCheckpointNum"/></div>{{" %"}} + </div> + </div> + <div class="row"> + <div class="row-left">浜鸿劯鍗″彛鐐逛綅鏁�</div> + <div class="row-right"> + <div>涓嶅皯浜�</div> + <div> + <el-input class="input-w" type="number" v-model="ruleForm.faceChceckpointNum" /></div>{{" %"}} + </div> + </div> + </div> + </el-form-item> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button type="primary" @click="submitForm">纭� 瀹�</el-button> + <el-button @click="cancel">鍙� 娑�</el-button> + </div> + </el-dialog> + + <!-- 瑙勫垯璇︽儏 --> + <el-dialog title="瑙勫垯璇︽儏" :visible.sync="ruleDetailOpen" width="50%" append-to-body> + <el-form ref="form" :model="form" :rules="rules" label-width="80px"> + <el-form-item label="瑙勫垯鍚嶇О" prop="ruleName"> + <el-input class="input" disabled v-model="form.ruleName" placeholder="璇疯緭鍏ヨ鍒欏悕绉�" /> + </el-form-item> + <el-form-item label="杩愮淮鍏徃" prop="companyName"> + <el-input class="input" disabled :value ="companyName" placeholder="璇疯緭鍏ヨ繍缁村叕鍙稿悕绉�"></el-input> + </el-form-item> + <el-form-item label="瑙勫垯鎻忚堪" prop="ruleDesc"> + <el-input class="input" disabled v-model="form.ruleDesc" placeholder="璇疯緭鍏ヨ鍒欐弿杩�" /> + </el-form-item> + <el-form-item label="瑙勫垯璁剧疆"> + <div > + <div class="line"> + <div class="line-left">鏃堕挓鍚屾锛堣秴杩嚶�3绉掍负涓嶅悎鏍硷級24灏忔椂鍐呮湭淇鐨勶細鎵i櫎鐩稿叧闀滃ご鏁伴噺*</div> + <div class="line-right"><el-input disabled v-model="jsonRule.overTime" type="text"/></div>鍒� + </div> + <div class="line"> + <div class="line-left">OSD鏍囪瘑涓嶆弧瓒炽�奊AT 751-2008 瑙嗛鍥惧儚鏂囧瓧鏍囨敞瑙勮寖銆嬶紝24灏忔椂鍐呮湭淇鐨勶細鏍囨墸闄ょ浉鍏抽暅澶存暟閲�*</div> + <div class="line-right"><el-input disabled v-model="jsonRule.failNum" type="text"/></div>鍒� + </div> + <div class="line"> + <div class="line-left">鐢ㄦ埛鎶芥锛屼竴鏈轰竴妗f暟鎹」涓嶅悎鏍硷紙鎻愪緵铏氬亣鏁版嵁鎴栭敊璇暟鎹负涓嶅悎鏍硷級锛�24灏忔椂鍐呮湭淇鐨勶細鎵i櫎鐩稿叧闀滃ご鏁伴噺*</div> + <div class="line-right"><el-input disabled v-model="jsonRule.failNum" type="text"/></div>鍒� + </div> + </div> + </el-form-item> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button @click="cancel">鍏抽棴</el-button> + </div> + </el-dialog> + + <!-- 娣诲姞鎴栦慨鏀硅�冩牳璁″垎瀵硅瘽妗� --> + <el-dialog :title="title" :visible.sync="scoreOpen" width="500px" append-to-body> + <el-form ref="form" :model="scoreForm" :rules="rules" label-width="80px"> + <el-form-item label="鍒嗗��" prop="score"> + <el-input v-model="scoreForm.score" placeholder="璇疯緭鍏ュ垎鍊�" /> + </el-form-item> + <el-form-item label="鑰冩牳鍚�" prop="examineId"> + <el-select v-model="scoreForm.examineId" placeholder="璇烽�夋嫨"> + <el-option + v-for="item in examineList" + :key="item.id" + :label="item.value" + :value="item.id"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="鑰冩牳瀵硅薄" prop="unitId"> + <el-select v-model="scoreForm.unitId" placeholder="璇烽�夋嫨"> + <el-option + v-for="item in unitList" + :key="item.id" + :label="item.value" + :value="item.id"> + </el-option> + </el-select> + </el-form-item> + <el-form-item label="鑰冩牳瑙勫垯" prop="ruleCategory"> + <el-select v-model="scoreForm.ruleCategory" placeholder="璇烽�夋嫨"> + <el-option + v-for="item in ruleCategoryList" + :key="item.id" + :label="item.value" + :value="item.id"> + </el-option> + </el-select> + </el-form-item> + </el-form> + <div slot="footer" class="dialog-footer"> + <el-button type="primary" @click="submitForm">纭� 瀹�</el-button> + <el-button @click="cancel">鍙� 娑�</el-button> + </div> + </el-dialog> + </div> +</template> + +<script> +import { listCheckResult, getCheckResult, delCheckResult, addCheckResult, updateCheckResult,manualScore, publishCheckResult } from "@/api/platform/check-result"; +import { listCheckRule, getCheckRule, delCheckRule, addCheckRule, updateCheckRule } from "@/api/platform/check-rule"; +import { listScore, getScore, delScore, addScore, updateScore } from "@/api/platform/check-score"; +import {unitSelect} from "@/api/platform/unit"; +import {publishSelect} from "@/api/platform/check-publish"; + +export default { + name: "CheckResult", + dicts: ['platform_audit_state'], + data() { + return { + activeNames: ['1'], + companyName: "鎴愰兘x杩愮淮鍏徃", + detailTitle: '', + detailOpen: false, + detail:{ + }, + examineList: [], + unitList: [ + {id:2,value: '鎴愰兘x杩愮淮'}, + {id:3,value: '鑷祦浜曞尯'}, + ], + ruleCategoryList: [ + { id: 1, value: '瑙嗛鍦ㄧ嚎鐜�' }, + { id: 2, value: '瀛樺偍鏁呴殰' }, + { id: 3, value: '瑙嗗浘搴撳鎺ョǔ瀹氭��' }, + { id: 4, value: '涓�鏈轰竴妗�24灏忔椂鏈慨澶�' }, + { id: 5, value: '鏃堕挓涓嶅悓姝�24灏忔椂鏈慨澶�' }, + ], + tableData: [{ + name: '瑙嗛骞冲潎鍦ㄧ嚎鐜�', + content: '97%', + score: '-5' + }, { + name: '涓�鏈轰竴妗�24灏忔椂鏈慨澶�', + content: '5涓�', + score: '-0.5' + }, { + name: '瀛樺偍鏁呴殰', + content: '5灏忔椂', + score: '-0.3' + }, { + name: '鏃堕挓涓嶅悓姝�24灏忔椂鏈慨澶�', + content: '3涓�', + score: '-0.5' + }], + // 杩愮淮绫诲瀷 + categoryList: [ + { id: 1, value: '瑙嗛鐩戞帶' }, + { id: 2, value: '杞﹁締璇嗗埆' }, + { id: 3, value: '浜鸿劯璇嗗埆' }, + ], + manualScoreOpen: false, + manualScoreForm: {}, + manualScoreTitle: '', + // 閬僵灞� + loading: true, + // 閫変腑鏁扮粍 + ids: [], + // 闈炲崟涓鐢� + single: true, + // 闈炲涓鐢� + multiple: true, + // 鏄剧ず鎼滅储鏉′欢 + showSearch: true, + // 鎬绘潯鏁� + total: 0, + // 鑰冩牳缁撴灉琛ㄦ牸鏁版嵁 + checkResultList: [ + { + date: '2024-04-02', + target: '鑷祦浜曞尯', + platformOnline: '97%', + monitorQualification: '97%', + monitorRegistration: '97%', + archivesRate: '97%', + siteOnline: '97%', + videoAvailable: '97%', + annotationAccuracy: '97%', + timingAccuracy: '97%', + keySiteOnline: '97%', + keyVideoAvailable: '97%', + keyAnnotationAccuracy: '97%', + keyTimingAccuracy: '97%', + keyCommandImageInspection: '97%', + keyCommandImageDirectoryTree: '97%', + onlineInspectionPlatform: '97%', + videoTransmissionAssetsAccuracy: '97%', + videoTransmissionAssetsWeakPasswordScore: '97%', + videoTransmissionDangerousAssetsScore: '97%', + videoTransmissionBoundaryIntegrityDetection: '97%', + operatingRate: '97%', + }, + { + date: '2024-04-03', + target: '鑷祦浜曞尯', + platformOnline: '97%', + monitorQualification: '97%', + monitorRegistration: '97%', + archivesRate: '97%', + siteOnline: '97%', + videoAvailable: '97%', + annotationAccuracy: '97%', + timingAccuracy: '97%', + keySiteOnline: '97%', + keyVideoAvailable: '97%', + keyAnnotationAccuracy: '97%', + keyTimingAccuracy: '97%', + keyCommandImageInspection: '97%', + keyCommandImageDirectoryTree: '97%', + onlineInspectionPlatform: '97%', + videoTransmissionAssetsAccuracy: '97%', + videoTransmissionAssetsWeakPasswordScore: '97%', + videoTransmissionDangerousAssetsScore: '97%', + videoTransmissionBoundaryIntegrityDetection: '97%', + operatingRate: '97%', + } + + ], + scoreTotal: 3, + // 寮瑰嚭灞傛爣棰� + title: "", + // 鏄惁鏄剧ず寮瑰嚭灞� + scoreOpen: false, + ruleOpen: false, + ruleDetailOpen: false, + // 閫昏緫鍒犻櫎鏃堕棿鑼冨洿 + daterangeCheckTime: [], + + // 琛ㄥ崟鍙傛暟 + form: {}, + scoreForm: {}, + ruleForm: {}, + jsonRule: {}, + // 鑰冩牳瑙勫垯鍒楄〃 + ruleList: [ + {ruleName: '骞冲彴鍦ㄧ嚎鐜�',ruleWeight: 0.5}, + {ruleName: '涓�鏈轰竴妗e悎鏍肩巼',ruleWeight: 0.5}, + {ruleName: '涓�鏈轰竴妗e湪绾跨巼',ruleWeight: 0.5}, + ], + // 鑰冩牳璁″垎琛ㄦ牸鏁版嵁 + scoreList: [], + //杩濈害瑙勫垯璇锋眰鍙傛暟 + queryParams: { + pageNum: 1, + pageSize: 10, + ruleName: null, + ruleStatus: null, + createTime: null, + }, + //鑰冩牳鍒嗘暟璇锋眰鍙傛暟 + scoreQueryParams: { + pageNum: 1, + pageSize: 10, + examineCategory: 2, + }, + pickerOptions: { + disabledDate(time) { + return time.getTime() > Date.now(); + }, + shortcuts: [{ + text: '浠婂ぉ', + onClick(picker) { + picker.$emit('pick', new Date()); + } + }, { + text: '鏄ㄥぉ', + onClick(picker) { + const date = new Date(); + date.setTime(date.getTime() - 3600 * 1000 * 24); + picker.$emit('pick', date); + } + }, { + text: '涓�鍛ㄥ墠', + onClick(picker) { + const date = new Date(); + date.setTime(date.getTime() - 3600 * 1000 * 24 * 7); + picker.$emit('pick', date); + } + }] + }, + value1: '', + value2: '', + // 琛ㄥ崟鏍¢獙 + rules: { + } + }; + }, + created() { + //鑰冩牳鎴愮哗璇︽儏璺宠浆鍙傛暟鎺ユ敹 + if(this.$route.query.detail){ + this.detail = this.$route.query.detail + console.log(this.$route.query.detail,"detail------------") + } + // 鑰冩牳瑙勫垯鍒楄〃 + // this.getRuleList(); + // 鑰冩牳绉垎鍒楄〃 + this.getScoreList(); + // this.selectUnit(); + this.selectExamine(); + }, + methods: { + handleChange(val) { + console.log(val); + }, + // 杩愮淮鍏徃涓嬫媺鏁版嵁 + // selectUnit() { + // unitSelect().then(res => { + // this.unitList = res.data; + // }) + // }, + // 鑰冩牳涓嬫媺鏁版嵁 + selectExamine() { + publishSelect().then(res => { + this.examineList = res.data; + }) + }, + /** 鏌ヨ鑰冩牳璁″垎鍒楄〃 */ + getScoreList() { + this.loading = true; + listScore(this.scoreQueryParams).then(response => { + this.scoreList = response.rows; + this.loading = false; + }); + }, + /** 鏌ヨ杩濈害瑙勫垯鍒楄〃 */ + getRuleList() { + this.loading = true; + if (null != this.daterangeCreateTime && '' != this.daterangeCreateTime) { + this.queryParams["start"] = this.daterangeCreateTime[0]; + this.queryParams["end"] = this.daterangeCreateTime[1]; + } + listCheckRule(this.queryParams).then(response => { + this.ruleList = response.data; + this.total = response.total; + this.loading = false; + }); + }, + frequencyFormatter(row) { + if (row.frequency === "1") { + return "鏈堝害鑰冩牳" + } + if (row.frequency === "2") { + return "瀛e害鑰冩牳" + } + }, + examineRangeFormatter(row) { + if (row.examineRange === "1") { + return "鍒嗗眬鑰冩牳" + } + if (row.examineRange === "2") { + return "甯傚眬鑰冩牳" + } + }, + /** 鏌ヨ鑰冩牳缁撴灉鍒楄〃 */ + getCheckResult() { + this.loading = true; + getCheckResult(id).then(response => { + this.detail = response.data; + this.loading = false; + }); + }, + // 鍙栨秷鎸夐挳 + cancel() { + this.scoreOpen = false; + this.ruleOpen = false; + this.ruleDetailOpen = false; + this.ruleDetailOpen = false; + this.reset(); + }, + // 琛ㄥ崟閲嶇疆 + reset() { + this.form = { + id: null, + checkUnitId: null, + checkPublishId: null, + checkScore: null, + systemScore: null, + manualScore: null, + checkTime: null, + createTime: null, + updateTime: null, + deleted: null + }; + this.resetForm("form"); + }, + cancelManualScore() { + this.manualScoreForm = {}; + this.manualScoreTitle = ""; + this.manualScoreOpen = false; + }, + submitManualScore() { + if (! this.manualScoreForm.manualScore) { + this.$modal.msgWarning("璇峰~鍐欏垎鏁�"); + return + } + manualScore(this.manualScoreForm).then(res => { + this.$modal.msgSuccess("鎿嶄綔鎴愬姛"); + this.cancelManualScore(); + this.getList(); + }) + }, + handleSetManualScore(row) { + this.manualScoreForm.id = row.id; + this.manualScoreForm.manualScore = parseInt(row.manualScore); + this.manualScoreTitle = row.checkUnitName + '浜哄伐鎵撳垎' + this.manualScoreOpen = true; + }, + + handlePublish(row) { + let text = row.publish == 1 ? '鍙栨秷鍙戝竷' : '鍙戝竷'; + const ids = row.id || this.ids; + this.$modal.confirm('鏄惁纭' + text + '鑰冩牳缁撴灉缂栧彿涓�"' + ids + '"鐨勬暟鎹」锛�').then(function() { + return publishCheckResult(ids); + }).then(() => { + this.getList(); + this.$modal.msgSuccess(text + "鎴愬姛"); + }).catch(() => {}); + + }, + /** 鎼滅储鎸夐挳鎿嶄綔 */ + handleQuery() { + this.queryParams.pageNum = 1; + this.getList(); + }, + /** 閲嶇疆鎸夐挳鎿嶄綔 */ + resetQuery() { + this.daterangeCheckTime = []; + this.resetForm("queryForm"); + this.handleQuery(); + }, + // 澶氶�夋閫変腑鏁版嵁 + handleSelectionChange(selection) { + this.ids = selection.map(item => item.id) + this.single = selection.length!==1 + this.multiple = !selection.length + }, + /** 鏂板鎸夐挳鎿嶄綔 */ + handleAdd() { + this.reset(); + this.open = true; + this.title = "娣诲姞鑰冩牳缁撴灉"; + }, + /** 淇敼绉垎鎸夐挳鎿嶄綔 */ + handleScoreUpdate(row) { + this.reset(); + const id = row.id || this.ids + getScore(id).then(response => { + this.scoreForm = response.data; + this.scoreOpen = true; + this.title = "淇敼鑰冩牳璁″垎"; + }); + }, + /** 淇敼鎸夐挳鎿嶄綔 */ + handleRuleUpdate(row) { + this.reset(); + const id = row.id || this.ids + getCheckRule(id).then(response => { + this.ruleForm = response.data; + this.ruleOpen = true; + this.title = "淇敼鑰冩牳瑙勫垯"; + + }); + }, + // 璇︽儏鎸夐挳 + handleRuleDetail(row) { + this.ruleDetailOpen = true; + this.form = row; + this.jsonRule = JSON.parse(this.form.ruleDetail); + }, + /** 鎻愪氦鎸夐挳 */ + submitForm() { + this.$refs["form"].validate(valid => { + if (valid) { + if (this.form.id != null) { + updateCheckResult(this.form).then(response => { + this.$modal.msgSuccess("淇敼鎴愬姛"); + this.open = false; + this.getList(); + }); + } else { + addCheckResult(this.form).then(response => { + this.$modal.msgSuccess("鏂板鎴愬姛"); + this.open = false; + this.getList(); + }); + } + } + }); + }, + /** 鍒犻櫎鎸夐挳鎿嶄綔 */ + handleDelete(row) { + const ids = row.id || this.ids; + this.$modal.confirm('鏄惁纭鍒犻櫎鑰冩牳缁撴灉缂栧彿涓�"' + ids + '"鐨勬暟鎹」锛�').then(function() { + return delCheckResult(ids); + }).then(() => { + this.getList(); + this.$modal.msgSuccess("鍒犻櫎鎴愬姛"); + }).catch(() => {}); + }, + /** 瀵煎嚭鎸夐挳鎿嶄綔 */ + handleExport() { + this.download('system/checkResult/export', { + ...this.queryParams + }, `checkResult_${new Date().getTime()}.xlsx`) + } + } +}; +</script> +<style scoped> + +.line { + display: flex; + flex-direction: row; + justify-content: flex-start; + align-items: center; +} + +.line-right { + width: 50px; +} +.input{ + width: 200px; +} + +.input-w { + margin-left: 5px; + width: 70px; +} +.row-warp { + display: flex; + flex-direction: column; + justify-content: center; + text-align: center; + border: solid 1px gray; + /*padding: 3px;*/ +} +.row { + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + border-bottom: solid 1px gray; + padding: 3px; +} +.row:last-of-type { + border-bottom: none; +} +.row-left { + flex: 2; + border-right: solid 1px gray; +} +.row-right { + flex: 4; + display: flex; + flex-direction: row; + justify-content: center; +} +</style> diff --git a/src/views/system/result/detail/index1.vue b/src/views/system/result/detail/index1.vue new file mode 100644 index 0000000..d8b604f --- /dev/null +++ b/src/views/system/result/detail/index1.vue @@ -0,0 +1,185 @@ +<template> + <div style="padding: 15px"> + <div style="display: flex;flex-direction: row;"> + <div class="now-item"> + <div class="box now"> + <div class="title"> + 瑙嗛 + </div> + <div> + 98 + </div> + </div> + </div> + <div class="now-item"> + <div class="box now"> + <div class="title"> + 浜鸿劯 + </div> + <div> + 98 + </div> + </div> + </div> + <div class="now-item"> + <div class="box now"> + <div class="title"> + 鐩戞帶 + </div> + <div> + 98 + </div> + </div> + </div> + <div style="justify-content: center;align-items: center;display: flex;width: 80px"> + <i class="el-icon-caret-left">鏈湀</i> + </div> + </div> + + <div style="margin-top: 35px"> + <el-table + :data="tableData" + style="width: 100%"> + <el-table-column + label="鏈堜唤" + prop="month"> + </el-table-column> + <el-table-column + label="浜鸿劯" + prop="renlian"> + </el-table-column> + <el-table-column + label="瑙嗛" + prop="shipin"> + </el-table-column> + <el-table-column + label="杞﹁締" + prop="cheliang"> + </el-table-column> + <el-table-column + align="right"> + <template slot="header" slot-scope="scope"> + <el-date-picker + size="mini" + style="width: 100%" + v-model="searchForm.time" + type="monthrange" + range-separator="~" + start-placeholder="寮�濮嬫湀" + end-placeholder="缁撴潫鏈�"> + </el-date-picker> + </template> + <template slot-scope="scope"> + <el-button + size="mini" + @click="handleDetail(scope.$index, scope.row)">璇︽儏</el-button> + </template> + </el-table-column> + </el-table> + </div> + + <div style="text-align: right; margin-top: 10px"> + <el-pagination + @size-change="handleSizeChange" + @current-change="handleCurrentChange" + :current-page="currentPage4" + :page-sizes="[5, 10, 20]" + :page-size="5" + layout="total, sizes, prev, pager, next, jumper" + :total="5"> + </el-pagination> + </div> + + </div> +</template> + +<script> +export default { + name: 'index', + data() { + return { + tableData: [ + { + renlian: 94, + shipin: 89.5, + cheliang: 92, + month: "2024骞�3鏈�" + }, + { + renlian: 94, + shipin: 89.5, + cheliang: 92, + month: "2024骞�2鏈�" + }, + { + renlian: 94, + shipin: 89.5, + cheliang: 92, + month: "2024骞�1鏈�" + }, + { + renlian: 94, + shipin: 89.5, + cheliang: 92, + month: "2023骞�12鏈�" + }, + , + { + renlian: 94, + shipin: 89.5, + cheliang: 92, + month: "2023骞�11鏈�" + }, + ], + searchForm: { + time: null, + } + } + }, + methods: { + handleSizeChange(val) { + console.log(`姣忛〉 ${val} 鏉); + }, + handleCurrentChange(val) { + console.log(`褰撳墠椤�: ${val}`); + }, + handleDetail(index, row) { + console.log(index, row); + this.$router.push("/examine/detail/detail") + }, + handleDelete(index, row) { + console.log(index, row); + } + }, +} +</script> + +<style scoped> +.now-item { + flex: 1; + display: flex; + justify-content: center; + align-items: center; +} +.now { + /*background-color: #42b983;*/ + height: 80px !important; +} +.box { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + box-shadow: 0 2px 6px hsla(0, 0%, 7%, .1); + border-radius: 10px; + width: 240px; + height: 50px; +} +.box:hover{ + cursor: pointer; +} + +.title { + font-size: larger; +} +</style> -- Gitblit v1.8.0