Răsfoiți Sursa

Merge branch 'master' into professional2

yanglzh 1 an în urmă
părinte
comite
b4ef363f50
30 a modificat fișierele cu 1829 adăugiri și 1848 ștergeri
  1. 1 1
      src/theme/app.scss
  2. 971 960
      src/theme/fast.scss
  3. 32 32
      src/views/iot/alarm/log/index.vue
  4. 29 30
      src/views/iot/certificate/index.vue
  5. 43 41
      src/views/iot/configuration/list/index.vue
  6. 34 32
      src/views/iot/configuration/screen/index.vue
  7. 3 3
      src/views/iot/device-tree/tree/index.vue
  8. 22 24
      src/views/iot/device/category/index.vue
  9. 49 47
      src/views/iot/device/channel/index.vue
  10. 2 2
      src/views/iot/device/instance/index.vue
  11. 45 47
      src/views/iot/device/product/index.vue
  12. 1 1
      src/views/iot/device/template/detail.vue
  13. 52 50
      src/views/iot/device/template/index.vue
  14. 23 23
      src/views/iot/ice104/device/index.vue
  15. 23 23
      src/views/iot/ice104/template/index.vue
  16. 40 42
      src/views/iot/network/server/component/list.vue
  17. 24 25
      src/views/iot/network/server/index.vue
  18. 36 38
      src/views/iot/network/tunnel/component/list.vue
  19. 24 25
      src/views/iot/network/tunnel/index.vue
  20. 50 55
      src/views/iot/noticeservices/config/index.vue
  21. 26 30
      src/views/iot/noticeservices/log/index.vue
  22. 1 1
      src/views/iot/operate/remoteconf/index.vue
  23. 31 33
      src/views/iot/ota-update/module/index.vue
  24. 38 47
      src/views/iot/ota-update/update/index.vue
  25. 39 45
      src/views/iot/property/attribute/index.vue
  26. 39 41
      src/views/iot/property/dossier/index.vue
  27. 27 27
      src/views/iot/rule-engine/index.vue
  28. 27 27
      src/views/iot/rule-engine/send.vue
  29. 26 27
      src/views/iot/scene/list/index.vue
  30. 71 69
      src/views/iot/scene/manage/index.vue

+ 1 - 1
src/theme/app.scss

