From b8b2820d1a0a55a5555434a3ec95f8bbec1db06d Mon Sep 17 00:00:00 2001
From: zmc <zmc_li@foxmail.com>
Date: 星期四, 14 十二月 2023 15:22:54 +0800
Subject: [PATCH] 1.飞行巡检和审核辅助页面中的对话框写成组件 2.增加了数据请求和异常分析配置参数的可视化页面 3.修改了站点输入框,使能够模糊匹配

---
 src/api/setting/requestTaskSetting.js                      |   55 +
 src/utils/time.js                                          |   17 
 src/api/setting/exceptionSetting.js                        |   47 +
 src/views/data_management/ParameterConfiguration.vue       |  201 +-----
 src/sfc/TimeSinglePicker.vue                               |   63 +-
 /dev/null                                                  |    5 
 src/utils/common.js                                        |   13 
 src/api/index.js                                           |    4 
 src/views/data_management/components/CompEditRequest.vue   |  276 +++++----
 src/views/data_management/components/CompEditException.vue |  361 ++++++++----
 src/stores/user.js                                         |   15 
 src/views/data_management/HistoryData.vue                  |  382 ++++++++-----
 src/sfc/InputSearch.vue                                    |  165 +++--
 src/sfc/OnlyTimePick.vue                                   |   69 ++
 14 files changed, 961 insertions(+), 712 deletions(-)

diff --git a/src/api/index.js b/src/api/index.js
index 2ae6d75..7e57bff 100644
--- a/src/api/index.js
+++ b/src/api/index.js
@@ -1,9 +1,9 @@
 import axios from 'axios'
 import { setInterceptors } from './config'
 
-// const url = 'http://localhost:8081/';
+const url = 'http://localhost:8081/'
 // 閮ㄧ讲
-const url = 'http://114.215.109.124:8803/';
+// const url = 'http://114.215.109.124:8803/';
 // const url = 'http://192.168.0.123:8081/'
 
 //椋炵窘鐩戠
diff --git a/src/api/setting/exceptionSetting.js b/src/api/setting/exceptionSetting.js
index 53a1b46..14eda2d 100644
--- a/src/api/setting/exceptionSetting.js
+++ b/src/api/setting/exceptionSetting.js
@@ -1,14 +1,39 @@
-import { $http } from '@/api/index.js';
+import { $http } from '@/api/index.js'
 
 export default {
-    /**
-     * 鎻愪氦 鏁版嵁鑾峰彇鐨勯厤缃弬鏁颁慨鏀�
-     * @param锛� 閰嶇疆琛ㄥ搴旂殑瀛楁瀵硅薄
-     * @returns锛�
-     */
-    submitExceptionSetting(params){
-        console.log('寮傚父閰嶇疆鎻愪氦鐨勫弬鏁颁负锛�',params);
-        return $http.post('/dust/requestSetting/modify',params)
-    }   
+  /**
+   * 鎻愪氦 鏁版嵁鑾峰彇鐨勯厤缃弬鏁颁慨鏀�
+   * @param锛� 閰嶇疆琛ㄥ搴旂殑瀛楁瀵硅薄
+   * @returns锛�
+   */
+  submitExceptionSetting(params) {
+    return $http.post('/dust/exception/addSetting', params)
+  },
 
-}
\ No newline at end of file
+  /**
+   * 鏌ヨ寮傚父鏁版嵁閰嶇疆
+   * @param锛�
+   * @returns锛�
+   */
+  queryExceptionSetting() {
+    return $http.get('/dust/exception/querySetting')
+  },
+
+  /**
+   * 鎻愪氦 鏁版嵁鑾峰彇鐨勯厤缃弬鏁颁慨鏀�
+   * @param锛� 閰嶇疆琛ㄥ搴旂殑瀛楁瀵硅薄
+   * @returns锛�
+   */
+  alertExceptionSetting(params) {
+    return $http.post('/dust/exception/alertSetting', params)
+  },
+
+  /**
+   * 鏌ヨ鏁版嵁璇锋眰鐨勯粯璁ら厤缃� 1.0鐗堟湰
+   * @param锛�
+   * @returns锛�
+   */
+  queryDefaultSetting() {
+    return $http.get('/dust/exception/byVersion', { params: { version: '1.0' } })
+  }
+}
diff --git a/src/api/setting/requestTaskSetting.js b/src/api/setting/requestTaskSetting.js
index 1013625..3085e03 100644
--- a/src/api/setting/requestTaskSetting.js
+++ b/src/api/setting/requestTaskSetting.js
@@ -1,14 +1,47 @@
-import { $http } from '@/api/index.js';
+import { $http } from '@/api/index.js'
 
 export default {
-    /**
-     * 鎻愪氦 鏁版嵁鑾峰彇鐨勯厤缃弬鏁颁慨鏀�
-     * @param锛� 閰嶇疆琛ㄥ搴旂殑瀛楁瀵硅薄
-     * @returns锛�
-     */
-    submitRequestSetting(params){
-        console.log('璇锋眰閰嶇疆鎻愪氦鐨勫弬鏁颁负锛�',params);
-        // return $http.post('/dust/requestSetting/modify',params)
-    }   
+  /**
+   * 鎻愪氦 鏁版嵁鑾峰彇鐨勯厤缃弬鏁颁慨鏀�
+   * @param锛� 閰嶇疆琛ㄥ搴旂殑瀛楁瀵硅薄
+   * @returns锛�
+   */
+  submitRequestSetting(params) {
+    return $http.post('/dust/request/addSetting', params)
+  },
 
-}
\ No newline at end of file
+  /**
+   * 鏌ヨ鏁版嵁璇锋眰閰嶇疆
+   * @param锛�
+   * @returns锛�
+   */
+  queryRequestSetting() {
+    return $http.get('/dust/request/querySetting')
+  },
+
+
+  /**
+   * 鎻愪氦 鏁版嵁鑾峰彇鐨勯厤缃弬鏁颁慨鏀�
+   * @param锛� 閰嶇疆琛ㄥ搴旂殑瀛楁瀵硅薄
+   * @returns锛�
+   */
+  alertRequestSetting(params) {
+    return $http.post('/dust/request/alertSetting', params)
+  },
+
+
+  /**
+   * 鏌ヨ鏁版嵁璇锋眰鐨勯粯璁ら厤缃� 1.0鐗堟湰
+   * @param锛� 
+   * @returns锛�
+   */
+  queryDefaultSetting(){
+    return $http.get('/dust/request/byVersion',{params:{version:'1.0'}})
+  }
+
+
+
+}
+
+
+
diff --git a/src/sfc/InputSearch.vue b/src/sfc/InputSearch.vue
index d7d10d7..0b79333 100644
--- a/src/sfc/InputSearch.vue
+++ b/src/sfc/InputSearch.vue
@@ -13,10 +13,8 @@
   1浠h〃闇�瑕侀粯璁ゅ�� 锛�0浠h〃涓嶉渶瑕侀粯璁ゅ��
  -->
 
-
- 
 <script>
