瀏覽代碼

fix: 修复代码检查报错的地方及部分代码优化

yanglzh 2 年之前
父節點
當前提交
89a05f8914
共有 30 個文件被更改,包括 912 次插入1031 次删除
  1. 626 626
      src/components/vue3cron/vue3cron.vue
  2. 1 1
      src/views/iot/alarm/setting/component/edit.vue
  3. 1 1
      src/views/iot/certificate/component/editParams.vue
  4. 1 1
      src/views/iot/device-tree/tree/index.vue
  5. 2 7
      src/views/iot/device/channel/component/detail.vue
  6. 0 9
      src/views/iot/device/channel/component/edit.vue
  7. 1 8
      src/views/iot/device/channel/component/taskDialog.vue
  8. 1 1
      src/views/iot/device/instance/component/edit.vue
  9. 22 31
      src/views/iot/device/instance/component/subDeviceMutipleBind.vue
  10. 1 1
      src/views/iot/device/product/component/deviceIn.vue
  11. 1 3
      src/views/iot/device/product/component/editAttr.vue
  12. 1 7
      src/views/iot/device/product/component/editOption.vue
  13. 1 2
      src/views/iot/device/product/component/editTab.vue
  14. 1 1
      src/views/iot/device/template/component/dataAreaDialog.vue
  15. 5 28
      src/views/iot/device/template/component/deviceTemplateDialog.vue
  16. 1 7
      src/views/iot/device/template/component/edit.vue
  17. 138 106
      src/views/iot/iotmanager/dashboard.vue
  18. 4 9
      src/views/iot/noticeservices/log/component/detail.vue
  19. 37 20
      src/views/personal/index.vue
  20. 1 7
      src/views/system/assess/component/editAttr.vue
  21. 32 44
      src/views/system/assess/component/editEvent.vue
  22. 1 31
      src/views/system/assess/component/editFun.vue
  23. 1 3
      src/views/system/assess/component/editTab.vue
  24. 1 1
      src/views/system/assess/totalIndex/component/addSign.vue
  25. 0 8
      src/views/system/city/component/edit.vue
  26. 29 55
      src/views/system/datahub/modeling/component/edit.vue
  27. 0 1
      src/views/system/datahub/modeling/component/relation.vue
  28. 1 10
      src/views/system/datahub/source/component/list.vue
  29. 1 1
      src/views/system/datahub/source/detail.vue
  30. 0 1
      src/views/system/manage/blacklist/component/editPro.vue

+ 626 - 626
src/components/vue3cron/vue3cron.vue

@@ -1,661 +1,661 @@
 
 <template>