@@ -127,7 +127,7 @@ body,
 	}
 	.layout-scrollbar {
 		@extend .el-scrollbar;
-		padding: 15px;
+		padding: 15px 15px 0;
 	}
 	.layout-mian-height-50 {
 		height: calc(100vh - 50px);

+ 971 - 960
src/theme/fast.scss

@@ -1,515 +1,526 @@
 // 全局页面,适配双色
 .page {
-  height    : 100%;
-  overflow-y: auto;
-  background: var(--el-color-white);
-  color     : var(--el-text-color-primary);
-  border    : 1px solid var(--next-border-color-light);
-  padding   : 20px;
-
-  &:hover {
-    box-shadow: 0 2px 12px var(--next-color-dark-hover);
-    transition: all ease 0.3s;
-  }
+	height: 100%;
+	overflow-y: auto;
+	background: var(--el-color-white);
+	color: var(--el-text-color-primary);
+	border: 1px solid var(--next-border-color-light);
+	padding: 20px;
+
+	&:hover {
+		box-shadow: 0 2px 12px var(--next-color-dark-hover);
+		transition: all ease 0.3s;
+	}
+	> .el-card {
+		height: 100%;
+
+		> .el-card__body {
+			height: 100%;
+			display: flex;
+			flex-direction: column;
+			overflow-x: hidden;
+			overflow-y: auto;
+		}
+	}
 }
 
 .page-full {
-  height   : 100%;
-  display  : flex;
-  flex-flow: column nowrap;
+	height: 100%;
+	display: flex;
+	flex-flow: column nowrap;
 }
 
 .page-full-part {
-  flex      : 1;
-  overflow-y: auto;
-  overflow-x: hidden;
+	flex: 1;
+	overflow-y: auto;
+	overflow-x: hidden;
 }
 
 .full-part {
-  flex      : 1;
-  overflow-y: auto;
+	flex: 1;
+	overflow-y: auto;
 }
 
 image {
-  display: block;
+	display: block;
 }
 
 .radius-big {
-  border-radius: 32px;
+	border-radius: 32px;
 }
 
 .radius {
-  border-radius: 16px;
+	border-radius: 16px;
 }
 
 .color-fff {
-  color: #fff;
+	color: #fff;
 }
 
 .color-primary {
-  color: var(--main-color);
+	color: var(--main-color);
 }
 
 .bg-fff {
-  background-color: #fff;
+	background-color: #fff;
 }
 
 .box34 {
-  width : 34px;
-  height: 34px;
+	width: 34px;
+	height: 34px;
 }
 
 .box40 {
-  width : 40px;
-  height: 40px;
+	width: 40px;
+	height: 40px;
 }
 
 .tl {
-  text-decoration: underline;
+	text-decoration: underline;
 }
 
 .flex-row {
-  display        : flex;
-  justify-content: space-between;
-  align-items    : center;
-  overflow       : hidden;
+	display: flex;
+	justify-content: space-between;
+	align-items: center;
+	overflow: hidden;
 }
 
 .flex-center {
-  display        : flex;
-  justify-content: center;
-  align-items    : center;
+	display: flex;
+	justify-content: center;
+	align-items: center;
 }
 
 .flex-around {
-  display        : flex;
-  justify-content: space-around;
-  align-items    : center;
-  overflow       : hidden;
+	display: flex;
+	justify-content: space-around;
+	align-items: center;
+	overflow: hidden;
 }
 
 .flex-column {
-  display        : flex;
-  flex-flow      : column nowrap;
-  justify-content: space-between;
+	display: flex;
+	flex-flow: column nowrap;
+	justify-content: space-between;
 }
 
 .flex {
-  display    : flex;
-  align-items: center;
+	display: flex;
+	align-items: center;
 }
 
 .flex1 {
-  flex    : 1;
-  overflow: hidden;
+	flex: 1;
+	overflow: hidden;
 }
 
 .flex2 {
-  flex    : 2;
-  overflow: hidden;
+	flex: 2;
+	overflow: hidden;
 }
 
 .flex1 {
-  flex: 1 !important;
+	flex: 1 !important;
 }
 
 .flex2 {
-  flex: 2 !important;
+	flex: 2 !important;
 }
 
 .flex3 {
-  flex: 3 !important;
+	flex: 3 !important;
 }
 
 .flex4 {
-  flex: 4 !important;
+	flex: 4 !important;
 }
 
 .bg-white {
-  background-color: #fff;
+	background-color: #fff;
 }
 
 .bg-primary {
-  background-color: var(--main-color);
-  border-color    : var(--main-color);
+	background-color: var(--main-color);
+	border-color: var(--main-color);
 }
 
 .absolute {
-  position: absolute;
-  width   : 100%;
-  left    : 0;
-  top     : 0;
+	position: absolute;
+	width: 100%;
+	left: 0;
+	top: 0;
 }
 
 .z-index1 {
-  z-index: 1;
+	z-index: 1;
 }
 
 .z-index10 {
-  z-index: 10;
+	z-index: 10;
 }
 
 .color-black,
 .color-deep {
-  color: #000;
+	color: #000;
 }
 
 .color-white {
-  color: #fff;
+	color: #fff;
 }
 
 .color-444 {
-  color: #444;
+	color: #444;
 }
 
 .color-555 {
-  color: #555;
+	color: #555;
 }
 
 .color-666 {
-  color: #666;
+	color: #666;
 }
 
 .color-777 {
-  color: #777;
+	color: #777;
 }
 
 .color-888 {
-  color: #888;
+	color: #888;
 }
 
 .color-999 {
-  color: #999;
+	color: #999;
 }
 
 .color-aaa {
-  color: #aaa;
+	color: #aaa;
 }
 
 .color-ccc {
-  color: #ccc;
+	color: #ccc;
 }
 
 .color-333 {
-  color: #333;
+	color: #333;
 }
 
 .color-danger {
-  color: var(--color-danger);
+	color: var(--color-danger);
 }
 
 .color-green {
-  color: var(--color-green);
+	color: var(--color-green);
 }
 
 .color-light {
-  color: #9f9f9f;
+	color: #9f9f9f;
 }
 
 .color-mid {
-  color: var(--color-base-85);
+	color: var(--color-base-85);
 }
 
 .bg-light {
-  background-color: #f9f9f9;
+	background-color: #f9f9f9;
 }
 
 .tr {
-  text-align: right;
+	text-align: right;
 }
 
 .w-full {
-  width: 100% !important;
+	width: 100% !important;
 }
 
 .h-full {
-  height: 100% !important;
+	height: 100% !important;
 }
 
 .h-full-h {
-  height    : 100%;
-  max-height: 100%;
-  overflow  : hidden;
+	height: 100%;
+	max-height: 100%;
+	overflow: hidden;
 }
 
 .flex-column {
-  display  : flex;
-  flex-flow: column nowrap;
+	display: flex;
+	flex-flow: column nowrap;
 }
 
 .flex-end {
-  display        : flex;
-  align-items    : center;
-  justify-content: flex-end;
+	display: flex;
+	align-items: center;
+	justify-content: flex-end;
 }
 
 .flex-column-part {
-  flex      : 1;
-  overflow-y: auto;
+	flex: 1;
+	overflow-y: auto;
 }
 
 .justify-between {
-  justify-content: space-between;
+	justify-content: space-between;
 }
 
 .justify-around {
-  justify-content: space-around;
+	justify-content: space-around;
 }
 
 .oh {
-  overflow: hidden;
+	overflow: hidden;
 }
 
 .w-30 {
-  width  : 30%;
-  display: block;
+	width: 30%;
+	display: block;
 }
 
 .w-35 {
-  width    : 35%;
-  min-width: 35%;
-  display  : block;
+	width: 35%;
+	min-width: 35%;
+	display: block;
 }
 
 /* 按钮 */
 
 .btn-plain {
-  background: #100f15 !important;
-  color     : var(--primary) !important;
-  border    : 1px solid #f2a900;
+	background: #100f15 !important;
+	color: var(--primary) !important;
+	border: 1px solid #f2a900;
 }
 
 .btn-cancel {
-  background    : #3b3a3f !important;
-  color         : #57565b !important;
-  pointer-events: none;
+	background: #3b3a3f !important;
+	color: #57565b !important;
+	pointer-events: none;
 }
 
 .btn[disabled] {
-  background    : #666 !important;
-  color         : #ccc !important;
-  pointer-events: none;
+	background: #666 !important;
+	color: #ccc !important;
+	pointer-events: none;
 }
 
 .small-btn {
-  width          : 65px;
-  height         : 24px;
-  border-radius  : 2px;
-  background     : #43434d;
-  color          : #fff;
-  font-size      : 14px;
-  display        : flex;
-  align-items    : center;
-  justify-content: center;
+	width: 65px;
+	height: 24px;
+	border-radius: 2px;
+	background: #43434d;
+	color: #fff;
+	font-size: 14px;
+	display: flex;
+	align-items: center;
+	justify-content: center;
 }
 
 .btn {
-  text-align   : center;
-  border-radius: 4px;
-  height       : 40px;
-  line-height  : 40px;
-  font-size    : 16px;
-  display      : inline-block;
-  padding      : 0 1.6em;
-  cursor       : pointer;
+	text-align: center;
+	border-radius: 4px;
+	height: 40px;
+	line-height: 40px;
+	font-size: 16px;
+	display: inline-block;
+	padding: 0 1.6em;
+	cursor: pointer;
 }
 
 .pointer {
-  cursor: pointer;
+	cursor: pointer;
 }
 
 .normal {
-  font-weight: 400;
+	font-weight: 400;
 }
 
 .bold {
-  font-weight: 700;
+	font-weight: 700;
 }
 
 .extrabold {
-  font-weight: 800;
+	font-weight: 800;
 }
 
 .medium {
-  font-weight: 500;
+	font-weight: 500;
 }
 
 .semibold {
-  font-weight: 600;
+	font-weight: 600;
 }
 
 .line3 {
-  line-height: 3;
+	line-height: 3;
 }
 
 .line2 {
-  line-height: 2;
+	line-height: 2;
 }
 
 .line1 {
-  line-height: 1;
+	line-height: 1;
 }
 
 .line16 {
-  line-height: 1.6;
+	line-height: 1.6;
 }
 
 .line14 {
-  line-height: 1.4;
+	line-height: 1.4;
 }
 
 .line12 {
-  line-height: 1.2;
+	line-height: 1.2;
 }
 
 .line18 {
-  line-height: 1.8;
+	line-height: 1.8;
 }
 
 .tc {
-  text-align: center;
+	text-align: center;
 }
 
 .m-auto {
-  margin: 0 auto;
+	margin: 0 auto;
 }
 
 /* 字体 */
 .font-50 {
-  font-size: 50px;
+	font-size: 50px;
 }
 
 .font-48 {
-  font-size: 48px;
+	font-size: 48px;
 }
 
 .font-46 {
-  font-size: 46px;
+	font-size: 46px;
 }
 
 .font-40 {
-  font-size: 40px;
+	font-size: 40px;
 }
 
 .font-38 {
-  font-size: 38px;
+	font-size: 38px;
 }
 
 .font-36 {
-  font-size: 36px;
+	font-size: 36px;
 }
 
 .font-34 {
-  font-size: 34px;
+	font-size: 34px;
 }
 
 .font-32 {
-  font-size: 32px;
+	font-size: 32px;
 }
 
 .font-28 {
-  font-size: 28px;
+	font-size: 28px;
 }
 
 .font-26 {
-  font-size: 26px;
+	font-size: 26px;
 }
 
 .font-24 {
-  font-size: 24px;
+	font-size: 24px;
 }
 
 .font-underline {
-  border-bottom : 1px dashed var(--primary);
-  padding-bottom: 2px;
+	border-bottom: 1px dashed var(--primary);
+	padding-bottom: 2px;
 }
 
 .font-22 {
-  font-size: 22px;
+	font-size: 22px;
 }
 
 .font-20 {
-  font-size: 20px;
+	font-size: 20px;
 }
 
 .font-18 {
-  font-size: 18px;
+	font-size: 18px;
 }
 
 .font-17 {
-  font-size: 17px;
+	font-size: 17px;
 }
 
 .font-16 {
-  font-size: 16px;
+	font-size: 16px;
 }
 
 .font-15 {
-  font-size: 15px;
+	font-size: 15px;
 }
 
 .font-14 {
-  font-size: 14px !important;
+	font-size: 14px !important;
 }
 
 .font-13 {
-  font-size: 13px;
+	font-size: 13px;
 }
 
 .font-12 {
-  font-size: 12px !important;
+	font-size: 12px !important;
 }
 
 .font-11 {
-  font-size: 11px;
+	font-size: 11px;
 }
 
 .font-10 {
-  font-size: 10px;
+	font-size: 10px;
 }
 
 .font-7 {
-  font-size: 7px;
+	font-size: 7px;
 }
 
 .box20 {
-  width : 20px;
-  height: 20px;
+	width: 20px;
+	height: 20px;
 }
 
 .box22 {
-  width : 22px;
-  height: 22px;
+	width: 22px;
+	height: 22px;
 }
 
 .box24 {
-  width : 24px;
-  height: 24px;
+	width: 24px;
+	height: 24px;
 }
 
 .box80 {
-  width : 80px;
-  height: 80px;
+	width: 80px;
+	height: 80px;
 }
 
 .box120 {
-  width : 120px;
-  height: 120px;
+	width: 120px;
+	height: 120px;
 }
 
 .box160 {
-  width : 160px;
-  height: 160px;
+	width: 160px;
+	height: 160px;
 }
 
 .box168 {
-  width : 168px;
-  height: 168px;
+	width: 168px;
+	height: 168px;
 }
 
 .box200 {
-  width : 200px;
-  height: 200px;
+	width: 200px;
+	height: 200px;
 }
 
 /**
@@ -520,87 +531,87 @@ for (let i = 0; i < 21; i++) {
 console.log(list.join('\n'))
 */
 .gap-0 {
-  gap: 0rem;
+	gap: 0rem;
 }
 
 .gap-1 {
-  gap: 0.25rem;
+	gap: 0.25rem;
 }
 
 .gap-2 {
-  gap: 0.5rem;
+	gap: 0.5rem;
 }
 
 .gap-3 {
-  gap: 0.75rem;
+	gap: 0.75rem;
 }
 
 .gap-4 {
-  gap: 1rem;
+	gap: 1rem;
 }
 
 .gap-5 {
-  gap: 1.25rem;
+	gap: 1.25rem;
 }
 
 .gap-6 {
-  gap: 1.5rem;
+	gap: 1.5rem;
 }
 
 .gap-7 {
-  gap: 1.75rem;
+	gap: 1.75rem;
 }
 
 .gap-8 {
-  gap: 2rem;
+	gap: 2rem;
 }
 
 .gap-9 {
-  gap: 2.25rem;
+	gap: 2.25rem;
 }
 
 .gap-10 {
-  gap: 2.5rem;
+	gap: 2.5rem;
 }
 
 .gap-11 {
-  gap: 2.75rem;
+	gap: 2.75rem;
 }
 
 .gap-12 {
-  gap: 3rem;
+	gap: 3rem;
 }
 
 .gap-13 {
-  gap: 3.25rem;
+	gap: 3.25rem;
 }
 
 .gap-14 {
-  gap: 3.5rem;
+	gap: 3.5rem;
 }
 
 .gap-15 {
-  gap: 3.75rem;
+	gap: 3.75rem;
 }
 
 .gap-16 {
-  gap: 4rem;
+	gap: 4rem;
 }
 
 .gap-17 {
-  gap: 4.25rem;
+	gap: 4.25rem;
 }
 
 .gap-18 {
-  gap: 4.5rem;
+	gap: 4.5rem;
 }
 
 .gap-19 {
-  gap: 4.75rem;
+	gap: 4.75rem;
 }
 
 .gap-20 {
-  gap: 5rem;
+	gap: 5rem;
 }
 
 /*
@@ -639,2521 +650,2521 @@ for (let i = 0; i < 21; i++) {
 console.log(list.join('\n'))
 */
 .p-0 {
-  padding: 0rem;
+	padding: 0rem;
 }
 
 .px-0 {
-  padding-left : 0rem;
-  padding-right: 0rem;
+	padding-left: 0rem;
+	padding-right: 0rem;
 }
 
 .py-0 {
-  padding-top   : 0rem;
-  padding-bottom: 0rem;
+	padding-top: 0rem;
+	padding-bottom: 0rem;
 }
 
 .pr-0 {
-  padding-right: 0rem;
+	padding-right: 0rem;
 }
 
 .pl-0 {
-  padding-left: 0rem;
+	padding-left: 0rem;
 }
 
 .pt-0 {
-  padding-top: 0rem;
+	padding-top: 0rem;
 }
 
 .pb-0 {
-  padding-bottom: 0rem;
+	padding-bottom: 0rem;
 }
 
 .Ip-0 {
-  padding: 0rem !important;
+	padding: 0rem !important;
 }
 
 .Ipx-0 {
-  padding-left : 0rem !important;
-  padding-right: 0rem !important;
+	padding-left: 0rem !important;
+	padding-right: 0rem !important;
 }
 
 .Ipy-0 {
-  padding-top   : 0rem !important;
-  padding-bottom: 0rem !important;
+	padding-top: 0rem !important;
+	padding-bottom: 0rem !important;
 }
 
 .Ipr-0 {
-  padding-right: 0rem !important;
+	padding-right: 0rem !important;
 }
 
 .Ipl-0 {
-  padding-left: 0rem !important;
+	padding-left: 0rem !important;
 }
 
 .Ipt-0 {
-  padding-top: 0rem !important;
+	padding-top: 0rem !important;
 }
 
 .Ipb-0 {
-  padding-bottom: 0rem !important;
+	padding-bottom: 0rem !important;
 }
 
 .m-0 {
-  margin: 0rem;
+	margin: 0rem;
 }
 
 .mx-0 {
-  margin-left : 0rem;
-  margin-right: 0rem;
+	margin-left: 0rem;
+	margin-right: 0rem;
 }
 
 .my-0 {
-  margin-top   : 0rem;
-  margin-bottom: 0rem;
+	margin-top: 0rem;
+	margin-bottom: 0rem;
 }
 
 .mr-0 {
-  margin-right: 0rem;
+	margin-right: 0rem;
 }
 
 .ml-0 {
-  margin-left: 0rem;
+	margin-left: 0rem;
 }
 
 .mt-0 {
-  margin-top: 0rem;
+	margin-top: 0rem;
 }
 
 .mb-0 {
-  margin-bottom: 0rem;
+	margin-bottom: 0rem;
 }
 
 .Im-0 {
-  margin: 0rem !important;
+	margin: 0rem !important;
 }
 
 .Imx-0 {
-  margin-left : 0rem !important;
-  margin-right: 0rem !important;
+	margin-left: 0rem !important;
+	margin-right: 0rem !important;
 }
 
 .Imy-0 {
-  margin-top   : 0rem !important;
-  margin-bottom: 0rem !important;
+	margin-top: 0rem !important;
+	margin-bottom: 0rem !important;
 }
 
 .Imr-0 {
-  margin-right: 0rem !important;
+	margin-right: 0rem !important;
 }
 
 .Iml-0 {
-  margin-left: 0rem !important;
+	margin-left: 0rem !important;
 }
 
 .Imt-0 {
-  margin-top: 0rem !important;
+	margin-top: 0rem !important;
 }
 
 .Imb-0 {
-  margin-bottom: 0rem !important;
+	margin-bottom: 0rem !important;
 }
 
 .p-1 {
-  padding: 0.25rem;
+	padding: 0.25rem;
 }
 
 .px-1 {
-  padding-left : 0.25rem;
-  padding-right: 0.25rem;
+	padding-left: 0.25rem;
+	padding-right: 0.25rem;
 }
 
 .py-1 {
-  padding-top   : 0.25rem;
-  padding-bottom: 0.25rem;
+	padding-top: 0.25rem;
+	padding-bottom: 0.25rem;
 }
 
 .pr-1 {
-  padding-right: 0.25rem;
+	padding-right: 0.25rem;
 }
 
 .pl-1 {
-  padding-left: 0.25rem;
+	padding-left: 0.25rem;
 }
 
 .pt-1 {
-  padding-top: 0.25rem;
+	padding-top: 0.25rem;
 }
 
 .pb-1 {
-  padding-bottom: 0.25rem;
+	padding-bottom: 0.25rem;
 }
 
 .Ip-1 {
-  padding: 0.25rem !important;
+	padding: 0.25rem !important;
 }
 
 .Ipx-1 {
-  padding-left : 0.25rem !important;
-  padding-right: 0.25rem !important;
+	padding-left: 0.25rem !important;
+	padding-right: 0.25rem !important;
 }
 
 .Ipy-1 {
-  padding-top   : 0.25rem !important;
-  padding-bottom: 0.25rem !important;
+	padding-top: 0.25rem !important;
+	padding-bottom: 0.25rem !important;
 }
 
 .Ipr-1 {
-  padding-right: 0.25rem !important;
+	padding-right: 0.25rem !important;
 }
 
 .Ipl-1 {
-  padding-left: 0.25rem !important;
+	padding-left: 0.25rem !important;
 }
 
 .Ipt-1 {
-  padding-top: 0.25rem !important;
+	padding-top: 0.25rem !important;
 }
 
 .Ipb-1 {
-  padding-bottom: 0.25rem !important;
+	padding-bottom: 0.25rem !important;
 }
 
 .m-1 {
-  margin: 0.25rem;
+	margin: 0.25rem;
 }
 
 .mx-1 {
-  margin-left : 0.25rem;
-  margin-right: 0.25rem;
+	margin-left: 0.25rem;
+	margin-right: 0.25rem;
 }
 
 .my-1 {
-  margin-top   : 0.25rem;
-  margin-bottom: 0.25rem;
+	margin-top: 0.25rem;
+	margin-bottom: 0.25rem;
 }
 
 .mr-1 {
-  margin-right: 0.25rem;
+	margin-right: 0.25rem;
 }
 
 .ml-1 {
-  margin-left: 0.25rem;
+	margin-left: 0.25rem;
 }
 
 .mt-1 {
-  margin-top: 0.25rem;
+	margin-top: 0.25rem;
 }
 
 .mb-1 {
-  margin-bottom: 0.25rem;
+	margin-bottom: 0.25rem;
 }
 
 .Im-1 {
-  margin: 0.25rem !important;
+	margin: 0.25rem !important;
 }
 
 .Imx-1 {
-  margin-left : 0.25rem !important;
-  margin-right: 0.25rem !important;
+	margin-left: 0.25rem !important;
+	margin-right: 0.25rem !important;
 }
 
 .Imy-1 {
-  margin-top   : 0.25rem !important;
-  margin-bottom: 0.25rem !important;
+	margin-top: 0.25rem !important;
+	margin-bottom: 0.25rem !important;
 }
 
 .Imr-1 {
-  margin-right: 0.25rem !important;
+	margin-right: 0.25rem !important;
 }
 
 .Iml-1 {
-  margin-left: 0.25rem !important;
+	margin-left: 0.25rem !important;
 }
 
 .Imt-1 {
-  margin-top: 0.25rem !important;
+	margin-top: 0.25rem !important;
 }
 
 .Imb-1 {
-  margin-bottom: 0.25rem !important;
+	margin-bottom: 0.25rem !important;
 }
 
 .p-2 {
-  padding: 0.5rem;
+	padding: 0.5rem;
 }
 
 .px-2 {
-  padding-left : 0.5rem;
-  padding-right: 0.5rem;
+	padding-left: 0.5rem;
+	padding-right: 0.5rem;
 }
 
 .py-2 {
-  padding-top   : 0.5rem;
-  padding-bottom: 0.5rem;
+	padding-top: 0.5rem;
+	padding-bottom: 0.5rem;
 }
 
 .pr-2 {
-  padding-right: 0.5rem;
+	padding-right: 0.5rem;
 }
 
 .pl-2 {
-  padding-left: 0.5rem;
+	padding-left: 0.5rem;
 }
 
 .pt-2 {
-  padding-top: 0.5rem;
+	padding-top: 0.5rem;
 }
 
 .pb-2 {
-  padding-bottom: 0.5rem;
+	padding-bottom: 0.5rem;
 }
 
 .Ip-2 {
-  padding: 0.5rem !important;
+	padding: 0.5rem !important;
 }
 
 .Ipx-2 {
-  padding-left : 0.5rem !important;
-  padding-right: 0.5rem !important;
+	padding-left: 0.5rem !important;
+	padding-right: 0.5rem !important;
 }
 
 .Ipy-2 {
-  padding-top   : 0.5rem !important;
-  padding-bottom: 0.5rem !important;
+	padding-top: 0.5rem !important;
+	padding-bottom: 0.5rem !important;
 }
 
 .Ipr-2 {
-  padding-right: 0.5rem !important;
+	padding-right: 0.5rem !important;
 }
 
 .Ipl-2 {
-  padding-left: 0.5rem !important;
+	padding-left: 0.5rem !important;
 }
 
 .Ipt-2 {
-  padding-top: 0.5rem !important;
+	padding-top: 0.5rem !important;
 }
 
 .Ipb-2 {
-  padding-bottom: 0.5rem !important;
+	padding-bottom: 0.5rem !important;
 }
 
 .m-2 {
-  margin: 0.5rem;
+	margin: 0.5rem;
 }
 
 .mx-2 {
-  margin-left : 0.5rem;
-  margin-right: 0.5rem;
+	margin-left: 0.5rem;
+	margin-right: 0.5rem;
 }
 
 .my-2 {
-  margin-top   : 0.5rem;
-  margin-bottom: 0.5rem;
+	margin-top: 0.5rem;
+	margin-bottom: 0.5rem;
 }
 
 .mr-2 {
-  margin-right: 0.5rem;
+	margin-right: 0.5rem;
 }
 
 .ml-2 {
-  margin-left: 0.5rem;
+	margin-left: 0.5rem;
 }
 
 .mt-2 {
-  margin-top: 0.5rem;
+	margin-top: 0.5rem;
 }
 
 .mb-2 {
-  margin-bottom: 0.5rem;
+	margin-bottom: 0.5rem;
 }
 
 .Im-2 {
-  margin: 0.5rem !important;
+	margin: 0.5rem !important;
 }
 
 .Imx-2 {
-  margin-left : 0.5rem !important;
-  margin-right: 0.5rem !important;
+	margin-left: 0.5rem !important;
+	margin-right: 0.5rem !important;
 }
 
 .Imy-2 {
-  margin-top   : 0.5rem !important;
-  margin-bottom: 0.5rem !important;
+	margin-top: 0.5rem !important;
+	margin-bottom: 0.5rem !important;
 }
 
 .Imr-2 {
-  margin-right: 0.5rem !important;
+	margin-right: 0.5rem !important;
 }
 
 .Iml-2 {
-  margin-left: 0.5rem !important;
+	margin-left: 0.5rem !important;
 }
 
 .Imt-2 {
-  margin-top: 0.5rem !important;
+	margin-top: 0.5rem !important;
 }
 
 .Imb-2 {
-  margin-bottom: 0.5rem !important;
+	margin-bottom: 0.5rem !important;
 }
 
 .p-3 {
-  padding: 0.75rem;
+	padding: 0.75rem;
 }
 
 .px-3 {
-  padding-left : 0.75rem;
-  padding-right: 0.75rem;
+	padding-left: 0.75rem;
+	padding-right: 0.75rem;
 }
 
 .py-3 {
-  padding-top   : 0.75rem;
-  padding-bottom: 0.75rem;
+	padding-top: 0.75rem;
+	padding-bottom: 0.75rem;
 }
 
 .pr-3 {
-  padding-right: 0.75rem;
+	padding-right: 0.75rem;
 }
 
 .pl-3 {
-  padding-left: 0.75rem;
+	padding-left: 0.75rem;
 }
 
 .pt-3 {
-  padding-top: 0.75rem;
+	padding-top: 0.75rem;
 }
 
 .pb-3 {
-  padding-bottom: 0.75rem;
+	padding-bottom: 0.75rem;
 }
 
 .Ip-3 {
-  padding: 0.75rem !important;
+	padding: 0.75rem !important;
 }
 
 .Ipx-3 {
-  padding-left : 0.75rem !important;
-  padding-right: 0.75rem !important;
+	padding-left: 0.75rem !important;
+	padding-right: 0.75rem !important;
 }
 
 .Ipy-3 {
-  padding-top   : 0.75rem !important;
-  padding-bottom: 0.75rem !important;
+	padding-top: 0.75rem !important;
+	padding-bottom: 0.75rem !important;
 }
 
 .Ipr-3 {
-  padding-right: 0.75rem !important;
+	padding-right: 0.75rem !important;
 }
 
 .Ipl-3 {
-  padding-left: 0.75rem !important;
+	padding-left: 0.75rem !important;
 }
 
 .Ipt-3 {
-  padding-top: 0.75rem !important;
+	padding-top: 0.75rem !important;
 }
 
 .Ipb-3 {
-  padding-bottom: 0.75rem !important;
+	padding-bottom: 0.75rem !important;
 }
 
 .m-3 {
-  margin: 0.75rem;
+	margin: 0.75rem;
 }
 
 .mx-3 {
-  margin-left : 0.75rem;
-  margin-right: 0.75rem;
+	margin-left: 0.75rem;
+	margin-right: 0.75rem;
 }
 
 .my-3 {
-  margin-top   : 0.75rem;
-  margin-bottom: 0.75rem;
+	margin-top: 0.75rem;
+	margin-bottom: 0.75rem;
 }
 
 .mr-3 {
-  margin-right: 0.75rem;
+	margin-right: 0.75rem;
 }
 
 .ml-3 {
-  margin-left: 0.75rem;
+	margin-left: 0.75rem;
 }
 
 .mt-3 {
-  margin-top: 0.75rem;
+	margin-top: 0.75rem;
 }
 
 .mb-3 {
-  margin-bottom: 0.75rem;
+	margin-bottom: 0.75rem;
 }
 
 .Im-3 {
-  margin: 0.75rem !important;
+	margin: 0.75rem !important;
 }
 
 .Imx-3 {
-  margin-left : 0.75rem !important;
-  margin-right: 0.75rem !important;
+	margin-left: 0.75rem !important;
+	margin-right: 0.75rem !important;
 }
 
 .Imy-3 {
-  margin-top   : 0.75rem !important;
-  margin-bottom: 0.75rem !important;
+	margin-top: 0.75rem !important;
+	margin-bottom: 0.75rem !important;
 }
 
 .Imr-3 {
-  margin-right: 0.75rem !important;
+	margin-right: 0.75rem !important;
 }
 
 .Iml-3 {
-  margin-left: 0.75rem !important;
+	margin-left: 0.75rem !important;
 }
 
 .Imt-3 {
-  margin-top: 0.75rem !important;
+	margin-top: 0.75rem !important;
 }
 
 .Imb-3 {
-  margin-bottom: 0.75rem !important;
+	margin-bottom: 0.75rem !important;
 }
 
 .p-4 {
-  padding: 1rem;
+	padding: 1rem;
 }
 
 .px-4 {
-  padding-left : 1rem;
-  padding-right: 1rem;
+	padding-left: 1rem;
+	padding-right: 1rem;
 }
 
 .py-4 {
-  padding-top   : 1rem;
-  padding-bottom: 1rem;
+	padding-top: 1rem;
+	padding-bottom: 1rem;
 }
 
 .pr-4 {
-  padding-right: 1rem;
+	padding-right: 1rem;
 }
 
 .pl-4 {
-  padding-left: 1rem;
+	padding-left: 1rem;
 }
 
 .pt-4 {
-  padding-top: 1rem;
+	padding-top: 1rem;
 }
 
 .pb-4 {
-  padding-bottom: 1rem;
+	padding-bottom: 1rem;
 }
 
 .Ip-4 {
-  padding: 1rem !important;
+	padding: 1rem !important;
 }
 
 .Ipx-4 {
-  padding-left : 1rem !important;
-  padding-right: 1rem !important;
+	padding-left: 1rem !important;
+	padding-right: 1rem !important;
 }
 
 .Ipy-4 {
-  padding-top   : 1rem !important;
-  padding-bottom: 1rem !important;
+	padding-top: 1rem !important;
+	padding-bottom: 1rem !important;
 }
 
 .Ipr-4 {
-  padding-right: 1rem !important;
+	padding-right: 1rem !important;
 }
 
 .Ipl-4 {
-  padding-left: 1rem !important;
+	padding-left: 1rem !important;
 }
 
 .Ipt-4 {
-  padding-top: 1rem !important;
+	padding-top: 1rem !important;
 }
 
 .Ipb-4 {
-  padding-bottom: 1rem !important;
+	padding-bottom: 1rem !important;
 }
 
 .m-4 {
-  margin: 1rem;
+	margin: 1rem;
 }
 
 .mx-4 {
-  margin-left : 1rem;
-  margin-right: 1rem;
+	margin-left: 1rem;
+	margin-right: 1rem;
 }
 
 .my-4 {
-  margin-top   : 1rem;
-  margin-bottom: 1rem;
+	margin-top: 1rem;
+	margin-bottom: 1rem;
 }
 
 .mr-4 {
-  margin-right: 1rem;
+	margin-right: 1rem;
 }
 
 .ml-4 {
-  margin-left: 1rem;
+	margin-left: 1rem;
 }
 
 .mt-4 {
-  margin-top: 1rem;
+	margin-top: 1rem;
 }
 
 .mb-4 {
-  margin-bottom: 1rem;
+	margin-bottom: 1rem;
 }
 
 .Im-4 {
-  margin: 1rem !important;
+	margin: 1rem !important;
 }
 
 .Imx-4 {
-  margin-left : 1rem !important;
-  margin-right: 1rem !important;
+	margin-left: 1rem !important;
+	margin-right: 1rem !important;
 }
 
 .Imy-4 {
-  margin-top   : 1rem !important;
-  margin-bottom: 1rem !important;
+	margin-top: 1rem !important;
+	margin-bottom: 1rem !important;
 }
 
 .Imr-4 {
-  margin-right: 1rem !important;
+	margin-right: 1rem !important;
 }
 
 .Iml-4 {
-  margin-left: 1rem !important;
+	margin-left: 1rem !important;
 }
 
 .Imt-4 {
-  margin-top: 1rem !important;
+	margin-top: 1rem !important;
 }
 
 .Imb-4 {
-  margin-bottom: 1rem !important;
+	margin-bottom: 1rem !important;
 }
 
 .p-5 {
-  padding: 1.25rem;
+	padding: 1.25rem;
 }
 
 .px-5 {
-  padding-left : 1.25rem;
-  padding-right: 1.25rem;
+	padding-left: 1.25rem;
+	padding-right: 1.25rem;
 }
 
 .py-5 {
-  padding-top   : 1.25rem;
-  padding-bottom: 1.25rem;
+	padding-top: 1.25rem;
+	padding-bottom: 1.25rem;
 }
 
 .pr-5 {
-  padding-right: 1.25rem;
+	padding-right: 1.25rem;
 }
 
 .pl-5 {
-  padding-left: 1.25rem;
+	padding-left: 1.25rem;
 }
 
 .pt-5 {
-  padding-top: 1.25rem;
+	padding-top: 1.25rem;
 }
 
 .pb-5 {
-  padding-bottom: 1.25rem;
+	padding-bottom: 1.25rem;
 }
 
 .Ip-5 {
-  padding: 1.25rem !important;
+	padding: 1.25rem !important;
 }
 
 .Ipx-5 {
-  padding-left : 1.25rem !important;
-  padding-right: 1.25rem !important;
+	padding-left: 1.25rem !important;
+	padding-right: 1.25rem !important;
 }
 
 .Ipy-5 {
-  padding-top   : 1.25rem !important;
-  padding-bottom: 1.25rem !important;
+	padding-top: 1.25rem !important;
+	padding-bottom: 1.25rem !important;
 }
 
 .Ipr-5 {
-  padding-right: 1.25rem !important;
+	padding-right: 1.25rem !important;
 }
 
 .Ipl-5 {
-  padding-left: 1.25rem !important;
+	padding-left: 1.25rem !important;
 }
 
 .Ipt-5 {
-  padding-top: 1.25rem !important;
+	padding-top: 1.25rem !important;
 }
 
 .Ipb-5 {
-  padding-bottom: 1.25rem !important;
+	padding-bottom: 1.25rem !important;
 }
 
 .m-5 {
-  margin: 1.25rem;
+	margin: 1.25rem;
 }
 
 .mx-5 {
-  margin-left : 1.25rem;
-  margin-right: 1.25rem;
+	margin-left: 1.25rem;
+	margin-right: 1.25rem;
 }
 
 .my-5 {
-  margin-top   : 1.25rem;
-  margin-bottom: 1.25rem;
+	margin-top: 1.25rem;
+	margin-bottom: 1.25rem;
 }
 
 .mr-5 {
-  margin-right: 1.25rem;
+	margin-right: 1.25rem;
 }
 
 .ml-5 {
-  margin-left: 1.25rem;
+	margin-left: 1.25rem;
 }
 
 .mt-5 {
-  margin-top: 1.25rem;
+	margin-top: 1.25rem;
 }
 
 .mb-5 {
-  margin-bottom: 1.25rem;
+	margin-bottom: 1.25rem;
 }
 
 .Im-5 {
-  margin: 1.25rem !important;
+	margin: 1.25rem !important;
 }
 
 .Imx-5 {
-  margin-left : 1.25rem !important;
-  margin-right: 1.25rem !important;
+	margin-left: 1.25rem !important;
+	margin-right: 1.25rem !important;
 }
 
 .Imy-5 {
-  margin-top   : 1.25rem !important;
-  margin-bottom: 1.25rem !important;
+	margin-top: 1.25rem !important;
+	margin-bottom: 1.25rem !important;
 }
 
 .Imr-5 {
-  margin-right: 1.25rem !important;
+	margin-right: 1.25rem !important;
 }
 
 .Iml-5 {
-  margin-left: 1.25rem !important;
+	margin-left: 1.25rem !important;
 }
 
 .Imt-5 {
-  margin-top: 1.25rem !important;
+	margin-top: 1.25rem !important;
 }
 
 .Imb-5 {
-  margin-bottom: 1.25rem !important;
+	margin-bottom: 1.25rem !important;
 }
 
 .p-6 {
-  padding: 1.5rem;
+	padding: 1.5rem;
 }
 
 .px-6 {
-  padding-left : 1.5rem;
-  padding-right: 1.5rem;
+	padding-left: 1.5rem;
+	padding-right: 1.5rem;
 }
 
 .py-6 {
-  padding-top   : 1.5rem;
-  padding-bottom: 1.5rem;
+	padding-top: 1.5rem;
+	padding-bottom: 1.5rem;
 }
 
 .pr-6 {
-  padding-right: 1.5rem;
+	padding-right: 1.5rem;
 }
 
 .pl-6 {
-  padding-left: 1.5rem;
+	padding-left: 1.5rem;
 }
 
 .pt-6 {
-  padding-top: 1.5rem;
+	padding-top: 1.5rem;
 }
 
 .pb-6 {
-  padding-bottom: 1.5rem;
+	padding-bottom: 1.5rem;
 }
 
 .Ip-6 {
-  padding: 1.5rem !important;
+	padding: 1.5rem !important;
 }
 
 .Ipx-6 {
-  padding-left : 1.5rem !important;
-  padding-right: 1.5rem !important;
+	padding-left: 1.5rem !important;
+	padding-right: 1.5rem !important;
 }
 
 .Ipy-6 {
-  padding-top   : 1.5rem !important;
-  padding-bottom: 1.5rem !important;
+	padding-top: 1.5rem !important;
+	padding-bottom: 1.5rem !important;
 }
 
 .Ipr-6 {
-  padding-right: 1.5rem !important;
+	padding-right: 1.5rem !important;
 }
 
 .Ipl-6 {
-  padding-left: 1.5rem !important;
+	padding-left: 1.5rem !important;
 }
 
 .Ipt-6 {
-  padding-top: 1.5rem !important;
+	padding-top: 1.5rem !important;
 }
 
 .Ipb-6 {
-  padding-bottom: 1.5rem !important;
+	padding-bottom: 1.5rem !important;
 }
 
 .m-6 {
-  margin: 1.5rem;
+	margin: 1.5rem;
 }
 
 .mx-6 {
-  margin-left : 1.5rem;
-  margin-right: 1.5rem;
+	margin-left: 1.5rem;
+	margin-right: 1.5rem;
 }
 
 .my-6 {
-  margin-top   : 1.5rem;
-  margin-bottom: 1.5rem;
+	margin-top: 1.5rem;
+	margin-bottom: 1.5rem;
 }
 
 .mr-6 {
-  margin-right: 1.5rem;
+	margin-right: 1.5rem;
 }
 
 .ml-6 {
-  margin-left: 1.5rem;
+	margin-left: 1.5rem;
 }
 
 .mt-6 {
-  margin-top: 1.5rem;
+	margin-top: 1.5rem;
 }
 
 .mb-6 {
-  margin-bottom: 1.5rem;
+	margin-bottom: 1.5rem;
 }
 
 .Im-6 {
-  margin: 1.5rem !important;
+	margin: 1.5rem !important;
 }
 
 .Imx-6 {
-  margin-left : 1.5rem !important;
-  margin-right: 1.5rem !important;
+	margin-left: 1.5rem !important;
+	margin-right: 1.5rem !important;
 }
 
 .Imy-6 {
-  margin-top   : 1.5rem !important;
-  margin-bottom: 1.5rem !important;
+	margin-top: 1.5rem !important;
+	margin-bottom: 1.5rem !important;
 }
 
 .Imr-6 {
-  margin-right: 1.5rem !important;
+	margin-right: 1.5rem !important;
 }
 
 .Iml-6 {
-  margin-left: 1.5rem !important;
+	margin-left: 1.5rem !important;
 }
 
 .Imt-6 {
-  margin-top: 1.5rem !important;
+	margin-top: 1.5rem !important;
 }
 
 .Imb-6 {
-  margin-bottom: 1.5rem !important;
+	margin-bottom: 1.5rem !important;
 }
 
 .p-7 {
-  padding: 1.75rem;
+	padding: 1.75rem;
 }
 
 .px-7 {
-  padding-left : 1.75rem;
-  padding-right: 1.75rem;
+	padding-left: 1.75rem;
+	padding-right: 1.75rem;
 }
 
 .py-7 {
-  padding-top   : 1.75rem;
-  padding-bottom: 1.75rem;
+	padding-top: 1.75rem;
+	padding-bottom: 1.75rem;
 }
 
 .pr-7 {
-  padding-right: 1.75rem;
+	padding-right: 1.75rem;
 }
 
 .pl-7 {
-  padding-left: 1.75rem;
+	padding-left: 1.75rem;
 }
 
 .pt-7 {
-  padding-top: 1.75rem;
+	padding-top: 1.75rem;
 }
 
 .pb-7 {
-  padding-bottom: 1.75rem;
+	padding-bottom: 1.75rem;
 }
 
 .Ip-7 {
-  padding: 1.75rem !important;
+	padding: 1.75rem !important;
 }
 
 .Ipx-7 {
-  padding-left : 1.75rem !important;
-  padding-right: 1.75rem !important;
+	padding-left: 1.75rem !important;
+	padding-right: 1.75rem !important;
 }
 
 .Ipy-7 {
-  padding-top   : 1.75rem !important;
-  padding-bottom: 1.75rem !important;
+	padding-top: 1.75rem !important;
+	padding-bottom: 1.75rem !important;
 }
 
 .Ipr-7 {
-  padding-right: 1.75rem !important;
+	padding-right: 1.75rem !important;
 }
 
 .Ipl-7 {
-  padding-left: 1.75rem !important;
+	padding-left: 1.75rem !important;
 }
 
 .Ipt-7 {
-  padding-top: 1.75rem !important;
+	padding-top: 1.75rem !important;
 }
 
 .Ipb-7 {
-  padding-bottom: 1.75rem !important;
+	padding-bottom: 1.75rem !important;
 }
 
 .m-7 {
-  margin: 1.75rem;
+	margin: 1.75rem;
 }
 
 .mx-7 {
-  margin-left : 1.75rem;
-  margin-right: 1.75rem;
+	margin-left: 1.75rem;
+	margin-right: 1.75rem;
 }
 
 .my-7 {
-  margin-top   : 1.75rem;
-  margin-bottom: 1.75rem;
+	margin-top: 1.75rem;
+	margin-bottom: 1.75rem;
 }
 
 .mr-7 {
-  margin-right: 1.75rem;
+	margin-right: 1.75rem;
 }
 
 .ml-7 {
-  margin-left: 1.75rem;
+	margin-left: 1.75rem;
 }
 
 .mt-7 {
-  margin-top: 1.75rem;
+	margin-top: 1.75rem;
 }
 
 .mb-7 {
-  margin-bottom: 1.75rem;
+	margin-bottom: 1.75rem;
 }
 
 .Im-7 {
-  margin: 1.75rem !important;
+	margin: 1.75rem !important;
 }
 
 .Imx-7 {
-  margin-left : 1.75rem !important;
-  margin-right: 1.75rem !important;
+	margin-left: 1.75rem !important;
+	margin-right: 1.75rem !important;
 }
 
 .Imy-7 {
-  margin-top   : 1.75rem !important;
-  margin-bottom: 1.75rem !important;
+	margin-top: 1.75rem !important;
+	margin-bottom: 1.75rem !important;
 }
 
 .Imr-7 {
-  margin-right: 1.75rem !important;
+	margin-right: 1.75rem !important;
 }
 
 .Iml-7 {
-  margin-left: 1.75rem !important;
+	margin-left: 1.75rem !important;
 }
 
 .Imt-7 {
-  margin-top: 1.75rem !important;
+	margin-top: 1.75rem !important;
 }
 
 .Imb-7 {
-  margin-bottom: 1.75rem !important;
+	margin-bottom: 1.75rem !important;
 }
 
 .p-8 {
-  padding: 2rem;
+	padding: 2rem;
 }
 
 .px-8 {
-  padding-left : 2rem;
-  padding-right: 2rem;
+	padding-left: 2rem;
+	padding-right: 2rem;
 }
 
 .py-8 {
-  padding-top   : 2rem;
-  padding-bottom: 2rem;
+	padding-top: 2rem;
+	padding-bottom: 2rem;
 }
 
 .pr-8 {
-  padding-right: 2rem;
+	padding-right: 2rem;
 }
 
 .pl-8 {
-  padding-left: 2rem;
+	padding-left: 2rem;
 }
 
 .pt-8 {
-  padding-top: 2rem;
+	padding-top: 2rem;
 }
 
 .pb-8 {
-  padding-bottom: 2rem;
+	padding-bottom: 2rem;
 }
 
 .Ip-8 {
-  padding: 2rem !important;
+	padding: 2rem !important;
 }
 
 .Ipx-8 {
-  padding-left : 2rem !important;
-  padding-right: 2rem !important;
+	padding-left: 2rem !important;
+	padding-right: 2rem !important;
 }
 
 .Ipy-8 {
-  padding-top   : 2rem !important;
-  padding-bottom: 2rem !important;
+	padding-top: 2rem !important;
+	padding-bottom: 2rem !important;
 }
 
 .Ipr-8 {
-  padding-right: 2rem !important;
+	padding-right: 2rem !important;
 }
 
 .Ipl-8 {
-  padding-left: 2rem !important;
+	padding-left: 2rem !important;
 }
 
 .Ipt-8 {
-  padding-top: 2rem !important;
+	padding-top: 2rem !important;
 }
 
 .Ipb-8 {
-  padding-bottom: 2rem !important;
+	padding-bottom: 2rem !important;
 }
 
 .m-8 {
-  margin: 2rem;
+	margin: 2rem;
 }
 
 .mx-8 {
-  margin-left : 2rem;
-  margin-right: 2rem;
+	margin-left: 2rem;
+	margin-right: 2rem;
 }
 
 .my-8 {
-  margin-top   : 2rem;
-  margin-bottom: 2rem;
+	margin-top: 2rem;
+	margin-bottom: 2rem;
 }
 
 .mr-8 {
-  margin-right: 2rem;
+	margin-right: 2rem;
 }
 
 .ml-8 {
-  margin-left: 2rem;
+	margin-left: 2rem;
 }
 
 .mt-8 {
-  margin-top: 2rem;
+	margin-top: 2rem;
 }
 
 .mb-8 {
-  margin-bottom: 2rem;
+	margin-bottom: 2rem;
 }
 
 .Im-8 {
-  margin: 2rem !important;
+	margin: 2rem !important;
 }
 
 .Imx-8 {
-  margin-left : 2rem !important;
-  margin-right: 2rem !important;
+	margin-left: 2rem !important;
+	margin-right: 2rem !important;
 }
 
 .Imy-8 {
-  margin-top   : 2rem !important;
-  margin-bottom: 2rem !important;
+	margin-top: 2rem !important;
+	margin-bottom: 2rem !important;
 }
 
 .Imr-8 {
-  margin-right: 2rem !important;
+	margin-right: 2rem !important;
 }
 
 .Iml-8 {
-  margin-left: 2rem !important;
+	margin-left: 2rem !important;
 }
 
 .Imt-8 {
-  margin-top: 2rem !important;
+	margin-top: 2rem !important;
 }
 
 .Imb-8 {
-  margin-bottom: 2rem !important;
+	margin-bottom: 2rem !important;
 }
 
 .p-9 {
-  padding: 2.25rem;
+	padding: 2.25rem;
 }
 
 .px-9 {
-  padding-left : 2.25rem;
-  padding-right: 2.25rem;
+	padding-left: 2.25rem;
+	padding-right: 2.25rem;
 }
 
 .py-9 {
-  padding-top   : 2.25rem;
-  padding-bottom: 2.25rem;
+	padding-top: 2.25rem;
+	padding-bottom: 2.25rem;
 }
 
 .pr-9 {
-  padding-right: 2.25rem;
+	padding-right: 2.25rem;
 }
 
 .pl-9 {
-  padding-left: 2.25rem;
+	padding-left: 2.25rem;
 }
 
 .pt-9 {
-  padding-top: 2.25rem;
+	padding-top: 2.25rem;
 }
 
 .pb-9 {
-  padding-bottom: 2.25rem;
+	padding-bottom: 2.25rem;
 }
 
 .Ip-9 {
-  padding: 2.25rem !important;
+	padding: 2.25rem !important;
 }
 
 .Ipx-9 {
-  padding-left : 2.25rem !important;
-  padding-right: 2.25rem !important;
+	padding-left: 2.25rem !important;
+	padding-right: 2.25rem !important;
 }
 
 .Ipy-9 {
-  padding-top   : 2.25rem !important;
-  padding-bottom: 2.25rem !important;
+	padding-top: 2.25rem !important;
+	padding-bottom: 2.25rem !important;
 }
 
 .Ipr-9 {
-  padding-right: 2.25rem !important;
+	padding-right: 2.25rem !important;
 }
 
 .Ipl-9 {
-  padding-left: 2.25rem !important;
+	padding-left: 2.25rem !important;
 }
 
 .Ipt-9 {
-  padding-top: 2.25rem !important;
+	padding-top: 2.25rem !important;
 }
 
 .Ipb-9 {
-  padding-bottom: 2.25rem !important;
+	padding-bottom: 2.25rem !important;
 }
 
 .m-9 {
-  margin: 2.25rem;
+	margin: 2.25rem;
 }
 
 .mx-9 {
-  margin-left : 2.25rem;
-  margin-right: 2.25rem;
+	margin-left: 2.25rem;
+	margin-right: 2.25rem;
 }
 
 .my-9 {
-  margin-top   : 2.25rem;
-  margin-bottom: 2.25rem;
+	margin-top: 2.25rem;
+	margin-bottom: 2.25rem;
 }
 
 .mr-9 {
-  margin-right: 2.25rem;
+	margin-right: 2.25rem;
 }
 
 .ml-9 {
-  margin-left: 2.25rem;
+	margin-left: 2.25rem;
 }
 
 .mt-9 {
-  margin-top: 2.25rem;
+	margin-top: 2.25rem;
 }
 
 .mb-9 {
-  margin-bottom: 2.25rem;
+	margin-bottom: 2.25rem;
 }
 
 .Im-9 {
-  margin: 2.25rem !important;
+	margin: 2.25rem !important;
 }
 
 .Imx-9 {
-  margin-left : 2.25rem !important;
-  margin-right: 2.25rem !important;
+	margin-left: 2.25rem !important;
+	margin-right: 2.25rem !important;
 }
 
 .Imy-9 {
-  margin-top   : 2.25rem !important;
-  margin-bottom: 2.25rem !important;
+	margin-top: 2.25rem !important;
+	margin-bottom: 2.25rem !important;
 }
 
 .Imr-9 {
-  margin-right: 2.25rem !important;
+	margin-right: 2.25rem !important;
 }
 
 .Iml-9 {
-  margin-left: 2.25rem !important;
+	margin-left: 2.25rem !important;
 }
 
 .Imt-9 {
-  margin-top: 2.25rem !important;
+	margin-top: 2.25rem !important;
 }
 
 .Imb-9 {
-  margin-bottom: 2.25rem !important;
+	margin-bottom: 2.25rem !important;
 }
 
 .p-10 {
-  padding: 2.5rem;
+	padding: 2.5rem;
 }
 
 .px-10 {
-  padding-left : 2.5rem;
-  padding-right: 2.5rem;
+	padding-left: 2.5rem;
+	padding-right: 2.5rem;
 }
 
 .py-10 {
-  padding-top   : 2.5rem;
-  padding-bottom: 2.5rem;
+	padding-top: 2.5rem;
+	padding-bottom: 2.5rem;
 }
 
 .pr-10 {
-  padding-right: 2.5rem;
+	padding-right: 2.5rem;
 }
 
 .pl-10 {
-  padding-left: 2.5rem;
+	padding-left: 2.5rem;
 }
 
 .pt-10 {
-  padding-top: 2.5rem;
+	padding-top: 2.5rem;
 }
 
 .pb-10 {
-  padding-bottom: 2.5rem;
+	padding-bottom: 2.5rem;
 }
 
 .Ip-10 {
-  padding: 2.5rem !important;
+	padding: 2.5rem !important;
 }
 
 .Ipx-10 {
-  padding-left : 2.5rem !important;
-  padding-right: 2.5rem !important;
+	padding-left: 2.5rem !important;
+	padding-right: 2.5rem !important;
 }
 
 .Ipy-10 {
-  padding-top   : 2.5rem !important;
-  padding-bottom: 2.5rem !important;
+	padding-top: 2.5rem !important;
+	padding-bottom: 2.5rem !important;
 }
 
 .Ipr-10 {
-  padding-right: 2.5rem !important;
+	padding-right: 2.5rem !important;
 }
 
 .Ipl-10 {
-  padding-left: 2.5rem !important;
+	padding-left: 2.5rem !important;
 }
 
 .Ipt-10 {
-  padding-top: 2.5rem !important;
+	padding-top: 2.5rem !important;
 }
 
 .Ipb-10 {
-  padding-bottom: 2.5rem !important;
+	padding-bottom: 2.5rem !important;
 }
 
 .m-10 {
-  margin: 2.5rem;
+	margin: 2.5rem;
 }
 
 .mx-10 {
-  margin-left : 2.5rem;
-  margin-right: 2.5rem;
+	margin-left: 2.5rem;
+	margin-right: 2.5rem;
 }
 
 .my-10 {
-  margin-top   : 2.5rem;
-  margin-bottom: 2.5rem;
+	margin-top: 2.5rem;
+	margin-bottom: 2.5rem;
 }
 
 .mr-10 {
-  margin-right: 2.5rem;
+	margin-right: 2.5rem;
 }
 
 .ml-10 {
-  margin-left: 2.5rem;
+	margin-left: 2.5rem;
 }
 
 .mt-10 {
-  margin-top: 2.5rem;
+	margin-top: 2.5rem;
 }
 
 .mb-10 {
-  margin-bottom: 2.5rem;
+	margin-bottom: 2.5rem;
 }
 
 .Im-10 {
-  margin: 2.5rem !important;
+	margin: 2.5rem !important;
 }
 
 .Imx-10 {
-  margin-left : 2.5rem !important;
-  margin-right: 2.5rem !important;
+	margin-left: 2.5rem !important;
+	margin-right: 2.5rem !important;
 }
 
 .Imy-10 {
-  margin-top   : 2.5rem !important;
-  margin-bottom: 2.5rem !important;
+	margin-top: 2.5rem !important;
+	margin-bottom: 2.5rem !important;
 }
 
 .Imr-10 {
-  margin-right: 2.5rem !important;
+	margin-right: 2.5rem !important;
 }
 
 .Iml-10 {
-  margin-left: 2.5rem !important;
+	margin-left: 2.5rem !important;
 }
 
 .Imt-10 {
-  margin-top: 2.5rem !important;
+	margin-top: 2.5rem !important;
 }
 
 .Imb-10 {
-  margin-bottom: 2.5rem !important;
+	margin-bottom: 2.5rem !important;
 }
 
 .p-11 {
-  padding: 2.75rem;
+	padding: 2.75rem;
 }
 
 .px-11 {
-  padding-left : 2.75rem;
-  padding-right: 2.75rem;
+	padding-left: 2.75rem;
+	padding-right: 2.75rem;
 }
 
 .py-11 {
-  padding-top   : 2.75rem;
-  padding-bottom: 2.75rem;
+	padding-top: 2.75rem;
+	padding-bottom: 2.75rem;
 }
 
 .pr-11 {
-  padding-right: 2.75rem;
+	padding-right: 2.75rem;
 }
 
 .pl-11 {
-  padding-left: 2.75rem;
+	padding-left: 2.75rem;
 }
 
 .pt-11 {
-  padding-top: 2.75rem;
+	padding-top: 2.75rem;
 }
 
 .pb-11 {
-  padding-bottom: 2.75rem;
+	padding-bottom: 2.75rem;
 }
 
 .Ip-11 {
-  padding: 2.75rem !important;
+	padding: 2.75rem !important;
 }
 
 .Ipx-11 {
-  padding-left : 2.75rem !important;
-  padding-right: 2.75rem !important;
+	padding-left: 2.75rem !important;
+	padding-right: 2.75rem !important;
 }
 
 .Ipy-11 {
-  padding-top   : 2.75rem !important;
-  padding-bottom: 2.75rem !important;
+	padding-top: 2.75rem !important;
+	padding-bottom: 2.75rem !important;
 }
 
 .Ipr-11 {
-  padding-right: 2.75rem !important;
+	padding-right: 2.75rem !important;
 }
 
 .Ipl-11 {
-  padding-left: 2.75rem !important;
+	padding-left: 2.75rem !important;
 }
 
 .Ipt-11 {
-  padding-top: 2.75rem !important;
+	padding-top: 2.75rem !important;
 }
 
 .Ipb-11 {
-  padding-bottom: 2.75rem !important;
+	padding-bottom: 2.75rem !important;
 }
 
 .m-11 {
-  margin: 2.75rem;
+	margin: 2.75rem;
 }
 
 .mx-11 {
-  margin-left : 2.75rem;
-  margin-right: 2.75rem;
+	margin-left: 2.75rem;
+	margin-right: 2.75rem;
 }
 
 .my-11 {
-  margin-top   : 2.75rem;
-  margin-bottom: 2.75rem;
+	margin-top: 2.75rem;
+	margin-bottom: 2.75rem;
 }
 
 .mr-11 {
-  margin-right: 2.75rem;
+	margin-right: 2.75rem;
 }
 
 .ml-11 {
-  margin-left: 2.75rem;
+	margin-left: 2.75rem;
 }
 
 .mt-11 {
-  margin-top: 2.75rem;
+	margin-top: 2.75rem;
 }
 
 .mb-11 {
-  margin-bottom: 2.75rem;
+	margin-bottom: 2.75rem;
 }
 
 .Im-11 {
-  margin: 2.75rem !important;
+	margin: 2.75rem !important;
 }
 
 .Imx-11 {
-  margin-left : 2.75rem !important;
-  margin-right: 2.75rem !important;
+	margin-left: 2.75rem !important;
+	margin-right: 2.75rem !important;
 }
 
 .Imy-11 {
-  margin-top   : 2.75rem !important;
-  margin-bottom: 2.75rem !important;
+	margin-top: 2.75rem !important;
+	margin-bottom: 2.75rem !important;
 }
 
 .Imr-11 {
-  margin-right: 2.75rem !important;
+	margin-right: 2.75rem !important;
 }
 
 .Iml-11 {
-  margin-left: 2.75rem !important;
+	margin-left: 2.75rem !important;
 }
 
 .Imt-11 {
-  margin-top: 2.75rem !important;
+	margin-top: 2.75rem !important;
 }
 
 .Imb-11 {
-  margin-bottom: 2.75rem !important;
+	margin-bottom: 2.75rem !important;
 }
 
 .p-12 {
-  padding: 3rem;
+	padding: 3rem;
 }
 
 .px-12 {
-  padding-left : 3rem;
-  padding-right: 3rem;
+	padding-left: 3rem;
+	padding-right: 3rem;
 }
 
 .py-12 {
-  padding-top   : 3rem;
-  padding-bottom: 3rem;
+	padding-top: 3rem;
+	padding-bottom: 3rem;
 }
 
 .pr-12 {
-  padding-right: 3rem;
+	padding-right: 3rem;
 }
 
 .pl-12 {
-  padding-left: 3rem;
+	padding-left: 3rem;
 }
 
 .pt-12 {
-  padding-top: 3rem;
+	padding-top: 3rem;
 }
 
 .pb-12 {
-  padding-bottom: 3rem;
+	padding-bottom: 3rem;
 }
 
 .Ip-12 {
-  padding: 3rem !important;
+	padding: 3rem !important;
 }
 
 .Ipx-12 {
-  padding-left : 3rem !important;
-  padding-right: 3rem !important;
+	padding-left: 3rem !important;
+	padding-right: 3rem !important;
 }
 
 .Ipy-12 {
-  padding-top   : 3rem !important;
-  padding-bottom: 3rem !important;
+	padding-top: 3rem !important;
+	padding-bottom: 3rem !important;
 }
 
 .Ipr-12 {
-  padding-right: 3rem !important;
+	padding-right: 3rem !important;
 }
 
 .Ipl-12 {
-  padding-left: 3rem !important;
+	padding-left: 3rem !important;
 }
 
 .Ipt-12 {
-  padding-top: 3rem !important;
+	padding-top: 3rem !important;
 }
 
 .Ipb-12 {
-  padding-bottom: 3rem !important;
+	padding-bottom: 3rem !important;
 }
 
 .m-12 {
-  margin: 3rem;
+	margin: 3rem;
 }
 
 .mx-12 {
-  margin-left : 3rem;
-  margin-right: 3rem;
+	margin-left: 3rem;
+	margin-right: 3rem;
 }
 
 .my-12 {
-  margin-top   : 3rem;
-  margin-bottom: 3rem;
+	margin-top: 3rem;
+	margin-bottom: 3rem;
 }
 
 .mr-12 {
-  margin-right: 3rem;
+	margin-right: 3rem;
 }
 
 .ml-12 {
-  margin-left: 3rem;
+	margin-left: 3rem;
 }
 
 .mt-12 {
-  margin-top: 3rem;
+	margin-top: 3rem;
 }
 
 .mb-12 {
-  margin-bottom: 3rem;
+	margin-bottom: 3rem;
 }
 
 .Im-12 {
-  margin: 3rem !important;
+	margin: 3rem !important;
 }
 
 .Imx-12 {
-  margin-left : 3rem !important;
-  margin-right: 3rem !important;
+	margin-left: 3rem !important;
+	margin-right: 3rem !important;
 }
 
 .Imy-12 {
-  margin-top   : 3rem !important;
-  margin-bottom: 3rem !important;
+	margin-top: 3rem !important;
+	margin-bottom: 3rem !important;
 }
 
 .Imr-12 {
-  margin-right: 3rem !important;
+	margin-right: 3rem !important;
 }
 
 .Iml-12 {
-  margin-left: 3rem !important;
+	margin-left: 3rem !important;
 }
 
 .Imt-12 {
-  margin-top: 3rem !important;
+	margin-top: 3rem !important;
 }
 
 .Imb-12 {
-  margin-bottom: 3rem !important;
+	margin-bottom: 3rem !important;
 }
 
 .p-13 {
-  padding: 3.25rem;
+	padding: 3.25rem;
 }
 
 .px-13 {
-  padding-left : 3.25rem;
-  padding-right: 3.25rem;
+	padding-left: 3.25rem;
+	padding-right: 3.25rem;
 }
 
 .py-13 {
-  padding-top   : 3.25rem;
-  padding-bottom: 3.25rem;
+	padding-top: 3.25rem;
+	padding-bottom: 3.25rem;
 }
 
 .pr-13 {
-  padding-right: 3.25rem;
+	padding-right: 3.25rem;
 }
 
 .pl-13 {
-  padding-left: 3.25rem;
+	padding-left: 3.25rem;
 }
 
 .pt-13 {
-  padding-top: 3.25rem;
+	padding-top: 3.25rem;
 }
 
 .pb-13 {
-  padding-bottom: 3.25rem;
+	padding-bottom: 3.25rem;
 }
 
 .Ip-13 {
-  padding: 3.25rem !important;
+	padding: 3.25rem !important;
 }
 
 .Ipx-13 {
-  padding-left : 3.25rem !important;
-  padding-right: 3.25rem !important;
+	padding-left: 3.25rem !important;
+	padding-right: 3.25rem !important;
 }
 
 .Ipy-13 {
-  padding-top   : 3.25rem !important;
-  padding-bottom: 3.25rem !important;
+	padding-top: 3.25rem !important;
+	padding-bottom: 3.25rem !important;
 }
 
 .Ipr-13 {
-  padding-right: 3.25rem !important;
+	padding-right: 3.25rem !important;
 }
 
 .Ipl-13 {
-  padding-left: 3.25rem !important;
+	padding-left: 3.25rem !important;
 }
 
 .Ipt-13 {
-  padding-top: 3.25rem !important;
+	padding-top: 3.25rem !important;
 }
 
 .Ipb-13 {
-  padding-bottom: 3.25rem !important;
+	padding-bottom: 3.25rem !important;
 }
 
 .m-13 {
-  margin: 3.25rem;
+	margin: 3.25rem;
 }
 
 .mx-13 {
-  margin-left : 3.25rem;
-  margin-right: 3.25rem;
+	margin-left: 3.25rem;
+	margin-right: 3.25rem;
 }
 
 .my-13 {
-  margin-top   : 3.25rem;
-  margin-bottom: 3.25rem;
+	margin-top: 3.25rem;
+	margin-bottom: 3.25rem;
 }
 
 .mr-13 {
-  margin-right: 3.25rem;
+	margin-right: 3.25rem;
 }
 
 .ml-13 {
-  margin-left: 3.25rem;
+	margin-left: 3.25rem;
 }
 
 .mt-13 {
-  margin-top: 3.25rem;
+	margin-top: 3.25rem;
 }
 
 .mb-13 {
-  margin-bottom: 3.25rem;
+	margin-bottom: 3.25rem;
 }
 
 .Im-13 {
-  margin: 3.25rem !important;
+	margin: 3.25rem !important;
 }
 
 .Imx-13 {
-  margin-left : 3.25rem !important;
-  margin-right: 3.25rem !important;
+	margin-left: 3.25rem !important;
+	margin-right: 3.25rem !important;
 }
 
 .Imy-13 {
-  margin-top   : 3.25rem !important;
-  margin-bottom: 3.25rem !important;
+	margin-top: 3.25rem !important;
+	margin-bottom: 3.25rem !important;
 }
 
 .Imr-13 {
-  margin-right: 3.25rem !important;
+	margin-right: 3.25rem !important;
 }
 
 .Iml-13 {
-  margin-left: 3.25rem !important;
+	margin-left: 3.25rem !important;
 }
 
 .Imt-13 {
-  margin-top: 3.25rem !important;
+	margin-top: 3.25rem !important;
 }
 
 .Imb-13 {
-  margin-bottom: 3.25rem !important;
+	margin-bottom: 3.25rem !important;
 }
 
 .p-14 {
-  padding: 3.5rem;
+	padding: 3.5rem;
 }
 
 .px-14 {
-  padding-left : 3.5rem;
-  padding-right: 3.5rem;
+	padding-left: 3.5rem;
+	padding-right: 3.5rem;
 }
 
 .py-14 {
-  padding-top   : 3.5rem;
-  padding-bottom: 3.5rem;
+	padding-top: 3.5rem;
+	padding-bottom: 3.5rem;
 }
 
 .pr-14 {
-  padding-right: 3.5rem;
+	padding-right: 3.5rem;
 }
 
 .pl-14 {
-  padding-left: 3.5rem;
+	padding-left: 3.5rem;
 }
 
 .pt-14 {
-  padding-top: 3.5rem;
+	padding-top: 3.5rem;
 }
 
 .pb-14 {
-  padding-bottom: 3.5rem;
+	padding-bottom: 3.5rem;
 }
 
 .Ip-14 {
-  padding: 3.5rem !important;
+	padding: 3.5rem !important;
 }
 
 .Ipx-14 {
-  padding-left : 3.5rem !important;
-  padding-right: 3.5rem !important;
+	padding-left: 3.5rem !important;
+	padding-right: 3.5rem !important;
 }
 
 .Ipy-14 {
-  padding-top   : 3.5rem !important;
-  padding-bottom: 3.5rem !important;
+	padding-top: 3.5rem !important;
+	padding-bottom: 3.5rem !important;
 }
 
 .Ipr-14 {
-  padding-right: 3.5rem !important;
+	padding-right: 3.5rem !important;
 }
 
 .Ipl-14 {
-  padding-left: 3.5rem !important;
+	padding-left: 3.5rem !important;
 }
 
 .Ipt-14 {
-  padding-top: 3.5rem !important;
+	padding-top: 3.5rem !important;
 }
 
 .Ipb-14 {
-  padding-bottom: 3.5rem !important;
+	padding-bottom: 3.5rem !important;
 }
 
 .m-14 {
-  margin: 3.5rem;
+	margin: 3.5rem;
 }
 
 .mx-14 {
-  margin-left : 3.5rem;
-  margin-right: 3.5rem;
+	margin-left: 3.5rem;
+	margin-right: 3.5rem;
 }
 
 .my-14 {
-  margin-top   : 3.5rem;
-  margin-bottom: 3.5rem;
+	margin-top: 3.5rem;
+	margin-bottom: 3.5rem;
 }
 
 .mr-14 {
-  margin-right: 3.5rem;
+	margin-right: 3.5rem;
 }
 
 .ml-14 {
-  margin-left: 3.5rem;
+	margin-left: 3.5rem;
 }
 
 .mt-14 {
-  margin-top: 3.5rem;
+	margin-top: 3.5rem;
 }
 
 .mb-14 {
-  margin-bottom: 3.5rem;
+	margin-bottom: 3.5rem;
 }
 
 .Im-14 {
-  margin: 3.5rem !important;
+	margin: 3.5rem !important;
 }
 
 .Imx-14 {
-  margin-left : 3.5rem !important;
-  margin-right: 3.5rem !important;
+	margin-left: 3.5rem !important;
+	margin-right: 3.5rem !important;
 }
 
 .Imy-14 {
-  margin-top   : 3.5rem !important;
-  margin-bottom: 3.5rem !important;
+	margin-top: 3.5rem !important;
+	margin-bottom: 3.5rem !important;
 }
 
 .Imr-14 {
-  margin-right: 3.5rem !important;
+	margin-right: 3.5rem !important;
 }
 
 .Iml-14 {
-  margin-left: 3.5rem !important;
+	margin-left: 3.5rem !important;
 }
 
 .Imt-14 {
-  margin-top: 3.5rem !important;
+	margin-top: 3.5rem !important;
 }
 
 .Imb-14 {
-  margin-bottom: 3.5rem !important;
+	margin-bottom: 3.5rem !important;
 }
 
 .p-15 {
-  padding: 3.75rem;
+	padding: 3.75rem;
 }
 
 .px-15 {
-  padding-left : 3.75rem;
-  padding-right: 3.75rem;
+	padding-left: 3.75rem;
+	padding-right: 3.75rem;
 }
 
 .py-15 {
-  padding-top   : 3.75rem;
-  padding-bottom: 3.75rem;
+	padding-top: 3.75rem;
+	padding-bottom: 3.75rem;
 }
 
 .pr-15 {
-  padding-right: 3.75rem;
+	padding-right: 3.75rem;
 }
 
 .pl-15 {
-  padding-left: 3.75rem;
+	padding-left: 3.75rem;
 }
 
 .pt-15 {
-  padding-top: 3.75rem;
+	padding-top: 3.75rem;
 }
 
 .pb-15 {
-  padding-bottom: 3.75rem;
+	padding-bottom: 3.75rem;
 }
 
 .Ip-15 {
-  padding: 3.75rem !important;
+	padding: 3.75rem !important;
 }
 
 .Ipx-15 {
-  padding-left : 3.75rem !important;
-  padding-right: 3.75rem !important;
+	padding-left: 3.75rem !important;
+	padding-right: 3.75rem !important;
 }
 
 .Ipy-15 {
-  padding-top   : 3.75rem !important;
-  padding-bottom: 3.75rem !important;
+	padding-top: 3.75rem !important;
+	padding-bottom: 3.75rem !important;
 }
 
 .Ipr-15 {
-  padding-right: 3.75rem !important;
+	padding-right: 3.75rem !important;
 }
 
 .Ipl-15 {
-  padding-left: 3.75rem !important;
+	padding-left: 3.75rem !important;
 }
 
 .Ipt-15 {
-  padding-top: 3.75rem !important;
+	padding-top: 3.75rem !important;
 }
 
 .Ipb-15 {
-  padding-bottom: 3.75rem !important;
+	padding-bottom: 3.75rem !important;
 }
 
 .m-15 {
-  margin: 3.75rem;
+	margin: 3.75rem;
 }
 
 .mx-15 {
-  margin-left : 3.75rem;
-  margin-right: 3.75rem;
+	margin-left: 3.75rem;
+	margin-right: 3.75rem;
 }
 
 .my-15 {
-  margin-top   : 3.75rem;
-  margin-bottom: 3.75rem;
+	margin-top: 3.75rem;
+	margin-bottom: 3.75rem;
 }
 
 .mr-15 {
-  margin-right: 3.75rem;
+	margin-right: 3.75rem;
 }
 
 .ml-15 {
-  margin-left: 3.75rem;
+	margin-left: 3.75rem;
 }
 
 .mt-15 {
-  margin-top: 3.75rem;
+	margin-top: 3.75rem;
 }
 
 .mb-15 {
-  margin-bottom: 3.75rem;
+	margin-bottom: 3.75rem;
 }
 
 .Im-15 {
-  margin: 3.75rem !important;
+	margin: 3.75rem !important;
 }
 
 .Imx-15 {
-  margin-left : 3.75rem !important;
-  margin-right: 3.75rem !important;
+	margin-left: 3.75rem !important;
+	margin-right: 3.75rem !important;
 }
 
 .Imy-15 {
-  margin-top   : 3.75rem !important;
-  margin-bottom: 3.75rem !important;
+	margin-top: 3.75rem !important;
+	margin-bottom: 3.75rem !important;
 }
 
 .Imr-15 {
-  margin-right: 3.75rem !important;
+	margin-right: 3.75rem !important;
 }
 
 .Iml-15 {
-  margin-left: 3.75rem !important;
+	margin-left: 3.75rem !important;
 }
 
 .Imt-15 {
-  margin-top: 3.75rem !important;
+	margin-top: 3.75rem !important;
 }
 
 .Imb-15 {
-  margin-bottom: 3.75rem !important;
+	margin-bottom: 3.75rem !important;
 }
 
 .p-16 {
-  padding: 4rem;
+	padding: 4rem;
 }
 
 .px-16 {
-  padding-left : 4rem;
-  padding-right: 4rem;
+	padding-left: 4rem;
+	padding-right: 4rem;
 }
 
 .py-16 {
-  padding-top   : 4rem;
-  padding-bottom: 4rem;
+	padding-top: 4rem;
+	padding-bottom: 4rem;
 }
 
 .pr-16 {
-  padding-right: 4rem;
+	padding-right: 4rem;
 }
 
 .pl-16 {
-  padding-left: 4rem;
+	padding-left: 4rem;
 }
 
 .pt-16 {
-  padding-top: 4rem;
+	padding-top: 4rem;
 }
 
 .pb-16 {
-  padding-bottom: 4rem;
+	padding-bottom: 4rem;
 }
 
 .Ip-16 {
-  padding: 4rem !important;
+	padding: 4rem !important;
 }
 
 .Ipx-16 {
-  padding-left : 4rem !important;
-  padding-right: 4rem !important;
+	padding-left: 4rem !important;
+	padding-right: 4rem !important;
 }
 
 .Ipy-16 {
-  padding-top   : 4rem !important;
-  padding-bottom: 4rem !important;
+	padding-top: 4rem !important;
+	padding-bottom: 4rem !important;
 }
 
 .Ipr-16 {
-  padding-right: 4rem !important;
+	padding-right: 4rem !important;
 }
 
 .Ipl-16 {
-  padding-left: 4rem !important;
+	padding-left: 4rem !important;
 }
 
 .Ipt-16 {
-  padding-top: 4rem !important;
+	padding-top: 4rem !important;
 }
 
 .Ipb-16 {
-  padding-bottom: 4rem !important;
+	padding-bottom: 4rem !important;
 }
 
 .m-16 {
-  margin: 4rem;
+	margin: 4rem;
 }
 
 .mx-16 {
-  margin-left : 4rem;
-  margin-right: 4rem;
+	margin-left: 4rem;
+	margin-right: 4rem;
 }
 
 .my-16 {
-  margin-top   : 4rem;
-  margin-bottom: 4rem;
+	margin-top: 4rem;
+	margin-bottom: 4rem;
 }
 
 .mr-16 {
-  margin-right: 4rem;
+	margin-right: 4rem;
 }
 
 .ml-16 {
-  margin-left: 4rem;
+	margin-left: 4rem;
 }
 
 .mt-16 {
-  margin-top: 4rem;
+	margin-top: 4rem;
 }
 
 .mb-16 {
-  margin-bottom: 4rem;
+	margin-bottom: 4rem;
 }
 
 .Im-16 {
-  margin: 4rem !important;
+	margin: 4rem !important;
 }
 
 .Imx-16 {
-  margin-left : 4rem !important;
-  margin-right: 4rem !important;
+	margin-left: 4rem !important;
+	margin-right: 4rem !important;
 }
 
 .Imy-16 {
-  margin-top   : 4rem !important;
-  margin-bottom: 4rem !important;
+	margin-top: 4rem !important;
+	margin-bottom: 4rem !important;
 }
 
 .Imr-16 {
-  margin-right: 4rem !important;
+	margin-right: 4rem !important;
 }
 
 .Iml-16 {
-  margin-left: 4rem !important;
+	margin-left: 4rem !important;
 }
 
 .Imt-16 {
-  margin-top: 4rem !important;
+	margin-top: 4rem !important;
 }
 
 .Imb-16 {
-  margin-bottom: 4rem !important;
+	margin-bottom: 4rem !important;
 }
 
 .p-17 {
-  padding: 4.25rem;
+	padding: 4.25rem;
 }
 
 .px-17 {
-  padding-left : 4.25rem;
-  padding-right: 4.25rem;
+	padding-left: 4.25rem;
+	padding-right: 4.25rem;
 }
 
 .py-17 {
-  padding-top   : 4.25rem;
-  padding-bottom: 4.25rem;
+	padding-top: 4.25rem;
+	padding-bottom: 4.25rem;
 }
 
 .pr-17 {
-  padding-right: 4.25rem;
+	padding-right: 4.25rem;
 }
 
 .pl-17 {
-  padding-left: 4.25rem;
+	padding-left: 4.25rem;
 }
 
 .pt-17 {
-  padding-top: 4.25rem;
+	padding-top: 4.25rem;
 }
 
 .pb-17 {
-  padding-bottom: 4.25rem;
+	padding-bottom: 4.25rem;
 }
 
 .Ip-17 {
-  padding: 4.25rem !important;
+	padding: 4.25rem !important;
 }
 
 .Ipx-17 {
-  padding-left : 4.25rem !important;
-  padding-right: 4.25rem !important;
+	padding-left: 4.25rem !important;
+	padding-right: 4.25rem !important;
 }
 
 .Ipy-17 {
-  padding-top   : 4.25rem !important;
-  padding-bottom: 4.25rem !important;
+	padding-top: 4.25rem !important;
+	padding-bottom: 4.25rem !important;
 }
 
 .Ipr-17 {
-  padding-right: 4.25rem !important;
+	padding-right: 4.25rem !important;
 }
 
 .Ipl-17 {
-  padding-left: 4.25rem !important;
+	padding-left: 4.25rem !important;
 }
 
 .Ipt-17 {
-  padding-top: 4.25rem !important;
+	padding-top: 4.25rem !important;
 }
 
 .Ipb-17 {
-  padding-bottom: 4.25rem !important;
+	padding-bottom: 4.25rem !important;
 }
 
 .m-17 {
-  margin: 4.25rem;
+	margin: 4.25rem;
 }
 
 .mx-17 {
-  margin-left : 4.25rem;
-  margin-right: 4.25rem;
+	margin-left: 4.25rem;
+	margin-right: 4.25rem;
 }
 
 .my-17 {
-  margin-top   : 4.25rem;
-  margin-bottom: 4.25rem;
+	margin-top: 4.25rem;
+	margin-bottom: 4.25rem;
 }
 
 .mr-17 {
-  margin-right: 4.25rem;
+	margin-right: 4.25rem;
 }
 
 .ml-17 {
-  margin-left: 4.25rem;
+	margin-left: 4.25rem;
 }
 
 .mt-17 {
-  margin-top: 4.25rem;
+	margin-top: 4.25rem;
 }
 
 .mb-17 {
-  margin-bottom: 4.25rem;
+	margin-bottom: 4.25rem;
 }
 
 .Im-17 {
-  margin: 4.25rem !important;
+	margin: 4.25rem !important;
 }
 
 .Imx-17 {
-  margin-left : 4.25rem !important;
-  margin-right: 4.25rem !important;
+	margin-left: 4.25rem !important;
+	margin-right: 4.25rem !important;
 }
 
 .Imy-17 {
-  margin-top   : 4.25rem !important;
-  margin-bottom: 4.25rem !important;
+	margin-top: 4.25rem !important;
+	margin-bottom: 4.25rem !important;
 }
 
 .Imr-17 {
-  margin-right: 4.25rem !important;
+	margin-right: 4.25rem !important;
 }
 
 .Iml-17 {
-  margin-left: 4.25rem !important;
+	margin-left: 4.25rem !important;
 }
 
 .Imt-17 {
-  margin-top: 4.25rem !important;
+	margin-top: 4.25rem !important;
 }
 
 .Imb-17 {
-  margin-bottom: 4.25rem !important;
+	margin-bottom: 4.25rem !important;
 }
 
 .p-18 {
-  padding: 4.5rem;
+	padding: 4.5rem;
 }
 
 .px-18 {
-  padding-left : 4.5rem;
-  padding-right: 4.5rem;
+	padding-left: 4.5rem;
+	padding-right: 4.5rem;
 }
 
 .py-18 {
-  padding-top   : 4.5rem;
-  padding-bottom: 4.5rem;
+	padding-top: 4.5rem;
+	padding-bottom: 4.5rem;
 }
 
 .pr-18 {
-  padding-right: 4.5rem;
+	padding-right: 4.5rem;
 }
 
 .pl-18 {
-  padding-left: 4.5rem;
+	padding-left: 4.5rem;
 }
 
 .pt-18 {
-  padding-top: 4.5rem;
+	padding-top: 4.5rem;
 }
 
 .pb-18 {
-  padding-bottom: 4.5rem;
+	padding-bottom: 4.5rem;
 }
 
 .Ip-18 {
-  padding: 4.5rem !important;
+	padding: 4.5rem !important;
 }
 
 .Ipx-18 {
-  padding-left : 4.5rem !important;
-  padding-right: 4.5rem !important;
+	padding-left: 4.5rem !important;
+	padding-right: 4.5rem !important;
 }
 
 .Ipy-18 {
-  padding-top   : 4.5rem !important;
-  padding-bottom: 4.5rem !important;
+	padding-top: 4.5rem !important;
+	padding-bottom: 4.5rem !important;
 }
 
 .Ipr-18 {
-  padding-right: 4.5rem !important;
+	padding-right: 4.5rem !important;
 }
 
 .Ipl-18 {
-  padding-left: 4.5rem !important;
+	padding-left: 4.5rem !important;
 }
 
 .Ipt-18 {
-  padding-top: 4.5rem !important;
+	padding-top: 4.5rem !important;
 }
 
 .Ipb-18 {
-  padding-bottom: 4.5rem !important;
+	padding-bottom: 4.5rem !important;
 }
 
 .m-18 {
-  margin: 4.5rem;
+	margin: 4.5rem;
 }
 
 .mx-18 {
-  margin-left : 4.5rem;
-  margin-right: 4.5rem;
+	margin-left: 4.5rem;
+	margin-right: 4.5rem;
 }
 
 .my-18 {
-  margin-top   : 4.5rem;
-  margin-bottom: 4.5rem;
+	margin-top: 4.5rem;
+	margin-bottom: 4.5rem;
 }
 
 .mr-18 {
-  margin-right: 4.5rem;
+	margin-right: 4.5rem;
 }
 
 .ml-18 {
-  margin-left: 4.5rem;
+	margin-left: 4.5rem;
 }
 
 .mt-18 {
-  margin-top: 4.5rem;
+	margin-top: 4.5rem;
 }
 
 .mb-18 {
-  margin-bottom: 4.5rem;
+	margin-bottom: 4.5rem;
 }
 
 .Im-18 {
-  margin: 4.5rem !important;
+	margin: 4.5rem !important;
 }
 
 .Imx-18 {
-  margin-left : 4.5rem !important;
-  margin-right: 4.5rem !important;
+	margin-left: 4.5rem !important;
+	margin-right: 4.5rem !important;
 }
 
 .Imy-18 {
-  margin-top   : 4.5rem !important;
-  margin-bottom: 4.5rem !important;
+	margin-top: 4.5rem !important;
+	margin-bottom: 4.5rem !important;
 }
 
 .Imr-18 {
-  margin-right: 4.5rem !important;
+	margin-right: 4.5rem !important;
 }
 
 .Iml-18 {
-  margin-left: 4.5rem !important;
+	margin-left: 4.5rem !important;
 }
 
 .Imt-18 {
-  margin-top: 4.5rem !important;
+	margin-top: 4.5rem !important;
 }
 
 .Imb-18 {
-  margin-bottom: 4.5rem !important;
+	margin-bottom: 4.5rem !important;
 }
 
 .p-19 {
-  padding: 4.75rem;
+	padding: 4.75rem;
 }
 
 .px-19 {
-  padding-left : 4.75rem;
-  padding-right: 4.75rem;
+	padding-left: 4.75rem;
+	padding-right: 4.75rem;
 }
 
 .py-19 {
-  padding-top   : 4.75rem;
-  padding-bottom: 4.75rem;
+	padding-top: 4.75rem;
+	padding-bottom: 4.75rem;
 }
 
 .pr-19 {
-  padding-right: 4.75rem;
+	padding-right: 4.75rem;
 }
 
 .pl-19 {
-  padding-left: 4.75rem;
+	padding-left: 4.75rem;
 }
 
 .pt-19 {
-  padding-top: 4.75rem;
+	padding-top: 4.75rem;
 }
 
 .pb-19 {
-  padding-bottom: 4.75rem;
+	padding-bottom: 4.75rem;
 }
 
 .Ip-19 {
-  padding: 4.75rem !important;
+	padding: 4.75rem !important;
 }
 
 .Ipx-19 {
-  padding-left : 4.75rem !important;
-  padding-right: 4.75rem !important;
+	padding-left: 4.75rem !important;
+	padding-right: 4.75rem !important;
 }
 
 .Ipy-19 {
-  padding-top   : 4.75rem !important;
-  padding-bottom: 4.75rem !important;
+	padding-top: 4.75rem !important;
+	padding-bottom: 4.75rem !important;
 }
 
 .Ipr-19 {
-  padding-right: 4.75rem !important;
+	padding-right: 4.75rem !important;
 }
 
 .Ipl-19 {
-  padding-left: 4.75rem !important;
+	padding-left: 4.75rem !important;
 }
 
 .Ipt-19 {
-  padding-top: 4.75rem !important;
+	padding-top: 4.75rem !important;
 }
 
 .Ipb-19 {
-  padding-bottom: 4.75rem !important;
+	padding-bottom: 4.75rem !important;
 }
 
 .m-19 {
-  margin: 4.75rem;
+	margin: 4.75rem;
 }
 
 .mx-19 {
-  margin-left : 4.75rem;
-  margin-right: 4.75rem;
+	margin-left: 4.75rem;
+	margin-right: 4.75rem;
 }
 
 .my-19 {
-  margin-top   : 4.75rem;
-  margin-bottom: 4.75rem;
+	margin-top: 4.75rem;
+	margin-bottom: 4.75rem;
 }
 
 .mr-19 {
-  margin-right: 4.75rem;
+	margin-right: 4.75rem;
 }
 
 .ml-19 {
-  margin-left: 4.75rem;
+	margin-left: 4.75rem;
 }
 
 .mt-19 {
-  margin-top: 4.75rem;
+	margin-top: 4.75rem;
 }
 
 .mb-19 {
-  margin-bottom: 4.75rem;
+	margin-bottom: 4.75rem;
 }
 
 .Im-19 {
-  margin: 4.75rem !important;
+	margin: 4.75rem !important;
 }
 
 .Imx-19 {
-  margin-left : 4.75rem !important;
-  margin-right: 4.75rem !important;
+	margin-left: 4.75rem !important;
+	margin-right: 4.75rem !important;
 }
 
 .Imy-19 {
-  margin-top   : 4.75rem !important;
-  margin-bottom: 4.75rem !important;
+	margin-top: 4.75rem !important;
+	margin-bottom: 4.75rem !important;
 }
 
 .Imr-19 {
-  margin-right: 4.75rem !important;
+	margin-right: 4.75rem !important;
 }
 
 .Iml-19 {
-  margin-left: 4.75rem !important;
+	margin-left: 4.75rem !important;
 }
 
 .Imt-19 {
-  margin-top: 4.75rem !important;
+	margin-top: 4.75rem !important;
 }
 
 .Imb-19 {
-  margin-bottom: 4.75rem !important;
+	margin-bottom: 4.75rem !important;
 }
 
 .p-20 {
-  padding: 5rem;
+	padding: 5rem;
 }
 
 .px-20 {
-  padding-left : 5rem;
-  padding-right: 5rem;
+	padding-left: 5rem;
+	padding-right: 5rem;
 }
 
 .py-20 {
-  padding-top   : 5rem;
-  padding-bottom: 5rem;
+	padding-top: 5rem;
+	padding-bottom: 5rem;
 }
 
 .pr-20 {
-  padding-right: 5rem;
+	padding-right: 5rem;
 }
 
 .pl-20 {
-  padding-left: 5rem;
+	padding-left: 5rem;
 }
 
 .pt-20 {
-  padding-top: 5rem;
+	padding-top: 5rem;
 }
 
 .pb-20 {
-  padding-bottom: 5rem;
+	padding-bottom: 5rem;
 }
 
 .Ip-20 {
-  padding: 5rem !important;
+	padding: 5rem !important;
 }
 
 .Ipx-20 {
-  padding-left : 5rem !important;
-  padding-right: 5rem !important;
+	padding-left: 5rem !important;
+	padding-right: 5rem !important;
 }
 
 .Ipy-20 {
-  padding-top   : 5rem !important;
-  padding-bottom: 5rem !important;
+	padding-top: 5rem !important;
+	padding-bottom: 5rem !important;
 }
 
 .Ipr-20 {
-  padding-right: 5rem !important;
+	padding-right: 5rem !important;
 }
 
 .Ipl-20 {
-  padding-left: 5rem !important;
+	padding-left: 5rem !important;
 }
 
 .Ipt-20 {
-  padding-top: 5rem !important;
+	padding-top: 5rem !important;
 }
 
 .Ipb-20 {
-  padding-bottom: 5rem !important;
+	padding-bottom: 5rem !important;
 }
 
 .m-20 {
-  margin: 5rem;
+	margin: 5rem;
 }
 
 .mx-20 {
-  margin-left : 5rem;
-  margin-right: 5rem;
+	margin-left: 5rem;
+	margin-right: 5rem;
 }
 
 .my-20 {
-  margin-top   : 5rem;
-  margin-bottom: 5rem;
+	margin-top: 5rem;
+	margin-bottom: 5rem;
 }
 
 .mr-20 {
-  margin-right: 5rem;
+	margin-right: 5rem;
 }
 
 .ml-20 {
-  margin-left: 5rem;
+	margin-left: 5rem;
 }
 
 .mt-20 {
-  margin-top: 5rem;
+	margin-top: 5rem;
 }
 
 .mb-20 {
-  margin-bottom: 5rem;
+	margin-bottom: 5rem;
 }
 
 .Im-20 {
-  margin: 5rem !important;
+	margin: 5rem !important;
 }
 
 .Imx-20 {
-  margin-left : 5rem !important;
-  margin-right: 5rem !important;
+	margin-left: 5rem !important;
+	margin-right: 5rem !important;
 }
 
 .Imy-20 {
-  margin-top   : 5rem !important;
-  margin-bottom: 5rem !important;
+	margin-top: 5rem !important;
+	margin-bottom: 5rem !important;
 }
 
 .Imr-20 {
-  margin-right: 5rem !important;
+	margin-right: 5rem !important;
 }
 
 .Iml-20 {
-  margin-left: 5rem !important;
+	margin-left: 5rem !important;
 }
 
 .Imt-20 {
-  margin-top: 5rem !important;
+	margin-top: 5rem !important;
 }
 
 .Imb-20 {
-  margin-bottom: 5rem !important;
-}
+	margin-bottom: 5rem !important;
+}