-import exceptionApi from '@/api/exceptionApi.js';
+import exceptionApi from '@/api/exceptionApi.js'
 export default {
   props: {
     // 0浠h〃涓嶉渶瑕侀粯璁ゅ�硷紝1浠h〃闇�瑕侀粯璁ゅ��
@@ -25,30 +23,30 @@
       default: '0'
     },
     // 0浠h〃涓嶉渶瑕侊紝1浠h〃鏍规嵁鏃舵鍜屽紓甯告潵缁欏嚭杈撳叆寤鸿
-    isNeedRealTimeAdvice:{
-      type:String,
-      default:'0'
+    isNeedRealTimeAdvice: {
+      type: String,
+      default: '0'
     },
-    exceptionType:{
-      type:Array,
-      default:()=>{
+    exceptionType: {
+      type: Array,
+      default: () => {
         return []
       }
     },
-    beginTime:{
-      type:String,
-      default:''
+    beginTime: {
+      type: String,
+      default: ''
     },
-    endTime:{
-      type:String,
-      default:''
+    endTime: {
+      type: String,
+      default: ''
     },
-    siteName:{
-      type:String,
-      default:'-1'
+    siteName: {
+      type: String,
+      default: '-1'
     }
   },
-  emits: ['submitValue', 'submitSiteNums','submitMncode'],
+  emits: ['submitValue', 'submitSiteNums', 'submitMncode'],
   data() {
     return {
       // 鐢ㄦ埛閫変腑鐨勫��
@@ -56,41 +54,44 @@
       // 淇濆瓨杈撳叆寤鸿鐨勭珯鐐瑰悕绉�
       siteNames: [],
       // 淇濆瓨杈撳叆寤鸿鐨勭珯鐐硅澶囩紪鍙�
-      siteNamesAndMnCode:[]
+      siteNamesAndMnCode: []
     }
   },
-  watch:{
-    beginTime(val,oldVal){
-      
-      if(this.isNeedRealTimeAdvice =='1' && oldVal != ''){
-        exceptionApi.getExceptionName(this.exceptionType,this.beginTime,this.endTime).then( res=>{
-          this.siteNames = []
-          const sites = res.data.data
-          sites.filter((item) => {
-          this.siteNames.push(item['name'])
+  watch: {
+    beginTime(val, oldVal) {
+      if (this.isNeedRealTimeAdvice == '1' && oldVal != '') {
+        exceptionApi
+          .getExceptionName(this.exceptionType, this.beginTime, this.endTime)
+          .then((res) => {
+            this.siteNames = []
+            const sites = res.data.data
+            sites.filter((item) => {
+              this.siteNames.push(item['name'])
+            })
           })
-        })
       }
     },
-    exceptionType(){
-      if(this.isNeedRealTimeAdvice =='1' ){
-        exceptionApi.getExceptionName(this.exceptionType,this.beginTime,this.endTime).then( res=>{
-          this.siteNames = []
-          const sites = res.data.data
-          sites.filter((item) => {
-          this.siteNames.push(item['name'])
+    exceptionType() {
+      if (this.isNeedRealTimeAdvice == '1') {
+        exceptionApi
+          .getExceptionName(this.exceptionType, this.beginTime, this.endTime)
+          .then((res) => {
+            this.siteNames = []
+            const sites = res.data.data
+            sites.filter((item) => {
+              this.siteNames.push(item['name'])
+            })
           })
-        })
       }
     },
-    siteName(){
-      if(this.siteName != '-1' && this.siteName != ''){
+    siteName() {
+      if (this.siteName != '-1' && this.siteName != '') {
         this.state = this.siteName
         this.$emit('submitValue', this.state)
       }
     },
-    state(){
-      if(this.state != '' && this.state != null){
+    state() {
+      if (this.state != '' && this.state != null) {
         // 鏌ユ壘瀵瑰簲鐨勮澶囩紪鍙�
         this.onSiteNameSelected(this.state)
       }
@@ -108,59 +109,66 @@
     }
   },
   methods: {
+    obscureMatch(a, b) {
+      const pattern = new RegExp(a, 'i')
+      // 'i' 琛ㄧず涓嶅尯鍒嗗ぇ灏忓啓
+      return pattern.test(b)
+    },
+
     querySearch(queryString, cb) {
       const results = queryString
         ? this.siteNames.filter(this.createFilter(queryString))
         : this.siteNames
       cb(results)
     },
+
     createFilter(queryString) {
       return (restaurant) => {
         return (
-          // toLowerCase() 鏂规硶鐢ㄤ簬鎶婂瓧绗︿覆杞崲涓哄皬鍐欍��
-          restaurant.toLowerCase().indexOf(queryString.toLowerCase()) === 0
+          this.obscureMatch(queryString,restaurant)
         )
       }
     },
     // 鍒濆鍖栧姞杞芥墍鏈夌殑绔欑偣鍚嶅瓧
     loadAll() {
-      if(this.isNeedRealTimeAdvice == '1'){
-        exceptionApi.getExceptionName(this.exceptionType,this.beginTime,this.endTime).then( res=>{
-          this.siteNames = []
-          const sites = res.data.data
-          sites.filter((item) => {
-          this.siteNames.push(item['name'])
-          let temp = {}
-          temp.name = item.name
-          temp.mnCode = item.mnCode
-          this.siteNamesAndMnCode.push(temp)
+      if (this.isNeedRealTimeAdvice == '1') {
+        exceptionApi
+          .getExceptionName(this.exceptionType, this.beginTime, this.endTime)
+          .then((res) => {
+            this.siteNames = []
+            const sites = res.data.data
+            sites.filter((item) => {
+              this.siteNames.push(item['name'])
+              let temp = {}
+              temp.name = item.name
+              temp.mnCode = item.mnCode
+              this.siteNamesAndMnCode.push(temp)
+            })
           })
+      } else if (this.isNeedRealTimeAdvice == '0') {
+        exceptionApi.getSitesNum().then((response) => {
+          const sites = response.data.data
+          sites.filter((item) => {
+            this.siteNames.push(item['name'])
+            let temp = {}
+            temp.name = item.name
+            temp.mnCode = item.mnCode
+            this.siteNamesAndMnCode.push(temp)
+          })
+          this.$emit('submitSiteNums', this.siteNames.length)
         })
-
-    }else if(this.isNeedRealTimeAdvice == '0'){
-      exceptionApi.getSitesNum().then((response) => {
-        const sites = response.data.data
-        sites.filter((item) => {
-          this.siteNames.push(item['name'])
-          let temp = {}
-          temp.name = item.name
-          temp.mnCode = item.mnCode
-          this.siteNamesAndMnCode.push(temp)
-        })
-        this.$emit('submitSiteNums', this.siteNames.length)
-      })
-    }
+      }
     },
     // 鏍规嵁閫変腑鐨勭珯鐐规煡璇㈣澶囩紪鍙�
-    onSiteNameSelected(siteName) { 
-      const selectedSite = this.siteNamesAndMnCode.find((site) => site.name == siteName); 
-  if (selectedSite) { 
-    this.$emit('submitMncode',selectedSite.mnCode)
-  }else{
-    this.$emit('submitMncode','')
-  }
-},
-    
+    onSiteNameSelected(siteName) {
+      const selectedSite = this.siteNamesAndMnCode.find((site) => site.name == siteName)
+      if (selectedSite) {
+        this.$emit('submitMncode', selectedSite.mnCode)
+      } else {
+        this.$emit('submitMncode', '')
+      }
+    },
+
     // 鐐瑰嚮閫変腑寤鸿椤规椂瑙﹀彂
     handleSelect(item) {
       this.state = item
@@ -171,7 +179,7 @@
       this.state = ''
       this.$emit('submitValue', this.state)
     },
-
+  
   }
 }
 </script>
@@ -209,5 +217,4 @@
 .el-autocomplete {
   width: 200px;
 }
-
 </style>
diff --git a/src/sfc/OnlyTimePick.vue b/src/sfc/OnlyTimePick.vue
new file mode 100644
index 0000000..08d6465
--- /dev/null
+++ b/src/sfc/OnlyTimePick.vue
@@ -0,0 +1,69 @@
+<!-- 鏃堕棿閫夋嫨鍣ㄧ粍浠� 
+
+    寮�濮嬫椂闂达細鏁版嵁搴撴渶鏂颁竴鏉℃暟鎹椂闂淬��
+    缁撴潫鏃堕棿锛氬綋鍓嶆椂闂�
+    浼氬皢璧峰鏃堕棿鍜屾敼鍙樼殑鏃堕棿閫氳繃浜嬩欢鈥榮ubmitTime鈥欎紶閫掔粰鐖剁粍浠�
+  
+  鍒濆娓叉煋鏃跺氨灏嗘椂闂翠紶閫掔粰鐖剁粍浠讹細
+  ** 
+  鍦ㄧ埗缁勪欢涓缃�
+  <TimeSelectCrawling @submit-time="giveTime"></TimeSelectCrawling>
+   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');
+      },
+  ***
+-->
+
+<script>
+import time from '@/utils/time.js'
+export default {
+  props: {
+    // 鐖剁粍浠朵紶鍏ョ殑鏃堕棿
+    selectedTime: {
+      type: String,
+      default: ''
+    },
+    // 鏄惁璁剧疆鍙灞炴��
+    readOnly: {
+      type: Boolean,
+      default: false
+    },
+    isUTC: {
+      type: Boolean,
+      default: false
+    }
+  },
+  emits: ['submitTime'],
+  data() {
+    return {
+      time: ''
+    }
+  },
+  watch: {
+    selectedTime(newVal) {
+      if (newVal != '') {
+        this.time = this.selectedTime
+      }
+    }
+  },
+  mounted() {
+    this.time = this.selectedTime
+  },
+  methods: {
+    change() {
+      let t = time.utcTime(this.time)
+      console.log('isUTC', this.isUTC)
+      console.log('鏃堕棿', t)
+      this.isUTC ? this.$emit('submitTime', t) : this.$emit('submitTime', this.time)
+    }
+  }
+}
+</script>
+
+<template>
+  <el-time-picker v-model="time" placeholder="閫夋嫨鏃堕棿" editable @change="change" />
+</template>
+
+<style scoped></style>
diff --git a/src/sfc/TimeSinglePicker.vue b/src/sfc/TimeSinglePicker.vue
index 49e4819..da0bd53 100644
--- a/src/sfc/TimeSinglePicker.vue
+++ b/src/sfc/TimeSinglePicker.vue
@@ -1,7 +1,5 @@
-<!-- 鍗曚釜 鏃ユ湡鏃堕棿閫夋嫨鍣ㄧ粍浠�   甯︽棩鍛ㄦ湀蹇嵎閫夐」
-  鍓嶄竴澶╂槸褰撳墠鏃堕棿鐨勫墠涓�澶╃殑00鐐瑰埌23锛�59锛�59
-  鍓嶄竷澶� 鍜� 涓婁竴涓湀鍚屾牱
-  浼氬皢鍒濆榛樿鏃堕棿锛堜竴鍛ㄥ墠锛夊拰鏀瑰彉鐨勬椂闂撮�氳繃浜嬩欢鈥榮ubmitTime鈥欎紶閫掔粰鐖剁粍浠�
+<!-- 鍗曚釜 鏃ユ湡鏃堕棿閫夋嫨鍣ㄧ粍浠�  
+  灏嗗垵濮嬮粯璁ゆ椂闂达紙涓�鍛ㄥ墠锛夊拰鏀瑰彉鐨勬椂闂撮�氳繃浜嬩欢鈥榮ubmitTime鈥欎紶閫掔粰鐖剁粍浠�
   
   鍒濆娓叉煋鏃跺氨灏嗘椂闂翠紶閫掔粰鐖剁粍浠讹細
   ** 
@@ -11,16 +9,24 @@
 -->
 
 <script>
-import dayjs from 'dayjs'
+import time from '@/utils/time.js'
 export default {
   props: {
     // 鐖剁粍浠朵紶鍏ョ殑鏃堕棿
     selectedTime: {
-      type: String,
+      // type: [String,null],
       default: ''
     },
     // 鏄惁璁剧疆鍙灞炴��
     readOnly: {
+      type: Boolean,
+      default: false
+    },
+    isUTC: {
+      type: Boolean,
+      default: false
+    },
+    isDisabled: {
       type: Boolean,
       default: false
     }
@@ -28,38 +34,37 @@
   emits: ['submitTime'],
   data() {
     return {
-      time: '',
-      shortcuts: []
+      time: ''
     }
   },
-  // watch: {
-  //   selectedTime(newVal) {
-  //     console.log('time', this.selectedTime)
-  //     if (newVal != '') {
-  //       this.time = this.selectedTime
-  //     }
-  //   }
-  // },
-  mounted() {
-    console.log('time', this.selectedTime)
-
-    this.time = this.selectedTime
+  watch: {
+    selectedTime(newVal) {
+      if (newVal != '') {
+        // this.time = time.utcToStr(this.selectedTime)
+        this.time = this.selectedTime
+      }
+    }
   },
+
+  mounted() {
+    this.time = time.utcToStr(this.selectedTime)
+  },
+
   methods: {
-    
+    change() {
+      if (this.time != null) {
+        let t = time.utcTime(this.time)
+        this.isUTC ? this.$emit('submitTime', t) : this.$emit('submitTime', this.time)
+      } else {
+        this.$emit('submitTime', this.time)
+      }
+    }
   }
 }
 </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)"
-  />
+  <el-date-picker v-model="time" type="datetime" placeholder="閫夋嫨鏃堕棿" @change="change" />
 </template>
 
 <style scoped></style>
diff --git a/src/stores/user.js b/src/stores/user.js
index 51b1b60..ac6b272 100644
--- a/src/stores/user.js
+++ b/src/stores/user.js
@@ -1,8 +1,9 @@
 // 鍔犺浇鐘舵�佺殑閫昏緫绠$悊
 
 import { defineStore } from 'pinia'
+import { ref, computed } from 'vue'
 
-export const useLoginUserStore = defineStore('loginUser',() => {
+export const useLoginUserStore = defineStore('loginUser', () => {
   // 褰撳墠鐧婚檰鐨勭敤鎴峰悕
   const currentLoginUser = ref('-1')
   // 淇敼
@@ -10,12 +11,10 @@
     currentLoginUser.value = user
   }
 
-
-  
-  const getUserName = computed(()=>{
-    return currentLoginUser.value == '-1' ? localStorage.getItem('currentUserName'): currentLoginUser.value
+  const getUserName = computed(() => {
+    return currentLoginUser.value == '-1'
+      ? localStorage.getItem('currentUserName')
+      : currentLoginUser.value
   })
-  return {currentLoginUser,setUser,getUserName}
+  return { currentLoginUser, setUser, getUserName }
 })
-
-
diff --git a/src/utils/common.js b/src/utils/common.js
index 9917e01..a4bde17 100644
--- a/src/utils/common.js
+++ b/src/utils/common.js
@@ -115,5 +115,16 @@
     return Math.round(v * 100, 2) + '%'
   }
 
-  return { isExceedOneMonth, cmpp, exportToExcel, descFiftyTime, percentFormatter }
+   /**
+     * 鎵惧嚭瀛楃涓叉暟瀛楃殑鏈�澶у��
+     * @param锛� 
+     * @returns锛�
+     */
+   function findMaxValue(values) {
+    const numbers = values.map((value) => parseFloat(value))
+    const max = Math.max(...numbers)
+    return max.toString()
+  }
+  
+  return { isExceedOneMonth, cmpp, exportToExcel, descFiftyTime, percentFormatter,findMaxValue }
 }
diff --git a/src/utils/test.js b/src/utils/test.js
deleted file mode 100644
index a758e3f..0000000
--- a/src/utils/test.js
+++ /dev/null
@@ -1,5 +0,0 @@
-export default {
-    add(a,b){
-        return a+b
-    }
-}
\ No newline at end of file
diff --git a/src/utils/time.js b/src/utils/time.js
index eac1bd6..adc38b1 100644
--- a/src/utils/time.js
+++ b/src/utils/time.js
@@ -239,5 +239,22 @@
       }
     }
     return r
+  },
+  /**
+   * 鏍规嵁鏃堕棿瀛楃涓茶繑鍥濽TC鏃堕棿
+   * @param锛� 
+   * @returns锛�
+   */
+  utcTime(timeStr){
+    return dayjs(timeStr).format()
+  },
+  /**
+   * 灏唘tc鏃堕棿杞负鏃堕棿瀛楃涓�
+   * @param锛� 
+   * @returns锛�
+   */
+  utcToStr(dateTime){
+    const r = dateTime ? dayjs(dateTime).format('YYYY-MM-DD HH:mm:ss') :false
+    return r
   }
 }
diff --git a/src/views/data_management/HistoryData.vue b/src/views/data_management/HistoryData.vue
index 9679a7f..18869d3 100644
--- a/src/views/data_management/HistoryData.vue
+++ b/src/views/data_management/HistoryData.vue
@@ -1,15 +1,15 @@
 <script>
-import TimeShortCuts from '@/sfc/TimeShortCuts.vue';
-import ScenarioType from '@/sfc/ScenarioType.vue';
-import InputSearch from '@/sfc/InputSearch.vue';
+import TimeShortCuts from '@/sfc/TimeShortCuts.vue'
+import ScenarioType from '@/sfc/ScenarioType.vue'
+import InputSearch from '@/sfc/InputSearch.vue'
 import { ElMessage } from 'element-plus'
 import AreaAndmonitorType from '@/sfc/AreaAndmonitorType.vue'
 
-import { useCommonFunction } from '../../utils/common.js';
+import { useCommonFunction } from '../../utils/common.js'
 import requetsApi from '@/api/exportExcel/requetsApi.js'
 import ButtonClick from '@/sfc/ButtonClick.vue'
 import ButtonExportExcel from '@/sfc/ButtonExportExcel.vue'
-import dayjs from 'dayjs';
+import dayjs from 'dayjs'
 
 export default {
   components: {
@@ -33,7 +33,7 @@
         endTime: ''
       },
       // 鎼滅储妗嗕紶閫掍笂鏉ョ殑璁惧缂栧彿
-      tempMnCode :'',
+      tempMnCode: '',
       // 杩斿洖鐨勬暟鎹�
       tableData: [],
       // 琛ㄦ牸鏁版嵁
@@ -46,7 +46,7 @@
       // 鍔犺浇涓�
       loading: false,
       queryButton: false,
-      exportButton:false,
+      exportButton: false,
       // 绌虹姸鎬�
       isNoData: false,
       // 宸查�変腑鐨勫満鏅被鍨�
@@ -54,36 +54,35 @@
       // 琛ㄦ牸楂樺害
       tableHeight: '500',
       // 绔欑偣鎬绘暟閲�
-      siteNums:0
-    };
+      siteNums: 0
+    }
   },
   setup() {
     const { isExceedOneMonth, exportToExcel } = useCommonFunction()
     return { isExceedOneMonth, exportToExcel }
   },
   mounted() {
-    this.backMinuteDataAWeekAgo();
-    this.calTableHeight();
+    this.backMinuteDataAWeekAgo()
+    this.calTableHeight()
   },
 
   methods: {
     exportDom() {
-
       let params = {
-        'beginTime': this.form.beginTime,
-        'endTime': this.form.endTime,
+        beginTime: this.form.beginTime,
+        endTime: this.form.endTime
       }
       if (this.form.name) {
-        params['siteName'] = this.form.name;
+        params['siteName'] = this.form.name
       }
       if (this.form.number) {
-        params['mnCode'] = this.form.numbe;
+        params['mnCode'] = this.form.numbe
       }
       if (this.scenarioType.length != 0) {
-        params['scenarioType'] = this.scenarioType;
+        params['scenarioType'] = this.scenarioType
       }
       this.exportButton = true
-      requetsApi.fetchAlSiteData(params).then(res => {
+      requetsApi.fetchAlSiteData(params).then((res) => {
         const data = res.data.data
         if (data.length != 0) {
           const tableColumns = [
@@ -96,15 +95,22 @@
             'noiseValue',
             'lst',
             'quality',
-            'groupName',
-
+            'groupName'
           ]
-          const excelColumns = [['A1', '绔欑偣鍚嶇О'],
-          ['B1', '鍦板潃'], ['C1', '渚涘簲鍟�'], ['D1', '璁惧缂栧彿'],
-          ['E1', '绫诲瀷'], ['F1', '鎵皹娴撳害(mg/m鲁)'], ['G1', '鍣0(dB)'],
-          ['H1', '閲囬泦鏃堕棿'], ['I1', '绛夌骇'], ['J1', '鎵�鍦ㄥ尯鍘�']]
+          const excelColumns = [
+            ['A1', '绔欑偣鍚嶇О'],
+            ['B1', '鍦板潃'],
+            ['C1', '渚涘簲鍟�'],
+            ['D1', '璁惧缂栧彿'],
+            ['E1', '绫诲瀷'],
+            ['F1', '鎵皹娴撳害(mg/m鲁)'],
+            ['G1', '鍣0(dB)'],
+            ['H1', '閲囬泦鏃堕棿'],
+            ['I1', '绛夌骇'],
+            ['J1', '鎵�鍦ㄥ尯鍘�']
+          ]
           this.exportToExcel(data, tableColumns, excelColumns, '鍘嗗彶鏁版嵁琛�.xlsx')
-        }else{
+        } else {
           ElMessage('鏃犳暟鎹渶瑕佸鍑�')
         }
         this.exportButton = false
@@ -112,198 +118,260 @@
     },
     // 鍔熻兘锛氳〃鏍奸珮搴︽牴鎹唴瀹硅嚜閫傚簲
     calTableHeight() {
-      const h1 = this.$refs.h1.$el.offsetHeight;
-      const h2 = this.$refs.h2.$el.offsetHeight;
+      const h1 = this.$refs.h1.$el.offsetHeight
+      const h2 = this.$refs.h2.$el.offsetHeight
       // 鍏朵腑涓�涓�40鏄洅瀛愮殑鎬诲杈硅窛
-      this.tableHeight = `calc(100vh - ${h1}px - ${h2}px - 40px - 40px - var(--el-main-padding) * 2`;
+      this.tableHeight = `calc(100vh - ${h1}px - ${h2}px - 40px - 40px - var(--el-main-padding) * 2`
     },
     giveTime(val) {
       //灏嗕腑鍥芥爣鍑嗘椂闂磋浆涓烘寚瀹氭牸寮�(璇ョ粍浠惰繑鍥炵殑鏍囧噯鏃堕棿鐨勬牸寮忥紝鎵�浠ュ繀椤荤殑鍔犺繖涓嚱鏁�)
-      this.form.beginTime = dayjs(val[0]).format('YYYY-MM-DD HH:mm:ss');
-      this.form.endTime = dayjs(val[1]).format('YYYY-MM-DD HH:mm:ss');
+      this.form.beginTime = dayjs(val[0]).format('YYYY-MM-DD HH:mm:ss')
+      this.form.endTime = dayjs(val[1]).format('YYYY-MM-DD HH:mm:ss')
     },
     // 椤靛ぇ灏忔敼鍙樻椂瑙﹀彂
     handleSizeChange(val) {
-      this.pageSize = val;
+      this.pageSize = val
 
       // 鏀瑰彉姣忛〉鏄剧ず鏁扮洰鏃惰烦鍒板綋鍓嶉〉
-      this.handleCurrentChange(1);
+      this.handleCurrentChange(1)
     },
 
     // 椤靛彿鏀瑰彉鏃惰Е鍙�
     handleCurrentChange(val) {
       // 灏嗗綋鍓嶉〉鍙风粰currentPage
-      this.currentPage = val;
+      this.currentPage = val
 
       // 椤甸潰鍙樺寲鏃惰皟鐢� 鏌ヨ鏁版嵁鍑芥暟
-      this.handleSubmit();
+      this.handleSubmit()
     },
     //搴忓彿閫掑
     indexMethod(index) {
-      return index + 1 + (this.currentPage - 1) * this.pageSize;
+      return index + 1 + (this.currentPage - 1) * this.pageSize
     },
 
     // 鏌ヨ鏁版嵁
     handleSubmit() {
-
-      this.loading = true;
+      this.loading = true
       this.queryButton = true
-      let params = {};
-      params['page'] = this.currentPage;
-      params['pageSize'] = this.pageSize;
+      let params = {}
+      params['page'] = this.currentPage
+      params['pageSize'] = this.pageSize
       if (this.form.name) {
-        params['siteName'] = this.form.name;
+        params['siteName'] = this.form.name
       }
       if (this.form.number) {
-        params['mnCode'] = this.form.number;
+        params['mnCode'] = this.form.number
       }
-      params['beginTime'] = this.form.beginTime;
-      params['endTime'] = this.form.endTime;
+      params['beginTime'] = this.form.beginTime
+      params['endTime'] = this.form.endTime
       if (this.scenarioType.length != 0) {
-        params['scenarioType'] = this.scenarioType.join();
+        params['scenarioType'] = this.scenarioType.join()
       }
       this.$http.get('/dust/history1', { params: params }).then((response) => {
         // 淇濆瓨杩斿洖鐨�
-        this.tableData = response.data.data.rows;
-        this.displayData = this.tableData;
-        this.loading = false;
+        this.tableData = response.data.data.rows
+        this.displayData = this.tableData
+        this.loading = false
         this.queryButton = false
         if (response.data.data.total == 0) {
-          ElMessage('璇ユ椂娈垫棤鏁版嵁');
-          this.loading = false;
+          ElMessage('璇ユ椂娈垫棤鏁版嵁')
+          this.loading = false
           this.queryButton = false
-          this.isNoData = true;
-          return;
+          this.isNoData = true
+          return
         }
-        this.total = response.data.data.total;
+        this.total = response.data.data.total
         // 绉婚櫎绌烘暟鎹姸鎬�
-        this.isNoData = false;
-      });
+        this.isNoData = false
+      })
     },
     backMinuteDataAWeekAgo() {
       // 鎵撳紑椤甸潰鍔犺浇鏈�杩戜竴鍛ㄧ殑鏁版嵁
-      this.loading = true;
+      this.loading = true
       // 缁欒緭鍏ユ璁剧疆榛樿鐨勯�夋嫨椤�
 
-      let params = {};
-      params['siteName'] = this.form.name;
-      params['beginTime'] = this.form.beginTime;
-      params['endTime'] = this.form.endTime;
+      let params = {}
+      params['siteName'] = this.form.name
+      params['beginTime'] = this.form.beginTime
+      params['endTime'] = this.form.endTime
 
       this.$http.get('/dust/history1', { params: params }).then((response) => {
         // 淇濆瓨杩斿洖鐨�
-        this.tableData = response.data.data.rows;
-        this.displayData = this.tableData;
+        this.tableData = response.data.data.rows
+        this.displayData = this.tableData
 
         if (response.data.data.total == 0) {
-          ElMessage('璇ユ椂娈垫棤鏁版嵁');
-          this.isNoData = true;
-          return;
+          ElMessage('璇ユ椂娈垫棤鏁版嵁')
+          this.isNoData = true
+          return
         }
-        this.total = response.data.data.total;
-        this.loading = false;
-      });
-    }
+        this.total = response.data.data.total
+        this.loading = false
+      })
+    } 
   }
-};
+}
 </script>
 
 <template>
-  <div class="history-container"> 
-  <el-row>
-    <el-col ref="h1" class="head-row">
-      <el-card>
-        <el-form :inline="true">
-          <div class="demo-form-inline">
-            <el-row>
-              <el-col>
-                <el-form-item>
-                  <AreaAndmonitorType></AreaAndmonitorType>
-                </el-form-item>
+  <div class="history-container">
+    <el-row>
+      <el-col ref="h1" class="head-row">
+        <el-card>
+          <el-form :inline="true">
+            <div class="demo-form-inline">
+              <el-row>
+                <el-col>
+                  <el-form-item>
+                    <AreaAndmonitorType></AreaAndmonitorType>
+                  </el-form-item>
 
-                <el-form-item>
-                  <InputSearch isNeedDefaultSite="1" @submit-value="(n) => (form.name = n)" @submit-site-nums="(n)=>(siteNums=n)">
-                  </InputSearch>
-                </el-form-item>
-                
-                <el-form-item>
-                  <template #label>
-                    <span class="font-label">璁惧缂栧彿:</span>
-                  </template>
-                  <el-input v-model="form.number" clearable placeholder="璇疯緭鍏�"></el-input>
-                </el-form-item>
-              </el-col>
+                  <el-form-item>
+                    <InputSearch
+                      isNeedDefaultSite="1"
+                      @submit-value="(n) => (form.name = n)"
+                      @submit-site-nums="(n) => (siteNums = n)"
+                    >
+                    </InputSearch>
+                  </el-form-item>
 
-              <el-col> 
-                <el-form-item>
-                <TimeShortCuts time-type="week"  @submit-time="giveTime"></TimeShortCuts>
+                  <el-form-item>
+                    <template #label>
+                      <span class="font-label">璁惧缂栫爜:</span>
+                    </template>
+                    <el-input v-model="form.number" clearable placeholder="璇疯緭鍏�"></el-input>
+                  </el-form-item>
+                </el-col>
+
+                <el-col>
+                  <el-form-item>
+                    <TimeShortCuts time-type="week" @submit-time="giveTime"></TimeShortCuts>
+                  </el-form-item>
+
+                  <el-form-item>
+                    <ScenarioType @submitScenarioType="(val) => (scenarioType = val)">
+                    </ScenarioType>
+                  </el-form-item>
+                </el-col>
+              </el-row>
+            </div>
+            <div class="button-and-export">
+              <el-form-item>
+                <el-tag class="ml-2" type="success" size="large">鐐逛綅鎬绘暟</el-tag>
+                <span class="tag-text">{{ siteNums }}</span>
               </el-form-item>
 
               <el-form-item>
-                  <ScenarioType @submitScenarioType="(val) => (scenarioType = val)">
-                  </ScenarioType>
-                </el-form-item>
+                <ButtonClick
+                  style="margin-right: 12px"
+                  content="鎼滅储"
+                  type="primary"
+                  :loading="queryButton"
+                  @do-search="handleSubmit"
+                ></ButtonClick>
+                <ButtonExportExcel
+                  content="瀵煎嚭鏁版嵁"
+                  type="success"
+                  :loading="exportButton"
+                  @do-export="exportDom"
+                ></ButtonExportExcel>
+              </el-form-item>
+            </div>
+          </el-form>
+        </el-card>
+      </el-col>
+      <el-col> </el-col>
+    </el-row>
 
-              </el-col>
-
-              
-            </el-row>
-          </div>
-          <div class="button-and-export">
-            <el-form-item>
-              <el-tag class="ml-2" type="success" size="large">绔欑偣鎬绘暟</el-tag>
-              <span class="tag-text">{{ siteNums }}</span>
-            </el-form-item>
-            
-            <el-form-item>
-              <ButtonClick style="margin-right: 12px;" content="鎼滅储" type="primary" :loading="queryButton" @do-search="handleSubmit"></ButtonClick>
-              <ButtonExportExcel  content="瀵煎嚭鏁版嵁" type="success" :loading="exportButton" @do-export="exportDom"></ButtonExportExcel>
-            </el-form-item>
-          </div>
-        </el-form>
-           
-      </el-card>
-    </el-col>
-    <el-col>
-     
-    </el-col>
-  </el-row>
-
-  <el-row>
-    <el-col v-show="!isNoData">
-
-      <el-table border size="default" :highlight-current-row="true" :data="displayData" :height="tableHeight"
-        v-loading="loading">
-        <!--缁戝畾涓�涓柟娉曪紝灏嗚繑鍥炲�艰祴缁檌ndex,鍗宠〃鏍兼瘡琛屾暟鎹殑涓嬫爣-->
-        <el-table-column type="index" label="搴忓彿" align="center" fixed :index="indexMethod"></el-table-column>
-        <el-table-column prop="name" label="鐐逛綅鍚嶇О" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="address" label="鍦板潃" align="center" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="dutyCompany" label="杩愮淮鍟�" align="center" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="mnCode" label="璁惧缂栫爜" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="typeName" label="绫诲瀷" align="center" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="dustValue" label="TSP(mg/m鲁)" align="center" sortable
-          show-overflow-tooltip></el-table-column>
-        <el-table-column prop="noiseValue" label="鍣0(dB)" align="center" sortable show-overflow-tooltip></el-table-column>
-        <el-table-column prop="lst" label="閲囬泦鏃堕棿" sortable align="center" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="quality" label="绛夌骇" align="center" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="groupName" label="鎵�鍦ㄥ尯鍘�" align="center" show-overflow-tooltip>
-        </el-table-column>
-      </el-table>
-      <!--size-change 鏄痯ageSize 鏀瑰彉鏃朵細瑙﹀彂鐨勪簨浠�,handleSizeChange鏄簨浠跺鐞嗗嚱鏁�
+    <el-row>
+      <el-col v-show="!isNoData">
+        <el-table
+          border
+          size="default"
+          :highlight-current-row="true"
+          :data="displayData"
+          :height="tableHeight"
+          v-loading="loading"
+        >
+          <!--缁戝畾涓�涓柟娉曪紝灏嗚繑鍥炲�艰祴缁檌ndex,鍗宠〃鏍兼瘡琛屾暟鎹殑涓嬫爣-->
+          <el-table-column
+            type="index"
+            label="搴忓彿"
+            align="center"
+            fixed
+            :index="indexMethod"
+          ></el-table-column>
+          <el-table-column prop="name" label="鐐逛綅鍚嶇О" show-overflow-tooltip></el-table-column>
+          <el-table-column
+            prop="address"
+            label="鍦板潃"
+            align="center"
+            show-overflow-tooltip
+          ></el-table-column>
+          <el-table-column
+            prop="dutyCompany"
+            label="杩愮淮鍟�"
+            align="center"
+            show-overflow-tooltip
+          ></el-table-column>
+          <el-table-column prop="mnCode" label="璁惧缂栫爜" show-overflow-tooltip></el-table-column>
+          <el-table-column
+            prop="typeName"
+            label="绫诲瀷"
+            align="center"
+            show-overflow-tooltip
+          ></el-table-column>
+          <el-table-column
+            prop="dustValue"
+            label="TSP(mg/m鲁)"
+            align="center"
+            sortable
+            show-overflow-tooltip
+          ></el-table-column>
+          <el-table-column
+            prop="noiseValue"
+            label="鍣0(dB)"
+            align="center"
+            sortable
+            show-overflow-tooltip
+          ></el-table-column>
+          <el-table-column
+            prop="lst"
+            label="閲囬泦鏃堕棿"
+            sortable
+            align="center"
+            show-overflow-tooltip
+          ></el-table-column>
+          <el-table-column
+            prop="quality"
+            label="绛夌骇"
+            align="center"
+            show-overflow-tooltip
+          ></el-table-column>
+          <el-table-column prop="groupName" label="鎵�鍦ㄥ尯鍘�" align="center" show-overflow-tooltip>
+          </el-table-column>
+        </el-table>
+        <!--size-change 鏄痯ageSize 鏀瑰彉鏃朵細瑙﹀彂鐨勪簨浠�,handleSizeChange鏄簨浠跺鐞嗗嚱鏁�
      current-change 鏄痗urrentPage 鏀瑰彉鏃朵細瑙﹀彂鐨勪簨浠�    -->
 
-      <el-pagination ref="h2" background @size-change="handleSizeChange" @current-change="handleCurrentChange"
-        :page-sizes="[10, 20, 50, 100]" :page-size="pageSize" :total="total"
-        layout="total,sizes, prev, pager, next, jumper" :current-page="currentPage"></el-pagination>
-
-    </el-col>
-    <el-empty v-show="isNoData" :image-size="200" />
-
-  </el-row>
-</div>
+        <el-pagination
+          ref="h2"
+          background
+          @size-change="handleSizeChange"
+          @current-change="handleCurrentChange"
+          :page-sizes="[10, 20, 50, 100]"
+          :page-size="pageSize"
+          :total="total"
+          layout="total,sizes, prev, pager, next, jumper"
+          :current-page="currentPage"
+        ></el-pagination>
+      </el-col>
+      <el-empty v-show="isNoData" :image-size="200" />
+    </el-row>
+  </div>
 </template>
 
-<style  scoped>
+<style scoped>
 .history-container {
   min-width: 1200px;
 }
@@ -340,12 +408,12 @@
 
 .el-table {
   /* color: #303133 */
-  color: rgb(59, 60, 63)
+  color: rgb(59, 60, 63);
 }
 .el-pagination {
   margin: 10px 10px;
 }
-.tag-text{
+.tag-text {
   margin-left: 10px;
   font-size: 14px;
 }
diff --git a/src/views/data_management/ParameterConfiguration.vue b/src/views/data_management/ParameterConfiguration.vue
index fbf1cd5..acce730 100644
--- a/src/views/data_management/ParameterConfiguration.vue
+++ b/src/views/data_management/ParameterConfiguration.vue
@@ -2,6 +2,10 @@
 import TimeSinglePicker from '@/sfc/TimeSinglePicker.vue'
 import CompEditRequest from '@/views/data_management/components/CompEditRequest.vue'
 import CompEditException from '@/views/data_management/components/CompEditException.vue'
+import dayjs from 'dayjs'
+import exceptionSetting from '@/api/setting/exceptionSetting.js'
+import requestTaskSetting from '@/api/setting/requestTaskSetting.js'
+import { useLoginUserStore } from '@/stores/user'
 export default {
   components: {
     TimeSinglePicker,
@@ -12,53 +16,14 @@
     return {
       activeName: 'first',
       // 瀵硅瘽妗嗘樉绀�
-      dialog:{
+      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
-      }],
+      // 璇锋眰浠诲姟閰嶇疆鏁版嵁
+      requestData: [],
+      // 寮傚父鍒嗘瀽閰嶇疆鏁版嵁
+      exceptionSettingData: [],
       form_1: {
         user: '11',
         requestStartTime: '',
@@ -66,118 +31,50 @@
         staticsDailyTime: '',
         staticsMonthlyTime: ''
       },
-      loading:false,
-   
+      // 鍔犺浇涓�
+      loading: {
+        request: '',
+        exception: ''
+      }
     }
   },
+  setup() {
+    const userName = useLoginUserStore()
+    return {
+      userName
+    }
+  },
+  watch: {
 
+  },
   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')])
-      )
-    },
-
+    /**
+     * 鍙栨秷鎸夐挳
+     * @param锛�
+     * @returns锛�
+     */
+    cancelEvent() {
+      this.$message.info('宸插彇娑�')
+    }
   }
 }
 </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-tabs v-model="activeName" class="demo-tabs">
+        <el-tab-pane label="鏁版嵁鑾峰彇" name="first">
+          <CompEditRequest :user-name="userName.getUserName"></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 label="寮傚父鍒嗘瀽" name="second">
+          <CompEditException :user-name="userName.getUserName"></CompEditException>
         </el-tab-pane>
       </el-tabs>
 
-      <!-- <el-button @click="render"> 娓叉煋html</el-button> -->
-      <!-- <el-button @click="addObj"> 澧炲姞瀵硅薄</el-button> -->
     </el-col>
   </el-row>
 </template>
@@ -190,26 +87,10 @@
   font-size: 30px;
   color: #333333;
 }
-</style>
-
-<!-- <script>
-  export default {
-    data() {
-      return{
-        inputValue:null
-      }
-    },
-    mounted() {
-
-    },
-    methods: {
-
-     }
+.el-button {
+  margin-top: 20px;
 }
-</script>
-
-<template>
-  {{inputValue}}
-  杈撳叆<el-input v-model.number="inputValue" maxlength="10">
-     </el-input>
-</template> -->
+.el-table {
+  color: #333333;
+}
+</style>
diff --git a/src/views/data_management/components/CompEditException.vue b/src/views/data_management/components/CompEditException.vue
index 4e3d846..6c34a19 100644
--- a/src/views/data_management/components/CompEditException.vue
+++ b/src/views/data_management/components/CompEditException.vue
@@ -1,157 +1,264 @@
 <script>
-import TimeSinglePicker from '@/sfc/TimeSinglePicker.vue'
+import exceptionSetting from '@/api/setting/exceptionSetting.js'
+import { useCommonFunction } from '@/utils/common.js'
 export default {
-  props: ['modelValue'],
-  emits: ['update:modelValue'],
-  components: {
-    TimeSinglePicker
+  props: {
+    userName: {
+      type: String,
+      default: ''
+    }
   },
+
   computed: {
-    visible: {
-      get() {
-        return this.modelValue
-      },
-      set(value) {
-        this.$emit('update:modelValue', value)
+    formDataAfterCal() {
+      return {
+        user: this.userName,
+        region: this.form.region,
+        // 鏄慨鏀圭姸鎬�-->璇ヨ褰曠殑鐗堟湰鍙�  鏄柊澧炵姸鎬�--> 閰嶇疆琛ㄨ〃鏈�澶х殑鐗堟湰鍙�
+        version: this.modify ? this.form.version : this.maxVersion,
+
+        missDataMinutes: this.form.missDataMinutes,
+        dataLow: this.form.dataLow,
+        longTimeNoChange: this.form.longTimeNoChange,
+        mutationNum: this.form.mutationNum,
+        mutationRate: this.form.mutationRate,
+        nearExceedLowValue: this.form.nearExceedLowValue,
+        nearExceedHighValue: this.form.nearExceedHighValue,
+        nearExceedNum: this.form.nearExceedNum,
+        dayExceedBorderlineLowNum: this.form.dayExceedBorderlineLowNum,
+        dayExceedBorderlineHighNum: this.form.dayExceedBorderlineHighNum,
+        changeTrendGroup: this.form.changeTrendGroup,
+        changeTrendInterval: this.form.changeTrendInterval,
+        changeTrendRate: this.form.changeTrendRate,
+        changeTrendTimes: this.form.changeTrendTimes,
+        exceedingStandard: this.form.exceedingStandard
       }
+    }
+  },
+  watch: {
+    formData: {
+      handler() {
+        if (Object.keys(this.formData).length != 0)
+          this.form = JSON.parse(JSON.stringify(this.formData))
+      },
+      deep: true
     }
   },
   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
+      form: {},
+      // 鏈�楂樼殑鐗堟湰鍙�
+      maxVersion: null,
+      loading: false,
+      // 淇敼鐘舵��
+      modify: false
     }
   },
-
-  mounted() {
-    this.operation()
+  setup() {
+    const { findMaxValue } = useCommonFunction()
+    return { findMaxValue }
   },
+  mounted() {
+    this.queryException()
+  },
+
   methods: {
     // 鎻愪氦
-    submit() {
-      this.visible = false
+    async submitForm() {
+      // 鍙戦�佷慨鏀圭殑璇锋眰
+      await exceptionSetting.submitExceptionSetting(this.formDataAfterCal)
+
+      this.$message.success('鎻愪氦鎴愬姛')
+
+      // 鏁版嵁鎻愪氦鍚庡埛鏂拌〃鍗�
+      this.queryException()
     },
-    // 鍙栨秷
-    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)
+
+    /**
+     * 鍥為��鍒伴粯璁ら厤缃�
+     * @param锛�
+     * @returns锛�
+     */
+    async defaultSetting() {
+      if (this.form.version == '1.0') {
+        this.$message.info('褰撳墠宸茬粡鏄粯璁ょ殑鐗堟湰')
+        return
       }
-      this.describe = temp
-      console.log(temp)
+      this.loading = true
+      await exceptionSetting.queryDefaultSetting().then((Response) => {
+        this.form = {}
+        this.form = Response.data.data[0]
+      })
+
+      this.modify = true
+      // 璁剧疆鐗堟湰1.0 鐨勬洿鏂版椂闂�
+      exceptionSetting.alertExceptionSetting(this.formDataAfterCal)
+      this.modify = false
+      this.loading = false
+
+      this.$message.success('鍥為��鎴愬姛')
+    },
+
+    /**
+     * 鏌ヨ璇锋眰璁剧疆鐨勬暟鎹�
+     * @param锛�
+     * @returns锛�
+     */
+    queryException() {
+      this.loading = true
+      exceptionSetting.queryExceptionSetting().then((Response) => {
+        this.loading = false
+        this.form = Response.data.data[0]
+
+        // 鎵惧埌鏈�澶х殑鐗堟湰
+        const versions = Response.data.data.map((item) => item.version)
+        this.maxVersion = this.findMaxValue(versions)
+      })
+    },
+    /**
+     * 鍙栨秷鎸夐挳
+     * @param锛�
+     * @returns锛�
+     */
+    cancelEvent() {
+      this.$message.info('宸插彇娑�')
     }
+
   }
 }
 </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>
+  <div class="my-header">
+    <el-text tag="b"> 姝e湪浣跨敤鐨勭増鏈細{{ form.version }}</el-text>
+  </div>
+  <el-form :model="form" label-width="230px" v-loading="loading">
+    <el-form-item label="鐢ㄦ埛鍚�">
+      <el-input :value="userName" disabled />
+    </el-form-item>
+
+    <el-form-item label="鍖哄幙">
+      <el-input :value="form.region" disabled />
+    </el-form-item>
+
+    <el-form-item label="(鏁版嵁缂哄け)缂哄け鐨勫垎閽熸暟">
+      <el-input v-model.number="form.missDataMinutes">
+        <template #append>鍒嗛挓</template>
+      </el-input>
+    </el-form-item>
+    <el-form-item label="(鏁版嵁瓒呬綆)棰楃矑鐗╂祿搴﹀�煎皬浜嶺">
+      <el-input v-model="form.dataLow">
+        <template #append>mg/m鲁</template>
+      </el-input>
+    </el-form-item>
+    <el-form-item label="(鏁版嵁闀挎椂闂存棤娉㈠姩)杩炵画X涓�肩浉绛�">
+      <el-input v-model.number="form.longTimeNoChange">
+        <template #append>涓�</template>
+      </el-input>
+    </el-form-item>
+    <el-form-item label="(閲忕骇绐佸彉)杩炵画N涓�15鍒嗛挓">
+      <el-input v-model.number="form.mutationNum">
+        <template #append>鍒嗛挓</template>
+      </el-input>
+    </el-form-item>
+    <el-form-item label="(閲忕骇绐佸彉)鍙樺寲鐜囪秴杩嘪">
+      <el-input v-model="form.mutationRate">
+        <template #append>姣旂巼</template>
+      </el-input>
+    </el-form-item>
+    <el-form-item label="(涓磋繎瓒呮爣寮傚父)澶勪簬[a,b]鐨勫乏杈圭晫">
+      <el-input v-model="form.nearExceedLowValue">
+        <template #append>mg/m鲁</template>
+      </el-input>
+    </el-form-item>
+    <el-form-item label="(涓磋繎瓒呮爣)澶勪簬[a,b]鐨勫彸杈圭晫">
+      <el-input v-model="form.nearExceedHighValue">
+        <template #append>mg/m鲁</template>
+      </el-input>
+    </el-form-item>
+    <el-form-item label="(涓磋繎瓒呮爣)娆℃暟瓒呰繃X涓�">
+      <el-input v-model.number="form.nearExceedNum">
+        <template #append>娆�</template>
+      </el-input>
+    </el-form-item>
+    <el-form-item label="(鍗曟棩瓒呮爣娆℃暟涓寸晫)瓒呮爣娆℃暟杈綳娆�">
+      <el-input v-model.number="form.dayExceedBorderlineLowNum">
+        <template #append>娆�</template>
+      </el-input>
+    </el-form-item>
+    <el-form-item label="(鍗曟棩瓒呮爣娆℃暟涓寸晫)浣嗘湭杈惧埌Y娆�">
+      <el-input v-model.number="form.dayExceedBorderlineHighNum">
+        <template #append>娆�</template>
+      </el-input>
+    </el-form-item>
+    <el-form-item label="(鍙樺寲瓒嬪娍寮傚父)N涓竴缁�">
+      <el-input v-model.number="form.changeTrendGroup">
+        <template #append>涓�</template>
+      </el-input>
+    </el-form-item>
+    <el-form-item label="(鍙樺寲瓒嬪娍寮傚父)闂撮殧M">
+      <el-input v-model.number="form.changeTrendInterval">
+        <template #append>涓�</template>
+      </el-input>
+    </el-form-item>
+    <el-form-item label="(鍙樺寲瓒嬪娍寮傚父)骞冲潎鍊肩浉宸甕">
+      <el-input v-model="form.changeTrendRate">
+        <template #append>mg/m鲁</template>
+      </el-input>
+    </el-form-item>
+
+    <el-form-item label="(鍙樺寲瓒嬪娍寮傚父)杩炵画鐨勬鏁�">
+      <el-input v-model.number="form.changeTrendTimes">
+        <template #append>娆�</template>
+      </el-input>
+    </el-form-item>
+
+    <el-form-item label="(瓒呮爣)瓒呰繃鏍囧噯鍊�">
+      <el-input v-model="form.exceedingStandard">
+        <template #append>mg/m鲁</template>
+      </el-input>
+    </el-form-item>
+  </el-form>
+
+  <el-popconfirm
+    confirm-button-text="纭畾"
+    cancel-button-text="鍙栨秷"
+    icon-color="#626AEF"
+    title="纭鍥為��鍚楋紵"
+    @confirm="defaultSetting"
+    @cancel="cancelEvent"
+  >
+    <template #reference>
+      <el-button  :disabled="form.version=='1.0'">鍥為��鍒伴粯璁よ缃�</el-button>
     </template>
-  </el-dialog>
+  </el-popconfirm>
 
-  <!-- <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>
+  <el-popconfirm
+    confirm-button-text="纭畾"
+    cancel-button-text="鍙栨秷"
+    icon-color="#626AEF"
+    title="纭淇敼鍚楋紵"
+    @confirm="submitForm"
+    @cancel="cancelEvent"
+  >
+    <template #reference>
+      <el-button type="primary">淇敼</el-button>
+    </template>
+  </el-popconfirm>
 </template>
 
 <style scoped>
-:deep(.label-text) {
-  font-size: 14px !important;
-  font-weight: bold !important;
-  color: #333333 !important;
+.my-header {
+  margin-bottom: 20px;
 }
-:deep(.content-text) {
-  color: #333333 !important;
+span {
+  font-size: 16px;
+  color: #0a0a0a;
+}
+.version-text {
+  margin-left: 20px;
+}
+.el-input {
+  width: 50%;
 }
 </style>
diff --git a/src/views/data_management/components/CompEditRequest.vue b/src/views/data_management/components/CompEditRequest.vue
index 65edd1b..0daf92d 100644
--- a/src/views/data_management/components/CompEditRequest.vue
+++ b/src/views/data_management/components/CompEditRequest.vue
@@ -1,41 +1,32 @@
 <script>
 import TimeSinglePicker from '@/sfc/TimeSinglePicker.vue'
+import OnlyTimePick from '@/sfc/OnlyTimePick.vue'
 import requestTaskSetting from '@/api/setting/requestTaskSetting.js'
+import { useCommonFunction } from '@/utils/common.js'
 export default {
   components: {
-    TimeSinglePicker
+    TimeSinglePicker,
+    OnlyTimePick
   },
   props: {
-    modelValue: {
-      type: Boolean,
-      default: false
-    },
-    tableData: {
-      type: Object,
-      default: {}
+    userName: {
+      type: String,
+      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,
+        user: this.userName,
         region: this.form.region,
-        version: this.form.version,
+        // 鏄慨鏀圭姸鎬�-->璇ヨ褰曠殑鐗堟湰鍙�  鏄柊澧炵姸鎬�--> 閰嶇疆琛ㄨ〃鏈�澶х殑鐗堟湰鍙�
+        version: this.modify ? this.form.version : this.maxVersion,
+
         requestStartTime: this.form.requestStartTime,
         requestEndTime: this.form.requestEndTime,
 
-        requestIntervalSeconds: this.form.requestIntervalSeconds * 3600,
+        requestIntervalSeconds: this.requestIntervalSeconds,
         requestRangeHour: this.form.requestRangeHour,
         requestRangeIntervalSeconds: this.form.requestRangeIntervalSeconds,
         requestFailWaitSeconds: this.form.requestFailWaitSeconds,
@@ -51,121 +42,131 @@
     }
   },
 
+  watch: {
+    'form.requestIntervalSeconds': function (val, oldVal) {
+      if (this.form.requestIntervalSeconds != '' && this.form.requestIntervalSeconds != null) {
+        this.requestIntervalSeconds = this.form.requestIntervalSeconds / 3600
+      }
+    }
+  },
+  setup() {
+    const { findMaxValue } = useCommonFunction()
+    return { findMaxValue }
+  },
   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' }],
-      }
+      form: {},
+      requestIntervalSeconds: null,
+      maxVersion: null,
+      loading: false,
+      // 淇敼鐘舵��
+      modify: false,
+      // // 琛ㄥ崟鏁版嵁鏄惁琚慨鏀�
+      // isFormModify:false,
     }
   },
 
   mounted() {
-    // const { ...temp } = this.tableData
-    // this.form = temp
+    this.queryRequest()
   },
   methods: {
-    // 鎻愪氦
-    /*   submitForm() {
-      // 鍙戦�佷慨鏀圭殑璇锋眰
-      requestTaskSetting.submitRequestSetting(this.form)
+    /**
+     * 鎻愪氦
+     * @param锛�
+     * @returns锛�
+     */
+    async submitForm() {
+        await requestTaskSetting.submitRequestSetting(this.formDataAfterCal)
 
-      this.$message.success('鎻愪氦鎴愬姛')
-      
-      
-      this.value = false
+        this.$message.success('鎻愪氦鎴愬姛')
 
-      
+        // 鏁版嵁鎻愪氦鍚庡埛鏂拌〃鍗�
+        this.queryRequest()
 
-    }, */
+        // 缃� 琛ㄥ崟淇敼缁撴潫鏍囪
+        this.isFormModify = false
 
-    async submitForm(formEl) {
-      if (!formEl) return
-      await formEl.validate((valid, fields) => {
-        if (valid) {
-          console.log('submit!')
-        } else {
-          console.log('error submit!', fields)
-        }
+    },
+
+    // 鍥為��鍒伴粯璁ら厤缃�
+    async defaultSetting() {
+      if (this.form.version == '1.0') {
+        this.$message.info('褰撳墠宸茬粡鏄粯璁ょ殑鐗堟湰')
+        return
+      }
+      this.loading = true
+      await requestTaskSetting.queryDefaultSetting().then((Response) => {
+        this.form = Response.data.data[0]
+      })
+      this.modify = true
+      // 璁剧疆璇锋眰閰嶇疆琛ㄧ増鏈�1.0 鐨勬洿鏂版椂闂�
+      requestTaskSetting.alertRequestSetting(this.formDataAfterCal)
+      this.modify = false
+      this.loading = false
+
+      this.$message.success('鍥為��鎴愬姛')
+    },
+
+    /**
+     * 鏌ヨ璇锋眰璁剧疆鐨勬暟鎹�
+     * @param锛�
+     * @returns锛�
+     */
+    queryRequest() {
+      this.loading = true
+      requestTaskSetting.queryRequestSetting().then((Response) => {
+        this.loading = false
+        this.form = Response.data.data[0]
+
+        // 鎵惧埌鏈�澶х殑鐗堟湰
+        const versions = Response.data.data.map((item) => item.version)
+        this.maxVersion = this.findMaxValue(versions)
       })
     },
-
-    // 鍙栨秷
-    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)
+    /**
+     * 鍙栨秷鎸夐挳
+     * @param锛�
+     * @returns锛�
+     */
+    cancelEvent() {
+      this.$message.info('宸插彇娑�')
     }
   }
 }
 </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">
+
+    <div class="my-header">
+      <el-text tag="b"> 姝e湪浣跨敤鐨勭増鏈細{{ form.version }}</el-text>
+    </div>
+    <el-form :model="form" label-width="210px" status-icon v-loading="loading" >
       <el-form-item label="鐢ㄦ埛鍚�">
-        <el-input v-model="form.user" disabled />
+        <el-input :value="userName" disabled />
       </el-form-item>
+
+      <el-form-item label="鍖哄幙">
+        <el-input :value="form.region" disabled />
+      </el-form-item>
+
       <el-form-item label="寮�濮嬫椂闂�">
         <TimeSinglePicker
-          :selectedTime="form.requestStartTime"
+          :selected-time="form.requestStartTime"
+          :isUTC="true"
           @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"
+          :isUTC="true"
+          @submit-time="(n) => (form.requestEndTime = n)"
         ></TimeSinglePicker>
       </el-form-item>
 
-      <!-- ---------------------------------------------------------- -->
       <el-form-item label="鑾峰彇棰戠巼" prop="requestIntervalSeconds">
-        <el-input v-model.number="form.requestIntervalSeconds">
+        <el-input v-model.number="requestIntervalSeconds">
           <template #append>灏忔椂/娆�</template>
         </el-input>
       </el-form-item>
@@ -190,15 +191,24 @@
           <template #append>娆℃暟</template>
         </el-input>
       </el-form-item>
+
+      <el-form-item label="cookie鏈夋晥鏃堕暱" prop="requestCookieValidDuration">
+        <el-input v-model.number="form.requestCookieValidDuration" :min="1" :max="10">
+          <template #append>灏忔椂</template>
+        </el-input>
+      </el-form-item>
+
       <el-form-item label="鏃ョ粺璁�">
-        <TimeSinglePicker
+        <OnlyTimePick
           @submit-time="(n) => (form.staticsDailyTime = n)"
+          :isUTC="true"
           :selected-time="form.staticsDailyTime"
         />
       </el-form-item>
       <el-form-item label="鏈堢粺璁�">
-        <TimeSinglePicker
+        <OnlyTimePick
           @submit-time="(n) => (form.staticsMonthlyTime = n)"
+          :isUTC="true"
           :selected-time="form.staticsMonthlyTime"
         />
       </el-form-item>
@@ -224,25 +234,47 @@
       </el-form-item>
     </el-form>
 
-    <template #footer>
-      <el-button @click="cancel_1">鍙栨秷</el-button>
-      <el-button type="primary" @click="submitForm(ruleFormRef)">鎻愪氦</el-button>
+  <el-popconfirm
+    confirm-button-text="纭畾"
+    cancel-button-text="鍙栨秷"
+    icon-color="#626AEF"
+    title="纭鍥為��鍚楋紵"
+    @confirm="defaultSetting"
+    @cancel="cancelEvent"
+  >
+    <template #reference>
+      <el-button  :disabled="form.version=='1.0'">鍥為��鍒伴粯璁よ缃�</el-button>
     </template>
-  </el-dialog>
+  </el-popconfirm>
+
+  <el-popconfirm
+    confirm-button-text="纭畾"
+    cancel-button-text="鍙栨秷"
+    icon-color="#626AEF"
+    title="纭淇敼鍚楋紵"
+    @confirm="submitForm"
+    @cancel="cancelEvent"
+  >
+    <template #reference>
+      <el-button type="primary">淇敼</el-button>
+    </template>
+  </el-popconfirm>
 </template>
 
 <style scoped>
-/* .el-form {
-    display: flex;
-    flex-direction: column;
-  }
-   */
-/* .el-form-item {
-    display: flex;
-    margin-top: 5px;
-  } */
-/* .el-input {
-    width: 700px;
-  }
-   */
+.my-header {
+  margin-bottom: 20px;
+}
+span {
+  font-size: 16px;
+  color: #0a0a0a;
+}
+.version-text {
+  margin-left: 20px;
+}
+.el-input {
+  width: 50%;
+}
 </style>
+
+

--
Gitblit v1.9.3