src/api/audit/submitApi.js
@@ -14,6 +14,8 @@ exceptionId:id, auditStatus:status } if(reviewer == '' || reviewer == null){ params.checker = 'admin' }else{ src/api/setting/exceptionSetting.js
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,14 @@ import { $http } from '@/api/index.js'; export default { /** * æäº¤ æ°æ®è·åçé ç½®åæ°ä¿®æ¹ * @paramï¼ é 置表对åºçåæ®µå¯¹è±¡ * @returnsï¼ */ submitExceptionSetting(params){ console.log('å¼å¸¸é ç½®æäº¤çåæ°ä¸ºï¼',params); return $http.post('/dust/requestSetting/modify',params) } } src/api/setting/requestTaskSetting.js
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,14 @@ import { $http } from '@/api/index.js'; export default { /** * æäº¤ æ°æ®è·åçé ç½®åæ°ä¿®æ¹ * @paramï¼ é 置表对åºçåæ®µå¯¹è±¡ * @returnsï¼ */ submitRequestSetting(params){ console.log('请æ±é ç½®æäº¤çåæ°ä¸ºï¼',params); // return $http.post('/dust/requestSetting/modify',params) } } src/components/layout/AppAside.vue
@@ -136,10 +136,15 @@ å岿°æ®ç®¡ç </el-menu-item> <!-- <el-menu-item index="/management" > <el-icon><i-ep-Histogram /></el-icon> æ°æ®æ¥å ¥ç®¡ç </el-menu-item> --> <el-menu-item index="/config" v-show="menu[6].avalue" @click="changeIcon(6)"> <img src="@/assets/generalModel.png" height="23"> åæ°é ç½® </el-menu-item> <el-menu-item index="/config" v-show="!menu[6].avalue" @click="changeIcon(6)"> <img src="@/assets/generalModel2.png" height="23"> åæ°é ç½® </el-menu-item> <!-- <el-menu-item index="report" > src/router/index.js
@@ -63,12 +63,12 @@ component: () => import('@/views/data_management/DataAccessManagement.vue') }, // ä¸å¡æ¥è¡¨ // åæ°é ç½® { path: '/report', name: 'report', meta: { title: 'ä¸å¡æ¥è¡¨' }, component: () => import('@/views/data_management/BusinessReport.vue') path: '/config', name: 'config', meta: { title: 'åæ°é ç½®' }, component: () => import('@/views/data_management/ParameterConfiguration.vue') }, // æ°æ®æ¥å ¥é ç½® src/sfc/TimeSinglePicker.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,65 @@ <!-- å个 æ¥ææ¶é´éæ©å¨ç»ä»¶ 带æ¥å¨æå¿«æ·é项 åä¸å¤©æ¯å½åæ¶é´çåä¸å¤©ç00ç¹å°23ï¼59ï¼59 åä¸å¤© å ä¸ä¸ä¸ªæåæ · ä¼å°åå§é»è®¤æ¶é´ï¼ä¸å¨åï¼åæ¹åçæ¶é´éè¿äºä»¶âsubmitTimeâä¼ éç»ç¶ç»ä»¶ åå§æ¸²ææ¶å°±å°æ¶é´ä¼ éç»ç¶ç»ä»¶ï¼ ** å¨ç¶ç»ä»¶ä¸è®¾ç½® <TimeSinglePicker @submit-time="(n) => (form.staticsDailyTime = n)" :selected-time="form.staticsDailyTime"/> *** --> <script> import dayjs from 'dayjs' export default { props: { // ç¶ç»ä»¶ä¼ å ¥çæ¶é´ selectedTime: { type: String, default: '' }, // æ¯å¦è®¾ç½®åªè¯»å±æ§ readOnly: { type: Boolean, default: false } }, emits: ['submitTime'], data() { return { time: '', shortcuts: [] } }, // watch: { // selectedTime(newVal) { // console.log('time', this.selectedTime) // if (newVal != '') { // this.time = this.selectedTime // } // } // }, mounted() { console.log('time', this.selectedTime) this.time = this.selectedTime }, methods: { } } </script> <template> <el-date-picker v-model="time" type="datetime" placeholder="éæ©æ¶é´" :shortcuts="shortcuts" value-format="YYYY-MM-DD HH:mm:ss" @change="$emit('submitTime', time)" /> </template> <style scoped></style> src/utils/chartFunction/exceptionOption.js
@@ -8,7 +8,7 @@ * @paramï¼å¼å¸¸ç±»å * @returnsï¼ */ setExceptionChartOption( setExceptionChartOption({ xData, yData, exceptionBeginTime, @@ -19,6 +19,7 @@ areaObj, lineColor, exceptionType } ) { switch (exceptionType) { case '0': @@ -303,7 +304,7 @@ name: 'é¢ç²ç©æµåº¦', type: 'line', data: yData.map((item) => { if (item <= 0.01) { if (item <= 0.02) { return { value: item, itemStyle: { @@ -333,9 +334,8 @@ { name: 'æ°æ®è¶ ä½', type: 'average', yAxis: 0.01, yAxis: 0.02, lineStyle: { // color: '#ff0000' color: 'red' } } src/views/data_management/BusinessReport.vue
ÎļþÒÑɾ³ý src/views/data_management/ParameterConfiguration.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,215 @@ <script> import TimeSinglePicker from '@/sfc/TimeSinglePicker.vue' import CompEditRequest from '@/views/data_management/components/CompEditRequest.vue' import CompEditException from '@/views/data_management/components/CompEditException.vue' export default { components: { TimeSinglePicker, CompEditRequest, CompEditException }, data() { return { activeName: 'first', // å¯¹è¯æ¡æ¾ç¤º dialog:{ formRequestVisible: false, formExceptionVisible: false }, request: [ { user: 'admin', updateTime: '2023-10-10 09:16:41', region: 'éå±±åº', version: '1.0', requestStartTime: '2023-10-12 08:43:00', requestEndTime: null, requestIntervalSeconds: 43200, requestRangeHour: 8, requestRangeIntervalSeconds: 5, requestFailWaitSeconds: 120, requestRetryTimes: 4, requestCookieValidDuration: 48, staticsDailyTime: '2023-10-11 09:00:00', staticsMonthlyTime: '2023-10-01 10:00:00', loginFailWaitSeconds: 5, loginRetryTimes: 5, taskRetryWaitSeconds: 120, firstRequestOffsetDays: 30 } ], exceptionSetting: [{ user: 'admin', updateTime: '2023-10-10 09:16:41', region: 'éå±±åº', version: '1.0', missDataMinutes: 45, dataLow: 0.02, longTimeNoChange: 5, mutationNum: 2, mutationRate: 1, nearExceedLowValue: 0.7, nearExceedHighValue: 1, nearExceedNum: 4, dayExceedBorderlineLowNum: 6, dayExceedBorderlineHighNum: 7, changeTrendGroup: 12, changeTrendInterval: 12, changeTrendRate: 1, changeTrendTimes: 3, exceedingStandard: 1 }], form_1: { user: '11', requestStartTime: '', requestEndTime: '', staticsDailyTime: '', staticsMonthlyTime: '' }, loading:false, } }, mounted() {}, methods: { handleClick(tab, event) { // console.log(tab, event) }, fetchData(){ console.log('è·åè¡¨æ ¼æ°æ®'); this.loading = true setTimeout(() => { this.loading = false }, 700); }, // åæ¶ cancel_1() { this.dialogTableVisible = false }, // æäº¤ submit() { this.dialogTableVisible = false }, render() { ElMessageBox.alert( h('div', ['this is', h('em', { style: { color: 'teal', fontSize: '14px' } }, 'Vnode')]) ) }, } } </script> <template> <el-row> <el-col> <em>åæ°é ç½®</em> <el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick"> <el-tab-pane label="æ°æ®è·å" name="first" > <div>å±ç¤º</div> <div>ä¿®æ¹</div> <el-table :data="request" border> <el-table-column prop="user" label="ç¨æ·å"> </el-table-column> <el-table-column prop="updateTime" label="æ´æ°æ¶é´"> </el-table-column> <el-table-column prop="region" label="åºå"> </el-table-column> <el-table-column prop="version" label="çæ¬"> </el-table-column> <el-table-column prop="requestStartTime" label="æ°æ®è·åå¼å§æ¶é´"> </el-table-column> <el-table-column prop="requestEndTime" label="æ°æ®è·åç»ææ¶é´"> </el-table-column> <el-table-column prop="requestIntervalSeconds" label="æ°æ®è·åé¢ç"> </el-table-column> <el-table-column prop="requestRangeHour" label="ä»»å¡å段æ¶é¿"> </el-table-column> <el-table-column prop="requestRangeIntervalSeconds" label="åæ®µæ§è¡æ¶çæ¯æ®µçé´éæ¶é´"> </el-table-column> <el-table-column prop="requestFailWaitSeconds" label="è·åæ°æ®ä»»å¡å¼å¸¸æ¶å次å°è¯é´é"> </el-table-column> <el-table-column prop="requestRetryTimes" label="è·åæ°æ®å¤±è´¥æ¶å次å°è¯çæ»æ¬¡æ°"> </el-table-column> <el-table-column prop="requestCookieValidDuration" label="cookieæææ¶å¸¸é¿"> </el-table-column> <el-table-column prop="staticsDailyTime" label="æ¥ç»è®¡æ§è¡æ¶é´"> </el-table-column> <el-table-column prop="staticsMonthlyTime" label="æç»è®¡æ§è¡æ¶é´"> </el-table-column> <el-table-column prop="loginFailWaitSeconds" label="ç»å½å¤±è´¥çå¾ æ¶é¿"> </el-table-column> <el-table-column prop="loginRetryTimes" label="ç»å½å¤±è´¥å°è¯æ¬¡æ°"> </el-table-column> <el-table-column prop="taskRetryWaitSeconds" label="æ°æ®è·åä»»å¡éæ°å¼å§å°è¯çå¾ æ¶é´"> </el-table-column> <el-table-column prop="firstRequestOffsetDays" label=" æ°æ®è·åå¼å§æ¶é´ç¸å¯¹å½æ¥å¾ååç§»"> </el-table-column> </el-table> <el-button type="primary" size="small" @click="dialog.formRequestVisible = !dialog.formRequestVisible"> ä¿®æ¹é ç½®</el-button > <CompEditRequest v-model="dialog.formRequestVisible" :tableData="request[0]"> </CompEditRequest> </el-tab-pane> <el-tab-pane label="å¼å¸¸åæ" name="second" ><div>å±ç¤º</div> <el-table :data="exceptionSetting" border> <el-table-column prop="user" label="ç¨æ·å"> </el-table-column> <el-table-column prop="updateTime" label="æ´æ°æ¶é´"> </el-table-column> <el-table-column prop="region" label="åºå"> </el-table-column> <el-table-column prop="version" label="çæ¬"> </el-table-column> <el-table-column prop="missDataMinutes" label="æ°æ®è·åå¼å§æ¶é´"> </el-table-column> <el-table-column prop="dataLow" label="æ°æ®è·åç»ææ¶é´"> </el-table-column> <el-table-column prop="longTimeNoChange" label="æ°æ®è·åé¢ç"> </el-table-column> <el-table-column prop="mutationNum" label="ä»»å¡å段æ¶é¿"> </el-table-column> <el-table-column prop="mutationRate" label="åæ®µæ§è¡æ¶çæ¯æ®µçé´éæ¶é´"> </el-table-column> <el-table-column prop="nearExceedLowValue" label="è·åæ°æ®ä»»å¡å¼å¸¸æ¶å次å°è¯é´é"> </el-table-column> <el-table-column prop="nearExceedHighValue" label="è·åæ°æ®å¤±è´¥æ¶å次å°è¯çæ»æ¬¡æ°"> </el-table-column> <el-table-column prop="nearExceedNum" label="cookieæææ¶å¸¸é¿"> </el-table-column> <el-table-column prop="dayExceedBorderlineLowNum" label="æ¥ç»è®¡æ§è¡æ¶é´"> </el-table-column> <el-table-column prop="dayExceedBorderlineHighNum" label="æç»è®¡æ§è¡æ¶é´"> </el-table-column> <el-table-column prop="changeTrendGroup" label="ç»å½å¤±è´¥çå¾ æ¶é¿"> </el-table-column> <el-table-column prop="changeTrendInterval" label="ç»å½å¤±è´¥å°è¯æ¬¡æ°"> </el-table-column> <el-table-column prop="changeTrendRate" label="æ°æ®è·åä»»å¡éæ°å¼å§å°è¯çå¾ æ¶é´"> </el-table-column> <el-table-column prop="changeTrendTimes" label=" æ°æ®è·åå¼å§æ¶é´ç¸å¯¹å½æ¥å¾ååç§»"> </el-table-column> <el-table-column prop="exceedingStandard" label=" æ°æ®è·åå¼å§æ¶é´ç¸å¯¹å½æ¥å¾ååç§»"> </el-table-column> </el-table> <div>ä¿®æ¹</div> <CompEditException v-model="dialog.formExceptionVisible" ></CompEditException> <el-button type="primary" size="small" @click="dialog.formExceptionVisible = !dialog.formExceptionVisible"> ä¿®æ¹é ç½®</el-button > </el-tab-pane> </el-tabs> <!-- <el-button @click="render"> 渲æhtml</el-button> --> <!-- <el-button @click="addObj"> å¢å 对象</el-button> --> </el-col> </el-row> </template> <style scoped> .el-row { margin: 20px; } em { font-size: 30px; color: #333333; } </style> <!-- <script> export default { data() { return{ inputValue:null } }, mounted() { }, methods: { } } </script> <template> {{inputValue}} è¾å ¥<el-input v-model.number="inputValue" maxlength="10"> </el-input> </template> --> src/views/data_management/components/CompEditException.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,157 @@ <script> import TimeSinglePicker from '@/sfc/TimeSinglePicker.vue' export default { props: ['modelValue'], emits: ['update:modelValue'], components: { TimeSinglePicker }, computed: { visible: { get() { return this.modelValue }, set(value) { this.$emit('update:modelValue', value) } } }, data() { return { form: { user: 'admin', updateTime: '2023-10-10 09:16:41', region: 'éå±±åº', version: '1.0', missDataMinutes: 45, dataLow: 0.02, longTimeNoChange: 5, mutationNum: 2, mutationRate: 1, nearExceedLowValue: 0.7, nearExceedHighValue: 1, nearExceedNum: 4, dayExceedBorderlineLowNum: 6, dayExceedBorderlineHighNum: 7, changeTrendGroup: 12, changeTrendInterval: 12, changeTrendRate: 1, changeTrendTimes: 3, exceedingStandard: 1 }, describe: null } }, mounted() { this.operation() }, methods: { // æäº¤ submit() { this.visible = false }, // åæ¶ cancel_1() { this.visible = false }, // 对象å¤ç operation() { // console.log(Object.keys(this.form)); // console.log(Object.values(this.form)); console.log(Object.entries(this.form)) let temp = [] let arr = Object.entries(this.form) for (let item of arr) { let obj = {} obj.label = item[0] obj.value = item[1] temp.push(obj) } this.describe = temp console.log(temp) } } } </script> <template> <el-dialog v-model="visible" title="è¯·æ±æ°æ®" align-center> <el-form :model="form" label-width="120px"> <el-form-item label="ç¨æ·å"> <el-input v-model="form.user" disabled /> </el-form-item> <el-form-item label="å¼å§æ¶é´"> <TimeSinglePicker @submit-time="(n) => (form.requestStartTime = n)"></TimeSinglePicker> </el-form-item> <el-form-item label="ç»ææ¶é´"> <TimeSinglePicker @submit-time="(n) => (form.requestEndTime = n)"></TimeSinglePicker> </el-form-item> <el-form-item label="è·åé¢ç"> <el-input-number v-model="num" :min="1" :max="24" @change="handleChange" /> </el-form-item> <el-form-item label="åæ®µæ¶é¿"> <el-input-number v-model="num" :min="1" :max="10" @change="handleChange" /> </el-form-item> <el-form-item label="åæ®µæ§è¡æ¶çæ¯æ®µçé´éæ¶é´"> <el-input-number v-model="num" :min="1" :max="10" @change="handleChange" /> </el-form-item> <el-form-item label="è·åæ°æ®ä»»å¡å¼å¸¸æ¶å次å°è¯é´é"> <el-input-number v-model="num" :min="1" :max="10" @change="handleChange" /> </el-form-item> <el-form-item label="è·åæ°æ®å¤±è´¥æ¶å次å°è¯çæ»æ¬¡æ°"> <el-input-number v-model="num" :min="1" :max="10" @change="handleChange" /> </el-form-item> <el-form-item label="æ¥ç»è®¡"> <TimeSinglePicker @submit-time="(n) => (form.staticsDailyTime = n)" /> </el-form-item> <el-form-item label="æç»è®¡"> <TimeSinglePicker @submit-time="(n) => (form.staticsMonthlyTime = n)" /> </el-form-item> <el-form-item label="ç»å½å¤±è´¥çå¾ æ¶é¿"> <el-input-number v-model="num" :min="1" :max="10" @change="handleChange" /> </el-form-item> <el-form-item label="ç»å½å¤±è´¥å°è¯æ¬¡æ°"> <el-input-number v-model="num" :min="1" :max="10" @change="handleChange" /> </el-form-item> <el-form-item label="ä»»å¡éæ°å¼å§å°è¯çå¾ æ¶é´"> <el-input-number v-model="num" :min="1" :max="10" @change="handleChange" /> </el-form-item> <el-form-item label="æ°æ®è·åå¼å§æ¶é´ç¸å¯¹å½æ¥å¾ååç§»"> <el-input-number v-model="num" :min="1" :max="10" @change="handleChange" /> </el-form-item> </el-form> <template #footer> <el-button @click="cancel_1">åæ¶</el-button> <el-button type="primary" @click="submit">æäº¤</el-button> </template> </el-dialog> <!-- <el-button @click="operation">对象å¤ç</el-button> --> <el-descriptions title="å¼å¸¸åæé ç½®" :column="4" size="large" border> <el-descriptions-item v-for="item in describe" :key="item.label" :label="item.label" label-align="left" align="center" class-name="content-text" label-class-name="label-text" > {{ item.value }} </el-descriptions-item> </el-descriptions> </template> <style scoped> :deep(.label-text) { font-size: 14px !important; font-weight: bold !important; color: #333333 !important; } :deep(.content-text) { color: #333333 !important; } </style> src/views/data_management/components/CompEditRequest.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,248 @@ <script> import TimeSinglePicker from '@/sfc/TimeSinglePicker.vue' import requestTaskSetting from '@/api/setting/requestTaskSetting.js' export default { components: { TimeSinglePicker }, props: { modelValue: { type: Boolean, default: false }, tableData: { type: Object, default: {} } }, emits: ['update:modelValue'], computed: { value: { get() { return this.modelValue }, set(value) { this.$emit('update:modelValue', value) } }, formDataAfterCal() { return { user: this.form.user, updateTime: this.form.updateTime, region: this.form.region, version: this.form.version, requestStartTime: this.form.requestStartTime, requestEndTime: this.form.requestEndTime, requestIntervalSeconds: this.form.requestIntervalSeconds * 3600, requestRangeHour: this.form.requestRangeHour, requestRangeIntervalSeconds: this.form.requestRangeIntervalSeconds, requestFailWaitSeconds: this.form.requestFailWaitSeconds, requestRetryTimes: this.form.requestRetryTimes, requestCookieValidDuration: this.form.requestCookieValidDuration, staticsDailyTime: this.form.staticsDailyTime, staticsMonthlyTime: this.form.staticsMonthlyTime, loginFailWaitSeconds: this.form.loginFailWaitSeconds, loginRetryTimes: this.form.loginRetryTimes, taskRetryWaitSeconds: this.form.taskRetryWaitSeconds, firstRequestOffsetDays: this.form.firstRequestOffsetDays } } }, data() { return { form: { user: 'admin', updateTime: '2023-10-10 09:16:41', region: 'éå±±åº', version: '1.0', requestStartTime: '2023-10-12 08:43:00', requestEndTime: null, requestIntervalSeconds: 12, requestRangeHour: 8, requestRangeIntervalSeconds: 5, requestFailWaitSeconds: 120, requestRetryTimes: 4, requestCookieValidDuration: 48, staticsDailyTime: '2023-10-11 09:00:00', staticsMonthlyTime: '2023-10-01 10:00:00', loginFailWaitSeconds: 5, loginRetryTimes: 5, taskRetryWaitSeconds: 120, firstRequestOffsetDays: 30 }, rules: { requestIntervalSeconds: [{ validator: this.checkRequestIntervalSeconds, trigger: 'blur' }], requestRangeHour: [ { type: 'number', pattern: '/^\d+$/', message: '请è¾å ¥æ°å', trigger: 'blur' } // {pattern:'/^[0-9]+$/'} ] // requestRangeIntervalSeconds: [{ validator: this.checkRequestRangeIntervalSeconds, trigger: 'blur' }], // requestFailWaitSeconds: [{ validator: this.checkRequestFailWaitSeconds, trigger: 'blur' }], // requestRetryTimes: [{ validator: this.checkRequestRetryTimes, trigger: 'blur' }], // loginFailWaitSeconds: [{ validator: this.checkLoginFailWaitSeconds, trigger: 'blur' }], // loginRetryTimes: [{ validator: this.checkLoginRetryTimes, trigger: 'blur' }], // taskRetryWaitSeconds: [{ validator: this.checkTaskRetryWaitSeconds, trigger: 'blur' }], // firstRequestOffsetDays: [{ validator: this.checkFirstRequestOffsetDays, trigger: 'blur' }], } } }, mounted() { // const { ...temp } = this.tableData // this.form = temp }, methods: { // æäº¤ /* submitForm() { // åéä¿®æ¹çè¯·æ± requestTaskSetting.submitRequestSetting(this.form) this.$message.success('æäº¤æå') this.value = false }, */ async submitForm(formEl) { if (!formEl) return await formEl.validate((valid, fields) => { if (valid) { console.log('submit!') } else { console.log('error submit!', fields) } }) }, // åæ¶ cancel_1() { this.value = false }, checkRequestIntervalSeconds(rule, value, callback) { if (!value) { return callback(new Error('请è¾å ¥ææå¼')) } setTimeout(() => { if (!Number.isInteger(value)) { callback(new Error('请è¾å ¥æ°å')) } else { if (value < 2 || value > 24) { callback(new Error('èå´å¨2~24')) } else { callback() } } }, 300) } } } </script> <template> <el-dialog v-model="value" title="æ°æ®è·åé ç½®åæ°ä¿®æ¹" close-delay="200" align-center> <el-form :model="form" ref="ruleFormRef" label-width="210px" status-icon :rules="rules"> <el-form-item label="ç¨æ·å"> <el-input v-model="form.user" disabled /> </el-form-item> <el-form-item label="å¼å§æ¶é´"> <TimeSinglePicker :selectedTime="form.requestStartTime" @submit-time="(n) => (form.requestStartTime = n)" ></TimeSinglePicker> </el-form-item> <el-form-item label="ç»ææ¶é´"> <TimeSinglePicker @submit-time="(n) => (form.requestEndTime = n)" :selected-time="form.requestEndTime" ></TimeSinglePicker> </el-form-item> <!-- ---------------------------------------------------------- --> <el-form-item label="è·åé¢ç" prop="requestIntervalSeconds"> <el-input v-model.number="form.requestIntervalSeconds"> <template #append>å°æ¶/次</template> </el-input> </el-form-item> <el-form-item label="ä»»å¡å段æ¶é¿" prop="requestRangeHour"> <el-input v-model.number="form.requestRangeHour" :min="1" :max="10"> <template #append>å°æ¶</template> </el-input> </el-form-item> <el-form-item label="åæ®µæ§è¡çé´é" prop="requestRangeIntervalSeconds"> <el-input v-model.number="form.requestRangeIntervalSeconds" :min="1" :max="10"> <template #append>ç§</template> </el-input> </el-form-item> <el-form-item label="è·åä»»å¡å¼å¸¸æ¶å次å°è¯é´é" prop="requestFailWaitSeconds"> <el-input v-model.number="form.requestFailWaitSeconds" :min="1" :max="10"> <template #append>ç§</template> </el-input> </el-form-item> <el-form-item label="è·å失败æ¶å次å°è¯çæ»æ¬¡æ°" prop="requestRetryTimes"> <el-input v-model.number="form.requestRetryTimes" :min="1" :max="10"> <template #append>次æ°</template> </el-input> </el-form-item> <el-form-item label="æ¥ç»è®¡"> <TimeSinglePicker @submit-time="(n) => (form.staticsDailyTime = n)" :selected-time="form.staticsDailyTime" /> </el-form-item> <el-form-item label="æç»è®¡"> <TimeSinglePicker @submit-time="(n) => (form.staticsMonthlyTime = n)" :selected-time="form.staticsMonthlyTime" /> </el-form-item> <el-form-item label="ç»å½å¤±è´¥çå¾ æ¶é¿" prop="loginFailWaitSeconds"> <el-input v-model.number="form.loginFailWaitSeconds" :min="1" :max="10"> <template #append>ç§</template> </el-input> </el-form-item> <el-form-item label="ç»å½å¤±è´¥å°è¯æ¬¡æ°" prop="loginRetryTimes"> <el-input v-model.number="form.loginRetryTimes" :min="1" :max="10"> <template #append>次æ°</template> </el-input> </el-form-item> <el-form-item label="ä»»å¡éæ°å¼å§å°è¯çå¾ æ¶é´" prop="taskRetryWaitSeconds"> <el-input v-model.number="form.taskRetryWaitSeconds" :min="1" :max="10"> <template #append>ç§</template> </el-input> </el-form-item> <el-form-item label="è·åå¼å§æ¶é´ç¸å¯¹å½æ¥å¾ååç§»" prop="firstRequestOffsetDays"> <el-input v-model.number="form.firstRequestOffsetDays" :min="1" :max="10"> <template #append>天</template> </el-input> </el-form-item> </el-form> <template #footer> <el-button @click="cancel_1">åæ¶</el-button> <el-button type="primary" @click="submitForm(ruleFormRef)">æäº¤</el-button> </template> </el-dialog> </template> <style scoped> /* .el-form { display: flex; flex-direction: column; } */ /* .el-form-item { display: flex; margin-top: 5px; } */ /* .el-input { width: 700px; } */ </style> src/views/exception/FlightInspection.vue
@@ -1,4 +1,4 @@ <script> <!-- <script> import CompFlightInspection from '@/views/exception/components/CompFlightInspection.vue' export default { components: { @@ -24,4 +24,1330 @@ <style scoped> </style> --> <script> import { defineAsyncComponent } from 'vue' import TimeShortCuts from '@/sfc/TimeShortCuts.vue' import { useCommonFunction } from '@/utils/common.js' import AreaAndmonitorType from '@/sfc/AreaAndmonitorType.vue' import ButtonClick from '@/sfc/ButtonClick.vue' import index from '@/utils/exception_common_function/index.js' // å¼å¸¸å¾å½¢å¼æ¥ç»ä»¶ const DustLineChart = defineAsyncComponent(() => import('@/views/exception/components/DustLineChart.vue')) import exceptionApi from '@/api/exceptionApi.js' import dayjs from 'dayjs' import { ElMessage } from 'element-plus' import AnalysisCard from '@/views/exception/components/AnalysisCard.vue' import DutyCompany from '@/sfc/DutyCompany.vue' import StreetInfo from '@/sfc/StreetInfo.vue' import historyApi from '@/api/historyApi.js' import time from '@/utils/time.js' import lineChart from '@/utils/chartFunction/lineChart.js' import exceptionOption from '@/utils/chartFunction/exceptionOption.js' import exception0 from '@/assets/exception/exception0.png' import exception1 from '@/assets/exception/exception1.png' import exception2 from '@/assets/exception/exception2.png' import exception3 from '@/assets/exception/exception3.png' import exception4 from '@/assets/exception/exception4.png' import exception5 from '@/assets/exception/exception5.png' import exception6 from '@/assets/exception/exception6.png' import exception7 from '@/assets/exception/exception7.png' import CompDialogDetail from '@/views/exception/components/CompDialogDetail.vue' export default { props: { // ç¹ä½åå siteName: { type: String, default: '' }, // æ¥æ¶é´æè ææ¶é´ time:{ type:String, default:'' }, // å±ç¤ºé¡µé¢çå ¨é¨ showAll: { type: Boolean, default: true }, // 0ä»£è¡¨æ¥æ¶é´ï¼1ä»£è¡¨ææ¶é´ timeType:{ type:Number, default:-1 } }, components: { TimeShortCuts, DustLineChart, ButtonClick, AreaAndmonitorType, AnalysisCard, DutyCompany, StreetInfo, CompDialogDetail }, data() { return { // 表åå 容 form: { // ç«ç¹åç§° name: '', // è¿ç»´å dutyCompany: [], // è¡é street: [], // éæ©çå¼å¸¸ç±»å exceptionName: [] }, beginTime: '', endTime: '', // è¿åçæ°æ® tableData: [], // è¡¨æ ¼å±ç¤ºçæ°æ® displayData: [], // è¡¨æ ¼é«åº¦ tableHeight: 400, // è¡¨æ ¼æ¾ç¤º isTableShow: false, // å®¡æ ¸è¾ å©æé®æ¾ç¤º auditButton: false, // å½å页 currentPage: 1, // æ¯é¡µæ¡æ° pageSize: 20, // è¡¨æ ¼çæ»è®°å½æ° total: 0, // æ¥è¯¢æé®æ æ°æ®æ¶ isNoData: { exception0: true, exception1: true, exception2: true, exception3: true, exception4: true, exception5: true, exception6: true, exception7: true, exception8: true }, // eslint-disable-next-line no-undef // å¯¹è¯æ¡æ¾ç¤º dialogTableVisible: false, // ä¿åå¼å¸¸å¯¹åºçåºéºåç§°å设å¤ç¼å· exception: { // æçµææç½ exception0: [], // æ°æ®è¶ ä½ exception1: [], // è¶ æ exception2: [], // æ°æ®é¿æ¶æ®µæ æ³¢å¨ exception3: [], // é级çªåå¼å¸¸ exception4: [], // 临è¿è¶ æ å¼å¸¸ exception5: [], // åæ¥è¶ æ æ¬¡æ°ä¸´çå¼å¸¸ exception6: [], // æ»å¨å¹³åå¼å¼å¸¸ exception7: [], // ææçå¼å¸¸ exception8: [], // è¯¥æ¶æ®µçå¼å¸¸æ°é exception0Num: 0, exception1Num: 0, exception2Num: 0, exception3Num: 0, exception4Num: 0, exception5Num: 0, exception6Num: 0, exception7Num: 0, exception8Num: 0 }, // ç«ç¹æ»æ°é siteTotal: 0, // éä¸è¡¨æ ¼å½åè¡çæ°æ® tableCurrentRowData: null, // éä¸è¡¨æ ¼å½åè¡çç´¢å¼ selectedRowIndex: -2, // 页é¢ä¸çæé®å è½½ç¶æ loading: { // æ¥è¯¢æé® queryButton: false, // è¡¨æ ¼å è½½ä¸ tableLoading: false, // ä¸ä¸æ¡æé® preButton: false, // ä¸ä¸æ¡æé® afterButton: false, // æçº¿å¾ lineChart: false }, dialog: { // æå¼å¯¹è¯æ¡è¯·æ±è¯¥åºé´çå岿°æ® historyData: [], // 该æ¶é´æ®µçå¼å¸¸æ¡æ° exceptionTotal: 0, // æçº¿å¾é 置项 option: {}, // âä¸ä¸æ¡âæé®æ¯å¦å¯ä»¥è¢«ç¹å»ç¶æ isPreCantouch: false, // âä¸ä¸æ¡âæé®æ¯å¦å¯ä»¥è¢«ç¹å»ç¶æ isNextCantouch: false, // å¼å¸¸çåä¸ååºé´æææ°æ® allExceptionTimeData: [] }, // æ è®°ä½ flag: { // æ°æ®å è½½æ¶ ä¸ä¸æ¡æé®ä¸è½åç¹å» banTouch: 0, // 0代表å页ï¼1代表ä¸å页 originClick: 0 }, areaColor: null } }, setup() { const { isExceedOneMonth } = useCommonFunction() return { isExceedOneMonth } }, // çå¬ å¤ææé®æ¯å¦å¯ç¹å» watch: { selectedRowIndex(newVaue) { // å¤äºè¡¨æ ¼çæå䏿¡æ°æ® 设置âä¸ä¸æ¡âæé®ä¸å¯ç¹ if (newVaue === 0) { this.dialog.isPreCantouch = true //ç¨æ·å ç¹äºç¬¬ä¸æ¡ï¼pre为true,ç¶åç¹å»æå䏿¡,next为trueãæ¤æ¶ä¸¤ä¸ªæé®é½è¢«å°é if (this.dialog.isNextCantouch == true) { this.dialog.isNextCantouch = false } } // å¤äºè¡¨æ ¼ç¬¬ä¸æ¡æ°æ® 设置âä¸ä¸æ¡âæé®ä¸å¯ç¹ else if (newVaue === this.displayData.length - 1) { this.dialog.isNextCantouch = true //ç¨æ·å ç¹äºè¡¨æ ¼æå䏿¡,next为true,ç¶åç¹å»ç¬¬ä¸æ¡ï¼pre为trueãæ¤æ¶ä¸¤ä¸ªæé®é½è¢«å°é if (this.dialog.isPreCantouch == true) { this.dialog.isPreCantouch = false } } // å¤äºè¡¨æ ¼çä¸é´è¡ å°æé®è®¾ç½®ä¸ºå¯ç¹å»ç¶æ else { this.dialog.isPreCantouch = false this.dialog.isNextCantouch = false } }, dialogTableVisible() { window.addEventListener('resize', this.updateChart) }, // 页é¢å è½½æ¶showAllæä¼åå䏿¬¡ // 为true表示çé£è¡å·¡æ£é¡µé¢ showAll(){ if(this.showAll){ this.backExceptionDataAWeekAgo() } }, // siteName(){ // if(this.siteName!=''){ // this.beginTime = dayjs(this.month).startOf('month').format('YYYY-MM-DD HH:mm:ss') // this.endTime = dayjs(this.month).endOf('month').format('YYYY-MM-DD HH:mm:ss') // this.backExceptionDataAWeekAgo() // this.getShopNames() // } // }, timeType(){ if(this.timeType == '0'){ this.beginTime = dayjs(this.time).format('YYYY-MM-DD 00:00:00') this.endTime = dayjs(this.time).format('YYYY-MM-DD 23:59:59') }else if(this.timeType == '1'){ this.beginTime = dayjs(this.time).startOf('month').format('YYYY-MM-DD HH:mm:ss') this.endTime = dayjs(this.time).endOf('month').format('YYYY-MM-DD HH:mm:ss') } this.backExceptionDataAWeekAgo() this.getShopNames() }, watch:{ dialogTableVisible:{ handler(newValue){ console.log('çå1',this.dialogTableVisible); } } }, }, computed: { exceptionAllNum() { let sum = this.exception.exception0Num + this.exception.exception1Num + this.exception.exception2Num + this.exception.exception3Num + this.exception.exception4Num + this.exception.exception5Num + this.exception.exception6Num + this.exception.exception7Num + this.exception.exception8Num if (sum == 0) { return 1 } else { return sum } }, long_time_notchange() { let sum = this.exception.exception0Num + this.exception.exception1Num + this.exception.exception2Num + this.exception.exception3Num + this.exception.exception4Num + this.exception.exception5Num + this.exception.exception6Num + this.exception.exception7Num + this.exception.exception8Num if (sum == 0) { return 0 } else { return ( 100 - (this.exception.exception0Num / this.exceptionAllNum) * 100 - (this.exception.exception1Num / this.exceptionAllNum) * 100 - (this.exception.exception2Num / this.exceptionAllNum) * 100 - (this.exception.exception4Num / this.exceptionAllNum) * 100 - (this.exception.exception5Num / this.exceptionAllNum) * 100 - (this.exception.exception6Num / this.exceptionAllNum) * 100 - (this.exception.exception7Num / this.exceptionAllNum) * 100 - (this.exception.exception8Num / this.exceptionAllNum) * 100 ).toFixed(1) } }, // ç¬¬ä¸æå¡ç cardRow() { return [ { siteName: this.exception.exception4, exceptionType: '4', exceptionName: 'é级çªå', iconSrc: exception4, siteNum: this.exception.exception4.length, exceptionNum: this.exception.exception4Num, isNoDataStatus: this.isNoData.exception4, span: 5 }, { siteName: this.exception.exception5, exceptionType: '5', exceptionName: '临è¿è¶ æ å¼å¸¸', iconSrc: exception5, siteNum: this.exception.exception5.length, exceptionNum: this.exception.exception5Num, isNoDataStatus: this.isNoData.exception5, span: 5 }, { siteName: this.exception.exception8, exceptionType: '8', exceptionName: 'ææçå¼å¸¸', iconSrc: exception0, siteNum: this.exception.exception8.length, exceptionNum: this.exception.exception8Num, isNoDataStatus: this.isNoData.exception8, span: 5 }, { siteName: this.exception.exception6, exceptionType: '6', exceptionName: 'åæ¥è¶ æ æ¬¡æ°ä¸´çå¼å¸¸', iconSrc: exception6, siteNum: this.exception.exception6.length, exceptionNum: this.exception.exception6Num, isNoDataStatus: this.isNoData.exception6, span: 5 }, { siteName: this.exception.exception7, exceptionType: '7', exceptionName: 'ååè¶å¿å¼å¸¸', iconSrc: exception7, siteNum: this.exception.exception7.length, exceptionNum: this.exception.exception7Num, isNoDataStatus: this.isNoData.exception7, span: 4 }, { siteName: this.exception.exception0, exceptionType: '0', exceptionName: 'æ°æ®ç¼ºå¤±å¼å¸¸', iconSrc: exception0, siteNum: this.exception.exception0.length, exceptionNum: this.exception.exception0Num, isNoDataStatus: this.isNoData.exception0, span: 6 }, { siteName: this.exception.exception1, exceptionType: '1', exceptionName: 'æ°æ®è¶ ä½', iconSrc: exception1, siteNum: this.exception.exception1.length, exceptionNum: this.exception.exception1Num, isNoDataStatus: this.isNoData.exception1, span: 6 }, { siteName: this.exception.exception2, exceptionType: '2', exceptionName: 'è¶ æ ', iconSrc: exception2, siteNum: this.exception.exception2.length, exceptionNum: this.exception.exception2Num, isNoDataStatus: this.isNoData.exception2, span: 6 }, { siteName: this.exception.exception3, exceptionType: '3', exceptionName: 'æ°æ®é¿æ¶æ®µæ æ³¢å¨', iconSrc: exception3, siteNum: this.exception.exception3.length, exceptionNum: this.exception.exception3Num, isNoDataStatus: this.isNoData.exception3, span: 6 } ] }, }, mounted() { this.getSiteNume() // é£è¡å·¡æ£é¡µé¢ï¼è¿å»å è½½ if(this.showAll == true){ this.backExceptionDataAWeekAgo() this.getShopNames() } }, methods: { /** * ææçå¼å¸¸ 设置æçº¿å¾é 置项 * @paramï¼ * @returnsï¼ */ validProcess() { // xè½´æ°æ® let xList = time.ascTime( this.tableCurrentRowData.beginTime, this.tableCurrentRowData.endTime, 15 ) // yè½´æ°æ® let yList = [] xList.forEach((item) => { // æ¥æ¾è¯¥æ¶é´çæ°æ® let r = lineChart.findDate(this.dialog.historyData, item) if (r) { yList.push(r.dustValue) } else { yList.push(null) } }) // é¢è²èæ¯åºé´ // å¾å°æ æ°æ®çæ¶é´ç¹æflagä¸çäºNçæ¶é´ç¹ let noDataTime = time.invalidTime(this.dialog.historyData, xList) let rangeTime = time.seriesTime(noDataTime, 15) // let rangeTime_1 = time.splitTime(rangeTime) // å¾å°èæ¯åºé´çé ç½® let areaObj = lineChart.getMarkArea(rangeTime, 'å¼å¸¸') // let lineColor = lineChart.getLineColor(rangeTime,xList) let lineColor = [] // console.log('线段',lineColor); // ä¼ å ¥åæ° this.dialog.option = exceptionOption.setExceptionChartOption( xList, yList, '', '', '', '', this.tableCurrentRowData.exception, areaObj, lineColor, this.tableCurrentRowData.exceptionType ) }, getImageUrl(name) { return new URL(`../../lib/Carousel/assets/${name}`, import.meta.url).href }, // æ¾åç«ç¹æ»æ°é getSiteNume() { exceptionApi.getSitesNum().then((res) => { this.siteTotal = res.data.data.length }) }, /** * descriptionï¼ç¹å»å¼å¸¸ç«ç¹ååæ¶ è¿åçæ°æ® * @paramï¼ * @createTime:2023-08-17 * @returnsï¼ */ getAbnormalDataByClick(val) { this.flag.originClick = 1 // æ¾ç¤ºè¡¨æ ¼ this.isTableShow = true this.tableData = val this.total = this.tableData.length // é»è®¤æ¾ç¤ºç¬¬ä¸é¡µ this.handleCurrentChange(1) }, // ç¹å»è¡¨æ ¼çè¡æ¶ selectTableRow() { // è·åå½åè¡çç´¢å¼ this.selectedRowIndex = this.displayData.indexOf(this.tableCurrentRowData) }, /** * descriptionï¼æçµææç½æ¶è®¾ç½®çè¡¨æ ¼æ°æ® */ setOfflineTbleData() { // æ æ°æ®æ¶çæ¶é´æ°ç» æ¶é´ç¸å·®15åé const abnormalTimeTenMinute = index.descFiftyTime( this.tableCurrentRowData.beginTime, this.tableCurrentRowData.endTime ) // ä¿åæ æ°æ®æ¶è¡¨æ ¼æ¡æ° this.dialog.exceptionTotal = abnormalTimeTenMinute.length // å»é¤ä¾çµå¼å¸¸åæçº¿åºé´ç第ä¸ä¸ªæå ç´ çå¼ this.dialog.historyData = [] for (let i = 0; i < abnormalTimeTenMinute.length; i++) { this.dialog.historyData.push({ name: this.tableCurrentRowData.name, mnCode: this.tableCurrentRowData.mnCode, dutyCompany: this.tableCurrentRowData.dutyCompany, lst: abnormalTimeTenMinute[i], dustValue: '' }) } }, // æ®µçµææç½åºé´æ æ°æ®ï¼éè¦è¡¥å ãå ¶ä»çé½ææ°æ®ï¼ç´æ¥ä¸æ¬¡è¯·æ±å ¨é¨æ¶æ®µå°±å¥½ // æ ¹æ®å¼å¸¸åºé´æé åå端é¦å°¾ ååºé´ ä¸é´åºé´ ååºé´ // å¤ææ¯æ®µçµææç½ï¼æ¯å请æ±åååºé´ï¼å¦ååªè¯·æ±ä¸æ¬¡å®æ´ç // å¾å°æç»æ°æ® // å夿å¼å¸¸ç§ç±» ï¼è¿è¡è®¾ç½®é 置项 /** * descriptionï¼ä¸æ¬¡è¯·æ±ååä¸ååºé´çæ°æ®,å¯¹æ°æ®è¿è¡åæ * @paramï¼ åä¸ååºé´ç请æ±åæ°ï¼åä¸åçæ»åºé´æ¶é´ï¼å¼å¸¸å¼å§æ¶é´ï¼ä¸åºç»ææ¶é´ */ otherExceptionRequest(allTimeArgs, allTime, exceptionBT, exceptionET) { // æçº¿å¾å è½½ä¸ææ this.loading.lineChart = true historyApi.queryHistoryData(allTimeArgs).then((result) => { this.dialog.allExceptionTimeData = result.data.data // æ°æ®ç¼ºå¤±å¼å¸¸æ¶éæ°è®¾ç½®è¡¨æ ¼ if (this.tableCurrentRowData.exceptionType == '0') { this.setOfflineTbleData() } // xè½´æ¥ææ¶é´ let dateList = [] // yè½´ è¶ æ æ²¹çæµåº¦ let dustValue = [] let timeAndValue = {} // 仿·»å äºé¦ä½åºé´çå¼å§åç»ææ¶é´è¿è¡éå ä¿è¯æ¶é´ä»¥15åé为é´é timeAndValue = index.keepContinuousByEachFiftyMinutes( allTime[0], allTime[3], this.dialog.allExceptionTimeData ) dateList = timeAndValue['xAxis'] dustValue = timeAndValue['yAxis'] // æåå¼å¸¸èµ·å§æ¶é´ç¹å¨æ´ä¸ªåºé´å çæ°æ®ç´¢å¼ let startIndex = dateList.findIndex((item) => item === exceptionBT) let endIndex = dateList.findIndex((item) => item === exceptionET) // 设置æçº¿å¾é 置项 // this.reSetChart(dateList, dustValue, exceptionBT, exceptionET, startIndex, endIndex) this.dialog.option = exceptionOption.setExceptionChartOption( dateList, dustValue, exceptionBT, exceptionET, startIndex, endIndex, this.tableCurrentRowData.exception, '', '', this.tableCurrentRowData.exceptionType ) this.flag.banTouch = 0 this.loading.lineChart = false }) }, /** * descriptionï¼åååºå¼å¸¸èµ·å§æ¶é´ï¼æé 请æ±åä¸åçåæ° */ timeAndDataProcessed() { //å¼å¸¸çå¼å§æ¶é´ ç»ææ¶é´ let exceptionBeginTime = this.tableCurrentRowData.beginTime let exceptionEndTime = this.tableCurrentRowData.endTime // beforeAndAfterTime[0]:å45åéçæ¶é´ç¹ // beforeAndAfterTime[1]:å15åéçæ¶é´ç¹ // beforeAndAfterTime[2]:å15åéçæ¶é´ç¹ // beforeAndAfterTime[3]:å45åéçæ¶é´ç¹ let beforeAndAfterTime = index.before45AndAfter45(exceptionBeginTime, exceptionEndTime) // æé å¼å¸¸æ¶é´åååºé´æ°æ®è¯·æ±åæ°(é¤äºæç½ä¸é½ç¨å°ï¼ let paramsAllTime = index.requestGetParms( this.tableCurrentRowData.name, beforeAndAfterTime[0], beforeAndAfterTime[3] ) // å°å¼å¸¸æ°æ®è¿è¡é¢å¤çï¼éåå°ç»æä½ä¸ºæçº¿å¾çé 置项 this.otherExceptionRequest( paramsAllTime, beforeAndAfterTime, exceptionBeginTime, exceptionEndTime ) }, /** * descriptionï¼è·åä¸ä¸æ¡å¼å¸¸ä¿¡æ¯ */ getPreviousRowData() { // // 䏿¯è¡¨æ ¼çæåä¸è¡ if (this.selectedRowIndex < this.displayData.length - 1) { // ç¹å»è¿ç¨ä¸ éä½ä¸ä¸æ¡æé® å¨è®¾ç½®å®å¾å½¢é 置项åè§£é this.flag.banTouch = 1 //å¾å°ä¸ä¸è¡æ°æ®ç´¢å¼ this.selectedRowIndex = this.selectedRowIndex + 1 // å¾å°ä¸ä¸è¡çæ°æ® this.tableCurrentRowData = this.displayData[this.selectedRowIndex] this.loading.preButton = true historyApi .queryHistoryData({ siteName: this.tableCurrentRowData.name, beginTime: this.tableCurrentRowData.beginTime, endTime: this.tableCurrentRowData.endTime }) .then((response) => { // ä¿åè¿åçè¶ æ æ°æ® this.dialog.historyData = response.data.data this.dialog.exceptionTotal = response.data.data.length // é»è¾å¤ç if (this.tableCurrentRowData.exceptionType != '8') { this.timeAndDataProcessed() } else { this.loading.lineChart = true this.validProcess() this.loading.lineChart = false this.flag.banTouch = 0 } this.loading.preButton = false }) } }, /** * descriptionï¼è·åä¸ä¸æ¡å¼å¸¸ä¿¡æ¯ */ getNextRowData() { // 䏿¯è¡¨æ ¼ç第ä¸è¡ if (this.selectedRowIndex !== 0) { // ç¹å»è¿ç¨ä¸ éä½ä¸ä¸æ¡æé® å¨è®¾ç½®å®å¾å½¢é 置项åè§£é this.flag.banTouch = 1 //å¾å°ä¸ä¸è¡æ°æ®ç´¢å¼ this.selectedRowIndex = this.selectedRowIndex - 1 // å¾å°ä¸ä¸è¡çæ°æ® this.tableCurrentRowData = this.displayData[this.selectedRowIndex] this.loading.afterButton = true historyApi .queryHistoryData({ siteName: this.tableCurrentRowData.name, beginTime: this.tableCurrentRowData.beginTime, endTime: this.tableCurrentRowData.endTime }) .then((response) => { // ä¿åè¿åçè¶ æ æ°æ® this.dialog.historyData = response.data.data this.dialog.exceptionTotal = response.data.data.length // é»è¾å¤ç if (this.tableCurrentRowData.exceptionType != '8') { this.timeAndDataProcessed() } else { this.loading.lineChart = true this.validProcess() this.loading.lineChart = false this.flag.banTouch = 0 } this.loading.afterButton = false }) } }, /** * descriptionï¼ä»åç»ä»¶è·å¾æç«ç¹è¯¥æ¶æ®µçå¼å¸¸æ°æ® * @createTime:2023-08-18 */ backExceptionData(val1, val2) { this.displayData = val1 this.total = val2 }, // æ¥è¯¢å¼å¸¸æ°æ®çç«ç¹åååæ°é queryExceptionSite(url, exceptionType) { let params = {} params['beginTime'] = this.beginTime params['endTime'] = this.endTime params['exceptionType'] = exceptionType if(this.siteName){ params['siteName'] = this.siteName } // if (this.form.street.length != 0) { // params['street'] = this.form.street.join() // } if (this.form.dutyCompany.length != 0) { params['dutyCompany'] = this.form.dutyCompany.join() } return this.$http.get(url, { params: params }) }, /** * descriptionï¼å½ç¨æ·æ¹åæ¥è¯¢çæ¶é´åºé´æ¶ï¼ä¼æ ¹æ®è¯¥åºé´æ¥è¯¢åå¼å¸¸çç«ç¹ï¼æ¥è¯¢è¯¥æ¶é´åºé´çåå¼å¸¸æ°é * @createTime:2023-08-18 */ getShopNames() { /* æ¥è¯¢å¼å¸¸çç«ç¹ */ this.queryExceptionSite('/dust/sitenamecode', 0).then((result) => { this.exception.exception0 = result.data.data if (result.data.data.length == 0) { this.isNoData.exception0 = true return } this.isNoData.exception0 = false }) this.queryExceptionSite('/dust/sitenamecode', 1).then((result) => { this.exception.exception1 = result.data.data if (result.data.data.length == 0) { this.isNoData.exception1 = true return } this.isNoData.exception1 = false }) this.queryExceptionSite('/dust/sitenamecode', 2).then((result) => { this.exception.exception2 = result.data.data if (result.data.data.length == 0) { this.isNoData.exception2 = true return } this.isNoData.exception2 = false }) this.queryExceptionSite('/dust/sitenamecode', 3).then((result) => { this.exception.exception3 = result.data.data if (result.data.data.length == 0) { this.isNoData.exception3 = true return } this.isNoData.exception3 = false }) this.queryExceptionSite('/dust/sitenamecode', 4).then((result) => { this.exception.exception4 = result.data.data if (result.data.data.length == 0) { this.isNoData.exception4 = true return } this.isNoData.exception4 = false }) this.queryExceptionSite('/dust/sitenamecode', 5).then((result) => { this.exception.exception5 = result.data.data if (result.data.data.length == 0) { this.isNoData.exception5 = true return } this.isNoData.exception5 = false }) this.queryExceptionSite('/dust/sitenamecode', 6).then((result) => { this.exception.exception6 = result.data.data if (result.data.data.length == 0) { this.isNoData.exception6 = true return } this.isNoData.exception6 = false }) this.queryExceptionSite('/dust/sitenamecode', 7).then((result) => { this.exception.exception7 = result.data.data if (result.data.data.length == 0) { this.isNoData.exception7 = true return } this.isNoData.exception7 = false }) this.queryExceptionSite('/dust/sitenamecode', 8).then((result) => { this.exception.exception8 = result.data.data if (result.data.data.length == 0) { this.isNoData.exception8 = true return } this.isNoData.exception8 = false }) /* å¼å¸¸å¼å¸¸æ°é */ this.queryExceptionSite('/dust/exceptionnum', 0).then((result) => { this.exception.exception0Num = result.data.data }) this.queryExceptionSite('/dust/exceptionnum', 1).then((result) => { this.exception.exception1Num = result.data.data }) this.queryExceptionSite('/dust/exceptionnum', 2).then((result) => { this.exception.exception2Num = result.data.data }) this.queryExceptionSite('/dust/exceptionnum', 3).then((result) => { this.exception.exception3Num = result.data.data }) this.queryExceptionSite('/dust/exceptionnum', 4).then((result) => { this.exception.exception4Num = result.data.data }) this.queryExceptionSite('/dust/exceptionnum', 5).then((result) => { this.exception.exception5Num = result.data.data }) this.queryExceptionSite('/dust/exceptionnum', 6).then((result) => { this.exception.exception6Num = result.data.data }) this.queryExceptionSite('/dust/exceptionnum', 7).then((result) => { this.exception.exception7Num = result.data.data }) this.queryExceptionSite('/dust/exceptionnum', 8).then((result) => { this.exception.exception8Num = result.data.data }) }, /** * descriptionï¼æ¾ç¤ºå¯¹è¯æ¡,è¿å该å¼å¸¸æ¶é´æ®µçæææ°æ® * @paramï¼ç¹å»âæ¥ç详æ âçè¯¥è¡ææåæ®µæ°æ® * @createTime:2023-08-18 */ showDialog(row) { // æå¼å¯¹è¯æ¡ this.dialogTableVisible = true // ä¿åå½åè¡æ°æ® this.tableCurrentRowData = row // // è·åå½åè¡çç´¢å¼ // this.selectedRowIndex = this.displayData.indexOf(row) // //æ ¹æ®å½åè¡çç¼å·ï¼èµ·å§æ¶é´æ¥ 请æ±å¼å¸¸æ°æ® // // 对请æ±å°çæ°æ®è¿è¡é¦å°¾æ¼æ¥ // // å¾å°åå宿´æ°æ®è¿è¡ç»å¶å¾å½¢ // historyApi // .queryHistoryData({ // siteName: row.name, // beginTime: row.beginTime, // endTime: row.endTime // }) // .then((response) => { // // ä¿åè¿åçè¶ æ æ°æ® // this.dialog.historyData = response.data.data // this.dialog.exceptionTotal = response.data.data.length // // é»è¾å¤ç // if (this.tableCurrentRowData.exceptionType != '8') { // this.timeAndDataProcessed() // } else { // this.loading.lineChart = true // this.validProcess() // this.loading.lineChart = false // this.flag.banTouch = 0 // } // }) }, /** * descriptionï¼æ¡ä»¶æ¥è¯¢å¼å¸¸çæ°æ® * @createTime:2023-08-18 */ handleSubmit() { if (this.isExceedOneMonth(this.beginTime, this.endTime)) { alert('æ¶é´è·¨åº¦ä¸è½è¶ è¿ä¸ä¸ªæ') return } // æ´æ°å¼å¸¸åæ this.getShopNames() this.loading.queryButton = true this.flag.originClick = 0 this.loading.tableLoading = true let params = {} params['page'] = this.currentPage params['pageSize'] = this.pageSize if (this.siteName) { params['siteName'] = this.siteName } // if (this.form.street.length != 0) { // params['street'] = this.form.street.join() // } if (this.form.dutyCompany.length != 0) { params['dutyCompany'] = this.form.dutyCompany.join() } params['beginTime'] = this.beginTime params['endTime'] = this.endTime this.$http.get('/dust/exceptiondata2', { params: params }).then((response) => { // ä¿åè¿åç this.displayData = response.data.data.rows this.loading.queryButton = false this.loading.tableLoading = false if (response.data.data.total == 0) { ElMessage('è¯¥æ¶æ®µæ æ°æ®') this.isTableShow = false return } this.isTableShow = true this.total = response.data.data.total // ç§»é¤ç©ºæ°æ®ç¶æ }) }, /** * descriptionï¼æå¼é¡µé¢é»è®¤å è½½æè¿ä¸å¨çå¼å¸¸æ°æ® * @createTime:2023-08-18 */ backExceptionDataAWeekAgo() { this.loading.tableLoading = true let params = {} if (this.siteName) { params['siteName'] = this.siteName } params['beginTime'] = this.beginTime params['endTime'] = this.endTime console.log('name',this.siteName) this.$http.get('/dust/exceptiondata', { params: params }).then((response) => { // ä¿åè¿åç // this.tableData = response.data.data.rows; this.displayData = response.data.data.rows this.loading.tableLoading = false if (response.data.data.total == 0) { ElMessage('è¯¥æ¶æ®µæ æ°æ®') this.isTableShow = false return } this.isTableShow = true this.total = response.data.data.total }) }, /** * descriptionï¼å°ä¸å½æ åæ¶é´è½¬ä¸ºæå®æ ¼å¼(该ç»ä»¶è¿åçæ åæ¶é´çæ ¼å¼ï¼æä»¥å¿ é¡»çå è¿ä¸ªå½æ°) * @createTime:2023-08-17 */ giveTime(val) { this.beginTime = dayjs(val[0]).format('YYYY-MM-DD HH:mm:ss') this.endTime = dayjs(val[1]).format('YYYY-MM-DD HH:mm:ss') }, // åè½ï¼è¡¨æ ¼é«åº¦æ ¹æ®å 容èªéåº calTableHeight() { const h1 = this.$refs.h1.$el.offsetHeight const h2 = this.$refs.h2.$el.offsetHeight const h3 = this.$refs.h3.$el.offsetHeight const h4 = this.$refs.h4.$el.offsetHeight // å ¶ä¸ä¸ä¸ª40æ¯çåçæ»å¤è¾¹è· this.tableHeight = `calc(100vh - ${h1}px - ${h2}px - ${h3}px - ${h4}px - 40px - var(--el-main-padding) * 2)` }, // 页大尿¹åæ¶è§¦å handleSizeChange(val) { this.pageSize = val // æ¹åæ¯é¡µæ¾ç¤ºæ°ç®æ¶è·³å°å½å页 this.handleCurrentChange(1) }, // 页巿¹åæ¶è§¦å /** * descriptionï¼é¡µå·æ¹åæ¶è§¦å * @paramï¼ å½åé¡µï¼æ è®°ä½ï¼0代表æ¯ç¹å»âæ¥è¯¢â触åçï¼1代表æ¶ç¹å»å¼å¸¸ç«ç¹ææ¬æé®è§¦åçï¼ * @createTime:2023-08-17 * @returnsï¼ */ handleCurrentChange(val) { // å°å½å页å·ç»currentPage this.currentPage = val // 页é¢ååæ¶è°ç¨ æ¥è¯¢æ°æ®å½æ° if (this.flag.originClick == 0) { this.handleSubmit() } else if (this.flag.originClick == 1) { const startIndex = (val - 1) * this.pageSize const endIndex = startIndex + this.pageSize this.displayData = this.tableData.slice(startIndex, endIndex) } }, // è¡¨æ ¼åºå·éå¢ indexMethod1(index) { return index + 1 + (this.currentPage - 1) * this.pageSize }, // è¡¨æ ¼åºå·éå¢ indexMethod2(index) { return index + 1 } } } </script> <template> <div class="all-container"> <el-row ref="h1"> <el-col> <el-form :inline="true"> <div class="head-container-text"> <el-form-item> <AreaAndmonitorType></AreaAndmonitorType> </el-form-item> <el-form-item v-show="!showAll"> <span class="site-text"> ç¹ä½åç§°:</span> <span> {{ this.siteName }}</span> </el-form-item> <el-form-item v-show="showAll"> <DutyCompany @submitDutyCompanyValue="(n) => (form.dutyCompany = n)"> </DutyCompany> </el-form-item> <!-- <el-form-item v-show="showAll"> <StreetInfo @submitStreetValue="(n) => (form.street = n)"> </StreetInfo> </el-form-item> --> <el-form-item> <TimeShortCuts timeType="day" @submit-time="giveTime" :beginAndEndTime="[beginTime,endTime]"></TimeShortCuts> </el-form-item> <el-form-item> <ButtonClick content="é£é©è¯ä¼°" type="warning" color="rgb(12,104,165)" :loading="loading.queryButton" :havaIcon="false" @do-search="handleSubmit" ><img src="@/assets/exception/riskButton.png" height="24" class="img-button" /></ButtonClick> </el-form-item> </div> </el-form> </el-col> </el-row> <!-- æ¶é´æè¦ --> <el-row class="head-describtion-text" ref="h2"> <el-row> <span> éå±±åº {{ beginTime }} ââ {{ endTime }} æ¬å°çæµå¼å¸¸ä¿¡æ¯æ±æ»</span> </el-row> </el-row> <!-- å¼å¸¸åæ --> <el-row ref="h3"> <el-col> <el-card class="card-container"> <template #header> <div class="card-header">å¼å¸¸åæ</div> </template> <el-row :gutter="20"> <el-col v-for="item in cardRow" :key="item.exceptionType" :span="item.span"> <AnalysisCard :site-name="item.siteName" :exception-type="item.exceptionType" :begin-time="beginTime" :end-time="endTime" :exception-name="item.exceptionName" :site-num="item.siteNum" :exception-num="item.exceptionNum" :exception-all-num="exceptionAllNum" :site-num-all="siteTotal" :isNoDataStatus="item.isNoDataStatus" :icon="item.iconSrc" @get-abnormal-data-by-click="getAbnormalDataByClick" class="card-row" > > </AnalysisCard> </el-col> </el-row> </el-card> </el-col> </el-row> <el-button-group> <el-button color="#626aef" plain @click="isTableShow = true" v-show="!isTableShow"> æ¾ç¤ºå¼å¸¸æ¸ å<el-icon class="i-ep-Arrow"><i-ep-ArrowUp /></el-icon> </el-button> <el-button color="#626aef" plain @click="isTableShow = false" v-show="isTableShow"> éèå¼å¸¸æ¸ å<el-icon class="i-ep-Arrow"><i-ep-ArrowDown /></el-icon> </el-button> </el-button-group> <!-- è¡¨æ ¼ --> <el-row v-show="isTableShow"> <el-col> <el-table ref="table" :data="displayData" :height="tableHeight" :highlight-current-row="true" size="default" v-loading="loading.tableLoading" border > <el-table-column type="index" label="åºå·" width="60px" align="center" fixed :index="indexMethod1" /> <el-table-column prop="name" label="ç¹ä½åç§°" show-overflow-tooltip /> <el-table-column prop="mnCode" label="设å¤ç¼ç " align="center" show-overflow-tooltip /> <el-table-column prop="exception" label="å¼å¸¸ç±»å" align="center" show-overflow-tooltip /> <el-table-column prop="region" label="åºå¿" align="center" show-overflow-tooltip /> <el-table-column prop="beginTime" label="å¼å§æ¶é´" align="center" show-overflow-tooltip /> <el-table-column prop="endTime" label="ç»ææ¶é´" align="center" show-overflow-tooltip /> <el-table-column prop="typename" label="åºæ¯" align="center" width="82" show-overflow-tooltip /> <el-table-column prop="address" label="å°å" align="center" show-overflow-tooltip /> <el-table-column prop="dutyCompany" label="è¿ç»´å" align="center" show-overflow-tooltip /> <el-table-column label="æä½" align="center"> <template #default="{ row }"> <el-button type="primary" class="table-button" @click="showDialog(row)" >æ¥ç详æ </el-button > </template> </el-table-column> </el-table> <el-pagination ref="h4" background layout="total, sizes, prev, pager, next, jumper" v-model:current-page="currentPage" v-model:page-size="pageSize" :total="total" :page-sizes="[10, 20, 50, 100]" @size-change="handleSizeChange" @current-change="handleCurrentChange" > </el-pagination> </el-col> </el-row> <CompDialogDetail :row="tableCurrentRowData" v-model="dialogTableVisible"/> </div> </template> <style lang="scss" scoped> .el-row { margin-left: 10px; } /* æ¡ä»¶æ¥è¯¢æ¨¡åçæ ·å¼ */ .el-form { margin: 10px; } img { margin-right: 5px; } .head-container-search { float: right; } .head-describtion-text { justify-content: flex-end; margin-bottom: 2px; margin-right: 20px; font-size: 14px; color: gray; } .button-set { margin: 10px; } /* æ¡ä»¶æ¥è¯¢æ¨¡åç»æ */ /* å¼å¸¸åææ¨¡åçæ ·å¼ */ .card-text1 { /* é»ä½çå¼å¸¸ååé¨å */ margin: 10px; } .card-text1 + div { /* é»ä½çå¼å¸¸ååä¸é¢ç */ margin: 12px; } .card-exception-buttom { /* å¼å¸¸ç«ç¹ææ¬æé®åºå */ padding: 11px; } .card-header { margin-left: 5px; font-size: 18px; font-weight: bold; } .card-content-unnormal { min-height: 200px; border: 2px solid #ffcf8b; border-radius: 20px; } .card-content-normal { min-height: 200px; border: 2px solid red; border-radius: 20px; } .card-header-text { font-size: 16px; font-weight: bold; margin-top: 4px; margin-left: 4px; } .card-content-text { white-space: nowrap; } .card-exceptionname-text1 { /* å¼å¸¸ç«ç¹å æ¯ */ font-size: 14px; white-space: nowrap; } .card-exceptionname-text2 { /* å¼å¸¸æ°å æ¯çå¤è¾¹è· */ font-size: 14px; white-space: nowrap; } .text-blank { /* éå· */ margin-right: 10px; color: #000000; } .card-row { margin-bottom: 10px; } /* å¼å¸¸åææ¨¡åç»æ */ /* éèè¡¨æ ¼æé®ç»æ ·å¼ */ .el-button-group { margin: 10px 0px 10px 10px; } .i-ep-Arrow { margin-left: 6px; margin-bottom: 2px; font-size: 1.2em; } /* éèè¡¨æ ¼æé®ç»æ ·å¼ç»æ */ /* è¡¨æ ¼æ¨¡åçæ ·å¼ */ .el-table { color: #333333; } /* è¡¨æ ¼æ¨¡åç»æ */ /* æ¥ç详æ å¯¹è¯æ¡æ¨¡åçæ ·å¼ */ .diag-head { /* å¯¹è¯æ¡å¤´é¨åºå */ min-height: 200px; } .diag-head-text1 { /* å¯¹è¯æ¡å¤´é¨ç屿§å段å ç² */ font-weight: bold; } .diag-head-text > div { /* å¯¹è¯æ¡å¼å¸¸æ¶é´æ®µ */ margin-top: 15px; } .diag-head-text { margin: 10px; padding: 10px; background: linear-gradient(90deg, #00c9ff 0%, #92fe9d 100%); border: 2px solid #7bc0fc; } .chart-jump-button { display: flex; justify-content: right; } .mx-1 { /* position: absolute; left: 10px; bottom: 10px; */ justify-content: flex-start; } .dialog-footer{ display: flex; } .dialog-footer-text { justify-content: flex-end; margin-left: auto; font-size: 14px; /* color: #333333; */ } /* æ¥ç详æ å¯¹è¯æ¡æ¨¡åç»æ */ </style> src/views/exception/components/CompDialogDetail.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,350 @@ <!-- ç¹å» âæ¥ç详ç»â çå¯¹è¯æ¡ --> <!-- ä¸ä¸æ¡ä¸ä¸æ¡ç±åç»ä»¶ä¼ éç»ç¶ç»ä»¶ï¼ç¶ç»ä»¶çå¬ä¿¡å· --> <script> import exceptionOption from '@/utils/chartFunction/exceptionOption.js' import index from '@/utils/exception_common_function/index.js' import DustLineChart from '@/views/exception/components/DustLineChart.vue' import historyApi from '@/api/historyApi.js' export default { props: { // è¡¨æ ¼çä¸è¡æ°æ® row: { type: Object, default: {} }, // å¯¹è¯æ¡æ¯å¦æ¾ç¤º dialogTableVisible: { type: Boolean, default: false } }, components: { DustLineChart }, emits: ['update:dialogTableVisible'], computed: { dialogTableVisible: { get() { return this.dialogTableVisible }, set(value) { this.$emit('update:dialogTableVisible', value) } } }, watch: { row: { handler(newValue) { this.display() }, deep: true } }, data() { return { // å¼å¸¸è¡¨æ ¼çæ°æ® historyData: [], // æçº¿å¾é 置项 lineChartOption: {}, loading: { // ä¸ä¸æ¡æé® preButton: false, // ä¸ä¸æ¡æé® afterButton: false, // æçº¿å¾ lineChart: false }, // æ è®°ä½ flag: { // æ°æ®å è½½æ¶ ä¸ä¸æ¡æé®ä¸è½åç¹å» banTouch: 0, }, isPreCantouch:false, isNextCantouch:false } }, mounted() {}, methods: { display() { // è¡¨æ ¼æ°æ® this.getExceptionTableDataByCurrenrRow(this.row) // æçº¿å¾æ°æ® this.setLineChart(this.row) }, /** * å¾å°å¼å¸¸è¡¨æ ¼çæ°æ® * @paramï¼ ç¹ä½åç§°ï¼å¼å¸¸å¼å§æ¶é´ï¼å¼å¸¸ç»ææ¶é´ * @returnsï¼ */ async getExceptionTableDataByCurrenrRow({ name, beginTime, endTime, exceptionType }) { if (!name || !beginTime || !endTime) { return } // æ°æ®ç¼ºå¤±å¼å¸¸æ¶ï¼æé è¡¨æ ¼æ°æ® if (this.exceptionType == '0') { this.setOfflineTbleData(this.row) return } // æ ¹æ®å¼å¸¸çç¹ä½åç§°ãå¼å§ãç»ææ¶é´ï¼æ¥è¯¢è¯¥æ¶æ®µçé¢ç²ç©æµåº¦æ°æ® const response = await historyApi.queryHistoryData({ siteName: name, beginTime: beginTime, endTime: endTime }) // å¼å¸¸è¡¨æ ¼å¾å°æ°æ® this.historyData = response.data.data }, /* *********************************************************************************** æçº¿å¾ */ /** * 设置æçº¿å¾ * @paramï¼ * @returnsï¼ */ async setLineChart({ beginTime, endTime }) { // 计ç®å¼å¸¸åºé´çåå45åé const beforeAndAfterTime = index.before45AndAfter45(beginTime, endTime) // è¯·æ±æ´æ®µæ¶é´æ®µçé¢ç²ç©æµåº¦æ°æ® // 对请æ±åçæ°æ®è¿è¡åå const chartParams = await this.organizeLineChartsOptionParams(beforeAndAfterTime, this.row) this.lineChartOption = exceptionOption.setExceptionChartOption(chartParams) }, /** * æå»ºæçº¿å¾çé 置项çåæ° * @paramï¼ å¼å¸¸åºé´ååæ°æ®æ¶é´ç¹ï¼ è¡¨æ ¼å½åè¡æ°æ® * @returnsï¼ */ async organizeLineChartsOptionParams( time_point, { name, beginTime, endTime, exception, exceptionType } ) { // æçº¿å¾å è½½ä¸ææ this.loading.lineChart = true // è¯·æ±æ´æ®µé¢ç²ç©æµåº¦çæ°æ® const response = await historyApi.queryHistoryData({ siteName: name, beginTime: time_point[0], endTime: time_point[3] }) // å¼å¸¸åºé´æ°æ®å ä¸åå45åéæ°æ® const allTimeData = response.data.data // xè½´æ¥ææ¶é´ let xData = [] // yè½´ è¶ æ æ²¹çæµåº¦ let yData = [] let timeAndValue = {} // 仿·»å äºé¦ä½åºé´çå¼å§åç»ææ¶é´è¿è¡éå ä¿è¯æ¶é´ä»¥15åé为é´é timeAndValue = index.keepContinuousByEachFiftyMinutes( time_point[0], time_point[3], allTimeData ) xData = timeAndValue['xAxis'] yData = timeAndValue['yAxis'] // æåå¼å¸¸èµ·å§æ¶é´ç¹å¨æ´ä¸ªåºé´å çæ°æ®ç´¢å¼ let beginIndex = xData.findIndex((item) => item === beginTime) let endIndex = xData.findIndex((item) => item === endTime) this.flag.banTouch = 0 this.loading.lineChart = false // è¿åæçº¿å¾çé 置项çåæ° return { xData, yData, exceptionBeginTime: beginTime, exceptionEndTime: endTime, beginIndex, endIndex, exceptionName: exception, areaObj: '', lineColor: '', exceptionType } }, /** * descriptionï¼æ°æ®ç¼ºå¤±å¼å¸¸æ¶ï¼è®¾ç½®çè¡¨æ ¼æ°æ® */ setOfflineTbleData({ name, mnCode, dutyCompany, beginTime, endTime }) { // æ æ°æ®æ¶çæ¶é´æ°ç» æ¶é´ç¸å·®15åé const abnormalTimeTenMinute = index.descFiftyTime(beginTime, endTime) // å¯¹è¡¨æ ¼æ°æ®è¿è¡éæ this.historyData = [] for (let i = 0; i < abnormalTimeTenMinute.length; i++) { this.historyData.push({ name: name, mnCode: mnCode, dutyCompany: dutyCompany, lst: abnormalTimeTenMinute[i], yData: '' }) } } } } </script> <template> <el-dialog class="exception-dialog" v-model="dialogTableVisible" draggable align-center height="700px" width="700px" > <!-- 头 --> <template #header> <div class="diag-head"> <div class="diag-head-text"> <div><span class="diag-head-text1">ç«ç¹åç§°ï¼</span>{{ row.name }}</div> <div><span class="diag-head-text1">设å¤ç¼å·ï¼</span>{{ row.mnCode }}</div> <div><span class="diag-head-text1">è¿ç»´åï¼</span>{{ row.dutyCompany }}</div> <div> <span class="diag-head-text1">å¼å¸¸æ¶é´æ®µï¼</span>{{ row.beginTime }} ~ {{ row.endTime }} </div> </div> </div> <!-- <div class="chart-jump-button"> <el-button type="danger" :loading="loading.preButton" :disabled="isPreCantouch || flag.banTouch" @click="getNextRowData" >䏿¡å¼å¸¸</el-button > <el-button type="danger" :loading="loading.afterButton" :disabled="isNextCantouch || flag.banTouch" @click="getPreviousRowData" >䏿¡å¼å¸¸</el-button > </div> --> </template> <!-- å¾å½¢ --> <DustLineChart :option="lineChartOption" v-loading="loading.lineChart"></DustLineChart> <!-- è¡¨æ ¼ --> <div> <el-table :data="historyData" size="default" height="200" border> <el-table-column type="index" label="åºå·" width="60px" align="center" fixed ></el-table-column> <el-table-column prop="lst" label="ééæ¶é´" align="center" show-overflow-tooltip /> <el-table-column prop="yData" label="TSP(mg/m³)" align="center" show-overflow-tooltip /> <el-table-column prop="flag" label="æ°æ®æ è¯" align="center" show-overflow-tooltip /> </el-table> </div> <template #footer> <div class="dialog-footer"> <el-tag type="success" class="mx-1" effect="dark" round ><span class="table-line-lable" v-show="row.exceptionType == '0'">ç¼ºå¤±æ°æ®ï¼ </span> <span v-show=" row.exceptionType == '1' || row.exceptionType == '2' || row.exceptionType == '3' || row.exceptionType == '4' || row.exceptionType == '5' || row.exceptionType == '6' || row.exceptionType == '7' || row.exceptionType == '8' " >å¼å¸¸æ°æ®ï¼</span > <span class="table-line-num">{{ historyData.length }}æ¡</span> <span v-show="row.exceptionType == '0'"> (é»è¾è®¡ç®)</span> </el-tag> <el-text v-show="row.exceptionType == '8'" type="warning" class="dialog-footer-text" >æ°æ®æ è¯Aä¸ºæ°æ®é¿æç¼ºå¤±,ç³»ç»èªå¨è¡¥å ¨</el-text > </div> </template> </el-dialog> </template> <style scoped> /* æ¥ç详æ å¯¹è¯æ¡æ¨¡åçæ ·å¼ */ .diag-head { /* å¯¹è¯æ¡å¤´é¨åºå */ min-height: 200px; } .diag-head-text1 { /* å¯¹è¯æ¡å¤´é¨ç屿§å段å ç² */ font-weight: bold; } .diag-head-text > div { /* å¯¹è¯æ¡å¼å¸¸æ¶é´æ®µ */ margin-top: 15px; } .diag-head-text { margin: 10px; padding: 10px; background: linear-gradient(90deg, #00c9ff 0%, #92fe9d 100%); border: 2px solid #7bc0fc; } .chart-jump-button { display: flex; justify-content: right; } .mx-1 { /* position: absolute; left: 10px; bottom: 10px; */ justify-content: flex-start; } .dialog-footer { display: flex; } .dialog-footer-text { justify-content: flex-end; margin-left: auto; font-size: 14px; /* color: #333333; */ } /* æ¥ç详æ å¯¹è¯æ¡æ¨¡åç»æ */ </style> src/views/exception/components/CompFlightInspection.vue
@@ -176,7 +176,7 @@ // æ è®°ä½ flag: { // å è½½æ¶ ä¸ä¸æ¡æé®ä¸è½åç¹å» // æ°æ®å è½½æ¶ ä¸ä¸æ¡æé®ä¸è½åç¹å» banTouch: 0, // 0代表å页ï¼1代表ä¸å页 originClick: 0 @@ -549,7 +549,6 @@ let endIndex = dateList.findIndex((item) => item === exceptionET) // 设置æçº¿å¾é 置项 // this.reSetChart(dateList, dustValue, exceptionBT, exceptionET, startIndex, endIndex) this.dialog.option = exceptionOption.setExceptionChartOption( dateList, dustValue, @@ -1363,6 +1362,8 @@ } /* è¡¨æ ¼æ¨¡åç»æ */ /* æ¥ç详æ å¯¹è¯æ¡æ¨¡åçæ ·å¼ */ .diag-head { src/views/exception/components/DustLineChart.vue
@@ -6,11 +6,10 @@ --> <template> <div id="main" class="line-chart-exception"></div> </template> <script> import * as echarts from 'echarts'; import * as echarts from 'echarts' export default { props: { @@ -19,39 +18,32 @@ default(){ return {} } }, isOpenDialog:{ type:Boolean }, } }, data() { return { chart: null }; } }, mounted() { // è·å页é¢å®½åº¦çä¸å this.initChart(); this.initChart() this.chart.clear this.chart.setOption(this.option,true) window.addEventListener('resize', this.resizeChart); window.addEventListener('resize', this.resizeChart) }, watch: { option(){ // this.chart.clear // ä¸ä¸ä¹åçoptionè¿è¡åå¹¶ this.chart.setOption(this.option,true) }, isOpenDialog(){ window.addEventListener('resize', this.resizeChart); }, } }, methods: { initChart() { // å建echartså®ä¾ this.chart = echarts.init(document.getElementById('main')); this.chart = echarts.init(document.getElementById('main')) // å®ä¹å¾è¡¨çé ç½®é¡¹åæ°æ® const option = { grid: { @@ -74,10 +66,10 @@ }, xAxis: { type: 'time', data: [], data: [] }, yAxis: { type: 'value', type: 'value' }, series: [ { @@ -86,23 +78,22 @@ data: [] } ] }; } // 使ç¨åæå®çé ç½®é¡¹åæ°æ®æ¾ç¤ºå¾è¡¨ this.chart.setOption(option, true); this.chart.setOption(option, true) }, // è·é¡µé¢ååºå¼åå resizeChart() { this.$nextTick(() => { if (this.chart) { this.chart.resize(); this.chart.resize() } }); }) } } }; } </script> <style scoped> .line-chart-exception { @@ -112,4 +103,3 @@ min-width: 500px; } </style> vite.config.js
@@ -45,5 +45,8 @@ '@': fileURLToPath(new URL('./src', import.meta.url)) } }, server: { host: '0.0.0.0' } })