+ 32 - 32
src/views/iot/alarm/log/index.vue

@@ -1,6 +1,6 @@
 <template>
 	<div class="page">
-		<div class="system-user-search">
+		<el-card shadow="nover">
 			<el-form :model="tableData.param" ref="queryRef" :inline="true" label-width="68px">
 				<el-form-item label="创建时间" prop="dateRange">
 					<el-date-picker v-model="tableData.param.dateRange" size="default" style="width: 240px" value-format="YYYY-MM-DD" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
@@ -27,39 +27,39 @@
 					</el-button>
 				</el-form-item>
 			</el-form>
-		</div>
-		<el-table :data="tableData.data" style="width: 100%" v-loading="tableData.loading" max-height="calc(100vh  - 255px)">
-			<el-table-column label="ID" align="center" prop="id" width="100" v-col="'ID'" />
-			<el-table-column label="告警类型" prop="type" width="120" show-overflow-tooltip 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="alarmLevel.name" width="100" align="center" show-overflow-tooltip v-col="'alarmLevel'"></el-table-column>
-			<el-table-column label="规则名称" prop="ruleName" show-overflow-tooltip v-col="'ruleName'" />
-			<el-table-column label="产品标识" prop="productKey" show-overflow-tooltip v-col="'productKey'" />
-			<el-table-column label="设备标识" prop="deviceKey" show-overflow-tooltip v-col="'deviceKey'" />
+			<el-table :data="tableData.data" style="width: 100%" v-loading="tableData.loading" max-height="calc(100vh  - 255px)">
+				<el-table-column label="ID" align="center" prop="id" width="100" v-col="'ID'" />
+				<el-table-column label="告警类型" prop="type" width="120" show-overflow-tooltip 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="alarmLevel.name" width="100" align="center" show-overflow-tooltip v-col="'alarmLevel'"></el-table-column>
+				<el-table-column label="规则名称" prop="ruleName" show-overflow-tooltip v-col="'ruleName'" />
+				<el-table-column label="产品标识" prop="productKey" show-overflow-tooltip v-col="'productKey'" />
+				<el-table-column label="设备标识" prop="deviceKey" show-overflow-tooltip v-col="'deviceKey'" />
 
