Zory 2 周之前
父节点
当前提交
b9bb87415f
共有 87 个文件被更改,包括 4357 次插入334 次删除
  1. 1 1
      .env.production
  2. 0 9
      public/config.js
  3. 二进制
      public/img/Down.png
  4. 二进制
      public/img/QRcode.png
  5. 二进制
      public/img/account_2.png
  6. 二进制
      public/img/account_hover2.png
  7. 二进制
      public/img/fslogo.png
  8. 二进制
      public/img/loginBg.png
  9. 二进制
      public/img/no-select-message.png
  10. 57 57
      public/img/no-widgets.svg
  11. 二进制
      public/img/qrcode2.png
  12. 二进制
      public/img/qrcode_hover2.png
  13. 二进制
      public/img/qwkf.png
  14. 236 236
      public/img/ver.svg
  15. 二进制
      public/img/wx.png
  16. 3 0
      public/index.html
  17. 33 0
      src/api/model/factory.js
  18. 19 0
      src/api/model/order.js
  19. 12 0
      src/api/model/storeDetail.js
  20. 33 0
      src/api/model/washGoods.js
  21. 33 0
      src/api/model/washType.js
  22. 二进制
      src/assets/image/blue_bg.png
  23. 二进制
      src/assets/image/icon-duanxintixing.png
  24. 二进制
      src/assets/image/store1.png
  25. 二进制
      src/assets/image/store2.png
  26. 二进制
      src/assets/image/store3.png
  27. 二进制
      src/assets/image/store4.png
  28. 二进制
      src/assets/image/store5.png
  29. 二进制
      src/assets/image/tel.png
  30. 二进制
      src/assets/image/wave-1-icon.png
  31. 二进制
      src/assets/image/wave-1.png
  32. 二进制
      src/assets/image/wave-2-icon.png
  33. 二进制
      src/assets/image/wave-2.png
  34. 二进制
      src/assets/image/wave-3-icon.png
  35. 二进制
      src/assets/image/wave-3.png
  36. 二进制
      src/assets/image/wave-4-icon.png
  37. 二进制
      src/assets/image/wave-4.png
  38. 二进制
      src/assets/image/wave-5-icon.png
  39. 二进制
      src/assets/image/wave-5.png
  40. 6 0
      src/locales/lang/zh-cn.js
  41. 2 0
      src/style/media.scss
  42. 282 0
      src/views/manage/components/store.vue
  43. 493 2
      src/views/manage/dashboard/index.vue
  44. 1 1
      src/views/manage/general/color/index.vue
  45. 6 0
      src/views/manage/mall/douyin/components/option.vue
  46. 6 0
      src/views/manage/mall/douyin/components/search.vue
  47. 6 0
      src/views/manage/mall/douyin/components/table.vue
  48. 64 0
      src/views/manage/mall/douyin/index.vue
  49. 6 0
      src/views/manage/mall/wechat/components/option.vue
  50. 6 0
      src/views/manage/mall/wechat/components/search.vue
  51. 6 0
      src/views/manage/mall/wechat/components/table.vue
  52. 64 0
      src/views/manage/mall/wechat/index.vue
  53. 6 0
      src/views/manage/order/confirm/components/option.vue
  54. 85 0
      src/views/manage/order/confirm/components/search.vue
  55. 132 0
      src/views/manage/order/confirm/components/table.vue
  56. 64 0
      src/views/manage/order/confirm/index.vue
  57. 6 0
      src/views/manage/order/line/components/option.vue
  58. 6 0
      src/views/manage/order/line/components/search.vue
  59. 6 0
      src/views/manage/order/line/components/table.vue
  60. 64 0
      src/views/manage/order/line/index.vue
  61. 6 0
      src/views/manage/order/store/components/option.vue
  62. 6 0
      src/views/manage/order/store/components/search.vue
  63. 6 0
      src/views/manage/order/store/components/table.vue
  64. 64 0
      src/views/manage/order/store/index.vue
  65. 239 0
      src/views/manage/user/factory/components/form.vue
  66. 51 1
      src/views/manage/user/factory/components/option.vue
  67. 85 2
      src/views/manage/user/factory/components/search.vue
  68. 134 2
      src/views/manage/user/factory/components/table.vue
  69. 147 0
      src/views/manage/user/factory/components/user.vue
  70. 56 0
      src/views/manage/user/factory/components/user_bar.vue
  71. 154 0
      src/views/manage/user/factory/components/user_form.vue
  72. 1 1
      src/views/manage/user/store/components/option.vue
  73. 2 2
      src/views/manage/user/store/components/table.vue
  74. 1 1
      src/views/manage/user/store/components/user.vue
  75. 56 0
      src/views/manage/user/store/components/user_bar.vue
  76. 115 0
      src/views/manage/wash/category/components/form.vue
  77. 68 2
      src/views/manage/wash/category/components/option.vue
  78. 2 2
      src/views/manage/wash/category/components/search.vue
  79. 115 2
      src/views/manage/wash/category/components/table.vue
  80. 78 0
      src/views/manage/wash/goods/components/form.vue
  81. 68 2
      src/views/manage/wash/goods/components/option.vue
  82. 3 3
      src/views/manage/wash/goods/components/search.vue
  83. 104 2
      src/views/manage/wash/goods/components/table.vue
  84. 0 1
      src/views/manage/wash/goods/index.vue
  85. 566 2
      src/views/merchant/dashboard/index.vue
  86. 485 2
      src/views/store/dashboard/index.vue
  87. 1 1
      src/views/store/store/detail/index.vue

+ 1 - 1
.env.production

@@ -5,4 +5,4 @@ NODE_ENV = production
 VUE_APP_TITLE = 涤斐先生
 
 # 接口地址
-VUE_APP_API_BASEURL = https://lass-api.jsshuita.cn/api/
+VUE_APP_API_BASEURL = https://lass-api.jsshuita.cn/api

+ 0 - 9
public/config.js

@@ -1,11 +1,2 @@
-
-// 此文件非必要,在生产环境下此文件配置可覆盖运行配置,开发环境下不起效
-// 详情见 src/config/index.js
-
 const APP_CONFIG = {
-	//标题
-	//APP_NAME: "SCUI",
-
-	//接口地址,如遇跨域需使用nginx代理
-	//API_URL: "https://www.fastmock.site/mock/5039c4361c39a7e3252c5b55971f1bd3/api"
 }

二进制
public/img/Down.png


二进制
public/img/QRcode.png


二进制
public/img/account_2.png


二进制
public/img/account_hover2.png


二进制
public/img/fslogo.png


二进制
public/img/loginBg.png


二进制
public/img/no-select-message.png


+ 57 - 57
public/img/no-widgets.svg