-    <div class="vue3-cron-div">
-        <!-- <el-button class="language" type="text" @click="state.language = state.language === 'en' ? 'cn' : 'en'">{{
+  <div class="vue3-cron-div">
+    <!-- <el-button class="language" type="text" @click="state.language = state.language === 'en' ? 'cn' : 'en'">{{
             state.language === 'en' ? 'cn' : 'en'
         }}</el-button> -->
-        <el-tabs type="border-card">
-            <el-tab-pane>
-                <template #label>
-                    <span><i class="el-icon-date"></i> {{ state.text.Seconds.name }}</span>
-                </template>
-                <div class="tabBody myScroller" :style="{ 'max-height': maxHeight }">
-                    <el-row>
-                        <el-radio v-model="state.second.cronEvery" label="1">{{ state.text.Seconds.every }}</el-radio>
-                    </el-row>
-                    <el-row>
-                        <el-radio v-model="state.second.cronEvery" label="2">{{ state.text.Seconds.interval[0] }}
-                            <el-input-number size="small" v-model="state.second.incrementIncrement" :min="1" :max="60"></el-input-number>
-                            {{ state.text.Seconds.interval[1] || '' }}
-                            <el-input-number size="small" v-model="state.second.incrementStart" :min="0" :max="59"></el-input-number>
-                            {{ state.text.Seconds.interval[2] || '' }}
-                        </el-radio>
-                    </el-row>
-                    <el-row>
-                        <el-radio class="long" v-model="state.second.cronEvery" label="3">{{ state.text.Seconds.specific }}
-                            <el-select size="small" multiple v-model="state.second.specificSpecific">
-                                <el-option v-for="(val, index) in 60" :key="index" :value="val - 1">{{
-                                    val - 1
-                                }}</el-option>
-                            </el-select>
-                        </el-radio>
-                    </el-row>
-                    <el-row>
-                        <el-radio v-model="state.second.cronEvery" label="4">{{ state.text.Seconds.cycle[0] }}
-                            <el-input-number size="small" v-model="state.second.rangeStart" :min="1" :max="60"></el-input-number>
-                            {{ state.text.Seconds.cycle[1] || '' }}
-                            <el-input-number size="small" v-model="state.second.rangeEnd" :min="0" :max="59"></el-input-number>
-                            {{ state.text.Seconds.cycle[2] || '' }}
-                        </el-radio>
-                    </el-row>
-                </div>
-            </el-tab-pane>
-            <el-tab-pane>
-                <template #label>
-                    <span><i class="el-icon-date"></i> {{ state.text.Minutes.name }}</span>
-                </template>
-                <div class="tabBody myScroller" :style="{ 'max-height': maxHeight }">
-                    <el-row>
-                        <el-radio v-model="state.minute.cronEvery" label="1">{{ state.text.Minutes.every }}</el-radio>
-                    </el-row>
-                    <el-row>
-                        <el-radio v-model="state.minute.cronEvery" label="2">{{ state.text.Minutes.interval[0] }}
-                            <el-input-number size="small" v-model="state.minute.incrementIncrement" :min="1" :max="60"></el-input-number>
-                            {{ state.text.Minutes.interval[1] }}
-                            <el-input-number size="small" v-model="state.minute.incrementStart" :min="0" :max="59"></el-input-number>
-                            {{ state.text.Minutes.interval[2] || '' }}
-                        </el-radio>
-                    </el-row>
-                    <el-row>
-                        <el-radio class="long" v-model="state.minute.cronEvery" label="3">{{ state.text.Minutes.specific }}
-                            <el-select size="small" multiple v-model="state.minute.specificSpecific">
-                                <el-option v-for="(val, index) in 60" :key="index" :value="val - 1">{{
-                                    val - 1
-                                }}</el-option>
-                            </el-select>
-                        </el-radio>
-                    </el-row>
-                    <el-row>
-                        <el-radio v-model="state.minute.cronEvery" label="4">{{ state.text.Minutes.cycle[0] }}
-                            <el-input-number size="small" v-model="state.minute.rangeStart" :min="1" :max="60"></el-input-number>
-                            {{ state.text.Minutes.cycle[1] }}
-                            <el-input-number size="small" v-model="state.minute.rangeEnd" :min="0" :max="59"></el-input-number>
-                            {{ state.text.Minutes.cycle[2] }}
-                        </el-radio>
-                    </el-row>
-                </div>
-            </el-tab-pane>
-            <el-tab-pane>
-                <template #label>
-                    <span><i class="el-icon-date"></i> {{ state.text.Hours.name }}</span>
-                </template>
-                <div class="tabBody myScroller" :style="{ 'max-height': maxHeight }">
-                    <el-row>
-                        <el-radio v-model="state.hour.cronEvery" label="1">{{ state.text.Hours.every }}</el-radio>
-                    </el-row>
-                    <el-row>
-                        <el-radio v-model="state.hour.cronEvery" label="2">{{ state.text.Hours.interval[0] }}
-                            <el-input-number size="small" v-model="state.hour.incrementIncrement" :min="0" :max="23"></el-input-number>
-                            {{ state.text.Hours.interval[1] }}
-                            <el-input-number size="small" v-model="state.hour.incrementStart" :min="0" :max="23"></el-input-number>
-                            {{ state.text.Hours.interval[2] }}
-                        </el-radio>
-                    </el-row>
-                    <el-row>
-                        <el-radio class="long" v-model="state.hour.cronEvery" label="3">{{ state.text.Hours.specific }}
-                            <el-select size="small" multiple v-model="state.hour.specificSpecific">
-                                <el-option v-for="(val, index) in 24" :key="index" :value="val - 1">{{
-                                    val - 1
-                                }}</el-option>
-                            </el-select>
-                        </el-radio>
-                    </el-row>
-                    <el-row>
-                        <el-radio v-model="state.hour.cronEvery" label="4">{{ state.text.Hours.cycle[0] }}
-                            <el-input-number size="small" v-model="state.hour.rangeStart" :min="0" :max="23"></el-input-number>
-                            {{ state.text.Hours.cycle[1] }}
-                            <el-input-number size="small" v-model="state.hour.rangeEnd" :min="0" :max="23"></el-input-number>
-                            {{ state.text.Hours.cycle[2] }}
-                        </el-radio>
-                    </el-row>
-                </div>
-            </el-tab-pane>
-            <el-tab-pane>
-                <template #label>
-                    <span><i class="el-icon-date"></i> {{ state.text.Day.name }}</span>
-                </template>
-                <div class="tabBody myScroller" :style="{ 'max-height': maxHeight }">
-                    <el-row>
-                        <el-radio v-model="state.day.cronEvery" label="1">{{ state.text.Day.every }}</el-radio>
-                    </el-row>
-                    <el-row>
-                        <el-radio v-model="state.day.cronEvery" label="2">{{ state.text.Day.intervalWeek[0] }}
-                            <el-input-number size="small" v-model="state.week.incrementIncrement" :min="1" :max="7"></el-input-number>
-                            {{ state.text.Day.intervalWeek[1] }}
-                            <el-select size="small" v-model="state.week.incrementStart">
-                                <el-option v-for="(val, index) in 7" :key="index" :label="state.text.Week[val - 1]" :value="val"></el-option>
-                            </el-select>
-                            {{ state.text.Day.intervalWeek[2] }}
-                        </el-radio>
-                    </el-row>
-                    <el-row>
-                        <el-radio v-model="state.day.cronEvery" label="3">{{ state.text.Day.intervalDay[0] }}
-                            <el-input-number size="small" v-model="state.day.incrementIncrement" :min="1" :max="31"></el-input-number>
-                            {{ state.text.Day.intervalDay[1] }}
-                            <el-input-number size="small" v-model="state.day.incrementStart" :min="1" :max="31"></el-input-number>
-                            {{ state.text.Day.intervalDay[2] }}
-                        </el-radio>
-                    </el-row>
-                    <el-row>
-                        <el-radio class="long" v-model="state.day.cronEvery" label="4">{{ state.text.Day.specificWeek }}
-                            <el-select size="small" multiple v-model="state.week.specificSpecific">
-                                <el-option v-for="(val, index) in 7" :key="index" :label="state.text.Week[val - 1]" :value="['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT'][val - 1]"></el-option>
-                            </el-select>
-                        </el-radio>
-                    </el-row>
-                    <el-row>
-                        <el-radio class="long" v-model="state.day.cronEvery" label="5">{{ state.text.Day.specificDay }}
-                            <el-select size="small" multiple v-model="state.day.specificSpecific">
-                                <el-option v-for="(val, index) in 31" :key="index" :value="val">{{ val }}</el-option>
-                            </el-select>
-                        </el-radio>
-                    </el-row>
-                    <el-row>
-                        <el-radio v-model="state.day.cronEvery" label="6">{{ state.text.Day.lastDay }}</el-radio>
-                    </el-row>
-                    <el-row>
-                        <el-radio v-model="state.day.cronEvery" label="7">{{ state.text.Day.lastWeekday }}</el-radio>
-                    </el-row>
-                    <el-row>
-                        <el-radio v-model="state.day.cronEvery" label="8">{{ state.text.Day.lastWeek[0] }}
-                            <el-select size="small" v-model="state.day.cronLastSpecificDomDay">
-                                <el-option v-for="(val, index) in 7" :key="index" :label="state.text.Week[val - 1]" :value="val"></el-option>
-                            </el-select>
-                            {{ state.text.Day.lastWeek[1] || '' }}
-                        </el-radio>
-                    </el-row>
-                    <el-row>
-                        <el-radio v-model="state.day.cronEvery" label="9">
-                            <el-input-number size="small" v-model="state.day.cronDaysBeforeEomMinus" :min="1" :max="31"></el-input-number>
-                            {{ state.text.Day.beforeEndMonth[0] }}
-                        </el-radio>
-                    </el-row>
-                    <el-row>
-                        <el-radio v-model="state.day.cronEvery" label="10">{{ state.text.Day.nearestWeekday[0] }}
-                            <el-input-number size="small" v-model="state.day.cronDaysNearestWeekday" :min="1" :max="31"></el-input-number>
-                            {{ state.text.Day.nearestWeekday[1] }}
-                        </el-radio>
-                    </el-row>
-                    <el-row>
-                        <el-radio v-model="state.day.cronEvery" label="11">{{ state.text.Day.someWeekday[0] }}
-                            <el-input-number size="small" v-model="state.week.cronNthDayNth" :min="1" :max="5"></el-input-number>
-                            <el-select size="small" v-model="state.week.cronNthDayDay">
-                                <el-option v-for="(val, index) in 7" :key="index" :label="state.text.Week[val - 1]" :value="val"></el-option>
-                            </el-select>
-                            {{ state.text.Day.someWeekday[1] }}
-                        </el-radio>
-                    </el-row>
-                </div>
-            </el-tab-pane>
-            <el-tab-pane>
-                <template #label>
-                    <span><i class="el-icon-date"></i> {{ state.text.Month.name }}</span>
-                </template>
-                <div class="tabBody myScroller" :style="{ 'max-height': maxHeight }">
-                    <el-row>
-                        <el-radio v-model="state.month.cronEvery" label="1">{{ state.text.Month.every }}</el-radio>
-                    </el-row>
-                    <el-row>
-                        <el-radio v-model="state.month.cronEvery" label="2">{{ state.text.Month.interval[0] }}
-                            <el-input-number size="small" v-model="state.month.incrementIncrement" :min="0" :max="12"></el-input-number>
-                            {{ state.text.Month.interval[1] }}
-                            <el-input-number size="small" v-model="state.month.incrementStart" :min="0" :max="12"></el-input-number>
-                        </el-radio>
-                    </el-row>
-                    <el-row>
-                        <el-radio class="long" v-model="state.month.cronEvery" label="3">{{ state.text.Month.specific }}
-                            <el-select size="small" multiple v-model="state.month.specificSpecific">
-                                <el-option v-for="(val, index) in 12" :key="index" :label="val" :value="val"></el-option>
-                            </el-select>
-                        </el-radio>
-                    </el-row>
-                    <el-row>
-                        <el-radio v-model="state.month.cronEvery" label="4">{{ state.text.Month.cycle[0] }}
-                            <el-input-number size="small" v-model="state.month.rangeStart" :min="1" :max="12"></el-input-number>
-                            {{ state.text.Month.cycle[1] }}
-                            <el-input-number size="small" v-model="state.month.rangeEnd" :min="1" :max="12"></el-input-number>
-                        </el-radio>
-                    </el-row>
-                </div>
-            </el-tab-pane>
-            <el-tab-pane>
-                <template #label>
-                    <span><i class="el-icon-date"></i> {{ state.text.Year.name }}</span>
-                </template>
-                <div class="tabBody myScroller" :style="{ 'max-height': maxHeight }">
-                    <el-row>
-                        <el-radio v-model="state.year.cronEvery" label="1">{{ state.text.Year.every }}</el-radio>
-                    </el-row>
-                    <el-row>
-                        <el-radio v-model="state.year.cronEvery" label="2">{{ state.text.Year.interval[0] }}
-                            <el-input-number size="small" v-model="state.year.incrementIncrement" :min="1" :max="99"></el-input-number>
-                            {{ state.text.Year.interval[1] }}
-                            <el-input-number size="small" v-model="state.year.incrementStart" :min="2018" :max="2118"></el-input-number>
-                        </el-radio>
-                    </el-row>
-                    <el-row>
-                        <el-radio class="long" v-model="state.year.cronEvery" label="3">{{ state.text.Year.specific }}
-                            <el-select size="small" filterable multiple v-model="state.year.specificSpecific">
-                                <el-option v-for="(val, index) in 100" :key="index" :label="2017 + val" :value="2017 + val"></el-option>
-                            </el-select>
-                        </el-radio>
-                    </el-row>
-                    <el-row>
-                        <el-radio v-model="state.year.cronEvery" label="4">{{ state.text.Year.cycle[0] }}
-                            <el-input-number size="small" v-model="state.year.rangeStart" :min="2018" :max="2118"></el-input-number>
-                            {{ state.text.Year.cycle[1] }}
-                            <el-input-number size="small" v-model="state.year.rangeEnd" :min="2018" :max="2118"></el-input-number>
-                        </el-radio>
-                    </el-row>
-                </div>
-            </el-tab-pane>
-        </el-tabs>
-        <div class="bottom">
-            <div class="value" style="margin: 10px;">
-                <span> cron预览: </span>
-                <el-tag type="primary">
-                    {{ state.cron }}
-                </el-tag>
-            </div>
-            <div class="buttonDiv" style="text-align: right;">
-                <el-button type="primary" size="mini" @click.stop="handleChange">{{ state.text.Save }}</el-button>
-                <el-button type="primary" size="mini" @click="close">{{ state.text.Close }}</el-button>
-            </div>
+    <el-tabs type="border-card">
+      <el-tab-pane>
+        <template #label>
+          <span><i class="el-icon-date"></i> {{ state.text.Seconds.name }}</span>
+        </template>
+        <div class="tabBody myScroller" :style="{ 'max-height': maxHeight }">
+          <el-row>
+            <el-radio v-model="state.second.cronEvery" label="1">{{ state.text.Seconds.every }}</el-radio>
+          </el-row>
+          <el-row>
+            <el-radio v-model="state.second.cronEvery" label="2">{{ state.text.Seconds.interval[0] }}
+              <el-input-number size="small" v-model="state.second.incrementIncrement" :min="1" :max="60"></el-input-number>
+              {{ state.text.Seconds.interval[1] || '' }}
+              <el-input-number size="small" v-model="state.second.incrementStart" :min="0" :max="59"></el-input-number>
+              {{ state.text.Seconds.interval[2] || '' }}
+            </el-radio>
+          </el-row>
+          <el-row>
+            <el-radio class="long" v-model="state.second.cronEvery" label="3">{{ state.text.Seconds.specific }}
+              <el-select size="small" multiple v-model="state.second.specificSpecific">
+                <el-option v-for="(val, index) in 60" :key="index" :value="val - 1">{{
+                  val - 1
+                }}</el-option>
+              </el-select>
+            </el-radio>
+          </el-row>
+          <el-row>
+            <el-radio v-model="state.second.cronEvery" label="4">{{ state.text.Seconds.cycle[0] }}
+              <el-input-number size="small" v-model="state.second.rangeStart" :min="1" :max="60"></el-input-number>
+              {{ state.text.Seconds.cycle[1] || '' }}
+              <el-input-number size="small" v-model="state.second.rangeEnd" :min="0" :max="59"></el-input-number>
+              {{ state.text.Seconds.cycle[2] || '' }}
+            </el-radio>
+          </el-row>
         </div>
+      </el-tab-pane>
+      <el-tab-pane>
+        <template #label>
+          <span><i class="el-icon-date"></i> {{ state.text.Minutes.name }}</span>
+        </template>
+        <div class="tabBody myScroller" :style="{ 'max-height': maxHeight }">
+          <el-row>
+            <el-radio v-model="state.minute.cronEvery" label="1">{{ state.text.Minutes.every }}</el-radio>
+          </el-row>
+          <el-row>
+            <el-radio v-model="state.minute.cronEvery" label="2">{{ state.text.Minutes.interval[0] }}
+              <el-input-number size="small" v-model="state.minute.incrementIncrement" :min="1" :max="60"></el-input-number>
+              {{ state.text.Minutes.interval[1] }}
+              <el-input-number size="small" v-model="state.minute.incrementStart" :min="0" :max="59"></el-input-number>
+              {{ state.text.Minutes.interval[2] || '' }}
+            </el-radio>
+          </el-row>
+          <el-row>
+            <el-radio class="long" v-model="state.minute.cronEvery" label="3">{{ state.text.Minutes.specific }}
+              <el-select size="small" multiple v-model="state.minute.specificSpecific">
+                <el-option v-for="(val, index) in 60" :key="index" :value="val - 1">{{
+                  val - 1
+                }}</el-option>
+              </el-select>
+            </el-radio>
+          </el-row>
+          <el-row>
+            <el-radio v-model="state.minute.cronEvery" label="4">{{ state.text.Minutes.cycle[0] }}
+              <el-input-number size="small" v-model="state.minute.rangeStart" :min="1" :max="60"></el-input-number>
+              {{ state.text.Minutes.cycle[1] }}
+              <el-input-number size="small" v-model="state.minute.rangeEnd" :min="0" :max="59"></el-input-number>
+              {{ state.text.Minutes.cycle[2] }}
+            </el-radio>
+          </el-row>
+        </div>
+      </el-tab-pane>
+      <el-tab-pane>
+        <template #label>
+          <span><i class="el-icon-date"></i> {{ state.text.Hours.name }}</span>
+        </template>
+        <div class="tabBody myScroller" :style="{ 'max-height': maxHeight }">
+          <el-row>
+            <el-radio v-model="state.hour.cronEvery" label="1">{{ state.text.Hours.every }}</el-radio>
+          </el-row>
+          <el-row>
+            <el-radio v-model="state.hour.cronEvery" label="2">{{ state.text.Hours.interval[0] }}
+              <el-input-number size="small" v-model="state.hour.incrementIncrement" :min="0" :max="23"></el-input-number>
+              {{ state.text.Hours.interval[1] }}
+              <el-input-number size="small" v-model="state.hour.incrementStart" :min="0" :max="23"></el-input-number>
+              {{ state.text.Hours.interval[2] }}
+            </el-radio>
+          </el-row>
+          <el-row>
+            <el-radio class="long" v-model="state.hour.cronEvery" label="3">{{ state.text.Hours.specific }}
+              <el-select size="small" multiple v-model="state.hour.specificSpecific">
+                <el-option v-for="(val, index) in 24" :key="index" :value="val - 1">{{
+                  val - 1
+                }}</el-option>
+              </el-select>
+            </el-radio>
+          </el-row>
+          <el-row>
+            <el-radio v-model="state.hour.cronEvery" label="4">{{ state.text.Hours.cycle[0] }}
+              <el-input-number size="small" v-model="state.hour.rangeStart" :min="0" :max="23"></el-input-number>
+              {{ state.text.Hours.cycle[1] }}
+              <el-input-number size="small" v-model="state.hour.rangeEnd" :min="0" :max="23"></el-input-number>
+              {{ state.text.Hours.cycle[2] }}
+            </el-radio>
+          </el-row>
+        </div>
+      </el-tab-pane>
+      <el-tab-pane>
+        <template #label>
+          <span><i class="el-icon-date"></i> {{ state.text.Day.name }}</span>
+        </template>
+        <div class="tabBody myScroller" :style="{ 'max-height': maxHeight }">
+          <el-row>
+            <el-radio v-model="state.day.cronEvery" label="1">{{ state.text.Day.every }}</el-radio>
+          </el-row>
+          <el-row>
+            <el-radio v-model="state.day.cronEvery" label="2">{{ state.text.Day.intervalWeek[0] }}
+              <el-input-number size="small" v-model="state.week.incrementIncrement" :min="1" :max="7"></el-input-number>
+              {{ state.text.Day.intervalWeek[1] }}
+              <el-select size="small" v-model="state.week.incrementStart">
+                <el-option v-for="(val, index) in 7" :key="index" :label="state.text.Week[val - 1]" :value="val"></el-option>
+              </el-select>
+              {{ state.text.Day.intervalWeek[2] }}
+            </el-radio>
+          </el-row>
+          <el-row>
+            <el-radio v-model="state.day.cronEvery" label="3">{{ state.text.Day.intervalDay[0] }}
+              <el-input-number size="small" v-model="state.day.incrementIncrement" :min="1" :max="31"></el-input-number>
+              {{ state.text.Day.intervalDay[1] }}
+              <el-input-number size="small" v-model="state.day.incrementStart" :min="1" :max="31"></el-input-number>
+              {{ state.text.Day.intervalDay[2] }}
+            </el-radio>
+          </el-row>
+          <el-row>
+            <el-radio class="long" v-model="state.day.cronEvery" label="4">{{ state.text.Day.specificWeek }}
+              <el-select size="small" multiple v-model="state.week.specificSpecific">
+                <el-option v-for="(val, index) in 7" :key="index" :label="state.text.Week[val - 1]" :value="['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT'][val - 1]"></el-option>
+              </el-select>
+            </el-radio>
+          </el-row>
+          <el-row>
+            <el-radio class="long" v-model="state.day.cronEvery" label="5">{{ state.text.Day.specificDay }}
+              <el-select size="small" multiple v-model="state.day.specificSpecific">
+                <el-option v-for="(val, index) in 31" :key="index" :value="val">{{ val }}</el-option>
+              </el-select>
+            </el-radio>
+          </el-row>
+          <el-row>
+            <el-radio v-model="state.day.cronEvery" label="6">{{ state.text.Day.lastDay }}</el-radio>
+          </el-row>
+          <el-row>
+            <el-radio v-model="state.day.cronEvery" label="7">{{ state.text.Day.lastWeekday }}</el-radio>
+          </el-row>
+          <el-row>
+            <el-radio v-model="state.day.cronEvery" label="8">{{ state.text.Day.lastWeek[0] }}
+              <el-select size="small" v-model="state.day.cronLastSpecificDomDay">
+                <el-option v-for="(val, index) in 7" :key="index" :label="state.text.Week[val - 1]" :value="val"></el-option>
+              </el-select>
+              {{ state.text.Day.lastWeek[1] || '' }}
+            </el-radio>
+          </el-row>
+          <el-row>
+            <el-radio v-model="state.day.cronEvery" label="9">
+              <el-input-number size="small" v-model="state.day.cronDaysBeforeEomMinus" :min="1" :max="31"></el-input-number>
+              {{ state.text.Day.beforeEndMonth[0] }}
+            </el-radio>
+          </el-row>
+          <el-row>
+            <el-radio v-model="state.day.cronEvery" label="10">{{ state.text.Day.nearestWeekday[0] }}
+              <el-input-number size="small" v-model="state.day.cronDaysNearestWeekday" :min="1" :max="31"></el-input-number>
+              {{ state.text.Day.nearestWeekday[1] }}
+            </el-radio>
+          </el-row>
+          <el-row>
+            <el-radio v-model="state.day.cronEvery" label="11">{{ state.text.Day.someWeekday[0] }}
+              <el-input-number size="small" v-model="state.week.cronNthDayNth" :min="1" :max="5"></el-input-number>
+              <el-select size="small" v-model="state.week.cronNthDayDay">
+                <el-option v-for="(val, index) in 7" :key="index" :label="state.text.Week[val - 1]" :value="val"></el-option>
+              </el-select>
+              {{ state.text.Day.someWeekday[1] }}
+            </el-radio>
+          </el-row>
+        </div>
+      </el-tab-pane>
+      <el-tab-pane>
+        <template #label>
+          <span><i class="el-icon-date"></i> {{ state.text.Month.name }}</span>
+        </template>
+        <div class="tabBody myScroller" :style="{ 'max-height': maxHeight }">
+          <el-row>
+            <el-radio v-model="state.month.cronEvery" label="1">{{ state.text.Month.every }}</el-radio>
+          </el-row>
+          <el-row>
+            <el-radio v-model="state.month.cronEvery" label="2">{{ state.text.Month.interval[0] }}
+              <el-input-number size="small" v-model="state.month.incrementIncrement" :min="0" :max="12"></el-input-number>
+              {{ state.text.Month.interval[1] }}
+              <el-input-number size="small" v-model="state.month.incrementStart" :min="0" :max="12"></el-input-number>
+            </el-radio>
+          </el-row>
+          <el-row>
+            <el-radio class="long" v-model="state.month.cronEvery" label="3">{{ state.text.Month.specific }}
+              <el-select size="small" multiple v-model="state.month.specificSpecific">
+                <el-option v-for="(val, index) in 12" :key="index" :label="val" :value="val"></el-option>
+              </el-select>
+            </el-radio>
+          </el-row>
+          <el-row>
+            <el-radio v-model="state.month.cronEvery" label="4">{{ state.text.Month.cycle[0] }}
+              <el-input-number size="small" v-model="state.month.rangeStart" :min="1" :max="12"></el-input-number>
+              {{ state.text.Month.cycle[1] }}
+              <el-input-number size="small" v-model="state.month.rangeEnd" :min="1" :max="12"></el-input-number>
+            </el-radio>
+          </el-row>
+        </div>
+      </el-tab-pane>
+      <el-tab-pane>
+        <template #label>
+          <span><i class="el-icon-date"></i> {{ state.text.Year.name }}</span>
+        </template>
+        <div class="tabBody myScroller" :style="{ 'max-height': maxHeight }">
+          <el-row>
+            <el-radio v-model="state.year.cronEvery" label="1">{{ state.text.Year.every }}</el-radio>
+          </el-row>
+          <el-row>
+            <el-radio v-model="state.year.cronEvery" label="2">{{ state.text.Year.interval[0] }}
+              <el-input-number size="small" v-model="state.year.incrementIncrement" :min="1" :max="99"></el-input-number>
+              {{ state.text.Year.interval[1] }}
+              <el-input-number size="small" v-model="state.year.incrementStart" :min="2018" :max="2118"></el-input-number>
+            </el-radio>
+          </el-row>
+          <el-row>
+            <el-radio class="long" v-model="state.year.cronEvery" label="3">{{ state.text.Year.specific }}
+              <el-select size="small" filterable multiple v-model="state.year.specificSpecific">
+                <el-option v-for="(val, index) in 100" :key="index" :label="2017 + val" :value="2017 + val"></el-option>
+              </el-select>
+            </el-radio>
+          </el-row>
+          <el-row>
+            <el-radio v-model="state.year.cronEvery" label="4">{{ state.text.Year.cycle[0] }}
+              <el-input-number size="small" v-model="state.year.rangeStart" :min="2018" :max="2118"></el-input-number>
+              {{ state.text.Year.cycle[1] }}
+              <el-input-number size="small" v-model="state.year.rangeEnd" :min="2018" :max="2118"></el-input-number>
+            </el-radio>
+          </el-row>
+        </div>
+      </el-tab-pane>
+    </el-tabs>
+    <div class="bottom">
+      <div class="value" style="margin: 10px;">
+        <span> cron预览: </span>
+        <el-tag type="primary">
+          {{ state.cron }}
+        </el-tag>
+      </div>
+      <div class="buttonDiv" style="text-align: right;">
+        <el-button type="primary" size="mini" @click.stop="handleChange">{{ state.text.Save }}</el-button>
+        <el-button type="primary" size="mini" @click="close">{{ state.text.Close }}</el-button>
+      </div>
     </div>
+  </div>
 </template>
 <script>
 import Language from './language';
 import { reactive, computed, toRefs, defineComponent } from 'vue';
 export default defineComponent({
-    name: 'vue3Cron',
-    props: {
-        cronValue: {},
-        type: '',
-        i18n: {},
-        maxHeight: {}
-    },
-    setup(props, { emit }) {
-        const { i18n } = toRefs(props);
-        const state = reactive({
-            language: i18n.value,
-            second: {
-                cronEvery: '1',
-                incrementStart: 3,
-                incrementIncrement: 5,
-                rangeStart: 0,
-                rangeEnd: 0,
-                specificSpecific: []
-            },
-            minute: {
-                cronEvery: '1',
-                incrementStart: 3,
-                incrementIncrement: 5,
-                rangeStart: 0,
-                rangeEnd: 0,
-                specificSpecific: []
-            },
-            hour: {
-                cronEvery: '1',
-                incrementStart: 3,
-                incrementIncrement: 5,
-                rangeStart: 0,
-                rangeEnd: 0,
-                specificSpecific: []
-            },
-            day: {
-                cronEvery: '1',
-                incrementStart: 1,
-                incrementIncrement: 1,
-                rangeStart: 0,
-                rangeEnd: 0,
-                specificSpecific: [],
-                cronLastSpecificDomDay: 1,
-                cronDaysBeforeEomMinus: 0,
-                cronDaysNearestWeekday: 0
-            },
-            week: {
-                cronEvery: '1',
-                incrementStart: 1,
-                incrementIncrement: 1,
-                specificSpecific: [],
-                cronNthDayDay: 1,
-                cronNthDayNth: 1
-            },
-            month: {
-                cronEvery: '1',
-                incrementStart: 3,
-                incrementIncrement: 5,
-                rangeStart: 0,
-                rangeEnd: 0,
-                specificSpecific: []
-            },
-            year: {
-                cronEvery: '1',
-                incrementStart: 2017,
-                incrementIncrement: 1,
-                rangeStart: 0,
-                rangeEnd: 0,
-                specificSpecific: []
-            },
-            output: {
-                second: '',
-                minute: '',
-                hour: '',
-                day: '',
-                month: '',
-                Week: '',
-                year: ''
-            },
-            text: computed(() => Language[state.language || 'cn']),
-            secondsText: computed(() => {
-                let seconds = '';
-                let cronEvery = state.second.cronEvery;
-                switch (cronEvery.toString()) {
-                    case '1':
-                        seconds = '*';
-                        break;
-                    case '2':
-                        seconds = state.second.incrementStart + '/' + state.second.incrementIncrement;
-                        break;
-                    case '3':
-                        state.second.specificSpecific.map(val => {
-                            seconds += val + ',';
-                        });
-                        seconds = seconds.slice(0, -1);
-                        break;
-                    case '4':
-                        seconds = state.second.rangeStart + '-' + state.second.rangeEnd;
-                        break;
-                }
-                return seconds;
-            }),
-            minutesText: computed(() => {
-                let minutes = '';
-                let cronEvery = state.minute.cronEvery;
-                switch (cronEvery.toString()) {
-                    case '1':
-                        minutes = '*';
-                        break;
-                    case '2':
-                        minutes = state.minute.incrementStart + '/' + state.minute.incrementIncrement;
-                        break;
-                    case '3':
-                        state.minute.specificSpecific.map(val => {
-                            minutes += val + ',';
-                        });
-                        minutes = minutes.slice(0, -1);
-                        break;
-                    case '4':
-                        minutes = state.minute.rangeStart + '-' + state.minute.rangeEnd;
-                        break;
-                }
-                return minutes;
-            }),
-            hoursText: computed(() => {
-                let hours = '';
-                let cronEvery = state.hour.cronEvery;
-                switch (cronEvery.toString()) {
-                    case '1':
-                        hours = '*';
-                        break;
-                    case '2':
-                        hours = state.hour.incrementStart + '/' + state.hour.incrementIncrement;
-                        break;
-                    case '3':
-                        state.hour.specificSpecific.map(val => {
-                            hours += val + ',';
-                        });
-                        hours = hours.slice(0, -1);
-                        break;
-                    case '4':
-                        hours = state.hour.rangeStart + '-' + state.hour.rangeEnd;
-                        break;
-                }
-                return hours;
-            }),
-            daysText: computed(() => {
-                let days = '';
-                let cronEvery = state.day.cronEvery;
-                switch (cronEvery.toString()) {
-                    case '1':
-                        break;
-                    case '2':
-                    case '4':
-                    case '11':
-                        days = '?';
-                        break;
-                    case '3':
-                        days = state.day.incrementStart + '/' + state.day.incrementIncrement;
-                        break;
-                    case '5':
-                        state.day.specificSpecific.map(val => {
-                            days += val + ',';
-                        });
-                        days = days.slice(0, -1);
-                        break;
-                    case '6':
-                        days = 'L';
-                        break;
-                    case '7':
-                        days = 'LW';
-                        break;
-                    case '8':
-                        days = state.day.cronLastSpecificDomDay + 'L';
-                        break;
-                    case '9':
-                        days = 'L-' + state.day.cronDaysBeforeEomMinus;
-                        break;
-                    case '10':
-                        days = state.day.cronDaysNearestWeekday + 'W';
-                        break;
-                }
-                return days;
-            }),
-            weeksText: computed(() => {
-                let weeks = '';
-                let cronEvery = state.day.cronEvery;
-                switch (cronEvery.toString()) {
-                    case '1':
-                    case '3':
-                    case '5':
-                        weeks = '?';
-                        break;
-                    case '2':
-                        weeks = state.week.incrementStart + '/' + state.week.incrementIncrement;
-                        break;
-                    case '4':
-                        state.week.specificSpecific.map(val => {
-                            weeks += val + ',';
-                        });
-                        weeks = weeks.slice(0, -1);
-                        break;
-                    case '6':
-                    case '7':
-                    case '8':
-                    case '9':
-                    case '10':
-                        weeks = '?';
-                        break;
-                    case '11':
-                        weeks = state.week.cronNthDayDay + '#' + state.week.cronNthDayNth;
-                        break;
-                }
-                return weeks;
-            }),
-            monthsText: computed(() => {
-                let months = '';
-                let cronEvery = state.month.cronEvery;
-                switch (cronEvery.toString()) {
-                    case '1':
-                        months = '*';
-                        break;
-                    case '2':
-                        months = state.month.incrementStart + '/' + state.month.incrementIncrement;
-                        break;
-                    case '3':
-                        state.month.specificSpecific.map(val => {
-                            months += val + ',';
-                        });
-                        months = months.slice(0, -1);
-                        break;
-                    case '4':
-                        months = state.month.rangeStart + '-' + state.month.rangeEnd;
-                        break;
-                }
-                return months;
-            }),
-            yearsText: computed(() => {
-                let years = '';
-                let cronEvery = state.year.cronEvery;
-                switch (cronEvery.toString()) {
-                    case '1':
-                        years = '*';
-                        break;
-                    case '2':
-                        years = state.year.incrementStart + '/' + state.year.incrementIncrement;
-                        break;
-                    case '3':
-                        state.year.specificSpecific.map(val => {
-                            years += val + ',';
-                        });
-                        years = years.slice(0, -1);
-                        break;
-                    case '4':
-                        years = state.year.rangeStart + '-' + state.year.rangeEnd;
-                        break;
-                }
-                return years;
-            }),
-            cron: computed(() => {
+  name: 'vue3Cron',
+  props: {
+    cronValue: {},
+    type: '',
+    i18n: {},
+    maxHeight: {}
+  },
+  setup(props, { emit }) {
+    const { i18n } = toRefs(props);
+    const state = reactive({
+      language: i18n.value,
+      second: {
+        cronEvery: '1',
+        incrementStart: 3,
+        incrementIncrement: 5,
+        rangeStart: 0,
+        rangeEnd: 0,
+        specificSpecific: []
+      },
+      minute: {
+        cronEvery: '1',
+        incrementStart: 3,
+        incrementIncrement: 5,
+        rangeStart: 0,
+        rangeEnd: 0,
+        specificSpecific: []
+      },
+      hour: {
+        cronEvery: '1',
+        incrementStart: 3,
+        incrementIncrement: 5,
+        rangeStart: 0,
+        rangeEnd: 0,
+        specificSpecific: []
+      },
+      day: {
+        cronEvery: '1',
+        incrementStart: 1,
+        incrementIncrement: 1,
+        rangeStart: 0,
+        rangeEnd: 0,
+        specificSpecific: [],
+        cronLastSpecificDomDay: 1,
+        cronDaysBeforeEomMinus: 0,
+        cronDaysNearestWeekday: 0
+      },
+      week: {
+        cronEvery: '1',
+        incrementStart: 1,
+        incrementIncrement: 1,
+        specificSpecific: [],
+        cronNthDayDay: 1,
+        cronNthDayNth: 1
+      },
+      month: {
+        cronEvery: '1',
+        incrementStart: 3,
+        incrementIncrement: 5,
+        rangeStart: 0,
+        rangeEnd: 0,
+        specificSpecific: []
+      },
+      year: {
+        cronEvery: '1',
+        incrementStart: 2017,
+        incrementIncrement: 1,
+        rangeStart: 0,
+        rangeEnd: 0,
+        specificSpecific: []
+      },
+      output: {
+        second: '',
+        minute: '',
+        hour: '',
+        day: '',
+        month: '',
+        Week: '',
+        year: ''
+      },
+      text: computed(() => Language[state.language || 'cn']),
+      secondsText: computed(() => {
+        let seconds = '';
+        let cronEvery = state.second.cronEvery;
+        switch (cronEvery.toString()) {
+          case '1':
+            seconds = '*';
+            break;
+          case '2':
+            seconds = state.second.incrementStart + '/' + state.second.incrementIncrement;
+            break;
+          case '3':
+            state.second.specificSpecific.map(val => {
+              seconds += val + ',';
+            });
+            seconds = seconds.slice(0, -1);
+            break;
+          case '4':
+            seconds = state.second.rangeStart + '-' + state.second.rangeEnd;
+            break;
+        }
+        return seconds;
+      }),
+      minutesText: computed(() => {
+        let minutes = '';
+        let cronEvery = state.minute.cronEvery;
+        switch (cronEvery.toString()) {
+          case '1':
+            minutes = '*';
+            break;
+          case '2':
+            minutes = state.minute.incrementStart + '/' + state.minute.incrementIncrement;
+            break;
+          case '3':
+            state.minute.specificSpecific.map(val => {
+              minutes += val + ',';
+            });
+            minutes = minutes.slice(0, -1);
+            break;
+          case '4':
+            minutes = state.minute.rangeStart + '-' + state.minute.rangeEnd;
+            break;
+        }
+        return minutes;
+      }),
+      hoursText: computed(() => {
+        let hours = '';
+        let cronEvery = state.hour.cronEvery;
+        switch (cronEvery.toString()) {
+          case '1':
+            hours = '*';
+            break;
+          case '2':
+            hours = state.hour.incrementStart + '/' + state.hour.incrementIncrement;
+            break;
+          case '3':
+            state.hour.specificSpecific.map(val => {
+              hours += val + ',';
+            });
+            hours = hours.slice(0, -1);
+            break;
+          case '4':
+            hours = state.hour.rangeStart + '-' + state.hour.rangeEnd;
+            break;
+        }
+        return hours;
+      }),
+      daysText: computed(() => {
+        let days = '';
+        let cronEvery = state.day.cronEvery;
+        switch (cronEvery.toString()) {
+          case '1':
+            break;
+          case '2':
+          case '4':
+          case '11':
+            days = '?';
+            break;
+          case '3':
+            days = state.day.incrementStart + '/' + state.day.incrementIncrement;
+            break;
+          case '5':
+            state.day.specificSpecific.map(val => {
+              days += val + ',';
+            });
+            days = days.slice(0, -1);
+            break;
+          case '6':
+            days = 'L';
+            break;
+          case '7':
+            days = 'LW';
+            break;
+          case '8':
+            days = state.day.cronLastSpecificDomDay + 'L';
+            break;
+          case '9':
+            days = 'L-' + state.day.cronDaysBeforeEomMinus;
+            break;
+          case '10':
+            days = state.day.cronDaysNearestWeekday + 'W';
+            break;
+        }
+        return days;
+      }),
+      weeksText: computed(() => {
+        let weeks = '';
+        let cronEvery = state.day.cronEvery;
+        switch (cronEvery.toString()) {
+          case '1':
+          case '3':
+          case '5':
+            weeks = '?';
+            break;
+          case '2':
+            weeks = state.week.incrementStart + '/' + state.week.incrementIncrement;
+            break;
+          case '4':
+            state.week.specificSpecific.map(val => {
+              weeks += val + ',';
+            });
+            weeks = weeks.slice(0, -1);
+            break;
+          case '6':
+          case '7':
+          case '8':
+          case '9':
+          case '10':
+            weeks = '?';
+            break;
+          case '11':
+            weeks = state.week.cronNthDayDay + '#' + state.week.cronNthDayNth;
+            break;
+        }
+        return weeks;
+      }),
+      monthsText: computed(() => {
+        let months = '';
+        let cronEvery = state.month.cronEvery;
+        switch (cronEvery.toString()) {
+          case '1':
+            months = '*';
+            break;
+          case '2':
+            months = state.month.incrementStart + '/' + state.month.incrementIncrement;
+            break;
+          case '3':
+            state.month.specificSpecific.map(val => {
+              months += val + ',';
+            });
+            months = months.slice(0, -1);
+            break;
+          case '4':
+            months = state.month.rangeStart + '-' + state.month.rangeEnd;
+            break;
+        }
+        return months;
+      }),
+      yearsText: computed(() => {
+        let years = '';
+        let cronEvery = state.year.cronEvery;
+        switch (cronEvery.toString()) {
+          case '1':
+            years = '*';
+            break;
+          case '2':
+            years = state.year.incrementStart + '/' + state.year.incrementIncrement;
+            break;
+          case '3':
+            state.year.specificSpecific.map(val => {
+              years += val + ',';
+            });
+            years = years.slice(0, -1);
+            break;
+          case '4':
+            years = state.year.rangeStart + '-' + state.year.rangeEnd;
+            break;
+        }
+        return years;
+      }),
+      cron: computed(() => {
 
-                let cron = `${state.secondsText || '*'} ${state.minutesText || '*'} ${state.hoursText || '*'} ${state.daysText || '*'
-                    } ${state.monthsText || '*'} ${state.weeksText || '?'} ${state.yearsText || '*'}`;
+        let cron = `${state.secondsText || '*'} ${state.minutesText || '*'} ${state.hoursText || '*'} ${state.daysText || '*'
+          } ${state.monthsText || '*'} ${state.weeksText || '?'} ${state.yearsText || '*'}`;
 
-                return cron
-            })
-        });
-        const getValue = () => {
-            return state.cron;
-        };
-        const close = () => {
-            emit('close');
-        };
-        const handleChange = () => {
-            emit('handlelisten', {
-                cron: state.cron,
-                type: props.type
-            });
-            close();
-        };
-        const rest = data => {
-            for (let i in data) {
-                if (data[i] instanceof Object) {
-                    this.rest(data[i]);
-                } else {
-                    switch (typeof data[i]) {
-                        case 'object':
-                            data[i] = [];
-                            break;
-                        case 'string':
-                            data[i] = '';
-                            break;
-                    }
-                }
-            }
-        };
-        return {
-            state,
-            getValue,
-            close,
-            handleChange,
-            rest
-        };
-    }
+        return cron
+      })
+    });
+    const getValue = () => {
+      return state.cron;
+    };
+    const close = () => {
+      emit('close');
+    };
+    const handleChange = () => {
+      emit('handlelisten', {
+        cron: state.cron,
+        type: props.type
+      });
+      close();
+    };
+    const rest = data => {
+      for (let i in data) {
+        if (data[i] instanceof Object) {
+          this.rest(data[i]);
+        } else {
+          switch (typeof data[i]) {
+            case 'object':
+              data[i] = [];
+              break;
+            case 'string':
+              data[i] = '';
+              break;
+          }
+        }
+      }
+    };
+    return {
+      state,
+      getValue,
+      close,
+      handleChange,
+      rest
+    };
+  }
 });
 </script>
 <style >
 .vue3-cron-div {
 
-    .el-input-number__decrease,
-    .el-input-number__increase {
-        top: 2px !important;
-    }
-
-    .language {
-        position: absolute;
-        right: 25px;
-        z-index: 1;
-    }
+  .el-input-number__decrease,
+  .el-input-number__increase {
+    top: 2px !important;
+  }
 
-    .el-tabs {
-        box-shadow: none;
-    }
+  .language {
+    position: absolute;
+    right: 25px;
+    z-index: 1;
+  }
 
-    .tabBody {
-        overflow: auto;
+  .el-tabs {
+    box-shadow: none;
+  }
 
-        .el-row {
-            margin: 20px 0;
+  .tabBody {
+    overflow: auto;
 
-            .long {
-                .el-select {
-                    width: 350px;
-                }
-            }
+    .el-row {
+      margin: 20px 0;
 
-            .el-input-number {
-                width: 110px;
-            }
+      .long {
+        .el-select {
+          width: 350px;
         }
+      }
+
+      .el-input-number {
+        width: 110px;
+      }
     }
+  }
 
-    .myScroller {
-        &::-webkit-scrollbar {
-            /*滚动条整体样式*/
-            width: 5px;
-            /*高宽分别对应横竖滚动条的尺寸*/
-            height: 1px;
-        }
+  .myScroller {
+    &::-webkit-scrollbar {
+      /*滚动条整体样式*/
+      width: 5px;
+      /*高宽分别对应横竖滚动条的尺寸*/
+      height: 1px;
+    }
 
-        &::-webkit-scrollbar-thumb {
-            /*滚动条里面小方块*/
-            border-radius: 10px;
-            background-color: skyblue;
-            background-image: -webkit-linear-gradient(45deg,
-                    rgba(255, 255, 255, 0.2) 25%,
-                    transparent 25%,
-                    transparent 50%,
-                    rgba(255, 255, 255, 0.2) 50%,
-                    rgba(255, 255, 255, 0.2) 75%,
-                    transparent 75%,
-                    transparent);
-        }
+    &::-webkit-scrollbar-thumb {
+      /*滚动条里面小方块*/
+      border-radius: 10px;
+      background-color: skyblue;
+      background-image: -webkit-linear-gradient(45deg,
+          rgba(255, 255, 255, 0.2) 25%,
+          transparent 25%,
+          transparent 50%,
+          rgba(255, 255, 255, 0.2) 50%,
+          rgba(255, 255, 255, 0.2) 75%,
+          transparent 75%,
+          transparent);
+    }
 
-        &::-webkit-scrollbar-track {
-            /*滚动条里面轨道*/
-            box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
-            background: #ededed;
-            border-radius: 10px;
-        }
+    &::-webkit-scrollbar-track {
+      /*滚动条里面轨道*/
+      box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
+      background: #ededed;
+      border-radius: 10px;
     }
+  }
 
-    .bottom {
-        width: 100%;
-        margin-top: 5px;
-        display: flex;
-        align-items: center;
-        justify-content: space-around;
+  .bottom {
+    width: 100%;
+    margin-top: 5px;
+    display: flex;
+    align-items: center;
+    justify-content: space-around;
 
-        .value {
-            float: left;
-            font-size: 14px;
-            vertical-align: middle;
+    .value {
+      float: left;
+      font-size: 14px;
+      vertical-align: middle;
 
-            span:nth-child(1) {
-                color: red;
-            }
-        }
+      span:nth-child(1) {
+        color: red;
+      }
     }
+  }
 }
 </style>

+ 1 - 1
src/views/iot/alarm/setting/component/edit.vue

@@ -519,7 +519,7 @@ export default defineComponent({
 		const setType = (notResetDeviceKey: boolean) => {
 			!notResetDeviceKey && (state.ruleForm.deviceKey = '')
 			let product_id = 0;
-			state.productData.forEach((item, index) => {
+			state.productData.forEach((item) => {
 				if (item.key == state.ruleForm.productKey) {
 					product_id = item.id;
 				}

+ 1 - 1
src/views/iot/certificate/component/editParams.vue

@@ -292,7 +292,7 @@ const openDialog = (row: any) => {
 
 const submitData = async (formEl: any | undefined) => {
 	if (!formEl) return
-	await formEl.validate((valid: any, fields: any) => {
+	await formEl.validate((valid: any) => {
 		if (valid) {
 			if (state.ruleForm.id) {
 				// 编辑

+ 1 - 1
src/views/iot/device-tree/tree/index.vue

@@ -142,7 +142,7 @@
 </template>
 
 <script lang="ts">
-import { toRefs, reactive, onMounted, ref, defineComponent, getCurrentInstance, watch } from 'vue';
+import { toRefs, reactive, onMounted, ref, defineComponent, watch } from 'vue';
 import { ElMessageBox, ElMessage, FormInstance } from 'element-plus';
 import AddOrUpdate from './component/edit.vue';
 import api from '/@/api/device';

+ 2 - 7
src/views/iot/device/channel/component/detail.vue

@@ -59,11 +59,6 @@
 				</div>
 			</el-tab-pane>
 		</el-tabs>
-		<!-- <div slot="footer" class="dialog-footer">
-      <el-button @click="clsoeDialog">
-        关 闭
-      </el-button>
-    </div> -->
 	</el-dialog>
 </template>
 
@@ -218,10 +213,10 @@ export default {
 					// console.log('error', e);
 				}
 			};
-			this.evsrc.onerror = function (_ev: any) {
+			// this.evsrc.onerror = function (_ev: any) {
 				// @ts-ignore
 				// console.log('readyState = ' + ev.currentTarget.readyState);
-			};
+			// };
 		},
 		openEv() {
 			(this.$refs.logContainer as any).insertAdjacentHTML('beforeEnd', `<li style="color: #000;">开始...</li>`);

+ 0 - 9
src/views/iot/device/channel/component/edit.vue

@@ -10,14 +10,6 @@
 			<el-form-item label="设备地址" prop="slaveId">
 				<el-input v-model.number="temp.slaveId" placeholder="请输入设备地址" />
 			</el-form-item>
-			<!-- <el-form-item label="设备模板" prop="templateNumber">
-				<el-select v-model="temp.templateNumber" filterable placeholder="请选择设备模板" style="width: 100%">
-					<el-option v-for="item in templateOptions" :key="item.number" :label="item.title" :value="item.number"> </el-option>
-				</el-select>
-			</el-form-item> -->
-			<!-- <el-form-item label="调度周期(秒)" prop="interval">
-				<el-input v-model="temp.interval" placeholder="请输入调度周期" />
-			</el-form-item> -->
 		</el-form>
 		<div slot="footer" class="dialog-footer">
 			<el-button @click="clsoeDialog()"> 取 消 </el-button>
@@ -42,7 +34,6 @@ export default {
 				title: [{ required: true, message: '请输入通道名称', trigger: 'blur' }],
 				number: [{ required: true, message: '请输入注册码', trigger: 'blur' }],
 				slaveId: [{ required: true, message: '请输入设备地址', trigger: 'blur' }],
-				// templateNumber: [{ required: true, message: '请输入设备模板', trigger: 'change' }],
 			},
 			dialogVisible: false,
 			listLoading: false,

+ 1 - 8
src/views/iot/device/channel/component/taskDialog.vue

@@ -1,12 +1,5 @@
 <template>
-	<el-dialog
-		:title="textMap[dialogStatus]"
-		v-model="dialogVisible"
-		width="600px"
-		:before-close="clsoeDialog"
-		append-to-body
-		:close-on-click-modal="false"
-	>
+	<el-dialog :title="textMap[dialogStatus]" v-model="dialogVisible" width="600px" :before-close="clsoeDialog" append-to-body :close-on-click-modal="false">
 		<el-form ref="dataForm" :rules="rules" :model="temp" label-position="left" label-width="120px" style="width: 400px; margin: 0 auto">
 			<el-form-item label="标题" prop="title">
 				<el-input v-model="temp.title" placeholder="请输入标题" />

+ 1 - 1
src/views/iot/device/instance/component/edit.vue

@@ -20,7 +20,7 @@
           <div class="tags-wrapper">
             <el-button type="primary" size="small" @click="toAddTag">添加标签</el-button>
             <div class="tags">
-              <div class="tag flex" v-for="tag, i in ruleForm.tags">
+              <div class="tag flex" v-for="tag, i in ruleForm.tags" :key="tag.key">
                 <el-tag>{{ tag.key }} : {{ tag.name }} : {{ tag.value }}</el-tag>
                 <el-button type="danger" size="small" @click="delTagRow(i)">删除</el-button>
               </div>

+ 22 - 31
src/views/iot/device/instance/component/subDeviceMutipleBind.vue

@@ -17,30 +17,24 @@
 				<el-table-column label="产品名称" prop="productName" :show-overflow-tooltip="true" v-col="'productName'" />
 
 				<el-table-column prop="status" label="状态" width="100" align="center" v-col="'status'">
-				<template #default="scope">
-					<el-tag type="info" size="small" v-if="scope.row.status==1">离线</el-tag>
-					<el-tag type="success" size="small" v-if="scope.row.status==2">在线</el-tag>
-					<el-tag type="info" size="small" v-if="scope.row.status==0">未启用</el-tag>
-				</template>
+					<template #default="scope">
+						<el-tag type="info" size="small" v-if="scope.row.status == 1">离线</el-tag>
+						<el-tag type="success" size="small" v-if="scope.row.status == 2">在线</el-tag>
+						<el-tag type="info" size="small" v-if="scope.row.status == 0">未启用</el-tag>
+					</template>
 				</el-table-column>
 				<el-table-column prop="registryTime" label="激活时间" align="center" width="150" v-col="'registryTime'"></el-table-column>
 				<el-table-column prop="desc" label="说明" v-col="'desc'"></el-table-column>
 
 			</el-table>
-			<pagination
-				v-show="tableData.total > 0"
-				:total="tableData.total"
-				v-model:page="tableData.param.pageNum"
-				v-model:limit="tableData.param.pageSize"
-				@pagination="getDeviceList"
-			/>
+			<pagination v-show="tableData.total > 0" :total="tableData.total" v-model:page="tableData.param.pageNum" v-model:limit="tableData.param.pageSize" @pagination="getDeviceList" />
 
 		</el-dialog>
 	</div>
 </template>
 <script lang="ts">
-import { toRefs, reactive, onMounted, ref, defineComponent } from 'vue'
-import { ElMessageBox, ElMessage, FormInstance } from 'element-plus'
+import { toRefs, reactive, defineComponent } from 'vue'
+import { ElMessageBox, ElMessage } from 'element-plus'
 
 import 'vue3-json-viewer/dist/index.css'
 
@@ -49,7 +43,7 @@ import { useRoute } from 'vue-router'
 import api from '/@/api/device'
 
 interface TableDataState {
-    isShowDialog: boolean,
+	isShowDialog: boolean,
 	productData: object[],
 	deviceKeyList: string[];
 	gatewayKey: string;
@@ -66,11 +60,9 @@ interface TableDataState {
 		}
 	},
 	ruleForm: {
-		productId: string|number
+		productId: string | number
 	},
 	rules: {}
-
-
 }
 export default defineComponent({
 	name: 'MutipleBindDialog',
@@ -103,7 +95,7 @@ export default defineComponent({
 		})
 
 		const getDeviceList = () => {
-			if(!state.ruleForm.productId) {
+			if (!state.ruleForm.productId) {
 				state.tableData.data = [];
 				state.tableData.total = 0;
 				return;
@@ -136,7 +128,7 @@ export default defineComponent({
 			getProductList()
 		};
 
-		    // 多选框选中数据
+		// 多选框选中数据
 		const handleSelectionChange = (selection: any[]) => {
 			state.deviceKeyList = selection.map((item) => item.key);
 		};
@@ -152,17 +144,16 @@ export default defineComponent({
 				cancelButtonText: '取消',
 				type: 'warning',
 			})
-			.then(() => {
-				api.device.mutipleBind({
-					"gatewayKey":state.gatewayKey,
-					"subKeys": state.deviceKeyList
-				}).then(() => {
-					ElMessage.success('绑定成功');
-					emit('bindSuccess')
-					state.isShowDialog = false;
-				});
-			})
-			.catch(() => { });
+				.then(() => {
+					api.device.mutipleBind({
+						"gatewayKey": state.gatewayKey,
+						"subKeys": state.deviceKeyList
+					}).then(() => {
+						ElMessage.success('绑定成功');
+						emit('bindSuccess')
+						state.isShowDialog = false;
+					});
+				})
 		};
 
 		const handleChange = (productId: number) => {

+ 1 - 1
src/views/iot/device/product/component/deviceIn.vue

@@ -36,7 +36,7 @@
 </template>
 
 <script lang="ts" setup>
-import { ref, reactive, nextTick, watch } from 'vue';
+import { reactive } from 'vue';
 import api from '/@/api/device';
 import { useRoute } from 'vue-router';
 

+ 1 - 3
src/views/iot/device/product/component/editAttr.vue

@@ -190,11 +190,9 @@
 <script lang="ts">
 import { reactive, toRefs, defineComponent, ref, unref } from 'vue';
 import api from '/@/api/device';
-import uploadVue from '/@/components/upload/index.vue';
 import { Plus, Minus, Right } from '@element-plus/icons-vue';
 import EditOption from './editOption.vue';
-
-import { ElMessage, UploadProps } from 'element-plus';
+import { ElMessage } from 'element-plus';
 
 interface RuleFormState {
 	id: number;

+ 1 - 7
src/views/iot/device/product/component/editOption.vue

@@ -128,14 +128,10 @@
 							</div>
 						</div>
 					</el-form-item>
-
-
-
 				</div>
 
 				<!--根据数据类型输出不同表单-->
 
-
 				<el-form-item label="参数描述	" prop="desc">
 					<el-input v-model="ruleForm.desc" type="textarea" placeholder="请输入参数描述"></el-input>
 				</el-form-item>
@@ -153,10 +149,8 @@
 <script lang="ts">
 import { reactive, toRefs, defineComponent, ref, unref } from 'vue';
 import api from '/@/api/device';
-import uploadVue from '/@/components/upload/index.vue';
 import { Plus, Minus, Right } from '@element-plus/icons-vue';
-
-import { ElMessage, UploadProps } from 'element-plus';
+import { ElMessage } from 'element-plus';
 
 interface RuleFormState {
 	id: number;

+ 1 - 2
src/views/iot/device/product/component/editTab.vue

@@ -189,11 +189,10 @@
 <script lang="ts">
 import { reactive, toRefs, defineComponent, ref, unref } from 'vue';
 import api from '/@/api/device';
-import uploadVue from '/@/components/upload/index.vue';
 import { Plus, Minus, Right } from '@element-plus/icons-vue';
 import EditOption from './editOption.vue';
 
-import { ElMessage, UploadProps } from 'element-plus';
+import { ElMessage } from 'element-plus';
 
 interface RuleFormState {
 	id: number;

+ 1 - 1
src/views/iot/device/template/component/dataAreaDialog.vue

@@ -115,7 +115,7 @@ export default {
 				}
 			});
 		},
-		handleSubmit(row: any, index: number) {
+		handleSubmit(row: any) {
 			if (row.taId) {
 				api.area.editDataArea(row).then(() => {
 					this.getList();

+ 5 - 28
src/views/iot/device/template/component/deviceTemplateDialog.vue

@@ -17,24 +17,9 @@
 				</template>
 			</el-table-column>
 		</el-table>
-		<pagination
-			v-show="total > 0"
-			:total="total"
-			v-model:page="listQuery.page"
-			v-model:limit="listQuery.size"
-			@pagination="getList"
-			style="padding: 20px 0 0 !important"
-		/>
+		<pagination v-show="total > 0" :total="total" v-model:page="listQuery.page" v-model:limit="listQuery.size" @pagination="getList" style="padding: 20px 0 0 !important" />
 
-		<el-dialog
-			:title="textMap[dialogStatus]"
-			v-model="dialogVisible"
-			width="850px"
-			:before-close="clsoeDialog"
-			close="var-dialog"
-			append-to-body
-			:close-on-click-modal="false"
-		>
+		<el-dialog :title="textMap[dialogStatus]" v-model="dialogVisible" width="850px" :before-close="clsoeDialog" close="var-dialog" append-to-body :close-on-click-modal="false">
 			<el-form ref="dataForm" :rules="rules" :model="temp" label-position="right" label-width="95px">
 				<el-row>
 					<el-col :span="8">
@@ -64,14 +49,7 @@
 					</el-col>
 					<el-col :span="8" v-if="mode === 1">
 						<el-form-item label="数据地址" prop="dataAddress">
-							<el-select
-								v-model="temp.dataAddress"
-								placeholder="请选择数据地址"
-								filterable
-								class="filter-item"
-								@change="handleSelectChange"
-								style="width: 100%"
-							>
+							<el-select v-model="temp.dataAddress" placeholder="请选择数据地址" filterable class="filter-item" @change="handleSelectChange" style="width: 100%">
 								<el-option v-for="(item, index) in dataAddressOptions" :key="index" :label="item.title" :value="item.value" />
 							</el-select>
 						</el-form-item>
@@ -214,13 +192,13 @@ export default {
 				.then((res: any) => {
 					this.dataAreaOptions = res.list || [];
 				})
-				.finally(() => {});
+				.finally(() => { });
 		},
 		handleFilter() {
 			// this.listQuery.page = 1
 			this.getList();
 		},
-		handleDelete(row, index) {
+		handleDelete(row) {
 			this.$confirm('是否确认删除变量名称为"' + row.title + '"的数据项?', '警告', {
 				confirmButtonText: '确定',
 				cancelButtonText: '取消',
@@ -233,7 +211,6 @@ export default {
 					this.getList();
 					this.msgSuccess('删除成功');
 				})
-				.catch(function () {});
 		},
 		openDialog(dialogStatus, row) {
 			this.dialogStatus = dialogStatus;

+ 1 - 7
src/views/iot/device/template/component/edit.vue

@@ -1,11 +1,5 @@
 <template>
-	<el-dialog
-		:title="textMap[dialogStatus]"
-		v-model="dialogVisible"
-		:width="dialogWidth"
-		:before-close="clsoeDialog"
-		:close-on-click-modal="false"
-	>
+	<el-dialog :title="textMap[dialogStatus]" v-model="dialogVisible" :width="dialogWidth" :before-close="clsoeDialog" :close-on-click-modal="false">
 		<div class="wrapper">
 			<el-form class="form" ref="dataForm" :rules="rules" :model="temp" label-position="left" label-width="120px" style="width: 400px">
 				<el-form-item label="模板名称" prop="title">

+ 138 - 106
src/views/iot/iotmanager/dashboard.vue

@@ -1,21 +1,12 @@
 <template>
 	<div class="home-container">
 		<el-row :gutter="15" class="home-card-one mb15">
-			<el-col
-				:xs="24"
-				:sm="12"
-				:md="12"
-				:lg="6"
-				:xl="6"
-				v-for="(v, k) in homeOne"
-				:key="k"
-				:class="{ 'home-media home-media-lg': k > 1, 'home-media-sm': k === 1 }"
-			>
+			<el-col :xs="24" :sm="12" :md="12" :lg="6" :xl="6" v-for="(v, k) in homeOne" :key="k" :class="{ 'home-media home-media-lg': k > 1, 'home-media-sm': k === 1 }">
 				<div class="home-card-item flex">
 					<div class="flex-margin flex w100" :class="` home-one-animation${k}`">
 						<div class="flex-auto">
 							<span class="font30">{{ v.num1 }}</span>
-							<span class="ml5 font16" :style="{ color: v.color1 }">  {{ v.num2 }}</span>
+							<span class="ml5 font16" :style="{ color: v.color1 }"> {{ v.num2 }}</span>
 							<div class="mt10">{{ v.num3 }}</div>
 						</div>
 						<div class="home-card-item-icon flex" :style="{ background: `var(${v.color2})` }">
@@ -44,38 +35,37 @@
 						<span>告警信息列表</span>
 						<el-button size="small" text type="primary" @click="toMore()">更多信息</el-button>
 					</div>
-					  <el-table :data="tableData.data" style="width: 100%" v-loading="loading">
-							<el-table-column label="ID" align="center" prop="id" width="60" v-col="'ID'" />
-							<el-table-column label="告警类型" prop="type" :show-overflow-tooltip="true" v-col="'type'">
-								<template #default="scope">
-									<span v-if="scope.row.type == 1">规则告警</span>
-									<span v-else>设备自主告警</span>
-								</template>
-							</el-table-column>
-							<el-table-column label="规则名称" prop="ruleName" :show-overflow-tooltip="true"  v-col="'ruleName'"/>
-							<el-table-column label="规则级别" prop="alarmLevel" :show-overflow-tooltip="true" v-col="'alarmLevel'">
-								<template #default="scope">
-									{{ scope.row.alarmLevel.name }}
-								</template>
-							</el-table-column>
-							<el-table-column label="产品标识" prop="productKey" :show-overflow-tooltip="true" v-col="'productKey'"/>
-							<el-table-column label="设备标识" prop="deviceKey" :show-overflow-tooltip="true" v-col="'deviceKey'" />
-
-							<el-table-column prop="status" label="告警状态" width="100" align="center" v-col="'status'">
-								<template #default="scope">
-									<el-tag type="success" size="small" v-if="scope.row.status">已处理</el-tag>
-									<el-tag type="info" size="small" v-else>未处理</el-tag>
-								</template>
-							</el-table-column>
-							<el-table-column prop="createdAt" label="告警时间" align="center" width="180" v-col="'createdAt'"></el-table-column>
-							<el-table-column label="操作" width="150" align="center" fixed="right" v-col="'handle'">
-								<template #default="scope">
-									<el-button v-auth="'detail'" size="small" text type="primary" @click="onOpenDetailDic(scope.row)">详情</el-button>
-									<el-button v-auth="'edit'" size="small" text type="warning" @click="onOpenEditDic(scope.row)" v-if="scope.row.status == 0">处理</el-button>
-								</template>
-							</el-table-column>
+					<el-table :data="tableData.data" style="width: 100%" v-loading="loading">
+						<el-table-column label="ID" align="center" prop="id" width="60" v-col="'ID'" />
+						<el-table-column label="告警类型" prop="type" :show-overflow-tooltip="true" v-col="'type'">
+							<template #default="scope">
+								<span v-if="scope.row.type == 1">规则告警</span>
+								<span v-else>设备自主告警</span>
+							</template>
+						</el-table-column>
+						<el-table-column label="规则名称" prop="ruleName" :show-overflow-tooltip="true" v-col="'ruleName'" />
+						<el-table-column label="规则级别" prop="alarmLevel" :show-overflow-tooltip="true" v-col="'alarmLevel'">
+							<template #default="scope">
+								{{ scope.row.alarmLevel.name }}
+							</template>
+						</el-table-column>
+						<el-table-column label="产品标识" prop="productKey" :show-overflow-tooltip="true" v-col="'productKey'" />
+						<el-table-column label="设备标识" prop="deviceKey" :show-overflow-tooltip="true" v-col="'deviceKey'" />
+
+						<el-table-column prop="status" label="告警状态" width="100" align="center" v-col="'status'">
+							<template #default="scope">
+								<el-tag type="success" size="small" v-if="scope.row.status">已处理</el-tag>
+								<el-tag type="info" size="small" v-else>未处理</el-tag>
+							</template>
+						</el-table-column>
+						<el-table-column prop="createdAt" label="告警时间" align="center" width="180" v-col="'createdAt'"></el-table-column>
+						<el-table-column label="操作" width="150" align="center" fixed="right" v-col="'handle'">
+							<template #default="scope">
+								<el-button v-auth="'detail'" size="small" text type="primary" @click="onOpenDetailDic(scope.row)">详情</el-button>
+								<el-button v-auth="'edit'" size="small" text type="warning" @click="onOpenEditDic(scope.row)" v-if="scope.row.status == 0">处理</el-button>
+							</template>
+						</el-table-column>
 					</el-table>
-					<!-- <pagination v-if="tableData.total" :total="tableData.total" v-model:page="tableData.param.pageNum" v-model:limit="tableData.param.pageSize" @pagination="getAlarmList()" /> -->
 				</div>
 			</el-col>
 		</el-row>
@@ -199,21 +189,18 @@ export default defineComponent({
 						type: 'value',
 						name: '条数',
 						splitLine: { show: true, lineStyle: { type: 'dashed', color: '#f5f5f5' } },
-								axisLabel: {
-						margin: 2,
-						formatter: function (value, index) {
-							if (value >= 10000 && value < 10000000) {
-								value = value / 10000 + "W";
-							} else if (value >= 10000000) {
-								value = value / 10000000 + "KW";
+						axisLabel: {
+							margin: 2,
+							formatter: function (value, index) {
+								if (value >= 10000 && value < 10000000) {
+									value = value / 10000 + "W";
+								} else if (value >= 10000000) {
+									value = value / 10000000 + "KW";
+								}
+								return value;
 							}
-							return value;
-						}
-        			},
+						},
 					},
-
-
-
 				],
 				series: [
 					{
@@ -373,17 +360,17 @@ export default defineComponent({
 			window.addEventListener('resize', initEchartsResizeFun);
 		};
 		const getOverviewData = () => {
-			api.iotManage.getOverviewData().then((res:any) => {
+			api.iotManage.getOverviewData().then((res: any) => {
 				const { overview, device, alarmLevel } = res;
 				// overview
-					// "deviceTotal": 8, //设备总量
-					// "deviceOffline": 4, //离线设备数量
-					// "productTotal": 6, //产品总量
-					// "productAdded": 0, //今日产品增量
-					// "msgTotal": 107246, //设备消息总量
-					// "msgAdded": 7391, //今日设备消息增量
-					// "alarmTotal": 43, //设备报警总量
-					// "alarmAdded": 0 //今日设备报警增量
+				// "deviceTotal": 8, //设备总量
+				// "deviceOffline": 4, //离线设备数量
+				// "productTotal": 6, //产品总量
+				// "productAdded": 0, //今日产品增量
+				// "msgTotal": 107246, //设备消息总量
+				// "msgAdded": 7391, //今日设备消息增量
+				// "alarmTotal": 43, //设备报警总量
+				// "alarmAdded": 0 //今日设备报警增量
 				state.homeOne[0].num1 = overview.productTotal;
 				state.homeOne[0].num2 = `+${overview.productAdded}`;
 				state.homeOne[1].num1 = overview.deviceTotal;
@@ -394,8 +381,8 @@ export default defineComponent({
 				state.homeOne[3].num2 = `${overview.alarmAdded}`;
 
 				// device
-					// msgTotal 设备消息量月度统计
-					// alarmTotal 设备告警量月度统计
+				// msgTotal 设备消息量月度统计
+				// alarmTotal 设备告警量月度统计
 				state.lineChartMsgTotalData = [];
 				state.lineChartAlarmTotalData = [];
 				state.lineChartXAxisData = Object.keys(device.msgTotal).map((item: any) => {
@@ -405,10 +392,10 @@ export default defineComponent({
 				})
 
 				// alarmLevel
-					// "level": 4, //级别
-					// "name": "一般", //级别名称
-					// "num": 43, //该级别日志数量
-					// "ratio": 100 //该级别日志数量占比(百分比)
+				// "level": 4, //级别
+				// "name": "一般", //级别名称
+				// "num": 43, //该级别日志数量
+				// "ratio": 100 //该级别日志数量占比(百分比)
 				state.pieChartLegend = [];
 				alarmLevel && alarmLevel.map((item: any) => {
 					state.pieChartLegend.push(item.name)
@@ -432,7 +419,7 @@ export default defineComponent({
 		};
 		// 告警信息-更多信息
 		const toMore = () => {
-			router.push({ path: '/monitor/notice'});
+			router.push({ path: '/monitor/notice' });
 		};
 		// 页面加载时
 		onMounted(() => {
@@ -491,12 +478,16 @@ export default defineComponent({
 
 <style scoped lang="scss">
 $homeNavLengh: 8;
+
 .home-container {
 	overflow: hidden;
+
 	.home-card-one,
 	.home-card-two,
 	.home-card-three {
-		.home-card-item,.home-card-top {
+
+		.home-card-item,
+		.home-card-top {
 			width: 100%;
 			height: 130px;
 			border-radius: 4px;
@@ -506,19 +497,23 @@ $homeNavLengh: 8;
 			background: var(--el-color-white);
 			color: var(--el-text-color-primary);
 			border: 1px solid var(--next-border-color-light);
+
 			&:hover {
 				box-shadow: 0 2px 12px var(--next-color-dark-hover);
 				transition: all ease 0.3s;
 			}
+
 			&-icon {
 				width: 70px;
 				height: 70px;
 				border-radius: 100%;
 				flex-shrink: 1;
+
 				i {
 					color: var(--el-text-color-placeholder);
 				}
 			}
+
 			&-title {
 				font-size: 15px;
 				font-weight: bold;
@@ -526,6 +521,7 @@ $homeNavLengh: 8;
 			}
 		}
 	}
+
 	.home-card-three {
 		.home-card-item-title {
 			display: flex;
@@ -535,6 +531,7 @@ $homeNavLengh: 8;
 			// }
 		}
 	}
+
 	.home-card-one {
 		@for $i from 0 through 3 {
 			.home-one-animation#{$i} {
@@ -546,28 +543,42 @@ $homeNavLengh: 8;
 			}
 		}
 	}
+
 	.home-card-two,
 	.home-card-three {
-    .home-card-item{
-      height: 300px;
-    }
-    .home-card-top{
-      height: 250px;
-      .box-card{
-        padding: 15px 20px 20px 10px;
-        p{margin-bottom: 10px;}
-        &-item{margin-bottom: 10px;}
-      }
-    }
-		.home-card-item, .home-card-top{
+		.home-card-item {
+			height: 300px;
+		}
+
+		.home-card-top {
+			height: 250px;
+
+			.box-card {
+				padding: 15px 20px 20px 10px;
+
+				p {
+					margin-bottom: 10px;
+				}
+
+				&-item {
+					margin-bottom: 10px;
+				}
+			}
+		}
+
+		.home-card-item,
+		.home-card-top {
 			width: 100%;
 			overflow: hidden;
+
 			.home-monitor {
 				height: 100%;
+
 				.flex-warp-item {
 					width: 25%;
 					height: 111px;
 					display: flex;
+
 					.flex-warp-item-box {
 						margin: auto;
 						text-align: center;
@@ -577,11 +588,13 @@ $homeNavLengh: 8;
 						background: var(--next-bg-color);
 						cursor: pointer;
 						transition: all 0.3s ease;
+
 						&:hover {
 							background: var(--el-color-primary-light-9);
 							transition: all 0.3s ease;
 						}
 					}
+
 					@for $i from 0 through $homeNavLengh {
 						.home-animation#{$i} {
 							opacity: 0;
@@ -595,27 +608,46 @@ $homeNavLengh: 8;
 			}
 		}
 	}
-  .text-info{color: #23c6c8;}
-  .text-danger{color:#ed5565;}
-
-  .git-res{
-    margin-top: 20px;
-  }
-  .git-res .el-link{
-    margin-right: 30px;
-  }
-  ul,li{ padding:0;margin:0;list-style:none}
-  .product{
-    margin-top: 50px;
-    h3{margin-bottom: 15px;}
-  }
-  .product li{
-    margin-bottom: 20px;
-    float: left;
-    width: 150px;
-  }
-  .box-card.xx{
-    margin-top: 20px;
-  }
+
+	.text-info {
+		color: #23c6c8;
+	}
+
+	.text-danger {
+		color: #ed5565;
+	}
+
+	.git-res {
+		margin-top: 20px;
+	}
+
+	.git-res .el-link {
+		margin-right: 30px;
+	}
+
+	ul,
+	li {
+		padding: 0;
+		margin: 0;
+		list-style: none
+	}
+
+	.product {
+		margin-top: 50px;
+
+		h3 {
+			margin-bottom: 15px;
+		}
+	}
+
+	.product li {
+		margin-bottom: 20px;
+		float: left;
+		width: 150px;
+	}
+
+	.box-card.xx {
+		margin-top: 20px;
+	}
 }
 </style>

+ 4 - 9
src/views/iot/noticeservices/log/component/detail.vue

@@ -1,12 +1,10 @@
 <template>
 	<div class="system-edit-dic-container">
 		<el-dialog title="日志详情" v-model="isShowDialog" width="769px">
-			<el-form  ref="formRef"  size="default" label-width="110px">
+			<el-form ref="formRef" size="default" label-width="110px">
 				<el-form-item label="内容">
 					<div v-html="content"></div>
-
 				</el-form-item>
-				
 			</el-form>
 			<template #footer>
 				<span class="dialog-footer">
@@ -20,8 +18,6 @@
 <script lang="ts">
 import { reactive, toRefs, defineComponent, ref } from 'vue';
 
-
-
 interface DicState {
 	isShowDialog: boolean;
 	content: string;
@@ -29,18 +25,17 @@ interface DicState {
 
 export default defineComponent({
 	name: 'Edit',
-	setup(prop, { emit }) {
+	setup() {
 		const formRef = ref<HTMLElement | null>(null);
 		const state = reactive<DicState>({
 			isShowDialog: false,
 			content: '',
 		});
 		// 打开弹窗
-		const openDialog = (row: RuleFormState | null) => {
-			state.content=row.content;
+		const openDialog = (row: any) => {
+			state.content = row.content;
 			state.isShowDialog = true;
 		};
-	
 
 		// 关闭弹窗
 		const closeDialog = () => {

+ 37 - 20
src/views/personal/index.vue

@@ -36,15 +36,7 @@
 								<el-col :xs="24" :sm="24" class="personal-item mb6">
 									<div class="personal-item-label">生日:</div>
 									<div v-if="isEditStatus" class="personal-item-value">{{ info.birthday }}</div>
-									<el-date-picker
-										v-else
-										@change="dateChange"
-										v-model="info.birthday"
-										type="date"
-										placeholder="请选择出生日期"
-										format="YYYY/MM/DD"
-										value-format="YYYY-MM-DD"
-									/>
+									<el-date-picker v-else @change="dateChange" v-model="info.birthday" type="date" placeholder="请选择出生日期" format="YYYY/MM/DD" value-format="YYYY-MM-DD" />
 								</el-col>
 								<!-- 登录密码 -->
 								<el-col v-if="!isEditStatus" :xs="24" :sm="24" class="personal-item mb6">
@@ -109,12 +101,6 @@ const store = useStore();
 const info = ref<any>({})
 const isEditStatus = ref<Boolean>(true)
 
-// api.login.currentUser().then((res: any) => {
-//   info.value = res.Info
-//   			// api.user.detail(localStorage.userId).then((user: any) => {
-// 			// 		state.ruleForm = user;
-// 			// 	});
-// });
 api.user.detail(localStorage.userId).then((user: any) => {
 	info.value = user
 })
@@ -125,10 +111,10 @@ const currentTime = computed(() => {
 })
 
 const setImg = (img: string) => {
-	api.user.setAvatar(info.value.id, img).then((res: any) => {
+	api.user.setAvatar(info.value.id, img).then(() => {
 		ElMessage.success('更新成功')
 		info.value.avatar = img
-		
+
 		const userInfos = {
 			userNickname: info.value?.userNickname,
 			avatar: img,
@@ -171,7 +157,7 @@ const submitData = () => {
 		address,
 		describe,
 	}
-	api.user.editUserInfo(params).then((res: any) => {
+	api.user.editUserInfo(params).then(() => {
 		ElMessage.success('更新成功')
 		isEditStatus.value = true
 	})
@@ -187,15 +173,18 @@ const dateChange = (e: any) => {
 
 <style scoped lang="scss">
 @import '../../theme/mixins/index.scss';
+
 .personal {
 	.personal-user {
 		display: flex;
 		align-items: center;
+
 		.personal-user-left {
 			::v-deep(.el-upload) {
 				height: 100%;
 				display: flex;
 				flex-direction: column;
+
 				.tips {
 					font-size: 12px;
 					color: #ccc;
@@ -208,6 +197,7 @@ const dateChange = (e: any) => {
 					height: 100%;
 					border-radius: 3px;
 				}
+
 				&:hover {
 					img {
 						animation: logoAnimation 0.3s ease-in-out;
@@ -215,28 +205,35 @@ const dateChange = (e: any) => {
 				}
 			}
 		}
+
 		.personal-user-right {
 			flex: 1;
 			padding: 0 15px;
+
 			.personal-title {
 				font-size: 18px;
 				@include text-ellipsis(1);
 			}
+
 			.personal-item {
 				display: flex;
 				align-items: center;
 				font-size: 13px;
+
 				.personal-item-label {
 					color: var(--el-text-color-secondary);
 					@include text-ellipsis(1);
 					width: 70px;
 					text-align: right;
 				}
+
 				.personal-item-value {
 					@include text-ellipsis(1);
 				}
+
 				.personal-item-value-edit {
 					width: 220px;
+
 					::v-deep(.el-input__wrapper) {
 						width: 100%;
 					}
@@ -244,33 +241,41 @@ const dateChange = (e: any) => {
 			}
 		}
 	}
+
 	.edit-btn {
 		padding: 30px 0 0 222px;
 	}
+
 	.personal-info {
 		.personal-info-more {
 			float: right;
 			color: var(--el-text-color-secondary);
 			font-size: 13px;
+
 			&:hover {
 				color: var(--color-primary);
 				cursor: pointer;
 			}
 		}
+
 		.personal-info-box {
 			height: 130px;
 			overflow: hidden;
+
 			.personal-info-ul {
 				list-style: none;
+
 				.personal-info-li {
 					font-size: 13px;
 					padding-bottom: 10px;
+
 					.personal-info-li-title {
 						display: inline-block;
 						@include text-ellipsis(1);
 						color: var(--el-text-color-secondary);
 						text-decoration: none;
 					}
+
 					& a:hover {
 						color: var(--color-primary);
 						cursor: pointer;
@@ -279,6 +284,7 @@ const dateChange = (e: any) => {
 			}
 		}
 	}
+
 	.personal-recommend-row {
 		.personal-recommend-col {
 			.personal-recommend {
@@ -288,6 +294,7 @@ const dateChange = (e: any) => {
 				border-radius: 3px;
 				overflow: hidden;
 				cursor: pointer;
+
 				&:hover {
 					i {
 						right: 0px !important;
@@ -295,6 +302,7 @@ const dateChange = (e: any) => {
 						transition: all ease 0.3s;
 					}
 				}
+
 				i {
 					position: absolute;
 					right: -10px;
@@ -303,11 +311,13 @@ const dateChange = (e: any) => {
 					transform: rotate(-30deg);
 					transition: all ease 0.3s;
 				}
+
 				.personal-recommend-auto {
 					padding: 15px;
 					position: absolute;
 					left: 0;
 					top: 5%;
+
 					.personal-recommend-msg {
 						font-size: 12px;
 						margin-top: 10px;
@@ -316,11 +326,13 @@ const dateChange = (e: any) => {
 			}
 		}
 	}
+
 	.personal-edit {
 		.personal-edit-title {
 			position: relative;
 			padding-left: 10px;
 			color: var(--el-text-color-regular);
+
 			&::after {
 				content: '';
 				width: 2px;
@@ -332,21 +344,26 @@ const dateChange = (e: any) => {
 				background: var(--color-primary);
 			}
 		}
+
 		.personal-edit-safe-box {
 			border-bottom: 1px solid var(--el-border-color-light, #ebeef5);
 			padding: 15px 0;
+
 			.personal-edit-safe-item {
 				width: 100%;
 				display: flex;
 				align-items: center;
 				justify-content: space-between;
+
 				.personal-edit-safe-item-left {
 					flex: 1;
 					overflow: hidden;
+
 					.personal-edit-safe-item-left-label {
 						color: var(--el-text-color-regular);
 						margin-bottom: 5px;
 					}
+
 					.personal-edit-safe-item-left-value {
 						color: var(--el-text-color-secondary);
 						@include text-ellipsis(1);
@@ -354,11 +371,11 @@ const dateChange = (e: any) => {
 					}
 				}
 			}
+
 			&:last-of-type {
 				padding-bottom: 0;
 				border-bottom: none;
 			}
 		}
 	}
-}
-</style>
+}</style>

+ 1 - 7
src/views/system/assess/component/editAttr.vue

@@ -59,8 +59,7 @@
 <script lang="ts">
 import { reactive, toRefs, defineComponent, ref, unref } from 'vue';
 import api from '/@/api/device';
-import uploadVue from '/@/components/upload/index.vue';
-import { ElMessage, UploadProps } from 'element-plus';
+import { ElMessage } from 'element-plus';
 
 interface RuleFormState {
 	id: number;
@@ -78,7 +77,6 @@ interface DicState {
 
 export default defineComponent({
 	name: 'deviceEditPro',
-	components: { uploadVue },
 	setup(prop, { emit }) {
 		const formRef = ref<HTMLElement | null>(null);
 
@@ -89,9 +87,7 @@ export default defineComponent({
 			valueType: {
 				type: '',
 				maxLength: '',
-
 			},
-
 			ruleForm: {
 				name: '',
 				key: '',
@@ -101,9 +97,7 @@ export default defineComponent({
 				valueType: {
 					type: '',
 					maxLength: '',
-
 				},
-
 				desc: '',
 			},
 			rules: {

+ 32 - 44
src/views/system/assess/component/editEvent.vue

@@ -9,7 +9,6 @@
 					<el-input v-model="ruleForm.name" placeholder="请输入事件定义名称" />
 				</el-form-item>
 
-        
 				<el-form-item label="事件级别" prop="level">
 					<el-radio-group v-model="ruleForm.level" model-value="0">
 						<el-radio label="0">普通</el-radio>
@@ -27,34 +26,25 @@
 					</el-select>
 				</el-form-item>
 
-        <!--根据数据类型输出不同表单-->
-
-             <el-form-item label="精度" prop="maxLength1" v-if="type=='float' || type=='double'">
-                <el-input v-model="valueType.maxLength1" placeholder="请输入精度" />
-              </el-form-item>
-
-            	<el-form-item label="单位" prop="maxLength" v-if="type=='int' || type=='long' || type=='float'  || type=='double'">
-                <el-input v-model="valueType.maxLength" placeholder="请输入单位" />
-              </el-form-item>
-
-              <el-form-item label="最大长度" prop="maxLength" v-if="type=='string'">
-                <el-input v-model="valueType.maxLength" placeholder="请输入最大长度" />
-              </el-form-item>
-
-               <el-form-item label="时间格式" prop="maxLength" v-if="type=='date'">
-                <el-input v-model="valueType.maxLength" placeholder="请输入时间格式" />
-              </el-form-item>
-             
-
-        <!--根据数据类型输出不同表单-->
-
-
-
+				<!--根据数据类型输出不同表单-->
 
+				<el-form-item label="精度" prop="maxLength1" v-if="type == 'float' || type == 'double'">
+					<el-input v-model="valueType.maxLength1" placeholder="请输入精度" />
+				</el-form-item>
 
+				<el-form-item label="单位" prop="maxLength" v-if="type == 'int' || type == 'long' || type == 'float' || type == 'double'">
+					<el-input v-model="valueType.maxLength" placeholder="请输入单位" />
+				</el-form-item>
 
+				<el-form-item label="最大长度" prop="maxLength" v-if="type == 'string'">
+					<el-input v-model="valueType.maxLength" placeholder="请输入最大长度" />
+				</el-form-item>
 
+				<el-form-item label="时间格式" prop="maxLength" v-if="type == 'date'">
+					<el-input v-model="valueType.maxLength" placeholder="请输入时间格式" />
+				</el-form-item>
 
+				<!--根据数据类型输出不同表单-->
 				<el-form-item label="事件定义描述	" prop="desc">
 					<el-input v-model="ruleForm.desc" type="textarea" placeholder="请输入事件定义描述"></el-input>
 				</el-form-item>
@@ -72,8 +62,7 @@
 <script lang="ts">
 import { reactive, toRefs, defineComponent, ref, unref } from 'vue';
 import api from '/@/api/device';
-import uploadVue from '/@/components/upload/index.vue';
-import { ElMessage, UploadProps } from 'element-plus';
+import { ElMessage } from 'element-plus';
 
 interface RuleFormState {
 	id: number;
@@ -91,19 +80,18 @@ interface DicState {
 
 export default defineComponent({
 	name: 'deviceEditPro',
-	components: { uploadVue },
 	setup(prop, { emit }) {
 		const formRef = ref<HTMLElement | null>(null);
 
 		const state = reactive<DicState>({
 			isShowDialog: false,
 			typeData: [], //
-      type: '',
-       valueType: {
-          type:'',
-          maxLength:'',
+			type: '',
+			valueType: {
+				type: '',
+				maxLength: '',
 
-        },
+			},
 
 			ruleForm: {
 				name: '',
@@ -111,19 +99,19 @@ export default defineComponent({
 				transportProtocol: '',
 				accessMode: '0',
 				status: 1,
-        valueType: {
-          type:'',
-          maxLength:'',
+				valueType: {
+					type: '',
+					maxLength: '',
+
+				},
 
-        },
-				
 				desc: '',
 			},
 			rules: {
 				name: [{ required: true, message: '事件定义名称不能为空', trigger: 'blur' }],
 				key: [{ required: true, message: '事件定义标识不能为空', trigger: 'blur' }],
 				accessMode: [{ required: true, message: '请选择是否只读', trigger: 'blur' }],
-		
+
 			},
 		});
 
@@ -163,9 +151,9 @@ export default defineComponent({
 			};
 		};
 
-    const seletChange=(val)=>{
-      state.type=val;
-    };
+		const seletChange = (val) => {
+			state.type = val;
+		};
 		// 关闭弹窗
 		const closeDialog = () => {
 			state.isShowDialog = false;
@@ -189,8 +177,8 @@ export default defineComponent({
 						});
 					} else {
 						//添加
-         
-            state.ruleForm.valueType=state.valueType;
+
+						state.ruleForm.valueType = state.valueType;
 						api.model.eventadd(state.ruleForm).then(() => {
 							ElMessage.success('事件定义类型添加成功');
 							closeDialog(); // 关闭弹窗
@@ -203,7 +191,7 @@ export default defineComponent({
 
 		return {
 			openDialog,
-      seletChange,
+			seletChange,
 			closeDialog,
 			onCancel,
 			onSubmit,

+ 1 - 31
src/views/system/assess/component/editFun.vue

@@ -8,22 +8,7 @@
         <el-form-item label="功能定义名称" prop="name">
           <el-input v-model="ruleForm.name" placeholder="请输入功能定义名称" />
         </el-form-item>
-
-
-
-
-
         <el-form-item label="数据类型" prop="valueType">
-
-          <!--    <el-select v-model="ruleForm.valueType" placeholder="请选择数据类型">
-              <el-option
-                v-for="item in typeData"
-                :key="item.key"
-                :label="item.name"
-                :value="item.key"
-              />
-            </el-select> -->
-
           <el-select v-model="ruleForm.valueType" placeholder="请选择数据类型">
             <el-option-group v-for="group in typeData" :key="group" :label="group">
               <el-option v-for="item in group.options" :key="item.value" :label="item.label" :value="item.value" />
@@ -54,8 +39,7 @@
 <script lang="ts">
 import { reactive, toRefs, defineComponent, ref, unref } from 'vue';
 import api from '/@/api/device';
-import uploadVue from '/@/components/upload/index.vue';
-import { ElMessage, UploadProps } from "element-plus";
+import { ElMessage } from "element-plus";
 
 interface RuleFormState {
   id: number;
@@ -73,7 +57,6 @@ interface DicState {
 
 export default defineComponent({
   name: 'deviceEditPro',
-  components: { uploadVue },
   setup(prop, { emit }) {
     const formRef = ref<HTMLElement | null>(null);
 
@@ -81,7 +64,6 @@ export default defineComponent({
       isShowDialog: false,
       typeData: [], // 
 
-
       ruleForm: {
         id: 0,
         name: '',
@@ -109,22 +91,10 @@ export default defineComponent({
       resetForm();
 
       api.product.getDataType({ status: -1 }).then((res: any) => {
-
-
-        // const  datat=Object.values(res.dataType);
-        // datat.forEach((item, index) => {
-
-        // });
-
         state.typeData = res.dataType || [];
-
-
       });
 
       if (row) {
-        // api.dict.getType(row.dictId).then((res:any)=>{
-        //   state.ruleForm = res.data.dictType
-        // }
         state.ruleForm = row;
       }
       state.isShowDialog = true;

+ 1 - 3
src/views/system/assess/component/editTab.vue

@@ -61,8 +61,7 @@
 <script lang="ts">
 import { reactive, toRefs, defineComponent, ref, unref } from 'vue';
 import api from '/@/api/device';
-import uploadVue from '/@/components/upload/index.vue';
-import { ElMessage, UploadProps } from 'element-plus';
+import { ElMessage } from 'element-plus';
 
 interface RuleFormState {
 	id: number;
@@ -80,7 +79,6 @@ interface DicState {
 
 export default defineComponent({
 	name: 'deviceEditPro',
-	components: { uploadVue },
 	setup(prop, { emit }) {
 		const formRef = ref<HTMLElement | null>(null);
 

+ 1 - 1
src/views/system/assess/totalIndex/component/addSign.vue

@@ -146,7 +146,7 @@ export default defineComponent({
 		// 保存数据
 		const onSubmit = async (formEl: FormInstance | undefined) => {
 			if (!formEl) return
-			await formEl.validate((valid, fields) => {
+			await formEl.validate((valid) => {
 				if (valid) {
 					if(state.ruleForm.ranges.length) {
 						let item = state.ruleForm.ranges[state.ruleForm.ranges.length-1]

+ 0 - 8
src/views/system/city/component/edit.vue

@@ -38,14 +38,6 @@ import api from '/@/api/system';
 import datahubApi from '/@/api/datahub';
 import { ElMessage } from 'element-plus';
 import { useStore } from '/@/store/index';
-interface RuleFormState {
-	id: number;
-	parentId: number | string;
-	name: string;
-	code: string;
-	sort: string;
-	status: number;
-}
 
 export default defineComponent({
 	name: 'headStationLoop',

+ 29 - 55
src/views/system/datahub/modeling/component/edit.vue

@@ -3,60 +3,34 @@
 		<el-dialog :title="(ruleForm.id !== 0 ? '修改' : '添加') + '模型'" v-model="isShowDialog" width="769px">
 			<el-form :model="ruleForm" ref="formRef" :rules="rules" size="default" label-width="110px">
 				<el-form-item label="模型标识" prop="key">
-					<el-input v-model="ruleForm.key" placeholder="请输入模型名称"  :disabled="ruleForm.id"/>
+					<el-input v-model="ruleForm.key" placeholder="请输入模型名称" :disabled="ruleForm.id" />
 				</el-form-item>
 				<el-form-item label="模型名称" prop="name">
 					<el-input v-model="ruleForm.name" placeholder="请输入模型名称" />
 				</el-form-item>
 
 				<el-form-item label="模型类型" prop="type">
-					<el-select v-model="ruleForm.type"  placeholder="请选择模型类型" class="w100" >
+					<el-select v-model="ruleForm.type" placeholder="请选择模型类型" class="w100">
 						<el-option v-for="item in datahub_model_type" :key="item.value" :label="item.label" :value="item.value" />
 					</el-select>
 				</el-form-item>
-
-				<!-- <el-form-item label="更新时间" prop="interval">
-					<el-input v-model="ruleForm.interval" placeholder="请输入更新时间" class="w-35" />
-					<el-select v-model="ruleForm.intervalUnit" placeholder="请选择单位">
-						<el-option v-for="item in unitData" :key="item.value" :label="item.label" :value="item.value" />
-					</el-select>
-				</el-form-item> -->
-
 				<el-form-item label="定时请求">
-			
+
 					<div style="display:flex">
-							<el-input v-model="ruleForm.cronExpression" placeholder="请输入cron表达式" />
-							<el-button type="success"  @click="showCron('ruleForm')" style="margin-left: 5px;">设置</el-button>
-
-						</div>
-							<!-- <el-input v-model="ruleForm.cronExpression" placeholder="请输入cron表达式" /> -->
-							<!-- <ul style="list-style: none;">
-								<li><el-icon><ele-WarningFilled /></el-icon> */5 * * * * ? : 每隔5秒执行一次</li>
-								<li><el-icon><ele-WarningFilled /></el-icon> 20 */1 * * * ? : 每隔1分钟执行一次</li>
-								<li><el-icon><ele-WarningFilled /></el-icon> 30 0 23 * * ? : 每天23点执行一次</li>
-								<li><el-icon><ele-WarningFilled /></el-icon> 0 0 1 * * ? : 每天凌晨1点执行一次</li>
-								<li><el-icon><ele-WarningFilled /></el-icon> 0 0 1 1 * ? : 每月1号凌晨1点执行一次</li>
-							</ul> -->
-						</el-form-item>
+						<el-input v-model="ruleForm.cronExpression" placeholder="请输入cron表达式" />
+						<el-button type="success" @click="showCron('ruleForm')" style="margin-left: 5px;">设置</el-button>
+					</div>
+				</el-form-item>
 
 				<el-form-item label="描述" prop="desc">
 					<el-input v-model="ruleForm.desc" type="textarea" placeholder="请输入内容"></el-input>
 				</el-form-item>
 
 				<el-form-item label="单元类型" prop="busiTypes">
-					<el-select v-model="ruleForm.busiTypes" multiple placeholder="请选择单元类型" class="w100" >
+					<el-select v-model="ruleForm.busiTypes" multiple placeholder="请选择单元类型" class="w100">
 						<el-option v-for="item in zidianData" :key="item.key" :label="item.value" :value="item.key" />
 					</el-select>
 				</el-form-item>
-
-				<!-- <el-form-item label="单元数据" prop="busiId">
-					<el-cascader :options="cityData" :props="{ checkStrictly: true,emitPath: false, value: 'id', label: 'name' }" placeholder="请选择单元数据" clearable class="w100" v-model="ruleForm.busiId">
-							<template #default="{ node, data }">
-							<span>{{ data.name }}</span>
-							<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
-							</template>
-             	 </el-cascader>
-				</el-form-item> -->
 			</el-form>
 			<template #footer>
 				<span class="dialog-footer">
@@ -73,7 +47,7 @@
 </template>
 
 <script lang="ts">
-import { reactive, toRefs, defineComponent, ref, unref,getCurrentInstance } from 'vue';
+import { reactive, toRefs, defineComponent, ref, unref, getCurrentInstance } from 'vue';
 import api from '/@/api/datahub';
 import { ElMessage } from 'element-plus';
 import vue3cron from '/@/components/vue3cron/vue3cron.vue';
@@ -98,15 +72,15 @@ export default defineComponent({
 
 	setup(prop, { emit }) {
 		const formRef = ref<HTMLElement | null>(null);
-			const { proxy } = getCurrentInstance() as any;
+		const { proxy } = getCurrentInstance() as any;
 
 		const { datahub_model_type } = proxy.useDict('datahub_model_type');
 		const state = reactive<DicState>({
 			isShowDialog: false,
-			zidianData:[],
-			cityData:[],
-			cronShow:false,
-			crontype:'',
+			zidianData: [],
+			cityData: [],
+			cronShow: false,
+			crontype: '',
 			unitData: [
 				{
 					label: '秒',
@@ -129,7 +103,7 @@ export default defineComponent({
 				id: 0,
 				name: '',
 				key: '',
-				busiTypes:[],
+				busiTypes: [],
 				desc: '',
 				type: '',
 			},
@@ -144,19 +118,19 @@ export default defineComponent({
 		// 打开弹窗
 		const openDialog = (row: RuleFormState | null) => {
 			resetForm();
-			api.template.getDictData({DictType:'busi_types'}).then((res: any) => {
+			api.template.getDictData({ DictType: 'busi_types' }).then((res: any) => {
 				state.zidianData = res.values;
-				
+
 			});
-			api.template.cityTree({status:1}).then((res: any) => {
+			api.template.cityTree({ status: 1 }).then((res: any) => {
 				state.cityData = res;
 			});
 
 			if (row) {
-				
+
 				state.ruleForm = row;
-				if(row.dataTemplateBusi){
-					state.ruleForm.busiTypes=row.dataTemplateBusi.map(val => {
+				if (row.dataTemplateBusi) {
+					state.ruleForm.busiTypes = row.dataTemplateBusi.map(val => {
 						return val.busiTypes.toString();
 					})
 				}
@@ -168,7 +142,7 @@ export default defineComponent({
 				id: 0,
 				name: '',
 				key: '',
-				busiTypes:[],
+				busiTypes: [],
 				desc: '',
 				type: '',
 			};
@@ -194,7 +168,7 @@ export default defineComponent({
 
 					if (state.ruleForm.id !== 0) {
 						//修改
-						
+
 						api.template.edit(state.ruleForm).then(() => {
 							ElMessage.success('模型类型修改成功');
 							closeDialog(); // 关闭弹窗
@@ -212,15 +186,15 @@ export default defineComponent({
 			});
 		};
 		const handlelisten = (e) => {
-			state.ruleForm.cronExpression=e.cron
+			state.ruleForm.cronExpression = e.cron
 		};
-		const showCron=(type)=>{
-				state.crontype=type
-				state.cronShow=true;
+		const showCron = (type) => {
+			state.crontype = type
+			state.cronShow = true;
 
 		};
-		const cronclose=()=>{
-			state.cronShow=false;
+		const cronclose = () => {
+			state.cronShow = false;
 		}
 
 		return {

+ 0 - 1
src/views/system/datahub/modeling/component/relation.vue

@@ -37,7 +37,6 @@
 import { reactive, toRefs, defineComponent, ref, unref } from 'vue';
 import api from '/@/api/datahub';
 import { ElMessage } from 'element-plus';
-import { stat } from 'fs';
 
 interface RuleFormState {
 	id?: number;

+ 1 - 10
src/views/system/datahub/source/component/list.vue

@@ -16,7 +16,7 @@
 			</template>
 
 			<el-table :data="tableData.data" style="width: 100%" v-loading="tableData.loading">
-				<el-table-column v-for="(item, index) in jData" :key="item" :label="item" :prop="item" show-overflow-tooltip align="center" style="min-width:200px">
+				<el-table-column v-for="(item) in jData" :key="item" :label="item" :prop="item" show-overflow-tooltip align="center" style="min-width:200px">
 					<template #header>
 						<div>
 							{{ item }}
@@ -43,15 +43,6 @@ interface DicState {
 	isShowDialog: boolean;
 }
 
-// 定义接口来定义对象的类型
-interface TableDataRow {
-	id: number;
-	name: string;
-	key: string;
-
-	createBy: string;
-}
-
 export default defineComponent({
 	name: 'deviceEditPro',
 	setup() {

+ 1 - 1
src/views/system/datahub/source/detail.vue

@@ -111,7 +111,7 @@
 
 								<div class="content-f" v-for="(item, index) in requestParams" :key="index" style="    border: 1px solid #d9d9d9; padding: 10px;margin-bottom: 10px;">
 
-									<div v-for="(aa) in item" :key="inbbdex" :key="aa.type">
+									<div v-for="(aa) in item" :key="aa.type">
 										<el-form-item label="参数类型:">
 											{{ aa.type }}
 										</el-form-item>

+ 0 - 1
src/views/system/manage/blacklist/component/editPro.vue

@@ -34,7 +34,6 @@
 <script lang="ts">
 import { reactive, toRefs, defineComponent, ref, unref, getCurrentInstance } from 'vue';
 import api from '/@/api/system';
-import uploadVue from '/@/components/upload/index.vue';
 import { ElMessage } from "element-plus";
 import getOrigin from '/@/utils/origin'