-			<el-table-column prop="status" label="告警状态" width="100" align="center" v-col="'status'">
-				<template #default="scope">
-					<el-tag type="danger" size="small" v-if="scope.row.status == 0">未处理</el-tag>
-					<el-tag type="success" size="small" v-if="scope.row.status == 1">已处理</el-tag>
-					<el-tag type="info" size="small" v-if="scope.row.status == 2">已忽略</el-tag>
-				</template>
-			</el-table-column>
-			<el-table-column prop="createdAt" label="告警时间" align="center" width="160" v-col="'createdAt'"></el-table-column>
-			<el-table-column label="操作" width="140" align="center" fixed="right" v-col="'handle'">
-				<template #default="scope">
-					<el-button size="small" text type="primary" @click="onOpenDetailDic(scope.row)" v-auth="'detail'">详情</el-button>
-					<el-button size="small" text type="warning" @click="onOpenEditDic(scope.row)" v-if="scope.row.status == 0" v-auth="'edit'">处理</el-button>
-				</template>
-			</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="typeList" />
+				<el-table-column prop="status" label="告警状态" width="100" align="center" v-col="'status'">
+					<template #default="scope">
+						<el-tag type="danger" size="small" v-if="scope.row.status == 0">未处理</el-tag>
+						<el-tag type="success" size="small" v-if="scope.row.status == 1">已处理</el-tag>
+						<el-tag type="info" size="small" v-if="scope.row.status == 2">已忽略</el-tag>
+					</template>
+				</el-table-column>
+				<el-table-column prop="createdAt" label="告警时间" align="center" width="160" v-col="'createdAt'"></el-table-column>
+				<el-table-column label="操作" width="140" align="center" fixed="right" v-col="'handle'">
+					<template #default="scope">
+						<el-button size="small" text type="primary" @click="onOpenDetailDic(scope.row)" v-auth="'detail'">详情</el-button>
+						<el-button size="small" text type="warning" @click="onOpenEditDic(scope.row)" v-if="scope.row.status == 0" v-auth="'edit'">处理</el-button>
+					</template>
+				</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="typeList" />
 
-		<EditDic ref="editDicRef" @dataList="typeList" />
-		<DetailDic ref="detailRef" @dataList="typeList" />
+			<EditDic ref="editDicRef" @dataList="typeList" />
+			<DetailDic ref="detailRef" @dataList="typeList" />
+		</el-card>
 	</div>
 </template>
   

+ 29 - 30
src/views/iot/certificate/index.vue

@@ -1,6 +1,6 @@
 <template>
 	<div class="page">