@@ -1,57 +1,57 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 23.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 viewBox="0 0 750 750" style="enable-background:new 0 0 750 750;" xml:space="preserve">
-<style type="text/css">
-	.st0{opacity:0.35;fill:#B3B3B3;}
-	.st1{opacity:0.1;fill:#B3B3B3;}
-	.st2{opacity:0.3;fill:#B3B3B3;}
-	.st3{opacity:0.1;}
-	.st4{fill:#B3B3B3;}
-</style>
-<g>
-	<path class="st0" d="M465.1,261.4H264c-1.3,0-2.4,1.1-2.4,2.4v255.6c0,1.3,1.1,2.4,2.4,2.4h201.1c1.3,0,2.4-1.1,2.4-2.4V263.8
-		C467.5,262.4,466.4,261.4,465.1,261.4z M417.9,443c0,1.3-1.1,2.4-2.4,2.4h-102c-1.3,0-2.4-1.1-2.4-2.4v-11.3c0-1.3,1.1-2.4,2.4-2.4
-		h102c1.3,0,2.4,1.1,2.4,2.4V443z M417.9,397.2c0,1.3-1.1,2.4-2.4,2.4h-102c-1.3,0-2.4-1.1-2.4-2.4v-11.3c0-1.3,1.1-2.4,2.4-2.4h102
-		c1.3,0,2.4,1.1,2.4,2.4V397.2z M417.9,351.5c0,1.3-1.1,2.4-2.4,2.4h-102c-1.3,0-2.4-1.1-2.4-2.4v-11.3c0-1.3,1.1-2.4,2.4-2.4h102
-		c1.3,0,2.4,1.1,2.4,2.4V351.5z"/>
-	<g>
-		<path class="st1" d="M462.1,236.8L462.1,236.8C384.8,236.2,321,295.1,314,370.7c-18.5-19.1-44.4-31.1-73.1-31.3h0
-			c-56.8-0.4-103.2,45.3-103.6,102.1l-0.8,101.4l175.6,1.3l30.1,0.2l265.1,2l1.2-160.9C609.2,304,543.6,237.4,462.1,236.8z"/>
-		<path class="st2" d="M216.9,227.4c-3.4,0-6.5,1.1-9,2.9c0.2-1,0.3-2,0.3-3c0.1-8.3-6.6-15.1-15-15.2s-15.1,6.6-15.2,15
-			c0,0.3,0,0.6,0,0.9c-1.6-0.6-3.4-1-5.2-1c-8.3-0.1-15.1,6.6-15.2,15c-0.1,8.2,6.4,14.9,14.5,15.2l0,0l44.6,0.3
-			c8.3,0.1,15.1-6.6,15.2-15S225.2,227.5,216.9,227.4z"/>
-		<path class="st2" d="M596.4,194.2c-3.4,0-6.5,1.1-9,2.9c0.2-1,0.3-2,0.3-3c0.1-8.3-6.6-15.1-15-15.2s-15.1,6.6-15.2,15
-			c0,0.3,0,0.6,0,0.9c-1.6-0.6-3.4-1-5.2-1c-8.3-0.1-15.1,6.6-15.2,15c-0.1,8.2,6.4,14.9,14.5,15.2l0,0l44.6,0.3
-			c8.3,0.1,15.1-6.6,15.2-15S604.7,194.3,596.4,194.2z"/>
-		<g>
-			<g class="st3">
-				<path class="st4" d="M496.9,497.5c-2.1,0-3.7,1.6-3.7,3.7c0,1.5,0.8,2.7,2,3.3l-0.5,65.1l3.5,0l0.5-65.3
-					c1.1-0.6,1.8-1.8,1.8-3.1C500.6,499.1,499,497.6,496.9,497.5z"/>
-				<path class="st4" d="M572.3,501.7c0-1.9-1.6-3.6-3.7-3.7c-2.1,0-3.7,1.6-3.7,3.7c0,1.4,0.8,2.6,1.9,3.2l-0.5,65.2l3.5,0
-					l0.5-65.2C571.5,504.3,572.2,503.1,572.3,501.7z"/>
-			</g>
-			
-				<rect x="522.7" y="472.2" transform="matrix(7.448311e-03 -1 1 7.448311e-03 8.6828 1045.4733)" class="st1" width="16.5" height="92.3"/>
-			<polygon class="st1" points="495.4,509.8 495.2,510.1 485.5,526.3 484.8,526.3 484.9,509.8 			"/>
-			<polygon class="st1" points="518.7,510 508.8,526.5 496.3,526.4 500.2,519.8 506,509.9 			"/>
-			<polygon class="st1" points="542,510.2 532.1,526.6 519.6,526.5 529.3,510.1 			"/>
-			<polygon class="st1" points="565.3,510.4 555.5,526.8 542.9,526.7 552.7,510.3 			"/>
-			<polygon class="st1" points="577.2,510.4 577.1,527 566.2,526.9 576,510.4 			"/>
-			
-				<rect x="522.5" y="497.7" transform="matrix(7.448311e-03 -1 1 7.448311e-03 -17.0149 1070.603)" class="st1" width="16.5" height="92.3"/>
-			<polygon class="st1" points="495.2,535.3 495,535.6 485.3,551.8 484.6,551.8 484.7,535.3 			"/>
-			<polygon class="st1" points="518.5,535.5 508.6,552 496.1,551.9 500,545.3 505.8,535.4 			"/>
-			<polygon class="st1" points="541.8,535.7 531.9,552.1 519.4,552 529.1,535.6 			"/>
-			<polygon class="st1" points="565.1,535.9 555.4,552.3 542.7,552.2 552.5,535.8 			"/>
-			<polygon class="st1" points="577,536 576.9,552.5 566,552.4 575.8,536 			"/>
-			<path class="st1" d="M577.1,527c0,0,0-0.1,0-0.3l0-0.9c0-0.7,0-1.8,0-3.2c0-2.8,0.1-6.9,0.1-12.2l0.1,0.1l-92.3-0.5l0,0l0.1-0.1
-				c0,5.6-0.1,11.2-0.1,16.5l-0.1-0.1l65.8,0.6l19.5,0.1l5.3,0l0,0l-5.3,0l-19.5-0.1l-65.8-0.3l-0.3,0l0.1-16.8l0.1,0l92.3,0.8
-				l0.1,0l0,0.1c0,5.3-0.1,9.4-0.1,12.2c0,1.5,0,2.5,0,3.2l0,0.7C577.1,526.8,577.1,527,577.1,527z"/>
-			<path class="st1" d="M576.9,552.5c0,0,0-0.1,0-0.3l0-0.9c0-0.7,0-1.8,0-3.2c0-2.8,0.1-6.9,0.1-12.2l0.1,0.1l-92.3-0.5l0,0
-				l0.1-0.1c0,5.6-0.1,11.2-0.1,16.5l-0.1-0.1l65.8,0.6l19.5,0.1l5.3,0l0,0l-5.3,0l-19.5-0.1l-65.8-0.3l-0.3,0l0.1-16.7l0.1,0
-				l92.3,0.8l0.1,0l0,0.1c0,5.3-0.1,9.4-0.1,12.2c0,1.5,0,2.5,0,3.2l0,0.7C576.9,552.3,576.9,552.5,576.9,552.5z"/>
-		</g>
-	</g>
-</g>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 23.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 750 750" style="enable-background:new 0 0 750 750;" xml:space="preserve">
+<style type="text/css">
+	.st0{opacity:0.35;fill:#B3B3B3;}
+	.st1{opacity:0.1;fill:#B3B3B3;}
+	.st2{opacity:0.3;fill:#B3B3B3;}
+	.st3{opacity:0.1;}
+	.st4{fill:#B3B3B3;}
+</style>
+<g>
+	<path class="st0" d="M465.1,261.4H264c-1.3,0-2.4,1.1-2.4,2.4v255.6c0,1.3,1.1,2.4,2.4,2.4h201.1c1.3,0,2.4-1.1,2.4-2.4V263.8
+		C467.5,262.4,466.4,261.4,465.1,261.4z M417.9,443c0,1.3-1.1,2.4-2.4,2.4h-102c-1.3,0-2.4-1.1-2.4-2.4v-11.3c0-1.3,1.1-2.4,2.4-2.4
+		h102c1.3,0,2.4,1.1,2.4,2.4V443z M417.9,397.2c0,1.3-1.1,2.4-2.4,2.4h-102c-1.3,0-2.4-1.1-2.4-2.4v-11.3c0-1.3,1.1-2.4,2.4-2.4h102
+		c1.3,0,2.4,1.1,2.4,2.4V397.2z M417.9,351.5c0,1.3-1.1,2.4-2.4,2.4h-102c-1.3,0-2.4-1.1-2.4-2.4v-11.3c0-1.3,1.1-2.4,2.4-2.4h102
+		c1.3,0,2.4,1.1,2.4,2.4V351.5z"/>
+	<g>
+		<path class="st1" d="M462.1,236.8L462.1,236.8C384.8,236.2,321,295.1,314,370.7c-18.5-19.1-44.4-31.1-73.1-31.3h0
+			c-56.8-0.4-103.2,45.3-103.6,102.1l-0.8,101.4l175.6,1.3l30.1,0.2l265.1,2l1.2-160.9C609.2,304,543.6,237.4,462.1,236.8z"/>
+		<path class="st2" d="M216.9,227.4c-3.4,0-6.5,1.1-9,2.9c0.2-1,0.3-2,0.3-3c0.1-8.3-6.6-15.1-15-15.2s-15.1,6.6-15.2,15
+			c0,0.3,0,0.6,0,0.9c-1.6-0.6-3.4-1-5.2-1c-8.3-0.1-15.1,6.6-15.2,15c-0.1,8.2,6.4,14.9,14.5,15.2l0,0l44.6,0.3
+			c8.3,0.1,15.1-6.6,15.2-15S225.2,227.5,216.9,227.4z"/>
+		<path class="st2" d="M596.4,194.2c-3.4,0-6.5,1.1-9,2.9c0.2-1,0.3-2,0.3-3c0.1-8.3-6.6-15.1-15-15.2s-15.1,6.6-15.2,15
+			c0,0.3,0,0.6,0,0.9c-1.6-0.6-3.4-1-5.2-1c-8.3-0.1-15.1,6.6-15.2,15c-0.1,8.2,6.4,14.9,14.5,15.2l0,0l44.6,0.3
+			c8.3,0.1,15.1-6.6,15.2-15S604.7,194.3,596.4,194.2z"/>
+		<g>
+			<g class="st3">
+				<path class="st4" d="M496.9,497.5c-2.1,0-3.7,1.6-3.7,3.7c0,1.5,0.8,2.7,2,3.3l-0.5,65.1l3.5,0l0.5-65.3
+					c1.1-0.6,1.8-1.8,1.8-3.1C500.6,499.1,499,497.6,496.9,497.5z"/>
+				<path class="st4" d="M572.3,501.7c0-1.9-1.6-3.6-3.7-3.7c-2.1,0-3.7,1.6-3.7,3.7c0,1.4,0.8,2.6,1.9,3.2l-0.5,65.2l3.5,0
+					l0.5-65.2C571.5,504.3,572.2,503.1,572.3,501.7z"/>
+			</g>
+			
+				<rect x="522.7" y="472.2" transform="matrix(7.448311e-03 -1 1 7.448311e-03 8.6828 1045.4733)" class="st1" width="16.5" height="92.3"/>
+			<polygon class="st1" points="495.4,509.8 495.2,510.1 485.5,526.3 484.8,526.3 484.9,509.8 			"/>
+			<polygon class="st1" points="518.7,510 508.8,526.5 496.3,526.4 500.2,519.8 506,509.9 			"/>
+			<polygon class="st1" points="542,510.2 532.1,526.6 519.6,526.5 529.3,510.1 			"/>
+			<polygon class="st1" points="565.3,510.4 555.5,526.8 542.9,526.7 552.7,510.3 			"/>
+			<polygon class="st1" points="577.2,510.4 577.1,527 566.2,526.9 576,510.4 			"/>
+			
+				<rect x="522.5" y="497.7" transform="matrix(7.448311e-03 -1 1 7.448311e-03 -17.0149 1070.603)" class="st1" width="16.5" height="92.3"/>
+			<polygon class="st1" points="495.2,535.3 495,535.6 485.3,551.8 484.6,551.8 484.7,535.3 			"/>
+			<polygon class="st1" points="518.5,535.5 508.6,552 496.1,551.9 500,545.3 505.8,535.4 			"/>
+			<polygon class="st1" points="541.8,535.7 531.9,552.1 519.4,552 529.1,535.6 			"/>
+			<polygon class="st1" points="565.1,535.9 555.4,552.3 542.7,552.2 552.5,535.8 			"/>
+			<polygon class="st1" points="577,536 576.9,552.5 566,552.4 575.8,536 			"/>
+			<path class="st1" d="M577.1,527c0,0,0-0.1,0-0.3l0-0.9c0-0.7,0-1.8,0-3.2c0-2.8,0.1-6.9,0.1-12.2l0.1,0.1l-92.3-0.5l0,0l0.1-0.1
+				c0,5.6-0.1,11.2-0.1,16.5l-0.1-0.1l65.8,0.6l19.5,0.1l5.3,0l0,0l-5.3,0l-19.5-0.1l-65.8-0.3l-0.3,0l0.1-16.8l0.1,0l92.3,0.8
+				l0.1,0l0,0.1c0,5.3-0.1,9.4-0.1,12.2c0,1.5,0,2.5,0,3.2l0,0.7C577.1,526.8,577.1,527,577.1,527z"/>
+			<path class="st1" d="M576.9,552.5c0,0,0-0.1,0-0.3l0-0.9c0-0.7,0-1.8,0-3.2c0-2.8,0.1-6.9,0.1-12.2l0.1,0.1l-92.3-0.5l0,0
+				l0.1-0.1c0,5.6-0.1,11.2-0.1,16.5l-0.1-0.1l65.8,0.6l19.5,0.1l5.3,0l0,0l-5.3,0l-19.5-0.1l-65.8-0.3l-0.3,0l0.1-16.7l0.1,0
+				l92.3,0.8l0.1,0l0,0.1c0,5.3-0.1,9.4-0.1,12.2c0,1.5,0,2.5,0,3.2l0,0.7C576.9,552.3,576.9,552.5,576.9,552.5z"/>
+		</g>
+	</g>
+</g>
+</svg>

二进制
public/img/qrcode2.png


二进制
public/img/qrcode_hover2.png


二进制
public/img/qwkf.png


+ 236 - 236
public/img/ver.svg

@@ -1,236 +1,236 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 24.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 viewBox="0 0 456 262.1" style="enable-background:new 0 0 456 262.1;" xml:space="preserve">
-<style type="text/css">
-	.st0{opacity:0.4;fill:url(#SVGID_1_);enable-background:new    ;}
-	.st1{opacity:0.7;}
-	.st2{opacity:0.4;fill:url(#SVGID_2_);enable-background:new    ;}
-	.st3{opacity:0.4;fill:url(#SVGID_3_);enable-background:new    ;}
-	.st4{opacity:0.4;fill:url(#SVGID_4_);enable-background:new    ;}
-	.st5{opacity:0.4;fill:url(#SVGID_5_);enable-background:new    ;}
-	.st6{opacity:0.6;}
-	.st7{fill:#0073CD;}
-	.st8{fill:#40A8F5;}
-	.st9{fill:#53B9F5;}
-	.st10{fill:#85D3FF;}
-	.st11{fill:#8CD7FF;}
-	.st12{fill:#EBFCFF;}
-	.st13{fill:none;stroke:url(#SVGID_6_);stroke-width:2;stroke-miterlimit:10;}
-	.st14{fill:none;stroke:url(#SVGID_7_);stroke-width:2;stroke-miterlimit:10;}
-	.st15{fill:none;stroke:url(#SVGID_8_);stroke-width:2;stroke-miterlimit:10;}
-	.st16{fill:none;stroke:url(#SVGID_9_);stroke-width:2;stroke-miterlimit:10;}
-	.st17{fill:none;stroke:url(#SVGID_10_);stroke-width:2;stroke-miterlimit:10;}
-	.st18{fill:none;stroke:url(#SVGID_11_);stroke-width:2;stroke-miterlimit:10;}
-</style>
-<title>升级中</title>
-<g id="图层_2_1_">
-	<g id="图层_1-2">
-		
-			<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="232.745" y1="39.57" x2="232.745" y2="1.88" gradientTransform="matrix(1 0 0 -1 0 264)">
-			<stop  offset="0" style="stop-color:#81CFFF"/>
-			<stop  offset="1" style="stop-color:#5ECFFF;stop-opacity:0"/>
-		</linearGradient>
-		<path class="st0" d="M412.3,262.1c-23-23-61-37.7-179.5-37.7S76.2,239.1,53.2,262.1H412.3z"/>
-		<g class="st1">
-			
-				<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="349.365" y1="237.3224" x2="349.365" y2="59.9676" gradientTransform="matrix(1 0 0 -1 0 264)">
-				<stop  offset="0" style="stop-color:#81CFFF"/>
-				<stop  offset="1" style="stop-color:#5ECFFF;stop-opacity:0"/>
-			</linearGradient>
-			<path class="st2" d="M380.7,26.7h-62.6c-1.5-0.1-2.8,1.1-2.8,2.6v172.2c0.1,1.5,1.3,2.7,2.8,2.6h62.6c1.5,0.1,2.7-1.1,2.8-2.6
-				V29.3C383.4,27.8,382.2,26.6,380.7,26.7z M328.3,147c0,0.5-0.4,0.9-0.9,0.9c0,0,0,0,0,0h-3.6c-0.5,0-0.9-0.4-0.9-0.8c0,0,0,0,0,0
-				v-19.7c0-0.5,0.4-0.9,0.9-0.9c0,0,0,0,0,0h3.6c0.5,0,0.9,0.4,0.9,0.9c0,0,0,0,0,0V147z M328.3,116.8c0,0.5-0.4,0.9-0.9,0.9
-				c0,0,0,0,0,0h-3.6c-0.5,0-0.9-0.4-0.9-0.9c0,0,0,0,0,0V97c0-0.5,0.4-0.9,0.9-0.9c0,0,0,0,0,0h3.6c0.5,0,0.9,0.4,0.9,0.9
-				c0,0,0,0,0,0V116.8z M328.3,86.5c0,0.5-0.4,0.9-0.9,0.9c0,0,0,0,0,0h-3.6c-0.5,0-0.9-0.4-0.9-0.9c0,0,0,0,0,0V66.8
-				c0-0.5,0.4-0.9,0.9-0.9c0,0,0,0,0,0h3.6c0.5,0,0.9,0.4,0.9,0.9c0,0,0,0,0,0V86.5z M328.3,56.3c0,0.5-0.4,0.9-0.9,0.9c0,0,0,0,0,0
-				h-3.6c-0.5,0-0.9-0.4-0.9-0.9c0,0,0,0,0,0V36.6c0-0.5,0.4-0.9,0.9-0.9c0,0,0,0,0,0h3.6c0.5,0,0.9,0.4,0.9,0.9c0,0,0,0,0,0V56.3z
-				 M340,147c0,0.5-0.4,0.9-0.9,0.9c0,0,0,0,0,0h-3.6c-0.5,0-0.9-0.4-0.9-0.9c0,0,0,0,0,0v-19.7c0-0.5,0.4-0.9,1-0.9h3.6
-				c0.5,0,0.9,0.4,0.9,0.9V147z M340,116.8c0,0.5-0.4,0.9-0.9,0.9h-3.6c-0.5,0-0.9-0.4-1-0.9V97c0-0.5,0.4-0.9,1-0.9h3.6
-				c0.5,0,0.9,0.4,0.9,0.9V116.8z M340,86.5c0,0.5-0.4,0.9-0.9,0.9h-3.6c-0.5,0-0.9-0.4-1-0.9V66.8c0-0.5,0.4-0.9,1-0.9h3.6
-				c0.5,0,0.9,0.4,0.9,0.9V86.5z M340,56.3c0,0.5-0.4,0.9-0.9,0.9h-3.6c-0.5,0-0.9-0.4-1-0.9V36.6c0-0.5,0.4-0.9,1-0.9h3.6
-				c0.5,0,0.9,0.4,0.9,0.9V56.3z M351.7,147c0,0.5-0.4,0.9-0.9,0.9c0,0,0,0,0,0h-3.6c-0.5,0-0.9-0.4-0.9-0.9c0,0,0,0,0,0v-19.7
-				c0-0.5,0.4-0.9,0.9-0.9h3.6c0.5,0,0.9,0.4,0.9,0.9V147z M351.7,116.8c0,0.5-0.4,0.9-0.9,0.9h-3.6c-0.5,0-0.9-0.4-0.9-0.9V97
-				c0-0.5,0.4-0.9,0.9-0.9h3.6c0.5,0,0.9,0.4,0.9,0.9V116.8z M351.7,86.5c0,0.5-0.4,0.9-0.9,0.9h-3.6c-0.5,0-0.9-0.4-0.9-0.9V66.8
-				c0-0.5,0.4-0.9,0.9-0.9h3.6c0.5,0,0.9,0.4,0.9,0.9V86.5z M351.7,56.3c0,0.5-0.4,0.9-0.9,0.9h-3.6c-0.5,0-0.9-0.4-0.9-0.9V36.6
-				c0-0.5,0.4-0.9,0.9-0.9h3.6c0.5,0,0.9,0.4,0.9,0.9V56.3z M363.4,147c0,0.5-0.4,0.9-0.9,0.9c0,0,0,0,0,0h-3.6
-				c-0.5,0-0.9-0.4-0.9-0.9c0,0,0,0,0,0v-19.7c0-0.5,0.4-0.9,0.9-0.9h3.6c0.5,0,0.9,0.4,0.9,0.9V147z M363.4,116.8
-				c0,0.5-0.4,0.9-0.9,0.9h-3.6c-0.5,0-0.9-0.4-0.9-0.9V97c0-0.5,0.4-0.9,0.9-0.9h3.6c0.5,0,0.9,0.4,0.9,0.9V116.8z M363.4,86.5
-				c0,0.5-0.4,0.9-0.9,0.9h-3.6c-0.5,0-0.9-0.4-0.9-0.9V66.8c0-0.5,0.4-0.9,0.9-0.9h3.6c0.5,0,0.9,0.4,0.9,0.9V86.5z M363.4,56.3
-				c0,0.5-0.4,0.9-0.9,0.9h-3.6c-0.5,0-0.9-0.4-0.9-0.9V36.6c0-0.5,0.4-0.9,0.9-0.9h3.6c0.5,0,0.9,0.4,0.9,0.9V56.3z M375.1,147
-				c0,0.5-0.4,0.9-0.9,0.9c0,0,0,0,0,0h-3.6c-0.5,0-0.9-0.4-0.9-0.9c0,0,0,0,0,0v-19.7c0-0.5,0.4-0.9,0.9-0.9h3.6
-				c0.5,0,0.9,0.4,1,0.9V147z M375.1,116.8c0,0.5-0.4,0.9-1,0.9h-3.6c-0.5,0-0.9-0.4-0.9-0.9V97c0-0.5,0.4-0.9,0.9-0.9h3.6
-				c0.5,0,0.9,0.4,1,0.9V116.8z M375.1,86.5c0,0.5-0.4,0.9-1,0.9h-3.6c-0.5,0-0.9-0.4-0.9-0.9V66.8c0-0.5,0.4-0.9,0.9-0.9h3.6
-				c0.5,0,0.9,0.4,1,0.9V86.5z M375.1,56.3c0,0.5-0.4,0.9-1,0.9h-3.6c-0.5,0-0.9-0.4-0.9-0.9V36.6c0-0.5,0.4-0.9,0.9-0.9h3.6
-				c0.5,0,0.9,0.4,1,0.9V56.3z"/>
-			
-				<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="201.46" y1="208.3924" x2="201.46" y2="59.9976" gradientTransform="matrix(1 0 0 -1 0 264)">
-				<stop  offset="0" style="stop-color:#81CFFF"/>
-				<stop  offset="1" style="stop-color:#5ECFFF;stop-opacity:0"/>
-			</linearGradient>
-			<path class="st3" d="M231.1,55.6h-59.3c-1.5-0.1-2.7,1.1-2.8,2.6v143.2c0.1,1.5,1.3,2.6,2.8,2.6h59.3c1.5,0.1,2.8-1.1,2.8-2.6
-				V58.2C233.9,56.7,232.6,55.5,231.1,55.6z M182.5,159.4c0,0.6-0.6,1.1-1.2,1.1h-5.4c-0.6,0-1.2-0.5-1.2-1.1v-5.2
-				c0-0.6,0.6-1.1,1.2-1.1c0,0,0,0,0,0h5.4c0.6,0,1.2,0.5,1.2,1.1c0,0,0,0,0,0V159.4z M182.5,146.5c0,0.6-0.6,1.1-1.2,1.1
-				c0,0,0,0,0,0h-5.4c-0.6,0-1.2-0.5-1.2-1.1c0,0,0,0,0,0v-5.2c0-0.6,0.6-1.1,1.2-1.1h5.4c0.6,0,1.2,0.5,1.2,1.1V146.5z
-				 M182.5,133.6c0,0.6-0.6,1.1-1.2,1.1h-5.4c-0.6,0-1.2-0.5-1.2-1.1v-5.2c0-0.6,0.6-1.1,1.2-1.1c0,0,0,0,0,0h5.4
-				c0.6,0,1.2,0.5,1.2,1.1c0,0,0,0,0,0V133.6z M182.5,120.7c0,0.6-0.6,1.1-1.2,1.1c0,0,0,0,0,0h-5.4c-0.6,0-1.2-0.5-1.2-1.1
-				c0,0,0,0,0,0v-5.2c0-0.6,0.6-1.1,1.2-1.1h5.4c0.6,0,1.2,0.5,1.2,1.1V120.7z M182.5,107.8c0,0.6-0.6,1.1-1.2,1.1h-5.4
-				c-0.6,0-1.2-0.5-1.2-1.1v-5.2c0-0.6,0.6-1.1,1.2-1.1c0,0,0,0,0,0h5.4c0.6,0,1.2,0.5,1.2,1.1c0,0,0,0,0,0V107.8z M182.5,94.9
-				c0,0.6-0.6,1.1-1.2,1.1c0,0,0,0,0,0h-5.4c-0.6,0-1.2-0.5-1.2-1.1c0,0,0,0,0,0v-5.2c0-0.6,0.6-1.1,1.2-1.1h5.4
-				c0.6,0,1.2,0.5,1.2,1.1V94.9z M182.5,82.1c0,0.6-0.6,1.1-1.2,1.1h-5.4c-0.6,0-1.2-0.5-1.2-1.1v-5.2c0-0.6,0.6-1.1,1.2-1.1
-				c0,0,0,0,0,0h5.4c0.6,0,1.2,0.5,1.2,1.1c0,0,0,0,0,0V82.1z M182.5,69.2c0,0.6-0.6,1.1-1.2,1.1c0,0,0,0,0,0h-5.4
-				c-0.6,0-1.2-0.5-1.2-1.1c0,0,0,0,0,0V64c0-0.6,0.6-1.1,1.2-1.1h5.4c0.6,0,1.2,0.5,1.2,1.1V69.2z M192.6,159.4
-				c0,0.6-0.6,1.1-1.2,1.1H186c-0.6,0-1.2-0.5-1.2-1.1c0,0,0,0,0,0v-5.2c0-0.6,0.6-1.1,1.2-1.1h5.4c0.6,0,1.2,0.5,1.2,1.1
-				c0,0,0,0,0,0L192.6,159.4z M192.6,146.5c0,0.6-0.6,1.1-1.2,1.1c0,0,0,0,0,0H186c-0.6,0-1.2-0.5-1.2-1.1v-5.2
-				c0-0.6,0.6-1.1,1.2-1.1c0,0,0,0,0,0h5.4c0.6,0,1.2,0.5,1.2,1.1L192.6,146.5z M192.6,133.6c0,0.6-0.6,1.1-1.2,1.1H186
-				c-0.6,0-1.2-0.5-1.2-1.1c0,0,0,0,0,0v-5.2c0-0.6,0.6-1.1,1.2-1.1h5.4c0.6,0,1.2,0.5,1.2,1.1c0,0,0,0,0,0L192.6,133.6z
-				 M192.6,120.7c0,0.6-0.6,1.1-1.2,1.1c0,0,0,0,0,0H186c-0.6,0-1.2-0.5-1.2-1.1v-5.2c0-0.6,0.6-1.1,1.2-1.1c0,0,0,0,0,0h5.4
-				c0.6,0,1.2,0.5,1.2,1.1L192.6,120.7z M192.6,107.8c0,0.6-0.6,1.1-1.2,1.1H186c-0.6,0-1.2-0.5-1.2-1.1c0,0,0,0,0,0v-5.2
-				c0-0.6,0.6-1.1,1.2-1.1c0,0,0,0,0,0h5.4c0.6,0,1.2,0.5,1.2,1.1c0,0,0,0,0,0L192.6,107.8z M192.6,94.9c0,0.6-0.6,1.1-1.2,1.1
-				c0,0,0,0,0,0H186c-0.6,0-1.2-0.5-1.2-1.1v-5.2c0-0.6,0.6-1.1,1.2-1.1c0,0,0,0,0,0h5.4c0.6,0,1.2,0.5,1.2,1.1L192.6,94.9z
-				 M192.6,82.1c0,0.6-0.6,1.1-1.2,1.1H186c-0.6,0-1.2-0.5-1.2-1.1c0,0,0,0,0,0v-5.2c0-0.6,0.6-1.1,1.2-1.1c0,0,0,0,0,0h5.4
-				c0.6,0,1.2,0.5,1.2,1.1c0,0,0,0,0,0L192.6,82.1z M192.6,69.2c0,0.6-0.6,1.1-1.2,1.1c0,0,0,0,0,0H186c-0.6,0-1.2-0.5-1.2-1.1V64
-				c0-0.6,0.5-1.2,1.2-1.2c0,0,0,0,0,0h5.4c0.6,0,1.2,0.5,1.2,1.1L192.6,69.2z M202.6,159.4c0,0.6-0.6,1.1-1.2,1.1c0,0,0,0,0,0H196
-				c-0.6,0-1.2-0.5-1.2-1.1v-5.2c0-0.6,0.6-1.1,1.2-1.1c0,0,0,0,0,0h5.4c0.6,0,1.2,0.5,1.2,1.1L202.6,159.4z M202.6,146.5
-				c0,0.6-0.6,1.1-1.2,1.1H196c-0.6,0-1.2-0.5-1.2-1.1c0,0,0,0,0,0v-5.2c0-0.6,0.6-1.1,1.2-1.1h5.4c0.6,0,1.2,0.5,1.2,1.1
-				c0,0,0,0,0,0L202.6,146.5z M202.6,133.6c0,0.6-0.6,1.1-1.2,1.1c0,0,0,0,0,0H196c-0.6,0-1.2-0.5-1.2-1.1v-5.2
-				c0-0.6,0.6-1.1,1.2-1.1c0,0,0,0,0,0h5.4c0.6,0,1.2,0.5,1.2,1.1L202.6,133.6z M202.6,120.7c0,0.6-0.6,1.1-1.2,1.1H196
-				c-0.6,0-1.2-0.5-1.2-1.1c0,0,0,0,0,0v-5.2c0-0.6,0.6-1.1,1.2-1.1h5.4c0.6,0,1.2,0.5,1.2,1.1c0,0,0,0,0,0L202.6,120.7z
-				 M202.6,107.8c0,0.6-0.6,1.1-1.2,1.1c0,0,0,0,0,0H196c-0.6,0-1.2-0.5-1.2-1.1v-5.2c0-0.6,0.6-1.1,1.2-1.1c0,0,0,0,0,0h5.4
-				c0.6,0,1.2,0.5,1.2,1.1c0,0,0,0,0,0L202.6,107.8z M202.6,94.9c0,0.6-0.6,1.1-1.2,1.1H196c-0.6,0-1.2-0.5-1.2-1.1c0,0,0,0,0,0
-				v-5.2c0-0.6,0.6-1.1,1.2-1.1h5.4c0.6,0,1.2,0.5,1.2,1.1c0,0,0,0,0,0L202.6,94.9z M202.6,82.1c0,0.6-0.6,1.1-1.2,1.1c0,0,0,0,0,0
-				H196c-0.6,0-1.2-0.5-1.2-1.1v-5.2c0-0.6,0.6-1.1,1.2-1.1c0,0,0,0,0,0h5.4c0.6,0,1.2,0.5,1.2,1.1c0,0,0,0,0,0L202.6,82.1z
-				 M202.6,69.2c0,0.6-0.6,1.1-1.2,1.1H196c-0.6,0-1.2-0.5-1.2-1.1c0,0,0,0,0,0V64c0-0.6,0.6-1.1,1.2-1.1h5.4c0.6,0,1.2,0.4,1.2,1.1
-				c0,0,0,0,0,0V69.2z M227.8,159.4c0,0.6-0.6,1.1-1.2,1.1h-20.5c-0.6,0-1.2-0.5-1.2-1.1v-5.2c0-0.6,0.6-1.1,1.2-1.1c0,0,0,0,0,0
-				h20.5c0.6,0,1.2,0.5,1.2,1.1c0,0,0,0,0,0L227.8,159.4z M227.8,146.5c0,0.6-0.6,1.1-1.2,1.1c0,0,0,0,0,0h-20.5
-				c-0.6,0-1.2-0.5-1.2-1.1c0,0,0,0,0,0v-5.2c0-0.6,0.6-1.1,1.2-1.1h20.5c0.6,0,1.2,0.5,1.2,1.1L227.8,146.5z M227.8,133.6
-				c0,0.6-0.6,1.1-1.2,1.1h-20.5c-0.6,0-1.2-0.5-1.2-1.1v-5.2c0-0.6,0.6-1.1,1.2-1.1c0,0,0,0,0,0h20.5c0.6,0,1.2,0.5,1.2,1.1
-				c0,0,0,0,0,0L227.8,133.6z M227.8,120.7c0,0.6-0.6,1.1-1.2,1.1c0,0,0,0,0,0h-20.5c-0.6,0-1.2-0.5-1.2-1.1c0,0,0,0,0,0v-5.2
-				c0-0.6,0.6-1.1,1.2-1.1h20.5c0.6,0,1.2,0.5,1.2,1.1L227.8,120.7z M227.8,107.8c0,0.6-0.6,1.1-1.2,1.1h-20.5
-				c-0.6,0-1.2-0.5-1.2-1.1v-5.2c0-0.6,0.6-1.1,1.2-1.1c0,0,0,0,0,0h20.5c0.6,0,1.2,0.5,1.2,1.1c0,0,0,0,0,0L227.8,107.8z
-				 M227.8,94.9c0,0.6-0.6,1.1-1.2,1.1c0,0,0,0,0,0h-20.5c-0.6,0-1.2-0.5-1.2-1.1c0,0,0,0,0,0v-5.2c0-0.6,0.6-1.1,1.2-1.1h20.5
-				c0.6,0,1.2,0.5,1.2,1.1L227.8,94.9z M227.8,82.1c0,0.6-0.6,1.1-1.2,1.1h-20.5c-0.6,0-1.2-0.5-1.2-1.1v-5.2c0-0.6,0.6-1.1,1.2-1.1
-				c0,0,0,0,0,0h20.5c0.6,0,1.2,0.5,1.2,1.1c0,0,0,0,0,0L227.8,82.1z M227.8,69.2c0,0.6-0.6,1.1-1.2,1.1c0,0,0,0,0,0h-20.5
-				c-0.6,0-1.2-0.5-1.2-1.1c0,0,0,0,0,0V64c0-0.6,0.6-1.1,1.2-1.1h20.5c0.6,0,1.2,0.5,1.2,1.1L227.8,69.2z"/>
-			
-				<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="122.975" y1="237.3228" x2="122.975" y2="59.9971" gradientTransform="matrix(1 0 0 -1 0 264)">
-				<stop  offset="0" style="stop-color:#81CFFF"/>
-				<stop  offset="1" style="stop-color:#5ECFFF;stop-opacity:0"/>
-			</linearGradient>
-			<path class="st4" d="M161.1,26.7H84.8c-1.5-0.1-2.8,1.1-2.8,2.6c0,0,0,0,0,0v172.2c0.1,1.5,1.3,2.6,2.8,2.6h76.3
-				c1.5,0.1,2.8-1.1,2.8-2.6V29.3C163.9,27.8,162.6,26.6,161.1,26.7z M154.3,161c0,0.6-0.6,1.1-1.2,1.1H92.8c-0.6,0-1.2-0.5-1.2-1.1
-				c0,0,0,0,0,0v-5.2c0-0.6,0.6-1.1,1.2-1.1c0,0,0,0,0,0h60.3c0.6,0,1.2,0.5,1.2,1.1c0,0,0,0,0,0V161z M154.3,146.3
-				c0,0.6-0.6,1.1-1.2,1.1c0,0,0,0,0,0H92.8c-0.6,0-1.2-0.5-1.2-1.1v-5.2c0-0.6,0.6-1.1,1.2-1.1c0,0,0,0,0,0h60.3
-				c0.6,0,1.2,0.5,1.2,1.1V146.3z M154.3,131.6c0,0.6-0.6,1.1-1.2,1.1H92.8c-0.6,0-1.2-0.5-1.2-1.1c0,0,0,0,0,0v-5.2
-				c0-0.6,0.6-1.1,1.2-1.1h60.3c0.6,0,1.2,0.5,1.2,1.1c0,0,0,0,0,0V131.6z M154.3,117c0,0.6-0.6,1.1-1.2,1.1H92.8
-				c-0.6,0-1.2-0.5-1.2-1.1c0,0,0,0,0,0v-5.2c0-0.6,0.6-1.1,1.2-1.1c0,0,0,0,0,0h60.3c0.6,0,1.2,0.5,1.2,1.1c0,0,0,0,0,0V117z
-				 M154.3,102.3c0,0.6-0.6,1.1-1.2,1.1c0,0,0,0,0,0H92.8c-0.6,0-1.2-0.5-1.2-1.1V97c0-0.6,0.6-1.1,1.2-1.1c0,0,0,0,0,0h60.3
-				c0.6,0,1.2,0.5,1.2,1.1V102.3z M154.3,87.6c0,0.6-0.6,1.1-1.2,1.1H92.8c-0.6,0-1.2-0.5-1.2-1.1c0,0,0,0,0,0v-5.3
-				c0-0.6,0.6-1.1,1.2-1.1h60.3c0.6,0,1.2,0.5,1.2,1.1c0,0,0,0,0,0V87.6z M154.3,72.9c0,0.6-0.6,1.1-1.2,1.1H92.8
-				c-0.6,0-1.2-0.5-1.2-1.1c0,0,0,0,0,0v-5.3c0-0.6,0.6-1.1,1.2-1.1c0,0,0,0,0,0h60.3c0.6,0,1.2,0.5,1.2,1.1c0,0,0,0,0,0V72.9z
-				 M154.3,58.3c0,0.6-0.6,1.1-1.2,1.1c0,0,0,0,0,0H92.8c-0.6,0-1.2-0.5-1.2-1.1V53c0-0.6,0.6-1.1,1.2-1.1c0,0,0,0,0,0h60.3
-				c0.6,0,1.2,0.5,1.2,1.1V58.3z M154.3,43.6c0,0.6-0.6,1.1-1.2,1.1H92.8c-0.6,0-1.2-0.5-1.2-1.1c0,0,0,0,0,0v-5.3
-				c0-0.6,0.6-1.1,1.2-1.1h60.3c0.6,0,1.2,0.5,1.2,1.1c0,0,0,0,0,0V43.6z"/>
-			
-				<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="273.51" y1="264" x2="273.51" y2="54.46" gradientTransform="matrix(1 0 0 -1 0 264)">
-				<stop  offset="0" style="stop-color:#81CFFF"/>
-				<stop  offset="1" style="stop-color:#5ECFFF;stop-opacity:0"/>
-			</linearGradient>
-			<path class="st5" d="M306.2,0h-65.4c-1.4,0-2.5,1.2-2.4,2.6v204.4c-0.1,1.4,1,2.5,2.4,2.6c0,0,0,0,0,0h65.4
-				c1.4-0.1,2.5-1.2,2.4-2.6V2.6C308.7,1.2,307.6,0.1,306.2,0z M300.4,119.6c0,0.6-0.4,1.1-1,1.1h-51.7c-0.6,0-1-0.5-1-1.1v-5.2
-				c0-0.6,0.4-1.1,1-1.1h51.7c0.6,0,1,0.5,1,1.1L300.4,119.6z M300.4,90.3c0,0.6-0.4,1.1-1,1.1h-51.7c-0.6,0-1-0.5-1-1.1V85
-				c0-0.6,0.4-1.1,1-1.1h51.7c0.6,0,1,0.5,1,1.1L300.4,90.3z M300.4,60.9c0,0.6-0.4,1.1-1,1.1h-51.7c-0.6,0-1-0.5-1-1.1v-5.2
-				c0-0.6,0.4-1.1,1-1.1h51.7c0.6,0,1,0.5,1,1.1L300.4,60.9z M300.4,31.5c0,0.6-0.4,1.1-1,1.1h-51.7c-0.6,0-1-0.5-1-1.1v-5.2
-				c0-0.6,0.4-1.1,1-1.1h51.7c0.6,0,1,0.5,1,1.1L300.4,31.5z M300.4,16.9c0,0.6-0.4,1.1-1,1.1h-51.7c-0.6,0-1-0.5-1-1.1v-5.2
-				c0-0.6,0.4-1.1,1-1.1h51.7c0.6,0,1,0.5,1,1.1L300.4,16.9z"/>
-		</g>
-		<g class="st6">
-			<path class="st7" d="M244.2,130.7c3.3,1.9,5.7,13.6,1,20.7c-5.3,6.8-7,9-6.1,14c-4.3-7.3-0.6-7.4-5.8-14.2
-				c-4.6-6.2-2.5-17.4,0.7-20.5C237.4,131.3,240.8,131.3,244.2,130.7L244.2,130.7z"/>
-			<path class="st8" d="M280.4,211.9c-0.1,0.6-0.1,1.2-0.1,1.7c0,0.7,0.1,1.3,0.2,2c-2.1-0.8-4.3-1.2-6.5-1.2
-				c-2.6,0-5.2,0.6-7.5,1.7c-0.8-4.2-4.8-7-9-6.2c-2.8,0.5-5,2.5-5.9,5.2c-3.4-2.1-7.7-2-11.1,0.1c-0.4-5.7-4.1-0.8-9.8-0.8
-				c-6,0-11.8-4.4-11.8,1.7c0,1.1,0.2,2.2,0.4,3.2c-1.1,0.1-2.1,0.5-3,1c-0.9-7-6.8-12.4-13.9-12.7c22.6-10.3,22.4-44.6,24.8-74.6
-				c0.1-1.7,1.2-4.1,1.8-4.4l0,0c1.5,1.1,3.2,1.8,5.1,2.1c-3.2,3.1-5.4,14.3-0.7,20.5c5.3,6.8,1.6,6.9,5.8,14.2
-				c-0.9-5,0.8-7.2,6.1-14c4.8-7.2,2.3-18.8-1-20.7c1.8-0.3,3.6-1,5.1-2.1l0,0c0.6,0.3,1.7,2.7,1.8,4.4
-				C253.6,164.6,250.4,198.5,280.4,211.9z"/>
-			<path class="st9" d="M303.3,203.2c-5.4,0-9.8,4.4-9.8,9.8c0,0.3,0,0.6,0,0.9c-1.5-1.7-3.7-2.6-6-2.5c-0.7,0-1.4,0.1-2.1,0.3
-				c0.7-1.3,1.1-2.8,1.1-4.3c-0.1-4.6-3.9-8.3-8.5-8.2c-4,0.1-7.4,3-8.1,6.9c-0.1,0.4-0.1,0.9-0.1,1.3c0,0.5,0,1,0.1,1.6
-				c-3.5-1.4-7.4-1.3-10.8,0.4c-0.7-3.2-3.9-5.3-7.2-4.6c-2,0.4-3.6,1.9-4.3,3.8c-1.3-0.8-2.7-1.2-4.2-1.2c-1.5,0-3.1,0.4-4.4,1.3
-				c-0.2-4.6-4.1-8.2-8.7-8s-8.2,4.1-8,8.7l0,0c0,0.8,0.1,1.7,0.3,2.5c-0.8,0.1-1.6,0.4-2.3,0.8c-0.7-5.4-5.2-9.6-10.7-9.8h-0.4
-				c-3.4,0-6.7,1.6-8.8,4.3c-3-6.2-10.4-8.9-16.7-5.9c-2.9,1.4-5.2,3.9-6.3,7c4.1,3,6.6,7.8,6.6,12.9c0,2.3-0.5,4.6-1.5,6.6
-				c2-2.2,4.8-3.4,7.8-3.4c0.9,0,1.8,0.1,2.7,0.3c-2.9-5-1.2-11.5,3.8-14.4c1.2-0.7,2.6-1.2,3.9-1.3c0.5-0.1,0.9-0.1,1.4-0.1
-				c5.8,0,10.6,4.7,10.6,10.6l0,0c0,0.6-0.1,1.3-0.2,1.9c4.4-1.7,9.3-1.6,13.6,0.4c0.9-4.1,4.9-6.7,9-5.8c2.6,0.6,4.7,2.4,5.5,4.9
-				c1.6-0.9,3.5-1.4,5.3-1.4c1.9,0,3.8,0.5,5.4,1.5l0.1,0.1c0.3-4.5,3.6-8.4,8-9.4c0.8-0.2,1.7-0.3,2.5-0.3
-				c5.8,0,10.6,4.7,10.6,10.6c0,1-0.2,2-0.4,3c1.1,0.1,2.1,0.5,3,1c1-7,7-12.1,14-12.1c1.5,0,3,0.2,4.4,0.7c2.6,0.8,5,2.5,6.7,4.6
-				c2.4-4.8,7-8.2,12.4-8.8C311.4,205.9,307.6,203.2,303.3,203.2z"/>
-			<path class="st10" d="M314.4,209.9c-0.6,0-1.2,0-1.8,0.1c-5.4,0.6-10.1,3.9-12.5,8.7c-1.7-2.2-4-3.8-6.7-4.6
-				c-1.4-0.5-2.9-0.7-4.4-0.7c-7,0-13,5.2-14,12.1c-0.9-0.5-1.9-0.9-3-1c0.3-1,0.4-2,0.4-3c0-5.8-4.7-10.5-10.5-10.5
-				c-0.8,0-1.7,0.1-2.5,0.3c-4.4,1.1-7.7,4.9-8,9.4l-0.1-0.1c-1.6-1-3.5-1.5-5.4-1.5c-1.9,0-3.7,0.5-5.3,1.4c-1.4-3.9-5.7-6-9.6-4.6
-				c-2.5,0.9-4.3,3-4.9,5.5c-4.3-2-9.2-2.1-13.6-0.4c0.1-0.6,0.2-1.3,0.2-1.9c0-5.8-4.7-10.6-10.6-10.6l0,0c-0.5,0-0.9,0-1.4,0.1
-				c-5.8,0.8-9.9,6.1-9.1,11.8c0.2,1.4,0.6,2.7,1.3,3.9c-0.9-0.2-1.8-0.3-2.7-0.3c-2.9,0-5.8,1.2-7.8,3.4c1-2.1,1.5-4.3,1.5-6.6
-				c0-5.1-2.4-9.9-6.6-12.9l0,0c-7.1-5.2-17-3.6-22.2,3.5c-5.2,7.1-3.6,17,3.5,22.2c6.8,5,16.4,3.7,21.7-2.8
-				c-2.1,5.5,0.7,11.6,6.1,13.6c5.5,2.1,11.6-0.7,13.6-6.1c0.5-1.2,0.7-2.5,0.7-3.7c0-1.9,0.4-0.1,0.4,2.7c0,9.7,7.8,17.6,17.5,17.6
-				c9.7,0,17.6-7.8,17.6-17.5c0-2.4-0.5-4.8-1.4-7l0.5-0.1c0.5,5.8,5.7,10.1,11.5,9.5c5-0.5,9-4.4,9.5-9.4c1.7,1,3.6,1.6,5.5,1.6
-				c0.6,0,1.2,0,1.7-0.1v0.1c0,4.2,3.4,7.6,7.6,7.5c2.6,0,5-1.4,6.4-3.6c4.7,6.3,13.5,7.5,19.8,2.9c1.5-1.1,2.8-2.5,3.7-4.2
-				c4.9,7.3,14.8,9.1,22.1,4.2s9.1-14.8,4.2-22.1C324.5,212.5,319.6,209.9,314.4,209.9L314.4,209.9z"/>
-		</g>
-		<path class="st11" d="M239.1,70c6.4,0,11.6,5.2,11.6,11.6c0,6.4-5.2,11.6-11.6,11.6c-6.4,0-11.6-5.2-11.6-11.6c0,0,0,0,0,0
-			C227.5,75.2,232.7,70,239.1,70z"/>
-		<path class="st8" d="M239.1,137.2c8.3,0,13.5-1.7,16.6-7.9c0,3.2-1.5,6.2-4.1,8.1c-1.9,1.3-4,2.2-6.2,2.6c-4.1,0.8-8.4,0.8-12.5,0
-			c-2.2-0.4-4.3-1.3-6.2-2.6c-2.6-1.9-4.2-4.9-4.2-8.1C225.6,135.5,230.7,137.2,239.1,137.2z"/>
-		<path class="st8" d="M288.4,151.7c0,0.5-0.3,0.8-0.8,0.8c-0.3,0-0.5-0.1-0.7-0.3c-7.6-10.3-25.5-25-30.4-24.7
-			c2.4-6.1,3.4-15.9,3.6-31.2C271.5,100.3,288.3,122.4,288.4,151.7z"/>
-		<path class="st8" d="M218.1,96.3c0.3,15.2,1.2,25,3.6,31.1l-0.2,0.1c-4.9-0.3-22.8,14.5-30.4,24.7c-0.3,0.4-0.8,0.5-1.1,0.2
-			c-0.2-0.2-0.4-0.4-0.3-0.7C189.7,122.3,206.6,100.2,218.1,96.3L218.1,96.3z"/>
-		<path class="st8" d="M250.7,81.6c0-6.4-5.2-11.6-11.6-11.6c-6.4,0-11.6,5.2-11.6,11.6s5.2,11.6,11.6,11.6l0,0
-			C245.5,93.2,250.7,88,250.7,81.6z M252.9,81.6c0,7.6-6.2,13.8-13.8,13.8c-7.6,0-13.8-6.2-13.8-13.8c0-7.6,6.2-13.8,13.8-13.8
-			c0,0,0,0,0,0C246.7,67.8,252.9,74,252.9,81.6z"/>
-		<path class="st8" d="M239.1,48.7c5.7,0,10.7-2,13.8-4.9c0.5,1.3,1,2.6,1.4,4c-3.3,3.3-8.9,5.4-15.3,5.4s-11.9-2.1-15.3-5.4
-			c0.5-1.3,1-2.7,1.4-4C228.4,46.8,233.4,48.7,239.1,48.7z"/>
-		<path class="st9" d="M252.9,43.8c-3.1,3-8.1,4.9-13.8,4.9s-10.7-2-13.8-4.9c2-5.1,4.5-10,7.6-14.5c0.5-0.7,0.9-1.3,1.4-1.9
-			c2-2.7,5.8-3.2,8.5-1.2c0.4,0.3,0.8,0.7,1.2,1.2c0.5,0.6,0.9,1.2,1.4,1.9C248.4,33.8,250.9,38.7,252.9,43.8z"/>
-		<path class="st10" d="M260.1,96.4c-0.3,15.3-1.2,25-3.6,31.2c-0.2,0.6-0.5,1.2-0.8,1.7c-3.1,6.2-8.3,7.9-16.6,7.9
-			s-13.5-1.7-16.6-7.9c-0.3-0.6-0.5-1.1-0.8-1.8c-2.4-6.2-3.4-15.9-3.6-31.1c-0.1-3.4-0.1-7.1-0.1-11.1c-0.1-12.7,1.8-25.4,5.8-37.5
-			c3.3,3.3,8.9,5.4,15.3,5.4s11.9-2.1,15.3-5.4c4,12.1,6,24.8,5.8,37.5C260.2,89.2,260.1,92.9,260.1,96.4z M252.9,81.6
-			c0-7.6-6.2-13.8-13.8-13.8c-7.6,0-13.8,6.2-13.8,13.8c0,7.6,6.2,13.8,13.8,13.8c0,0,0,0,0,0C246.7,95.4,252.9,89.2,252.9,81.6
-			L252.9,81.6z"/>
-		<path class="st12" d="M139.2,246.1l18.4,0.4v0.7l-19.4-0.4v-0.7V246C138.4,246.1,138.6,246.1,139.2,246.1z"/>
-		
-			<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="112.2357" y1="190.775" x2="112.2357" y2="101.005" gradientTransform="matrix(1 0 0 -1 0 264)">
-			<stop  offset="0" style="stop-color:#81CFFF"/>
-			<stop  offset="1" style="stop-color:#5ECFFF;stop-opacity:0"/>
-		</linearGradient>
-		<line class="st13" x1="112.2" y1="73.2" x2="112.2" y2="163"/>
-		
-			<linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="348.955" y1="195.605" x2="348.955" y2="105.835" gradientTransform="matrix(1 0 0 -1 0 264)">
-			<stop  offset="0" style="stop-color:#81CFFF"/>
-			<stop  offset="1" style="stop-color:#5ECFFF;stop-opacity:0"/>
-		</linearGradient>
-		<line class="st14" x1="349" y1="68.4" x2="349" y2="158.2"/>
-		
-			<linearGradient id="SVGID_8_" gradientUnits="userSpaceOnUse" x1="40.9" y1="120.12" x2="40.9" y2="64.49" gradientTransform="matrix(1 0 0 -1 0 264)">
-			<stop  offset="0" style="stop-color:#81CFFF"/>
-			<stop  offset="1" style="stop-color:#5ECFFF;stop-opacity:0"/>
-		</linearGradient>
-		<line class="st15" x1="40.9" y1="143.9" x2="40.9" y2="199.5"/>
-		
-			<linearGradient id="SVGID_9_" gradientUnits="userSpaceOnUse" x1="64.97" y1="168.64" x2="64.97" y2="140.83" gradientTransform="matrix(1 0 0 -1 0 264)">
-			<stop  offset="0" style="stop-color:#81CFFF"/>
-			<stop  offset="1" style="stop-color:#5ECFFF;stop-opacity:0"/>
-		</linearGradient>
-		<line class="st16" x1="65" y1="95.4" x2="65" y2="123.2"/>
-		
-			<linearGradient id="SVGID_10_" gradientUnits="userSpaceOnUse" x1="397.23" y1="159.8" x2="397.23" y2="131.98" gradientTransform="matrix(1 0 0 -1 0 264)">
-			<stop  offset="0" style="stop-color:#81CFFF"/>
-			<stop  offset="1" style="stop-color:#5ECFFF;stop-opacity:0"/>
-		</linearGradient>
-		<line class="st17" x1="397.2" y1="104.2" x2="397.2" y2="132"/>
-		
-			<linearGradient id="SVGID_11_" gradientUnits="userSpaceOnUse" x1="424.75" y1="130.51" x2="424.75" y2="74.87" gradientTransform="matrix(1 0 0 -1 0 264)">
-			<stop  offset="0" style="stop-color:#81CFFF"/>
-			<stop  offset="1" style="stop-color:#5ECFFF;stop-opacity:0"/>
-		</linearGradient>
-		<line class="st18" x1="424.8" y1="133.5" x2="424.8" y2="189.1"/>
-	</g>
-</g>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 24.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 456 262.1" style="enable-background:new 0 0 456 262.1;" xml:space="preserve">
+<style type="text/css">
+	.st0{opacity:0.4;fill:url(#SVGID_1_);enable-background:new    ;}
+	.st1{opacity:0.7;}
+	.st2{opacity:0.4;fill:url(#SVGID_2_);enable-background:new    ;}
+	.st3{opacity:0.4;fill:url(#SVGID_3_);enable-background:new    ;}
+	.st4{opacity:0.4;fill:url(#SVGID_4_);enable-background:new    ;}
+	.st5{opacity:0.4;fill:url(#SVGID_5_);enable-background:new    ;}
+	.st6{opacity:0.6;}
+	.st7{fill:#0073CD;}
+	.st8{fill:#40A8F5;}
+	.st9{fill:#53B9F5;}
+	.st10{fill:#85D3FF;}
+	.st11{fill:#8CD7FF;}
+	.st12{fill:#EBFCFF;}
+	.st13{fill:none;stroke:url(#SVGID_6_);stroke-width:2;stroke-miterlimit:10;}
+	.st14{fill:none;stroke:url(#SVGID_7_);stroke-width:2;stroke-miterlimit:10;}
+	.st15{fill:none;stroke:url(#SVGID_8_);stroke-width:2;stroke-miterlimit:10;}
+	.st16{fill:none;stroke:url(#SVGID_9_);stroke-width:2;stroke-miterlimit:10;}
+	.st17{fill:none;stroke:url(#SVGID_10_);stroke-width:2;stroke-miterlimit:10;}
+	.st18{fill:none;stroke:url(#SVGID_11_);stroke-width:2;stroke-miterlimit:10;}
+</style>
+<title>升级中</title>
+<g id="图层_2_1_">
+	<g id="图层_1-2">
+		
+			<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="232.745" y1="39.57" x2="232.745" y2="1.88" gradientTransform="matrix(1 0 0 -1 0 264)">
+			<stop  offset="0" style="stop-color:#81CFFF"/>
+			<stop  offset="1" style="stop-color:#5ECFFF;stop-opacity:0"/>
+		</linearGradient>
+		<path class="st0" d="M412.3,262.1c-23-23-61-37.7-179.5-37.7S76.2,239.1,53.2,262.1H412.3z"/>
+		<g class="st1">
+			
+				<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="349.365" y1="237.3224" x2="349.365" y2="59.9676" gradientTransform="matrix(1 0 0 -1 0 264)">
+				<stop  offset="0" style="stop-color:#81CFFF"/>
+				<stop  offset="1" style="stop-color:#5ECFFF;stop-opacity:0"/>
+			</linearGradient>
+			<path class="st2" d="M380.7,26.7h-62.6c-1.5-0.1-2.8,1.1-2.8,2.6v172.2c0.1,1.5,1.3,2.7,2.8,2.6h62.6c1.5,0.1,2.7-1.1,2.8-2.6
+				V29.3C383.4,27.8,382.2,26.6,380.7,26.7z M328.3,147c0,0.5-0.4,0.9-0.9,0.9c0,0,0,0,0,0h-3.6c-0.5,0-0.9-0.4-0.9-0.8c0,0,0,0,0,0
+				v-19.7c0-0.5,0.4-0.9,0.9-0.9c0,0,0,0,0,0h3.6c0.5,0,0.9,0.4,0.9,0.9c0,0,0,0,0,0V147z M328.3,116.8c0,0.5-0.4,0.9-0.9,0.9
+				c0,0,0,0,0,0h-3.6c-0.5,0-0.9-0.4-0.9-0.9c0,0,0,0,0,0V97c0-0.5,0.4-0.9,0.9-0.9c0,0,0,0,0,0h3.6c0.5,0,0.9,0.4,0.9,0.9
+				c0,0,0,0,0,0V116.8z M328.3,86.5c0,0.5-0.4,0.9-0.9,0.9c0,0,0,0,0,0h-3.6c-0.5,0-0.9-0.4-0.9-0.9c0,0,0,0,0,0V66.8
+				c0-0.5,0.4-0.9,0.9-0.9c0,0,0,0,0,0h3.6c0.5,0,0.9,0.4,0.9,0.9c0,0,0,0,0,0V86.5z M328.3,56.3c0,0.5-0.4,0.9-0.9,0.9c0,0,0,0,0,0
+				h-3.6c-0.5,0-0.9-0.4-0.9-0.9c0,0,0,0,0,0V36.6c0-0.5,0.4-0.9,0.9-0.9c0,0,0,0,0,0h3.6c0.5,0,0.9,0.4,0.9,0.9c0,0,0,0,0,0V56.3z
+				 M340,147c0,0.5-0.4,0.9-0.9,0.9c0,0,0,0,0,0h-3.6c-0.5,0-0.9-0.4-0.9-0.9c0,0,0,0,0,0v-19.7c0-0.5,0.4-0.9,1-0.9h3.6
+				c0.5,0,0.9,0.4,0.9,0.9V147z M340,116.8c0,0.5-0.4,0.9-0.9,0.9h-3.6c-0.5,0-0.9-0.4-1-0.9V97c0-0.5,0.4-0.9,1-0.9h3.6
+				c0.5,0,0.9,0.4,0.9,0.9V116.8z M340,86.5c0,0.5-0.4,0.9-0.9,0.9h-3.6c-0.5,0-0.9-0.4-1-0.9V66.8c0-0.5,0.4-0.9,1-0.9h3.6
+				c0.5,0,0.9,0.4,0.9,0.9V86.5z M340,56.3c0,0.5-0.4,0.9-0.9,0.9h-3.6c-0.5,0-0.9-0.4-1-0.9V36.6c0-0.5,0.4-0.9,1-0.9h3.6
+				c0.5,0,0.9,0.4,0.9,0.9V56.3z M351.7,147c0,0.5-0.4,0.9-0.9,0.9c0,0,0,0,0,0h-3.6c-0.5,0-0.9-0.4-0.9-0.9c0,0,0,0,0,0v-19.7
+				c0-0.5,0.4-0.9,0.9-0.9h3.6c0.5,0,0.9,0.4,0.9,0.9V147z M351.7,116.8c0,0.5-0.4,0.9-0.9,0.9h-3.6c-0.5,0-0.9-0.4-0.9-0.9V97
+				c0-0.5,0.4-0.9,0.9-0.9h3.6c0.5,0,0.9,0.4,0.9,0.9V116.8z M351.7,86.5c0,0.5-0.4,0.9-0.9,0.9h-3.6c-0.5,0-0.9-0.4-0.9-0.9V66.8
+				c0-0.5,0.4-0.9,0.9-0.9h3.6c0.5,0,0.9,0.4,0.9,0.9V86.5z M351.7,56.3c0,0.5-0.4,0.9-0.9,0.9h-3.6c-0.5,0-0.9-0.4-0.9-0.9V36.6
+				c0-0.5,0.4-0.9,0.9-0.9h3.6c0.5,0,0.9,0.4,0.9,0.9V56.3z M363.4,147c0,0.5-0.4,0.9-0.9,0.9c0,0,0,0,0,0h-3.6
+				c-0.5,0-0.9-0.4-0.9-0.9c0,0,0,0,0,0v-19.7c0-0.5,0.4-0.9,0.9-0.9h3.6c0.5,0,0.9,0.4,0.9,0.9V147z M363.4,116.8
+				c0,0.5-0.4,0.9-0.9,0.9h-3.6c-0.5,0-0.9-0.4-0.9-0.9V97c0-0.5,0.4-0.9,0.9-0.9h3.6c0.5,0,0.9,0.4,0.9,0.9V116.8z M363.4,86.5
+				c0,0.5-0.4,0.9-0.9,0.9h-3.6c-0.5,0-0.9-0.4-0.9-0.9V66.8c0-0.5,0.4-0.9,0.9-0.9h3.6c0.5,0,0.9,0.4,0.9,0.9V86.5z M363.4,56.3
+				c0,0.5-0.4,0.9-0.9,0.9h-3.6c-0.5,0-0.9-0.4-0.9-0.9V36.6c0-0.5,0.4-0.9,0.9-0.9h3.6c0.5,0,0.9,0.4,0.9,0.9V56.3z M375.1,147
+				c0,0.5-0.4,0.9-0.9,0.9c0,0,0,0,0,0h-3.6c-0.5,0-0.9-0.4-0.9-0.9c0,0,0,0,0,0v-19.7c0-0.5,0.4-0.9,0.9-0.9h3.6
+				c0.5,0,0.9,0.4,1,0.9V147z M375.1,116.8c0,0.5-0.4,0.9-1,0.9h-3.6c-0.5,0-0.9-0.4-0.9-0.9V97c0-0.5,0.4-0.9,0.9-0.9h3.6
+				c0.5,0,0.9,0.4,1,0.9V116.8z M375.1,86.5c0,0.5-0.4,0.9-1,0.9h-3.6c-0.5,0-0.9-0.4-0.9-0.9V66.8c0-0.5,0.4-0.9,0.9-0.9h3.6
+				c0.5,0,0.9,0.4,1,0.9V86.5z M375.1,56.3c0,0.5-0.4,0.9-1,0.9h-3.6c-0.5,0-0.9-0.4-0.9-0.9V36.6c0-0.5,0.4-0.9,0.9-0.9h3.6
+				c0.5,0,0.9,0.4,1,0.9V56.3z"/>
+			
+				<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="201.46" y1="208.3924" x2="201.46" y2="59.9976" gradientTransform="matrix(1 0 0 -1 0 264)">
+				<stop  offset="0" style="stop-color:#81CFFF"/>
+				<stop  offset="1" style="stop-color:#5ECFFF;stop-opacity:0"/>
+			</linearGradient>
+			<path class="st3" d="M231.1,55.6h-59.3c-1.5-0.1-2.7,1.1-2.8,2.6v143.2c0.1,1.5,1.3,2.6,2.8,2.6h59.3c1.5,0.1,2.8-1.1,2.8-2.6
+				V58.2C233.9,56.7,232.6,55.5,231.1,55.6z M182.5,159.4c0,0.6-0.6,1.1-1.2,1.1h-5.4c-0.6,0-1.2-0.5-1.2-1.1v-5.2
+				c0-0.6,0.6-1.1,1.2-1.1c0,0,0,0,0,0h5.4c0.6,0,1.2,0.5,1.2,1.1c0,0,0,0,0,0V159.4z M182.5,146.5c0,0.6-0.6,1.1-1.2,1.1
+				c0,0,0,0,0,0h-5.4c-0.6,0-1.2-0.5-1.2-1.1c0,0,0,0,0,0v-5.2c0-0.6,0.6-1.1,1.2-1.1h5.4c0.6,0,1.2,0.5,1.2,1.1V146.5z
+				 M182.5,133.6c0,0.6-0.6,1.1-1.2,1.1h-5.4c-0.6,0-1.2-0.5-1.2-1.1v-5.2c0-0.6,0.6-1.1,1.2-1.1c0,0,0,0,0,0h5.4
+				c0.6,0,1.2,0.5,1.2,1.1c0,0,0,0,0,0V133.6z M182.5,120.7c0,0.6-0.6,1.1-1.2,1.1c0,0,0,0,0,0h-5.4c-0.6,0-1.2-0.5-1.2-1.1
+				c0,0,0,0,0,0v-5.2c0-0.6,0.6-1.1,1.2-1.1h5.4c0.6,0,1.2,0.5,1.2,1.1V120.7z M182.5,107.8c0,0.6-0.6,1.1-1.2,1.1h-5.4
+				c-0.6,0-1.2-0.5-1.2-1.1v-5.2c0-0.6,0.6-1.1,1.2-1.1c0,0,0,0,0,0h5.4c0.6,0,1.2,0.5,1.2,1.1c0,0,0,0,0,0V107.8z M182.5,94.9
+				c0,0.6-0.6,1.1-1.2,1.1c0,0,0,0,0,0h-5.4c-0.6,0-1.2-0.5-1.2-1.1c0,0,0,0,0,0v-5.2c0-0.6,0.6-1.1,1.2-1.1h5.4
+				c0.6,0,1.2,0.5,1.2,1.1V94.9z M182.5,82.1c0,0.6-0.6,1.1-1.2,1.1h-5.4c-0.6,0-1.2-0.5-1.2-1.1v-5.2c0-0.6,0.6-1.1,1.2-1.1
+				c0,0,0,0,0,0h5.4c0.6,0,1.2,0.5,1.2,1.1c0,0,0,0,0,0V82.1z M182.5,69.2c0,0.6-0.6,1.1-1.2,1.1c0,0,0,0,0,0h-5.4
+				c-0.6,0-1.2-0.5-1.2-1.1c0,0,0,0,0,0V64c0-0.6,0.6-1.1,1.2-1.1h5.4c0.6,0,1.2,0.5,1.2,1.1V69.2z M192.6,159.4
+				c0,0.6-0.6,1.1-1.2,1.1H186c-0.6,0-1.2-0.5-1.2-1.1c0,0,0,0,0,0v-5.2c0-0.6,0.6-1.1,1.2-1.1h5.4c0.6,0,1.2,0.5,1.2,1.1
+				c0,0,0,0,0,0L192.6,159.4z M192.6,146.5c0,0.6-0.6,1.1-1.2,1.1c0,0,0,0,0,0H186c-0.6,0-1.2-0.5-1.2-1.1v-5.2
+				c0-0.6,0.6-1.1,1.2-1.1c0,0,0,0,0,0h5.4c0.6,0,1.2,0.5,1.2,1.1L192.6,146.5z M192.6,133.6c0,0.6-0.6,1.1-1.2,1.1H186
+				c-0.6,0-1.2-0.5-1.2-1.1c0,0,0,0,0,0v-5.2c0-0.6,0.6-1.1,1.2-1.1h5.4c0.6,0,1.2,0.5,1.2,1.1c0,0,0,0,0,0L192.6,133.6z
+				 M192.6,120.7c0,0.6-0.6,1.1-1.2,1.1c0,0,0,0,0,0H186c-0.6,0-1.2-0.5-1.2-1.1v-5.2c0-0.6,0.6-1.1,1.2-1.1c0,0,0,0,0,0h5.4
+				c0.6,0,1.2,0.5,1.2,1.1L192.6,120.7z M192.6,107.8c0,0.6-0.6,1.1-1.2,1.1H186c-0.6,0-1.2-0.5-1.2-1.1c0,0,0,0,0,0v-5.2
+				c0-0.6,0.6-1.1,1.2-1.1c0,0,0,0,0,0h5.4c0.6,0,1.2,0.5,1.2,1.1c0,0,0,0,0,0L192.6,107.8z M192.6,94.9c0,0.6-0.6,1.1-1.2,1.1
+				c0,0,0,0,0,0H186c-0.6,0-1.2-0.5-1.2-1.1v-5.2c0-0.6,0.6-1.1,1.2-1.1c0,0,0,0,0,0h5.4c0.6,0,1.2,0.5,1.2,1.1L192.6,94.9z
+				 M192.6,82.1c0,0.6-0.6,1.1-1.2,1.1H186c-0.6,0-1.2-0.5-1.2-1.1c0,0,0,0,0,0v-5.2c0-0.6,0.6-1.1,1.2-1.1c0,0,0,0,0,0h5.4
+				c0.6,0,1.2,0.5,1.2,1.1c0,0,0,0,0,0L192.6,82.1z M192.6,69.2c0,0.6-0.6,1.1-1.2,1.1c0,0,0,0,0,0H186c-0.6,0-1.2-0.5-1.2-1.1V64
+				c0-0.6,0.5-1.2,1.2-1.2c0,0,0,0,0,0h5.4c0.6,0,1.2,0.5,1.2,1.1L192.6,69.2z M202.6,159.4c0,0.6-0.6,1.1-1.2,1.1c0,0,0,0,0,0H196
+				c-0.6,0-1.2-0.5-1.2-1.1v-5.2c0-0.6,0.6-1.1,1.2-1.1c0,0,0,0,0,0h5.4c0.6,0,1.2,0.5,1.2,1.1L202.6,159.4z M202.6,146.5
+				c0,0.6-0.6,1.1-1.2,1.1H196c-0.6,0-1.2-0.5-1.2-1.1c0,0,0,0,0,0v-5.2c0-0.6,0.6-1.1,1.2-1.1h5.4c0.6,0,1.2,0.5,1.2,1.1
+				c0,0,0,0,0,0L202.6,146.5z M202.6,133.6c0,0.6-0.6,1.1-1.2,1.1c0,0,0,0,0,0H196c-0.6,0-1.2-0.5-1.2-1.1v-5.2
+				c0-0.6,0.6-1.1,1.2-1.1c0,0,0,0,0,0h5.4c0.6,0,1.2,0.5,1.2,1.1L202.6,133.6z M202.6,120.7c0,0.6-0.6,1.1-1.2,1.1H196
+				c-0.6,0-1.2-0.5-1.2-1.1c0,0,0,0,0,0v-5.2c0-0.6,0.6-1.1,1.2-1.1h5.4c0.6,0,1.2,0.5,1.2,1.1c0,0,0,0,0,0L202.6,120.7z
+				 M202.6,107.8c0,0.6-0.6,1.1-1.2,1.1c0,0,0,0,0,0H196c-0.6,0-1.2-0.5-1.2-1.1v-5.2c0-0.6,0.6-1.1,1.2-1.1c0,0,0,0,0,0h5.4
+				c0.6,0,1.2,0.5,1.2,1.1c0,0,0,0,0,0L202.6,107.8z M202.6,94.9c0,0.6-0.6,1.1-1.2,1.1H196c-0.6,0-1.2-0.5-1.2-1.1c0,0,0,0,0,0
+				v-5.2c0-0.6,0.6-1.1,1.2-1.1h5.4c0.6,0,1.2,0.5,1.2,1.1c0,0,0,0,0,0L202.6,94.9z M202.6,82.1c0,0.6-0.6,1.1-1.2,1.1c0,0,0,0,0,0
+				H196c-0.6,0-1.2-0.5-1.2-1.1v-5.2c0-0.6,0.6-1.1,1.2-1.1c0,0,0,0,0,0h5.4c0.6,0,1.2,0.5,1.2,1.1c0,0,0,0,0,0L202.6,82.1z
+				 M202.6,69.2c0,0.6-0.6,1.1-1.2,1.1H196c-0.6,0-1.2-0.5-1.2-1.1c0,0,0,0,0,0V64c0-0.6,0.6-1.1,1.2-1.1h5.4c0.6,0,1.2,0.4,1.2,1.1
+				c0,0,0,0,0,0V69.2z M227.8,159.4c0,0.6-0.6,1.1-1.2,1.1h-20.5c-0.6,0-1.2-0.5-1.2-1.1v-5.2c0-0.6,0.6-1.1,1.2-1.1c0,0,0,0,0,0
+				h20.5c0.6,0,1.2,0.5,1.2,1.1c0,0,0,0,0,0L227.8,159.4z M227.8,146.5c0,0.6-0.6,1.1-1.2,1.1c0,0,0,0,0,0h-20.5
+				c-0.6,0-1.2-0.5-1.2-1.1c0,0,0,0,0,0v-5.2c0-0.6,0.6-1.1,1.2-1.1h20.5c0.6,0,1.2,0.5,1.2,1.1L227.8,146.5z M227.8,133.6
+				c0,0.6-0.6,1.1-1.2,1.1h-20.5c-0.6,0-1.2-0.5-1.2-1.1v-5.2c0-0.6,0.6-1.1,1.2-1.1c0,0,0,0,0,0h20.5c0.6,0,1.2,0.5,1.2,1.1
+				c0,0,0,0,0,0L227.8,133.6z M227.8,120.7c0,0.6-0.6,1.1-1.2,1.1c0,0,0,0,0,0h-20.5c-0.6,0-1.2-0.5-1.2-1.1c0,0,0,0,0,0v-5.2
+				c0-0.6,0.6-1.1,1.2-1.1h20.5c0.6,0,1.2,0.5,1.2,1.1L227.8,120.7z M227.8,107.8c0,0.6-0.6,1.1-1.2,1.1h-20.5
+				c-0.6,0-1.2-0.5-1.2-1.1v-5.2c0-0.6,0.6-1.1,1.2-1.1c0,0,0,0,0,0h20.5c0.6,0,1.2,0.5,1.2,1.1c0,0,0,0,0,0L227.8,107.8z
+				 M227.8,94.9c0,0.6-0.6,1.1-1.2,1.1c0,0,0,0,0,0h-20.5c-0.6,0-1.2-0.5-1.2-1.1c0,0,0,0,0,0v-5.2c0-0.6,0.6-1.1,1.2-1.1h20.5
+				c0.6,0,1.2,0.5,1.2,1.1L227.8,94.9z M227.8,82.1c0,0.6-0.6,1.1-1.2,1.1h-20.5c-0.6,0-1.2-0.5-1.2-1.1v-5.2c0-0.6,0.6-1.1,1.2-1.1
+				c0,0,0,0,0,0h20.5c0.6,0,1.2,0.5,1.2,1.1c0,0,0,0,0,0L227.8,82.1z M227.8,69.2c0,0.6-0.6,1.1-1.2,1.1c0,0,0,0,0,0h-20.5
+				c-0.6,0-1.2-0.5-1.2-1.1c0,0,0,0,0,0V64c0-0.6,0.6-1.1,1.2-1.1h20.5c0.6,0,1.2,0.5,1.2,1.1L227.8,69.2z"/>
+			
+				<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="122.975" y1="237.3228" x2="122.975" y2="59.9971" gradientTransform="matrix(1 0 0 -1 0 264)">
+				<stop  offset="0" style="stop-color:#81CFFF"/>
+				<stop  offset="1" style="stop-color:#5ECFFF;stop-opacity:0"/>
+			</linearGradient>
+			<path class="st4" d="M161.1,26.7H84.8c-1.5-0.1-2.8,1.1-2.8,2.6c0,0,0,0,0,0v172.2c0.1,1.5,1.3,2.6,2.8,2.6h76.3
+				c1.5,0.1,2.8-1.1,2.8-2.6V29.3C163.9,27.8,162.6,26.6,161.1,26.7z M154.3,161c0,0.6-0.6,1.1-1.2,1.1H92.8c-0.6,0-1.2-0.5-1.2-1.1
+				c0,0,0,0,0,0v-5.2c0-0.6,0.6-1.1,1.2-1.1c0,0,0,0,0,0h60.3c0.6,0,1.2,0.5,1.2,1.1c0,0,0,0,0,0V161z M154.3,146.3
+				c0,0.6-0.6,1.1-1.2,1.1c0,0,0,0,0,0H92.8c-0.6,0-1.2-0.5-1.2-1.1v-5.2c0-0.6,0.6-1.1,1.2-1.1c0,0,0,0,0,0h60.3
+				c0.6,0,1.2,0.5,1.2,1.1V146.3z M154.3,131.6c0,0.6-0.6,1.1-1.2,1.1H92.8c-0.6,0-1.2-0.5-1.2-1.1c0,0,0,0,0,0v-5.2
+				c0-0.6,0.6-1.1,1.2-1.1h60.3c0.6,0,1.2,0.5,1.2,1.1c0,0,0,0,0,0V131.6z M154.3,117c0,0.6-0.6,1.1-1.2,1.1H92.8
+				c-0.6,0-1.2-0.5-1.2-1.1c0,0,0,0,0,0v-5.2c0-0.6,0.6-1.1,1.2-1.1c0,0,0,0,0,0h60.3c0.6,0,1.2,0.5,1.2,1.1c0,0,0,0,0,0V117z
+				 M154.3,102.3c0,0.6-0.6,1.1-1.2,1.1c0,0,0,0,0,0H92.8c-0.6,0-1.2-0.5-1.2-1.1V97c0-0.6,0.6-1.1,1.2-1.1c0,0,0,0,0,0h60.3
+				c0.6,0,1.2,0.5,1.2,1.1V102.3z M154.3,87.6c0,0.6-0.6,1.1-1.2,1.1H92.8c-0.6,0-1.2-0.5-1.2-1.1c0,0,0,0,0,0v-5.3
+				c0-0.6,0.6-1.1,1.2-1.1h60.3c0.6,0,1.2,0.5,1.2,1.1c0,0,0,0,0,0V87.6z M154.3,72.9c0,0.6-0.6,1.1-1.2,1.1H92.8
+				c-0.6,0-1.2-0.5-1.2-1.1c0,0,0,0,0,0v-5.3c0-0.6,0.6-1.1,1.2-1.1c0,0,0,0,0,0h60.3c0.6,0,1.2,0.5,1.2,1.1c0,0,0,0,0,0V72.9z
+				 M154.3,58.3c0,0.6-0.6,1.1-1.2,1.1c0,0,0,0,0,0H92.8c-0.6,0-1.2-0.5-1.2-1.1V53c0-0.6,0.6-1.1,1.2-1.1c0,0,0,0,0,0h60.3
+				c0.6,0,1.2,0.5,1.2,1.1V58.3z M154.3,43.6c0,0.6-0.6,1.1-1.2,1.1H92.8c-0.6,0-1.2-0.5-1.2-1.1c0,0,0,0,0,0v-5.3
+				c0-0.6,0.6-1.1,1.2-1.1h60.3c0.6,0,1.2,0.5,1.2,1.1c0,0,0,0,0,0V43.6z"/>
+			
+				<linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="273.51" y1="264" x2="273.51" y2="54.46" gradientTransform="matrix(1 0 0 -1 0 264)">
+				<stop  offset="0" style="stop-color:#81CFFF"/>
+				<stop  offset="1" style="stop-color:#5ECFFF;stop-opacity:0"/>
+			</linearGradient>
+			<path class="st5" d="M306.2,0h-65.4c-1.4,0-2.5,1.2-2.4,2.6v204.4c-0.1,1.4,1,2.5,2.4,2.6c0,0,0,0,0,0h65.4
+				c1.4-0.1,2.5-1.2,2.4-2.6V2.6C308.7,1.2,307.6,0.1,306.2,0z M300.4,119.6c0,0.6-0.4,1.1-1,1.1h-51.7c-0.6,0-1-0.5-1-1.1v-5.2
+				c0-0.6,0.4-1.1,1-1.1h51.7c0.6,0,1,0.5,1,1.1L300.4,119.6z M300.4,90.3c0,0.6-0.4,1.1-1,1.1h-51.7c-0.6,0-1-0.5-1-1.1V85
+				c0-0.6,0.4-1.1,1-1.1h51.7c0.6,0,1,0.5,1,1.1L300.4,90.3z M300.4,60.9c0,0.6-0.4,1.1-1,1.1h-51.7c-0.6,0-1-0.5-1-1.1v-5.2
+				c0-0.6,0.4-1.1,1-1.1h51.7c0.6,0,1,0.5,1,1.1L300.4,60.9z M300.4,31.5c0,0.6-0.4,1.1-1,1.1h-51.7c-0.6,0-1-0.5-1-1.1v-5.2
+				c0-0.6,0.4-1.1,1-1.1h51.7c0.6,0,1,0.5,1,1.1L300.4,31.5z M300.4,16.9c0,0.6-0.4,1.1-1,1.1h-51.7c-0.6,0-1-0.5-1-1.1v-5.2
+				c0-0.6,0.4-1.1,1-1.1h51.7c0.6,0,1,0.5,1,1.1L300.4,16.9z"/>
+		</g>
+		<g class="st6">
+			<path class="st7" d="M244.2,130.7c3.3,1.9,5.7,13.6,1,20.7c-5.3,6.8-7,9-6.1,14c-4.3-7.3-0.6-7.4-5.8-14.2
+				c-4.6-6.2-2.5-17.4,0.7-20.5C237.4,131.3,240.8,131.3,244.2,130.7L244.2,130.7z"/>
+			<path class="st8" d="M280.4,211.9c-0.1,0.6-0.1,1.2-0.1,1.7c0,0.7,0.1,1.3,0.2,2c-2.1-0.8-4.3-1.2-6.5-1.2
+				c-2.6,0-5.2,0.6-7.5,1.7c-0.8-4.2-4.8-7-9-6.2c-2.8,0.5-5,2.5-5.9,5.2c-3.4-2.1-7.7-2-11.1,0.1c-0.4-5.7-4.1-0.8-9.8-0.8
+				c-6,0-11.8-4.4-11.8,1.7c0,1.1,0.2,2.2,0.4,3.2c-1.1,0.1-2.1,0.5-3,1c-0.9-7-6.8-12.4-13.9-12.7c22.6-10.3,22.4-44.6,24.8-74.6
+				c0.1-1.7,1.2-4.1,1.8-4.4l0,0c1.5,1.1,3.2,1.8,5.1,2.1c-3.2,3.1-5.4,14.3-0.7,20.5c5.3,6.8,1.6,6.9,5.8,14.2
+				c-0.9-5,0.8-7.2,6.1-14c4.8-7.2,2.3-18.8-1-20.7c1.8-0.3,3.6-1,5.1-2.1l0,0c0.6,0.3,1.7,2.7,1.8,4.4
+				C253.6,164.6,250.4,198.5,280.4,211.9z"/>
+			<path class="st9" d="M303.3,203.2c-5.4,0-9.8,4.4-9.8,9.8c0,0.3,0,0.6,0,0.9c-1.5-1.7-3.7-2.6-6-2.5c-0.7,0-1.4,0.1-2.1,0.3
+				c0.7-1.3,1.1-2.8,1.1-4.3c-0.1-4.6-3.9-8.3-8.5-8.2c-4,0.1-7.4,3-8.1,6.9c-0.1,0.4-0.1,0.9-0.1,1.3c0,0.5,0,1,0.1,1.6
+				c-3.5-1.4-7.4-1.3-10.8,0.4c-0.7-3.2-3.9-5.3-7.2-4.6c-2,0.4-3.6,1.9-4.3,3.8c-1.3-0.8-2.7-1.2-4.2-1.2c-1.5,0-3.1,0.4-4.4,1.3
+				c-0.2-4.6-4.1-8.2-8.7-8s-8.2,4.1-8,8.7l0,0c0,0.8,0.1,1.7,0.3,2.5c-0.8,0.1-1.6,0.4-2.3,0.8c-0.7-5.4-5.2-9.6-10.7-9.8h-0.4
+				c-3.4,0-6.7,1.6-8.8,4.3c-3-6.2-10.4-8.9-16.7-5.9c-2.9,1.4-5.2,3.9-6.3,7c4.1,3,6.6,7.8,6.6,12.9c0,2.3-0.5,4.6-1.5,6.6
+				c2-2.2,4.8-3.4,7.8-3.4c0.9,0,1.8,0.1,2.7,0.3c-2.9-5-1.2-11.5,3.8-14.4c1.2-0.7,2.6-1.2,3.9-1.3c0.5-0.1,0.9-0.1,1.4-0.1
+				c5.8,0,10.6,4.7,10.6,10.6l0,0c0,0.6-0.1,1.3-0.2,1.9c4.4-1.7,9.3-1.6,13.6,0.4c0.9-4.1,4.9-6.7,9-5.8c2.6,0.6,4.7,2.4,5.5,4.9
+				c1.6-0.9,3.5-1.4,5.3-1.4c1.9,0,3.8,0.5,5.4,1.5l0.1,0.1c0.3-4.5,3.6-8.4,8-9.4c0.8-0.2,1.7-0.3,2.5-0.3
+				c5.8,0,10.6,4.7,10.6,10.6c0,1-0.2,2-0.4,3c1.1,0.1,2.1,0.5,3,1c1-7,7-12.1,14-12.1c1.5,0,3,0.2,4.4,0.7c2.6,0.8,5,2.5,6.7,4.6
+				c2.4-4.8,7-8.2,12.4-8.8C311.4,205.9,307.6,203.2,303.3,203.2z"/>
+			<path class="st10" d="M314.4,209.9c-0.6,0-1.2,0-1.8,0.1c-5.4,0.6-10.1,3.9-12.5,8.7c-1.7-2.2-4-3.8-6.7-4.6
+				c-1.4-0.5-2.9-0.7-4.4-0.7c-7,0-13,5.2-14,12.1c-0.9-0.5-1.9-0.9-3-1c0.3-1,0.4-2,0.4-3c0-5.8-4.7-10.5-10.5-10.5
+				c-0.8,0-1.7,0.1-2.5,0.3c-4.4,1.1-7.7,4.9-8,9.4l-0.1-0.1c-1.6-1-3.5-1.5-5.4-1.5c-1.9,0-3.7,0.5-5.3,1.4c-1.4-3.9-5.7-6-9.6-4.6
+				c-2.5,0.9-4.3,3-4.9,5.5c-4.3-2-9.2-2.1-13.6-0.4c0.1-0.6,0.2-1.3,0.2-1.9c0-5.8-4.7-10.6-10.6-10.6l0,0c-0.5,0-0.9,0-1.4,0.1
+				c-5.8,0.8-9.9,6.1-9.1,11.8c0.2,1.4,0.6,2.7,1.3,3.9c-0.9-0.2-1.8-0.3-2.7-0.3c-2.9,0-5.8,1.2-7.8,3.4c1-2.1,1.5-4.3,1.5-6.6
+				c0-5.1-2.4-9.9-6.6-12.9l0,0c-7.1-5.2-17-3.6-22.2,3.5c-5.2,7.1-3.6,17,3.5,22.2c6.8,5,16.4,3.7,21.7-2.8
+				c-2.1,5.5,0.7,11.6,6.1,13.6c5.5,2.1,11.6-0.7,13.6-6.1c0.5-1.2,0.7-2.5,0.7-3.7c0-1.9,0.4-0.1,0.4,2.7c0,9.7,7.8,17.6,17.5,17.6
+				c9.7,0,17.6-7.8,17.6-17.5c0-2.4-0.5-4.8-1.4-7l0.5-0.1c0.5,5.8,5.7,10.1,11.5,9.5c5-0.5,9-4.4,9.5-9.4c1.7,1,3.6,1.6,5.5,1.6
+				c0.6,0,1.2,0,1.7-0.1v0.1c0,4.2,3.4,7.6,7.6,7.5c2.6,0,5-1.4,6.4-3.6c4.7,6.3,13.5,7.5,19.8,2.9c1.5-1.1,2.8-2.5,3.7-4.2
+				c4.9,7.3,14.8,9.1,22.1,4.2s9.1-14.8,4.2-22.1C324.5,212.5,319.6,209.9,314.4,209.9L314.4,209.9z"/>
+		</g>
+		<path class="st11" d="M239.1,70c6.4,0,11.6,5.2,11.6,11.6c0,6.4-5.2,11.6-11.6,11.6c-6.4,0-11.6-5.2-11.6-11.6c0,0,0,0,0,0
+			C227.5,75.2,232.7,70,239.1,70z"/>
+		<path class="st8" d="M239.1,137.2c8.3,0,13.5-1.7,16.6-7.9c0,3.2-1.5,6.2-4.1,8.1c-1.9,1.3-4,2.2-6.2,2.6c-4.1,0.8-8.4,0.8-12.5,0
+			c-2.2-0.4-4.3-1.3-6.2-2.6c-2.6-1.9-4.2-4.9-4.2-8.1C225.6,135.5,230.7,137.2,239.1,137.2z"/>
+		<path class="st8" d="M288.4,151.7c0,0.5-0.3,0.8-0.8,0.8c-0.3,0-0.5-0.1-0.7-0.3c-7.6-10.3-25.5-25-30.4-24.7
+			c2.4-6.1,3.4-15.9,3.6-31.2C271.5,100.3,288.3,122.4,288.4,151.7z"/>
+		<path class="st8" d="M218.1,96.3c0.3,15.2,1.2,25,3.6,31.1l-0.2,0.1c-4.9-0.3-22.8,14.5-30.4,24.7c-0.3,0.4-0.8,0.5-1.1,0.2
+			c-0.2-0.2-0.4-0.4-0.3-0.7C189.7,122.3,206.6,100.2,218.1,96.3L218.1,96.3z"/>
+		<path class="st8" d="M250.7,81.6c0-6.4-5.2-11.6-11.6-11.6c-6.4,0-11.6,5.2-11.6,11.6s5.2,11.6,11.6,11.6l0,0
+			C245.5,93.2,250.7,88,250.7,81.6z M252.9,81.6c0,7.6-6.2,13.8-13.8,13.8c-7.6,0-13.8-6.2-13.8-13.8c0-7.6,6.2-13.8,13.8-13.8
+			c0,0,0,0,0,0C246.7,67.8,252.9,74,252.9,81.6z"/>
+		<path class="st8" d="M239.1,48.7c5.7,0,10.7-2,13.8-4.9c0.5,1.3,1,2.6,1.4,4c-3.3,3.3-8.9,5.4-15.3,5.4s-11.9-2.1-15.3-5.4
+			c0.5-1.3,1-2.7,1.4-4C228.4,46.8,233.4,48.7,239.1,48.7z"/>
+		<path class="st9" d="M252.9,43.8c-3.1,3-8.1,4.9-13.8,4.9s-10.7-2-13.8-4.9c2-5.1,4.5-10,7.6-14.5c0.5-0.7,0.9-1.3,1.4-1.9
+			c2-2.7,5.8-3.2,8.5-1.2c0.4,0.3,0.8,0.7,1.2,1.2c0.5,0.6,0.9,1.2,1.4,1.9C248.4,33.8,250.9,38.7,252.9,43.8z"/>
+		<path class="st10" d="M260.1,96.4c-0.3,15.3-1.2,25-3.6,31.2c-0.2,0.6-0.5,1.2-0.8,1.7c-3.1,6.2-8.3,7.9-16.6,7.9
+			s-13.5-1.7-16.6-7.9c-0.3-0.6-0.5-1.1-0.8-1.8c-2.4-6.2-3.4-15.9-3.6-31.1c-0.1-3.4-0.1-7.1-0.1-11.1c-0.1-12.7,1.8-25.4,5.8-37.5
+			c3.3,3.3,8.9,5.4,15.3,5.4s11.9-2.1,15.3-5.4c4,12.1,6,24.8,5.8,37.5C260.2,89.2,260.1,92.9,260.1,96.4z M252.9,81.6
+			c0-7.6-6.2-13.8-13.8-13.8c-7.6,0-13.8,6.2-13.8,13.8c0,7.6,6.2,13.8,13.8,13.8c0,0,0,0,0,0C246.7,95.4,252.9,89.2,252.9,81.6
+			L252.9,81.6z"/>
+		<path class="st12" d="M139.2,246.1l18.4,0.4v0.7l-19.4-0.4v-0.7V246C138.4,246.1,138.6,246.1,139.2,246.1z"/>
+		
+			<linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="112.2357" y1="190.775" x2="112.2357" y2="101.005" gradientTransform="matrix(1 0 0 -1 0 264)">
+			<stop  offset="0" style="stop-color:#81CFFF"/>
+			<stop  offset="1" style="stop-color:#5ECFFF;stop-opacity:0"/>
+		</linearGradient>
+		<line class="st13" x1="112.2" y1="73.2" x2="112.2" y2="163"/>
+		
+			<linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="348.955" y1="195.605" x2="348.955" y2="105.835" gradientTransform="matrix(1 0 0 -1 0 264)">
+			<stop  offset="0" style="stop-color:#81CFFF"/>
+			<stop  offset="1" style="stop-color:#5ECFFF;stop-opacity:0"/>
+		</linearGradient>
+		<line class="st14" x1="349" y1="68.4" x2="349" y2="158.2"/>
+		
+			<linearGradient id="SVGID_8_" gradientUnits="userSpaceOnUse" x1="40.9" y1="120.12" x2="40.9" y2="64.49" gradientTransform="matrix(1 0 0 -1 0 264)">
+			<stop  offset="0" style="stop-color:#81CFFF"/>
+			<stop  offset="1" style="stop-color:#5ECFFF;stop-opacity:0"/>
+		</linearGradient>
+		<line class="st15" x1="40.9" y1="143.9" x2="40.9" y2="199.5"/>
+		
+			<linearGradient id="SVGID_9_" gradientUnits="userSpaceOnUse" x1="64.97" y1="168.64" x2="64.97" y2="140.83" gradientTransform="matrix(1 0 0 -1 0 264)">
+			<stop  offset="0" style="stop-color:#81CFFF"/>
+			<stop  offset="1" style="stop-color:#5ECFFF;stop-opacity:0"/>
+		</linearGradient>
+		<line class="st16" x1="65" y1="95.4" x2="65" y2="123.2"/>
+		
+			<linearGradient id="SVGID_10_" gradientUnits="userSpaceOnUse" x1="397.23" y1="159.8" x2="397.23" y2="131.98" gradientTransform="matrix(1 0 0 -1 0 264)">
+			<stop  offset="0" style="stop-color:#81CFFF"/>
+			<stop  offset="1" style="stop-color:#5ECFFF;stop-opacity:0"/>
+		</linearGradient>
+		<line class="st17" x1="397.2" y1="104.2" x2="397.2" y2="132"/>
+		
+			<linearGradient id="SVGID_11_" gradientUnits="userSpaceOnUse" x1="424.75" y1="130.51" x2="424.75" y2="74.87" gradientTransform="matrix(1 0 0 -1 0 264)">
+			<stop  offset="0" style="stop-color:#81CFFF"/>
+			<stop  offset="1" style="stop-color:#5ECFFF;stop-opacity:0"/>
+		</linearGradient>
+		<line class="st18" x1="424.8" y1="133.5" x2="424.8" y2="189.1"/>
+	</g>
+</g>
+</svg>

二进制
public/img/wx.png


+ 3 - 0
public/index.html

@@ -6,6 +6,9 @@
 		<meta name="viewport" content="width=device-width,initial-scale=1.0">
 		<link rel="icon" href="<%= BASE_URL %>favicon.ico">
 		<title><%= VUE_APP_TITLE %></title>
+		<script type="text/javascript">
+			document.write("<script src='config.js?"+new Date().getTime()+"'><\/script>");
+		</script>
 	</head>
 	<body>
 		<noscript>

+ 33 - 0
src/api/model/factory.js

@@ -0,0 +1,33 @@
+import config from "@/config";
+import http from "@/utils/request";
+
+export default {
+    list: {
+        url: `${config.API_URL}/factory/list`,
+        name: "-",
+        get: async function (data = {}) {
+            return await http.get(this.url, data);
+        }
+    },
+    save: {
+        url: `${config.API_URL}/factory/save`,
+        name: "-",
+        post: async function (data = {}) {
+            return await http.post(this.url, data);
+        },
+    },
+    del: {
+        url: `${config.API_URL}/factory/del`,
+        name: "-",
+        post: async function (data = {}) {
+            return await http.post(this.url, data);
+        },
+    },
+    batch: {
+        url: `${config.API_URL}/factory/batch`,
+        name: "-",
+        post: async function (data = {}) {
+            return await http.post(this.url, data);
+        },
+    },
+};

+ 19 - 0
src/api/model/order.js

@@ -0,0 +1,19 @@
+import config from "@/config";
+import http from "@/utils/request";
+
+export default {
+    list: {
+        url: `${config.API_URL}/order/list`,
+        name: "-",
+        get: async function (data = {}) {
+            return await http.get(this.url, data);
+        }
+    },
+    detail: {
+        url: `${config.API_URL}/order/save`,
+        name: "-",
+        post: async function (data = {}) {
+            return await http.post(this.url, data);
+        },
+    },
+};

+ 12 - 0
src/api/model/storeDetail.js

@@ -0,0 +1,12 @@
+import config from "@/config";
+import http from "@/utils/request";
+
+export default {
+    data: {
+        url: `${config.API_URL}/store/detail/data`,
+        name: "-",
+        get: async function (data = {}) {
+            return await http.get(this.url, data);
+        }
+    },
+};

+ 33 - 0
src/api/model/washGoods.js

@@ -0,0 +1,33 @@
+import config from "@/config";
+import http from "@/utils/request";
+
+export default {
+    list: {
+        url: `${config.API_URL}/wash-goods/list`,
+        name: "-",
+        get: async function (data = {}) {
+            return await http.get(this.url, data);
+        }
+    },
+    save: {
+        url: `${config.API_URL}/wash-goods/save`,
+        name: "-",
+        post: async function (data = {}) {
+            return await http.post(this.url, data);
+        },
+    },
+    del: {
+        url: `${config.API_URL}/wash-goods/del`,
+        name: "-",
+        post: async function (data = {}) {
+            return await http.post(this.url, data);
+        },
+    },
+    batch: {
+        url: `${config.API_URL}/wash-goods/batch`,
+        name: "-",
+        post: async function (data = {}) {
+            return await http.post(this.url, data);
+        },
+    },
+};

+ 33 - 0
src/api/model/washType.js

@@ -0,0 +1,33 @@
+import config from "@/config";
+import http from "@/utils/request";
+
+export default {
+    list: {
+        url: `${config.API_URL}/wash-type/list`,
+        name: "-",
+        get: async function (data = {}) {
+            return await http.get(this.url, data);
+        }
+    },
+    save: {
+        url: `${config.API_URL}/wash-type/save`,
+        name: "-",
+        post: async function (data = {}) {
+            return await http.post(this.url, data);
+        },
+    },
+    del: {
+        url: `${config.API_URL}/wash-type/del`,
+        name: "-",
+        post: async function (data = {}) {
+            return await http.post(this.url, data);
+        },
+    },
+    batch: {
+        url: `${config.API_URL}/wash-type/batch`,
+        name: "-",
+        post: async function (data = {}) {
+            return await http.post(this.url, data);
+        },
+    },
+};

二进制
src/assets/image/blue_bg.png


二进制
src/assets/image/icon-duanxintixing.png


二进制
src/assets/image/store1.png


二进制
src/assets/image/store2.png


二进制
src/assets/image/store3.png


二进制
src/assets/image/store4.png


二进制
src/assets/image/store5.png


二进制
src/assets/image/tel.png


二进制
src/assets/image/wave-1-icon.png


二进制
src/assets/image/wave-1.png


二进制
src/assets/image/wave-2-icon.png


二进制
src/assets/image/wave-2.png


二进制
src/assets/image/wave-3-icon.png


二进制
src/assets/image/wave-3.png


二进制
src/assets/image/wave-4-icon.png


二进制
src/assets/image/wave-4.png


二进制
src/assets/image/wave-5-icon.png


二进制
src/assets/image/wave-5.png


+ 6 - 0
src/locales/lang/zh-cn.js

@@ -6,6 +6,12 @@ export default {
 			yestoday:"昨日:"
 		}
 	},
+	manage:{
+		dashboard:{
+			orderTitle:"累计经营数据",
+			yestoday:"昨日:"
+		}
+	},
 	merchant:{},
 	login: {
 		slogan: "高性能 / 精致 / 优雅",

+ 2 - 0
src/style/media.scss

@@ -47,4 +47,6 @@
 	.common-main .el-form {width: 100% !important;}
 	.common-header-logo label {display: none;}
 	.common-header-title {display: none;}
+
+	
 }

+ 282 - 0
src/views/manage/components/store.vue

@@ -0,0 +1,282 @@
+<!--
+ * @Descripttion: 用户选择器
+ * @version: 1.0
+ * @Author: Zory
+ * @Date: 2024年1月10日21:46:29
+-->
+<template>
+    <el-dialog :title="titleMap[mode]" v-model="visible" :width="800" destroy-on-close @closed="$emit('closed')">
+        <div class="main">
+            <div class="main-left">
+                <div class="main-top">
+                    <el-form class="lv-form-inline" ref="searchForm" :model="searchKey" label-position="right">
+                        <el-row :gutter="10">
+                            <el-col :span="18" :xs="12">
+                                <el-form-item label=" " prop="truename">
+                                    <el-input v-model="searchKey.truename" placeholder="请输入门店名称" clearable
+                                        :style="{width: '100%'}"></el-input>
+                                </el-form-item>
+                            </el-col>
+                            <el-col :span="6" :xs="12">
+                                <el-form-item>
+                                    <div class="search-btn">
+                                        <el-button type="primary" @click="searchForm">搜索</el-button>
+                                    </div>
+                                </el-form-item>
+                            </el-col>
+                        </el-row>
+                    </el-form>
+                </div>
+                <div class="main-body-wrap" v-if="!multiple">
+                    <scTable ref="table" :apiObj="list.apiObj" :hideSetting="true" paginationLayout="total, prev, pager, next" :params="searchKey" @current-change="handleCurrentChange" highlight-current-row :row-key="getRowKeys" @sortChange="sortChange">
+                        <el-table-column width="50" fixed="left">
+                            <div class="checkbox"></div>
+                        </el-table-column>
+                        <el-table-column label="门店名称" width="150" fixed="left" prop="truename"></el-table-column>
+                        <el-table-column label="门店ID" width="150" prop="store_id"></el-table-column>
+                        <el-table-column label="所属代理" width="150" prop="agent_id"></el-table-column>
+                        <el-table-column label="登录账号" prop="truename" width="150">
+                            <template #default="scope">
+                                <span v-if="scope.row.user.username">{{ scope.row.user.username }}</span>
+                                <span class="status-danger" v-else>未设置</span>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="手机号码" prop="mobile" width="150">
+                            <template #default="scope">
+                                <span v-if="scope.row.mobile">{{ scope.row.mobile }}</span>
+                                <span class="status-danger" v-else>-</span>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="门店编码" prop="login_at" width="180">
+                            <template #default="scope">
+                                {{scope.row.store_code?scope.row.store_code:'-'}}
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="店长名称" prop="login_at" width="180">
+                            <template #default="scope">
+                                {{scope.row.store_mch?scope.row.store_mch:'-'}}
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="门店状态" prop="login_at" width="100" align="center">
+                            <template #default="scope">
+                                <div class="status-success" v-if="scope.row.store_status==1"><sc-status-indicator type="success"></sc-status-indicator> 开启</div>
+                                <div class="status-danger" v-else><sc-status-indicator type="danger"></sc-status-indicator> 关闭</div>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="独立财务" prop="login_at" width="100" align="center">
+                            <template #default="scope">
+                                <div class="status-success" v-if="scope.row.store_order==2"><sc-status-indicator type="success"></sc-status-indicator> 开启</div>
+                                <div class="status-danger" v-else><sc-status-indicator type="danger"></sc-status-indicator> 关闭</div>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="到期时间" prop="vip_at" width="220"></el-table-column>
+                    </scTable>
+                </div>
+                <div class="main-body-wrap" v-else>
+                    <scTable ref="table" :apiObj="list.apiObj" :hideSetting="true" paginationLayout="total, prev, pager, next" :params="searchKey" @selectionChange="selectionChange" row-key="id" @sortChange="sortChange">
+                        <el-table-column type="selection" width="50" fixed="left"></el-table-column>
+                        
+                        <el-table-column label="门店名称" width="150" fixed="left" prop="truename"></el-table-column>
+                        <el-table-column label="门店ID" width="150" prop="store_id"></el-table-column>
+                        <el-table-column label="所属代理" width="150" prop="agent_id"></el-table-column>
+                        <el-table-column label="登录账号" prop="truename" width="150">
+                            <template #default="scope">
+                                <span v-if="scope.row.user.username">{{ scope.row.user.username }}</span>
+                                <span class="status-danger" v-else>未设置</span>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="手机号码" prop="mobile" width="150">
+                            <template #default="scope">
+                                <span v-if="scope.row.mobile">{{ scope.row.mobile }}</span>
+                                <span class="status-danger" v-else>-</span>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="门店编码" prop="login_at" width="180">
+                            <template #default="scope">
+                                {{scope.row.store_code?scope.row.store_code:'-'}}
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="店长名称" prop="login_at" width="180">
+                            <template #default="scope">
+                                {{scope.row.store_mch?scope.row.store_mch:'-'}}
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="门店状态" prop="login_at" width="100" align="center">
+                            <template #default="scope">
+                                <div class="status-success" v-if="scope.row.store_status==1"><sc-status-indicator type="success"></sc-status-indicator> 开启</div>
+                                <div class="status-danger" v-else><sc-status-indicator type="danger"></sc-status-indicator> 关闭</div>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="独立财务" prop="login_at" width="100" align="center">
+                            <template #default="scope">
+                                <div class="status-success" v-if="scope.row.store_order==2"><sc-status-indicator type="success"></sc-status-indicator> 开启</div>
+                                <div class="status-danger" v-else><sc-status-indicator type="danger"></sc-status-indicator> 关闭</div>
+                            </template>
+                        </el-table-column>
+                        <el-table-column label="到期时间" prop="vip_at" width="220"></el-table-column>
+                    </scTable>
+                </div>
+            </div>
+        </div>
+		<template #footer>
+			<el-button @click="visible=false" >取 消</el-button>
+			<el-button v-if="mode!='show'" type="primary" :loading="isSaveing" @click="submit()">确 定</el-button>
+		</template>
+    </el-dialog>
+</template>
+
+<script>
+export default{
+    emits: ['success', 'closed'],
+    props: {
+        multiple: { type: Boolean, default: false },
+    },
+    data(){
+        return {
+            loading: false,
+            mode:"add",
+            titleMap:{
+                add:"选择门店",
+                edit:"选择门店"
+            },
+            list: {
+                apiObj: this.$API.store.list
+            },
+            visible: false,
+            isSaveing: false,
+            formData:{},
+            searchKey:{},
+            selectData:[]
+        }
+    },
+    methods:{
+        sortChange(event){
+            if (event.order) {
+                var data = {
+                    "field":event.prop,
+                    "order":event.order
+                }
+                this.$refs.table.upData(data)
+            } else {
+                this.$refs.table.reload(this.searchKey)
+            }
+            return ;
+        },
+        submit(){
+            if (this.selectData.length == 0)
+            {
+                return this.$message.error("请选择数据");
+            }
+            this.isSaveing = false;
+            this.visible = false;
+            if (this.multiple){
+                this.$emit('success', this.selectData);
+            } else {
+                this.$emit('success', this.selectData[0]);
+            }
+        },
+        getRowKeys(data){
+            return data.id;
+        },
+        clearAll(){
+            this.selectData = [];
+        },
+        removeUser(index,name){
+            this.selectData.splice(index, 1);
+            console.log(name)
+        },
+        handleCurrentChange(data){
+            this.selectData = [data];
+        },
+        selectionChange(data){
+            this.selectData = data;
+        },
+        searchForm(){
+            this.$refs.table.upData(this.searchKey)
+        },
+        fristName(name){
+            return name.substring(0,1);
+        },
+        open(mode = 'add'){
+            this.mode = mode;
+            this.visible = true;
+            return this
+        },
+        //表单注入数据
+        setData(data){
+            this.formData = data;
+        },
+    }
+}
+</script>
+
+<style lang="scss" scoped>
+.main{
+    display: flex;
+    border: 1px solid #dfe1e6;
+}
+.main-left{
+    overflow: hidden;
+    flex: 1;
+    .main-body-wrap{
+        position: relative;
+        height: 380px;
+    }
+}
+.main-top{
+    position: relative;
+    padding: 10px 0;
+    border-bottom: 1px solid #dfe1e6;
+    &.is-right{
+        height:53px;
+        display:flex;
+        align-items:center;
+        padding:0 10px;
+        justify-content:space-between;
+    }
+}
+.main-body.is-right{
+    padding: 8px 16px;
+    overflow-y: auto;
+    position: relative;
+    height: calc(100% - 53px);
+    max-height: 380px;
+}
+.mx-1{
+    margin: 0 0.5rem 0.5rem 0;
+}
+.main-right{
+    flex: 0.4;
+}
+.el-form-item--default{
+    margin-bottom: 0;
+}
+.checkbox{
+    border:1px solid #dfe1e6;
+    width: 14px;
+    height: 14px;
+    border-radius: 2px;
+    background-color: #fff;
+    cursor: pointer;
+    position:relative
+}
+.current-row .checkbox{
+    background-color: var(--el-color-primary);
+    border-color: var(--el-color-primary);
+}
+.current-row .checkbox:after{
+    transform: rotate(45deg) scaleY(1);
+    box-sizing: content-box;
+    content: "";
+    border: 1px solid #fff;
+    border-left: 0;
+    border-top: 0;
+    height: 7px;
+    left: 4px;
+    position: absolute;
+    top: 1px;
+    width: 3px;
+    transition: transform .15s ease-in 50ms;
+    transform-origin: center;
+}
+</style>

+ 493 - 2
src/views/manage/dashboard/index.vue

@@ -1,3 +1,494 @@
 <template>
-    <div></div>
-</template>
+    <div v-if="pageLoading">
+		<el-main>
+			<el-card shadow="never">
+				<el-skeleton :rows="5"></el-skeleton>
+			</el-card>
+			<el-card shadow="never" style="margin-top: 15px;">
+				<el-skeleton></el-skeleton>
+			</el-card>
+		</el-main>
+	</div>
+    <el-main>
+        <div class="card-news mt0">
+            <div class="news-title">{{ $t('manage.dashboard.orderTitle') }}</div>
+            <div class="total-panel">
+                <div class="panel-item">
+                    <div class="item-warp">
+                        <div class="left">
+                            <div class="title">代理数量</div>
+                            <div class="number">{{ dataInfo.customer ? dataInfo.customer:'0' }}</div>
+                            <div class="desc">{{ $t('store.dashboard.yestoday') }} 0</div>
+                        </div>
+                        <div class="right"><img src="@/assets/image/wave-4-icon.png" /></div>
+                    </div>
+                    <div class="item-wave"><img src="@/assets/image/wave-4.png" /></div>
+                </div>
+                <div class="panel-item">
+                    <div class="item-warp">
+                        <div class="left">
+                            <div class="title">门店数量</div>
+                            <div class="number">{{ dataInfo.customer ? dataInfo.customer:'0' }}</div>
+                            <div class="desc">{{ $t('store.dashboard.yestoday') }} 0</div>
+                        </div>
+                        <div class="right"><img src="@/assets/image/wave-4-icon.png" /></div>
+                    </div>
+                    <div class="item-wave"><img src="@/assets/image/wave-4.png" /></div>
+                </div>
+                <div class="panel-item">
+                    <div class="item-warp">
+                        <div class="left">
+                            <div class="title">洗衣地址数量</div>
+                            <div class="number">{{ dataInfo.customer ? dataInfo.customer:'0' }}</div>
+                            <div class="desc">{{ $t('store.dashboard.yestoday') }} 0</div>
+                        </div>
+                        <div class="right"><img src="@/assets/image/wave-4-icon.png" /></div>
+                    </div>
+                    <div class="item-wave"><img src="@/assets/image/wave-4.png" /></div>
+                </div>
+                <div class="panel-item">
+                    <div class="item-warp">
+                        <div class="left">
+                            <div class="title">订单数</div>
+                            <div class="number">{{ dataInfo.customer ? dataInfo.customer:'0' }}</div>
+                            <div class="desc">{{ $t('store.dashboard.yestoday') }} 0</div>
+                        </div>
+                        <div class="right"><img src="@/assets/image/wave-1-icon.png" /></div>
+                    </div>
+                    <div class="item-wave"><img src="@/assets/image/wave-1.png" /></div>
+                </div>
+                <div class="panel-item">
+                    <div class="item-warp">
+                        <div class="left">
+                            <div class="title">新增客户</div>
+                            <div class="number">{{ dataInfo.customer ? dataInfo.customer:'0' }}</div>
+                            <div class="desc">{{ $t('store.dashboard.yestoday') }} 0</div>
+                        </div>
+                        <div class="right"><img src="@/assets/image/wave-2-icon.png" /></div>
+                    </div>
+                    <div class="item-wave"><img src="@/assets/image/wave-2.png" /></div>
+                </div>
+                <div class="panel-item">
+                    <div class="item-warp">
+                        <div class="left">
+                            <div class="title">收衣数</div>
+                            <div class="number">{{ dataInfo.customer ? dataInfo.customer:'0' }}</div>
+                            <div class="desc">{{ $t('store.dashboard.yestoday') }} 0</div>
+                        </div>
+                        <div class="right"><img src="@/assets/image/wave-3-icon.png" /></div>
+                    </div>
+                    <div class="item-wave"><img src="@/assets/image/wave-3.png" /></div>
+                </div>
+                <div class="panel-item">
+                    <div class="item-warp">
+                        <div class="left">
+                            <div class="title">取衣数</div>
+                            <div class="number">{{ dataInfo.customer ? dataInfo.customer:'0' }}</div>
+                            <div class="desc">{{ $t('store.dashboard.yestoday') }} 0</div>
+                        </div>
+                        <div class="right"><img src="@/assets/image/wave-4-icon.png" /></div>
+                    </div>
+                    <div class="item-wave"><img src="@/assets/image/wave-4.png" /></div>
+                </div>
+            </div>
+        </div>
+        <el-row :gutter="20">
+            <el-col :span="this.$store.state.global.ismobile?24:24" :xs="24">
+                <div class="card-news mt10">
+                    <div class="news-title">门店监控</div>
+                    <div class="total-panel-sub">
+                        <el-row :gutter="20">
+                            <el-col :span="this.$store.state.global.ismobile?24:12" :xs="24">
+                                <div class="sub-card mt10">
+                                    <div class="title">今日数据</div>
+                                    <div class="sub-content">
+                                        <div class="sub-box">
+                                            <div class="row1"><img src="@/assets/image/store1.png" /><span>今日收衣件数</span></div>
+                                            <div class="row2">0</div>
+                                            <div class="row3">{{ $t('store.dashboard.yestoday') }} 0</div>
+                                        </div>
+                                        <div class="sub-box">
+                                            <div class="row1"><img src="@/assets/image/store2.png" /><span>今日已支付(元)</span></div>
+                                            <div class="row2">0</div>
+                                            <div class="row3">{{ $t('store.dashboard.yestoday') }} 0</div>
+                                        </div>
+                                        <div class="sub-box">
+                                            <div class="row1"><img src="@/assets/image/store3.png" /><span>今日订单数</span></div>
+                                            <div class="row2">0</div>
+                                            <div class="row3">{{ $t('store.dashboard.yestoday') }} 0</div>
+                                        </div>
+                                    </div>
+                                </div>
+                            </el-col>
+                            <el-col :span="this.$store.state.global.ismobile?24:12" :xs="24">
+                                <div class="sub-card mt10">
+                                    <div class="title">过往数据</div>
+                                    <div class="sub-content">
+                                        <div class="sub-box" style="width: calc(50% - 12px);">
+                                            <div class="row1"><img src="@/assets/image/store4.png" /><span>本月订单数</span></div>
+                                            <div class="row2">0</div>
+                                            <div class="row3">{{ $t('store.dashboard.yestoday') }} 0</div>
+                                        </div>
+                                        <div class="sub-box" style="width: calc(50% - 12px);">
+                                            <div class="row1"><img src="@/assets/image/store5.png" /><span>累计订单数</span></div>
+                                            <div class="row2">0</div>
+                                            <div class="row3">{{ $t('store.dashboard.yestoday') }} 0</div>
+                                        </div>
+                                    </div>
+                                </div>
+                            </el-col>
+                        </el-row>
+                    </div>
+                </div>
+                <div class="card-news mt10">
+                    <div class="news-title">洗衣地址监控</div>
+                    <div class="total-panel">
+                        <div class="panel-item bg-gray" :style="{backgroundImage:'url('+blueBg+')'}">
+                            <div class="item-warp img">
+                                <div class="left">
+                                    <div class="title">今日入库</div>
+                                    <div class="number">{{ dataInfo.customer ? dataInfo.customer:'0' }}<span>单</span></div>
+                                    <div class="desc">总件数:0</div>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="panel-item bg-gray">
+                            <div class="item-warp">
+                                <div class="left">
+                                    <div class="title">在库量</div>
+                                    <div class="number">{{ dataInfo.customer ? dataInfo.customer:'0' }}<span>单</span></div>
+                                    <div class="desc">总件数:0</div>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="panel-item bg-gray">
+                            <div class="item-warp">
+                                <div class="left">
+                                    <div class="title">近一个月待入库量</div>
+                                    <div class="number">{{ dataInfo.customer ? dataInfo.customer:'0' }}<span>单</span></div>
+                                    <div class="desc">总件数:0</div>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="panel-item bg-gray">
+                            <div class="item-warp">
+                                <div class="left">
+                                    <div class="title">待预检量</div>
+                                    <div class="number">{{ dataInfo.customer ? dataInfo.customer:'0' }}<span>单</span></div>
+                                    <div class="desc">总件数:0</div>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="panel-item bg-gray">
+                            <div class="item-warp">
+                                <div class="left">
+                                    <div class="title">今日出库</div>
+                                    <div class="number">{{ dataInfo.customer ? dataInfo.customer:'0' }}<span>单</span></div>
+                                    <div class="desc">总件数:0</div>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                    <!--  -->
+                </div>
+                
+                
+            </el-col>
+        </el-row>
+
+    </el-main>
+</template>
+
+<script>
+import blueBg from "@/assets/image/blue_bg.png";
+export default {
+    name: "dashboard",
+    data(){
+        return {
+            pageLoading: false,
+            dashboard: '0',
+            dataInfo:{},
+            blueBg,
+            baseData:{}
+        }
+    },
+    created(){
+        var baseData = this.$TOOL.data.get("AGENT_SERVICE");
+        this.baseData = baseData;
+    }
+}
+</script>
+
+<style>
+.myMods {list-style:none;margin:-10px;}
+.myMods li {display: inline-block;width: 11.5%;height:100px;vertical-align: top;transition:all 0.3s ease;margin:10px;border-radius:5px;color: #333;}
+.myMods li:hover {opacity: 0.8;}
+.myMods li a {width: 100%;height: 100%;padding:10px;display: flex;flex-direction: column;align-items: center;justify-content: center;text-align: center;color: #333;}
+.myMods li i {font-size: 26px;color: #333;}
+.myMods li p {font-size: 12px;color: #333;margin-top: 10px;width: 100%;white-space:nowrap;text-overflow:ellipsis;overflow: hidden;}
+.mt0 {
+    margin-top: 0;
+}
+.service-item {
+    border: 1px solid #EAE9F0;
+    padding: 12px 24px;
+    border-radius: 6px;
+    display: flex;
+    align-items: center;
+    flex: 1;
+}
+.service-item .right-btn {
+    margin-left: auto;
+}
+.service-item img {
+    width: 44px;
+    height: 54px;
+    margin-right: 20px;
+}
+.service-item h3 {
+    font-size: 14px;
+    color: #000000d9;
+    margin-bottom: 8px;
+}
+.service-item p {
+    font-size: 13px;
+    color: #333333d9;
+}
+.service-item .value{
+    font-size: 24px;
+    color: #f64945;
+    font-weight: 700;
+    margin-left: 26px;
+}
+.service-tel {
+    display: flex;
+    align-items: center;
+    margin-top: 20px;
+}
+.service-tel img{
+    width: 32px;
+    height: 32px;
+    margin-right: 12px;
+}
+.service-tel span{
+    font-size: 20px;
+    font-weight: 500;
+    color: #35f;
+}
+.total-panel .panel-item.bg-gray .item-warp .left{
+    padding: 12px 24px;
+}
+.total-panel .panel-item.bg-gray {
+    background-color: #F7F9FC;
+    height: 104px;
+    background-size: cover;
+    background-position: center;
+    background-repeat: no-repeat;
+    color: #fff;
+}
+.total-panel .panel-item.bg-gray .item-warp.img .title {color: #fff;}
+.total-panel .panel-item.bg-gray .item-warp.img .number{color: #fff;}
+.total-panel .panel-item.bg-gray .item-warp.img .desc{color: #fff;}
+.total-panel .panel-item.bg-gray .number{
+    font-size: 24px;
+}
+.total-panel .panel-item.bg-gray .number span{
+    font-size: 14px;
+    margin-left: 10px;
+}
+.total-panel .panel-item.bg-gray .title{
+    margin-bottom: 7px;
+}
+.total-panel-sub .sub-card {
+    border: 1px solid #EAE9F0;
+}
+.total-panel-sub .sub-card .title{
+    font-size: 14px;
+    color: #000000;
+    font-weight: bold;
+    margin: 22px 0 12px 22px;
+}
+.total-panel-sub .sub-card .title.red{
+    display: flex;
+    align-items: center;
+}
+.total-panel-sub .sub-card .title.red::before{
+    content: "";
+    display: block;
+    width: 4px;
+    height: 4px;
+    border-radius: 4px;
+    background-color: #f64945;
+    margin-right: 6px;
+}
+.total-panel-sub .sub-card .sub-content{
+    display: flex;
+    align-items: stretch;
+    justify-content: space-between;
+    padding: 0px 22px 22px 22px;
+}
+.sub-box {
+    width: calc((100% - 24px) / 3);
+    padding: 12px 16px 12px 16px;
+    background: #FFFFFF;
+    box-shadow: 0px 0px 10px 0px rgba(203, 203, 203, 0.25);
+    border-radius: 6px;
+    box-sizing: border-box;
+}
+.sub-box .row1 {
+    display: flex;
+    align-items: center;
+    line-height: 1;
+    margin-bottom: 10px;
+}
+.sub-box .row2 {
+    font-size: 24px;
+    color: #333333;
+    font-weight: bold;
+    margin-bottom: 10px;
+}
+.sub-box .row2.red{
+    color: #f00;
+}
+.sub-box .row2 span {
+    margin-left: 10px;
+    font-size: 14px;
+}
+.sub-box .row3 {
+    font-size: 14px;
+    color: #666666;
+}
+.sub-box .row1 img{
+    width: 15px;
+    height: auto;
+    margin-right: 8px;
+}
+.sub-box .row1 span{
+    font-size: 14px;
+    color: #333333;
+}
+.total-panel {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    margin-top: 16px;
+    gap: 10px;
+}
+.total-panel .panel-item{
+    width: calc((100% - 18px)/6);
+    height: 130px;
+    box-shadow: rgba(0, 0, 0, 0.05) 0px 0px 8px;
+    position: relative;
+    border-radius: 6px;
+    overflow: hidden;
+    background-color: rgba(166, 166, 166, 0.5);
+}
+.total-panel .panel-item .item-warp .left {
+    padding:16px 0px 0px 23px;
+}
+.total-panel .panel-item .item-warp .right {
+    width: 32px;
+    height: 32px;
+    margin: 13px 14px 0px 0px;
+}
+.total-panel .panel-item .item-warp .right img{
+    width:100%;
+    height:100%;
+    display:block;
+}
+.total-panel .panel-item .item-warp{
+    position: relative;
+    z-index: 10;
+    display: flex;
+    justify-content: space-between;
+}
+.total-panel .panel-item .item-wave {
+    position: absolute;
+    left: 0px;
+    right: 0px;
+    bottom: 0px;
+    width: 100%;
+    height: auto;
+    z-index: 9;
+}
+.total-panel .panel-item .item-wave img {
+    width: 100%;
+    height: 100%;
+}
+.total-panel .panel-item .title{
+    font-size: 14px;
+    color: rgb(51, 51, 51);
+    margin-bottom: 18px;
+    font-weight: 500;
+}
+.total-panel .panel-item .number{
+    font-size: 26px;
+    margin-bottom: 7px;
+    font-weight: 700;
+    color: rgb(51, 51, 51);
+}
+.total-panel .panel-item .desc{
+    font-size: 13px;
+    color: rgb(102, 102, 102);
+}
+.total-panel .panel-item .number span{
+    font-size: 16px;
+    font-weight: normal;
+}
+.panel-line{
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    height: 100%;
+}
+.panel-line span{
+    width: 1px;
+    background-color: #f0f0f0;
+    height: 60%;
+    display: block;
+}
+.card-news{
+    background-color: #fff;
+    padding: 20px;
+    border-radius: 5px;
+}
+.news-title{
+    font-size: 16px;
+    color: #000;
+    font-weight: bold;
+    margin-bottom: 10px;
+    display: flex;
+    align-items: center;
+}
+.news-title::before{
+    content: "";
+    width: 4px;
+    height: 16px;
+    display: block;
+    background-color: var(--el-color-primary);;
+    margin-right: 8px;
+}
+.date-title{display:flex; align-items:center;line-height:40px;position: relative;}
+.date-title .dot{
+    width: 5px;
+    height: 5px;
+    background: var(--el-color-primary);
+    border-radius: 100%;
+    margin-right: 10px;
+}
+.date-time{
+    font-size: 12px;
+    color: #666;
+    margin-left: auto;
+    margin-right: 0;
+}
+@media (max-width: 992px){
+    .total-panel {
+        display: block;
+    }
+    .total-panel .panel-item{
+        width: 100%;
+        margin-bottom: 10px;
+    }
+}
+</style>

+ 1 - 1
src/views/manage/general/color/index.vue

@@ -11,7 +11,7 @@
                 <el-empty description="暂无数据" :image-size="100"></el-empty>
             </div>
             <el-row :gutter="15" v-else>
-                <el-col :xl="3" :sm="6" :xs="24" v-for="(item,index) in list" :key="index">
+                <el-col :xl="3" :sm="4" :xs="24" v-for="(item,index) in list" :key="index">
                     <el-card shadow="hover" :body-style="{ padding: '0px' }">
                         <div class="code-item">
                             <div class="img">

+ 6 - 0
src/views/manage/mall/douyin/components/option.vue

@@ -0,0 +1,6 @@
+<template>
+
+</template>
+<script>
+
+</script>

+ 6 - 0
src/views/manage/mall/douyin/components/search.vue

@@ -0,0 +1,6 @@
+<template>
+
+</template>
+<script>
+
+</script>

+ 6 - 0
src/views/manage/mall/douyin/components/table.vue

@@ -0,0 +1,6 @@
+<template>
+
+</template>
+<script>
+
+</script>

+ 64 - 0
src/views/manage/mall/douyin/index.vue

@@ -0,0 +1,64 @@
+<template>
+    <el-container class="flex-column">
+        <div class="channel_menu">
+            <el-menu mode="horizontal" class="channel-tabs" :default-active="activeName" @select="handleClick">
+                <el-menu-item :index="item.key" v-for="(item,indx) in menuData" :key="indx">{{item.name}}</el-menu-item>
+            </el-menu>
+        </div>
+        <div class="table-search">
+            <search @success="handleSuccess"></search>
+            <optionBtn @success="handleSuccess" :dataSelect="dataSelect" :dataSelectFull="dataSelectFull" ></optionBtn>
+        </div>
+        <el-main class="nopadding">
+            <div class="table-container">
+                <tablePage ref="tablePage" @success="tableHandle" @successFull="tableHandleFull"></tablePage>
+            </div>
+        </el-main>
+    </el-container>  
+</template>
+
+<script>
+import search from './components/search';
+import optionBtn from './components/option';
+import tablePage from './components/table';
+export default {
+    components: {
+        search,tablePage,optionBtn
+    },
+    data(){
+        return {
+            menuData:[],
+            searchKey:{},
+            dataSelect:[],
+            dataSelectFull:[],
+        }
+    },
+    mounted(){
+        // this.getMenuData();
+    },
+    methods: {
+        tableHandle(data){
+            this.dataSelect = data;
+        },
+        tableHandleFull(data){
+            this.dataSelectFull = data;
+        },
+        handleSuccess(data){
+            this.$refs.tablePage.upData(data)
+        },
+        async getMenuData(){
+            var resp = await this.$API.common.menu.get({"type":"account"});
+            if (resp.code !== 1) {
+                return this.$message.error(resp.msg);
+            }
+            this.activeName = resp.data.default;
+            this.menuData = resp.data.menu;
+        },
+        handleClick(name){
+            this.activeName = name;
+            this.searchKey.type = name;
+            this.$refs.tablePage.upData(this.searchKey)
+        }
+    }
+}
+</script>

+ 6 - 0
src/views/manage/mall/wechat/components/option.vue

@@ -0,0 +1,6 @@
+<template>
+
+</template>
+<script>
+
+</script>

+ 6 - 0
src/views/manage/mall/wechat/components/search.vue

@@ -0,0 +1,6 @@
+<template>
+
+</template>
+<script>
+
+</script>

+ 6 - 0
src/views/manage/mall/wechat/components/table.vue

@@ -0,0 +1,6 @@
+<template>
+
+</template>
+<script>
+
+</script>

+ 64 - 0
src/views/manage/mall/wechat/index.vue

@@ -0,0 +1,64 @@
+<template>
+    <el-container class="flex-column">
+        <div class="channel_menu">
+            <el-menu mode="horizontal" class="channel-tabs" :default-active="activeName" @select="handleClick">
+                <el-menu-item :index="item.key" v-for="(item,indx) in menuData" :key="indx">{{item.name}}</el-menu-item>
+            </el-menu>
+        </div>
+        <div class="table-search">
+            <search @success="handleSuccess"></search>
+            <optionBtn @success="handleSuccess" :dataSelect="dataSelect" :dataSelectFull="dataSelectFull" ></optionBtn>
+        </div>
+        <el-main class="nopadding">
+            <div class="table-container">
+                <tablePage ref="tablePage" @success="tableHandle" @successFull="tableHandleFull"></tablePage>
+            </div>
+        </el-main>
+    </el-container>  
+</template>
+
+<script>
+import search from './components/search';
+import optionBtn from './components/option';
+import tablePage from './components/table';
+export default {
+    components: {
+        search,tablePage,optionBtn
+    },
+    data(){
+        return {
+            menuData:[],
+            searchKey:{},
+            dataSelect:[],
+            dataSelectFull:[],
+        }
+    },
+    mounted(){
+        // this.getMenuData();
+    },
+    methods: {
+        tableHandle(data){
+            this.dataSelect = data;
+        },
+        tableHandleFull(data){
+            this.dataSelectFull = data;
+        },
+        handleSuccess(data){
+            this.$refs.tablePage.upData(data)
+        },
+        async getMenuData(){
+            var resp = await this.$API.common.menu.get({"type":"account"});
+            if (resp.code !== 1) {
+                return this.$message.error(resp.msg);
+            }
+            this.activeName = resp.data.default;
+            this.menuData = resp.data.menu;
+        },
+        handleClick(name){
+            this.activeName = name;
+            this.searchKey.type = name;
+            this.$refs.tablePage.upData(this.searchKey)
+        }
+    }
+}
+</script>

+ 6 - 0
src/views/manage/order/confirm/components/option.vue

@@ -0,0 +1,6 @@
+<template>
+
+</template>
+<script>
+
+</script>

+ 85 - 0
src/views/manage/order/confirm/components/search.vue

@@ -0,0 +1,85 @@
+<template>
+    <fieldset>
+        <legend>
+            <el-tag type="info">条件筛选</el-tag>
+        </legend>
+        <el-form class="lv-form-inline" ref="searchForm" :model="searchKey" label-position="right" label-width="100px">
+            <div class="search-form">
+                <div class="form-left">
+                    <el-row :gutter="10">
+                        <el-col :span="this.$store.state.global.ismobile?12:4">
+                            <el-input v-model="searchKey.agent" placeholder="选择代理" clearable readonly :style="{ width: '100%' }" @click="selectUser">
+                                <template #append>
+                                    <el-tooltip
+                                        effect="dark"
+                                        content="点这里,清除选择"
+                                        placement="top-start"
+                                    >
+                                    <div class="remove-a" @click="clearUser">清除</div>
+                                    </el-tooltip>
+                                </template>
+                                <template #prepend>所属代理</template>
+                            </el-input>
+                        </el-col>
+                        <el-col :span="this.$store.state.global.ismobile?12:4">
+                            <el-input v-model="searchKey.orderid" placeholder="订单编号" clearable :style="{ width: '100%' }" @keyup.enter="searchForm()">
+                                <template #prepend>订单编号</template>
+                            </el-input>
+                        </el-col>
+                        <el-col :span="this.$store.state.global.ismobile?12:4">
+                            <el-input v-model="searchKey.mobile" placeholder="手机号码" clearable :style="{ width: '100%' }" @keyup.enter="searchForm()">
+                                <template #prepend>手机号码</template>
+                            </el-input>
+                        </el-col>
+                        <!-- <el-col :span="this.$store.state.global.ismobile?12:4">
+                            <el-select v-model="searchKey.status" clearable placeholder="请选择状态" @change="searchForm" :style="{width: '100%'}" class="diy-select">
+                                <el-option value="1" label="正常"></el-option>
+                                <el-option value="2" label="已冻结"></el-option>
+                                <template #prefix>状态</template>
+                            </el-select>
+                        </el-col> -->
+                        <el-col :span="this.$store.state.global.ismobile?12:4">
+                            <el-date-picker v-model="searchKey.create" :style="{width: '100%'}" placeholder="请选择创建时间" start-placeholder="开始时间" end-placeholder="结束时间" type="daterange" range-separator="至" @change="searchForm" />
+                        </el-col>
+                    </el-row>
+                </div>
+                <div class="form-line"></div>
+                <div class="form-right">
+                    <el-button type="primary" icon="el-icon-search" @click="searchForm">搜索</el-button>
+                </div>
+            </div>
+        </el-form>
+    </fieldset>
+    <agentData ref="agentData" :multiple="false" @success="handleSuccess"></agentData>
+</template>
+
+<script>
+import agentData from "@/views/manage/components/agent";
+export default {
+    components: {
+        agentData
+    },
+    data(){
+        return {
+            searchKey:{}
+        }
+    },
+    methods: {
+        handleSuccess(data){
+            this.searchKey.agent = data.agent_id;
+            this.$emit("success",this.searchKey);
+        },
+        clearUser(){
+            this.searchKey.agent = "";
+        },
+        selectUser(){
+            this.$nextTick(() => {
+                this.$refs.agentData.open()
+            })
+        },
+        searchForm(){
+            this.$emit("success",this.searchKey);
+        }
+    }
+}
+</script>

+ 132 - 0
src/views/manage/order/confirm/components/table.vue

@@ -0,0 +1,132 @@
+<template>
+    <scTable ref="table" :apiObj="list.apiObj" :params="searchKey" @selectionChange="selectionChange" row-key="id" border>
+        <el-table-column type="selection" width="50" fixed="left"></el-table-column>
+        <el-table-column label="订单编号" width="150" fixed="left" prop="name">
+            <template #default="scope">
+                {{scope.row.order_id?scope.row.order_id:'-'}}
+            </template>
+        </el-table-column>
+        <el-table-column label="地址ID" width="150" prop="factory_id"></el-table-column>
+        <el-table-column label="所属代理" width="150" prop="agent_id"></el-table-column>
+        <el-table-column label="联系人" prop="login_at" width="180">
+            <template #default="scope">
+                {{scope.row.contact_name?scope.row.contact_name:'-'}}
+            </template>
+        </el-table-column>
+        <el-table-column label="联系电话" prop="login_at" width="180">
+            <template #default="scope">
+                {{scope.row.contact_mobile?scope.row.contact_mobile:'-'}}
+            </template>
+        </el-table-column>
+        <el-table-column label="详细地址" prop="login_at" width="280">
+            <template #default="scope">
+                {{scope.row.address?scope.row.address:'-'}}
+            </template>
+        </el-table-column>
+        <el-table-column label="注册来源" prop="login_at" width="120">
+            <template #default="scope">
+                <div class="status-success" v-if="scope.row.source==1">代理</div>
+                <div class="status-danger" v-else>门店</div>
+            </template>
+        </el-table-column>
+        <el-table-column label="登录账号" prop="truename" width="150">
+            <template #default="scope">
+                <span v-if="scope.row.username">{{ scope.row.username }}</span>
+                <span class="status-danger" v-else>未设置</span>
+            </template>
+        </el-table-column>
+        <el-table-column label="创建时间" prop="create_at" width="180"></el-table-column>
+        <el-table-column label="状态" prop="status" width="120" align="center">
+            <template #default="scope">
+                <el-popconfirm title="确定要启用或冻结该账号吗?" @confirm="table_state(scope.row)">
+                    <template #reference>
+                        <div class="status-success" v-if="scope.row.status==1"><sc-status-indicator type="success"></sc-status-indicator> 正常</div>
+                        <div class="status-danger" v-else><sc-status-indicator type="danger"></sc-status-indicator> 禁用</div>
+                    </template>
+                </el-popconfirm>
+            </template>
+        </el-table-column>
+        <el-table-column label="操作" width="200" align="right" fixed="right">
+            <template #default="scope">
+                <el-button-group>
+                    <el-button text size="small" @click="table_user(scope.row)">用户管理</el-button>
+                    <el-button text type="warning" size="small" @click="table_passwd(scope.row)">编辑</el-button>
+                    <el-popconfirm title="确定删除吗?" @confirm="table_del(scope.row, scope.$index)">
+                        <template #reference>
+                            <el-button text type="danger" size="small">删除</el-button>
+                        </template>
+                    </el-popconfirm>                    
+                </el-button-group>
+            </template>
+        </el-table-column>
+    </scTable>
+</template>
+
+<script>
+export default {
+    data(){
+        return {
+            list: {
+                apiObj: this.$API.order.list
+            },
+            dataSelect:[],
+            dataSelectFull:[],
+            searchKey:{"type":this.type}
+        }
+    },
+    methods: {
+        table_user(row){
+            this.$nextTick(() => {
+                this.$refs.userMain.open("edit").setData(row)
+            })
+        },
+        refresh(){
+            this.$refs.table.refresh()
+        },
+        upData(data){
+            this.$refs.table.upData(data)
+        },
+        handleSuccess(){
+            this.$refs.table.refresh()
+        },
+        sortChange(event){
+            if (event.order) {
+                var data = {
+                    "field":event.prop,
+                    "order":event.order
+                }
+                this.$refs.table.upData(data)
+            } else {
+                this.$refs.table.reload(this.searchKey)
+            }
+            return ;
+        },
+        selectionChange(event){
+            this.dataSelect = [];
+            var arr = [];
+            var arrCompany = [];
+            event.forEach(function(val,index){
+                arr[index] = val.id;
+                arrCompany[index] = val;
+            });
+            this.dataSelectFull = arrCompany;
+            this.dataSelect = arr;
+            this.$emit("success",this.dataSelect);
+            this.$emit("successFull",this.dataSelectFull);
+        },
+        table_passwd(row){
+            this.$nextTick(() => {
+                this.$refs.formMain.open("edit").setData(row)
+            })
+        },
+        async table_del(row){
+            var resp = await this.$API.factory.del.post({"id":row.id});
+            if(resp.code == 0) {
+                return this.$message.error(resp.msg)
+            }
+            this.$message.success(resp.msg);
+            this.$refs.table.refresh()
+        }
+    }
+}
+</script>

+ 64 - 0
src/views/manage/order/confirm/index.vue

@@ -0,0 +1,64 @@
+<template>
+    <el-container class="flex-column">
+        <div class="channel_menu">
+            <el-menu mode="horizontal" class="channel-tabs" :default-active="activeName" @select="handleClick">
+                <el-menu-item :index="item.key" v-for="(item,indx) in menuData" :key="indx">{{item.name}}</el-menu-item>
+            </el-menu>
+        </div>
+        <div class="table-search">
+            <search @success="handleSuccess"></search>
+            <optionBtn @success="handleSuccess" :dataSelect="dataSelect" :dataSelectFull="dataSelectFull" ></optionBtn>
+        </div>
+        <el-main class="nopadding">
+            <div class="table-container">
+                <tablePage ref="tablePage" @success="tableHandle" @successFull="tableHandleFull"></tablePage>
+            </div>
+        </el-main>
+    </el-container>  
+</template>
+
+<script>
+import search from './components/search';
+import optionBtn from './components/option';
+import tablePage from './components/table';
+export default {
+    components: {
+        search,tablePage,optionBtn
+    },
+    data(){
+        return {
+            menuData:[],
+            searchKey:{},
+            dataSelect:[],
+            dataSelectFull:[],
+        }
+    },
+    mounted(){
+        // this.getMenuData();
+    },
+    methods: {
+        tableHandle(data){
+            this.dataSelect = data;
+        },
+        tableHandleFull(data){
+            this.dataSelectFull = data;
+        },
+        handleSuccess(data){
+            this.$refs.tablePage.upData(data)
+        },
+        async getMenuData(){
+            var resp = await this.$API.common.menu.get({"type":"account"});
+            if (resp.code !== 1) {
+                return this.$message.error(resp.msg);
+            }
+            this.activeName = resp.data.default;
+            this.menuData = resp.data.menu;
+        },
+        handleClick(name){
+            this.activeName = name;
+            this.searchKey.type = name;
+            this.$refs.tablePage.upData(this.searchKey)
+        }
+    }
+}
+</script>

+ 6 - 0
src/views/manage/order/line/components/option.vue

@@ -0,0 +1,6 @@
+<template>
+
+</template>
+<script>
+
+</script>

+ 6 - 0
src/views/manage/order/line/components/search.vue

@@ -0,0 +1,6 @@
+<template>
+
+</template>
+<script>
+
+</script>

+ 6 - 0
src/views/manage/order/line/components/table.vue

@@ -0,0 +1,6 @@
+<template>
+
+</template>
+<script>
+
+</script>

+ 64 - 0
src/views/manage/order/line/index.vue

@@ -0,0 +1,64 @@
+<template>
+    <el-container class="flex-column">
+        <div class="channel_menu">
+            <el-menu mode="horizontal" class="channel-tabs" :default-active="activeName" @select="handleClick">
+                <el-menu-item :index="item.key" v-for="(item,indx) in menuData" :key="indx">{{item.name}}</el-menu-item>
+            </el-menu>
+        </div>
+        <div class="table-search">
+            <search @success="handleSuccess"></search>
+            <optionBtn @success="handleSuccess" :dataSelect="dataSelect" :dataSelectFull="dataSelectFull" ></optionBtn>
+        </div>
+        <el-main class="nopadding">
+            <div class="table-container">
+                <tablePage ref="tablePage" @success="tableHandle" @successFull="tableHandleFull"></tablePage>
+            </div>
+        </el-main>
+    </el-container>  
+</template>
+
+<script>
+import search from './components/search';
+import optionBtn from './components/option';
+import tablePage from './components/table';
+export default {
+    components: {
+        search,tablePage,optionBtn
+    },
+    data(){
+        return {
+            menuData:[],
+            searchKey:{},
+            dataSelect:[],
+            dataSelectFull:[],
+        }
+    },
+    mounted(){
+        // this.getMenuData();
+    },
+    methods: {
+        tableHandle(data){
+            this.dataSelect = data;
+        },
+        tableHandleFull(data){
+            this.dataSelectFull = data;
+        },
+        handleSuccess(data){
+            this.$refs.tablePage.upData(data)
+        },
+        async getMenuData(){
+            var resp = await this.$API.common.menu.get({"type":"account"});
+            if (resp.code !== 1) {
+                return this.$message.error(resp.msg);
+            }
+            this.activeName = resp.data.default;
+            this.menuData = resp.data.menu;
+        },
+        handleClick(name){
+            this.activeName = name;
+            this.searchKey.type = name;
+            this.$refs.tablePage.upData(this.searchKey)
+        }
+    }
+}
+</script>

+ 6 - 0
src/views/manage/order/store/components/option.vue

@@ -0,0 +1,6 @@
+<template>
+
+</template>
+<script>
+
+</script>

+ 6 - 0
src/views/manage/order/store/components/search.vue

@@ -0,0 +1,6 @@
+<template>
+
+</template>
+<script>
+
+</script>

+ 6 - 0
src/views/manage/order/store/components/table.vue

@@ -0,0 +1,6 @@
+<template>
+
+</template>
+<script>
+
+</script>

+ 64 - 0
src/views/manage/order/store/index.vue

@@ -0,0 +1,64 @@
+<template>
+    <el-container class="flex-column">
+        <div class="channel_menu">
+            <el-menu mode="horizontal" class="channel-tabs" :default-active="activeName" @select="handleClick">
+                <el-menu-item :index="item.key" v-for="(item,indx) in menuData" :key="indx">{{item.name}}</el-menu-item>
+            </el-menu>
+        </div>
+        <div class="table-search">
+            <search @success="handleSuccess"></search>
+            <optionBtn @success="handleSuccess" :dataSelect="dataSelect" :dataSelectFull="dataSelectFull" ></optionBtn>
+        </div>
+        <el-main class="nopadding">
+            <div class="table-container">
+                <tablePage ref="tablePage" @success="tableHandle" @successFull="tableHandleFull"></tablePage>
+            </div>
+        </el-main>
+    </el-container>  
+</template>
+
+<script>
+import search from './components/search';
+import optionBtn from './components/option';
+import tablePage from './components/table';
+export default {
+    components: {
+        search,tablePage,optionBtn
+    },
+    data(){
+        return {
+            menuData:[],
+            searchKey:{},
+            dataSelect:[],
+            dataSelectFull:[],
+        }
+    },
+    mounted(){
+        // this.getMenuData();
+    },
+    methods: {
+        tableHandle(data){
+            this.dataSelect = data;
+        },
+        tableHandleFull(data){
+            this.dataSelectFull = data;
+        },
+        handleSuccess(data){
+            this.$refs.tablePage.upData(data)
+        },
+        async getMenuData(){
+            var resp = await this.$API.common.menu.get({"type":"account"});
+            if (resp.code !== 1) {
+                return this.$message.error(resp.msg);
+            }
+            this.activeName = resp.data.default;
+            this.menuData = resp.data.menu;
+        },
+        handleClick(name){
+            this.activeName = name;
+            this.searchKey.type = name;
+            this.$refs.tablePage.upData(this.searchKey)
+        }
+    }
+}
+</script>

+ 239 - 0
src/views/manage/user/factory/components/form.vue

@@ -0,0 +1,239 @@
+<template>
+    <el-drawer :title="titleMap[mode]" :append-to-body="true" v-model="visible" :size="800" destroy-on-close :close-on-click-modal="false" @closed="$emit('closed')" :with-header="false">
+        <el-container class="flex-column" v-loading="loading">
+            <div class="drawer-detail-main">
+                <div class="drawer-detail-header">
+                    <div class="drawer-detail-header-body">
+                        <div class="drawer-detail-header-left">{{ titleMap[mode] }} <span class="tips"></span></div>
+                        <div class="drawer-detail-header-left">
+                            <el-button type="default" icon="el-icon-close" @click="visible=false"></el-button>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <el-main>
+                <el-form ref="dialogForm" :model="formData" :rules="rules" label-width="100px" label-position="top">
+                    <fieldset>
+                        <legend><el-tag>基础信息</el-tag></legend>
+                        <el-row :gutter="15">
+                            <el-col :span="24" v-if="mode=='add'">
+                                <el-form-item label="所属代理" prop="agent_id">
+                                    <el-input v-model="formData.agent_id" clearable placeholder="请选择代理" readonly :style="{ width: '100%' }" @click="selectUser">
+                                        <template #append>
+                                            <el-tooltip
+                                                effect="dark"
+                                                content="点这里,清除选择"
+                                                placement="top-start"
+                                            >
+                                            <div class="remove-a" @click="clearUser">清除</div>
+                                            </el-tooltip>
+                                        </template>
+                                    </el-input>
+                                </el-form-item>
+                            </el-col>
+                            <el-col :span="24">
+                                <el-form-item label="地址/工厂名称" prop="name">
+                                    <el-input v-model="formData.name" clearable placeholder="地址/工厂名称"></el-input>
+                                    <div class="el-form-item-msg"></div>
+                                </el-form-item>
+                            </el-col>
+                            <el-col :span="12">
+                                <el-form-item label="联系人" prop="contact_name">
+                                    <el-input v-model="formData.contact_name" clearable placeholder="请输入联系人"></el-input>
+                                    <div class="el-form-item-msg"></div>
+                                </el-form-item>
+                            </el-col>
+                            <el-col :span="12">
+                                <el-form-item label="联系电话" prop="contact_mobile">
+                                    <el-input v-model="formData.contact_mobile" clearable placeholder="请输入联系电话"></el-input>
+                                    <div class="el-form-item-msg"></div>
+                                </el-form-item>
+                            </el-col>
+                            <el-col :span="24">
+                                <el-form-item label="详细地址" prop="address">
+                                    <el-input type="textarea" v-model="formData.address" clearable placeholder="请输入详细地址"></el-input>
+                                    <div class="el-form-item-msg">请填写正确的详细地址,确保快递可送达</div>
+                                </el-form-item>
+                            </el-col>
+                            <el-col :span="24">
+                                <el-form-item label="注册来源" prop="source">
+                                    <el-radio-group v-model="formData.source">
+                                        <el-radio border :label="1">代理</el-radio>
+                                        <el-radio border :label="2">门店</el-radio>
+                                    </el-radio-group>
+                                    <div class="el-form-item-msg">来源为门店,所有的订单都不会抽成</div>
+                                </el-form-item>
+                            </el-col>
+                        </el-row>
+                    </fieldset>
+                    <fieldset v-if="mode=='add'">
+                        <legend><el-tag>主账号信息</el-tag></legend>
+                        <el-row :gutter="15">
+                            <el-col :span="12">
+                                <el-form-item label="登录账号" prop="username">
+                                    <el-input v-model="formData.username" clearable placeholder="请输入登录账号"></el-input>
+                                    <div class="el-form-item-msg"></div>
+                                </el-form-item>
+                            </el-col>
+                            <el-col :span="12">
+                                <el-form-item label="用户名称" prop="truename">
+                                    <el-input v-model="formData.truename" clearable placeholder="请输入用户名称"></el-input>
+                                    <div class="el-form-item-msg"></div>
+                                </el-form-item>
+                            </el-col>
+                            <el-col :span="12">
+                                <el-form-item label="登录密码" prop="password">
+                                    <el-input type="password" v-model="formData.password" clearable show-password placeholder="请输入登录密码"></el-input>
+                                </el-form-item>
+                            </el-col>
+                            <el-col :span="12">
+                                <el-form-item label="确认密码" prop="password2">
+                                    <el-input type="password" v-model="formData.password2" clearable show-password placeholder="请再次输入密码"></el-input>
+                                </el-form-item>
+                            </el-col>
+                        </el-row>
+                    </fieldset>
+                </el-form>
+            </el-main>
+            <el-footer style="text-align: right;">
+			    <el-button @click="visible=false" >取 消</el-button>
+			    <el-button type="primary" :loading="isSaveing" @click="submit()">提交</el-button>
+            </el-footer>
+        </el-container>
+    </el-drawer>
+    <storeData ref="storeData" :multiple="false" @success="handleSuccess"></storeData>
+</template>
+<script>
+import storeData from "@/views/manage/components/agent";
+export default{
+    components:{
+        storeData
+    },
+    data(){
+        return {
+            stepActive:1,
+            loading: false,
+            mode:"add",
+            titleMap:{
+                add:"新增洗衣地址/工厂",
+                edit:"修改洗衣地址/工厂"
+            },
+            visible: false,
+            isSaveing: false,
+            formData:{},
+            time:0,
+            submitState:false,
+            disabled:false,
+            rules:{
+                agent_id: [
+                    {required: true, message: '请选择代理'}
+                ],
+                name: [
+                    {required: true, message: '请输入'}
+                ],
+                source: [
+                    {required: true, message: '请选择'}
+                ],
+                contact_name: [
+                    {required: true, message: '请输入'}
+                ],
+                address: [
+                    {required: true, message: '请输入'}
+                ],
+                username: [
+                    {required: true, message: '请输入登录账号'}
+                ],
+                truename: [
+                    {required: true, message: '请输入账号名称'}
+                ],
+                password: [
+                    {required: true, message: '请输入登录密码'}
+                ],
+                password2: [
+                    {required: true, message: '请再次输入密码'},
+                    {validator: (rule, value, callback) => {
+                        if (value !== this.formData.password) {
+                            callback(new Error('两次输入密码不一致!'));
+                        }else{
+                            callback();
+                        }
+                    }}
+                ],
+                contact_mobile: [
+                    { required: true, message: this.$t('login.mobileError'), trigger: 'blur' },
+                    {
+                        validator: (rule, value, callback) => {
+                            const phoneReg = /^1[3-9]\d{9}$/ // 手机号正则
+                            const landlineReg = /^(?:(?:\d{3}-)?\d{8}|^(?:\d{4}-)?\d{7,8})(?:-\d+)?$/
+                            if (!value) {
+                                callback(new Error('请输入联系方式'))
+                            } else if (!phoneReg.test(value) && !landlineReg.test(value)) {
+                                callback(new Error('请输入有效的手机号码号码'))
+                            } else {
+                                callback()
+                            }
+                        },
+                        trigger: 'blur'
+                    }
+                ],
+            }
+        }
+    },
+    methods:{
+        clearUser(){
+            this.formData.agent_id = "";
+        },
+        selectUser(){
+            this.$nextTick(() => {
+                this.$refs.agentData.open()
+            })
+        },
+        handleSuccess(data){
+            this.formData.agent_id = data.agent_id;
+        },
+        clearUser(){
+            this.formData.agent_id = "";
+        },
+        selectUser(){
+            this.$nextTick(() => {
+                this.$refs.storeData.open()
+            })
+        },
+        open(mode = 'add'){
+            this.mode = mode;
+            this.visible = true;
+            return this
+        },
+        //表单注入数据
+        setData(data){
+            this.formData = data;
+        },
+        async submit(){
+            var validate = await this.$refs.dialogForm.validate().catch(()=>{});
+            if(!validate){ return false }
+            let submitData = JSON.parse(JSON.stringify(this.formData));
+            submitData.password = this.$TOOL.crypto.MD5(this.formData.password)
+            submitData.password2 = this.$TOOL.crypto.MD5(this.formData.password2)
+            if (this.formData.vip_end) {
+                submitData.vip_end = this.$TOOL.dateFormat(this.formData.vip_end, "yyyy-MM-dd");
+            }
+            submitData.scene = "register";
+            submitData.type = 4;
+            this.isSaveing = true;
+            var resp = await this.$API.factory.save.post(submitData);
+            this.isSaveing = false;
+            if (resp.code == 0) {
+                return this.$message.error(resp.msg);
+            }
+            this.$message.success(resp.msg);
+            this.visible = false;
+            this.$emit("success");
+        }
+    }
+}
+</script>
+<style>
+.mt20 {margin-top: 20px;}
+.login-msg-yzm {display: flex;width: 100%;}
+.login-msg-yzm .el-button {margin-left: 10px;--el-button-size:42px;}
+</style>

+ 51 - 1
src/views/manage/user/factory/components/option.vue

@@ -1,7 +1,57 @@
 <template>
-    <div></div>
+    <fieldset>
+        <legend>
+            <el-tag type="info">按需操作</el-tag>
+        </legend>
+        <div class="op-header">
+            <div class="left-panel">
+                <el-button type="success" icon="el-icon-plus" @click="table_add()">新增洗衣地址</el-button>
+                <!-- <el-button icon="el-icon-delete" @click="table_del()" :disabled="dataSelect.length>0?false:true">删除</el-button> -->
+                <el-button icon="el-icon-document" @click="table_batch_status(1)" :disabled="dataSelect.length>0?false:true">启用</el-button>
+                <el-button icon="el-icon-lock" @click="table_batch_status(0)" :disabled="dataSelect.length>0?false:true">禁用</el-button>
+                <!-- <el-button type="primary" icon="el-icon-download" @click="table_export()">导出</el-button> -->
+            </div>
+        </div>
+    </fieldset>
+    <formMain ref="formMain" @success="handleSuccess"></formMain>
 </template>
 
 <script>
+import formMain from './form';
+export default {
+    components: {
+        formMain
+    },
+    props: {
+        dataSelect: { type: Array, default: () => [] },
+        dataSelectFull: { type: Array, default: () => [] }
+    },
+    data(){
+        return {
 
+        }
+    },
+    methods: {
+        async table_batch_status(status){
+            if (this.dataSelect.length == 0) {
+                return this.$message.error("请选择修改数据")
+            }
+            let submitData = {"id":this.dataSelect,"value":status,"field":"status","type":"batch"};
+            var resp = await this.$API.factory.batch.post(submitData);
+            if (resp.code == 0) {
+                return this.$message.error(resp.msg);
+            }
+            this.$message.success(resp.msg);
+            this.$emit("success");
+        },
+        handleSuccess(){
+            this.$emit("success");
+        },
+        table_add(){
+            this.$nextTick(() => {
+                this.$refs.formMain.open()
+            })
+        },
+    }
+}
 </script>

+ 85 - 2
src/views/manage/user/factory/components/search.vue

@@ -1,7 +1,90 @@
 <template>
-    <div></div>
+    <fieldset>
+        <legend>
+            <el-tag type="info">条件筛选</el-tag>
+        </legend>
+        <el-form class="lv-form-inline" ref="searchForm" :model="searchKey" label-position="right" label-width="100px">
+            <div class="search-form">
+                <div class="form-left">
+                    <el-row :gutter="10">
+                        <el-col :span="this.$store.state.global.ismobile?12:4">
+                            <el-input v-model="searchKey.agent" placeholder="选择代理" clearable readonly :style="{ width: '100%' }" @click="selectUser">
+                                <template #append>
+                                    <el-tooltip
+                                        effect="dark"
+                                        content="点这里,清除选择"
+                                        placement="top-start"
+                                    >
+                                    <div class="remove-a" @click="clearUser">清除</div>
+                                    </el-tooltip>
+                                </template>
+                                <template #prepend>所属代理</template>
+                            </el-input>
+                        </el-col>
+                        <el-col :span="this.$store.state.global.ismobile?12:4">
+                            <el-input v-model="searchKey.truename" placeholder="地址名称" clearable :style="{ width: '100%' }" @keyup.enter="searchForm()">
+                                <template #prepend>地址名称</template>
+                            </el-input>
+                        </el-col>
+                        <el-col :span="this.$store.state.global.ismobile?12:4">
+                            <el-input v-model="searchKey.contact" placeholder="联系人" clearable :style="{ width: '100%' }" @keyup.enter="searchForm()">
+                                <template #prepend>联系人</template>
+                            </el-input>
+                        </el-col>
+                        <el-col :span="this.$store.state.global.ismobile?12:4">
+                            <el-input v-model="searchKey.mobile" placeholder="手机号码" clearable :style="{ width: '100%' }" @keyup.enter="searchForm()">
+                                <template #prepend>手机号码</template>
+                            </el-input>
+                        </el-col>
+                        <el-col :span="this.$store.state.global.ismobile?12:4">
+                            <el-select v-model="searchKey.status" clearable placeholder="请选择状态" @change="searchForm" :style="{width: '100%'}" class="diy-select">
+                                <el-option value="1" label="正常"></el-option>
+                                <el-option value="2" label="已冻结"></el-option>
+                                <template #prefix>状态</template>
+                            </el-select>
+                        </el-col>
+                        <el-col :span="this.$store.state.global.ismobile?12:4">
+                            <el-date-picker v-model="searchKey.create" :style="{width: '100%'}" placeholder="请选择创建时间" start-placeholder="开始时间" end-placeholder="结束时间" type="daterange" range-separator="至" @change="searchForm" />
+                        </el-col>
+                    </el-row>
+                </div>
+                <div class="form-line"></div>
+                <div class="form-right">
+                    <el-button type="primary" icon="el-icon-search" @click="searchForm">搜索</el-button>
+                </div>
+            </div>
+        </el-form>
+    </fieldset>
+    <agentData ref="agentData" :multiple="false" @success="handleSuccess"></agentData>
 </template>
 
 <script>
-
+import agentData from "@/views/manage/components/agent";
+export default {
+    components: {
+        agentData
+    },
+    data(){
+        return {
+            searchKey:{}
+        }
+    },
+    methods: {
+        handleSuccess(data){
+            this.searchKey.agent = data.agent_id;
+            this.$emit("success",this.searchKey);
+        },
+        clearUser(){
+            this.searchKey.agent = "";
+        },
+        selectUser(){
+            this.$nextTick(() => {
+                this.$refs.agentData.open()
+            })
+        },
+        searchForm(){
+            this.$emit("success",this.searchKey);
+        }
+    }
+}
 </script>

+ 134 - 2
src/views/manage/user/factory/components/table.vue

@@ -1,7 +1,139 @@
 <template>
-    <div></div>
+    <scTable ref="table" :apiObj="list.apiObj" :params="searchKey" @selectionChange="selectionChange" row-key="id" border>
+        <el-table-column type="selection" width="50" fixed="left"></el-table-column>
+        <el-table-column label="地址名称" width="150" fixed="left" prop="name">
+            <template #default="scope">
+                {{scope.row.name?scope.row.name:'-'}}
+            </template>
+        </el-table-column>
+        <el-table-column label="地址ID" width="150" prop="factory_id"></el-table-column>
+        <el-table-column label="所属代理" width="150" prop="agent_id"></el-table-column>
+        <el-table-column label="联系人" prop="login_at" width="180">
+            <template #default="scope">
+                {{scope.row.contact_name?scope.row.contact_name:'-'}}
+            </template>
+        </el-table-column>
+        <el-table-column label="联系电话" prop="login_at" width="180">
+            <template #default="scope">
+                {{scope.row.contact_mobile?scope.row.contact_mobile:'-'}}
+            </template>
+        </el-table-column>
+        <el-table-column label="详细地址" prop="login_at" width="280">
+            <template #default="scope">
+                {{scope.row.address?scope.row.address:'-'}}
+            </template>
+        </el-table-column>
+        <el-table-column label="注册来源" prop="login_at" width="120">
+            <template #default="scope">
+                <div class="status-success" v-if="scope.row.source==1">代理</div>
+                <div class="status-danger" v-else>门店</div>
+            </template>
+        </el-table-column>
+        <el-table-column label="登录账号" prop="truename" width="150">
+            <template #default="scope">
+                <span v-if="scope.row.username">{{ scope.row.username }}</span>
+                <span class="status-danger" v-else>未设置</span>
+            </template>
+        </el-table-column>
+        <el-table-column label="创建时间" prop="create_at" width="180"></el-table-column>
+        <el-table-column label="状态" prop="status" width="120" align="center">
+            <template #default="scope">
+                <el-popconfirm title="确定要启用或冻结该账号吗?" @confirm="table_state(scope.row)">
+                    <template #reference>
+                        <div class="status-success" v-if="scope.row.status==1"><sc-status-indicator type="success"></sc-status-indicator> 正常</div>
+                        <div class="status-danger" v-else><sc-status-indicator type="danger"></sc-status-indicator> 禁用</div>
+                    </template>
+                </el-popconfirm>
+            </template>
+        </el-table-column>
+        <el-table-column label="操作" width="200" align="right" fixed="right">
+            <template #default="scope">
+                <el-button-group>
+                    <el-button text size="small" @click="table_user(scope.row)">用户管理</el-button>
+                    <el-button text type="warning" size="small" @click="table_passwd(scope.row)">编辑</el-button>
+                    <el-popconfirm title="确定删除吗?" @confirm="table_del(scope.row, scope.$index)">
+                        <template #reference>
+                            <el-button text type="danger" size="small">删除</el-button>
+                        </template>
+                    </el-popconfirm>                    
+                </el-button-group>
+            </template>
+        </el-table-column>
+    </scTable>
+    <formMain ref="formMain" @success="handleSuccess"></formMain>
+    <userMain ref="userMain" @success="handleSuccess"></userMain>
 </template>
 
 <script>
-
+import formMain from './form';
+import userMain from './user';
+export default {
+    components: {
+        formMain,userMain
+    },
+    data(){
+        return {
+            list: {
+                apiObj: this.$API.factory.list
+            },
+            dataSelect:[],
+            dataSelectFull:[],
+            searchKey:{"type":this.type}
+        }
+    },
+    methods: {
+        table_user(row){
+            this.$nextTick(() => {
+                this.$refs.userMain.open("edit").setData(row)
+            })
+        },
+        refresh(){
+            this.$refs.table.refresh()
+        },
+        upData(data){
+            this.$refs.table.upData(data)
+        },
+        handleSuccess(){
+            this.$refs.table.refresh()
+        },
+        sortChange(event){
+            if (event.order) {
+                var data = {
+                    "field":event.prop,
+                    "order":event.order
+                }
+                this.$refs.table.upData(data)
+            } else {
+                this.$refs.table.reload(this.searchKey)
+            }
+            return ;
+        },
+        selectionChange(event){
+            this.dataSelect = [];
+            var arr = [];
+            var arrCompany = [];
+            event.forEach(function(val,index){
+                arr[index] = val.id;
+                arrCompany[index] = val;
+            });
+            this.dataSelectFull = arrCompany;
+            this.dataSelect = arr;
+            this.$emit("success",this.dataSelect);
+            this.$emit("successFull",this.dataSelectFull);
+        },
+        table_passwd(row){
+            this.$nextTick(() => {
+                this.$refs.formMain.open("edit").setData(row)
+            })
+        },
+        async table_del(row){
+            var resp = await this.$API.factory.del.post({"id":row.id});
+            if(resp.code == 0) {
+                return this.$message.error(resp.msg)
+            }
+            this.$message.success(resp.msg);
+            this.$refs.table.refresh()
+        }
+    }
+}
 </script>

+ 147 - 0
src/views/manage/user/factory/components/user.vue

@@ -0,0 +1,147 @@
+<template>
+    <el-drawer :title="titleMap[mode]" :append-to-body="true" v-model="visible" :size="1000" destroy-on-close :close-on-click-modal="false" @closed="$emit('closed')" :with-header="false">
+        <el-container class="flex-column" v-loading="loading">
+            <div class="drawer-detail-main">
+                <div class="drawer-detail-header">
+                    <div class="drawer-detail-header-body">
+                        <div class="drawer-detail-header-left">{{ titleMap[mode] }} <span class="tips">{{ formData.truename }}</span></div>
+                        <div class="drawer-detail-header-left">
+                            <el-button type="default" icon="el-icon-close" @click="visible=false"></el-button>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <div class="table-search">
+                <search @success="handleSuccess"></search>
+                <optionBtn @success="handleSuccess" :agent="formData" :dataSelect="dataSelect" :dataSelectFull="dataSelectFull" ></optionBtn>
+            </div>
+            <el-main>
+                <scTable ref="table" :apiObj="list.apiObj" :params="searchKey" @selectionChange="selectionChange" row-key="id" border>
+                    <el-table-column type="selection" width="50" fixed="left"></el-table-column>
+                    <el-table-column label="登录账号" prop="truename" width="150" fixed="left">
+                        <template #default="scope">
+                            <span v-if="scope.row.username">{{ scope.row.username }}</span>
+                            <span class="status-danger" v-else>未设置</span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="账号ID" prop="user_id" width="150"></el-table-column>
+                    <el-table-column label="账号名称" prop="truename" width="200">
+                        <template #default="scope">
+                            <span v-if="scope.row.truename">{{ scope.row.truename }}</span>
+                            <span class="status-danger" v-else>未设置</span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="手机号码" prop="mobile" width="150">
+                        <template #default="scope">
+                            <span v-if="scope.row.mobile">{{ scope.row.mobile }}</span>
+                            <span class="status-danger" v-else>-</span>
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="类型" prop="type" width="120" align="center">
+                        <template #default="scope">
+                            <div class="status-success" v-if="scope.row.type==4 && formData.factory_id == scope.row.user_id"><sc-status-indicator type="success"></sc-status-indicator> 主账号</div>
+                            <div class="status-success" v-if="scope.row.type==4 && formData.factory_id !== scope.row.user_id"><sc-status-indicator type="success"></sc-status-indicator> 子账号</div>
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="状态" prop="status" width="120" align="center">
+                        <template #default="scope">
+                            <div class="status-success" v-if="scope.row.status==1"><sc-status-indicator type="success"></sc-status-indicator> 正常</div>
+                            <div class="status-danger" v-if="scope.row.status==2"><sc-status-indicator type="danger"></sc-status-indicator> 已冻结</div>
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="创建时间" prop="create_at" width="180"></el-table-column>
+                    <el-table-column label="操作" width="120" align="right" fixed="right">
+                        <template #default="scope">
+                            <el-button-group>
+                                <el-button text type="warning" size="small" @click="table_edit(scope.row)">编辑</el-button>
+                                <el-popconfirm title="确定删除吗?" @confirm="table_del(scope.row, scope.$index)">
+                                    <template #reference>
+                                        <el-button text type="danger" size="small">删除</el-button>
+                                    </template>
+                                </el-popconfirm>                    
+                            </el-button-group>
+                        </template>
+                    </el-table-column>
+                </scTable>
+            </el-main>
+            <el-footer>
+                <el-button @click="visible=false">关 闭</el-button>
+            </el-footer>
+        </el-container>
+    </el-drawer>
+    <formMain ref="formMain" @success="handleSuccess"></formMain>
+</template>
+
+<script>
+import search from '@/views/manage/user/merchant/user/search';
+import optionBtn from './user_bar';
+import formMain from './user_form';
+export default{
+    components: {
+        search,optionBtn,formMain
+    },
+    data(){
+        return {
+            loading: false,
+            mode:"add",
+            visible: false,
+            titleMap:{
+                add:"洗衣地址名下用户",
+                edit:"洗衣地址名下用户"
+            },
+            list: {
+                apiObj: this.$API.user.list
+            },
+            formData:{},
+            searchKey:{},
+            dataSelect:[],
+            dataSelectFull:[],
+        }
+    },
+    methods:{
+        async table_del(data){
+            var resp = await this.$API.user.del.post({"id":data.id});
+            if (resp.code == 0) {
+                return this.$message.warning(resp.msg);
+            }
+            this.$message.success(resp.msg);
+            this.$refs.table.refresh()
+        },
+        table_edit(row){
+            this.$nextTick(() => {
+                this.$refs.formMain.open("edit").setData(row)
+            })
+        },
+        open(mode = 'add'){
+            this.mode = mode;
+            this.visible = true;
+            return this
+        },
+        //表单注入数据
+        setData(data){
+            this.formData = data;
+            this.searchKey.factory = data.factory_id;
+        },
+        selectionChange(event){
+            this.dataSelect = [];
+            var arr = [];
+            var arrCompany = [];
+            event.forEach(function(val,index){
+                arr[index] = val.id;
+                arrCompany[index] = val;
+            });
+            this.dataSelectFull = arrCompany;
+            this.dataSelect = arr;
+        },
+        refresh(){
+            this.$refs.table.refresh()
+        },
+        upData(data){
+            this.$refs.table.upData(data)
+        },
+        handleSuccess(data){
+            this.$refs.table.upData(data)
+        },
+    }
+}
+</script>

+ 56 - 0
src/views/manage/user/factory/components/user_bar.vue

@@ -0,0 +1,56 @@
+<template>
+    <fieldset>
+        <legend>
+            <el-tag type="info">按需操作</el-tag>
+        </legend>
+        <div class="op-header">
+            <div class="left-panel">
+                <el-button type="success" icon="el-icon-plus" @click="table_add()">新增账号</el-button>
+                <el-button icon="el-icon-document" @click="table_batch_status(1)" :disabled="dataSelect.length>0?false:true">启用</el-button>
+                <el-button icon="el-icon-lock" @click="table_batch_status(2)" :disabled="dataSelect.length>0?false:true">冻结</el-button>
+            </div>
+        </div>
+    </fieldset>
+    <formMain ref="formMain" @success="handleSuccess"></formMain>
+</template>
+
+<script>
+import formMain from './user_form';
+export default {
+    components: {
+        formMain
+    },
+    props: {
+        agent: { type: Object, default: {} },
+        dataSelect: { type: Array, default: () => [] },
+        dataSelectFull: { type: Array, default: () => [] }
+    },
+    data(){
+        return {
+
+        }
+    },
+    methods: {
+        handleSuccess(){
+            this.$emit("success");
+        },
+        async table_batch_status(status){
+            if (this.dataSelect.length == 0) {
+                return this.$message.error("请选择修改数据")
+            }
+            let submitData = {"id":this.dataSelect,"value":status,"field":"status","type":"batch"};
+            var resp = await this.$API.user.batch.post(submitData);
+            if (resp.code == 0) {
+                return this.$message.error(resp.msg);
+            }
+            this.$message.success(resp.msg);
+            this.$emit("success");
+        },
+        table_add(){
+            this.$nextTick(() => {
+                this.$refs.formMain.open().setData(this.agent)
+            })
+        },
+    }
+}
+</script>

+ 154 - 0
src/views/manage/user/factory/components/user_form.vue

@@ -0,0 +1,154 @@
+<template>
+    <el-dialog :title="titleMap[mode]" v-model="visible" :width="660" destroy-on-close @closed="$emit('closed')" :close-on-click-modal="false" :close-on-press-escape="false">
+        <el-form ref="dialogForm" :model="formData" :rules="rules" label-width="100px" label-position="top">
+            <el-row :gutter="10">
+                <el-col :span="12">
+                    <el-form-item label="账号名称" prop="truename">
+                        <el-input v-model="formData.truename" clearable placeholder="请输入"></el-input>
+                        <div class="el-form-item-msg"></div>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12" v-if="mode=='add'">
+                    <el-form-item label="登录账号" prop="username">
+                        <el-input v-model="formData.username" clearable placeholder="请输入登录账号"></el-input>
+                        <div class="el-form-item-msg"></div>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12" v-if="mode=='edit'">
+                    <el-form-item label="登录账号">
+                        <el-input v-model="dataForm.username" :disabled="true" clearable placeholder="请输入登录账号"></el-input>
+                        <div class="el-form-item-msg">不设置登录账号可以使用手机号码登录</div>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                    <el-form-item label="登录密码" prop="password">
+                        <el-input type="password" v-model="formData.password" clearable show-password placeholder="请输入登录密码"></el-input>
+                    </el-form-item>
+                </el-col>
+                <el-col :span="12">
+                    <el-form-item label="确认密码" prop="password2">
+                        <el-input type="password" v-model="formData.password2" clearable show-password placeholder="请再次输入密码"></el-input>
+                    </el-form-item>
+                </el-col>
+            </el-row>
+        </el-form>
+        <template #footer>
+            <el-button @click="visible = false">取 消</el-button>
+            <el-button type="primary" :loading="isSaveing" @click="submit()">提交</el-button>
+        </template>
+    </el-dialog>
+</template>
+
+<script>
+export default {
+    data(){
+        return {
+            loading: false,
+            mode:"add",
+            titleMap:{
+                add:"新增账号",
+                edit:"编辑账号"
+            },
+            rules:{
+                truename: [
+                    {required: true, message: '请输入'}
+                ],
+                username: [
+                    {required: true, message: '请输入'}
+                ],
+                password: [
+                    {required: true, message: '请输入登录密码'}
+                ],
+                password2: [
+                    {required: true, message: '请再次输入密码'},
+                    {validator: (rule, value, callback) => {
+                        if (value !== this.formData.password) {
+                            callback(new Error('两次输入密码不一致!'));
+                        }else{
+                            callback();
+                        }
+                    }}
+                ],
+            },
+            visible: false,
+            isSaveing: false,
+            formData:{},
+            captcha:{},
+            dataForm:{}
+        }
+    },
+    methods:{
+        open(mode = 'add'){
+            this.mode = mode;
+            this.visible = true;
+            if (mode == 'add') {
+                this.getCaptcha();
+            }
+            return this
+        },
+        async getCaptcha(){
+            var resp = await this.$API.common.captcha.get();
+            if (resp.code == 0) {
+                return this.$message.error(resp.msg);
+            }
+            this.captcha = resp.data;
+        },
+        async getYzm(){
+			var field = ["mobile","captcha"];
+			this.$refs.dialogForm.validateField(field, async (valid) => {
+				if(!valid){
+					return false
+				}
+                var resp = await this.$API.common.sms.post({"mobile":this.formData.mobile,"code":this.formData.captcha,"key":this.captcha.key,"scene":"register"});
+                if (resp.code == 0) {
+                    this.getCaptcha();
+                    return this.$message.error(resp.msg);
+                }
+                this.$message.success(resp.msg)
+                this.disabled = true
+                this.time = 60
+                var t = setInterval(() => {
+                    this.time -= 1
+                    if(this.time < 1){
+                        clearInterval(t)
+                        this.disabled = false
+                        this.time = 0
+                    }
+                },1000)
+            });            
+        },
+        //表单注入数据
+        setData(data){
+            console.log(data)
+            if (this.mode == 'edit') {
+                this.formData.truename = data.truename;
+                this.formData.id = data.id;
+            }
+            this.dataForm = data;
+        },
+        async submit(){
+            var validate = await this.$refs.dialogForm.validate().catch(()=>{});
+            if(!validate){ return false }
+            let submitData = JSON.parse(JSON.stringify(this.formData));
+            submitData.password = this.$TOOL.crypto.MD5(this.formData.password)
+            submitData.password2 = this.$TOOL.crypto.MD5(this.formData.password2)
+            if (this.mode == 'add') {
+                submitData.scene = "register";
+                submitData.type = 4;
+                submitData.factory_id = this.dataForm.factory_id;
+                submitData.agent_id = this.dataForm.agent_id;
+                submitData.vip_at = this.$TOOL.dateFormat(this.dataForm.vip_at, "yyyy-MM-dd");
+            }
+            this.isSaveing = true;
+            var resp = await this.$API.user.save.post(submitData);
+            this.isSaveing = false;
+            if (resp.code == 0) {
+                return this.$message.error(resp.msg);
+            }
+            this.$message.success(resp.msg);
+            this.visible = false;
+            this.$emit("success");
+        }
+    }
+}
+</script>

+ 1 - 1
src/views/manage/user/store/components/option.vue

@@ -6,7 +6,7 @@
         <div class="op-header">
             <div class="left-panel">
                 <el-button type="success" icon="el-icon-plus" @click="table_add()">新增门店</el-button>
-                <el-button icon="el-icon-delete" @click="table_del()" :disabled="dataSelect.length>0?false:true">删除</el-button>
+                <!-- <el-button icon="el-icon-delete" @click="table_del()" :disabled="dataSelect.length>0?false:true">删除</el-button> -->
                 <el-button icon="el-icon-document" @click="table_batch_status(0)" :disabled="dataSelect.length>0?false:true">启用</el-button>
                 <el-button icon="el-icon-lock" @click="table_batch_status(3)" :disabled="dataSelect.length>0?false:true">禁用</el-button>
                 <!-- <el-button type="primary" icon="el-icon-download" @click="table_export()">导出</el-button> -->

+ 2 - 2
src/views/manage/user/store/components/table.vue

@@ -6,7 +6,7 @@
         <el-table-column label="所属代理" width="150" prop="agent_id"></el-table-column>
         <el-table-column label="登录账号" prop="truename" width="150">
             <template #default="scope">
-                <span v-if="scope.row.user.username">{{ scope.row.user.username }}</span>
+                <span v-if="scope.row.user">{{ scope.row.user.username }}</span>
                 <span class="status-danger" v-else>未设置</span>
             </template>
         </el-table-column>
@@ -60,7 +60,7 @@
 
 <script>
 import formMain from './form';
-import userMain from './user.vue';
+import userMain from './user';
 export default {
     components: {
         formMain,userMain

+ 1 - 1
src/views/manage/user/store/components/user.vue

@@ -74,7 +74,7 @@
 
 <script>
 import search from '@/views/manage/user/merchant/user/search';
-import optionBtn from '@/views/manage/user/merchant/user/option';
+import optionBtn from './user_bar';
 import formMain from './user_form';
 export default{
     components: {

+ 56 - 0
src/views/manage/user/store/components/user_bar.vue

@@ -0,0 +1,56 @@
+<template>
+    <fieldset>
+        <legend>
+            <el-tag type="info">按需操作</el-tag>
+        </legend>
+        <div class="op-header">
+            <div class="left-panel">
+                <el-button type="success" icon="el-icon-plus" @click="table_add()">新增账号</el-button>
+                <el-button icon="el-icon-document" @click="table_batch_status(1)" :disabled="dataSelect.length>0?false:true">启用</el-button>
+                <el-button icon="el-icon-lock" @click="table_batch_status(2)" :disabled="dataSelect.length>0?false:true">冻结</el-button>
+            </div>
+        </div>
+    </fieldset>
+    <formMain ref="formMain" @success="handleSuccess"></formMain>
+</template>
+
+<script>
+import formMain from './user_form';
+export default {
+    components: {
+        formMain
+    },
+    props: {
+        agent: { type: Object, default: {} },
+        dataSelect: { type: Array, default: () => [] },
+        dataSelectFull: { type: Array, default: () => [] }
+    },
+    data(){
+        return {
+
+        }
+    },
+    methods: {
+        handleSuccess(){
+            this.$emit("success");
+        },
+        async table_batch_status(status){
+            if (this.dataSelect.length == 0) {
+                return this.$message.error("请选择修改数据")
+            }
+            let submitData = {"id":this.dataSelect,"value":status,"field":"status","type":"batch"};
+            var resp = await this.$API.user.batch.post(submitData);
+            if (resp.code == 0) {
+                return this.$message.error(resp.msg);
+            }
+            this.$message.success(resp.msg);
+            this.$emit("success");
+        },
+        table_add(){
+            this.$nextTick(() => {
+                this.$refs.formMain.open().setData(this.agent)
+            })
+        },
+    }
+}
+</script>

+ 115 - 0
src/views/manage/wash/category/components/form.vue

@@ -0,0 +1,115 @@
+<template>
+    <el-dialog :title="titleMap[mode]" v-model="visible" :width="660" destroy-on-close @closed="$emit('closed')" :close-on-click-modal="false" :close-on-press-escape="false">
+        <el-form ref="dialogForm" :model="formData" :rules="rules" label-width="100px" label-position="top">
+            <el-form-item label="所属门店" prop="store_id">
+                <el-input v-model="formData.store_id" clearable placeholder="请选择门店" readonly :style="{ width: '100%' }" @click="selectUser">
+                    <template #append>
+                        <el-tooltip
+                            effect="dark"
+                            content="点这里,清除选择"
+                            placement="top-start"
+                        >
+                        <div class="remove-a" @click="clearUser">清除</div>
+                        </el-tooltip>
+                    </template>
+                </el-input>
+            </el-form-item>
+            <el-form-item label="项目名称" prop="name">
+                <el-input v-model="formData.name" clearable placeholder="请输入"></el-input>
+                <div class="el-form-item-msg">如:精洗、普洗、修复</div>
+            </el-form-item>
+            <el-form-item label="加价金额" prop="price">
+                <el-input v-model="formData.price" clearable placeholder="请输入">
+                    <template #append>元</template>
+                </el-input>
+                <div class="el-form-item-msg">设置加价金额后,每一件需洗涤的衣服按该金额加价</div>
+            </el-form-item>
+            <el-form-item label="状态" prop="status">
+                <el-radio-group v-model="formData.status">
+                    <el-radio-button :label="1">正常</el-radio-button>
+                    <el-radio-button :label="0">禁用</el-radio-button>
+                </el-radio-group>
+            </el-form-item>
+        </el-form>
+        <template #footer>
+            <el-button @click="visible = false">取 消</el-button>
+            <el-button type="primary" :loading="isSaveing" @click="submit()">提交</el-button>
+        </template>
+    </el-dialog>
+    <storeData ref="storeData" :multiple="false" @success="handleSuccess"></storeData>
+</template>
+
+<script>
+import storeData from "@/views/manage/components/store";
+export default {
+    components: {
+        storeData
+    },
+    data(){
+        return {
+            loading: false,
+            mode:"add",
+            titleMap:{
+                add:"新增洗护项目",
+                edit:"编辑洗护项目"
+            },
+            rules:{
+                store_id: [
+                    {required: true, message: '请选择'}
+                ],
+                name: [
+                    {required: true, message: '请输入'}
+                ],
+                price: [
+                    {required: true, message: '请输入'}
+                ],
+                status: [
+                    {required: true, message: '请选择'}
+                ],
+            },
+            visible: false,
+            isSaveing: false,
+            formData:{},
+        }
+    },
+    methods:{
+        handleSuccess(data){
+            this.formData.agent_id = data.agent_id;
+            this.formData.store_id = data.store_id;
+        },
+        clearUser(){
+            this.formData.agent_id = "";
+            this.formData.store_id = "";
+        },
+        selectUser(){
+            this.$nextTick(() => {
+                this.$refs.storeData.open()
+            })
+        },
+        open(mode = 'add'){
+            this.mode = mode;
+            this.visible = true;
+            return this
+        },
+        //表单注入数据
+        setData(data){
+            this.formData = data;
+        },
+        async submit(){
+            var validate = await this.$refs.dialogForm.validate().catch(()=>{});
+            if(!validate){ return false }
+            let submitData = JSON.parse(JSON.stringify(this.formData));
+            this.isSaveing = true;
+            var resp = await this.$API.washType.save.post(submitData);
+            this.isSaveing = false;
+            if (resp.code == 0) {
+                return this.$message.error(resp.msg);
+            }
+            this.$message.success(resp.msg);
+            this.formData = {};
+            this.visible = false;
+            this.$emit("success");
+        }
+    }
+}
+</script>

+ 68 - 2
src/views/manage/wash/category/components/option.vue

@@ -1,3 +1,69 @@
 <template>
-    <div></div>
-</template>
+    <fieldset>
+        <legend>
+            <el-tag type="info">按需操作</el-tag>
+        </legend>
+        <div class="op-header">
+            <div class="left-panel">
+                <el-button type="success" icon="el-icon-plus" @click="table_add()">新增项目</el-button>
+                <el-button icon="el-icon-delete" @click="table_del()" :disabled="dataSelect.length>0?false:true">删除</el-button>
+                <el-button icon="el-icon-document" @click="table_batch_status(1)" :disabled="dataSelect.length>0?false:true">启用</el-button>
+                <el-button icon="el-icon-lock" @click="table_batch_status(0)" :disabled="dataSelect.length>0?false:true">禁用</el-button>
+                <!-- <el-button type="primary" icon="el-icon-download" @click="table_export()">导出</el-button> -->
+            </div>
+        </div>
+    </fieldset>
+    <formMain ref="formMain" @success="handleSuccess"></formMain>
+</template>
+
+<script>
+import formMain from './form';
+export default {
+    components: {
+        formMain
+    },
+    props: {
+        dataSelect: { type: Array, default: () => [] },
+        dataSelectFull: { type: Array, default: () => [] }
+    },
+    data(){
+        return {
+
+        }
+    },
+    methods: {
+        handleSuccess(){
+            this.$emit("success");
+        },
+        async table_del(){
+            if (this.dataSelect.length == 0) {
+                return this.$message.error("请选择修改数据")
+            }
+            let submitData = {"id":this.dataSelect,"type":"batch"};
+            var resp = await this.$API.washType.del.post(submitData);
+            if (resp.code == 0) {
+                return this.$message.error(resp.msg);
+            }
+            this.$message.success(resp.msg);
+            this.$emit("success");
+        },
+        async table_batch_status(status){
+            if (this.dataSelect.length == 0) {
+                return this.$message.error("请选择修改数据")
+            }
+            let submitData = {"id":this.dataSelect,"value":status,"field":"status","type":"batch"};
+            var resp = await this.$API.washType.batch.post(submitData);
+            if (resp.code == 0) {
+                return this.$message.error(resp.msg);
+            }
+            this.$message.success(resp.msg);
+            this.$emit("success");
+        },
+        table_add(){
+            this.$nextTick(() => {
+                this.$refs.formMain.open()
+            })
+        },
+    }
+}
+</script>

+ 2 - 2
src/views/manage/wash/category/components/search.vue

@@ -8,8 +8,8 @@
                 <div class="form-left">
                     <el-row :gutter="10">
                         <el-col :span="this.$store.state.global.ismobile?12:4">
-                            <el-input v-model="searchKey.title" placeholder="标题" clearable :style="{ width: '100%' }" @keyup.enter="searchForm()">
-                                <template #prepend>标题</template>
+                            <el-input v-model="searchKey.name" placeholder="名称" clearable :style="{ width: '100%' }" @keyup.enter="searchForm()">
+                                <template #prepend>名称</template>
                             </el-input>
                         </el-col>
                         <el-col :span="this.$store.state.global.ismobile?12:4">

+ 115 - 2
src/views/manage/wash/category/components/table.vue

@@ -1,3 +1,116 @@
 <template>
-    <div></div>
-</template>
+    <scTable ref="table" :apiObj="list.apiObj" :params="searchKey" @selectionChange="selectionChange" row-key="id" border>
+        <el-table-column type="selection" width="50" fixed="left"></el-table-column>
+        <el-table-column label="名称" prop="name"></el-table-column>
+        <el-table-column label="加价金额" prop="price" width="150">
+            <template #default="scope">
+                <span>¥ {{ scope.row.price }}</span>
+            </template>
+        </el-table-column>
+        <el-table-column label="所属代理" prop="price" width="150">
+            <template #default="scope">
+                <span v-if="scope.row.agent">{{ scope.row.agent.truename }}</span>
+                <span class="status-danger" v-else>未设置</span>
+            </template>
+        </el-table-column>
+        <el-table-column label="所属门店" prop="price" width="150">
+            <template #default="scope">
+                <span v-if="scope.row.store">{{ scope.row.store.truename }}</span>
+                <span class="status-danger" v-else>未设置</span>
+            </template>
+        </el-table-column>
+        <el-table-column label="状态" prop="login_at" width="100" align="center">
+            <template #default="scope">
+                <div class="status-success" v-if="scope.row.status==1"><sc-status-indicator type="success"></sc-status-indicator> 正常</div>
+                <div class="status-danger" v-else><sc-status-indicator type="danger"></sc-status-indicator> 禁用</div>
+            </template>
+        </el-table-column>
+        <el-table-column label="创建时间" prop="create_at" width="180"></el-table-column>
+        <el-table-column label="操作" width="150" align="right" fixed="right">
+            <template #default="scope">
+                <el-button-group>
+                    <el-button text type="warning" size="small" @click="table_passwd(scope.row)">编辑</el-button>
+                    <el-popconfirm title="确定删除吗?" @confirm="table_del(scope.row, scope.$index)">
+                        <template #reference>
+                            <el-button text type="danger" size="small">删除</el-button>
+                        </template>
+                    </el-popconfirm>                    
+                </el-button-group>
+            </template>
+        </el-table-column>
+    </scTable>
+    <formMain ref="formMain" @success="handleSuccess"></formMain>
+</template>
+
+<script>
+import formMain from './form';
+export default {
+    components: {
+        formMain
+    },
+    data(){
+        return {
+            list: {
+                apiObj: this.$API.washType.list
+            },
+            dataSelect:[],
+            dataSelectFull:[],
+            searchKey:{}
+        }
+    },
+    methods: {
+        async table_del(data){
+            var resp = await this.$API.washType.del.post({"id":data.id});
+            if (resp.code == 0) {
+                return this.$message.warning(resp.msg);
+            }
+            this.$message.success(resp.msg);
+            this.$refs.table.refresh()
+        },
+        table_user(row){
+            this.$nextTick(() => {
+                this.$refs.userMain.open("edit").setData(row)
+            })
+        },
+        refresh(){
+            this.$refs.table.refresh()
+        },
+        upData(data){
+            this.$refs.table.upData(data)
+        },
+        handleSuccess(){
+            this.$refs.table.refresh()
+        },
+        sortChange(event){
+            if (event.order) {
+                var data = {
+                    "field":event.prop,
+                    "order":event.order
+                }
+                this.$refs.table.upData(data)
+            } else {
+                this.$refs.table.reload(this.searchKey)
+            }
+            return ;
+        },
+        selectionChange(event){
+            this.dataSelect = [];
+            var arr = [];
+            var arrCompany = [];
+            event.forEach(function(val,index){
+                arr[index] = val.id;
+                arrCompany[index] = val;
+            });
+            this.dataSelectFull = arrCompany;
+            this.dataSelect = arr;
+            this.$emit("success",this.dataSelect);
+            this.$emit("successFull",this.dataSelectFull);
+        },
+        table_passwd(row){
+            this.$nextTick(() => {
+                this.$refs.formMain.open("edit").setData(row)
+            })
+        },
+    }
+}
+</script>

+ 78 - 0
src/views/manage/wash/goods/components/form.vue

@@ -0,0 +1,78 @@
+<template>
+    <el-dialog :title="titleMap[mode]" v-model="visible" :width="660" destroy-on-close @closed="$emit('closed')" :close-on-click-modal="false" :close-on-press-escape="false">
+        <el-form ref="dialogForm" :model="formData" :rules="rules" label-width="100px" label-position="top">
+            <el-form-item label="品类/商品名称" prop="name">
+                <el-input v-model="formData.name" clearable placeholder="请输入"></el-input>
+                <div class="el-form-item-msg"></div>
+            </el-form-item>
+            <el-form-item label="默认成本" prop="price">
+                <el-input v-model="formData.price" clearable placeholder="请输入">
+                    <template #append>元</template>
+                </el-input>
+                <div class="el-form-item-msg"></div>
+            </el-form-item>
+            <el-form-item label="状态" prop="status">
+                <el-radio-group v-model="formData.status">
+                    <el-radio-button :label="1">正常</el-radio-button>
+                    <el-radio-button :label="0">禁用</el-radio-button>
+                </el-radio-group>
+            </el-form-item>
+        </el-form>
+        <template #footer>
+            <el-button @click="visible = false">取 消</el-button>
+            <el-button type="primary" :loading="isSaveing" @click="submit()">提交</el-button>
+        </template>
+    </el-dialog>
+</template>
+
+<script>
+export default {
+    data(){
+        return {
+            loading: false,
+            mode:"add",
+            titleMap:{
+                add:"新增品类/商品",
+                edit:"编辑品类/商品"
+            },
+            rules:{
+                name: [
+                    {required: true, message: '请输入'}
+                ],
+                status: [
+                    {required: true, message: '请选择'}
+                ],
+            },
+            visible: false,
+            isSaveing: false,
+            formData:{},
+        }
+    },
+    methods:{
+        open(mode = 'add'){
+            this.mode = mode;
+            this.visible = true;
+            return this
+        },
+        //表单注入数据
+        setData(data){
+            this.formData = data;
+        },
+        async submit(){
+            var validate = await this.$refs.dialogForm.validate().catch(()=>{});
+            if(!validate){ return false }
+            let submitData = JSON.parse(JSON.stringify(this.formData));
+            this.isSaveing = true;
+            var resp = await this.$API.washGoods.save.post(submitData);
+            this.isSaveing = false;
+            if (resp.code == 0) {
+                return this.$message.error(resp.msg);
+            }
+            this.$message.success(resp.msg);
+            this.formData = {};
+            this.visible = false;
+            this.$emit("success");
+        }
+    }
+}
+</script>

+ 68 - 2
src/views/manage/wash/goods/components/option.vue

@@ -1,3 +1,69 @@
 <template>
-    <div></div>
-</template>
+    <fieldset>
+        <legend>
+            <el-tag type="info">按需操作</el-tag>
+        </legend>
+        <div class="op-header">
+            <div class="left-panel">
+                <el-button type="success" icon="el-icon-plus" @click="table_add()">新增品类</el-button>
+                <el-button icon="el-icon-delete" @click="table_del()" :disabled="dataSelect.length>0?false:true">删除</el-button>
+                <el-button icon="el-icon-document" @click="table_batch_status(1)" :disabled="dataSelect.length>0?false:true">启用</el-button>
+                <el-button icon="el-icon-lock" @click="table_batch_status(0)" :disabled="dataSelect.length>0?false:true">禁用</el-button>
+                <!-- <el-button type="primary" icon="el-icon-download" @click="table_export()">导出</el-button> -->
+            </div>
+        </div>
+    </fieldset>
+    <formMain ref="formMain" @success="handleSuccess"></formMain>
+</template>
+
+<script>
+import formMain from './form';
+export default {
+    components: {
+        formMain
+    },
+    props: {
+        dataSelect: { type: Array, default: () => [] },
+        dataSelectFull: { type: Array, default: () => [] }
+    },
+    data(){
+        return {
+
+        }
+    },
+    methods: {
+        handleSuccess(){
+            this.$emit("success");
+        },
+        async table_del(){
+            if (this.dataSelect.length == 0) {
+                return this.$message.error("请选择修改数据")
+            }
+            let submitData = {"id":this.dataSelect,"type":"batch"};
+            var resp = await this.$API.washGoods.del.post(submitData);
+            if (resp.code == 0) {
+                return this.$message.error(resp.msg);
+            }
+            this.$message.success(resp.msg);
+            this.$emit("success");
+        },
+        async table_batch_status(status){
+            if (this.dataSelect.length == 0) {
+                return this.$message.error("请选择修改数据")
+            }
+            let submitData = {"id":this.dataSelect,"value":status,"field":"status","type":"batch"};
+            var resp = await this.$API.washGoods.batch.post(submitData);
+            if (resp.code == 0) {
+                return this.$message.error(resp.msg);
+            }
+            this.$message.success(resp.msg);
+            this.$emit("success");
+        },
+        table_add(){
+            this.$nextTick(() => {
+                this.$refs.formMain.open()
+            })
+        },
+    }
+}
+</script>

+ 3 - 3
src/views/manage/wash/goods/components/search.vue

@@ -8,12 +8,12 @@
                 <div class="form-left">
                     <el-row :gutter="10">
                         <el-col :span="this.$store.state.global.ismobile?12:4">
-                            <el-input v-model="searchKey.title" placeholder="标题" clearable :style="{ width: '100%' }" @keyup.enter="searchForm()">
-                                <template #prepend>标题</template>
+                            <el-input v-model="searchKey.name" placeholder="名称" clearable :style="{ width: '100%' }" @keyup.enter="searchForm()">
+                                <template #prepend>名称</template>
                             </el-input>
                         </el-col>
                         <el-col :span="this.$store.state.global.ismobile?12:4">
-                            <el-select v-model="searchKey.status" clearable placeholder="请选择状态" @change="searchForm" :style="{width: '100%'}">
+                            <el-select v-model="searchKey.status" clearable placeholder="请选择状态" @change="searchForm" :style="{width: '100%'}" class="diy-select">
                                 <el-option :value="2" label="正常"></el-option>
                                 <el-option :value="1" label="已禁用"></el-option>
                                 <template #prefix>状态</template>

+ 104 - 2
src/views/manage/wash/goods/components/table.vue

@@ -1,3 +1,105 @@
 <template>
-    <div></div>
-</template>
+    <scTable ref="table" :apiObj="list.apiObj" :params="searchKey" @selectionChange="selectionChange" row-key="id" border>
+        <el-table-column type="selection" width="50" fixed="left"></el-table-column>
+        <el-table-column label="名称" prop="name"></el-table-column>
+        <el-table-column label="默认成本" prop="price" width="150">
+            <template #default="scope">
+                <span v-if="scope.row.price">¥ {{ scope.row.price }}</span>
+                <span class="status-danger" v-else>未设置</span>
+            </template>
+        </el-table-column>
+        <el-table-column label="状态" prop="login_at" width="100" align="center">
+            <template #default="scope">
+                <div class="status-success" v-if="scope.row.status==1"><sc-status-indicator type="success"></sc-status-indicator> 正常</div>
+                <div class="status-danger" v-else><sc-status-indicator type="danger"></sc-status-indicator> 禁用</div>
+            </template>
+        </el-table-column>
+        <el-table-column label="创建时间" prop="create_at" width="180"></el-table-column>
+        <el-table-column label="操作" width="150" align="right" fixed="right">
+            <template #default="scope">
+                <el-button-group>
+                    <el-button text type="warning" size="small" @click="table_passwd(scope.row)">编辑</el-button>
+                    <el-popconfirm title="确定删除吗?" @confirm="table_del(scope.row, scope.$index)">
+                        <template #reference>
+                            <el-button text type="danger" size="small">删除</el-button>
+                        </template>
+                    </el-popconfirm>                    
+                </el-button-group>
+            </template>
+        </el-table-column>
+    </scTable>
+    <formMain ref="formMain" @success="handleSuccess"></formMain>
+</template>
+
+<script>
+import formMain from './form';
+export default {
+    components: {
+        formMain
+    },
+    data(){
+        return {
+            list: {
+                apiObj: this.$API.washGoods.list
+            },
+            dataSelect:[],
+            dataSelectFull:[],
+            searchKey:{}
+        }
+    },
+    methods: {
+        async table_del(data){
+            var resp = await this.$API.washGoods.del.post({"id":data.id});
+            if (resp.code == 0) {
+                return this.$message.warning(resp.msg);
+            }
+            this.$message.success(resp.msg);
+            this.$refs.table.refresh()
+        },
+        table_user(row){
+            this.$nextTick(() => {
+                this.$refs.userMain.open("edit").setData(row)
+            })
+        },
+        refresh(){
+            this.$refs.table.refresh()
+        },
+        upData(data){
+            this.$refs.table.upData(data)
+        },
+        handleSuccess(){
+            this.$refs.table.refresh()
+        },
+        sortChange(event){
+            if (event.order) {
+                var data = {
+                    "field":event.prop,
+                    "order":event.order
+                }
+                this.$refs.table.upData(data)
+            } else {
+                this.$refs.table.reload(this.searchKey)
+            }
+            return ;
+        },
+        selectionChange(event){
+            this.dataSelect = [];
+            var arr = [];
+            var arrCompany = [];
+            event.forEach(function(val,index){
+                arr[index] = val.id;
+                arrCompany[index] = val;
+            });
+            this.dataSelectFull = arrCompany;
+            this.dataSelect = arr;
+            this.$emit("success",this.dataSelect);
+            this.$emit("successFull",this.dataSelectFull);
+        },
+        table_passwd(row){
+            this.$nextTick(() => {
+                this.$refs.formMain.open("edit").setData(row)
+            })
+        },
+    }
+}
+</script>

+ 0 - 1
src/views/manage/wash/goods/index.vue

@@ -27,7 +27,6 @@ export default {
     },
     data(){
         return {
-            activeName:"first",
             menuData:[],
             searchKey:{},
             dataSelect:[],

+ 566 - 2
src/views/merchant/dashboard/index.vue

@@ -1,3 +1,567 @@
 <template>
-    <div></div>
-</template>
+    <div v-if="pageLoading">
+		<el-main>
+			<el-card shadow="never">
+				<el-skeleton :rows="5"></el-skeleton>
+			</el-card>
+			<el-card shadow="never" style="margin-top: 15px;">
+				<el-skeleton></el-skeleton>
+			</el-card>
+		</el-main>
+	</div>
+    <el-main>
+        <div class="card-news mt0">
+            <div class="news-title">{{ $t('store.dashboard.orderTitle') }}</div>
+            <div class="total-panel">
+                <div class="panel-item" style="background-color: rgb(235, 241, 255);">
+                    <div class="item-warp">
+                        <div class="left">
+                            <div class="title">订单数</div>
+                            <div class="number">{{ dataInfo.customer ? dataInfo.customer:'0' }}</div>
+                            <div class="desc">{{ $t('store.dashboard.yestoday') }} 0</div>
+                        </div>
+                        <div class="right"><img src="@/assets/image/wave-1-icon.png" /></div>
+                    </div>
+                    <div class="item-wave"><img src="@/assets/image/wave-1.png" /></div>
+                </div>
+                <div class="panel-item" style="background-color: rgb(240, 235, 255);">
+                    <div class="item-warp">
+                        <div class="left">
+                            <div class="title">新增客户</div>
+                            <div class="number">{{ dataInfo.customer ? dataInfo.customer:'0' }}</div>
+                            <div class="desc">{{ $t('store.dashboard.yestoday') }} 0</div>
+                        </div>
+                        <div class="right"><img src="@/assets/image/wave-2-icon.png" /></div>
+                    </div>
+                    <div class="item-wave"><img src="@/assets/image/wave-2.png" /></div>
+                </div>
+                <div class="panel-item" style="background-color: rgb(255, 241, 214);">
+                    <div class="item-warp">
+                        <div class="left">
+                            <div class="title">收衣数</div>
+                            <div class="number">{{ dataInfo.customer ? dataInfo.customer:'0' }}</div>
+                            <div class="desc">{{ $t('store.dashboard.yestoday') }} 0</div>
+                        </div>
+                        <div class="right"><img src="@/assets/image/wave-3-icon.png" /></div>
+                    </div>
+                    <div class="item-wave"><img src="@/assets/image/wave-3.png" /></div>
+                </div>
+                <div class="panel-item" style="background-color: rgb(250, 230, 244);">
+                    <div class="item-warp">
+                        <div class="left">
+                            <div class="title">取衣数</div>
+                            <div class="number">{{ dataInfo.customer ? dataInfo.customer:'0' }}</div>
+                            <div class="desc">{{ $t('store.dashboard.yestoday') }} 0</div>
+                        </div>
+                        <div class="right"><img src="@/assets/image/wave-4-icon.png" /></div>
+                    </div>
+                    <div class="item-wave"><img src="@/assets/image/wave-4.png" /></div>
+                </div>
+            </div>
+        </div>
+        <el-row :gutter="20">
+            <el-col :span="this.$store.state.global.ismobile?24:20" :xs="24">
+                <div class="card-news mt10">
+                    <div class="news-title">门店监控</div>
+                    <div class="total-panel-sub">
+                        <el-row :gutter="20">
+                            <el-col :span="this.$store.state.global.ismobile?24:12" :xs="24">
+                                <div class="sub-card mt10">
+                                    <div class="title">今日数据</div>
+                                    <div class="sub-content">
+                                        <div class="sub-box">
+                                            <div class="row1"><img src="@/assets/image/store1.png" /><span>今日收衣件数</span></div>
+                                            <div class="row2">0</div>
+                                            <div class="row3">{{ $t('store.dashboard.yestoday') }} 0</div>
+                                        </div>
+                                        <div class="sub-box">
+                                            <div class="row1"><img src="@/assets/image/store2.png" /><span>今日已支付(元)</span></div>
+                                            <div class="row2">0</div>
+                                            <div class="row3">{{ $t('store.dashboard.yestoday') }} 0</div>
+                                        </div>
+                                        <div class="sub-box">
+                                            <div class="row1"><img src="@/assets/image/store3.png" /><span>今日订单数</span></div>
+                                            <div class="row2">0</div>
+                                            <div class="row3">{{ $t('store.dashboard.yestoday') }} 0</div>
+                                        </div>
+                                    </div>
+                                </div>
+                            </el-col>
+                            <el-col :span="this.$store.state.global.ismobile?24:12" :xs="24">
+                                <div class="sub-card mt10">
+                                    <div class="title">过往数据</div>
+                                    <div class="sub-content">
+                                        <div class="sub-box" style="width: calc(50% - 12px);">
+                                            <div class="row1"><img src="@/assets/image/store4.png" /><span>本月订单数</span></div>
+                                            <div class="row2">0</div>
+                                            <div class="row3">{{ $t('store.dashboard.yestoday') }} 0</div>
+                                        </div>
+                                        <div class="sub-box" style="width: calc(50% - 12px);">
+                                            <div class="row1"><img src="@/assets/image/store5.png" /><span>累计订单数</span></div>
+                                            <div class="row2">0</div>
+                                            <div class="row3">{{ $t('store.dashboard.yestoday') }} 0</div>
+                                        </div>
+                                    </div>
+                                </div>
+                            </el-col>
+                        </el-row>
+                    </div>
+                </div>
+                <div class="card-news mt10">
+                    <div class="news-title">工厂监控</div>
+                    <div class="total-panel">
+                        <div class="panel-item bg-gray" :style="{backgroundImage:'url('+blueBg+')'}">
+                            <div class="item-warp img">
+                                <div class="left">
+                                    <div class="title">今日入厂</div>
+                                    <div class="number">{{ dataInfo.customer ? dataInfo.customer:'0' }}<span>单</span></div>
+                                    <div class="desc">总件数:0</div>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="panel-item bg-gray">
+                            <div class="item-warp">
+                                <div class="left">
+                                    <div class="title">在厂量</div>
+                                    <div class="number">{{ dataInfo.customer ? dataInfo.customer:'0' }}<span>单</span></div>
+                                    <div class="desc">总件数:0</div>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="panel-item bg-gray">
+                            <div class="item-warp">
+                                <div class="left">
+                                    <div class="title">近一个月待入厂量</div>
+                                    <div class="number">{{ dataInfo.customer ? dataInfo.customer:'0' }}<span>单</span></div>
+                                    <div class="desc">总件数:0</div>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="panel-item bg-gray">
+                            <div class="item-warp">
+                                <div class="left">
+                                    <div class="title">待预检量</div>
+                                    <div class="number">{{ dataInfo.customer ? dataInfo.customer:'0' }}<span>单</span></div>
+                                    <div class="desc">总件数:0</div>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="panel-item bg-gray">
+                            <div class="item-warp">
+                                <div class="left">
+                                    <div class="title">今日出厂</div>
+                                    <div class="number">{{ dataInfo.customer ? dataInfo.customer:'0' }}<span>单</span></div>
+                                    <div class="desc">总件数:0</div>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                    <!--  -->
+                </div>
+                <div class="card-news mt10">
+                    <div class="news-title">时效监控</div>
+                    <div class="total-panel-sub">
+                        <el-row :gutter="20">
+                            <el-col :span="this.$store.state.global.ismobile?12:6" :xs="12">
+                                <div class="sub-card mt10">
+                                    <div class="title red">未入厂</div>
+                                    <div class="sub-content">
+                                        <div class="sub-box" style="width: calc(50% - 12px);">
+                                            <div class="row1"><span>近30天超10H未入厂</span></div>
+                                            <div class="row2 red">0<span>单</span></div>
+                                        </div>
+                                        <div class="sub-box" style="width: calc(50% - 12px);">
+                                            <div class="row1"><span>近30天超18H未入厂</span></div>
+                                            <div class="row2 red">0<span>单</span></div>
+                                        </div>
+                                    </div>
+                                </div>
+                            </el-col>
+                            <el-col :span="this.$store.state.global.ismobile?12:6" :xs="12">
+                                <div class="sub-card mt10">
+                                    <div class="title red">未拆包</div>
+                                    <div class="sub-content">
+                                        <div class="sub-box" style="width: calc(50% - 12px);">
+                                            <div class="row1"><span>超24H未拆包</span></div>
+                                            <div class="row2 red">0<span>单</span></div>
+                                        </div>
+                                        <div class="sub-box" style="width: calc(50% - 12px);">
+                                            <div class="row1"><span>超72H未拆包</span></div>
+                                            <div class="row2 red">0<span>单</span></div>
+                                        </div>
+                                    </div>
+                                </div>
+                            </el-col>
+                            <el-col :span="this.$store.state.global.ismobile?12:6" :xs="12">
+                                <div class="sub-card mt10">
+                                    <div class="title red">在厂超时</div>
+                                    <div class="sub-content">
+                                        <div class="sub-box" style="width: calc(50% - 12px);">
+                                            <div class="row1"><span>在厂超4天</span></div>
+                                            <div class="row2 red">0<span>件</span></div>
+                                        </div>
+                                        <div class="sub-box" style="width: calc(50% - 12px);">
+                                            <div class="row1"><span>在厂超6天</span></div>
+                                            <div class="row2 red">0<span>件</span></div>
+                                        </div>
+                                    </div>
+                                </div>
+                            </el-col>
+                            <el-col :span="this.$store.state.global.ismobile?12:6" :xs="12">
+                                <div class="sub-card mt10">
+                                    <div class="title red">未取件</div>
+                                    <div class="sub-content">
+                                        <div class="sub-box" style="width: calc(100% - 24px);">
+                                            <div class="row1"><span>超24H未取件</span></div>
+                                            <div class="row2 red">0<span>单</span></div>
+                                        </div>
+                                    </div>
+                                </div>
+                            </el-col>
+                        </el-row>
+                    </div>
+                    <!--  -->
+                </div>
+                <div class="card-news mt10">
+                    <div class="news-title">服务预警</div>
+                    <div class="total-panel-sub">
+                        <el-row :gutter="20">
+                            <el-col :span="12" :xs="24">
+                                <div class="service-item mt10">
+                                    <img src="@/assets/image/icon-duanxintixing.png" />
+                                    <div class="item-sub">
+                                        <h3>短信提醒</h3>
+                                        <p>剩余短信数量</p>
+                                    </div>
+                                    <div class="value">646</div>
+                                    <div class="right-btn"><el-button type="primary">立即购买</el-button></div>
+                                </div>
+                            </el-col>
+                            <el-col :span="12" :xs="24">
+                                <div class="service-item mt10">
+                                    <img src="@/assets/image/icon-duanxintixing.png" />
+                                    <div class="item-sub">
+                                        <h3>付费到期提醒</h3>
+                                        <p>剩余付费使用天数</p>
+                                    </div>
+                                    <div class="value">315天</div>
+                                    <div class="right-btn"><el-button type="primary">立即续费</el-button></div>
+                                </div>
+                            </el-col>
+                        </el-row>
+                    </div>
+                </div>
+            </el-col>
+            <el-col :span="this.$store.state.global.ismobile?24:4" :xs="24">
+                <div class="card-news mt10">
+                    <div class="news-title">系统动态</div>
+                    <div class="card-news-sub">
+                        <div class="date-title">
+                            <el-link :underline="false">1月16日系统升级通知</el-link>
+                            <div class="date-time">01-16</div>
+                        </div>
+                        <div class="date-title">
+                            <el-link :underline="false">12月5日系统升级通知</el-link>
+                            <div class="date-time">12-05</div>
+                        </div>
+                        <div class="date-title">
+                            <el-link :underline="false">9.19日系统升级通知</el-link>
+                            <div class="date-time">09-19</div>
+                        </div>
+                    </div>
+                </div>
+                <div class="card-news mt10">
+                    <div class="news-title">客服热线</div>
+                    <div class="service-tel">
+                        <img src="@/assets/image/tel.png" />
+                        <span>{{baseData.tel?baseData.tel:'-'}}</span>
+                    </div>
+                </div>
+            </el-col>
+        </el-row>
+
+    </el-main>
+</template>
+
+<script>
+import blueBg from "@/assets/image/blue_bg.png";
+export default {
+    name: "dashboard",
+    data(){
+        return {
+            pageLoading: false,
+            dashboard: '0',
+            dataInfo:{},
+            blueBg,
+            baseData:{}
+        }
+    },
+    created(){
+        var baseData = this.$TOOL.data.get("AGENT_SERVICE");
+        this.baseData = baseData;
+    }
+}
+</script>
+
+<style>
+.myMods {list-style:none;margin:-10px;}
+.myMods li {display: inline-block;width: 11.5%;height:100px;vertical-align: top;transition:all 0.3s ease;margin:10px;border-radius:5px;color: #333;}
+.myMods li:hover {opacity: 0.8;}
+.myMods li a {width: 100%;height: 100%;padding:10px;display: flex;flex-direction: column;align-items: center;justify-content: center;text-align: center;color: #333;}
+.myMods li i {font-size: 26px;color: #333;}
+.myMods li p {font-size: 12px;color: #333;margin-top: 10px;width: 100%;white-space:nowrap;text-overflow:ellipsis;overflow: hidden;}
+.mt0 {
+    margin-top: 0;
+}
+.service-item {
+    border: 1px solid #EAE9F0;
+    padding: 12px 24px;
+    border-radius: 6px;
+    display: flex;
+    align-items: center;
+    flex: 1;
+}
+.service-item .right-btn {
+    margin-left: auto;
+}
+.service-item img {
+    width: 44px;
+    height: 54px;
+    margin-right: 20px;
+}
+.service-item h3 {
+    font-size: 14px;
+    color: #000000d9;
+    margin-bottom: 8px;
+}
+.service-item p {
+    font-size: 13px;
+    color: #333333d9;
+}
+.service-item .value{
+    font-size: 24px;
+    color: #f64945;
+    font-weight: 700;
+    margin-left: 26px;
+}
+.service-tel {
+    display: flex;
+    align-items: center;
+    margin-top: 20px;
+}
+.service-tel img{
+    width: 32px;
+    height: 32px;
+    margin-right: 12px;
+}
+.service-tel span{
+    font-size: 20px;
+    font-weight: 500;
+    color: #35f;
+}
+.total-panel .panel-item.bg-gray .item-warp .left{
+    padding: 12px 24px;
+}
+.total-panel .panel-item.bg-gray {
+    background-color: #F7F9FC;
+    height: 104px;
+    background-size: cover;
+    background-position: center;
+    background-repeat: no-repeat;
+    color: #fff;
+}
+.total-panel .panel-item.bg-gray .item-warp.img .title {color: #fff;}
+.total-panel .panel-item.bg-gray .item-warp.img .number{color: #fff;}
+.total-panel .panel-item.bg-gray .item-warp.img .desc{color: #fff;}
+.total-panel .panel-item.bg-gray .number{
+    font-size: 24px;
+}
+.total-panel .panel-item.bg-gray .number span{
+    font-size: 14px;
+    margin-left: 10px;
+}
+.total-panel .panel-item.bg-gray .title{
+    margin-bottom: 7px;
+}
+.total-panel-sub .sub-card {
+    border: 1px solid #EAE9F0;
+}
+.total-panel-sub .sub-card .title{
+    font-size: 14px;
+    color: #000000;
+    font-weight: bold;
+    margin: 22px 0 12px 22px;
+}
+.total-panel-sub .sub-card .title.red{
+    display: flex;
+    align-items: center;
+}
+.total-panel-sub .sub-card .title.red::before{
+    content: "";
+    display: block;
+    width: 4px;
+    height: 4px;
+    border-radius: 4px;
+    background-color: #f64945;
+    margin-right: 6px;
+}
+.total-panel-sub .sub-card .sub-content{
+    display: flex;
+    align-items: stretch;
+    justify-content: space-between;
+    padding: 0px 22px 22px 22px;
+}
+.sub-box {
+    width: calc((100% - 24px) / 3);
+    padding: 12px 16px 12px 16px;
+    background: #FFFFFF;
+    box-shadow: 0px 0px 10px 0px rgba(203, 203, 203, 0.25);
+    border-radius: 6px;
+    box-sizing: border-box;
+}
+.sub-box .row1 {
+    display: flex;
+    align-items: center;
+    line-height: 1;
+    margin-bottom: 10px;
+}
+.sub-box .row2 {
+    font-size: 24px;
+    color: #333333;
+    font-weight: bold;
+    margin-bottom: 10px;
+}
+.sub-box .row2.red{
+    color: #f00;
+}
+.sub-box .row2 span {
+    margin-left: 10px;
+    font-size: 14px;
+}
+.sub-box .row3 {
+    font-size: 14px;
+    color: #666666;
+}
+.sub-box .row1 img{
+    width: 15px;
+    height: auto;
+    margin-right: 8px;
+}
+.sub-box .row1 span{
+    font-size: 14px;
+    color: #333333;
+}
+.total-panel {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    margin-top: 16px;
+}
+.total-panel .panel-item{
+    width: calc((100% - 88px)/4);
+    height: 130px;
+    box-shadow: rgba(0, 0, 0, 0.05) 0px 0px 8px;
+    position: relative;
+    border-radius: 6px;
+    overflow: hidden;
+}
+.total-panel .panel-item .item-warp .left {
+    padding:16px 0px 0px 23px;
+}
+.total-panel .panel-item .item-warp .right {
+    width: 32px;
+    height: 32px;
+    margin: 13px 14px 0px 0px;
+}
+.total-panel .panel-item .item-warp .right img{
+    width:100%;
+    height:100%;
+    display:block;
+}
+.total-panel .panel-item .item-warp{
+    position: relative;
+    z-index: 10;
+    display: flex;
+    justify-content: space-between;
+}
+.total-panel .panel-item .item-wave {
+    position: absolute;
+    left: 0px;
+    right: 0px;
+    bottom: 0px;
+    width: 100%;
+    height: auto;
+    z-index: 9;
+}
+.total-panel .panel-item .item-wave img {
+    width: 100%;
+    height: 100%;
+}
+.total-panel .panel-item .title{
+    font-size: 14px;
+    color: rgb(51, 51, 51);
+    margin-bottom: 18px;
+    font-weight: 500;
+}
+.total-panel .panel-item .number{
+    font-size: 26px;
+    margin-bottom: 7px;
+    font-weight: 700;
+    color: rgb(51, 51, 51);
+}
+.total-panel .panel-item .desc{
+    font-size: 13px;
+    color: rgb(102, 102, 102);
+}
+.total-panel .panel-item .number span{
+    font-size: 16px;
+    font-weight: normal;
+}
+.panel-line{
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    height: 100%;
+}
+.panel-line span{
+    width: 1px;
+    background-color: #f0f0f0;
+    height: 60%;
+    display: block;
+}
+.card-news{
+    background-color: #fff;
+    padding: 20px;
+    border-radius: 5px;
+}
+.news-title{
+    font-size: 16px;
+    color: #000;
+    font-weight: bold;
+    margin-bottom: 10px;
+    display: flex;
+    align-items: center;
+}
+.news-title::before{
+    content: "";
+    width: 4px;
+    height: 16px;
+    display: block;
+    background-color: var(--el-color-primary);;
+    margin-right: 8px;
+}
+.date-title{display:flex; align-items:center;line-height:40px;position: relative;}
+.date-title .dot{
+    width: 5px;
+    height: 5px;
+    background: var(--el-color-primary);
+    border-radius: 100%;
+    margin-right: 10px;
+}
+.date-time{
+    font-size: 12px;
+    color: #666;
+    margin-left: auto;
+    margin-right: 0;
+}
+</style>

+ 485 - 2
src/views/store/dashboard/index.vue

@@ -1,3 +1,486 @@
 <template>
-    <div></div>
-</template>
+    <div v-if="pageLoading">
+		<el-main>
+			<el-card shadow="never">
+				<el-skeleton :rows="5"></el-skeleton>
+			</el-card>
+			<el-card shadow="never" style="margin-top: 15px;">
+				<el-skeleton></el-skeleton>
+			</el-card>
+		</el-main>
+	</div>
+    <el-main>
+        <div class="card-news mt0">
+            <div class="news-title">{{ $t('manage.dashboard.orderTitle') }}</div>
+            <div class="total-panel">
+                <div class="panel-item" style="background-color: rgb(235, 241, 255);">
+                    <div class="item-warp">
+                        <div class="left">
+                            <div class="title">订单数</div>
+                            <div class="number">{{ dataInfo.customer ? dataInfo.customer:'0' }}</div>
+                            <div class="desc">{{ $t('store.dashboard.yestoday') }} 0</div>
+                        </div>
+                        <div class="right"><img src="@/assets/image/wave-1-icon.png" /></div>
+                    </div>
+                    <div class="item-wave"><img src="@/assets/image/wave-1.png" /></div>
+                </div>
+                <div class="panel-item" style="background-color: rgb(240, 235, 255);">
+                    <div class="item-warp">
+                        <div class="left">
+                            <div class="title">新增客户</div>
+                            <div class="number">{{ dataInfo.customer ? dataInfo.customer:'0' }}</div>
+                            <div class="desc">{{ $t('store.dashboard.yestoday') }} 0</div>
+                        </div>
+                        <div class="right"><img src="@/assets/image/wave-2-icon.png" /></div>
+                    </div>
+                    <div class="item-wave"><img src="@/assets/image/wave-2.png" /></div>
+                </div>
+                <div class="panel-item" style="background-color: rgb(255, 241, 214);">
+                    <div class="item-warp">
+                        <div class="left">
+                            <div class="title">收衣数</div>
+                            <div class="number">{{ dataInfo.customer ? dataInfo.customer:'0' }}</div>
+                            <div class="desc">{{ $t('store.dashboard.yestoday') }} 0</div>
+                        </div>
+                        <div class="right"><img src="@/assets/image/wave-3-icon.png" /></div>
+                    </div>
+                    <div class="item-wave"><img src="@/assets/image/wave-3.png" /></div>
+                </div>
+                <div class="panel-item" style="background-color: rgb(250, 230, 244);">
+                    <div class="item-warp">
+                        <div class="left">
+                            <div class="title">取衣数</div>
+                            <div class="number">{{ dataInfo.customer ? dataInfo.customer:'0' }}</div>
+                            <div class="desc">{{ $t('store.dashboard.yestoday') }} 0</div>
+                        </div>
+                        <div class="right"><img src="@/assets/image/wave-4-icon.png" /></div>
+                    </div>
+                    <div class="item-wave"><img src="@/assets/image/wave-4.png" /></div>
+                </div>
+            </div>
+        </div>
+        <el-row :gutter="20">
+            <el-col :span="this.$store.state.global.ismobile?24:20" :xs="24">
+                <div class="card-news mt10">
+                    <div class="news-title">门店监控</div>
+                    <div class="total-panel-sub">
+                        <el-row :gutter="20">
+                            <el-col :span="this.$store.state.global.ismobile?24:12" :xs="24">
+                                <div class="sub-card mt10">
+                                    <div class="title">今日数据</div>
+                                    <div class="sub-content">
+                                        <div class="sub-box">
+                                            <div class="row1"><img src="@/assets/image/store1.png" /><span>今日收衣件数</span></div>
+                                            <div class="row2">0</div>
+                                            <div class="row3">{{ $t('store.dashboard.yestoday') }} 0</div>
+                                        </div>
+                                        <div class="sub-box">
+                                            <div class="row1"><img src="@/assets/image/store2.png" /><span>今日已支付(元)</span></div>
+                                            <div class="row2">0</div>
+                                            <div class="row3">{{ $t('store.dashboard.yestoday') }} 0</div>
+                                        </div>
+                                        <div class="sub-box">
+                                            <div class="row1"><img src="@/assets/image/store3.png" /><span>今日订单数</span></div>
+                                            <div class="row2">0</div>
+                                            <div class="row3">{{ $t('store.dashboard.yestoday') }} 0</div>
+                                        </div>
+                                    </div>
+                                </div>
+                            </el-col>
+                            <el-col :span="this.$store.state.global.ismobile?24:12" :xs="24">
+                                <div class="sub-card mt10">
+                                    <div class="title">过往数据</div>
+                                    <div class="sub-content">
+                                        <div class="sub-box" style="width: calc(50% - 12px);">
+                                            <div class="row1"><img src="@/assets/image/store4.png" /><span>本月订单数</span></div>
+                                            <div class="row2">0</div>
+                                            <div class="row3">{{ $t('store.dashboard.yestoday') }} 0</div>
+                                        </div>
+                                        <div class="sub-box" style="width: calc(50% - 12px);">
+                                            <div class="row1"><img src="@/assets/image/store5.png" /><span>累计订单数</span></div>
+                                            <div class="row2">0</div>
+                                            <div class="row3">{{ $t('store.dashboard.yestoday') }} 0</div>
+                                        </div>
+                                    </div>
+                                </div>
+                            </el-col>
+                        </el-row>
+                    </div>
+                </div>
+                <div class="card-news mt10">
+                    <div class="news-title">洗衣地址监控</div>
+                    <div class="total-panel">
+                        <div class="panel-item bg-gray" :style="{backgroundImage:'url('+blueBg+')'}">
+                            <div class="item-warp img">
+                                <div class="left">
+                                    <div class="title">今日入库</div>
+                                    <div class="number">{{ dataInfo.customer ? dataInfo.customer:'0' }}<span>单</span></div>
+                                    <div class="desc">总件数:0</div>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="panel-item bg-gray">
+                            <div class="item-warp">
+                                <div class="left">
+                                    <div class="title">在库量</div>
+                                    <div class="number">{{ dataInfo.customer ? dataInfo.customer:'0' }}<span>单</span></div>
+                                    <div class="desc">总件数:0</div>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="panel-item bg-gray">
+                            <div class="item-warp">
+                                <div class="left">
+                                    <div class="title">近一个月待入库量</div>
+                                    <div class="number">{{ dataInfo.customer ? dataInfo.customer:'0' }}<span>单</span></div>
+                                    <div class="desc">总件数:0</div>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="panel-item bg-gray">
+                            <div class="item-warp">
+                                <div class="left">
+                                    <div class="title">待预检量</div>
+                                    <div class="number">{{ dataInfo.customer ? dataInfo.customer:'0' }}<span>单</span></div>
+                                    <div class="desc">总件数:0</div>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="panel-item bg-gray">
+                            <div class="item-warp">
+                                <div class="left">
+                                    <div class="title">今日出库</div>
+                                    <div class="number">{{ dataInfo.customer ? dataInfo.customer:'0' }}<span>单</span></div>
+                                    <div class="desc">总件数:0</div>
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                    <!--  -->
+                </div>
+                
+            </el-col>
+            <el-col :span="this.$store.state.global.ismobile?24:4" :xs="24">
+                <div class="card-news mt10">
+                    <div class="news-title">系统动态</div>
+                    <div class="card-news-sub">
+                        <div class="date-title">
+                            <el-link :underline="false">1月16日系统升级通知</el-link>
+                            <div class="date-time">01-16</div>
+                        </div>
+                        <div class="date-title">
+                            <el-link :underline="false">12月5日系统升级通知</el-link>
+                            <div class="date-time">12-05</div>
+                        </div>
+                        <div class="date-title">
+                            <el-link :underline="false">9.19日系统升级通知</el-link>
+                            <div class="date-time">09-19</div>
+                        </div>
+                    </div>
+                </div>
+                <div class="card-news mt10">
+                    <div class="news-title">客服热线</div>
+                    <div class="service-tel">
+                        <img src="@/assets/image/tel.png" />
+                        <span>{{baseData?baseData.tel:'-'}}</span>
+                    </div>
+                </div>
+            </el-col>
+        </el-row>
+
+    </el-main>
+</template>
+
+<script>
+import blueBg from "@/assets/image/blue_bg.png";
+export default {
+    name: "dashboard",
+    data(){
+        return {
+            pageLoading: false,
+            dashboard: '0',
+            dataInfo:{},
+            blueBg,
+            baseData:{}
+        }
+    },
+    created(){
+        var baseData = this.$TOOL.data.get("AGENT_SERVICE");
+        this.baseData = baseData;
+    }
+}
+</script>
+
+<style>
+.myMods {list-style:none;margin:-10px;}
+.myMods li {display: inline-block;width: 11.5%;height:100px;vertical-align: top;transition:all 0.3s ease;margin:10px;border-radius:5px;color: #333;}
+.myMods li:hover {opacity: 0.8;}
+.myMods li a {width: 100%;height: 100%;padding:10px;display: flex;flex-direction: column;align-items: center;justify-content: center;text-align: center;color: #333;}
+.myMods li i {font-size: 26px;color: #333;}
+.myMods li p {font-size: 12px;color: #333;margin-top: 10px;width: 100%;white-space:nowrap;text-overflow:ellipsis;overflow: hidden;}
+.mt0 {
+    margin-top: 0;
+}
+.service-item {
+    border: 1px solid #EAE9F0;
+    padding: 12px 24px;
+    border-radius: 6px;
+    display: flex;
+    align-items: center;
+    flex: 1;
+}
+.service-item .right-btn {
+    margin-left: auto;
+}
+.service-item img {
+    width: 44px;
+    height: 54px;
+    margin-right: 20px;
+}
+.service-item h3 {
+    font-size: 14px;
+    color: #000000d9;
+    margin-bottom: 8px;
+}
+.service-item p {
+    font-size: 13px;
+    color: #333333d9;
+}
+.service-item .value{
+    font-size: 24px;
+    color: #f64945;
+    font-weight: 700;
+    margin-left: 26px;
+}
+.service-tel {
+    display: flex;
+    align-items: center;
+    margin-top: 20px;
+}
+.service-tel img{
+    width: 32px;
+    height: 32px;
+    margin-right: 12px;
+}
+.service-tel span{
+    font-size: 20px;
+    font-weight: 500;
+    color: #35f;
+}
+.total-panel .panel-item.bg-gray .item-warp .left{
+    padding: 12px 24px;
+}
+.total-panel .panel-item.bg-gray {
+    background-color: #F7F9FC;
+    height: 104px;
+    background-size: cover;
+    background-position: center;
+    background-repeat: no-repeat;
+    color: #fff;
+}
+.total-panel .panel-item.bg-gray .item-warp.img .title {color: #fff;}
+.total-panel .panel-item.bg-gray .item-warp.img .number{color: #fff;}
+.total-panel .panel-item.bg-gray .item-warp.img .desc{color: #fff;}
+.total-panel .panel-item.bg-gray .number{
+    font-size: 24px;
+}
+.total-panel .panel-item.bg-gray .number span{
+    font-size: 14px;
+    margin-left: 10px;
+}
+.total-panel .panel-item.bg-gray .title{
+    margin-bottom: 7px;
+}
+.total-panel-sub .sub-card {
+    border: 1px solid #EAE9F0;
+}
+.total-panel-sub .sub-card .title{
+    font-size: 14px;
+    color: #000000;
+    font-weight: bold;
+    margin: 22px 0 12px 22px;
+}
+.total-panel-sub .sub-card .title.red{
+    display: flex;
+    align-items: center;
+}
+.total-panel-sub .sub-card .title.red::before{
+    content: "";
+    display: block;
+    width: 4px;
+    height: 4px;
+    border-radius: 4px;
+    background-color: #f64945;
+    margin-right: 6px;
+}
+.total-panel-sub .sub-card .sub-content{
+    display: flex;
+    align-items: stretch;
+    justify-content: space-between;
+    padding: 0px 22px 22px 22px;
+}
+.sub-box {
+    width: calc((100% - 24px) / 3);
+    padding: 12px 16px 12px 16px;
+    background: #FFFFFF;
+    box-shadow: 0px 0px 10px 0px rgba(203, 203, 203, 0.25);
+    border-radius: 6px;
+    box-sizing: border-box;
+}
+.sub-box .row1 {
+    display: flex;
+    align-items: center;
+    line-height: 1;
+    margin-bottom: 10px;
+}
+.sub-box .row2 {
+    font-size: 24px;
+    color: #333333;
+    font-weight: bold;
+    margin-bottom: 10px;
+}
+.sub-box .row2.red{
+    color: #f00;
+}
+.sub-box .row2 span {
+    margin-left: 10px;
+    font-size: 14px;
+}
+.sub-box .row3 {
+    font-size: 14px;
+    color: #666666;
+}
+.sub-box .row1 img{
+    width: 15px;
+    height: auto;
+    margin-right: 8px;
+}
+.sub-box .row1 span{
+    font-size: 14px;
+    color: #333333;
+}
+.total-panel {
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    margin-top: 16px;
+    gap: 10px;
+}
+.total-panel .panel-item{
+    width: calc((100% - 18px)/4);
+    height: 130px;
+    box-shadow: rgba(0, 0, 0, 0.05) 0px 0px 8px;
+    position: relative;
+    border-radius: 6px;
+    overflow: hidden;
+    background-color: rgba(166, 166, 166, 0.5);
+}
+.total-panel .panel-item .item-warp .left {
+    padding:16px 0px 0px 23px;
+}
+.total-panel .panel-item .item-warp .right {
+    width: 32px;
+    height: 32px;
+    margin: 13px 14px 0px 0px;
+}
+.total-panel .panel-item .item-warp .right img{
+    width:100%;
+    height:100%;
+    display:block;
+}
+.total-panel .panel-item .item-warp{
+    position: relative;
+    z-index: 10;
+    display: flex;
+    justify-content: space-between;
+}
+.total-panel .panel-item .item-wave {
+    position: absolute;
+    left: 0px;
+    right: 0px;
+    bottom: 0px;
+    width: 100%;
+    height: auto;
+    z-index: 9;
+}
+.total-panel .panel-item .item-wave img {
+    width: 100%;
+    height: 100%;
+}
+.total-panel .panel-item .title{
+    font-size: 14px;
+    color: rgb(51, 51, 51);
+    margin-bottom: 18px;
+    font-weight: 500;
+}
+.total-panel .panel-item .number{
+    font-size: 26px;
+    margin-bottom: 7px;
+    font-weight: 700;
+    color: rgb(51, 51, 51);
+}
+.total-panel .panel-item .desc{
+    font-size: 13px;
+    color: rgb(102, 102, 102);
+}
+.total-panel .panel-item .number span{
+    font-size: 16px;
+    font-weight: normal;
+}
+.panel-line{
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    height: 100%;
+}
+.panel-line span{
+    width: 1px;
+    background-color: #f0f0f0;
+    height: 60%;
+    display: block;
+}
+.card-news{
+    background-color: #fff;
+    padding: 20px;
+    border-radius: 5px;
+}
+.news-title{
+    font-size: 16px;
+    color: #000;
+    font-weight: bold;
+    margin-bottom: 10px;
+    display: flex;
+    align-items: center;
+}
+.news-title::before{
+    content: "";
+    width: 4px;
+    height: 16px;
+    display: block;
+    background-color: var(--el-color-primary);;
+    margin-right: 8px;
+}
+.date-title{display:flex; align-items:center;line-height:40px;position: relative;}
+.date-title .dot{
+    width: 5px;
+    height: 5px;
+    background: var(--el-color-primary);
+    border-radius: 100%;
+    margin-right: 10px;
+}
+.date-time{
+    font-size: 12px;
+    color: #666;
+    margin-left: auto;
+    margin-right: 0;
+}
+@media (max-width: 992px){
+    .total-panel {
+        display: block;
+    }
+    .total-panel .panel-item{
+        width: 100%;
+        margin-bottom: 10px;
+    }
+}
+</style>

+ 1 - 1
src/views/store/store/detail/index.vue

@@ -7,7 +7,7 @@
                 <el-descriptions title="" direction="vertical" :column="1" border style="margin-bottom:10px;" v-if="!loading">
                     <el-descriptions-item label="店铺编码"> {{dataInfo.store_code}} </el-descriptions-item>
                     <el-descriptions-item label="负责人姓名">{{dataInfo.store_mch}}</el-descriptions-item>
-                    <el-descriptions-item label="联系电话">{{dataInfo.store_mobile}}</el-descriptions-item>
+                    <el-descriptions-item label="联系电话">{{dataInfo.mobile}}</el-descriptions-item>
                     <el-descriptions-item label="门店地址">{{dataInfo.store_address}}</el-descriptions-item>
                     <el-descriptions-item label="门店类型"> {{dataInfo.type_name}} </el-descriptions-item>
                     <el-descriptions-item label="创建时间"> {{dataInfo.create_at}} </el-descriptions-item>