-		<div class="system-user-search">
+		<el-card shadow="nover">
 			<el-form :model="state.tableData.param" ref="queryRef" :inline="true" label-width="60px">
 				<el-form-item label="关键字" prop="keyWord">
 					<el-input v-model="state.tableData.param.name" placeholder="请输入关键字" clearable size="default" @keyup.enter="queryList" />
@@ -26,35 +26,34 @@
 					</el-button>
 				</el-form-item>
 			</el-form>
-		</div>
-		<!--  -->
-		<el-table :data="state.tableData.data" v-loading="state.tableData.loading" style="width: 100%" max-height="calc(100vh - 255px)">>
-			<!-- <el-table-column type="selection" width="55" align="center" /> -->
-			<el-table-column v-col="'id'" label="ID" align="center" prop="id" width="100" />
-			<el-table-column v-col="'name'" label="证书名称" prop="name" min-width="120" show-overflow-tooltip />
-			<el-table-column v-col="'standard'" label="证书标准" prop="standard" min-width="120" show-overflow-tooltip>
-				<template #default="scope">
-					{{ filterStandard(scope.row.standard) }}
-					<!-- <el-button size="small" text type="primary" @click="operate('editParams', scope.row)">编辑</el-button> -->
-					<!-- <el-button size="small" text type="danger" @click="operate('delete', scope.row)">删除</el-button> -->
-				</template>
-			</el-table-column>
-			<el-table-column v-col="'description'" label="说明" prop="description" min-width="120" show-overflow-tooltip />
-			<el-table-column label="状态" width="120" align="center">
-				<template #default="scope">
-					<el-switch v-auth="'startOrStop'" v-model="scope.row.status" inline-prompt :active-value="1" :inactive-value="0" active-text="启" inactive-text="禁" @change="handleStatusChange(scope.row)"></el-switch>
-					<span v-noauth="'startOrStop'">{{ scope.row.status ? '正常' : '暂停' }}</span>
-				</template>
-			</el-table-column>
-			<el-table-column v-col="'handle'" label="操作" width="180" align="center" fixed="right">
-				<template #default="scope">
-					<el-button size="small" v-auth="'edit'" text type="primary" @click="operate('editParams', scope.row)">编辑</el-button>
-					<el-button size="small" v-auth="'del'" text type="info" @click="operate('delete', scope.row)">删除</el-button>
-				</template>
-			</el-table-column>
-		</el-table>
-		<pagination v-show="state.tableData.total > 0" :total="state.tableData.total" v-model:page="state.tableData.param.pageNum" v-model:limit="state.tableData.param.pageSize" @pagination="queryList" />
-		<EditParams ref="editParamsRef" @update="queryList" />
+			<el-table :data="state.tableData.data" v-loading="state.tableData.loading" style="width: 100%">
+				<!-- <el-table-column type="selection" width="55" align="center" /> -->
+				<el-table-column v-col="'id'" label="ID" align="center" prop="id" width="100" />
+				<el-table-column v-col="'name'" label="证书名称" prop="name" min-width="120" show-overflow-tooltip />
+				<el-table-column v-col="'standard'" label="证书标准" prop="standard" min-width="120" show-overflow-tooltip>
+					<template #default="scope">
+						{{ filterStandard(scope.row.standard) }}
+						<!-- <el-button size="small" text type="primary" @click="operate('editParams', scope.row)">编辑</el-button> -->
+						<!-- <el-button size="small" text type="danger" @click="operate('delete', scope.row)">删除</el-button> -->
+					</template>
+				</el-table-column>
+				<el-table-column v-col="'description'" label="说明" prop="description" min-width="120" show-overflow-tooltip />
+				<el-table-column label="状态" width="120" align="center">
+					<template #default="scope">
+						<el-switch v-auth="'startOrStop'" v-model="scope.row.status" inline-prompt :active-value="1" :inactive-value="0" active-text="启" inactive-text="禁" @change="handleStatusChange(scope.row)"></el-switch>
+						<span v-noauth="'startOrStop'">{{ scope.row.status ? '正常' : '暂停' }}</span>
+					</template>
+				</el-table-column>
+				<el-table-column v-col="'handle'" label="操作" width="180" align="center" fixed="right">
+					<template #default="scope">
+						<el-button size="small" v-auth="'edit'" text type="primary" @click="operate('editParams', scope.row)">编辑</el-button>
+						<el-button size="small" v-auth="'del'" text type="info" @click="operate('delete', scope.row)">删除</el-button>
+					</template>
+				</el-table-column>
+			</el-table>
+			<pagination v-show="state.tableData.total > 0" :total="state.tableData.total" v-model:page="state.tableData.param.pageNum" v-model:limit="state.tableData.param.pageSize" @pagination="queryList" />
+			<EditParams ref="editParamsRef" @update="queryList" />
+		</el-card>
 	</div>
 </template>
 

+ 43 - 41
src/views/iot/configuration/list/index.vue

@@ -1,45 +1,47 @@
 <template>
-  <el-card shadow="nover" class="page-full">
-    <div class="search">
-      <el-form :inline="true">
-        <el-form-item>
-          <el-input size="default" v-model="params.keyWord" style="width: 200px; margin-left: 20px" class="search-input" placeholder="请输入搜索关键字" @keyup.enter.native="getList(1)" clearable>
-          </el-input>
-          <el-button size="default" type="primary" class="ml10" @click="getList(1)">
-            <el-icon>
-              <ele-Search />
-            </el-icon>
-            查询
-          </el-button>
-        </el-form-item>
-        <el-form-item>
-          <el-button type="primary" v-auth="'add'" @click="addOrEdit()">
-            <el-icon>
-              <ele-FolderAdd />
-            </el-icon>
-            新增组态图
-          </el-button>
-        </el-form-item>
-      </el-form>
-    </div>
-    <el-table :data="tableData" style="width: 100%" row-key="id" v-loading="loading" max-height="calc(100vh - 255px)">
-      <!-- <el-table-column type="index" label="序号" width="60" align="center" /> -->
-      <el-table-column prop="id" label="ID" width="100" show-overflow-tooltip></el-table-column>
-      <el-table-column prop="name" label="组态图名称" show-overflow-tooltip></el-table-column>
-      <el-table-column prop="createdAt" label="创建时间" min-width="100" align="center"></el-table-column>
-      <el-table-column prop="updatedAt" label="更新时间" min-width="100" align="center"></el-table-column>
-      <el-table-column label="操作" width="200" align="center">
-        <template #default="scope">
-          <el-button size="small" text type="primary" v-if="!scope.row.folderName" @click="view(scope.row)">预览</el-button>
-          <el-button size="small" text type="warning" v-auth="'edit'" @click="addOrEdit(scope.row)">编辑</el-button>
-          <el-button size="small" text type="warning" @click="edit(scope.row)">编辑组态图</el-button>
-          <el-button size="small" text type="info" v-auth="'del'" @click="del(scope.row)">删除</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-    <pagination v-if="params.total" :total="params.total" v-model:page="params.pageNum" v-model:limit="params.pageSize" @pagination="getList()" />
-    <EditForm ref="editFormRef" @getList="getList(1)"></EditForm>
-  </el-card>
+  <div class="page">
+    <el-card shadow="nover">
+      <div class="search">
+        <el-form :inline="true">
+          <el-form-item>
+            <el-input size="default" v-model="params.keyWord" style="width: 200px; margin-left: 20px" class="search-input" placeholder="请输入搜索关键字" @keyup.enter.native="getList(1)" clearable>
+            </el-input>
+            <el-button size="default" type="primary" class="ml10" @click="getList(1)">
+              <el-icon>
+                <ele-Search />
+              </el-icon>
+              查询
+            </el-button>
+          </el-form-item>
+          <el-form-item>
+            <el-button type="primary" v-auth="'add'" @click="addOrEdit()">
+              <el-icon>
+                <ele-FolderAdd />
+              </el-icon>
+              新增组态图
+            </el-button>
+          </el-form-item>
+        </el-form>
+      </div>
+      <el-table :data="tableData" style="width: 100%" row-key="id" v-loading="loading">
+        <!-- <el-table-column type="index" label="序号" width="60" align="center" /> -->
+        <el-table-column prop="id" label="ID" width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="name" label="组态图名称" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="createdAt" label="创建时间" min-width="100" align="center"></el-table-column>
+        <el-table-column prop="updatedAt" label="更新时间" min-width="100" align="center"></el-table-column>
+        <el-table-column label="操作" width="200" align="center">
+          <template #default="scope">
+            <el-button size="small" text type="primary" v-if="!scope.row.folderName" @click="view(scope.row)">预览</el-button>
+            <el-button size="small" text type="warning" v-auth="'edit'" @click="addOrEdit(scope.row)">编辑</el-button>
+            <el-button size="small" text type="warning" @click="edit(scope.row)">编辑组态图</el-button>
+            <el-button size="small" text type="info" v-auth="'del'" @click="del(scope.row)">删除</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination v-if="params.total" :total="params.total" v-model:page="params.pageNum" v-model:limit="params.pageSize" @pagination="getList()" />
+      <EditForm ref="editFormRef" @getList="getList(1)"></EditForm>
+    </el-card>
+  </div>
 </template>
 
 <script lang="ts" setup>

+ 34 - 32
src/views/iot/configuration/screen/index.vue

@@ -1,36 +1,38 @@
 <template>
-  <el-card shadow="nover" class="page-full">
-    <div class="search">
-      <el-form :inline="true">
-        <el-form-item>
-          <el-button type="primary" v-auth="'add'" @click="addOrEdit()">
-            <el-icon>
-              <ele-FolderAdd />
-            </el-icon>
-            新增大屏
-          </el-button>
-        </el-form-item>
-      </el-form>
-    </div>
-    <el-table :data="tableData" style="width: 100%" v-loading="loading" max-height="calc(100vh - 255px)">
-      <el-table-column type="index" label="序号" width="60" align="center" />
-      <el-table-column prop="id" label="ID" show-overflow-tooltip></el-table-column>
-      <el-table-column prop="projectName" label="大屏名称" show-overflow-tooltip></el-table-column>
-      <el-table-column prop="remarks" label="描述" show-overflow-tooltip></el-table-column>
-      <el-table-column prop="createdAt" label="创建时间" min-width="100" align="center"></el-table-column>
-      <el-table-column prop="updatedAt" label="更新时间" min-width="100" align="center"></el-table-column>
-      <el-table-column label="操作" width="200" align="center">
-        <template #default="scope">
-          <el-button size="small" text type="primary" @click="preview(scope.row)">预览</el-button>
-          <el-button size="small" text type="warning" v-auth="'edit'" @click="addOrEdit(scope.row)">编辑</el-button>
-          <el-button size="small" text type="warning" @click="edit(scope.row)">设计大屏</el-button>
-          <el-button size="small" text type="info" v-auth="'del'" @click="onDel(scope.row)">删除</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-    <pagination v-if="params.total" :total="params.total" v-model:page="params.pageNum" v-model:limit="params.pageSize" @pagination="getList()" />
-    <EditForm ref="editFormRef" @getList="getList(1)"></EditForm>
-  </el-card>
+  <div class="page">
+    <el-card shadow="nover">
+      <div class="search">
+        <el-form :inline="true">
+          <el-form-item>
+            <el-button type="primary" v-auth="'add'" @click="addOrEdit()">
+              <el-icon>
+                <ele-FolderAdd />
+              </el-icon>
+              新增大屏
+            </el-button>
+          </el-form-item>
+        </el-form>
+      </div>
+      <el-table :data="tableData" style="width: 100%" v-loading="loading">
+        <el-table-column type="index" label="序号" width="60" align="center" />
+        <el-table-column prop="id" label="ID" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="projectName" label="大屏名称" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="remarks" label="描述" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="createdAt" label="创建时间" min-width="100" align="center"></el-table-column>
+        <el-table-column prop="updatedAt" label="更新时间" min-width="100" align="center"></el-table-column>
+        <el-table-column label="操作" width="200" align="center">
+          <template #default="scope">
+            <el-button size="small" text type="primary" @click="preview(scope.row)">预览</el-button>
+            <el-button size="small" text type="warning" v-auth="'edit'" @click="addOrEdit(scope.row)">编辑</el-button>
+            <el-button size="small" text type="warning" @click="edit(scope.row)">设计大屏</el-button>
+            <el-button size="small" text type="info" v-auth="'del'" @click="onDel(scope.row)">删除</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination v-if="params.total" :total="params.total" v-model:page="params.pageNum" v-model:limit="params.pageSize" @pagination="getList()" />
+      <EditForm ref="editFormRef" @getList="getList(1)"></EditForm>
+    </el-card>
+  </div>
 </template>
 
 <script lang="ts" setup>

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

@@ -1,6 +1,6 @@
 <template>
-  <el-card shadow="nover" class="page-full">
-    <el-row :gutter="10" class="h-full">
+  <div class="page page-full">
+    <el-row :gutter="16" class="h-full">
       <el-col :span="6" class="h-full">
         <el-card shadow="nover" class="h-full">
           <el-scrollbar v-loading="treeLoading">
@@ -160,7 +160,7 @@
       </el-col>
     </el-row>
     <AddOrUpdate ref="addOrUpdateRef" @finish="onFinish" />
-  </el-card>
+  </div>
 </template>
 
 <script lang="ts">

+ 22 - 24
src/views/iot/device/category/index.vue

@@ -1,28 +1,26 @@
 <template>
-  <div class="system-dept-container">
+  <div class="page">
     <el-card shadow="nover">
-      <div class="system-dept-search mb15">
-        <el-form :inline="true">
-          <el-form-item label="分类名称">
-            <el-input size="default" v-model="tableData.param.name" placeholder="请输入分类名称" @keyup.enter.native="getCateList" class="w-50" clearable />
-          </el-form-item>
-          <el-form-item>
-            <el-button size="default" type="primary" class="ml10" @click="getCateList">
-              <el-icon>
-                <ele-Search />
-              </el-icon>
-              查询
-            </el-button>
-            <el-button size="default" type="primary" class="ml10" @click="onOpenAdd" v-auth="'add'">
-              <el-icon>
-                <ele-FolderAdd />
-              </el-icon>
-              新增分类
-            </el-button>
-          </el-form-item>
-        </el-form>
-      </div>
-      <el-table :data="tableData.data" style="width: 100%" row-key="id" default-expand-all :tree-props="{ children: 'children', hasChildren: 'hasChildren' }" v-loading="tableData.loading" max-height="calc(100vh - 230px)">
+      <el-form :inline="true">
+        <el-form-item label="分类名称">
+          <el-input size="default" v-model="tableData.param.name" placeholder="请输入分类名称" @keyup.enter.native="getCateList" class="w-50" clearable />
+        </el-form-item>
+        <el-form-item>
+          <el-button size="default" type="primary" class="ml10" @click="getCateList">
+            <el-icon>
+              <ele-Search />
+            </el-icon>
+            查询
+          </el-button>
+          <el-button size="default" type="primary" class="ml10" @click="onOpenAdd" v-auth="'add'">
+            <el-icon>
+              <ele-FolderAdd />
+            </el-icon>
+            新增分类
+          </el-button>
+        </el-form-item>
+      </el-form>
+      <el-table :data="tableData.data" style="width: 100%" row-key="id" default-expand-all :tree-props="{ children: 'children', hasChildren: 'hasChildren' }" v-loading="tableData.loading">
         <el-table-column prop="name" label="分类名称" v-col="'name'" show-overflow-tooltip> </el-table-column>
         <el-table-column prop="desc" label="描述" align="center" v-col="'desc'"></el-table-column>
         <el-table-column prop="sort" v-col="'sort'" label="排序" align="center"></el-table-column>
@@ -126,4 +124,4 @@ export default defineComponent({
     };
   },
 });
-</script>
+</script>

+ 49 - 47
src/views/iot/device/channel/index.vue

@@ -7,54 +7,56 @@
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 -->
 <template>
-	<el-card shadow="nover" class="page-full">
-		<div class="search">
-			<el-form :model="params" :inline="true" ref="queryRef" @keyup.enter.native="getList(1)">
-				<el-form-item label="通道名称" prop="title">
-					<el-input v-model="params.title" placeholder="请输入通道名称" clearable style="width: 240px" />
-				</el-form-item>
-				<el-form-item label="注册码" prop="number">
-					<el-input v-model="params.number" placeholder="请输入注册码" clearable style="width: 240px" />
-				</el-form-item>
-				<el-form-item>
-					<el-button size="default" type="primary" class="ml10" @click="getList(1)">
-						<el-icon>
-							<ele-Search />
-						</el-icon>
-						查询
-					</el-button>
-					<el-button size="default" @click="resetQuery()">
-						<el-icon>
-							<ele-Refresh />
-						</el-icon>
-						重置
-					</el-button>
-					<el-button type="primary" @click="addOrEdit()" v-auth="'add'">
-						<el-icon>
-							<ele-FolderAdd />
-						</el-icon>
-						新增通道
-					</el-button>
-				</el-form-item>
-			</el-form>
-		</div>
-		<el-table :data="tableData" style="width: 100%" v-loading="loading" max-height="calc(100vh - 255px)">
-			<el-table-column type="index" label="序号" width="80" align="center" />
-			<el-table-column prop="title" label="通道名称" align="center" show-overflow-tooltip></el-table-column>
-			<el-table-column prop="number" label="注册码" align="center" show-overflow-tooltip></el-table-column>
-			<el-table-column prop="slaveId" label="设备地址" align="center" show-overflow-tooltip></el-table-column>
-			<el-table-column label="操作" width="100" align="center">
-				<template #default="scope">
-					<el-button size="small" text type="primary" v-auth="'detail'" @click="viewDetail(scope.row)">详情</el-button>
-					<el-button size="small" text type="info" v-auth="'del'" @click="onDel(scope.row)">删除</el-button>
-				</template>
-			</el-table-column>
-		</el-table>
-		<pagination v-if="params.total" :total="params.total" v-model:page="params.page" v-model:limit="params.size" @pagination="getList()" />
+	<div class="page">
+		<el-card shadow="nover">
+			<div class="search">
+				<el-form :model="params" :inline="true" ref="queryRef" @keyup.enter.native="getList(1)">
+					<el-form-item label="通道名称" prop="title">
+						<el-input v-model="params.title" placeholder="请输入通道名称" clearable style="width: 240px" />
+					</el-form-item>
+					<el-form-item label="注册码" prop="number">
+						<el-input v-model="params.number" placeholder="请输入注册码" clearable style="width: 240px" />
+					</el-form-item>
+					<el-form-item>
+						<el-button size="default" type="primary" class="ml10" @click="getList(1)">
+							<el-icon>
+								<ele-Search />
+							</el-icon>
+							查询
+						</el-button>
+						<el-button size="default" @click="resetQuery()">
+							<el-icon>
+								<ele-Refresh />
+							</el-icon>
+							重置
+						</el-button>
+						<el-button type="primary" @click="addOrEdit()" v-auth="'add'">
+							<el-icon>
+								<ele-FolderAdd />
+							</el-icon>
+							新增通道
+						</el-button>
+					</el-form-item>
+				</el-form>
+			</div>
+			<el-table :data="tableData" style="width: 100%" v-loading="loading">
+				<el-table-column type="index" label="序号" width="80" align="center" />
+				<el-table-column prop="title" label="通道名称" align="center" show-overflow-tooltip></el-table-column>
+				<el-table-column prop="number" label="注册码" align="center" show-overflow-tooltip></el-table-column>
+				<el-table-column prop="slaveId" label="设备地址" align="center" show-overflow-tooltip></el-table-column>
+				<el-table-column label="操作" width="100" align="center">
+					<template #default="scope">
+						<el-button size="small" text type="primary" v-auth="'detail'" @click="viewDetail(scope.row)">详情</el-button>
+						<el-button size="small" text type="info" v-auth="'del'" @click="onDel(scope.row)">删除</el-button>
+					</template>
+				</el-table-column>
+			</el-table>
+			<pagination v-if="params.total" :total="params.total" v-model:page="params.page" v-model:limit="params.size" @pagination="getList()" />
 
-		<EditForm ref="editFormRef" @getList="getList(1)"></EditForm>
-		<detailForm ref="detailFormRef" @getList="getList(1)"></detailForm>
-	</el-card>
+			<EditForm ref="editFormRef" @getList="getList(1)"></EditForm>
+			<detailForm ref="detailFormRef" @getList="getList(1)"></detailForm>
+		</el-card>
+	</div>
 </template>
 
 <script lang="ts" setup>

+ 2 - 2
src/views/iot/device/instance/index.vue

@@ -1,5 +1,5 @@
 <template>
-  <div class="system-dic-container">
+  <div class="page">
     <el-card shadow="nover" v-loading="batchLoading">
       <div class="system-user-search mb15">
         <el-form :model="tableData.param" ref="queryRef" :inline="true">
@@ -88,7 +88,7 @@
           </el-form-item>
         </el-form>
       </div>
-      <el-table :data="tableData.data" style="width: 100%" @selection-change="handleSelectionChange" v-loading="tableData.loading" max-height="calc(100vh - 320px)">
+      <el-table :data="tableData.data" style="width: 100%" @selection-change="handleSelectionChange" v-loading="tableData.loading">
         <el-table-column type="selection" width="55" align="center" />
         <el-table-column label="标识" prop="key" min-width="150" show-overflow-tooltip v-col="'key'" />
         <el-table-column label="设备名称" prop="name" min-width="160" show-overflow-tooltip v-col="'name'" />

+ 45 - 47
src/views/iot/device/product/index.vue

@@ -1,52 +1,50 @@
 <template>
-  <div class="system-dic-container">
+  <div class="page">
     <el-card shadow="nover">
-      <div class="system-user-search mb15">
-        <el-form :model="tableData.param" ref="queryRef" :inline="true" label-width="68px">
-          <el-form-item label="产品名称" prop="name">
-            <el-input v-model="tableData.param.name" placeholder="请输入产品名称" clearable size="default" style="width: 240px" @keyup.enter.native="typeList" />
-          </el-form-item>
-          <el-form-item label="设备类型" prop="deviceType">
-            <el-input v-model="tableData.param.deviceType" placeholder="请输入设备类型" clearable size="default" style="width: 240px" @keyup.enter.native="typeList" />
-          </el-form-item>
-          <el-form-item label="发布状态" prop="status" style="width: 200px;">
-            <el-select v-model="tableData.param.status" placeholder="发布状态" clearable size="default" style="width: 240px">
-              <el-option label="已发布" :value="1" />
-              <el-option label="未发布" :value="0" />
-            </el-select>
-          </el-form-item>
-          <el-form-item label="创建时间" prop="dateRange">
-            <el-date-picker v-model="tableData.param.dateRange" size="default" style="width: 240px" value-format="YYYY-MM-DD" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
-          </el-form-item>
-          <el-form-item>
-            <el-button size="default" type="primary" class="ml10" @click="typeList">
-              <el-icon>
-                <ele-Search />
-              </el-icon>
-              查询
-            </el-button>
-            <el-button size="default" @click="resetQuery(queryRef)">
-              <el-icon>
-                <ele-Refresh />
-              </el-icon>
-              重置
-            </el-button>
-            <el-button size="default" type="primary" class="ml10" @click="onOpenAddDic" v-auth="'add'">
-              <el-icon>
-                <ele-FolderAdd />
-              </el-icon>
-              新增产品
-            </el-button>
-            <el-button size="default" type="info" class="ml10" @click="onRowDel(null)" v-auth="'del'">
-              <el-icon>
-                <ele-Delete />
-              </el-icon>
-              删除
-            </el-button>
-          </el-form-item>
-        </el-form>
-      </div>
-      <el-table :data="tableData.data" style="width: 100%" @selection-change="handleSelectionChange" v-loading="tableData.loading" max-height="calc(100vh - 320px)">
+      <el-form :model="tableData.param" ref="queryRef" :inline="true" label-width="68px">
+        <el-form-item label="产品名称" prop="name">
+          <el-input v-model="tableData.param.name" placeholder="请输入产品名称" clearable size="default" style="width: 240px" @keyup.enter.native="typeList" />
+        </el-form-item>
+        <el-form-item label="设备类型" prop="deviceType">
+          <el-input v-model="tableData.param.deviceType" placeholder="请输入设备类型" clearable size="default" style="width: 240px" @keyup.enter.native="typeList" />
+        </el-form-item>
+        <el-form-item label="发布状态" prop="status" style="width: 200px;">
+          <el-select v-model="tableData.param.status" placeholder="发布状态" clearable size="default" style="width: 240px">
+            <el-option label="已发布" :value="1" />
+            <el-option label="未发布" :value="0" />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="创建时间" prop="dateRange">
+          <el-date-picker v-model="tableData.param.dateRange" size="default" style="width: 240px" value-format="YYYY-MM-DD" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
+        </el-form-item>
+        <el-form-item>
+          <el-button size="default" type="primary" class="ml10" @click="typeList">
+            <el-icon>
+              <ele-Search />
+            </el-icon>
+            查询
+          </el-button>
+          <el-button size="default" @click="resetQuery(queryRef)">
+            <el-icon>
+              <ele-Refresh />
+            </el-icon>
+            重置
+          </el-button>
+          <el-button size="default" type="primary" class="ml10" @click="onOpenAddDic" v-auth="'add'">
+            <el-icon>
+              <ele-FolderAdd />
+            </el-icon>
+            新增产品
+          </el-button>
+          <el-button size="default" type="info" class="ml10" @click="onRowDel(null)" v-auth="'del'">
+            <el-icon>
+              <ele-Delete />
+            </el-icon>
+            删除
+          </el-button>
+        </el-form-item>
+      </el-form>
+      <el-table :data="tableData.data" style="width: 100%" @selection-change="handleSelectionChange" v-loading="tableData.loading">
         <el-table-column type="selection" width="55" align="center" />
         <el-table-column label="标识" prop="key" min-width="130" show-overflow-tooltip v-col="'key'" />
         <el-table-column label="名称" prop="name" min-width="160" show-overflow-tooltip v-col="'name'" />

+ 1 - 1
src/views/iot/device/template/detail.vue

@@ -682,7 +682,7 @@ export default defineComponent({
 	},
 });
 </script>
-<style>
+<style scoped>
 .content {
 	background: #fff;
 	width: 100%;

+ 52 - 50
src/views/iot/device/template/index.vue

@@ -1,55 +1,57 @@
 <template>
-	<el-card shadow="nover" class="page-full">
-		<div class="search">
-			<el-form :model="params" :inline="true" ref="queryRef">
-				<el-form-item label="模板名称" prop="title">
-					<el-input v-model="params.title" placeholder="请输入模板名称" clearable style="width: 240px" @keyup.enter.native="getList(1)" />
-				</el-form-item>
-				<el-form-item>
-					<el-button size="default" type="primary" class="ml10" @click="getList(1)">
-						<el-icon>
-							<ele-Search />
-						</el-icon>
-						查询
-					</el-button>
-					<el-button size="default" @click="resetQuery()">
-						<el-icon>
-							<ele-Refresh />
-						</el-icon>
-						重置
-					</el-button>
-					<el-button type="primary" @click="addOrEdit()" v-auth="'add'">
-						<el-icon>
-							<ele-FolderAdd />
-						</el-icon>
-						新增模板
-					</el-button>
-				</el-form-item>
-			</el-form>
-		</div>
-		<el-table :data="tableData" style="width: 100%" v-loading="loading" max-height="calc(100vh - 255px)">
-			<el-table-column type="index" label="序号" width="80" align="center" />
-			<el-table-column prop="title" label="模板名称" align="center" show-overflow-tooltip></el-table-column>
-			<el-table-column prop="mode" label="模式" align="center" width="120" show-overflow-tooltip>
-				<template #default="{ row }">
-					{{ row.mode === 0 ? '顺序读取' : '批量读取' }}
-				</template>
-			</el-table-column>
-			<el-table-column prop="remarks" label="备注" align="center" show-overflow-tooltip></el-table-column>
-			<el-table-column label="操作" width="160" align="center">
-				<template #default="scope">
-					<el-button size="small" text type="primary" v-auth="'upload'" @click="handleImport(scope.row)">导入</el-button>
-					<el-button size="small" text type="primary" v-auth="'download'" @click="handleExport(scope.row)">导出</el-button>
-					<el-button size="small" text type="primary" v-auth="'detail'" @click="addOrEdit(scope.row)">详情</el-button>
-					<el-button size="small" text type="info" v-auth="'del'" @click="onDel(scope.row)">删除</el-button>
-				</template>
-			</el-table-column>
-		</el-table>
-		<pagination v-if="params.total" :total="params.total" v-model:page="params.page" v-model:limit="params.size" @pagination="getList()" />
+	<div class="page">
+		<el-card shadow="nover">
+			<div class="search">
+				<el-form :model="params" :inline="true" ref="queryRef">
+					<el-form-item label="模板名称" prop="title">
+						<el-input v-model="params.title" placeholder="请输入模板名称" clearable style="width: 240px" @keyup.enter.native="getList(1)" />
+					</el-form-item>
+					<el-form-item>
+						<el-button size="default" type="primary" class="ml10" @click="getList(1)">
+							<el-icon>
+								<ele-Search />
+							</el-icon>
+							查询
+						</el-button>
+						<el-button size="default" @click="resetQuery()">
+							<el-icon>
+								<ele-Refresh />
+							</el-icon>
+							重置
+						</el-button>
+						<el-button type="primary" @click="addOrEdit()" v-auth="'add'">
+							<el-icon>
+								<ele-FolderAdd />
+							</el-icon>
+							新增模板
+						</el-button>
+					</el-form-item>
+				</el-form>
+			</div>
+			<el-table :data="tableData" style="width: 100%" v-loading="loading">
+				<el-table-column type="index" label="序号" width="80" align="center" />
+				<el-table-column prop="title" label="模板名称" align="center" show-overflow-tooltip></el-table-column>
+				<el-table-column prop="mode" label="模式" align="center" width="120" show-overflow-tooltip>
+					<template #default="{ row }">
+						{{ row.mode === 0 ? '顺序读取' : '批量读取' }}
+					</template>
+				</el-table-column>
+				<el-table-column prop="remarks" label="备注" align="center" show-overflow-tooltip></el-table-column>
+				<el-table-column label="操作" width="160" align="center">
+					<template #default="scope">
+						<el-button size="small" text type="primary" v-auth="'upload'" @click="handleImport(scope.row)">导入</el-button>
+						<el-button size="small" text type="primary" v-auth="'download'" @click="handleExport(scope.row)">导出</el-button>
+						<el-button size="small" text type="primary" v-auth="'detail'" @click="addOrEdit(scope.row)">详情</el-button>
+						<el-button size="small" text type="info" v-auth="'del'" @click="onDel(scope.row)">删除</el-button>
+					</template>
+				</el-table-column>
+			</el-table>
+			<pagination v-if="params.total" :total="params.total" v-model:page="params.page" v-model:limit="params.size" @pagination="getList()" />
 
-		<EditForm ref="editFormRef" @getList="getList(1)"></EditForm>
-		<ImportFile ref="importFile" />
-	</el-card>
+			<EditForm ref="editFormRef" @getList="getList(1)"></EditForm>
+			<ImportFile ref="importFile" />
+		</el-card>
+	</div>
 </template>
 
 <script lang="ts" setup>

+ 23 - 23
src/views/iot/ice104/device/index.vue

@@ -7,8 +7,8 @@
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 -->
 <template>
-	<div class="page page-full">
-		<div class="search">
+	<div class="page">
+		<el-card shadow="nover">
 			<el-form :model="params" :inline="true" ref="queryRef" @submit.prevent>
 				<el-form-item label="设备名称" prop="title">
 					<el-input v-model="params.title" placeholder="请输入设备名称" clearable style="width: 240px" @keyup.enter.native="getList(1)" />
@@ -34,27 +34,27 @@
 					</el-button>
 				</el-form-item>
 			</el-form>
-		</div>
-		<el-table :data="tableData" style="width: 100%" v-loading="loading" max-height="calc(100vh - 255px)">
-			<el-table-column v-col="'index'" type="index" label="序号" width="80" align="center" />
-			<el-table-column v-col="'title'" prop="title" label="设备名称" align="center" show-overflow-tooltip></el-table-column>
-			<el-table-column v-col="'commonAddr'" prop="commonAddr" label="设备通用地址" min-width="120" align="center" show-overflow-tooltip></el-table-column>
-			<el-table-column v-col="'subCode'" prop="subCode" label="mac地址" min-width="120" align="center" show-overflow-tooltip></el-table-column>
-			<el-table-column v-col="'templateNumber'" prop="templateNumber" label="模版编号" align="center" show-overflow-tooltip></el-table-column>
-			<el-table-column v-col="'productKey'" prop="productKey" label="产品key" align="center" show-overflow-tooltip></el-table-column>
-			<el-table-column v-col="'deviceKey'" prop="deviceKey" label="设备key" align="center" show-overflow-tooltip></el-table-column>
-			<el-table-column v-col="'number'" prop="number" label="设备编码" min-width="120" align="center" show-overflow-tooltip></el-table-column>
-			<el-table-column v-col="'createdAt'" prop="createdAt" label="创建时间" min-width="160" align="center"></el-table-column>
-			<el-table-column v-col="'updatedAt'" prop="updatedAt" label="更新时间" min-width="160" align="center"></el-table-column>
-			<el-table-column v-col="'handle'" fixed="right" label="操作" width="100" align="center">
-				<template #default="scope">
-					<el-button size="small" v-auth="'del'" text type="primary" @click="toDetailPage(scope.row)">详情</el-button>
-					<el-button size="small" v-auth="'detail'" text type="info" @click="onDel(scope.row)">删除</el-button>
-				</template>
-			</el-table-column>
-		</el-table>
-		<pagination v-if="params.total" :total="params.total" v-model:page="params.pageNum" v-model:limit="params.pageSize" @pagination="getList()" />
-		<EditForm ref="editFormRef" @updateList="getList(1)"></EditForm>
+			<el-table :data="tableData" style="width: 100%" v-loading="loading">
+				<el-table-column v-col="'index'" type="index" label="序号" width="80" align="center" />
+				<el-table-column v-col="'title'" prop="title" label="设备名称" align="center" show-overflow-tooltip></el-table-column>
+				<el-table-column v-col="'commonAddr'" prop="commonAddr" label="设备通用地址" min-width="120" align="center" show-overflow-tooltip></el-table-column>
+				<el-table-column v-col="'subCode'" prop="subCode" label="mac地址" min-width="120" align="center" show-overflow-tooltip></el-table-column>
+				<el-table-column v-col="'templateNumber'" prop="templateNumber" label="模版编号" align="center" show-overflow-tooltip></el-table-column>
+				<el-table-column v-col="'productKey'" prop="productKey" label="产品key" align="center" show-overflow-tooltip></el-table-column>
+				<el-table-column v-col="'deviceKey'" prop="deviceKey" label="设备key" align="center" show-overflow-tooltip></el-table-column>
+				<el-table-column v-col="'number'" prop="number" label="设备编码" min-width="120" align="center" show-overflow-tooltip></el-table-column>
+				<el-table-column v-col="'createdAt'" prop="createdAt" label="创建时间" min-width="160" align="center"></el-table-column>
+				<el-table-column v-col="'updatedAt'" prop="updatedAt" label="更新时间" min-width="160" align="center"></el-table-column>
+				<el-table-column v-col="'handle'" fixed="right" label="操作" width="100" align="center">
+					<template #default="scope">
+						<el-button size="small" v-auth="'del'" text type="primary" @click="toDetailPage(scope.row)">详情</el-button>
+						<el-button size="small" v-auth="'detail'" text type="info" @click="onDel(scope.row)">删除</el-button>
+					</template>
+				</el-table-column>
+			</el-table>
+			<pagination v-if="params.total" :total="params.total" v-model:page="params.pageNum" v-model:limit="params.pageSize" @pagination="getList()" />
+			<EditForm ref="editFormRef" @updateList="getList(1)"></EditForm>
+		</el-card>
 	</div>
 </template>
 

+ 23 - 23
src/views/iot/ice104/template/index.vue

@@ -7,8 +7,8 @@
  * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 -->
 <template>
-	<div class="page page-full">
-		<div class="search">
+	<div class="page">
+		<el-card shadow="nover">
 			<el-form :model="params" :inline="true" ref="queryRef">
 				<el-form-item label="模版名称" prop="title">
 					<el-input v-model="params.title" placeholder="请输入模版名称" clearable style="width: 240px" @keyup.enter.native="getList(1)" />
@@ -34,27 +34,27 @@
 					</el-button>
 				</el-form-item>
 			</el-form>
-		</div>
-		<el-table :data="tableData" style="width: 100%" v-loading="loading">
-			<el-table-column v-col="'index'" type="index" label="序号" width="80" align="center" />
-			<el-table-column v-col="'title'" prop="title" label="模版名称" align="center" show-overflow-tooltip></el-table-column>
-			<el-table-column v-col="'number'" prop="number" label="模版编码" align="center" show-overflow-tooltip></el-table-column>
-			<el-table-column v-col="'status'" prop="status" label="状态" align="center" show-overflow-tooltip>
-				<template #default="scope">
-					<el-tag type="success" size="small" v-if="scope.row.status == 1">启用</el-tag>
-					<el-tag type="info" size="small" v-if="scope.row.status == 0">停用</el-tag>
-				</template>
-			</el-table-column>
-			<el-table-column v-col="'remarks'" prop="remarks" label="备注" align="center" show-overflow-tooltip></el-table-column>
-			<el-table-column v-col="'handle'" fixed="right" label="操作" width="100" align="center">
-				<template #default="scope">
-					<el-button v-auth="'detail'" size="small" text type="primary" @click="toDetailPage(scope.row)">详情</el-button>
-					<el-button v-auth="'del'" size="small" text type="info" @click="onDel(scope.row)">删除</el-button>
-				</template>
-			</el-table-column>
-		</el-table>
-		<pagination v-if="params.total" :total="params.total" v-model:page="params.page" v-model:limit="params.size" @pagination="getList()" />
-		<EditForm ref="editFormRef" @updateList="getList(1)"></EditForm>
+			<el-table :data="tableData" style="width: 100%" v-loading="loading">
+				<el-table-column v-col="'index'" type="index" label="序号" width="80" align="center" />
+				<el-table-column v-col="'title'" prop="title" label="模版名称" align="center" show-overflow-tooltip></el-table-column>
+				<el-table-column v-col="'number'" prop="number" label="模版编码" align="center" show-overflow-tooltip></el-table-column>
+				<el-table-column v-col="'status'" prop="status" label="状态" align="center" show-overflow-tooltip>
+					<template #default="scope">
+						<el-tag type="success" size="small" v-if="scope.row.status == 1">启用</el-tag>
+						<el-tag type="info" size="small" v-if="scope.row.status == 0">停用</el-tag>
+					</template>
+				</el-table-column>
+				<el-table-column v-col="'remarks'" prop="remarks" label="备注" align="center" show-overflow-tooltip></el-table-column>
+				<el-table-column v-col="'handle'" fixed="right" label="操作" width="100" align="center">
+					<template #default="scope">
+						<el-button v-auth="'detail'" size="small" text type="primary" @click="toDetailPage(scope.row)">详情</el-button>
+						<el-button v-auth="'del'" size="small" text type="info" @click="onDel(scope.row)">删除</el-button>
+					</template>
+				</el-table-column>
+			</el-table>
+			<pagination v-if="params.total" :total="params.total" v-model:page="params.page" v-model:limit="params.size" @pagination="getList()" />
+			<EditForm ref="editFormRef" @updateList="getList(1)"></EditForm>
+		</el-card>
 	</div>
 </template>
 

+ 40 - 42
src/views/iot/network/server/component/list.vue

@@ -1,46 +1,44 @@
 <template>
-  <div>
-    <el-table v-loading="loading" :data="data" style="width: 100%" max-height="calc(100vh - 270px)">
-      <el-table-column align="center" prop="id" label="ID" width="100" v-col="'id'" />
-      <!-- <el-table-column align="center" prop="server" label="服务器"/> -->
-      <el-table-column align="center" prop="name" label="名称" v-col="'name'" />
-      <el-table-column align="center" prop="types" v-col="'types'" label="类型" :formatter="(a: any) => typesFormat(a.types)" />
-      <el-table-column align="center" prop="addr" label="地址" v-col="'addr'" />
-      <el-table-column show-overflow-tooltip align="center" prop="createdAt" label="创建时间" width="170" v-col="'createdAt'" />
-      <!-- <el-table-column align="center" prop="last" label="最近上线"/> -->
-      <el-table-column align="center" prop="types" label="状态" v-col="'status'">
-        <template #default="scope">
-          <el-tag v-if="!scope.row.status" class="ml-2" type="info">未启动</el-tag>
-          <el-tag v-else class="ml-2" type="success">启动</el-tag>
-        </template>
-      </el-table-column>
-      <el-table-column align="center" label="操作" width="200" v-col="'auth'">
-        <template #default="scope">
-
-          <el-button @click="toDetail(scope.row.id)" size="small" type="text" v-auth="'detail'">详情</el-button>
-          <el-button size="small" link key="info" type="info" v-auth="'edit'" @click="toEdit(scope.row.id)">编辑</el-button>
-
-          <el-popover placement="bottom" :width="170" trigger="click">
-            <template #reference>
-              <el-button size="small" type="text" class="more-btn" @click="isShowMore = !isShowMore" v-auth="'more'">更多
-                <i style="margin-left: 2px;" :class="isShowMore ? 'fa fa-angle-down' : 'fa fa-angle-up'"></i>
-              </el-button>
-            </template>
-            <div class="more-opearte-wrap">
-              <el-button @click="onChangeStatus(scope.row.id, 1)" :disabled="scope.row.status" link size="small" key="success" type="success" v-auth="'on'">启 用</el-button>
-              <el-divider direction="vertical" />
-              <el-button @click="onChangeStatus(scope.row.id, 0)" :disabled="!scope.row.status" link size="small" key="warning" type="warning" v-auth="'off'">禁 用</el-button>
-              <el-divider direction="vertical" />
-              <el-button @click="onRowDel(scope.row)" link size="small" key="danger" type="danger" v-auth="'delete'">删 除</el-button>
-            </div>
-          </el-popover>
-        </template>
-      </el-table-column>
-    </el-table>
-    <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" class="mt15" :pager-count="5" :page-sizes="[10, 20, 30, 50, 100, 200, 300, 500]" v-model:current-page="param.page" background v-model:page-size="param.pageSize"
-      layout="total, sizes, prev, pager, next, jumper" :total="total">
-    </el-pagination>
-  </div>
+  <el-table v-loading="loading" :data="data" style="width: 100%">
+    <el-table-column align="center" prop="id" label="ID" width="100" v-col="'id'" />
+    <!-- <el-table-column align="center" prop="server" label="服务器"/> -->
+    <el-table-column align="center" prop="name" label="名称" v-col="'name'" />
+    <el-table-column align="center" prop="types" v-col="'types'" label="类型" :formatter="(a: any) => typesFormat(a.types)" />
+    <el-table-column align="center" prop="addr" label="地址" v-col="'addr'" />
+    <el-table-column show-overflow-tooltip align="center" prop="createdAt" label="创建时间" width="170" v-col="'createdAt'" />
+    <!-- <el-table-column align="center" prop="last" label="最近上线"/> -->
+    <el-table-column align="center" prop="types" label="状态" v-col="'status'">
+      <template #default="scope">
+        <el-tag v-if="!scope.row.status" class="ml-2" type="info">未启动</el-tag>
+        <el-tag v-else class="ml-2" type="success">启动</el-tag>
+      </template>
+    </el-table-column>
+    <el-table-column align="center" label="操作" width="200" v-col="'auth'">
+      <template #default="scope">
+
+        <el-button @click="toDetail(scope.row.id)" size="small" type="text" v-auth="'detail'">详情</el-button>
+        <el-button size="small" link key="info" type="info" v-auth="'edit'" @click="toEdit(scope.row.id)">编辑</el-button>
+
+        <el-popover placement="bottom" :width="170" trigger="click">
+          <template #reference>
+            <el-button size="small" type="text" class="more-btn" @click="isShowMore = !isShowMore" v-auth="'more'">更多
+              <i style="margin-left: 2px;" :class="isShowMore ? 'fa fa-angle-down' : 'fa fa-angle-up'"></i>
+            </el-button>
+          </template>
+          <div class="more-opearte-wrap">
+            <el-button @click="onChangeStatus(scope.row.id, 1)" :disabled="scope.row.status" link size="small" key="success" type="success" v-auth="'on'">启 用</el-button>
+            <el-divider direction="vertical" />
+            <el-button @click="onChangeStatus(scope.row.id, 0)" :disabled="!scope.row.status" link size="small" key="warning" type="warning" v-auth="'off'">禁 用</el-button>
+            <el-divider direction="vertical" />
+            <el-button @click="onRowDel(scope.row)" link size="small" key="danger" type="danger" v-auth="'delete'">删 除</el-button>
+          </div>
+        </el-popover>
+      </template>
+    </el-table-column>
+  </el-table>
+  <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" class="mt15" :pager-count="5" :page-sizes="[10, 20, 30, 50, 100, 200, 300, 500]" v-model:current-page="param.page" background v-model:page-size="param.pageSize"
+    layout="total, sizes, prev, pager, next, jumper" :total="total">
+  </el-pagination>
 </template>
 
 <script lang="ts">

+ 24 - 25
src/views/iot/network/server/index.vue

@@ -1,30 +1,29 @@
 <template>
-  <el-card shadow="nover" class="page-full">
-    <el-form :inline="true" label-width="82px" @keyup.enter="searchData">
-      <el-form-item label="服务器名称">
-        <el-input size="default" style="width: 200px;margin-left: 20px;" class="search-input" v-model="key" placeholder="请输入搜索关键字" clearable>
-        </el-input>
-      </el-form-item>
-      <el-form-item>
-        <el-button size="default" type="primary" class="ml10" v-auth="'query'" @click="searchData">
-          <el-icon>
-            <ele-Search />
-          </el-icon>
-          查询
-        </el-button>
-        <el-button @click="toPage" size="default" type="primary" v-auth="'add'" class="ml10">
-          <el-icon>
-            <ele-FolderAdd />
-          </el-icon>
-          新建
-        </el-button>
-      </el-form-item>
-    </el-form>
-    <!-- 页面主要内容 -->
-    <tempalte>
+  <div class="page">
+    <el-card shadow="nover">
+      <el-form :inline="true" label-width="82px" @keyup.enter="searchData">
+        <el-form-item label="服务器名称">
+          <el-input size="default" style="width: 200px;margin-left: 20px;" class="search-input" v-model="key" placeholder="请输入搜索关键字" clearable>
+          </el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-button size="default" type="primary" class="ml10" v-auth="'query'" @click="searchData">
+            <el-icon>
+              <ele-Search />
+            </el-icon>
+            查询
+          </el-button>
+          <el-button @click="toPage" size="default" type="primary" v-auth="'add'" class="ml10">
+            <el-icon>
+              <ele-FolderAdd />
+            </el-icon>
+            新建
+          </el-button>
+        </el-form-item>
+      </el-form>
       <list-server ref="listRef" :keyWord="keyWord" />
-    </tempalte>
-  </el-card>
+    </el-card>
+  </div>
 </template>
 
 <script lang="ts" setup>

+ 36 - 38
src/views/iot/network/tunnel/component/list.vue

@@ -1,42 +1,40 @@
 <template>
-  <div>
-    <el-table v-loading="loading" :data="data" style="width: 100%" max-height="calc(100vh - 255px)">
-      <el-table-column align="center" prop="id" v-col="'id'" label="ID" width="100" />
-      <el-table-column align="center" prop="name" v-col="'name'" label="名称" />
-      <el-table-column align="center" prop="types" v-col="'type'" label="类型" :formatter="(a: any) => typesFormat(a.types)" />
-      <el-table-column align="center" prop="addr" v-col="'address'" min-width="120" label="地址" />
-      <el-table-column show-overflow-tooltip align="center" v-col="'createTime'" prop="createdAt" label="创建时间" width="170" />
-      <el-table-column align="center" prop="types" v-col="'status'" label="状态">
-        <template #default="scope">
-          <el-tag size="medium" v-if="!scope.row.status" class="ml-2" type="info">未启动</el-tag>
-          <el-tag size="medium" v-else class="ml-2" type="success">启动</el-tag>
-        </template>
-      </el-table-column>
-      <el-table-column align="center" label="操作" v-col="'auth'" width="160">
-        <template #default="scope">
-          <el-button @click="toDetail(scope.row.id)" size="small" v-auth="'detail'" type="text">详情</el-button>
-          <el-button size="small" link key="info" type="info" v-auth="'edit'" @click="toEdit(scope.row.id)">编辑</el-button>
-          <el-popover placement="bottom" :width="160" trigger="click">
-            <template #reference>
-              <el-button size="small" type="text" v-auth="'more'" class="more-btn" @click="isShowMore = !isShowMore">更多
-                <i style="margin-left: 2px;" :class="isShowMore ? 'fa fa-angle-down' : 'fa fa-angle-up'"></i>
-              </el-button>
-            </template>
-            <div class="more-opearte-wrap">
-              <el-button @click="onChangeStatus(scope.row.id, 1)" :disabled="scope.row.status" v-auth="'on'" link size="small" key="success" type="success">启 用</el-button>
-              <el-divider direction="vertical" />
-              <el-button @click="onChangeStatus(scope.row.id, 0)" :disabled="!scope.row.status" v-auth="'off'" link size="small" key="warning" type="warning">禁 用</el-button>
-              <el-divider direction="vertical" />
-              <el-button @click="onRowDel(scope.row)" link size="small" key="danger" v-auth="'off'" type="danger">删 除</el-button>
-            </div>
-          </el-popover>
-        </template>
-      </el-table-column>
-    </el-table>
-    <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" class="mt15" :pager-count="5" :page-sizes="[10, 20, 30, 50, 100, 200, 300, 500]" v-model:current-page="param.page" background v-model:page-size="param.pageSize"
-      layout="total, sizes, prev, pager, next, jumper" :total="total">
-    </el-pagination>
-  </div>
+  <el-table v-loading="loading" :data="data" style="width: 100%">
+    <el-table-column align="center" prop="id" v-col="'id'" label="ID" width="100" />
+    <el-table-column align="center" prop="name" v-col="'name'" label="名称" />
+    <el-table-column align="center" prop="types" v-col="'type'" label="类型" :formatter="(a: any) => typesFormat(a.types)" />
+    <el-table-column align="center" prop="addr" v-col="'address'" min-width="120" label="地址" />
+    <el-table-column show-overflow-tooltip align="center" v-col="'createTime'" prop="createdAt" label="创建时间" width="170" />
+    <el-table-column align="center" prop="types" v-col="'status'" label="状态">
+      <template #default="scope">
+        <el-tag size="medium" v-if="!scope.row.status" class="ml-2" type="info">未启动</el-tag>
+        <el-tag size="medium" v-else class="ml-2" type="success">启动</el-tag>
+      </template>
+    </el-table-column>
+    <el-table-column align="center" label="操作" v-col="'auth'" width="160">
+      <template #default="scope">
+        <el-button @click="toDetail(scope.row.id)" size="small" v-auth="'detail'" type="text">详情</el-button>
+        <el-button size="small" link key="info" type="info" v-auth="'edit'" @click="toEdit(scope.row.id)">编辑</el-button>
+        <el-popover placement="bottom" :width="160" trigger="click">
+          <template #reference>
+            <el-button size="small" type="text" v-auth="'more'" class="more-btn" @click="isShowMore = !isShowMore">更多
+              <i style="margin-left: 2px;" :class="isShowMore ? 'fa fa-angle-down' : 'fa fa-angle-up'"></i>
+            </el-button>
+          </template>
+          <div class="more-opearte-wrap">
+            <el-button @click="onChangeStatus(scope.row.id, 1)" :disabled="scope.row.status" v-auth="'on'" link size="small" key="success" type="success">启 用</el-button>
+            <el-divider direction="vertical" />
+            <el-button @click="onChangeStatus(scope.row.id, 0)" :disabled="!scope.row.status" v-auth="'off'" link size="small" key="warning" type="warning">禁 用</el-button>
+            <el-divider direction="vertical" />
+            <el-button @click="onRowDel(scope.row)" link size="small" key="danger" v-auth="'off'" type="danger">删 除</el-button>
+          </div>
+        </el-popover>
+      </template>
+    </el-table-column>
+  </el-table>
+  <el-pagination @size-change="onHandleSizeChange" @current-change="onHandleCurrentChange" class="mt15" :pager-count="5" :page-sizes="[10, 20, 30, 50, 100, 200, 300, 500]" v-model:current-page="param.page" background v-model:page-size="param.pageSize"
+    layout="total, sizes, prev, pager, next, jumper" :total="total">
+  </el-pagination>
 </template>
 
 <script lang="ts">

+ 24 - 25
src/views/iot/network/tunnel/index.vue

@@ -1,30 +1,29 @@
 <template>
-  <el-card shadow="nover" class="page-full">
-    <el-form :inline="true" label-width="68px">
-      <el-form-item label="通道名称" @keyup.enter.native="searchData()">
-        <el-input size="default" style="width: 200px;margin-left: 20px;" class="search-input" v-model="key" placeholder="请输入搜索关键字" clearable>
-        </el-input>
-      </el-form-item>
-      <el-form-item>
-        <el-button size="default" v-auth="'query'" type="primary" class="ml10" @click="searchData">
-          <el-icon>
-            <ele-Search />
-          </el-icon>
-          查询
-        </el-button>
-        <el-button @click="toPage" v-auth="'add'" size="default" type="primary" class="ml10">
-          <el-icon>
-            <ele-FolderAdd />
-          </el-icon>
-          新建
-        </el-button>
-      </el-form-item>
-    </el-form>
-    <!-- 页面主要内容 -->
-    <tempalte>
+  <div class="page">
+    <el-card shadow="nover">
+      <el-form :inline="true" label-width="68px">
+        <el-form-item label="通道名称" @keyup.enter.native="searchData()">
+          <el-input size="default" style="width: 200px;margin-left: 20px;" class="search-input" v-model="key" placeholder="请输入搜索关键字" clearable>
+          </el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-button size="default" v-auth="'query'" type="primary" class="ml10" @click="searchData">
+            <el-icon>
+              <ele-Search />
+            </el-icon>
+            查询
+          </el-button>
+          <el-button @click="toPage" v-auth="'add'" size="default" type="primary" class="ml10">
+            <el-icon>
+              <ele-FolderAdd />
+            </el-icon>
+            新建
+          </el-button>
+        </el-form-item>
+      </el-form>
       <list-tunnel ref="listRef" :keyWord="keyWord" />
-    </tempalte>
-  </el-card>
+    </el-card>
+  </div>
 </template>
 
 <script lang="ts" setup>

+ 50 - 55
src/views/iot/noticeservices/config/index.vue

@@ -1,53 +1,37 @@
 <template>
-  <div class="system-dic-container">
+  <div class="page">
     <el-card shadow="nover">
-      <div>
-        <el-row>
-          <el-col :span="12"   v-for="item in notice_send_gateway"  >
-            <div class="ant-cards " v-if="item.status==1">
-              <div class="ant-card-body line">
-                <div class="content">
-                  <div class="left">
-                    <img
-                      :src="'/imgs/notice/'+item.value+'.svg'"
-                      alt="dingding"
-                      style="height: 100px;width: 100px;"
-                      v-col="'image'"
-                    />
-                    <div class="context">
-                      <div class="title" v-col="'title'">{{item.label}}</div>
-                      <div class="desc" v-col="'desc'">
-                        {{item.remark}}
-                      </div>
+      <el-row>
+        <el-col :span="12" v-for="item in notice_send_gateway">
+          <div class="ant-cards " v-if="item.status == 1">
+            <div class="ant-card-body line">
+              <div class="content">
+                <div class="left">
+                  <img :src="'/imgs/notice/' + item.value + '.svg'" alt="dingding" style="height: 100px;width: 100px;" v-col="'image'" />
+                  <div class="context">
+                    <div class="title" v-col="'title'">{{ item.label }}</div>
+                    <div class="desc" v-col="'desc'">
+                      {{ item.remark }}
                     </div>
                   </div>
-                   <div class="right"  v-col="'handle'">
-                    <div
-                      class="ant-space ant-space-horizontal ant-space-align-center"
-                      style="gap: 8px;"
-                    >
-                      <div class="ant-space-item" style="" v-auth="'setting'">
-                        <router-link :to="'/iotmanager/noticeservices/config/setting/'+item.value" class="link-type" >
+                </div>
+                <div class="right" v-col="'handle'">
+                  <div class="ant-space ant-space-horizontal ant-space-align-center" style="gap: 8px;">
+                    <div class="ant-space-item" style="" v-auth="'setting'">
+                      <router-link :to="'/iotmanager/noticeservices/config/setting/' + item.value" class="link-type">
                         <div class="action">
-                            <div class="btn">
-                              <img
-                                src="/imgs/notice/icon_m.png"
-                                style="height: 40px;width: 40px;"
-                              />
-                              <div>管理</div>
-                            </div>
+                          <div class="btn">
+                            <img src="/imgs/notice/icon_m.png" style="height: 40px;width: 40px;" />
+                            <div>管理</div>
+                          </div>
                         </div>
-                        </router-link>
-                      </div>
-                      <div class="ant-space-item" v-auth="'edit'">
-                        <div class="action" @click="onOpenEdit(item)">
-                            <div class="btn">
-                              <img
-                              src="/imgs/notice/icon_c.png"
-                                style="height: 40px;width: 40px;"
-                              />
-                              <div>配置</div>
-                            </div>
+                      </router-link>
+                    </div>
+                    <div class="ant-space-item" v-auth="'edit'">
+                      <div class="action" @click="onOpenEdit(item)">
+                        <div class="btn">
+                          <img src="/imgs/notice/icon_c.png" style="height: 40px;width: 40px;" />
+                          <div>配置</div>
                         </div>
                       </div>
                     </div>
@@ -55,19 +39,18 @@
                 </div>
               </div>
             </div>
-          </el-col>
-
-        </el-row>
-      </div>
+          </div>
+        </el-col>
+      </el-row>
     </el-card>
 
-   <EditDic ref="editDicRef" @dataList="dataList" />
-	 <!--<LevelDic ref="levelDicRef" @dataList="dataList" />-->
+    <EditDic ref="editDicRef" @dataList="dataList" />
+    <!--<LevelDic ref="levelDicRef" @dataList="dataList" />-->
   </div>
 </template>
 
 <script lang="ts">
-import { toRefs, reactive, onMounted, ref, defineComponent,getCurrentInstance } from "vue";
+import { toRefs, reactive, onMounted, ref, defineComponent, getCurrentInstance } from "vue";
 import { ElMessageBox, ElMessage, FormInstance } from "element-plus";
 import EditDic from './component/edit.vue';
 // import LevelDic from './component/level.vue';
@@ -99,7 +82,7 @@ interface TableDataState {
 
 export default defineComponent({
   name: "setlist",
-   components: { EditDic },
+  components: { EditDic },
 
   setup() {
     const addDicRef = ref();
@@ -178,7 +161,7 @@ export default defineComponent({
             dataList();
           });
         })
-        .catch(() => {});
+        .catch(() => { });
     };
 
     // 页面加载时
@@ -225,10 +208,12 @@ export default defineComponent({
 </script>
 
 <style>
-.line{
-  border: 1px solid var(--next-border-color-light);;
+.line {
+  border: 1px solid var(--next-border-color-light);
+  ;
 
 }
+
 .ant-cards {
   box-sizing: border-box;
   margin: 0;
@@ -243,6 +228,7 @@ export default defineComponent({
   border-radius: 2px;
   padding: 10px;
 }
+
 .ant-card-body {
   padding: 24px;
 
@@ -251,9 +237,11 @@ export default defineComponent({
 .ant-space {
   display: inline-flex;
 }
+
 .ant-space-align-center {
   align-items: center;
 }
+
 .ant-btn {
   line-height: 1.5715;
   position: relative;
@@ -275,12 +263,14 @@ export default defineComponent({
   border-radius: 2px;
 
 }
+
 .ant-btn-link {
   color: #5b8fd9;
   border-color: transparent;
   background: transparent;
   box-shadow: none;
 }
+
 .context {
   display: flex;
   flex-direction: column;
@@ -288,9 +278,11 @@ export default defineComponent({
   height: 100px;
   margin-left: 15px;
 }
+
 .context .title {
   font-size: 24px;
 }
+
 .context .desc {
   font-size: 14px;
 }
@@ -300,9 +292,11 @@ export default defineComponent({
   align-items: center;
   justify-content: space-between;
 }
+
 .content .left {
   display: flex;
 }
+
 .content .right .action {
   display: flex;
   justify-content: center;
@@ -310,6 +304,7 @@ export default defineComponent({
   height: 100px;
   border: 1px solid #5b8fd9;
 }
+
 .content .right .action .btn {
   display: flex;
   flex-direction: column;

+ 26 - 30
src/views/iot/noticeservices/log/index.vue

@@ -1,38 +1,34 @@
 <template>
-	<div class="system-dic-container">
+	<div class="page">
 		<el-card shadow="nover">
-			<div class="system-user-search mb15">
-				<el-form :model="tableData.param" ref="queryRef" :inline="true" label-width="68px">
-					<el-form-item label="创建时间" prop="dateRange">
-						<el-date-picker v-model="tableData.param.dateRange" size="default" style="width: 240px" value-format="YYYY-MM-DD" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
-					</el-form-item>
-					<el-form-item>
-						<el-button size="default" type="primary" class="ml10" @click="typeList">
-							<el-icon>
-								<ele-Search />
-							</el-icon>
-							查询
-						</el-button>
-						<el-button size="default" @click="resetQuery(queryRef)">
-							<el-icon>
-								<ele-Refresh />
-							</el-icon>
-							重置
-						</el-button>
-						<el-button size="default" type="info" class="ml10" @click="onRowDel(null)" v-auth="'del'">
-							<el-icon>
-								<ele-Delete />
-							</el-icon>
-							删除
-						</el-button>
-					</el-form-item>
-				</el-form>
-			</div>
+			<el-form :model="tableData.param" ref="queryRef" :inline="true" label-width="68px">
+				<el-form-item label="创建时间" prop="dateRange">
+					<el-date-picker v-model="tableData.param.dateRange" size="default" style="width: 240px" value-format="YYYY-MM-DD" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
+				</el-form-item>
+				<el-form-item>
+					<el-button size="default" type="primary" class="ml10" @click="typeList">
+						<el-icon>
+							<ele-Search />
+						</el-icon>
+						查询
+					</el-button>
+					<el-button size="default" @click="resetQuery(queryRef)">
+						<el-icon>
+							<ele-Refresh />
+						</el-icon>
+						重置
+					</el-button>
+					<el-button size="default" type="info" class="ml10" @click="onRowDel(null)" v-auth="'del'">
+						<el-icon>
+							<ele-Delete />
+						</el-icon>
+						删除
+					</el-button>
+				</el-form-item>
+			</el-form>
 			<el-table :data="tableData.data" style="width: 100%" @selection-change="handleSelectionChange" v-loading="tableData.loading">
 				<el-table-column type="selection" width="55" align="center" />
-
 				<el-table-column label="ID" align="center" prop="id" width="100" v-col="'ID'" />
-
 				<el-table-column label="标题" prop="title" align="center" show-overflow-tooltip v-col="'title'" />
 				<el-table-column label="发送方式" prop="gateway" align="center" show-overflow-tooltip v-col="'title'" />
 				<el-table-column prop="status" label="发送状态" align="center" v-col="'status'">

+ 1 - 1
src/views/iot/operate/remoteconf/index.vue

@@ -1,5 +1,5 @@
 <template>
-  <div class="system-dic-container">
+  <div class="page">
     <el-card shadow="nover">
       <h2>远程配置</h2>
       <div class="container">

+ 31 - 33
src/views/iot/ota-update/module/index.vue

@@ -1,38 +1,36 @@
 <template>
-  <div class="ota-module-container">
+  <div class="page">
     <el-card shadow="nover">
-      <div class="ota-module-search mb15">
-        <el-form :model="tableData.param" ref="queryRef" :inline="true" label-width="68px" @keyup.enter.native="getList(1)">
-          <el-form-item label="模块名称" prop="name">
-            <el-input v-model="tableData.param.name" placeholder="请输入模块名称" clearable size="default" style="width: 200px;" />
-          </el-form-item>
-          <el-form-item label="所属产品" prop="productId">
-            <el-select v-model="tableData.param.productId" clearable filterable placeholder="请选择产品">
-              <el-option v-for="item in productData" :key="item.id" :label="item.name" :value="item.id.toString()" value-key="id"> </el-option>
-            </el-select>
-          </el-form-item>
-          <el-form-item>
-            <el-button size="default" type="primary" class="ml10" @click="getList(1)">
-              <el-icon>
-                <ele-Search />
-              </el-icon>
-              查询
-            </el-button>
-            <el-button size="default" @click="resetQuery(queryRef)">
-              <el-icon>
-                <ele-Refresh />
-              </el-icon>
-              重置
-            </el-button>
-            <el-button type="primary" v-auth="'add'" @click="onOpenAddDic()">
-              <el-icon>
-                <ele-FolderAdd />
-              </el-icon>
-              添加模块
-            </el-button>
-          </el-form-item>
-        </el-form>
-      </div>
+      <el-form :model="tableData.param" ref="queryRef" :inline="true" label-width="68px" @keyup.enter.native="getList(1)">
+        <el-form-item label="模块名称" prop="name">
+          <el-input v-model="tableData.param.name" placeholder="请输入模块名称" clearable size="default" style="width: 200px;" />
+        </el-form-item>
+        <el-form-item label="所属产品" prop="productId">
+          <el-select v-model="tableData.param.productId" clearable filterable placeholder="请选择产品">
+            <el-option v-for="item in productData" :key="item.id" :label="item.name" :value="item.id.toString()" value-key="id"> </el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-button size="default" type="primary" class="ml10" @click="getList(1)">
+            <el-icon>
+              <ele-Search />
+            </el-icon>
+            查询
+          </el-button>
+          <el-button size="default" @click="resetQuery(queryRef)">
+            <el-icon>
+              <ele-Refresh />
+            </el-icon>
+            重置
+          </el-button>
+          <el-button type="primary" v-auth="'add'" @click="onOpenAddDic()">
+            <el-icon>
+              <ele-FolderAdd />
+            </el-icon>
+            添加模块
+          </el-button>
+        </el-form-item>
+      </el-form>
 
       <el-table :data="tableData.data" style="width: 100%" v-loading="tableData.loading">
         <el-table-column label="ID" v-col="'id'" align="center" prop="id" width="100" />

+ 38 - 47
src/views/iot/ota-update/update/index.vue

@@ -1,47 +1,38 @@
 <template>
-  <div class="ota-module-container">
+  <div class="page">
     <el-card shadow="nover">
-      <div class="ota-module-search mb15">
-        <el-form :model="tableData.param" ref="queryRef" :inline="true" label-width="100px">
-          <el-form-item label="升级包名称" prop="keyWord">
-            <el-input
-                v-model="tableData.param.keyWord"
-                placeholder="请输入升级包名称"
-                clearable
-                size="default"
-                style="width: 240px;"
-                @keyup.enter.native="getList(1)" />
-          </el-form-item>
-          <el-form-item>
-            <el-button size="default" type="primary" class="ml10" @click="getList(1)">
-              <el-icon>
-                <ele-Search />
-              </el-icon>
-              查询
-            </el-button>
-            <el-button size="default" @click="resetQuery">
-              <el-icon>
-                <ele-Refresh />
-              </el-icon>
-              重置
-            </el-button>
-            <el-button type="primary" v-auth="'add'" @click="onOpenAdd()">
-              <el-icon>
-                <ele-FolderAdd />
-              </el-icon>
-              添加升级包
-            </el-button>
-          </el-form-item>
-        </el-form>
-      </div>
-
+      <el-form :model="tableData.param" ref="queryRef" :inline="true">
+        <el-form-item label="升级包名称" prop="keyWord">
+          <el-input v-model="tableData.param.keyWord" placeholder="请输入升级包名称" clearable size="default" style="width: 240px;" @keyup.enter.native="getList(1)" />
+        </el-form-item>
+        <el-form-item>
+          <el-button size="default" type="primary" class="ml10" @click="getList(1)">
+            <el-icon>
+              <ele-Search />
+            </el-icon>
+            查询
+          </el-button>
+          <el-button size="default" @click="resetQuery">
+            <el-icon>
+              <ele-Refresh />
+            </el-icon>
+            重置
+          </el-button>
+          <el-button type="primary" v-auth="'add'" @click="onOpenAdd()">
+            <el-icon>
+              <ele-FolderAdd />
+            </el-icon>
+            添加升级包
+          </el-button>
+        </el-form-item>
+      </el-form>
       <el-table :data="tableData.data" style="width: 100%" v-loading="tableData.loading">
         <el-table-column label="ID" v-col="'id'" align="center" prop="id" width="100" />
         <el-table-column label="升级包名称" v-col="'name'" prop="name" show-overflow-tooltip />
         <el-table-column prop="types" label="类型" show-overflow-tooltip v-col="'types'">
           <template #default="scope">
-            <el-tag  size="small" v-if="scope.row.types == 1">整包</el-tag>
-            <el-tag  type="info" size="small" v-if="scope.row.types == 2">差分</el-tag>
+            <el-tag size="small" v-if="scope.row.types == 1">整包</el-tag>
+            <el-tag type="info" size="small" v-if="scope.row.types == 2">差分</el-tag>
           </template>
         </el-table-column>
         <el-table-column label="所属产品" v-col="'productName'" align="center" show-overflow-tooltip>
@@ -64,7 +55,7 @@
             <el-tag type="info" size="small" v-else>未验证</el-tag>
           </template>
         </el-table-column>
-        <el-table-column label="创建时间" prop="createdAt" align="center" />
+        <el-table-column label="创建时间" prop="createdAt" align="center" width="160" />
         <el-table-column label="操作" width="200" v-col="'handle'" align="center" fixed="right">
           <template #default="scope">
             <el-button size="small" text type="primary" v-if="!scope.row.folderName" @click="toDetail(scope.row.id)">查看</el-button>
@@ -86,7 +77,7 @@
 <script lang="ts">
 import api from '/@/api/ota';
 import { toRefs, reactive, onMounted, ref, defineComponent, getCurrentInstance } from 'vue';
-import { ElMessageBox, ElMessage, FormInstance} from 'element-plus'
+import { ElMessageBox, ElMessage, FormInstance } from 'element-plus'
 import EditConfig from '/@/views/iot/ota-update/update/component/edit.vue';
 import CheckConfig from '/@/views/iot/ota-update/update/component/check.vue';
 import { useRouter } from 'vue-router';
@@ -125,7 +116,7 @@ export default defineComponent({
     const checkRef = ref();
     const detailRef = ref();
     const queryRef = ref();
-    const tabDataList = ref([{dictLabel: '全部', dictValue: ''}]);
+    const tabDataList = ref([{ dictLabel: '全部', dictValue: '' }]);
     const state = reactive<TableDataState>({
       ids: [],
       tableData: {
@@ -152,12 +143,12 @@ export default defineComponent({
       typeof pageNum === 'number' && (state.tableData.param.pageNum = pageNum)
       state.tableData.loading = true;
       api.manage
-          .getList(state.tableData.param)
-          .then((res: any) => {
-            state.tableData.data = res.firmware;
-            state.tableData.total = res.Total;
-          })
-          .finally(() => (state.tableData.loading = false));
+        .getList(state.tableData.param)
+        .then((res: any) => {
+          state.tableData.data = res.firmware;
+          state.tableData.total = res.Total;
+        })
+        .finally(() => (state.tableData.loading = false));
     };
     // 打开新增弹窗
     const onOpenAdd = () => {
@@ -202,7 +193,7 @@ export default defineComponent({
           getList();
         });
       })
-          .catch(() => { });
+        .catch(() => { });
     };
     /** 重置按钮操作 */
     const resetQuery = () => {

+ 39 - 45
src/views/iot/property/attribute/index.vue

@@ -1,12 +1,10 @@
 <template>
-	<div>
-	<el-card shadow="nover">
-		<div class="search">
+	<div class="page">
+		<el-card shadow="nover">
 			<el-form :inline="true" ref="queryRef" @keyup.enter="getList(1)">
 				<el-form-item label="关键字:" prop="keyWord">
 					<el-input v-model="params.keyWord" placeholder="请输入关键字" clearable size="default" style="width: 240px" />
 				</el-form-item>
-
 				<el-form-item>
 					<el-button size="default" type="primary" class="ml10" @click="getList(1)">
 						<el-icon>
@@ -22,9 +20,6 @@
 						</el-icon>
 						新增属性
 					</el-button>
-
-
-
 					<el-button type="danger" @click="batchdel()" v-auth="'batchdel'">
 						<el-icon>
 							<ele-FolderAdd />
@@ -33,45 +28,44 @@
 					</el-button>
 				</el-form-item>
 			</el-form>
-		</div>
-		<el-row>
-			<el-col :span="6">
-				<el-tree :data="mergedData" :props="defaultProps" accordion default-expand-all @node-click="handleNodeClick" style="border: 1px solid #eee;padding: 10px;margin-right: 10px;">
-					<template #default="{ node, data }">
-						<span :style="data.is_type === '2' ? { color: '#409eff' } : {}">
-							<el-icon v-if="data.is_type == '2'">
-								<Expand />
-							</el-icon>
-							{{ node.label }}
-						</span>
-					</template>
-				</el-tree>
-			</el-col>
-			<el-col :span="18"><el-table :data="tableData" @selection-change="handleSelectionChange" style="width: 100%" row-key="id" v-loading="loading">
-					<el-table-column type="selection" width="55" align="center" />
-
-					<el-table-column prop="id" v-col="'id'" label="ID" min-width="100" show-overflow-tooltip></el-table-column>
-					<el-table-column prop="name" v-col="'name'" label="字段名称" show-overflow-tooltip></el-table-column>
-					<el-table-column prop="title" v-col="'title'" label="字段标题" show-overflow-tooltip></el-table-column>
-					<el-table-column prop="types" v-col="'types'" label="字段类型" show-overflow-tooltip></el-table-column>
-
-
-					<el-table-column prop="createdAt" v-col="'createdAt'" label="创建时间" width="160" align="center"></el-table-column>
-					<el-table-column label="操作" width="200" align="center">
-						<template #default="scope">
-
-							<el-button size="small" text v-auth="'edit'" type="warning" @click="addOrEdit(scope.row)">编辑</el-button>
-
-							<el-button size="small" text v-auth="'del'" type="info" @click="del(scope.row)">删除</el-button>
+			<el-row :gutter="16">
+				<el-col :span="6">
+					<el-tree :data="mergedData" :props="defaultProps" accordion default-expand-all @node-click="handleNodeClick" style="border: 1px solid #eee;padding: 10px;margin-right: 10px;">
+						<template #default="{ node, data }">
+							<span :style="data.is_type === '2' ? { color: '#409eff' } : {}">
+								<el-icon v-if="data.is_type == '2'">
+									<Expand />
+								</el-icon>
+								{{ node.label }}
+							</span>
 						</template>
-					</el-table-column>
-				</el-table>
-				<pagination v-if="params.total" :total="params.total" v-model:page="params.pageNum" v-model:limit="params.pageSize" @pagination="getList()" />
-			</el-col>
-		</el-row>
-
-		<EditForm ref="editFormRef" @getList="getList(1)"></EditForm>
-	</el-card>
+					</el-tree>
+				</el-col>
+				<el-col :span="18"><el-table :data="tableData" @selection-change="handleSelectionChange" style="width: 100%" row-key="id" v-loading="loading">
+						<el-table-column type="selection" width="55" align="center" />
+
+						<el-table-column prop="id" v-col="'id'" label="ID" min-width="100" show-overflow-tooltip></el-table-column>
+						<el-table-column prop="name" v-col="'name'" label="字段名称" show-overflow-tooltip></el-table-column>
+						<el-table-column prop="title" v-col="'title'" label="字段标题" show-overflow-tooltip></el-table-column>
+						<el-table-column prop="types" v-col="'types'" label="字段类型" show-overflow-tooltip></el-table-column>
+
+
+						<el-table-column prop="createdAt" v-col="'createdAt'" label="创建时间" width="160" align="center"></el-table-column>
+						<el-table-column label="操作" width="200" align="center">
+							<template #default="scope">
+
+								<el-button size="small" text v-auth="'edit'" type="warning" @click="addOrEdit(scope.row)">编辑</el-button>
+
+								<el-button size="small" text v-auth="'del'" type="info" @click="del(scope.row)">删除</el-button>
+							</template>
+						</el-table-column>
+					</el-table>
+					<pagination v-if="params.total" :total="params.total" v-model:page="params.pageNum" v-model:limit="params.pageSize" @pagination="getList()" />
+				</el-col>
+			</el-row>
+
+			<EditForm ref="editFormRef" @getList="getList(1)"></EditForm>
+		</el-card>
 	</div>
 </template>
 

+ 39 - 41
src/views/iot/property/dossier/index.vue

@@ -1,7 +1,6 @@
 <template>
-	<div>
-	<el-card shadow="nover">
-		<div class="search">
+	<div class="page">
+		<el-card shadow="nover">
 			<el-form :inline="true" ref="queryRef" @keyup.enter="getList(1)">
 				<el-form-item label="名称:" prop="keyWord">
 					<el-input v-model="params.keyWord" placeholder="请输入名称" clearable size="default" style="width: 240px" />
@@ -38,45 +37,44 @@
 					</el-button>
 				</el-form-item>
 			</el-form>
-		</div>
-		<el-row>
-			<el-col :span="6">
-				<el-tree :data="mergedData" :props="defaultProps" accordion default-expand-all @node-click="handleNodeClick" style="border: 1px solid #eee; padding: 10px; margin-right: 10px">
-					<template #default="{ node, data }">
-						<span :style="data.is_type === '2' ? { color: '#409eff' } : {}">
-							<el-icon v-if="data.is_type == '2'">
-								<Check />
-							</el-icon>
-							{{ node.label }}
-						</span>
-					</template>
-				</el-tree>
-			</el-col>
-			<el-col :span="18"><el-table :data="tableData" style="width: 100%" @selection-change="handleSelectionChange" row-key="id" v-loading="loading">
-					<el-table-column type="selection" width="55" align="center" />
-
-					<el-table-column prop="deviceName" v-col="'deviceName'" label="设备名称" min-width="100" show-overflow-tooltip></el-table-column>
-					<el-table-column prop="deviceKey" v-col="'deviceKey'" label="设备KEY" show-overflow-tooltip></el-table-column>
-
-					<el-table-column prop="deviceNumber" v-col="'deviceNumber'" label="设备编码" show-overflow-tooltip></el-table-column>
-
-					<el-table-column prop="deviceCategory" v-col="'deviceCategory'" label="设备类型" show-overflow-tooltip></el-table-column>
-
-					<el-table-column prop="installTime" v-col="'installTime'" label="安装时间" width="160" align="center"></el-table-column>
-					<el-table-column label="操作" width="200" align="center">
-						<template #default="scope">
-							<el-button size="small" text type="warning" v-auth="'edit'" @click="addOrEdit(scope.row)">编辑</el-button>
-
-							<el-button size="small" text type="info" v-auth="'del'" @click="del(scope.row)">删除</el-button>
+			<el-row :gutter="16">
+				<el-col :span="6">
+					<el-tree :data="mergedData" :props="defaultProps" accordion default-expand-all @node-click="handleNodeClick" style="border: 1px solid #eee; padding: 10px; margin-right: 10px">
+						<template #default="{ node, data }">
+							<span :style="data.is_type === '2' ? { color: '#409eff' } : {}">
+								<el-icon v-if="data.is_type == '2'">
+									<Check />
+								</el-icon>
+								{{ node.label }}
+							</span>
 						</template>
-					</el-table-column>
-				</el-table>
-				<pagination v-if="params.total" :total="params.total" v-model:page="params.pageNum" v-model:limit="params.pageSize" @pagination="getList()" />
-			</el-col>
-		</el-row>
-
-		<EditForm ref="editFormRef" @getList="getList(1)"></EditForm>
-	</el-card>
+					</el-tree>
+				</el-col>
+				<el-col :span="18"><el-table :data="tableData" style="width: 100%" @selection-change="handleSelectionChange" row-key="id" v-loading="loading">
+						<el-table-column type="selection" width="55" align="center" />
+
+						<el-table-column prop="deviceName" v-col="'deviceName'" label="设备名称" min-width="100" show-overflow-tooltip></el-table-column>
+						<el-table-column prop="deviceKey" v-col="'deviceKey'" label="设备KEY" show-overflow-tooltip></el-table-column>
+
+						<el-table-column prop="deviceNumber" v-col="'deviceNumber'" label="设备编码" show-overflow-tooltip></el-table-column>
+
+						<el-table-column prop="deviceCategory" v-col="'deviceCategory'" label="设备类型" show-overflow-tooltip></el-table-column>
+
+						<el-table-column prop="installTime" v-col="'installTime'" label="安装时间" width="160" align="center"></el-table-column>
+						<el-table-column label="操作" width="200" align="center">
+							<template #default="scope">
+								<el-button size="small" text type="warning" v-auth="'edit'" @click="addOrEdit(scope.row)">编辑</el-button>
+
+								<el-button size="small" text type="info" v-auth="'del'" @click="del(scope.row)">删除</el-button>
+							</template>
+						</el-table-column>
+					</el-table>
+					<pagination v-if="params.total" :total="params.total" v-model:page="params.pageNum" v-model:limit="params.pageSize" @pagination="getList()" />
+				</el-col>
+			</el-row>
+
+			<EditForm ref="editFormRef" @getList="getList(1)"></EditForm>
+		</el-card>
 	</div>
 </template>
 

+ 27 - 27
src/views/iot/rule-engine/index.vue

@@ -1,6 +1,6 @@
 <template>
-	<el-card shadow="nover" class="page-full">
-		<div class="search">
+	<div class="page">
+		<el-card shadow="nover">
 			<el-form :inline="true">
 				<el-form-item>
 					<el-button type="primary" v-auth="'add'" @click="addOrEdit()">
@@ -11,31 +11,31 @@
 					</el-button>
 				</el-form-item>
 			</el-form>
-		</div>
-		<el-table :data="tableData" style="width: 100%" v-loading="loading" max-height="calc(100vh - 255px)">
-			<el-table-column type="index" label="序号" width="80" align="center" />
-			<el-table-column prop="name" label="名称" show-overflow-tooltip></el-table-column>
-			<el-table-column prop="expound" label="说明" show-overflow-tooltip></el-table-column>
-			<el-table-column prop="createdAt" label="创建时间" min-width="100" align="center"></el-table-column>
-			<el-table-column prop="status" label="状态" width="100" align="center">
-				<template #default="scope">
-					<el-tag type="success" size="small" v-if="scope.row.status == 1">已启动</el-tag>
-					<el-tag type="info" size="small" v-else>已停止</el-tag>
-				</template>
-			</el-table-column>
-			<el-table-column label="操作" width="200" align="center">
-				<template #default="scope">
-					<el-button size="small" text type="info" v-auth="'startOrStop'" v-if="scope.row.status" @click="setStatus(scope.row, 0)">停止</el-button>
-					<el-button size="small" text type="primary" v-auth="'startOrStop'" v-else @click="setStatus(scope.row, 1)">启动</el-button>
-					<el-button size="small" text type="warning" v-auth="'edit'" @click="addOrEdit(scope.row)">编辑</el-button>
-					<el-button size="small" text type="warning" @click="edit(scope.row)">规则编辑</el-button>
-					<el-button size="small" text type="info" v-auth="'del'" @click="onDel(scope.row)">删除</el-button>
-				</template>
-			</el-table-column>
-		</el-table>
-		<pagination v-if="params.total" :total="params.total" v-model:page="params.pageNum" v-model:limit="params.pageSize" @pagination="getList()" />
-		<EditForm ref="editFormRef" @getList="getList(1)" :types="0"></EditForm>
-	</el-card>
+			<el-table :data="tableData" style="width: 100%" v-loading="loading">
+				<el-table-column type="index" label="序号" width="80" align="center" />
+				<el-table-column prop="name" label="名称" show-overflow-tooltip></el-table-column>
+				<el-table-column prop="expound" label="说明" show-overflow-tooltip></el-table-column>
+				<el-table-column prop="createdAt" label="创建时间" min-width="100" align="center"></el-table-column>
+				<el-table-column prop="status" label="状态" width="100" align="center">
+					<template #default="scope">
+						<el-tag type="success" size="small" v-if="scope.row.status == 1">已启动</el-tag>
+						<el-tag type="info" size="small" v-else>已停止</el-tag>
+					</template>
+				</el-table-column>
+				<el-table-column label="操作" width="200" align="center">
+					<template #default="scope">
+						<el-button size="small" text type="info" v-auth="'startOrStop'" v-if="scope.row.status" @click="setStatus(scope.row, 0)">停止</el-button>
+						<el-button size="small" text type="primary" v-auth="'startOrStop'" v-else @click="setStatus(scope.row, 1)">启动</el-button>
+						<el-button size="small" text type="warning" v-auth="'edit'" @click="addOrEdit(scope.row)">编辑</el-button>
+						<el-button size="small" text type="warning" @click="edit(scope.row)">规则编辑</el-button>
+						<el-button size="small" text type="info" v-auth="'del'" @click="onDel(scope.row)">删除</el-button>
+					</template>
+				</el-table-column>
+			</el-table>
+			<pagination v-if="params.total" :total="params.total" v-model:page="params.pageNum" v-model:limit="params.pageSize" @pagination="getList()" />
+			<EditForm ref="editFormRef" @getList="getList(1)" :types="0"></EditForm>
+		</el-card>
+	</div>
 </template>
 
 <script lang="ts" setup>

+ 27 - 27
src/views/iot/rule-engine/send.vue

@@ -1,6 +1,6 @@
 <template>
-  <el-card shadow="nover" class="page-full">
-    <div class="search">
+  <div class="page">
+    <el-card shadow="nover">
       <el-form :inline="true">
         <el-form-item>
           <!-- <el-button size="default" type="primary" class="ml10" @click="getList(1)">
@@ -17,31 +17,31 @@
           </el-button>
         </el-form-item>
       </el-form>
-    </div>
-    <el-table :data="tableData" style="width: 100%" v-loading="loading" max-height="calc(100vh - 255px)">
-      <el-table-column type="index" label="序号" width="80" align="center" />
-      <el-table-column prop="name" label="名称" show-overflow-tooltip></el-table-column>
-      <el-table-column prop="expound" label="说明" show-overflow-tooltip></el-table-column>
-      <el-table-column prop="createdAt" label="创建时间" min-width="100" align="center"></el-table-column>
-      <el-table-column prop="status" label="状态" width="100" align="center">
-        <template #default="scope">
-          <el-tag type="success" size="small" v-if="scope.row.status == 1">已启动</el-tag>
-          <el-tag type="info" size="small" v-else>已停止</el-tag>
-        </template>
-      </el-table-column>
-      <el-table-column label="操作" width="200" align="center">
-        <template #default="scope">
-          <el-button size="small" text type="info" v-auth="'startOrStop'" v-if="scope.row.status" @click="setStatus(scope.row, 0)">停止</el-button>
-          <el-button size="small" text type="primary" v-auth="'startOrStop'" v-else @click="setStatus(scope.row, 1)">启动</el-button>
-          <el-button size="small" text type="warning" v-auth="'edit'" @click="addOrEdit(scope.row)">编辑</el-button>
-          <el-button size="small" text type="warning" @click="edit(scope.row)">规则编辑</el-button>
-          <el-button size="small" text type="danger" v-auth="'del'" @click="onDel(scope.row)">删除</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-    <pagination v-if="params.total" :total="params.total" v-model:page="params.pageNum" v-model:limit="params.pageSize" @pagination="getList()" />
-    <EditForm ref="editFormRef" @getList="getList(1)" :types="1"></EditForm>
-  </el-card>
+      <el-table :data="tableData" style="width: 100%" v-loading="loading">
+        <el-table-column type="index" label="序号" width="80" align="center" />
+        <el-table-column prop="name" label="名称" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="expound" label="说明" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="createdAt" label="创建时间" min-width="100" align="center"></el-table-column>
+        <el-table-column prop="status" label="状态" width="100" align="center">
+          <template #default="scope">
+            <el-tag type="success" size="small" v-if="scope.row.status == 1">已启动</el-tag>
+            <el-tag type="info" size="small" v-else>已停止</el-tag>
+          </template>
+        </el-table-column>
+        <el-table-column label="操作" width="200" align="center">
+          <template #default="scope">
+            <el-button size="small" text type="info" v-auth="'startOrStop'" v-if="scope.row.status" @click="setStatus(scope.row, 0)">停止</el-button>
+            <el-button size="small" text type="primary" v-auth="'startOrStop'" v-else @click="setStatus(scope.row, 1)">启动</el-button>
+            <el-button size="small" text type="warning" v-auth="'edit'" @click="addOrEdit(scope.row)">编辑</el-button>
+            <el-button size="small" text type="warning" @click="edit(scope.row)">规则编辑</el-button>
+            <el-button size="small" text type="danger" v-auth="'del'" @click="onDel(scope.row)">删除</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination v-if="params.total" :total="params.total" v-model:page="params.pageNum" v-model:limit="params.pageSize" @pagination="getList()" />
+      <EditForm ref="editFormRef" @getList="getList(1)" :types="1"></EditForm>
+    </el-card>
+  </div>
 </template>
 
 <script lang="ts" setup>

+ 26 - 27
src/views/iot/scene/list/index.vue

@@ -1,12 +1,12 @@
 <template>
-	<el-card shadow="nover">
-		<div class="search">
+	<div class="page">
+		<el-card shadow="nover">
 			<el-form :inline="true" ref="queryRef">
 				<el-form-item label="场景名称:" prop="name">
-					<el-input v-model="params.keyWord" placeholder="请输入产品名称" clearable size="default" style="width: 240px" @keyup.enter.native="getList(1)" />
+					<el-input v-model="params.keyWord" placeholder="场景名称" clearable size="default" style="width: 220px" @keyup.enter.native="getList(1)" />
 				</el-form-item>
-				<el-form-item label="状态" prop="status" style="width: 200px;">
-					<el-select v-model="params.status" placeholder="发布状态" clearable size="default" style="width: 240px">
+				<el-form-item label="状态" prop="status">
+					<el-select v-model="params.status" placeholder="发布状态" clearable size="default" style="width: 160px">
 						<el-option label="全部" :value="-1" />
 						<el-option label="成功" :value="1" />
 						<el-option label="失败" :value="0" />
@@ -24,29 +24,28 @@
 						查询
 					</el-button>
 				</el-form-item>
-
 			</el-form>
-		</div>
-		<el-table :data="tableData" style="width: 100%" row-key="id" v-loading="loading">
-			<el-table-column prop="id" label="ID" width="100" show-overflow-tooltip></el-table-column>
-			<el-table-column prop="name" label="场景名称" show-overflow-tooltip></el-table-column>
-			<el-table-column prop="name" label="场景类型" show-overflow-tooltip></el-table-column>
-			<el-table-column prop="name" label="执行状态" width="100" align="center">
-				<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="执行时间" min-width="100" align="center"></el-table-column>
-			<el-table-column label="操作" width="200" align="center">
-				<template #default="scope">
-					<el-button size="small" text type="primary" v-if="!scope.row.folderName" @click="view(scope.row)">详情</el-button>
-					<el-button size="small" text type="info" v-auth="'del'" @click="del(scope.row)">删除</el-button>
-				</template>
-			</el-table-column>
-		</el-table>
-		<pagination v-if="params.total" :total="params.total" v-model:page="params.pageNum" v-model:limit="params.pageSize" @pagination="getList()" />
-	</el-card>
+			<el-table :data="tableData" style="width: 100%" row-key="id" v-loading="loading">
+				<el-table-column prop="id" label="ID" width="100" show-overflow-tooltip></el-table-column>
+				<el-table-column prop="name" label="场景名称" show-overflow-tooltip></el-table-column>
+				<el-table-column prop="name" label="场景类型" show-overflow-tooltip></el-table-column>
+				<el-table-column prop="name" label="执行状态" width="100" align="center">
+					<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="执行时间" min-width="100" align="center"></el-table-column>
+				<el-table-column label="操作" width="200" align="center">
+					<template #default="scope">
+						<el-button size="small" text type="primary" v-if="!scope.row.folderName" @click="view(scope.row)">详情</el-button>
+						<el-button size="small" text type="info" v-auth="'del'" @click="del(scope.row)">删除</el-button>
+					</template>
+				</el-table-column>
+			</el-table>
+			<pagination v-if="params.total" :total="params.total" v-model:page="params.pageNum" v-model:limit="params.pageSize" @pagination="getList()" />
+		</el-card>
+	</div>
 </template>
 
 <script lang="ts" setup>

+ 71 - 69
src/views/iot/scene/manage/index.vue

@@ -1,80 +1,82 @@
 <template>
-	<el-card shadow="nover">
-		<div class="search">
-			<el-form :inline="true" ref="queryRef" @keyup.enter="getList(1)">
-				<el-form-item label="场景名称:" prop="keyWord">
-					<el-input v-model="params.keyWord" placeholder="请输入场景名称" clearable size="default" style="width: 240px" />
-				</el-form-item>
+	<div class="page">
+		<el-card shadow="nover">
+			<div class="search">
+				<el-form :inline="true" ref="queryRef" @keyup.enter="getList(1)">
+					<el-form-item label="场景名称:" prop="keyWord">
+						<el-input v-model="params.keyWord" placeholder="请输入场景名称" clearable size="default" style="width: 240px" />
+					</el-form-item>
 
-				<el-form-item label="触发方式" prop="sceneType" style="width: 200px;">
-					<el-select v-model="params.sceneType" placeholder="触发方式" clearable size="default" style="width: 240px">
-						<el-option label="设备触发" value="device" />
-						<el-option label="手动触发" value="manual" />
-						<el-option label="定时触发" value="timer" />
-					</el-select>
-				</el-form-item>
+					<el-form-item label="触发方式" prop="sceneType" style="width: 200px;">
+						<el-select v-model="params.sceneType" placeholder="触发方式" clearable size="default" style="width: 240px">
+							<el-option label="设备触发" value="device" />
+							<el-option label="手动触发" value="manual" />
+							<el-option label="定时触发" value="timer" />
+						</el-select>
+					</el-form-item>
 
-				<el-form-item label="运行状态" prop="status" style="width: 200px;">
-					<el-select v-model="params.status" placeholder="运行状态" clearable size="default" style="width: 240px">
-						<el-option label="全部" :value="-1" />
-						<el-option label="启用" :value="1" />
-						<el-option label="禁用" :value="0" />
-					</el-select>
-				</el-form-item>
+					<el-form-item label="运行状态" prop="status" style="width: 200px;">
+						<el-select v-model="params.status" placeholder="运行状态" clearable size="default" style="width: 240px">
+							<el-option label="全部" :value="-1" />
+							<el-option label="启用" :value="1" />
+							<el-option label="禁用" :value="0" />
+						</el-select>
+					</el-form-item>
 
-				<el-form-item>
+					<el-form-item>
 
-					<el-button size="default" type="primary" class="ml10" @click="getList(1)">
-						<el-icon>
-							<ele-Search />
-						</el-icon>
-						查询
-					</el-button>
-				</el-form-item>
-				<el-form-item>
-					<el-button type="success" v-auth="'add'" @click="addOrEdit()">
-						<el-icon>
-							<ele-FolderAdd />
-						</el-icon>
-						新增场景
-					</el-button>
+						<el-button size="default" type="primary" class="ml10" @click="getList(1)">
+							<el-icon>
+								<ele-Search />
+							</el-icon>
+							查询
+						</el-button>
+					</el-form-item>
+					<el-form-item>
+						<el-button type="success" v-auth="'add'" @click="addOrEdit()">
+							<el-icon>
+								<ele-FolderAdd />
+							</el-icon>
+							新增场景
+						</el-button>
 
-				</el-form-item>
-			</el-form>
-		</div>
-		<el-table :data="tableData" style="width: 100%" row-key="id" v-loading="loading">
-			<el-table-column prop="id" label="ID" min-width="100" show-overflow-tooltip v-col="'id'"></el-table-column>
-			<el-table-column prop="name" label="场景名称" show-overflow-tooltip v-col="'name'"></el-table-column>
-			<el-table-column prop="sceneType" label="触发方式" align="center" v-col="'sceneType'">
-				<template #default="scope">
-					<el-tag size="small" v-if="scope.row.sceneType == 'device'">设备触发</el-tag>
-					<el-tag size="small" v-if="scope.row.sceneType == 'manual'">手动触发</el-tag>
-					<el-tag size="small" v-if="scope.row.sceneType == 'timer'">定时触发</el-tag>
-				</template>
-			</el-table-column>
+					</el-form-item>
+				</el-form>
+			</div>
+			<el-table :data="tableData" style="width: 100%" row-key="id" v-loading="loading">
+				<el-table-column prop="id" label="ID" min-width="100" show-overflow-tooltip v-col="'id'"></el-table-column>
+				<el-table-column prop="name" label="场景名称" show-overflow-tooltip v-col="'name'"></el-table-column>
+				<el-table-column prop="sceneType" label="触发方式" align="center" v-col="'sceneType'">
+					<template #default="scope">
+						<el-tag size="small" v-if="scope.row.sceneType == 'device'">设备触发</el-tag>
+						<el-tag size="small" v-if="scope.row.sceneType == 'manual'">手动触发</el-tag>
+						<el-tag size="small" v-if="scope.row.sceneType == 'timer'">定时触发</el-tag>
+					</template>
+				</el-table-column>
 
-			<el-table-column prop="status" label="状态" align="center" v-col="'status'">
-				<template #default="scope">
-					<el-tag size="small" type="success" v-if="scope.row.status == 1">启用</el-tag>
-					<el-tag size="small" type="info" v-if="scope.row.status == 0">禁用</el-tag>
-				</template>
-			</el-table-column>
-			<el-table-column prop="description" label="场景描述" show-overflow-tooltip v-col="'description'"></el-table-column>
+				<el-table-column prop="status" label="状态" align="center" v-col="'status'">
+					<template #default="scope">
+						<el-tag size="small" type="success" v-if="scope.row.status == 1">启用</el-tag>
+						<el-tag size="small" type="info" v-if="scope.row.status == 0">禁用</el-tag>
+					</template>
+				</el-table-column>
+				<el-table-column prop="description" label="场景描述" show-overflow-tooltip v-col="'description'"></el-table-column>
 
-			<el-table-column prop="createdAt" label="创建时间" width="160" align="center" v-col="'createdAt'"></el-table-column>
-			<el-table-column label="操作" width="200" align="center">
-				<template #default="scope">
-					<el-button size="small" text type="primary" v-if="!scope.row.folderName" @click="toDetail(scope.row.id)">详情</el-button>
-					<el-button size="small" text type="warning" v-auth="'edit'" @click="addOrEdit(scope.row)">编辑</el-button>
-					<el-button size="small" text type="success" @click="onActionStatus(scope.row)" v-if="scope.row.status == 0" v-auth="'startOrStop'">启用</el-button>
-					<el-button size="small" text type="primary" @click="onActionStatus(scope.row)" v-if="scope.row.status > 0" v-auth="'startOrStop'">停用</el-button>
-					<el-button size="small" text type="info" v-auth="'del'" @click="del(scope.row)">删除</el-button>
-				</template>
-			</el-table-column>
-		</el-table>
-		<pagination v-if="params.total" :total="params.total" v-model:page="params.pageNum" v-model:limit="params.pageSize" @pagination="getList()" />
-		<EditForm ref="editFormRef" @getList="getList(1)"></EditForm>
-	</el-card>
+				<el-table-column prop="createdAt" label="创建时间" width="160" align="center" v-col="'createdAt'"></el-table-column>
+				<el-table-column label="操作" width="200" align="center">
+					<template #default="scope">
+						<el-button size="small" text type="primary" v-if="!scope.row.folderName" @click="toDetail(scope.row.id)">详情</el-button>
+						<el-button size="small" text type="warning" v-auth="'edit'" @click="addOrEdit(scope.row)">编辑</el-button>
+						<el-button size="small" text type="success" @click="onActionStatus(scope.row)" v-if="scope.row.status == 0" v-auth="'startOrStop'">启用</el-button>
+						<el-button size="small" text type="primary" @click="onActionStatus(scope.row)" v-if="scope.row.status > 0" v-auth="'startOrStop'">停用</el-button>
+						<el-button size="small" text type="info" v-auth="'del'" @click="del(scope.row)">删除</el-button>
+					</template>
+				</el-table-column>
+			</el-table>
+			<pagination v-if="params.total" :total="params.total" v-model:page="params.pageNum" v-model:limit="params.pageSize" @pagination="getList()" />
+			<EditForm ref="editFormRef" @getList="getList(1)"></EditForm>
+		</el-card>
+	</div>
 </template>
 
 <script lang="ts" setup>