Quellcode durchsuchen

修改房态管理和订单管理的bug问题

hzj18279462576@163.com vor 1 Jahr
Ursprung
Commit
410f905536

+ 379 - 0
package-lock.json

@@ -9,6 +9,14 @@
       "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.20.15.tgz",
       "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.20.15.tgz",
       "integrity": "sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg=="
       "integrity": "sha512-DI4a1oZuf8wC+oAJA9RW6ga3Zbe8RZFt7kD9i4qAspz3I/yHet1VvC3DiSy/fsUvv5pvJuNPh0LPOdCcqinDPg=="
     },
     },
+    "@babel/runtime": {
+      "version": "7.25.0",
+      "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.25.0.tgz",
+      "integrity": "sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==",
+      "requires": {
+        "regenerator-runtime": "^0.14.0"
+      }
+    },
     "@ctrl/tinycolor": {
     "@ctrl/tinycolor": {
       "version": "3.6.1",
       "version": "3.6.1",
       "resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz",
       "resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz",
@@ -253,6 +261,16 @@
       "resolved": "https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz",
       "resolved": "https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz",
       "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ=="
       "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ=="
     },
     },
+    "@transloadit/prettier-bytes": {
+      "version": "0.0.7",
+      "resolved": "https://registry.npmmirror.com/@transloadit/prettier-bytes/-/prettier-bytes-0.0.7.tgz",
+      "integrity": "sha512-VeJbUb0wEKbcwaSlj5n+LscBl9IPgLPkHVGBkh00cztv6X4L/TJXK58LzFuBKX7/GAfiGhIwH67YTLTlzvIzBA=="
+    },
+    "@types/event-emitter": {
+      "version": "0.3.5",
+      "resolved": "https://registry.npmmirror.com/@types/event-emitter/-/event-emitter-0.3.5.tgz",
+      "integrity": "sha512-zx2/Gg0Eg7gwEiOIIh5w9TrhKKTeQh7CPCOPNc0el4pLSwzebA8SmnHwZs2dWlLONvyulykSwGSQxQHLhjGLvQ=="
+    },
     "@types/lodash": {
     "@types/lodash": {
       "version": "4.17.1",
       "version": "4.17.1",
       "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.17.1.tgz",
       "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.17.1.tgz",
@@ -271,6 +289,53 @@
       "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz",
       "resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz",
       "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ=="
       "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ=="
     },
     },
+    "@uppy/companion-client": {
+      "version": "2.2.2",
+      "resolved": "https://registry.npmmirror.com/@uppy/companion-client/-/companion-client-2.2.2.tgz",
+      "integrity": "sha512-5mTp2iq97/mYSisMaBtFRry6PTgZA6SIL7LePteOV5x0/DxKfrZW3DEiQERJmYpHzy7k8johpm2gHnEKto56Og==",
+      "requires": {
+        "@uppy/utils": "^4.1.2",
+        "namespace-emitter": "^2.0.1"
+      }
+    },
+    "@uppy/core": {
+      "version": "2.3.4",
+      "resolved": "https://registry.npmmirror.com/@uppy/core/-/core-2.3.4.tgz",
+      "integrity": "sha512-iWAqppC8FD8mMVqewavCz+TNaet6HPXitmGXpGGREGrakZ4FeuWytVdrelydzTdXx6vVKkOmI2FLztGg73sENQ==",
+      "requires": {
+        "@transloadit/prettier-bytes": "0.0.7",
+        "@uppy/store-default": "^2.1.1",
+        "@uppy/utils": "^4.1.3",
+        "lodash.throttle": "^4.1.1",
+        "mime-match": "^1.0.2",
+        "namespace-emitter": "^2.0.1",
+        "nanoid": "^3.1.25",
+        "preact": "^10.5.13"
+      }
+    },
+    "@uppy/store-default": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmmirror.com/@uppy/store-default/-/store-default-2.1.1.tgz",
+      "integrity": "sha512-xnpTxvot2SeAwGwbvmJ899ASk5tYXhmZzD/aCFsXePh/v8rNvR2pKlcQUH7cF/y4baUGq3FHO/daKCok/mpKqQ=="
+    },
+    "@uppy/utils": {
+      "version": "4.1.3",
+      "resolved": "https://registry.npmmirror.com/@uppy/utils/-/utils-4.1.3.tgz",
+      "integrity": "sha512-nTuMvwWYobnJcytDO3t+D6IkVq/Qs4Xv3vyoEZ+Iaf8gegZP+rEyoaFT2CK5XLRMienPyqRqNbIfRuFaOWSIFw==",
+      "requires": {
+        "lodash.throttle": "^4.1.1"
+      }
+    },
+    "@uppy/xhr-upload": {
+      "version": "2.1.3",
+      "resolved": "https://registry.npmmirror.com/@uppy/xhr-upload/-/xhr-upload-2.1.3.tgz",
+      "integrity": "sha512-YWOQ6myBVPs+mhNjfdWsQyMRWUlrDLMoaG7nvf/G6Y3GKZf8AyjFDjvvJ49XWQ+DaZOftGkHmF1uh/DBeGivJQ==",
+      "requires": {
+        "@uppy/companion-client": "^2.2.2",
+        "@uppy/utils": "^4.1.2",
+        "nanoid": "^3.1.25"
+      }
+    },
     "@vitejs/plugin-vue": {
     "@vitejs/plugin-vue": {
       "version": "4.0.0",
       "version": "4.0.0",
       "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-4.0.0.tgz",
       "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-4.0.0.tgz",
@@ -405,6 +470,88 @@
         "vue-demi": "*"
         "vue-demi": "*"
       }
       }
     },
     },
+    "@wangeditor/basic-modules": {
+      "version": "1.1.7",
+      "resolved": "https://registry.npmmirror.com/@wangeditor/basic-modules/-/basic-modules-1.1.7.tgz",
+      "integrity": "sha512-cY9CPkLJaqF05STqfpZKWG4LpxTMeGSIIF1fHvfm/mz+JXatCagjdkbxdikOuKYlxDdeqvOeBmsUBItufDLXZg==",
+      "requires": {
+        "is-url": "^1.2.4"
+      }
+    },
+    "@wangeditor/code-highlight": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/@wangeditor/code-highlight/-/code-highlight-1.0.3.tgz",
+      "integrity": "sha512-iazHwO14XpCuIWJNTQTikqUhGKyqj+dUNWJ9288Oym9M2xMVHvnsOmDU2sgUDWVy+pOLojReMPgXCsvvNlOOhw==",
+      "requires": {
+        "prismjs": "^1.23.0"
+      }
+    },
+    "@wangeditor/core": {
+      "version": "1.1.19",
+      "resolved": "https://registry.npmmirror.com/@wangeditor/core/-/core-1.1.19.tgz",
+      "integrity": "sha512-KevkB47+7GhVszyYF2pKGKtCSj/YzmClsD03C3zTt+9SR2XWT5T0e3yQqg8baZpcMvkjs1D8Dv4fk8ok/UaS2Q==",
+      "requires": {
+        "@types/event-emitter": "^0.3.3",
+        "event-emitter": "^0.3.5",
+        "html-void-elements": "^2.0.0",
+        "i18next": "^20.4.0",
+        "scroll-into-view-if-needed": "^2.2.28",
+        "slate-history": "^0.66.0"
+      }
+    },
+    "@wangeditor/editor": {
+      "version": "5.1.23",
+      "resolved": "https://registry.npmmirror.com/@wangeditor/editor/-/editor-5.1.23.tgz",
+      "integrity": "sha512-0RxfeVTuK1tktUaPROnCoFfaHVJpRAIE2zdS0mpP+vq1axVQpLjM8+fCvKzqYIkH0Pg+C+44hJpe3VVroSkEuQ==",
+      "requires": {
+        "@uppy/core": "^2.1.1",
+        "@uppy/xhr-upload": "^2.0.3",
+        "@wangeditor/basic-modules": "^1.1.7",
+        "@wangeditor/code-highlight": "^1.0.3",
+        "@wangeditor/core": "^1.1.19",
+        "@wangeditor/list-module": "^1.0.5",
+        "@wangeditor/table-module": "^1.1.4",
+        "@wangeditor/upload-image-module": "^1.0.2",
+        "@wangeditor/video-module": "^1.1.4",
+        "dom7": "^3.0.0",
+        "is-hotkey": "^0.2.0",
+        "lodash.camelcase": "^4.3.0",
+        "lodash.clonedeep": "^4.5.0",
+        "lodash.debounce": "^4.0.8",
+        "lodash.foreach": "^4.5.0",
+        "lodash.isequal": "^4.5.0",
+        "lodash.throttle": "^4.1.1",
+        "lodash.toarray": "^4.4.0",
+        "nanoid": "^3.2.0",
+        "slate": "^0.72.0",
+        "snabbdom": "^3.1.0"
+      }
+    },
+    "@wangeditor/editor-for-vue": {
+      "version": "5.1.12",
+      "resolved": "https://registry.npmmirror.com/@wangeditor/editor-for-vue/-/editor-for-vue-5.1.12.tgz",
+      "integrity": "sha512-0Ds3D8I+xnpNWezAeO7HmPRgTfUxHLMd9JKcIw+QzvSmhC5xUHbpCcLU+KLmeBKTR/zffnS5GQo6qi3GhTMJWQ=="
+    },
+    "@wangeditor/list-module": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmmirror.com/@wangeditor/list-module/-/list-module-1.0.5.tgz",
+      "integrity": "sha512-uDuYTP6DVhcYf7mF1pTlmNn5jOb4QtcVhYwSSAkyg09zqxI1qBqsfUnveeDeDqIuptSJhkh81cyxi+MF8sEPOQ=="
+    },
+    "@wangeditor/table-module": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/@wangeditor/table-module/-/table-module-1.1.4.tgz",
+      "integrity": "sha512-5saanU9xuEocxaemGdNi9t8MCDSucnykEC6jtuiT72kt+/Hhh4nERYx1J20OPsTCCdVr7hIyQenFD1iSRkIQ6w=="
+    },
+    "@wangeditor/upload-image-module": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/@wangeditor/upload-image-module/-/upload-image-module-1.0.2.tgz",
+      "integrity": "sha512-z81lk/v71OwPDYeQDxj6cVr81aDP90aFuywb8nPD6eQeECtOymrqRODjpO6VGvCVxVck8nUxBHtbxKtjgcwyiA=="
+    },
+    "@wangeditor/video-module": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/@wangeditor/video-module/-/video-module-1.1.4.tgz",
+      "integrity": "sha512-ZdodDPqKQrgx3IwWu4ZiQmXI8EXZ3hm2/fM6E3t5dB8tCaIGWQZhmqd6P5knfkRAd3z2+YRSRbxOGfoRSp/rLg=="
+    },
     "acorn": {
     "acorn": {
       "version": "8.8.2",
       "version": "8.8.2",
       "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.8.2.tgz",
       "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.8.2.tgz",
@@ -526,11 +673,25 @@
       "resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz",
       "resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz",
       "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
       "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="
     },
     },
+    "compute-scroll-into-view": {
+      "version": "1.0.20",
+      "resolved": "https://registry.npmmirror.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz",
+      "integrity": "sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg=="
+    },
     "csstype": {
     "csstype": {
       "version": "2.6.21",
       "version": "2.6.21",
       "resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz",
       "resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz",
       "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w=="
       "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w=="
     },
     },
+    "d": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/d/-/d-1.0.2.tgz",
+      "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==",
+      "requires": {
+        "es5-ext": "^0.10.64",
+        "type": "^2.7.2"
+      }
+    },
     "dayjs": {
     "dayjs": {
       "version": "1.11.8",
       "version": "1.11.8",
       "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.8.tgz",
       "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.8.tgz",
@@ -556,6 +717,14 @@
       "resolved": "https://registry.npmmirror.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz",
       "resolved": "https://registry.npmmirror.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz",
       "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA=="
       "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA=="
     },
     },
+    "dom7": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/dom7/-/dom7-3.0.0.tgz",
+      "integrity": "sha512-oNlcUdHsC4zb7Msx7JN3K0Nro1dzJ48knvBOnDPKJ2GV9wl1i5vydJZUSyOfrkKFDZEud/jBsTk92S/VGSAe/g==",
+      "requires": {
+        "ssr-window": "^3.0.0-alpha.1"
+      }
+    },
     "echarts": {
     "echarts": {
       "version": "5.4.2",
       "version": "5.4.2",
       "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.4.2.tgz",
       "resolved": "https://registry.npmmirror.com/echarts/-/echarts-5.4.2.tgz",
@@ -604,6 +773,36 @@
       "resolved": "https://registry.npmmirror.com/encode-utf8/-/encode-utf8-1.0.3.tgz",
       "resolved": "https://registry.npmmirror.com/encode-utf8/-/encode-utf8-1.0.3.tgz",
       "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw=="
       "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw=="
     },
     },
+    "es5-ext": {
+      "version": "0.10.64",
+      "resolved": "https://registry.npmmirror.com/es5-ext/-/es5-ext-0.10.64.tgz",
+      "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==",
+      "requires": {
+        "es6-iterator": "^2.0.3",
+        "es6-symbol": "^3.1.3",
+        "esniff": "^2.0.1",
+        "next-tick": "^1.1.0"
+      }
+    },
+    "es6-iterator": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmmirror.com/es6-iterator/-/es6-iterator-2.0.3.tgz",
+      "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==",
+      "requires": {
+        "d": "1",
+        "es5-ext": "^0.10.35",
+        "es6-symbol": "^3.1.1"
+      }
+    },
+    "es6-symbol": {
+      "version": "3.1.4",
+      "resolved": "https://registry.npmmirror.com/es6-symbol/-/es6-symbol-3.1.4.tgz",
+      "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==",
+      "requires": {
+        "d": "^1.0.2",
+        "ext": "^1.7.0"
+      }
+    },
     "esbuild": {
     "esbuild": {
       "version": "0.16.17",
       "version": "0.16.17",
       "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.16.17.tgz",
       "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.16.17.tgz",
@@ -639,11 +838,39 @@
       "resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz",
       "resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz",
       "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
       "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
     },
     },
+    "esniff": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/esniff/-/esniff-2.0.1.tgz",
+      "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==",
+      "requires": {
+        "d": "^1.0.1",
+        "es5-ext": "^0.10.62",
+        "event-emitter": "^0.3.5",
+        "type": "^2.7.2"
+      }
+    },
     "estree-walker": {
     "estree-walker": {
       "version": "2.0.2",
       "version": "2.0.2",
       "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
       "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
       "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
       "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
     },
     },
+    "event-emitter": {
+      "version": "0.3.5",
+      "resolved": "https://registry.npmmirror.com/event-emitter/-/event-emitter-0.3.5.tgz",
+      "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==",
+      "requires": {
+        "d": "1",
+        "es5-ext": "~0.10.14"
+      }
+    },
+    "ext": {
+      "version": "1.7.0",
+      "resolved": "https://registry.npmmirror.com/ext/-/ext-1.7.0.tgz",
+      "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==",
+      "requires": {
+        "type": "^2.7.2"
+      }
+    },
     "fill-range": {
     "fill-range": {
       "version": "7.0.1",
       "version": "7.0.1",
       "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz",
       "resolved": "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz",
@@ -715,6 +942,24 @@
       "resolved": "https://registry.npmmirror.com/hls.js/-/hls.js-1.3.4.tgz",
       "resolved": "https://registry.npmmirror.com/hls.js/-/hls.js-1.3.4.tgz",
       "integrity": "sha512-iFEwVqtEDk6sKotcTwtJ5OMo/nuDTk9PrpB8FI2J2WYf8EriTVfR4FaK0aNyYtwbYeRSWCXJKlz23xeREdlNYg=="
       "integrity": "sha512-iFEwVqtEDk6sKotcTwtJ5OMo/nuDTk9PrpB8FI2J2WYf8EriTVfR4FaK0aNyYtwbYeRSWCXJKlz23xeREdlNYg=="
     },
     },
+    "html-void-elements": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/html-void-elements/-/html-void-elements-2.0.1.tgz",
+      "integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A=="
+    },
+    "i18next": {
+      "version": "20.6.1",
+      "resolved": "https://registry.npmmirror.com/i18next/-/i18next-20.6.1.tgz",
+      "integrity": "sha512-yCMYTMEJ9ihCwEQQ3phLo7I/Pwycf8uAx+sRHwwk5U9Aui/IZYgQRyMqXafQOw5QQ7DM1Z+WyEXWIqSuJHhG2A==",
+      "requires": {
+        "@babel/runtime": "^7.12.0"
+      }
+    },
+    "immer": {
+      "version": "9.0.21",
+      "resolved": "https://registry.npmmirror.com/immer/-/immer-9.0.21.tgz",
+      "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA=="
+    },
     "immutable": {
     "immutable": {
       "version": "4.2.4",
       "version": "4.2.4",
       "resolved": "https://registry.npmmirror.com/immutable/-/immutable-4.2.4.tgz",
       "resolved": "https://registry.npmmirror.com/immutable/-/immutable-4.2.4.tgz",
@@ -755,11 +1000,26 @@
         "is-extglob": "^2.1.1"
         "is-extglob": "^2.1.1"
       }
       }
     },
     },
+    "is-hotkey": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmmirror.com/is-hotkey/-/is-hotkey-0.2.0.tgz",
+      "integrity": "sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw=="
+    },
     "is-number": {
     "is-number": {
       "version": "7.0.0",
       "version": "7.0.0",
       "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
       "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
       "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
       "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
     },
     },
+    "is-plain-object": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-5.0.0.tgz",
+      "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q=="
+    },
+    "is-url": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmmirror.com/is-url/-/is-url-1.2.4.tgz",
+      "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww=="
+    },
     "jsencrypt": {
     "jsencrypt": {
       "version": "3.3.1",
       "version": "3.3.1",
       "resolved": "https://registry.npmmirror.com/jsencrypt/-/jsencrypt-3.3.1.tgz",
       "resolved": "https://registry.npmmirror.com/jsencrypt/-/jsencrypt-3.3.1.tgz",
@@ -793,6 +1053,41 @@
       "resolved": "https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.3.tgz",
       "resolved": "https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.3.tgz",
       "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ=="
       "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ=="
     },
     },
+    "lodash.camelcase": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
+      "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA=="
+    },
+    "lodash.clonedeep": {
+      "version": "4.5.0",
+      "resolved": "https://registry.npmmirror.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
+      "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ=="
+    },
+    "lodash.debounce": {
+      "version": "4.0.8",
+      "resolved": "https://registry.npmmirror.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+      "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow=="
+    },
+    "lodash.foreach": {
+      "version": "4.5.0",
+      "resolved": "https://registry.npmmirror.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz",
+      "integrity": "sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ=="
+    },
+    "lodash.isequal": {
+      "version": "4.5.0",
+      "resolved": "https://registry.npmmirror.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
+      "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ=="
+    },
+    "lodash.throttle": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmmirror.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
+      "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ=="
+    },
+    "lodash.toarray": {
+      "version": "4.4.0",
+      "resolved": "https://registry.npmmirror.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz",
+      "integrity": "sha512-QyffEA3i5dma5q2490+SgCvDN0pXLmRGSyAANuVi0HQ01Pkfr9fuoKQW8wm1wGBnJITs/mS7wQvS6VshUEBFCw=="
+    },
     "magic-string": {
     "magic-string": {
       "version": "0.25.9",
       "version": "0.25.9",
       "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz",
       "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz",
@@ -811,6 +1106,14 @@
       "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz",
       "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz",
       "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
       "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
     },
     },
+    "mime-match": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/mime-match/-/mime-match-1.0.2.tgz",
+      "integrity": "sha512-VXp/ugGDVh3eCLOBCiHZMYWQaTNUHv2IJrut+yXA6+JbLPXHglHwfS/5A5L0ll+jkCY7fIzRJcH6OIunF+c6Cg==",
+      "requires": {
+        "wildcard": "^1.1.0"
+      }
+    },
     "mime-types": {
     "mime-types": {
       "version": "2.1.35",
       "version": "2.1.35",
       "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz",
       "resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz",
@@ -819,6 +1122,11 @@
         "mime-db": "1.52.0"
         "mime-db": "1.52.0"
       }
       }
     },
     },
+    "namespace-emitter": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/namespace-emitter/-/namespace-emitter-2.0.1.tgz",
+      "integrity": "sha512-N/sMKHniSDJBjfrkbS/tpkPj4RAbvW3mr8UAzvlMHyun93XEm83IAvhWtJVHo+RHn/oO8Job5YN4b+wRjSVp5g=="
+    },
     "nanoid": {
     "nanoid": {
       "version": "3.3.4",
       "version": "3.3.4",
       "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.4.tgz",
       "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.4.tgz",
@@ -829,6 +1137,11 @@
       "resolved": "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz",
       "resolved": "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz",
       "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="
       "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="
     },
     },
+    "next-tick": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmmirror.com/next-tick/-/next-tick-1.1.0.tgz",
+      "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ=="
+    },
     "normalize-path": {
     "normalize-path": {
       "version": "3.0.0",
       "version": "3.0.0",
       "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz",
       "resolved": "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz",
@@ -901,6 +1214,16 @@
         "source-map-js": "^1.0.2"
         "source-map-js": "^1.0.2"
       }
       }
     },
     },
+    "preact": {
+      "version": "10.23.2",
+      "resolved": "https://registry.npmmirror.com/preact/-/preact-10.23.2.tgz",
+      "integrity": "sha512-kKYfePf9rzKnxOAKDpsWhg/ysrHPqT+yQ7UW4JjdnqjFIeNUnNcEJvhuA8fDenxAGWzUqtd51DfVg7xp/8T9NA=="
+    },
+    "prismjs": {
+      "version": "1.29.0",
+      "resolved": "https://registry.npmmirror.com/prismjs/-/prismjs-1.29.0.tgz",
+      "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q=="
+    },
     "proxy-from-env": {
     "proxy-from-env": {
       "version": "1.1.0",
       "version": "1.1.0",
       "resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
       "resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
@@ -925,6 +1248,11 @@
         "picomatch": "^2.2.1"
         "picomatch": "^2.2.1"
       }
       }
     },
     },
+    "regenerator-runtime": {
+      "version": "0.14.1",
+      "resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+      "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
+    },
     "require-directory": {
     "require-directory": {
       "version": "2.1.1",
       "version": "2.1.1",
       "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz",
       "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz",
@@ -974,6 +1302,14 @@
         "neo-async": "^2.6.2"
         "neo-async": "^2.6.2"
       }
       }
     },
     },
+    "scroll-into-view-if-needed": {
+      "version": "2.2.31",
+      "resolved": "https://registry.npmmirror.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.31.tgz",
+      "integrity": "sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==",
+      "requires": {
+        "compute-scroll-into-view": "^1.0.20"
+      }
+    },
     "set-blocking": {
     "set-blocking": {
       "version": "2.0.0",
       "version": "2.0.0",
       "resolved": "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz",
       "resolved": "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz",
@@ -984,6 +1320,29 @@
       "resolved": "https://registry.npmmirror.com/shvl/-/shvl-2.0.3.tgz",
       "resolved": "https://registry.npmmirror.com/shvl/-/shvl-2.0.3.tgz",
       "integrity": "sha512-V7C6S9Hlol6SzOJPnQ7qzOVEWUQImt3BNmmzh40wObhla3XOYMe4gGiYzLrJd5TFa+cI2f9LKIRJTTKZSTbWgw=="
       "integrity": "sha512-V7C6S9Hlol6SzOJPnQ7qzOVEWUQImt3BNmmzh40wObhla3XOYMe4gGiYzLrJd5TFa+cI2f9LKIRJTTKZSTbWgw=="
     },
     },
+    "slate": {
+      "version": "0.72.8",
+      "resolved": "https://registry.npmmirror.com/slate/-/slate-0.72.8.tgz",
+      "integrity": "sha512-/nJwTswQgnRurpK+bGJFH1oM7naD5qDmHd89JyiKNT2oOKD8marW0QSBtuFnwEbL5aGCS8AmrhXQgNOsn4osAw==",
+      "requires": {
+        "immer": "^9.0.6",
+        "is-plain-object": "^5.0.0",
+        "tiny-warning": "^1.0.3"
+      }
+    },
+    "slate-history": {
+      "version": "0.66.0",
+      "resolved": "https://registry.npmmirror.com/slate-history/-/slate-history-0.66.0.tgz",
+      "integrity": "sha512-6MWpxGQZiMvSINlCbMW43E2YBSVMCMCIwQfBzGssjWw4kb0qfvj0pIdblWNRQZD0hR6WHP+dHHgGSeVdMWzfng==",
+      "requires": {
+        "is-plain-object": "^5.0.0"
+      }
+    },
+    "snabbdom": {
+      "version": "3.6.2",
+      "resolved": "https://registry.npmmirror.com/snabbdom/-/snabbdom-3.6.2.tgz",
+      "integrity": "sha512-ig5qOnCDbugFntKi6c7Xlib8bA6xiJVk8O+WdFrV3wxbMqeHO0hXFQC4nAhPVWfZfi8255lcZkNhtIBINCc4+Q=="
+    },
     "source-map": {
     "source-map": {
       "version": "0.6.1",
       "version": "0.6.1",
       "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
       "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
@@ -1008,6 +1367,11 @@
       "resolved": "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
       "resolved": "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
       "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA=="
       "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA=="
     },
     },
+    "ssr-window": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/ssr-window/-/ssr-window-3.0.0.tgz",
+      "integrity": "sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA=="
+    },
     "string-width": {
     "string-width": {
       "version": "4.2.3",
       "version": "4.2.3",
       "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
       "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
@@ -1043,6 +1407,11 @@
         "source-map-support": "~0.5.20"
         "source-map-support": "~0.5.20"
       }
       }
     },
     },
+    "tiny-warning": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/tiny-warning/-/tiny-warning-1.0.3.tgz",
+      "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA=="
+    },
     "to-regex-range": {
     "to-regex-range": {
       "version": "5.0.1",
       "version": "5.0.1",
       "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz",
       "resolved": "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz",
@@ -1056,6 +1425,11 @@
       "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz",
       "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz",
       "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
       "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
     },
     },
+    "type": {
+      "version": "2.7.3",
+      "resolved": "https://registry.npmmirror.com/type/-/type-2.7.3.tgz",
+      "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ=="
+    },
     "vite": {
     "vite": {
       "version": "4.1.1",
       "version": "4.1.1",
       "resolved": "https://registry.npmmirror.com/vite/-/vite-4.1.1.tgz",
       "resolved": "https://registry.npmmirror.com/vite/-/vite-4.1.1.tgz",
@@ -1116,6 +1490,11 @@
       "resolved": "https://registry.npmmirror.com/which-module/-/which-module-2.0.1.tgz",
       "resolved": "https://registry.npmmirror.com/which-module/-/which-module-2.0.1.tgz",
       "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ=="
       "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ=="
     },
     },
+    "wildcard": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmmirror.com/wildcard/-/wildcard-1.1.2.tgz",
+      "integrity": "sha512-DXukZJxpHA8LuotRwL0pP1+rS6CS7FF2qStDDE1C7DDg2rLud2PXRMuEDYIPhgEezwnlHNL4c+N6MfMTjCGTng=="
+    },
     "wrap-ansi": {
     "wrap-ansi": {
       "version": "6.2.0",
       "version": "6.2.0",
       "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
       "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz",

+ 2 - 0
package.json

@@ -12,6 +12,8 @@
     "@easydarwin/easyplayer": "^5.0.7",
     "@easydarwin/easyplayer": "^5.0.7",
     "@element-plus/icons-vue": "^2.0.10",
     "@element-plus/icons-vue": "^2.0.10",
     "@liveqing/liveplayer-v3": "^3.7.10",
     "@liveqing/liveplayer-v3": "^3.7.10",
+    "@wangeditor/editor": "^5.1.23",
+    "@wangeditor/editor-for-vue": "^5.1.12",
     "axios": "^1.3.2",
     "axios": "^1.3.2",
     "dayjs": "^1.11.8",
     "dayjs": "^1.11.8",
     "echarts": "^5.4.2",
     "echarts": "^5.4.2",

+ 6 - 4
src/App.vue

@@ -18,10 +18,12 @@ onBeforeMount(() => {
 
 
 <style lang="scss">
 <style lang="scss">
 #app {
 #app {
-  max-width: 1920px;
-  width: 1920px;
-  min-height: 100vh;
-  max-height: 1080px;
+  // max-width: 1920px;
+  // width: 1920px;
+  // min-height: 100vh;
+  // max-height: 1080px;
+  width: calc(100vw);
+  height: calc(100vh);
   margin: 0;
   margin: 0;
   padding: 0;
   padding: 0;
   text-align: unset;
   text-align: unset;

BIN
src/assets/addRoom.png


BIN
src/assets/delRoom.png


BIN
src/assets/icons/passEyes.png


BIN
src/assets/icons/refundMoney.png


+ 17 - 0
src/store/modules/user.js

@@ -320,6 +320,8 @@ const mutations = {
             roomStatus.quxiaoyuding = j.status;
             roomStatus.quxiaoyuding = j.status;
           } else if (j.functionPoint == "取消维修") {
           } else if (j.functionPoint == "取消维修") {
             roomStatus.quxiaoweixiu = j.status;
             roomStatus.quxiaoweixiu = j.status;
+          } else if (j.functionPoint == "查看密码") {
+            roomStatus.chakanmima = j.status;
           } else if (j.functionPoint == "查看界面") {
           } else if (j.functionPoint == "查看界面") {
             roomStatus.chakanjiemian = j.status;
             roomStatus.chakanjiemian = j.status;
             if (j.status == 1) {
             if (j.status == 1) {
@@ -442,6 +444,8 @@ const mutations = {
             order.huanfang = j.status;
             order.huanfang = j.status;
           } else if (j.functionPoint == "导出") {
           } else if (j.functionPoint == "导出") {
             order.daochu = j.status;
             order.daochu = j.status;
+          } else if (j.functionPoint == "备注") {
+            order.beizhu = j.status;
           } else if (j.functionPoint == "查看界面") {
           } else if (j.functionPoint == "查看界面") {
             order.chakanjiemian = j.status;
             order.chakanjiemian = j.status;
             if (j.status == 1) {
             if (j.status == 1) {
@@ -462,6 +466,10 @@ const mutations = {
             classs.daoruzhiban = j.status;
             classs.daoruzhiban = j.status;
           } else if (j.functionPoint == "导出") {
           } else if (j.functionPoint == "导出") {
             classs.daochu = j.status;
             classs.daochu = j.status;
+          } else if (j.functionPoint == "删除") {
+            classs.shanchu = j.status;
+          } else if (j.functionPoint == "添加") {
+            classs.tianjia = j.status;
           } else if (j.functionPoint == "查看界面") {
           } else if (j.functionPoint == "查看界面") {
             classs.chakanjiemian = j.status;
             classs.chakanjiemian = j.status;
             if (j.status == 1) {
             if (j.status == 1) {
@@ -726,6 +734,7 @@ const actions = {
         // sessionStorage.setItem("name", data.userName);
         // sessionStorage.setItem("name", data.userName);
         sessionStorage.setItem("token", res.data.data.token);
         sessionStorage.setItem("token", res.data.data.token);
         sessionStorage.setItem("id", res.data.data.id);
         sessionStorage.setItem("id", res.data.data.id);
+        sessionStorage.setItem("adminMenuParentId", res.data.data.adminMenuParentId);
         sessionStorage.setItem("user_head", res.data.data.user_head);
         sessionStorage.setItem("user_head", res.data.data.user_head);
         sessionStorage.setItem(
         sessionStorage.setItem(
           "permissionSettingId",
           "permissionSettingId",
@@ -778,6 +787,8 @@ const actions = {
                 roomStatus.quxiaoyuding = j.status;
                 roomStatus.quxiaoyuding = j.status;
               } else if (j.functionPoint == "取消维修") {
               } else if (j.functionPoint == "取消维修") {
                 roomStatus.quxiaoweixiu = j.status;
                 roomStatus.quxiaoweixiu = j.status;
+              } else if (j.functionPoint == "查看密码") {
+                roomStatus.chakanmima = j.status;
               } else if (j.functionPoint == "查看界面") {
               } else if (j.functionPoint == "查看界面") {
                 roomStatus.chakanjiemian = j.status;
                 roomStatus.chakanjiemian = j.status;
                 if (j.status == 1) {
                 if (j.status == 1) {
@@ -900,6 +911,8 @@ const actions = {
                 order.huanfang = j.status;
                 order.huanfang = j.status;
               } else if (j.functionPoint == "导出") {
               } else if (j.functionPoint == "导出") {
                 order.daochu = j.status;
                 order.daochu = j.status;
+              } else if (j.functionPoint == "备注") {
+                order.beizhu = j.status;
               } else if (j.functionPoint == "查看界面") {
               } else if (j.functionPoint == "查看界面") {
                 order.chakanjiemian = j.status;
                 order.chakanjiemian = j.status;
                 if (j.status == 1) {
                 if (j.status == 1) {
@@ -920,6 +933,10 @@ const actions = {
                 classs.daoruzhiban = j.status;
                 classs.daoruzhiban = j.status;
               } else if (j.functionPoint == "导出") {
               } else if (j.functionPoint == "导出") {
                 classs.daochu = j.status;
                 classs.daochu = j.status;
+              } else if (j.functionPoint == "删除") {
+                classs.shanchu = j.status;
+              } else if (j.functionPoint == "添加") {
+                classs.tianjia = j.status;
               } else if (j.functionPoint == "查看界面") {
               } else if (j.functionPoint == "查看界面") {
                 classs.chakanjiemian = j.status;
                 classs.chakanjiemian = j.status;
                 if (j.status == 1) {
                 if (j.status == 1) {

+ 5 - 5
src/views/account/account.vue

@@ -24,7 +24,7 @@
             <span>真实姓名 </span>
             <span>真实姓名 </span>
             <el-input
             <el-input
               clearable
               clearable
-              v-model="searchInput.name"
+              v-model.trim="searchInput.name"
               class="w-50 m-2"
               class="w-50 m-2"
               placeholder="请输入姓名"
               placeholder="请输入姓名"
               style="width: 180px"
               style="width: 180px"
@@ -202,7 +202,7 @@
             </el-form-item>
             </el-form-item>
             <el-form-item label="姓名 :" prop="corpnName">
             <el-form-item label="姓名 :" prop="corpnName">
               <el-input
               <el-input
-                v-model="ruleForm.corpnName"
+                v-model.trim="ruleForm.corpnName"
                 placeholder="请输入姓名"
                 placeholder="请输入姓名"
                 clearable
                 clearable
                 :disabled="true"
                 :disabled="true"
@@ -231,7 +231,7 @@
             </el-form-item>
             </el-form-item>
             <el-form-item label="手机号码 :" prop="corpnPhone">
             <el-form-item label="手机号码 :" prop="corpnPhone">
               <el-input
               <el-input
-                v-model="ruleForm.corpnPhone"
+                v-model.trim="ruleForm.corpnPhone"
                 placeholder="请输入手机号码"
                 placeholder="请输入手机号码"
                 clearable
                 clearable
                 :disabled="true"
                 :disabled="true"
@@ -239,14 +239,14 @@
             </el-form-item>
             </el-form-item>
             <el-form-item label="用户名 :" prop="adminName">
             <el-form-item label="用户名 :" prop="adminName">
               <el-input
               <el-input
-                v-model="ruleForm.adminName"
+                v-model.trim="ruleForm.adminName"
                 placeholder="请输入用户名"
                 placeholder="请输入用户名"
                 clearable
                 clearable
               />
               />
             </el-form-item>
             </el-form-item>
             <el-form-item label="密码 :" prop="password">
             <el-form-item label="密码 :" prop="password">
               <el-input
               <el-input
-                v-model="ruleForm.password"
+                v-model.trim="ruleForm.password"
                 placeholder="请输入密码"
                 placeholder="请输入密码"
                 clearable
                 clearable
               />
               />

+ 17 - 3
src/views/building/building.vue

@@ -10,7 +10,7 @@
           <div class="condition">
           <div class="condition">
             <el-input
             <el-input
               clearable
               clearable
-              v-model="searchInput.name"
+              v-model.trim="searchInput.name"
               class="w-50 m-2"
               class="w-50 m-2"
               placeholder="请输入关键字"
               placeholder="请输入关键字"
               style="width: 180px"
               style="width: 180px"
@@ -121,14 +121,14 @@
           >
           >
             <el-form-item label="楼栋 :" prop="build">
             <el-form-item label="楼栋 :" prop="build">
               <el-input
               <el-input
-                v-model="ruleForm.build"
+                v-model.trim="ruleForm.build"
                 placeholder="请输入楼栋"
                 placeholder="请输入楼栋"
                 clearable
                 clearable
               />
               />
             </el-form-item>
             </el-form-item>
             <el-form-item label="单元 :" prop="unit">
             <el-form-item label="单元 :" prop="unit">
               <el-input
               <el-input
-                v-model="ruleForm.unit"
+                v-model.trim="ruleForm.unit"
                 placeholder="请输入单元"
                 placeholder="请输入单元"
                 clearable
                 clearable
               />
               />
@@ -221,13 +221,26 @@ const ruleForm = reactive({
   unit: "",
   unit: "",
   id: "",
   id: "",
 });
 });
+var buildNum = (rule, value, callback) => {
+  // if (!value) {
+  //   return callback(new Error("请输入楼栋)"));
+  // }
+  var reg = /^\\d$/;
+  if (!reg.test(value)) {
+    callback(new Error("输入值必须为纯数字!"));
+  } else {
+    callback();
+  }
+};
 // 表单验证
 // 表单验证
 const rules = reactive({
 const rules = reactive({
   build: [
   build: [
     { required: true, message: "楼栋不能为空", trigger: "blur" },
     { required: true, message: "楼栋不能为空", trigger: "blur" },
+    // { validator: buildNum, trigger: "blur" },
   ],
   ],
   unit: [
   unit: [
     { required: true, message: "单元不能为空", trigger: "blur" },
     { required: true, message: "单元不能为空", trigger: "blur" },
+    // { validator: buildNum, trigger: "blur" },
   ],
   ],
 
 
   // desc: [{ required: true, message: "Please input activity form", trigger: "blur" }],
   // desc: [{ required: true, message: "Please input activity form", trigger: "blur" }],
@@ -564,6 +577,7 @@ onUnmounted(() => {
     width: calc(100% - 60px);
     width: calc(100% - 60px);
     flex:1;
     flex:1;
     margin: 0 auto;
     margin: 0 auto;
+    overflow:auto;
     .el-table--fit {
     .el-table--fit {
       height: calc(100% - 60px);
       height: calc(100% - 60px);
       :deep(.el-table__header-wrapper) {
       :deep(.el-table__header-wrapper) {

+ 534 - 56
src/views/class/class.vue

@@ -4,7 +4,7 @@
       <!-- <el-icon :size="23" class="camera"><VideoCameraFilled /></el-icon> -->
       <!-- <el-icon :size="23" class="camera"><VideoCameraFilled /></el-icon> -->
       <span class="cameratxt">课表管理</span>
       <span class="cameratxt">课表管理</span>
     </div>
     </div>
-    <div>
+    <div class="scroll">
       <div class="middle">
       <div class="middle">
         <div class="filter">
         <div class="filter">
           <div class="filter_block">
           <div class="filter_block">
@@ -13,7 +13,7 @@
               <el-input
               <el-input
                 :clearable="true"
                 :clearable="true"
                 @clear="searchBtn"
                 @clear="searchBtn"
-                v-model="searchInput.keyWord"
+                v-model.trim="searchInput.keyWord"
                 class="w-50 m-2"
                 class="w-50 m-2"
                 placeholder="请输入姓名"
                 placeholder="请输入姓名"
                 style="width: 180px"
                 style="width: 180px"
@@ -60,28 +60,51 @@
         </div>
         </div>
         <div class="filter">
         <div class="filter">
           <div class="filter_block">
           <div class="filter_block">
+            <el-button
+              style="margin-right: 8px"
+              v-if="flagBtn.tianjia == 1"
+              type="primary"
+              @click="addClass"
+              plain
+              >添加</el-button
+            >
+            <el-button
+              style="margin-right: 20px"
+              v-if="flagBtn.shanchu == 1"
+              type="primary"
+              @click="delClass"
+              plain
+              >勾选删除</el-button
+            >
             <el-upload
             <el-upload
-            v-if="flagBtn.daoruzhiban==1"
-                class="avatar-uploader"
-                action=""
-                :on-preview="handlePreview"
-                :on-remove="handleRemove"
-                :on-change="handleChange"
-                :http-request="handleUpload"
-                :before-upload="beforeAvatarUpload"
-              >
-                <template #trigger>
-                  <el-button type="primary" color="rgba(0, 97, 255, 1)"
-                    >导入</el-button
-                  >
-                </template>
-                <template #tip>
-                  <!-- <div class="el-upload__tip">
+              v-if="flagBtn.daoruzhiban == 1"
+              class="avatar-uploader"
+              action=""
+              :on-preview="handlePreview"
+              :on-remove="handleRemove"
+              :on-change="handleChange"
+              :http-request="handleUpload"
+              :before-upload="beforeAvatarUpload"
+            >
+              <template #trigger>
+                <el-button type="primary" color="rgba(0, 97, 255, 1)"
+                  >导入</el-button
+                >
+              </template>
+              <template #tip>
+                <!-- <div class="el-upload__tip">
                     (注:图片大小不超过10M,建议按16:9比例)
                     (注:图片大小不超过10M,建议按16:9比例)
                   </div> -->
                   </div> -->
-                </template>
-              </el-upload>
-            <el-button v-if="flagBtn.daochu==1" type="primary" @click="importExcel" plain>导出</el-button>
+              </template>
+            </el-upload>
+            <el-button
+              style="margin-right: 8px"
+              v-if="flagBtn.daochu == 1"
+              type="primary"
+              @click="importExcel"
+              plain
+              >导出</el-button
+            >
           </div>
           </div>
         </div>
         </div>
       </div>
       </div>
@@ -108,21 +131,132 @@
             label="有无替换"
             label="有无替换"
           >
           >
           </el-table-column>
           </el-table-column>
-          <el-table-column
-            align="center"
-            v-for="i in tableHead"
-            width="100"
-          >
-          <template #header>
-            <div>教师资格</div>
-          </template>
+          <el-table-column align="center" v-for="i in tableHead" width="100">
+            <template #header>
+              <div>教师资格</div>
+            </template>
             <template #default="{ row }">
             <template #default="{ row }">
-              <span v-if="row.list[i-1]">{{ row.list[i-1].jsxm }}</span>
+              <div v-if="row.list[i - 1]">
+                <el-checkbox
+                  @change="selDelChange($event, row.list[i - 1])"
+                  v-model="row.list[i - 1].selDel"
+                  size="large"
+                  >{{ row.list[i - 1].jsxm }}</el-checkbox
+                >
+              </div>
               <span v-else></span>
               <span v-else></span>
             </template>
             </template>
           </el-table-column>
           </el-table-column>
         </el-table>
         </el-table>
       </div>
       </div>
+      <el-dialog
+        class="addStaff"
+        v-model="addDialogVisible"
+        :close-on-click-modal="false"
+        :close-on-press-escape="false"
+        :title="dialongTitle"
+        align-center
+        width="480"
+        :before-close="cancelAdd"
+      >
+        <el-form
+          ref="ruleFormRef"
+          :model="ruleForm"
+          :rules="rules"
+          label-width="100px"
+          class="demo-ruleForm"
+          :size="formSize"
+          label-position="left"
+          status-icon
+        >
+          <el-form-item label="微校卡号 :" prop="cardNum">
+            <!-- <el-input
+              v-model="ruleForm.cardNum"
+              placeholder="请输入微校卡号"
+              clearable
+              :disabled="dialongTitle == '编辑信息'"
+            /> -->
+            <el-select
+              v-model="ruleForm.cardNum"
+              popper-class="more-tag-data"
+              filterable
+              remote
+              :remote-method="conteactMethod"
+              placeholder="请选择微校卡号"
+              style="width: 200px"
+              @change="schoolCardChange"
+            >
+              <el-option
+                v-for="item in schoolCardList"
+                :key="item.id"
+                :label="item.cardNumber"
+                :value="item.cardNumber"
+              >
+                <div style="float: left">
+                  <span style="display: inline-block; width: 80px">{{
+                    item.userName
+                  }}</span>
+                  <span style="display: inline-block; width: 120px"
+                    >部门 : {{ item.departmentName }}</span
+                  >
+                  <span>微校卡号 : {{ item.cardNumber }}</span>
+                </div>
+              </el-option>
+              <template #footer>
+                <div class="addStudentMore">
+                  <el-button
+                    v-if="
+                      schoolCardPage < schoolCardTotalPage &&
+                      schoolCardTotalPage != 0
+                    "
+                    @click="addschoolCardListMore"
+                    >加载更多+</el-button
+                  >
+                </div>
+              </template>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="姓名 :" prop="corpnName">
+            <el-input
+              v-model.trim="ruleForm.corpnName"
+              placeholder="请输入姓名"
+              clearable
+              :disabled="true"
+            />
+          </el-form-item>
+          <!-- <el-form-item label="手机号码 :" prop="corpnPhone">
+            <el-input
+              v-model="ruleForm.corpnPhone"
+              placeholder="请输入手机号码"
+              clearable
+              :disabled="true"
+            />
+          </el-form-item> -->
+          <el-form-item label="日期 :" style="width: 400px" prop="dataTime">
+            <el-date-picker
+              v-model="ruleForm.dateTime"
+              type="date"
+              format="YYYY-MM-DD"
+              value-format="YYYY-MM-DD"
+              :prefix-icon="Calendar"
+              placeholder="请选择日期"
+              
+            />
+          </el-form-item>
+          <el-form-item class="options">
+            <el-button
+              color="rgba(0, 97, 255, 1)"
+              class="queding"
+              type="primary"
+              @click="submitAdd(ruleFormRef)"
+            >
+              确定
+            </el-button>
+            <el-button @click="cancelAdd(ruleFormRef)">取消</el-button>
+          </el-form-item>
+          
+        </el-form>
+      </el-dialog>
 
 
       <!-- 分页组件 -->
       <!-- 分页组件 -->
       <div class="pageSize">
       <div class="pageSize">
@@ -182,13 +316,98 @@ const searchInput = reactive({
   createTime: [],
   createTime: [],
 });
 });
 
 
+const dialongTitle = ref("新增值班教师"); // 弹窗标题
+const schoolCardList = ref();
+const schoolCardSearch = ref(); // 微信卡号下拉框搜索词
+const schoolCardPage = ref(1);
+const schoolCardSize = ref(20);
+const schoolCardTotalPage = ref();
+const addDialogVisible = ref(false); // 控制添加账号弹窗
+
+const defaultProps = ref({
+  children: "children",
+  label: "name",
+});
+// 表单数据
+const formSize = ref("default");
+const ruleFormRef = ref();
+const ruleForm = reactive({
+  cardNum: "", // 微校卡号
+  corpnName: "", // 姓名
+  // corpnPhone: "", // 电话号码
+  dateTime:"",// 日期
+  id: "",
+});
+var checkUserName = (rule, value, callback) => {
+  if (!value) {
+    return callback(new Error("请输入用户名)"));
+  }
+
+  var reg = /^[a-zA-Z0-9]{5,16}$/;
+  if (!reg.test(value)) {
+    callback(new Error("必须为5-16个数字或字母!"));
+  } else {
+    callback();
+  }
+};
+var checkFullName = (rule, value, callback) => {
+  if (!value) {
+    return callback(new Error("请输入姓名"));
+  }
+
+  var reg = /^[\u4e00-\u9fa5]{2,6}$/;
+  if (!reg.test(value)) {
+    callback(new Error("必须为2-6个汉字!"));
+  } else {
+    callback();
+  }
+};
+var checkPhone = (rule, value, callback) => {
+  if (!value) {
+    return callback(new Error("请输入手机号"));
+  }
+  setTimeout(() => {
+    var reg = /^1[3456789]\d{9}$/;
+    if (!reg.test(value)) {
+      callback(new Error("手机号格式不对"));
+    } else {
+      callback();
+    }
+  }, 100);
+};
+// 表单验证
+const rules = reactive({
+  corpnName: [
+    { required: true, message: "姓名不能为空", trigger: "blur" },
+    { validator: checkFullName, trigger: "blur" },
+  ],
+  cardNum: [{ required: true, message: "微校卡号不能为空", trigger: "blur" }],
+  // ^(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*,\._\+(){}])[0-9a-zA-Z!@#$%^&*,\\._\+(){}]{8,20}$
+  corpnPhone: [
+    {
+      required: true,
+      message: "电话号码不能为空",
+      trigger: "blur",
+    },
+    // { validator: checkPhone, trigger: "blur" },
+  ],
+  dateTime: [
+    {
+      required: true,
+      message: "时间不能为空",
+      trigger: "blur",
+    },
+    // { validator: checkPhone, trigger: "blur" },
+  ],
+});
+
 // 查看员工列表
 // 查看员工列表
 const getList = async () => {
 const getList = async () => {
   loading.value = true;
   loading.value = true;
   let data = {
   let data = {
     teacherName: searchInput.keyWord, // 关键字查询
     teacherName: searchInput.keyWord, // 关键字查询
-    stateTime:"",
-    endTime:""
+    stateTime: "",
+    endTime: "",
   };
   };
   if (searchInput.createTime) {
   if (searchInput.createTime) {
     data.stateTime = searchInput.createTime[0];
     data.stateTime = searchInput.createTime[0];
@@ -203,11 +422,16 @@ const getList = async () => {
     },
     },
     params: data,
     params: data,
   });
   });
-  console.log(res, "房价管理");
+  console.log(res, "值班管理");
   if (res.data.code == 200) {
   if (res.data.code == 200) {
     let maxNum = 0;
     let maxNum = 0;
     res.data.data.forEach((item) => {
     res.data.data.forEach((item) => {
       item.list = item.classListVo.list;
       item.list = item.classListVo.list;
+      if (item.list) {
+        item.list.forEach((j) => {
+          j.selDel = false;
+        });
+      }
       item.remarks = item.classListVo.remarks;
       item.remarks = item.classListVo.remarks;
       if (item.classListVo.list.length > maxNum) {
       if (item.classListVo.list.length > maxNum) {
         maxNum = item.classListVo.list.length;
         maxNum = item.classListVo.list.length;
@@ -228,13 +452,228 @@ const getList = async () => {
   }
   }
 };
 };
 
 
+// 勾选删除功能
+const selDelChange = (val, row) => {
+  console.log(val, row);
+  row.selDel = val;
+  // console.log(tableData.list);
+};
+// 确定删除
+const delClass = async () => {
+  let arrId = [];
+  tableData.list.forEach((item) => {
+    if (item.list) {
+      item.list.forEach((j) => {
+        if (j.selDel) {
+          arrId.push(j.id);
+        }
+      });
+    }
+  });
+  console.log(arrId);
+  let res = await axios({
+    method: "post",
+    url: api.value + "/class-schedule/deleteSchedule",
+    headers: {
+      token: sessionStorage.getItem("token"),
+      user_head: sessionStorage.getItem("user_head"),
+    },
+    data: arrId,
+  });
+  console.log(res, "房价管理");
+  if (res.data.code == 200) {
+    getList();
+    ElMessage({
+      type: "success",
+      showClose: true,
+      message: res.data.message,
+      center: true,
+    });
+  } else {
+    ElMessage({
+      type: "error",
+      showClose: true,
+      message: res.data.message,
+      center: true,
+    });
+  }
+};
+
 // 搜索功能  改变日期和房型改变数据
 // 搜索功能  改变日期和房型改变数据
-const searchBtn = () => {
+const searchBtn = lodash.debounce(async () => {
   getList();
   getList();
+}, 300);
+
+// 微校卡号数据 (-----------------------------------------------------)
+const schoolData = async () => {
+  schoolCardPage.value = 1;
+  let data = {
+    permissionSettingId: sessionStorage.getItem("permissionSettingId"),
+    page: schoolCardPage.value,
+    size: schoolCardSize.value,
+    keyWord: schoolCardSearch.value,
+  };
+  let res = await axios({
+    method: "post",
+    url: api.value + "/admin/getUsersPage",
+    headers: {
+      token: sessionStorage.getItem("token"),
+      user_head: sessionStorage.getItem("user_head"),
+    },
+    data: data,
+  });
+  console.log(res, "微校卡号人");
+  if (res.data.code == 200) {
+    schoolCardList.value = res.data.data.records;
+    schoolCardTotalPage.value = res.data.data.pages;
+  } else {
+    ElMessage({
+      type: "error",
+      showClose: true,
+      message: res.data.message,
+      center: true,
+    });
+  }
+};
+// 微校卡号搜索
+const conteactMethod = (query) => {
+  console.log(query);
+  schoolCardSearch.value = query;
+  schoolData();
+};
+// 加载更多微校卡号
+const addschoolCardListMore = async () => {
+  if (schoolCardPage.value < schoolCardTotalPage.value) {
+    schoolCardPage.value++;
+    // console.log(conteactListInput.value, "滚动里面");
+    let data = {
+      permissionSettingId: sessionStorage.getItem("permissionSettingId"),
+      page: schoolCardPage.value,
+      size: schoolCardSize.value,
+      keyWord: schoolCardSearch.value,
+    };
+    let res = await axios({
+      method: "post",
+      url: api.value + "/admin/getUsersPage",
+      headers: {
+        token: sessionStorage.getItem("token"),
+        user_head: sessionStorage.getItem("user_head"),
+      },
+      data: data,
+    });
+    console.log(res, "微校卡号人员加载更多");
+    if (res.data.code == 200) {
+      // schoolCardList.value = res.data.data.records;
+      // schoolCardTotalPage.value = res.data.data.pages;
+      schoolCardList.value = [
+        ...schoolCardList.value,
+        ...res.data.data.records,
+      ];
+    } else {
+      ElMessage({
+        type: "error",
+        showClose: true,
+        message: res.data.message,
+        center: true,
+      });
+    }
+  } else {
+    console.log("数据全部加载完成");
+  }
+};
+// 改变微校卡号
+const schoolCardChange = async (value) => {
+  console.log(value);
+  let data = {
+    permissionSettingId: sessionStorage.getItem("permissionSettingId"),
+    page: 1,
+    size: 20,
+    keyWord: value,
+  };
+  let res = await axios({
+    method: "post",
+    url: api.value + "/admin/getUsersPage",
+    headers: {
+      token: sessionStorage.getItem("token"),
+      user_head: sessionStorage.getItem("user_head"),
+    },
+    data: data,
+  });
+  console.log(res, "微校卡号人");
+  if (res.data.code == 200) {
+    let resdata = res;
+    ruleForm.corpnName = res.data.data.records[0].userName;
+    ruleForm.corpnPhone = res.data.data.records[0].phone;
+    ruleForm.department = res.data.data.records[0].department;
+  } else {
+    ElMessage({
+      type: "error",
+      showClose: true,
+      message: res.data.message,
+      center: true,
+    });
+  }
 };
 };
-// const searchData = lodash.debounce(async () => {
-//   getList();
-// }, 300);
+
+// 添加账号 (---------------------------------===============================)
+const addClass = () => {
+  dialongTitle.value = "新增值班教师";
+  addDialogVisible.value = true;
+  // ruleForm.corpnPhone = "";
+  ruleForm.corpnName = "";
+  ruleForm.cardNum = "";
+  ruleForm.dateTime = "";
+  ruleForm.id = "";
+};
+// 取消添加员工
+const cancelAdd = () => {
+  addDialogVisible.value = false;
+  ruleFormRef.value.resetFields();
+};
+
+// 确认添加值班老师
+const submitAdd = lodash.debounce(async (formEl) => {
+  if (!formEl) return;
+  await formEl.validate(async (valid, fields) => {
+    if (valid) {
+      let data ={
+      	"jsgh": ruleForm.cardNum, //微校卡号
+      	"jsxm": ruleForm.corpnName,
+      	"dateTime": ruleForm.dateTime //日期
+      }
+      let res = await axios({
+        method: "post",
+        url: api.value + "/class-schedule/insertSchedule",
+        headers: {
+          token: sessionStorage.getItem("token"),
+          user_head: sessionStorage.getItem("user_head"),
+        },
+        data: data,
+      });
+      console.log(res, "确认添加值班老师");
+      if (res.data.code == 200) {
+        getList();
+        ElMessage({
+          type: "success",
+          showClose: true,
+          message: res.data.message,
+          center: true,
+        });
+        addDialogVisible.value = false;
+        ruleFormRef.value.resetFields();
+      } else {
+        ElMessage({
+          type: "error",
+          showClose: true,
+          message: res.data.message,
+          center: true,
+        });
+      }
+    } else {
+      console.log("error submit!", fields);
+    }
+  });
+}, 1000);
 
 
 // 导入 (--------------------------------------------------------------)
 // 导入 (--------------------------------------------------------------)
 const handleRemove = (uploadFile, uploadFiles) => {
 const handleRemove = (uploadFile, uploadFiles) => {
@@ -250,7 +689,7 @@ const beforeAvatarUpload = (rawFile) => {
   // if (rawFile.type !== "image/jpeg") {
   // if (rawFile.type !== "image/jpeg") {
   //   ElMessage.error("图片格式必须为JPG/PNG格式!");
   //   ElMessage.error("图片格式必须为JPG/PNG格式!");
   //   return false;
   //   return false;
-  // } 
+  // }
   // return true;
   // return true;
 };
 };
 // 添加照片时往fileList列表中添加图片信息
 // 添加照片时往fileList列表中添加图片信息
@@ -273,7 +712,7 @@ const handleUpload = async (file) => {
   });
   });
   console.log(res, "导入课表信息");
   console.log(res, "导入课表信息");
   if (res.data.code == 200) {
   if (res.data.code == 200) {
-    getList()
+    getList();
     ElMessage({
     ElMessage({
       type: "success",
       type: "success",
       showClose: true,
       showClose: true,
@@ -294,8 +733,8 @@ const handleUpload = async (file) => {
 const importExcel = lodash.debounce(async () => {
 const importExcel = lodash.debounce(async () => {
   let data = {
   let data = {
     teacherName: searchInput.keyWord, // 关键字查询
     teacherName: searchInput.keyWord, // 关键字查询
-    stateTime:"",
-    endTime:""
+    stateTime: "",
+    endTime: "",
   };
   };
   if (searchInput.createTime) {
   if (searchInput.createTime) {
     data.stateTime = searchInput.createTime[0];
     data.stateTime = searchInput.createTime[0];
@@ -367,9 +806,9 @@ onBeforeMount(async () => {
   flagBtn.value = btnflag.classs;
   flagBtn.value = btnflag.classs;
   console.log(flagBtn.value, "按钮权限");
   console.log(flagBtn.value, "按钮权限");
 
 
-  const startTime=dayjs().format('YYYY-MM-DD');
-  const endTime=dayjs(startTime).add(6,'day').format('YYYY-MM-DD')
-  searchInput.createTime=[startTime,endTime]
+  const startTime = dayjs().format("YYYY-MM-DD");
+  const endTime = dayjs(startTime).add(6, "day").format("YYYY-MM-DD");
+  searchInput.createTime = [startTime, endTime];
   // const data = {
   // const data = {
   //   managerId: sessionStorage.getItem("token"),
   //   managerId: sessionStorage.getItem("token"),
   // };
   // };
@@ -393,8 +832,8 @@ onBeforeMount(async () => {
 
 
 <style scoped lang="scss">
 <style scoped lang="scss">
 .content-box {
 .content-box {
-  width: 97.5%;
-  height: 89%;
+  width: calc(100% - 40px);
+  height: calc(100% - 105px);
   margin: 20px auto;
   margin: 20px auto;
   background-color: #fff;
   background-color: #fff;
   color: #fff;
   color: #fff;
@@ -424,9 +863,9 @@ onBeforeMount(async () => {
   }
   }
 
 
   .middle {
   .middle {
-    width: 96%;
+    width: calc(100% - 60px);
     margin: 0 auto;
     margin: 0 auto;
-
+    padding:0 0 16px 0;
     color: #000;
     color: #000;
 
 
     // border-bottom: 1px solid rgb(231, 231, 231);
     // border-bottom: 1px solid rgb(231, 231, 231);
@@ -434,13 +873,12 @@ onBeforeMount(async () => {
       display: flex;
       display: flex;
       align-items: center;
       align-items: center;
       justify-content: space-between;
       justify-content: space-between;
-      margin-top: 10px;
 
 
       .filter_block {
       .filter_block {
         display: flex;
         display: flex;
-        .avatar-uploader{
+        .avatar-uploader {
           margin-right: 20px;
           margin-right: 20px;
-          :deep(.el-upload-list){
+          :deep(.el-upload-list) {
             display: none;
             display: none;
           }
           }
         }
         }
@@ -474,11 +912,16 @@ onBeforeMount(async () => {
       margin: 20px auto;
       margin: 20px auto;
     }
     }
   }
   }
-
+  .scroll{
+    height: calc(100% - 61px);
+    display: flex;
+    flex-direction: column;
+  }
   .footer {
   .footer {
-    width: 96%;
-    height: 550px;
-    margin: 10px auto 30px;
+    width:calc(100% - 60px);
+    flex: 1;
+    margin: 0 auto ;
+    overflow: auto;
 
 
     .el-table--fit {
     .el-table--fit {
       height: 100%;
       height: 100%;
@@ -564,7 +1007,42 @@ onBeforeMount(async () => {
       }
       }
     }
     }
   }
   }
+  // 添加员工弹窗样式
+  :deep(.addStaff) {
+    //   height: 420px;
+    border-radius: 11px;
+    .el-dialog__header {
+      border-radius: 11px 11px 0 0;
+      background: rgba(237, 241, 245, 1);
+      font-weight: 600;
+      margin: 0;
+      .el-dialog__headerbtn {
+        outline: none;
+      }
+    }
+    .el-dialog__body {
+      padding: 20px 20px 10px 20px;
+      .el-input {
+        width: 200px;
+        .el-input__suffix-inner {
+          color: rgba(61, 81, 232, 1);
+        }
+      }
 
 
+      .options {
+        margin: 10px 20px 20px 0;
+        width: 100%;
+        .el-form-item__content {
+          display: flex;
+          flex-direction: row-reverse;
+        }
+        .queding {
+          color: #fff;
+          margin-left: 15px;
+        }
+      }
+    }
+  }
   // 批量改价
   // 批量改价
   :deep(.roomCloseDilog) {
   :deep(.roomCloseDilog) {
     // height: 540px;
     // height: 540px;
@@ -887,7 +1365,7 @@ onBeforeMount(async () => {
       .pageSize {
       .pageSize {
         margin: 10px 0 10px 0;
         margin: 10px 0 10px 0;
       }
       }
-
+      
       .footer {
       .footer {
         width: 96%;
         width: 96%;
         // height: 402px;
         // height: 402px;

+ 10 - 10
src/views/doorLock/doorLock.vue

@@ -11,7 +11,7 @@
             <el-input
             <el-input
               :clearable="true"
               :clearable="true"
               @clear="searchBtn"
               @clear="searchBtn"
-              v-model="searchInput.keyWord"
+              v-model.trim="searchInput.keyWord"
               class="w-50 m-2"
               class="w-50 m-2"
               placeholder="请输入关键字查询"
               placeholder="请输入关键字查询"
               style="width: 230px"
               style="width: 230px"
@@ -436,7 +436,7 @@
             <el-form-item label="绑定设备 :" prop="luid">
             <el-form-item label="绑定设备 :" prop="luid">
               <el-input
               <el-input
                 style="width: 250px"
                 style="width: 250px"
-                v-model="bindingList.luid"
+                v-model.trim="bindingList.luid"
                 placeholder="请输入设备id"
                 placeholder="请输入设备id"
                 clearable
                 clearable
               />
               />
@@ -1011,7 +1011,7 @@
               />
               />
             </el-select>
             </el-select>
             <el-input
             <el-input
-              v-model="passManagementRuleForm.name"
+              v-model.trim="passManagementRuleForm.name"
               placeholder="请输入用户"
               placeholder="请输入用户"
               style="width: 500px"
               style="width: 500px"
               v-if="keypassflag == '自定义'"
               v-if="keypassflag == '自定义'"
@@ -1024,7 +1024,7 @@
             v-if="keypassflag == '自定义'"
             v-if="keypassflag == '自定义'"
           >
           >
             <el-input
             <el-input
-              v-model="passManagementRuleForm.phone"
+              v-model.trim="passManagementRuleForm.phone"
               placeholder="请输入号码"
               placeholder="请输入号码"
               style="width: 500px"
               style="width: 500px"
             >
             >
@@ -1032,7 +1032,7 @@
           </el-form-item>
           </el-form-item>
           <el-form-item label="密码 :" prop="pass">
           <el-form-item label="密码 :" prop="pass">
             <el-input
             <el-input
-              v-model="passManagementRuleForm.pass"
+              v-model.trim="passManagementRuleForm.pass"
               placeholder="请输入6-8位数密码或者点击随机生成"
               placeholder="请输入6-8位数密码或者点击随机生成"
               style="width: 500px"
               style="width: 500px"
             >
             >
@@ -1132,7 +1132,7 @@
               />
               />
             </el-select>
             </el-select>
             <el-input
             <el-input
-              v-model="fingerprintRuleForm.name"
+              v-model.trim="fingerprintRuleForm.name"
               placeholder="请输入用户"
               placeholder="请输入用户"
               style="width: 214px"
               style="width: 214px"
               v-if="keypassflag == '自定义'"
               v-if="keypassflag == '自定义'"
@@ -1144,7 +1144,7 @@
             v-if="keypassflag == '自定义'"
             v-if="keypassflag == '自定义'"
           >
           >
             <el-input
             <el-input
-              v-model="fingerprintRuleForm.phone"
+              v-model.trim="fingerprintRuleForm.phone"
               placeholder="请输入号码"
               placeholder="请输入号码"
               style="width: 214px"
               style="width: 214px"
             >
             >
@@ -1281,7 +1281,7 @@
               />
               />
             </el-select>
             </el-select>
             <el-input
             <el-input
-              v-model="identityCardRuleForm.name"
+              v-model.trim="identityCardRuleForm.name"
               placeholder="请输入用户"
               placeholder="请输入用户"
               style="width: 214px"
               style="width: 214px"
               v-if="keypassflag == '自定义'"
               v-if="keypassflag == '自定义'"
@@ -1293,7 +1293,7 @@
             v-if="keypassflag == '自定义'"
             v-if="keypassflag == '自定义'"
           >
           >
             <el-input
             <el-input
-              v-model="identityCardRuleForm.phone"
+              v-model.trim="identityCardRuleForm.phone"
               placeholder="请输入号码"
               placeholder="请输入号码"
               style="width: 214px"
               style="width: 214px"
             />
             />
@@ -1309,7 +1309,7 @@
           </el-form-item> -->
           </el-form-item> -->
           <el-form-item label="卡号 :" prop="icCard">
           <el-form-item label="卡号 :" prop="icCard">
             <el-input
             <el-input
-              v-model="identityCardRuleForm.icCard"
+              v-model.trim="identityCardRuleForm.icCard"
               placeholder="请输入卡号"
               placeholder="请输入卡号"
               style="width: 300px"
               style="width: 300px"
               type="textarea"
               type="textarea"

+ 4 - 4
src/views/meter/meter.vue

@@ -12,7 +12,7 @@
             <el-input
             <el-input
               :clearable="true"
               :clearable="true"
               @clear="searchBtn"
               @clear="searchBtn"
-              v-model="searchInput.keyWord"
+              v-model.trim="searchInput.keyWord"
               style="width: 250px"
               style="width: 250px"
               placeholder="请输入房间号,电、水表设备编码"
               placeholder="请输入房间号,电、水表设备编码"
             />
             />
@@ -68,7 +68,7 @@
             /> -->
             /> -->
           </div>
           </div>
           <div class="condition">
           <div class="condition">
-            <span>房型 </span>
+            <span>房型名称 </span>
             <el-select
             <el-select
               style="width: 180px"
               style="width: 180px"
               v-model="searchInput.houseId"
               v-model="searchInput.houseId"
@@ -227,7 +227,7 @@
         >
         >
           <el-form-item label="水表编码 :" prop="SB_encoding">
           <el-form-item label="水表编码 :" prop="SB_encoding">
             <el-input
             <el-input
-              v-model="editRuleForm.SB_encoding"
+              v-model.trim="editRuleForm.SB_encoding"
               placeholder="请输入水表编码"
               placeholder="请输入水表编码"
               clearable
               clearable
               style="width: 500px"
               style="width: 500px"
@@ -235,7 +235,7 @@
           </el-form-item>
           </el-form-item>
           <el-form-item label="电表编码 :" prop="DB_encoding">
           <el-form-item label="电表编码 :" prop="DB_encoding">
             <el-input
             <el-input
-              v-model="editRuleForm.DB_encoding"
+              v-model.trim="editRuleForm.DB_encoding"
               placeholder="请输入电表编码"
               placeholder="请输入电表编码"
               clearable
               clearable
               style="width: 500px"
               style="width: 500px"

+ 324 - 197
src/views/order/order.vue

@@ -11,10 +11,10 @@
             <el-input
             <el-input
               :clearable="true"
               :clearable="true"
               @change="searchBtn"
               @change="searchBtn"
-              v-model="searchInput.keyWord"
+              v-model.trim="searchInput.keyWord"
               class="w-50 m-2"
               class="w-50 m-2"
-              placeholder="请输入预订人、手机号码、身份证"
-              style="width: 230px"
+              placeholder="请输入预订人、手机号码、身份证、房间号"
+              style="width: 290px"
             />
             />
           </div>
           </div>
           <div class="condition">
           <div class="condition">
@@ -42,7 +42,7 @@
               class="m-2"
               class="m-2"
               style="width: 180px"
               style="width: 180px"
               placeholder="请选择房间类型"
               placeholder="请选择房间类型"
-              @change="searchBtn"
+              @change="houseTypeChange"
             >
             >
               <el-option label="全日房" :value="1" />
               <el-option label="全日房" :value="1" />
               <el-option label="钟点房" :value="2" />
               <el-option label="钟点房" :value="2" />
@@ -84,6 +84,7 @@
               <el-option label="已退款" :value="7" />
               <el-option label="已退款" :value="7" />
               <el-option label="已退房" :value="8" />
               <el-option label="已退房" :value="8" />
               <el-option label="已取消,超时" :value="9" />
               <el-option label="已取消,超时" :value="9" />
+              <el-option label="已支付,未入住" :value="10" />
             </el-select>
             </el-select>
           </div>
           </div>
           <div class="condition">
           <div class="condition">
@@ -256,7 +257,6 @@
           </el-table-column>
           </el-table-column>
           <el-table-column
           <el-table-column
             align="center"
             align="center"
-            prop="houseName"
             width="140"
             width="140"
             label="钥匙类型"
             label="钥匙类型"
           >
           >
@@ -277,6 +277,18 @@
                   src="../../assets/icons/eyes.png"
                   src="../../assets/icons/eyes.png"
                   alt=""
                   alt=""
                 />
                 />
+                <img
+                  v-if="row.orderStart == 8"
+                  @click="lookPassword(row)"
+                  style="
+                    width: 25px;
+                    cursor: pointer;
+                    margin-left: 3px;
+                    transform: translateY(3px);
+                  "
+                  src="../../assets/icons/passEyes.png"
+                  alt=""
+                />
               </div>
               </div>
               <div v-if="row.lockStatus == 2">
               <div v-if="row.lockStatus == 2">
                 <span>房卡</span>
                 <span>房卡</span>
@@ -413,7 +425,7 @@
             align="center"
             align="center"
             prop="orderStatusName"
             prop="orderStatusName"
             label="订单状态"
             label="订单状态"
-            width="120"
+            width="130"
           >
           >
             <template #default="{ row }">
             <template #default="{ row }">
               <div style="color: #f07218" v-if="row.orderStart == 1">
               <div style="color: #f07218" v-if="row.orderStart == 1">
@@ -443,6 +455,9 @@
               <div style="color: #818282" v-if="row.orderStart == 9">
               <div style="color: #818282" v-if="row.orderStart == 9">
                 已取消,超时
                 已取消,超时
               </div>
               </div>
+              <div style="color: #eebe77" v-if="row.orderStart == 10">
+                已支付,未入住
+              </div>
             </template>
             </template>
           </el-table-column>
           </el-table-column>
           <el-table-column align="center" label="支付类型" width="120">
           <el-table-column align="center" label="支付类型" width="120">
@@ -513,7 +528,7 @@
                 <!-- 取消订单 -->
                 <!-- 取消订单 -->
                 <el-popconfirm
                 <el-popconfirm
                   v-if="
                   v-if="
-                    (scope.row.orderStart == 1 || scope.row.orderStart == 2) &&
+                    scope.row.orderStart == 1 &&
                     flagBtn.quxiao == 1
                     flagBtn.quxiao == 1
                   "
                   "
                   width="220"
                   width="220"
@@ -529,13 +544,13 @@
                   </template>
                   </template>
                 </el-popconfirm>
                 </el-popconfirm>
                 <el-popconfirm
                 <el-popconfirm
-                  v-if="scope.row.orderStart == 3 && flagBtn.quxiao == 1"
+                  v-if="(scope.row.orderStart == 2 || scope.row.orderStart == 3) && flagBtn.quxiao == 1"
                   width="220"
                   width="220"
                   confirm-button-text="确认"
                   confirm-button-text="确认"
                   cancel-button-text="取消"
                   cancel-button-text="取消"
                   :icon="InfoFilled"
                   :icon="InfoFilled"
                   icon-color="#f89626"
                   icon-color="#f89626"
-                  title="当前取消订单不退款,是否继续?"
+                  title="当前订单已付款,取消订单 '将不退款' ,是否继续?"
                   @confirm="orderCancel(scope.row)"
                   @confirm="orderCancel(scope.row)"
                 >
                 >
                   <template #reference>
                   <template #reference>
@@ -629,6 +644,7 @@
                 >
                 >
                 <!-- 备注 -->
                 <!-- 备注 -->
                 <span
                 <span
+                  v-if="flagBtn.beizhu == 1"
                   style="cursor: pointer; margin: 0 10px"
                   style="cursor: pointer; margin: 0 10px"
                   @click="orderRemarkClick(scope.row)"
                   @click="orderRemarkClick(scope.row)"
                   >备注</span
                   >备注</span
@@ -664,54 +680,54 @@
           <div class="info">
           <div class="info">
             <div class="user">
             <div class="user">
               <div class="name">预订人</div>
               <div class="name">预订人</div>
-              <el-input v-model="order.userName" placeholder=""></el-input>
+              <el-input v-model.trim="order.userName" placeholder=""></el-input>
             </div>
             </div>
             <div class="user">
             <div class="user">
               <div class="name">联系方式</div>
               <div class="name">联系方式</div>
-              <el-input v-model="order.userPhone"></el-input>
+              <el-input v-model.trim="order.userPhone"></el-input>
             </div>
             </div>
           </div>
           </div>
           <div class="info">
           <div class="info">
             <div class="user">
             <div class="user">
               <div class="name">入住人</div>
               <div class="name">入住人</div>
-              <el-input v-model="order.liveName" placeholder=""></el-input>
+              <el-input v-model.trim="order.liveName" placeholder=""></el-input>
             </div>
             </div>
             <div class="user">
             <div class="user">
               <div class="name">身份证号</div>
               <div class="name">身份证号</div>
-              <el-input v-model="order.idCard"></el-input>
+              <el-input v-model.trim="order.idCard"></el-input>
             </div>
             </div>
           </div>
           </div>
           <div class="info">
           <div class="info">
             <div class="user">
             <div class="user">
               <div class="name">订单号</div>
               <div class="name">订单号</div>
-              <el-input v-model="order.orderNo"></el-input>
+              <el-input v-model.trim="order.orderNo"></el-input>
               <!-- <el-tooltip placement="top" :content="order.orderNo">
               <!-- <el-tooltip placement="top" :content="order.orderNo">
                 <el-input v-model="order.orderNo"></el-input>
                 <el-input v-model="order.orderNo"></el-input>
               </el-tooltip> -->
               </el-tooltip> -->
             </div>
             </div>
             <div class="user">
             <div class="user">
               <div class="name">支付金额(元)</div>
               <div class="name">支付金额(元)</div>
-              <el-input v-model="order.allOfReceiveAmount"></el-input>
+              <el-input v-model.trim="order.allOfReceiveAmount"></el-input>
             </div>
             </div>
           </div>
           </div>
           <div class="info">
           <div class="info">
             <div class="user">
             <div class="user">
               <div class="name">入住时间</div>
               <div class="name">入住时间</div>
-              <el-input v-model="order.realStartTime"></el-input>
+              <el-input v-model.trim="order.realStartTime"></el-input>
             </div>
             </div>
             <div class="user">
             <div class="user">
               <div class="name">离住时间</div>
               <div class="name">离住时间</div>
-              <el-input v-model="order.realEndTime"></el-input>
+              <el-input v-model.trim="order.realEndTime"></el-input>
             </div>
             </div>
           </div>
           </div>
           <div class="info">
           <div class="info">
             <div class="user">
             <div class="user">
               <div class="name">入住天数</div>
               <div class="name">入住天数</div>
-              <el-input v-model="order.housDay"></el-input>
+              <el-input v-model.trim="order.housDay"></el-input>
             </div>
             </div>
             <div class="user">
             <div class="user">
               <div class="name">支付时间</div>
               <div class="name">支付时间</div>
-              <el-input v-model="order.payTime"></el-input>
+              <el-input v-model.trim="order.payTime"></el-input>
             </div>
             </div>
           </div>
           </div>
 
 
@@ -837,7 +853,7 @@
               <div class="residentInfo">
               <div class="residentInfo">
                 <el-form-item label="预订人 :" prop="name">
                 <el-form-item label="预订人 :" prop="name">
                   <el-input
                   <el-input
-                    v-model="checkInRuleForm.name"
+                    v-model.trim="checkInRuleForm.name"
                     placeholder="请输入预订人"
                     placeholder="请输入预订人"
                     clearable
                     clearable
                     style="width: 150px"
                     style="width: 150px"
@@ -846,7 +862,7 @@
                 </el-form-item>
                 </el-form-item>
                 <el-form-item label="手机号码 :" prop="phone">
                 <el-form-item label="手机号码 :" prop="phone">
                   <el-input
                   <el-input
-                    v-model="checkInRuleForm.phone"
+                    v-model.trim="checkInRuleForm.phone"
                     placeholder="请输入手机号码"
                     placeholder="请输入手机号码"
                     clearable
                     clearable
                     style="width: 220px"
                     style="width: 220px"
@@ -857,15 +873,15 @@
               <div class="residentInfo">
               <div class="residentInfo">
                 <el-form-item label="入住人 :" prop="checkName">
                 <el-form-item label="入住人 :" prop="checkName">
                   <el-input
                   <el-input
-                    v-model="checkInRuleForm.checkName"
-                    placeholder="请输入预订人"
+                    v-model.trim="checkInRuleForm.checkName"
+                    placeholder="请输入入住人"
                     clearable
                     clearable
                     style="width: 150px"
                     style="width: 150px"
                   />
                   />
                 </el-form-item>
                 </el-form-item>
                 <el-form-item label="身份证号 :" prop="checkIdcard">
                 <el-form-item label="身份证号 :" prop="checkIdcard">
                   <el-input
                   <el-input
-                    v-model="checkInRuleForm.checkIdcard"
+                    v-model.trim="checkInRuleForm.checkIdcard"
                     placeholder="请输入身份证号"
                     placeholder="请输入身份证号"
                     clearable
                     clearable
                     style="width: 220px"
                     style="width: 220px"
@@ -919,7 +935,7 @@
                 <el-form-item label="房价 :" prop="roomPrice">
                 <el-form-item label="房价 :" prop="roomPrice">
                   <div class="block">
                   <div class="block">
                     <el-input
                     <el-input
-                      v-model="checkInRuleForm.roomPrice"
+                      v-model.trim="checkInRuleForm.roomPrice"
                       clearable
                       clearable
                       placeholder="请输入房价"
                       placeholder="请输入房价"
                       :disabled="true"
                       :disabled="true"
@@ -930,7 +946,7 @@
                 <el-form-item label="预住天数 :" prop="dayNum">
                 <el-form-item label="预住天数 :" prop="dayNum">
                   <div class="block">
                   <div class="block">
                     <el-input
                     <el-input
-                      v-model="checkInRuleForm.dayNum"
+                      v-model.trim="checkInRuleForm.dayNum"
                       placeholder="请输入预住天数"
                       placeholder="请输入预住天数"
                       clearable
                       clearable
                       :disabled="true"
                       :disabled="true"
@@ -1019,7 +1035,7 @@
                     prop="icCard"
                     prop="icCard"
                   >
                   >
                     <el-input
                     <el-input
-                      v-model="checkInRuleForm.icCard"
+                      v-model.trim="checkInRuleForm.icCard"
                       placeholder="请输入卡号"
                       placeholder="请输入卡号"
                       style="width: 400px"
                       style="width: 400px"
                       type="textarea"
                       type="textarea"
@@ -1064,6 +1080,7 @@
               >
               >
                 入住
                 入住
               </el-button>
               </el-button>
+              <span style="color:#e8a849" v-if="checkAdvanceTime">( 提示:当前未到入住时间,是否前提办理入住?)&nbsp;&nbsp;</span>
             </div>
             </div>
           </div>
           </div>
         </el-dialog>
         </el-dialog>
@@ -1093,12 +1110,11 @@
               <div class="titles">
               <div class="titles">
                 <img src="@/assets/icons/info.png" alt="" />
                 <img src="@/assets/icons/info.png" alt="" />
                 <span>订单信息 </span>
                 <span>订单信息 </span>
-                >
               </div>
               </div>
               <el-form-item label="入住订单 :" prop="order">
               <el-form-item label="入住订单 :" prop="order">
                 <div class="block">
                 <div class="block">
                   <el-input
                   <el-input
-                    v-model="payPriceRuleForm.order"
+                    v-model.trim="payPriceRuleForm.order"
                     clearable
                     clearable
                     placeholder="请输入入住订单"
                     placeholder="请输入入住订单"
                     :disabled="true"
                     :disabled="true"
@@ -1109,7 +1125,7 @@
               <el-form-item label="金额 :" prop="price">
               <el-form-item label="金额 :" prop="price">
                 <div class="block">
                 <div class="block">
                   <el-input
                   <el-input
-                    v-model="payPriceRuleForm.price"
+                    v-model.trim="payPriceRuleForm.price"
                     clearable
                     clearable
                     placeholder="请输入金额"
                     placeholder="请输入金额"
                     :disabled="false"
                     :disabled="false"
@@ -1221,7 +1237,17 @@
         >
         >
           <div class="middles">
           <div class="middles">
             <!-- <div class="content">确定退房吗?</div> -->
             <!-- <div class="content">确定退房吗?</div> -->
-            <div>
+            <div v-if="checkLockFlag == 2">
+              <div style="color: #e6a23c; margin: 10px 0">
+                提示:当前开锁方式为房卡时需要归还房卡!!!
+              </div>
+              <div class="content">是否归还了房卡?</div>
+              <el-radio-group v-model="checkOutForm.lockBack">
+                <el-radio :value="1" size="large">是</el-radio>
+                <el-radio :value="2" size="large">否</el-radio>
+              </el-radio-group>
+            </div>
+            <div v-else-if="checkLockFlag == 5">
               <div style="color: #e6a23c; margin: 10px 0">
               <div style="color: #e6a23c; margin: 10px 0">
                 提示:当前开锁方式为钥匙时需要归还钥匙!!!
                 提示:当前开锁方式为钥匙时需要归还钥匙!!!
               </div>
               </div>
@@ -1231,6 +1257,9 @@
                 <el-radio :value="2" size="large">否</el-radio>
                 <el-radio :value="2" size="large">否</el-radio>
               </el-radio-group>
               </el-radio-group>
             </div>
             </div>
+            <div v-else>
+              <div class="content">确定是否退房?</div>
+            </div>
             <div class="options">
             <div class="options">
               <el-button
               <el-button
                 color="rgba(41, 109, 227, 1)"
                 color="rgba(41, 109, 227, 1)"
@@ -1291,9 +1320,9 @@
             <!-- <div class="title">备注 :</div> -->
             <!-- <div class="title">备注 :</div> -->
             <div class="remark">
             <div class="remark">
               <el-input
               <el-input
-                v-model="remarkForm.remark"
+                v-model.trim="remarkForm.remark"
                 placeholder="请输入备注"
                 placeholder="请输入备注"
-                style="width: 420px;margin:20px 0 10px 0"
+                style="width: 420px; margin: 20px 0 10px 0"
                 type="textarea"
                 type="textarea"
                 rows="4"
                 rows="4"
               >
               >
@@ -1395,7 +1424,7 @@
               >
               >
               <el-input
               <el-input
                 clearable
                 clearable
-                v-model="roomChangeRuleForm.houseNumberNow"
+                v-model.trim="roomChangeRuleForm.houseNumberNow"
                 class="w-50 m-2"
                 class="w-50 m-2"
                 style="width: 80px"
                 style="width: 80px"
               />
               />
@@ -1403,7 +1432,7 @@
 
 
               <el-input
               <el-input
                 clearable
                 clearable
-                v-model="roomChangeRuleForm.roomPriceNow"
+                v-model.trim="roomChangeRuleForm.roomPriceNow"
                 class="w-50 m-2"
                 class="w-50 m-2"
                 style="width: 80px"
                 style="width: 80px"
               />
               />
@@ -1612,6 +1641,7 @@ const remarkForm = reactive({
 // 入住(---------------------------------------------------------)
 // 入住(---------------------------------------------------------)
 const orderDialogVisible = ref(false); // 控制添加员工弹窗
 const orderDialogVisible = ref(false); // 控制添加员工弹窗
 const changeIndex = ref(1);
 const changeIndex = ref(1);
+const checkAdvanceTime=ref(false); // 判断当前房间的入住时间和现在时间作对比,提前入住要提示
 const checkInIndex = ref(3);
 const checkInIndex = ref(3);
 const checkInRef = ref();
 const checkInRef = ref();
 const lockShow = ref(false);
 const lockShow = ref(false);
@@ -1782,6 +1812,14 @@ const payPriceRuleForm = reactive({
   id: "",
   id: "",
 });
 });
 // 表单验证
 // 表单验证
+var priceRules = (rule, value, callback) => {
+  let reg=/^(0|[1-9]\d*)(\.\d{1,2})?$/
+  if (reg.test(value)) {
+    callback();
+  } else {
+    callback(new Error("金额必须大于等于0且不能超过两位小数"));
+  }
+};
 const payPriceRules = reactive({
 const payPriceRules = reactive({
   order: [{ required: true, message: "入住订单不能为空", trigger: "blur" }],
   order: [{ required: true, message: "入住订单不能为空", trigger: "blur" }],
   price: [
   price: [
@@ -1790,6 +1828,7 @@ const payPriceRules = reactive({
       message: "金额不能为空",
       message: "金额不能为空",
       trigger: "blur",
       trigger: "blur",
     },
     },
+    { validator: priceRules, trigger: "blur" },
   ],
   ],
   type: [
   type: [
     {
     {
@@ -1861,6 +1900,9 @@ const schoolData = async () => {
 };
 };
 // 房型列表数据
 // 房型列表数据
 const roomTypeList = async () => {
 const roomTypeList = async () => {
+  const data = {
+    type: searchInput.houseType,
+  };
   let res = await axios({
   let res = await axios({
     method: "get",
     method: "get",
     url: api.value + "/house/displayBar",
     url: api.value + "/house/displayBar",
@@ -1868,6 +1910,7 @@ const roomTypeList = async () => {
       token: sessionStorage.getItem("token"),
       token: sessionStorage.getItem("token"),
       user_head: sessionStorage.getItem("user_head"),
       user_head: sessionStorage.getItem("user_head"),
     },
     },
+    params:data
   });
   });
   console.log(res, "房型列表数据");
   console.log(res, "房型列表数据");
   if (res.data.code == 200) {
   if (res.data.code == 200) {
@@ -2031,8 +2074,9 @@ const orderInfoClose = () => {
 // 入住弹窗 (----------------------------------------------)
 // 入住弹窗 (----------------------------------------------)
 const orderliveRoom = async (row) => {
 const orderliveRoom = async (row) => {
   console.log(row);
   console.log(row);
+  checkAdvanceTime.value = false;// 重置判断是否前提办理入住
+  // 判断有没有绑定门锁 没有的话只能用钥匙
   {
   {
-    // 判断有没有绑定门锁 没有的话只能用钥匙
     let data = {
     let data = {
       houseNumberId: row.houseNumberId,
       houseNumberId: row.houseNumberId,
     };
     };
@@ -2048,8 +2092,10 @@ const orderliveRoom = async (row) => {
     console.log(res, "判断房间是否绑定了设备");
     console.log(res, "判断房间是否绑定了设备");
     if (res.data.data.binging == 1) {
     if (res.data.data.binging == 1) {
       lockShow.value = true;
       lockShow.value = true;
+      checkInIndex.value = 3;
     } else {
     } else {
       lockShow.value = false;
       lockShow.value = false;
+      checkInIndex.value = 5;
       ElMessage({
       ElMessage({
         type: "warning",
         type: "warning",
         showClose: true,
         showClose: true,
@@ -2058,6 +2104,7 @@ const orderliveRoom = async (row) => {
       });
       });
     }
     }
   }
   }
+
   orderDialogVisible.value = true;
   orderDialogVisible.value = true;
   let data = {
   let data = {
     orderNumber: row.orderNumber,
     orderNumber: row.orderNumber,
@@ -2086,6 +2133,14 @@ const orderliveRoom = async (row) => {
     checkInRuleForm.houseNumberId = data.houseNumberId;
     checkInRuleForm.houseNumberId = data.houseNumberId;
     checkInRuleForm.orderNumber = data.orderNumber;
     checkInRuleForm.orderNumber = data.orderNumber;
     checkInRuleForm.forecastTime = data.reserveLiveTime;
     checkInRuleForm.forecastTime = data.reserveLiveTime;
+    let nowTime=dayjs().format('YYYY-MM-DD HH:mm:ss')
+    if(nowTime < checkInRuleForm.forecastTime){
+      checkAdvanceTime.value=true;
+    }
+    console.log(nowTime,'现在时间');
+    console.log(checkInRuleForm.forecastTime,'预抵日期');
+    console.log(nowTime < checkInRuleForm.forecastTime);
+
     checkInRuleForm.preionizationTime = data.reserveLeaveTime;
     checkInRuleForm.preionizationTime = data.reserveLeaveTime;
     checkInRuleForm.roomPrice = row.orderPrice;
     checkInRuleForm.roomPrice = row.orderPrice;
     checkInRuleForm.type = row.roomType;
     checkInRuleForm.type = row.roomType;
@@ -2228,76 +2283,6 @@ const cancelAddFingerprint = () => {
   // checkInRuleForm.pass = "";
   // checkInRuleForm.pass = "";
   ws.value.close();
   ws.value.close();
 };
 };
-// 选择日期时间段
-const radioFingerprintChange = (value) => {
-  // console.log(value);
-  radioFingerprintDate.value = value;
-  if (radioFingerprintDate.value == "一个星期") {
-    checkInRuleForm.failureTime = dayjs(checkInRuleForm.effectiveTime)
-      .add(1, "week")
-      .format("YYYY-MM-DD HH:mm:ss");
-  } else if (radioFingerprintDate.value == "一个月") {
-    checkInRuleForm.failureTime = dayjs(checkInRuleForm.effectiveTime)
-      .add(1, "month")
-      .format("YYYY-MM-DD HH:mm:ss");
-  } else if (radioFingerprintDate.value == "半年") {
-    checkInRuleForm.failureTime = dayjs(checkInRuleForm.effectiveTime)
-      .add(6, "month")
-      .format("YYYY-MM-DD HH:mm:ss");
-  } else if (radioFingerprintDate.value == "一年") {
-    checkInRuleForm.failureTime = dayjs(checkInRuleForm.effectiveTime)
-      .add(1, "year")
-      .format("YYYY-MM-DD HH:mm:ss");
-  } else if (radioFingerprintDate.value == "长期") {
-    checkInRuleForm.failureTime = dayjs(checkInRuleForm.effectiveTime)
-      .add(100, "year")
-      .format("YYYY-MM-DD HH:mm:ss");
-  }
-};
-// 改变生效日期
-const effectiveTimeChange = (val) => {
-  console.log(val);
-  if (radioFingerprintDate.value == "一个星期") {
-    checkInRuleForm.failureTime = dayjs(val)
-      .add(1, "week")
-      .format("YYYY-MM-DD HH:mm:ss");
-  } else if (radioFingerprintDate.value == "一个月") {
-    checkInRuleForm.failureTime = dayjs(val)
-      .add(1, "month")
-      .format("YYYY-MM-DD HH:mm:ss");
-  } else if (radioFingerprintDate.value == "半年") {
-    checkInRuleForm.failureTime = dayjs(val)
-      .add(6, "month")
-      .format("YYYY-MM-DD HH:mm:ss");
-  } else if (radioFingerprintDate.value == "一年") {
-    checkInRuleForm.failureTime = dayjs(val)
-      .add(1, "year")
-      .format("YYYY-MM-DD HH:mm:ss");
-  } else if (radioFingerprintDate.value == "长期") {
-    checkInRuleForm.failureTime = dayjs(val)
-      .add(100, "year")
-      .format("YYYY-MM-DD HH:mm:ss");
-  }
-};
-// 改变失效日期
-const failureTimeChange = (val) => {
-  console.log(val);
-  radioFingerprintDate.value = "";
-};
-// 判断失效日期大于生效日期
-const endT = () => {
-  if (checkInRuleForm.failureTime && checkInRuleForm.effectiveTime) {
-    if (checkInRuleForm.failureTime < checkInRuleForm.effectiveTime) {
-      ElMessage({
-        type: "error",
-        showClose: true,
-        message: "失效日期应大于生效日期至少一天",
-        center: true,
-      });
-      checkInRuleForm.failureTime = "";
-    }
-  }
-};
 
 
 const Card = () => {
 const Card = () => {
   var wsUrl = "ws://localhost:8181/";
   var wsUrl = "ws://localhost:8181/";
@@ -2426,21 +2411,11 @@ const configPayPrice = lodash.debounce(async (formEl) => {
   if (!formEl) return;
   if (!formEl) return;
   await formEl.validate(async (valid, fields) => {
   await formEl.validate(async (valid, fields) => {
     if (valid) {
     if (valid) {
-      let datassss = {
-        orderNumber: payPriceRuleForm.order,
-        payType: payPriceRuleForm.type,
-        price: payPriceRuleForm.price,
-      };
-      let resssss = await axios({
-        method: "post",
-        url: api.value + "/house-order/payOrderPrice",
-        headers: {
-          token: sessionStorage.getItem("token"),
-          user_head: sessionStorage.getItem("user_head"),
-        },
-        data: datassss,
-      });
-      if (resssss.data.code == 200) {
+      if (
+        checkInRuleForm.orderStatus == 2 ||
+        checkInRuleForm.orderStatus == 3
+      ) {
+        let liveTime=dayjs().format('YYYY-MM-DD HH:mm:ss')
         let data = {
         let data = {
           adminMenuId: sessionStorage.getItem("permissionSettingId"), //权限表id
           adminMenuId: sessionStorage.getItem("permissionSettingId"), //权限表id
           adminId: sessionStorage.getItem("id"), //用户id
           adminId: sessionStorage.getItem("id"), //用户id
@@ -2450,7 +2425,8 @@ const configPayPrice = lodash.debounce(async (formEl) => {
           // phone: checkInRuleForm.phone,
           // phone: checkInRuleForm.phone,
           idCard: checkInRuleForm.checkIdcard,
           idCard: checkInRuleForm.checkIdcard,
           // cardNumber: "", //有就填,没有就不填
           // cardNumber: "", //有就填,没有就不填
-          liveTime: checkInRuleForm.forecastTime,
+          // liveTime: checkInRuleForm.forecastTime,
+          liveTime: liveTime,
           leaveTime: checkInRuleForm.preionizationTime,
           leaveTime: checkInRuleForm.preionizationTime,
           payPrice: checkInRuleForm.roomPrice,
           payPrice: checkInRuleForm.roomPrice,
           liveDay: checkInRuleForm.dayNum,
           liveDay: checkInRuleForm.dayNum,
@@ -2475,12 +2451,12 @@ const configPayPrice = lodash.debounce(async (formEl) => {
           if (checkInIndex.value == 1) {
           if (checkInIndex.value == 1) {
             passVisible.value = true;
             passVisible.value = true;
             let data = {
             let data = {
-              houseNumberId: checkInRuleForm.houseNumberId,
-              dateTime: checkInRuleForm.forecastTime,
+              orderNumber: checkInRuleForm.orderNumber,
+              adminId: sessionStorage.getItem("permissionSettingId"),
             };
             };
             let res = await axios({
             let res = await axios({
               method: "get",
               method: "get",
-              url: api.value + "/house-number-state/particular",
+              url: api.value + "/house-order/particulars",
               headers: {
               headers: {
                 token: sessionStorage.getItem("token"),
                 token: sessionStorage.getItem("token"),
                 user_head: sessionStorage.getItem("user_head"),
                 user_head: sessionStorage.getItem("user_head"),
@@ -2489,9 +2465,12 @@ const configPayPrice = lodash.debounce(async (formEl) => {
             });
             });
             console.log(res, "点击房间查看详情");
             console.log(res, "点击房间查看详情");
             if (res.data.code == 200) {
             if (res.data.code == 200) {
-              passForm.pass = res.data.data.passWord;
-              passForm.reserveLiveTime = res.data.data.liveTime;
-              passForm.reserveLeaveTime = res.data.data.leaveTime;
+              passForm.pass = res.data.data.houseOrder.keyPassWord;
+              passForm.reserveLiveTime = dayjs(
+                res.data.data.houseOrder.liveTime
+              ).format("YYYY-MM-DD HH:mm:ss");
+              passForm.reserveLeaveTime =
+                res.data.data.houseOrder.reserveLeaveTime;
             }
             }
           } else {
           } else {
             orderDialogVisible.value = false;
             orderDialogVisible.value = false;
@@ -2513,15 +2492,108 @@ const configPayPrice = lodash.debounce(async (formEl) => {
           });
           });
         }
         }
       } else {
       } else {
-        ElMessage({
-          type: "error",
-          showClose: true,
-          message: resssss.data.message,
-          center: true,
+        let datassss = {
+          orderNumber: payPriceRuleForm.order,
+          payType: payPriceRuleForm.type,
+          price: payPriceRuleForm.price,
+        };
+        let resssss = await axios({
+          method: "post",
+          url: api.value + "/house-order/payOrderPrice",
+          headers: {
+            token: sessionStorage.getItem("token"),
+            user_head: sessionStorage.getItem("user_head"),
+          },
+          data: datassss,
         });
         });
+        if (resssss.data.code == 200) {
+          let liveTime=dayjs().format('YYYY-MM-DD HH:mm:ss')
+          let data = {
+            adminMenuId: sessionStorage.getItem("permissionSettingId"), //权限表id
+            adminId: sessionStorage.getItem("id"), //用户id
+            houseId: checkInRuleForm.houseId,
+            houseNumberId: checkInRuleForm.houseNumberId,
+            liveName: checkInRuleForm.checkName,
+            // phone: checkInRuleForm.phone,
+            idCard: checkInRuleForm.checkIdcard,
+            // cardNumber: "", //有就填,没有就不填
+            // liveTime: checkInRuleForm.forecastTime,
+            liveTime: liveTime,
+            leaveTime: checkInRuleForm.preionizationTime,
+            payPrice: checkInRuleForm.roomPrice,
+            liveDay: checkInRuleForm.dayNum,
+            lockStatus: checkInIndex.value, //开锁方式 1:密码,2:卡片 3:指纹
+            fingerprint: checkInRuleForm.fingerprintNum, // 指纹特征码 有就填,没有就不填
+            idCardInformation: checkInRuleForm.icCard, // 卡片特征码 有就填,没有就不填
+            orderNumber: checkInRuleForm.orderNumber, //有订单就填,没有就不填
+          };
+          let res = await axios({
+            method: "post",
+            url: api.value + "/house-number-state/checkIdCard",
+            headers: {
+              token: sessionStorage.getItem("token"),
+              user_head: sessionStorage.getItem("user_head"),
+            },
+            data: data,
+          });
+          console.log(res, "确定入住");
+          if (res.data.code == 200) {
+            getList();
+            // 支付入住成功弹窗查看密码弹窗
+            if (checkInIndex.value == 1) {
+              passVisible.value = true;
+              let data = {
+                orderNumber: checkInRuleForm.orderNumber,
+                adminId: sessionStorage.getItem("permissionSettingId"),
+              };
+              let res = await axios({
+                method: "get",
+                url: api.value + "/house-order/particulars",
+                headers: {
+                  token: sessionStorage.getItem("token"),
+                  user_head: sessionStorage.getItem("user_head"),
+                },
+                params: data,
+              });
+              console.log(res, "点击房间查看详情");
+              if (res.data.code == 200) {
+                passForm.pass = res.data.data.houseOrder.keyPassWord;
+                passForm.reserveLiveTime = dayjs(
+                  res.data.data.houseOrder.liveTime
+                ).format("YYYY-MM-DD HH:mm:ss");
+                passForm.reserveLeaveTime =
+                  res.data.data.houseOrder.reserveLeaveTime;
+              }
+            } else {
+              orderDialogVisible.value = false;
+              payPriceVisible.value = false;
+              paymentCodeVisible.value = false;
+            }
+            ElMessage({
+              type: "success",
+              showClose: true,
+              message: res.data.message,
+              center: true,
+            });
+          } else {
+            ElMessage({
+              type: "error",
+              showClose: true,
+              message: res.data.message,
+              center: true,
+            });
+          }
+        } else {
+          ElMessage({
+            type: "error",
+            showClose: true,
+            message: resssss.data.message,
+            center: true,
+          });
+        }
+        console.log(resssss, "扫码支付显示二维码");
       }
       }
 
 
-      console.log(resssss, "扫码支付显示二维码");
       // let data = new FormData();
       // let data = new FormData();
       // data.append("outTradeNo", payPriceRuleForm.order);
       // data.append("outTradeNo", payPriceRuleForm.order);
       // let res = await axios({
       // let res = await axios({
@@ -2598,6 +2670,7 @@ const paymentCodeClick = async () => {
         if (ress.data.code == 200) {
         if (ress.data.code == 200) {
           if (ress.data.data.tradeState == "SUCCESS") {
           if (ress.data.data.tradeState == "SUCCESS") {
             successPay.value = true;
             successPay.value = true;
+            let liveTime=dayjs().format('YYYY-MM-DD HH:mm:ss')
             let livedata = {
             let livedata = {
               adminMenuId: sessionStorage.getItem("permissionSettingId"), //权限表id
               adminMenuId: sessionStorage.getItem("permissionSettingId"), //权限表id
               adminId: sessionStorage.getItem("id"), //用户id
               adminId: sessionStorage.getItem("id"), //用户id
@@ -2607,7 +2680,8 @@ const paymentCodeClick = async () => {
               // phone: checkInRuleForm.phone,
               // phone: checkInRuleForm.phone,
               idCard: checkInRuleForm.checkIdcard,
               idCard: checkInRuleForm.checkIdcard,
               // cardNumber: "", //有就填,没有就不填
               // cardNumber: "", //有就填,没有就不填
-              liveTime: checkInRuleForm.forecastTime,
+              // liveTime: checkInRuleForm.forecastTime,
+              liveTime: liveTime,
               leaveTime: checkInRuleForm.preionizationTime,
               leaveTime: checkInRuleForm.preionizationTime,
               payPrice: checkInRuleForm.roomPrice,
               payPrice: checkInRuleForm.roomPrice,
               liveDay: checkInRuleForm.dayNum,
               liveDay: checkInRuleForm.dayNum,
@@ -2634,12 +2708,12 @@ const paymentCodeClick = async () => {
               if (checkInIndex.value == 1) {
               if (checkInIndex.value == 1) {
                 passVisible.value = true;
                 passVisible.value = true;
                 let data = {
                 let data = {
-                  houseNumberId: checkInRuleForm.houseNumberId,
-                  dateTime: checkInRuleForm.forecastTime,
+                  orderNumber: checkInRuleForm.orderNumber,
+                  adminId: sessionStorage.getItem("permissionSettingId"),
                 };
                 };
                 let res = await axios({
                 let res = await axios({
                   method: "get",
                   method: "get",
-                  url: api.value + "/house-number-state/particular",
+                  url: api.value + "/house-order/particulars",
                   headers: {
                   headers: {
                     token: sessionStorage.getItem("token"),
                     token: sessionStorage.getItem("token"),
                     user_head: sessionStorage.getItem("user_head"),
                     user_head: sessionStorage.getItem("user_head"),
@@ -2648,9 +2722,12 @@ const paymentCodeClick = async () => {
                 });
                 });
                 console.log(res, "点击房间查看详情");
                 console.log(res, "点击房间查看详情");
                 if (res.data.code == 200) {
                 if (res.data.code == 200) {
-                  passForm.pass = res.data.data.passWord;
-                  passForm.reserveLiveTime = res.data.data.liveTime;
-                  passForm.reserveLeaveTime = res.data.data.leaveTime;
+                  passForm.pass = res.data.data.houseOrder.keyPassWord;
+                  passForm.reserveLiveTime = dayjs(
+                    res.data.data.houseOrder.liveTime
+                  ).format("YYYY-MM-DD HH:mm:ss");
+                  passForm.reserveLeaveTime =
+                    res.data.data.houseOrder.reserveLeaveTime;
                 }
                 }
               } else {
               } else {
                 orderDialogVisible.value = false;
                 orderDialogVisible.value = false;
@@ -2699,8 +2776,13 @@ const lookPassword = (i) => {
   console.log(i);
   console.log(i);
   passVisible.value = true;
   passVisible.value = true;
   passForm.pass = i.keyPassWord;
   passForm.pass = i.keyPassWord;
-  passForm.reserveLiveTime = i.liveTime;
-  passForm.reserveLeaveTime = i.leaveTime;
+  if(i.orderStart==4){
+    passForm.reserveLiveTime = i.liveTime;
+    passForm.reserveLeaveTime = i.reserveLeaveTime;
+  }else if(i.orderStart==8){
+    passForm.reserveLiveTime = i.liveTime;
+    passForm.reserveLeaveTime = i.leaveTime;
+  }
 };
 };
 const cancelPass = () => {
 const cancelPass = () => {
   passVisible.value = false;
   passVisible.value = false;
@@ -2782,10 +2864,10 @@ const orderRemarkClick = (row) => {
   remarkForm.remark = row.remark;
   remarkForm.remark = row.remark;
   remarkForm.id = row.id;
   remarkForm.id = row.id;
 };
 };
-const orderRemarkConfig=async ()=>{
+const orderRemarkConfig = async () => {
   let datas = {
   let datas = {
     houseOrderId: remarkForm.id,
     houseOrderId: remarkForm.id,
-    remark:remarkForm.remark,
+    remark: remarkForm.remark,
   };
   };
   let ress = await axios({
   let ress = await axios({
     method: "get",
     method: "get",
@@ -2814,7 +2896,7 @@ const orderRemarkConfig=async ()=>{
       center: true,
       center: true,
     });
     });
   }
   }
-}
+};
 const orderRemarkCancel = () => {
 const orderRemarkCancel = () => {
   remarkVisible.value = false;
   remarkVisible.value = false;
 };
 };
@@ -2981,39 +3063,84 @@ const searchBtn = lodash.debounce(async () => {
   getList();
   getList();
 }, 300);
 }, 300);
 
 
+// 改变房间类型改变房间名称
+const houseTypeChange=(val)=>{
+  searchInput.houseId=""
+  roomTypeList().then(res=>{
+    searchBtn()
+  })
+}
+
 // 取消订单 (------------------------------------------------------)
 // 取消订单 (------------------------------------------------------)
 const orderCancel = async (row) => {
 const orderCancel = async (row) => {
   console.log(row, "取消预定");
   console.log(row, "取消预定");
-  let data = {
-    orderNumber: row.orderNumber,
-    houseNumberId: row.houseNumberId,
-    adminId: sessionStorage.getItem("permissionSettingId"),
-  };
-  let res = await axios({
-    method: "post",
-    url: api.value + "/house-order/cancel",
-    headers: {
-      token: sessionStorage.getItem("token"),
-      user_head: sessionStorage.getItem("user_head"),
-    },
-    data: data,
-  });
-  console.log(res, "取消预定");
-  if (res.data.code == 200) {
-    getList();
-    ElMessage({
-      type: "success",
-      showClose: true,
-      message: res.data.message,
-      center: true,
+  // 待支付订单
+  if(row.orderStart==1){
+    let data = {
+      orderNumber: row.orderNumber,
+      houseNumberId: row.houseNumberId,
+      adminId: sessionStorage.getItem("permissionSettingId"),
+    };
+    let res = await axios({
+      method: "post",
+      url: api.value + "/house-order/cancel",
+      headers: {
+        token: sessionStorage.getItem("token"),
+        user_head: sessionStorage.getItem("user_head"),
+      },
+      data: data,
     });
     });
-  } else {
-    ElMessage({
-      type: "error",
-      showClose: true,
-      message: res.data.message,
-      center: true,
+    console.log(res, "取消预定");
+    if (res.data.code == 200) {
+      getList();
+      ElMessage({
+        type: "success",
+        showClose: true,
+        message: res.data.message,
+        center: true,
+      });
+    } else {
+      ElMessage({
+        type: "error",
+        showClose: true,
+        message: res.data.message,
+        center: true,
+      });
+    }
+  }
+  // 已支付 未入住 订单
+  else if(row.orderStart==2 || row.orderStart==3){
+    let data = {
+      orderNumber: row.orderNumber,
+      houseNumberId: row.houseNumberId,
+      adminId: sessionStorage.getItem("permissionSettingId"),
+    };
+    let res = await axios({
+      method: "post",
+      url: api.value + "/house-order/payNotCheckIn",
+      headers: {
+        token: sessionStorage.getItem("token"),
+        user_head: sessionStorage.getItem("user_head"),
+      },
+      data: data,
     });
     });
+    console.log(res, "取消预定");
+    if (res.data.code == 200) {
+      getList();
+      ElMessage({
+        type: "success",
+        showClose: true,
+        message: res.data.message,
+        center: true,
+      });
+    } else {
+      ElMessage({
+        type: "error",
+        showClose: true,
+        message: res.data.message,
+        center: true,
+      });
+    }
   }
   }
 };
 };
 // 订单退款
 // 订单退款
@@ -4113,8 +4240,8 @@ onUnmounted(() => {
         }
         }
       }
       }
     }
     }
-     // 备注
-     :deep(.remarkDialog) {
+    // 备注
+    :deep(.remarkDialog) {
       /* // height: 600px; */
       /* // height: 600px; */
       overflow: hidden;
       overflow: hidden;
       border-radius: 11px;
       border-radius: 11px;
@@ -4136,33 +4263,33 @@ onUnmounted(() => {
 
 
       .el-dialog__body {
       .el-dialog__body {
         padding: 0px 20px 10px;
         padding: 0px 20px 10px;
-       .title{
-         padding:15px 0;
+        .title {
+          padding: 15px 0;
         }
         }
         .options {
         .options {
-            display: flex;
-            flex-direction: row-reverse;
-            align-items: center;
-            margin: 10px 0;
+          display: flex;
+          flex-direction: row-reverse;
+          align-items: center;
+          margin: 10px 0;
 
 
-            .queding {
-              margin-left: 20px;
-            }
+          .queding {
+            margin-left: 20px;
           }
           }
-          .item {
-            display: flex;
-            align-items: center;
-            margin: 24px 0;
+        }
+        .item {
+          display: flex;
+          align-items: center;
+          margin: 24px 0;
 
 
-            .title {
-              width: 100px;
-              text-align: right;
-              margin-right: 10px;
-            }
-          }
-          .againPass {
-            margin: 24px 0 40px 0;
+          .title {
+            width: 100px;
+            text-align: right;
+            margin-right: 10px;
           }
           }
+        }
+        .againPass {
+          margin: 24px 0 40px 0;
+        }
       }
       }
     }
     }
     // 确定入住 弹出支付页面弹窗
     // 确定入住 弹出支付页面弹窗

+ 175 - 77
src/views/process/process.vue

@@ -21,6 +21,39 @@
         规则设置
         规则设置
       </div>
       </div>
     </div>
     </div>
+    <div v-if="changeIndex == 2" class="regulation">
+      <!-- <div class="condition">
+        <span>可见范围&nbsp;&nbsp; </span>
+        <el-select
+          :clearable="false"
+          v-model="regulation.scope"
+          class="m-2"
+          placeholder="请选择可见范围"
+          style="width: 280px"
+        >
+          <el-option label="全部" :value="0" />
+          <el-option label="领导" :value="1" />
+          <el-option label="教师" :value="2" />
+        </el-select>
+      </div> -->
+      <div class="condition">
+        <span>指定终点 &nbsp;&nbsp;</span>
+        <el-select
+          :clearable="false"
+          v-model="regulation.destination"
+          class="m-2"
+          placeholder="请选择指定终点"
+          style="width: 280px"
+          @change="destinationChange"
+        >
+          <el-option label="最上级审批" :value="1" />
+          <el-option label="依次审批" :value="2" />
+        </el-select>
+      </div>
+      <div class="condition hint">
+        注:审批流程顺序从下至上,如多个上级,只需一个上级同意即可
+      </div>
+    </div>
     <div class="middle" v-if="changeIndex == 1">
     <div class="middle" v-if="changeIndex == 1">
       <div class="search">
       <div class="search">
         <div class="filter">
         <div class="filter">
@@ -121,28 +154,29 @@
             </el-select>
             </el-select>
           </div> -->
           </div> -->
         </div>
         </div>
+        <div class="inputSearch">
+          <el-input
+            :clearable="true"
+            @clear="searchBtn"
+            v-model.trim="searchInput.keyWord"
+            class="w-50 m-2"
+            placeholder="请输入关键字查询"
+            style="width: 230px"
+          />
+          <el-button
+            style="margin-left: 20px"
+            color="rgba(41, 109, 227, 1)"
+            type="primary"
+            class="search"
+            @click="searchBtn"
+            ><el-icon>
+              <Search />
+            </el-icon>
+            <span>查询</span></el-button
+          >
+        </div>
       </div>
       </div>
-      <div class="inputSearch">
-        <el-input
-          :clearable="true"
-          @clear="searchBtn"
-          v-model="searchInput.keyWord"
-          class="w-50 m-2"
-          placeholder="请输入关键字查询"
-          style="width: 230px"
-        />
-        <el-button
-          style="margin-left: 20px"
-          color="rgba(41, 109, 227, 1)"
-          type="primary"
-          class="search"
-          @click="searchBtn"
-          ><el-icon>
-            <Search />
-          </el-icon>
-          <span>查询</span></el-button
-        >
-      </div>
+
       <div class="scroll">
       <div class="scroll">
         <div class="footer" v-loading="loading">
         <div class="footer" v-loading="loading">
           <el-table
           <el-table
@@ -174,6 +208,13 @@
               label="提交时间"
               label="提交时间"
               width="180"
               width="180"
             />
             />
+            <el-table-column
+              align="center"
+              prop="reasonApplication"
+              label="申请原因"
+              show-overflow-tooltip
+              width="150"
+            />
             <!-- <el-table-column align="center" prop="houseName" label="审批类型" /> -->
             <!-- <el-table-column align="center" prop="houseName" label="审批类型" /> -->
             <el-table-column
             <el-table-column
               align="center"
               align="center"
@@ -189,12 +230,12 @@
               width="150"
               width="150"
             />
             />
             <el-table-column align="center" prop="usersName" label="提交人" />
             <el-table-column align="center" prop="usersName" label="提交人" />
-            <el-table-column
+            <!-- <el-table-column
               align="center"
               align="center"
               width="120"
               width="120"
               prop="changeUsersName"
               prop="changeUsersName"
               label="替课老师"
               label="替课老师"
-            />
+            /> -->
             <el-table-column
             <el-table-column
               align="center"
               align="center"
               prop="secondaryExamineAndApproveTime"
               prop="secondaryExamineAndApproveTime"
@@ -220,7 +261,7 @@
             </el-table-column>
             </el-table-column>
             <el-table-column
             <el-table-column
               align="center"
               align="center"
-              prop="approverUserName"
+              prop="approverName"
               label="审批人"
               label="审批人"
             />
             />
             <el-table-column align="center" width="100" label="状态"
             <el-table-column align="center" width="100" label="状态"
@@ -239,24 +280,82 @@
             >
             >
               <template #default="{ row }">
               <template #default="{ row }">
                 <div class="options">
                 <div class="options">
+                  <!-- T0级  最上级审批 -->
                   <div
                   <div
-                    class="agree"
-                    v-if="
-                      (row.status == 1 || row.status == 2) &&
-                      flagBtn.tongyi == 1
-                    "
-                    @click="agreeRemarksClick(row)"
+                    class="options"
+                    v-if="adminMenuParentId == 0 && destinatio == 1"
                   >
                   >
-                    同意
+                    <div
+                      class="agree"
+                      v-if="
+                        (row.status == 1 || row.status == 2) &&
+                        flagBtn.tongyi == 1
+                      "
+                      @click="agreeRemarksClick(row)"
+                    >
+                      同意
+                    </div>
+                    <div
+                      class="reject"
+                      v-if="
+                        (row.status == 1 || row.status == 2) &&
+                        flagBtn.bohui == 1
+                      "
+                      @click="rejectRemarksClick(row)"
+                    >
+                      驳回
+                    </div>
                   </div>
                   </div>
+                  <!-- T0级  依次审批 -->
                   <div
                   <div
-                    class="reject"
-                    v-if="
-                      (row.status == 1 || row.status == 2) && flagBtn.bohui == 1
-                    "
-                    @click="rejectRemarksClick(row)"
+                    class="options"
+                    v-if="adminMenuParentId == 0 && destinatio == 2"
                   >
                   >
-                    驳回
+                    <div
+                      class="agree"
+                      v-if="
+                        (row.status == 1 || row.status == 2) &&
+                        flagBtn.tongyi == 1
+                      "
+                      @click="agreeRemarksClick(row)"
+                    >
+                      同意
+                    </div>
+                    <div
+                      class="reject"
+                      v-if="
+                        (row.status == 1 || row.status == 2) &&
+                        flagBtn.bohui == 1
+                      "
+                      @click="rejectRemarksClick(row)"
+                    >
+                      驳回
+                    </div>
+                  </div>
+                  <!-- T1级  最上级审批 -->
+                  <div
+                    class="options"
+                    v-if="adminMenuParentId == 1 && destinatio == 1"
+                  ></div>
+                  <!-- T1级  依次审批 -->
+                  <div
+                    class="options"
+                    v-if="adminMenuParentId == 1 && destinatio == 2"
+                  >
+                    <div
+                      class="agree"
+                      v-if="row.status == 1 && flagBtn.tongyi == 1"
+                      @click="agreeRemarksClick(row)"
+                    >
+                      同意
+                    </div>
+                    <div
+                      class="reject"
+                      v-if="row.status == 1 && flagBtn.bohui == 1"
+                      @click="rejectRemarksClick(row)"
+                    >
+                      驳回
+                    </div>
                   </div>
                   </div>
                 </div>
                 </div>
               </template>
               </template>
@@ -299,7 +398,7 @@
         >
         >
           <el-form-item label="审批备注 :" prop="remarks">
           <el-form-item label="审批备注 :" prop="remarks">
             <el-input
             <el-input
-              v-model="remarksRuleForm.remarks"
+              v-model.trim="remarksRuleForm.remarks"
               :rows="8"
               :rows="8"
               show-word-limit
               show-word-limit
               maxlength="50"
               maxlength="50"
@@ -323,39 +422,6 @@
         </div>
         </div>
       </el-dialog>
       </el-dialog>
     </div>
     </div>
-    <div v-if="changeIndex == 2" class="regulation">
-      <!-- <div class="condition">
-        <span>可见范围&nbsp;&nbsp; </span>
-        <el-select
-          :clearable="false"
-          v-model="regulation.scope"
-          class="m-2"
-          placeholder="请选择可见范围"
-          style="width: 280px"
-        >
-          <el-option label="全部" :value="0" />
-          <el-option label="领导" :value="1" />
-          <el-option label="教师" :value="2" />
-        </el-select>
-      </div> -->
-      <div class="condition">
-        <span>指定终点 &nbsp;&nbsp;</span>
-        <el-select
-          :clearable="false"
-          v-model="regulation.destination"
-          class="m-2"
-          placeholder="请选择指定终点"
-          style="width: 280px"
-          @change="destinationChange"
-        >
-          <el-option label="最上级审批" :value="1" />
-          <el-option label="依次审批" :value="2" />
-        </el-select>
-      </div>
-      <div class="condition hint">
-        注:审批流程顺序从下至上,如多个上级,只需一个上级同意即可
-      </div>
-    </div>
   </div>
   </div>
 </template>
 </template>
 
 
@@ -380,6 +446,8 @@ const store = useStore();
 const api = ref("");
 const api = ref("");
 const router = useRouter();
 const router = useRouter();
 const flagBtn = ref(); // 按钮权限
 const flagBtn = ref(); // 按钮权限
+const adminMenuParentId = ref(); // 判断是 T0级 还是 T1级
+const destinatio = ref(); // 判断是什么规则审批 (1最上级审批) (2依次审批)
 const changeIndex = ref(1); // 申请记录 规则设置 切换
 const changeIndex = ref(1); // 申请记录 规则设置 切换
 
 
 const searchInput = reactive({
 const searchInput = reactive({
@@ -388,7 +456,7 @@ const searchInput = reactive({
   approvalTime: "", // 审批时间
   approvalTime: "", // 审批时间
   status: 10, // 审批状态
   status: 10, // 审批状态
   flowType: 2, // 审批流程类型
   flowType: 2, // 审批流程类型
-  department: "", // 部门
+  // department: "", // 部门
 }); // 搜索按钮数据
 }); // 搜索按钮数据
 
 
 const nowDay = ref(dayjs().format("YYYY-MM-DD HH:mm:ss"));
 const nowDay = ref(dayjs().format("YYYY-MM-DD HH:mm:ss"));
@@ -679,9 +747,38 @@ const handleCurrentChange = (value) => {
 onBeforeMount(async () => {
 onBeforeMount(async () => {
   api.value = store.state.user.api;
   api.value = store.state.user.api;
   const btnflag = JSON.parse(sessionStorage.getItem("btnflag"));
   const btnflag = JSON.parse(sessionStorage.getItem("btnflag"));
+  adminMenuParentId.value = JSON.parse(
+    sessionStorage.getItem("adminMenuParentId")
+  );
   flagBtn.value = btnflag.process;
   flagBtn.value = btnflag.process;
   console.log(flagBtn.value, "按钮权限");
   console.log(flagBtn.value, "按钮权限");
   getList();
   getList();
+  // 判断是什么规则审批
+  let res = await axios({
+    method: "get",
+    url: api.value + "/application-procedure-setting/list",
+    headers: {
+      token: sessionStorage.getItem("token"),
+      user_head: sessionStorage.getItem("user_head"),
+    },
+    params: {
+      permissionSettingId: sessionStorage.getItem("permissionSettingId"),
+    },
+  });
+  console.log(res, "规则设置");
+  if (res.data.code == 200) {
+    destinatio.value = Number(res.data.data.approverType);
+  } else {
+    ElMessage({
+      type: "error",
+      showClose: true,
+      message: res.data.message,
+      center: true,
+    });
+  }
+  console.log(adminMenuParentId.value, "管理员等级 0 T0级 1 T1级");
+  console.log(destinatio.value, "规则 1最上级 2依次审批");
+
   // changeItem(changeIndex.value);
   // changeItem(changeIndex.value);
 });
 });
 onUnmounted(() => {
 onUnmounted(() => {
@@ -691,8 +788,8 @@ onUnmounted(() => {
 
 
 <style scoped lang="scss">
 <style scoped lang="scss">
 .content-box {
 .content-box {
-  width: 97.5%;
-  height: 89%;
+  width: calc(100% - 40px);
+  height: calc(100% - 105px);
   margin: 20px auto;
   margin: 20px auto;
   background-color: #fff;
   background-color: #fff;
   color: #fff;
   color: #fff;
@@ -789,7 +886,7 @@ onUnmounted(() => {
   }
   }
   .middle {
   .middle {
     width: calc(100% - 60px);
     width: calc(100% - 60px);
-    height: calc(100% - 61px);
+    height: calc(100% - 106px);
     margin: 0 auto;
     margin: 0 auto;
     color: #000;
     color: #000;
     display: flex;
     display: flex;
@@ -824,6 +921,7 @@ onUnmounted(() => {
     .footer {
     .footer {
       width: 100%;
       width: 100%;
       height: calc(100% - 60px);
       height: calc(100% - 60px);
+      // height: calc(100% - 60px);
       // margin: 10px auto 30px;
       // margin: 10px auto 30px;
       .el-table--fit {
       .el-table--fit {
         height: 100%;
         height: 100%;
@@ -892,6 +990,7 @@ onUnmounted(() => {
     }
     }
     .scroll {
     .scroll {
       flex: 1;
       flex: 1;
+      overflow: auto;
     }
     }
   }
   }
   .inputSearch {
   .inputSearch {
@@ -913,8 +1012,7 @@ onUnmounted(() => {
     display: flex;
     display: flex;
     align-items: center;
     align-items: center;
     justify-content: space-between;
     justify-content: space-between;
-    // height: 60px;
-    margin-top: 12px;
+    height: 60px;
 
 
     span {
     span {
       color: #000;
       color: #000;

+ 24 - 22
src/views/roomList/roomList.vue

@@ -10,7 +10,7 @@
           <div class="condition">
           <div class="condition">
             <el-input
             <el-input
               clearable
               clearable
-              v-model="searchInput.keyWord"
+              v-model.trim="searchInput.keyWord"
               class="w-50 m-2"
               class="w-50 m-2"
               placeholder="请输入关键字"
               placeholder="请输入关键字"
               style="width: 180px"
               style="width: 180px"
@@ -77,13 +77,13 @@
             >添加</el-button
             >添加</el-button
           >
           >
           <el-button
           <el-button
-              v-if="flagBtn.daoru == 1"
-              color="rgba(41, 109, 227, 1)"
-              type="primary"
-              class="search"
-              @click="bulkImportClick"
-              >批量导入</el-button
-            >
+            v-if="flagBtn.daoru == 1"
+            color="rgba(41, 109, 227, 1)"
+            type="primary"
+            class="search"
+            @click="bulkImportClick"
+            >批量导入</el-button
+          >
         </div>
         </div>
       </div>
       </div>
       <div class="footer" v-loading="loading">
       <div class="footer" v-loading="loading">
@@ -237,28 +237,28 @@
             </el-form-item>
             </el-form-item>
             <el-form-item label="房号 :" prop="roomNum">
             <el-form-item label="房号 :" prop="roomNum">
               <el-input
               <el-input
-                v-model="ruleForm.roomNum"
+                v-model.trim="ruleForm.roomNum"
                 placeholder="请输入房号"
                 placeholder="请输入房号"
                 clearable
                 clearable
               />
               />
             </el-form-item>
             </el-form-item>
             <el-form-item label="门锁设备型号 :" prop="doorLock">
             <el-form-item label="门锁设备型号 :" prop="doorLock">
               <el-input
               <el-input
-                v-model="ruleForm.doorLock"
+                v-model.trim="ruleForm.doorLock"
                 placeholder="请输入门锁设备型号"
                 placeholder="请输入门锁设备型号"
                 clearable
                 clearable
               />
               />
             </el-form-item>
             </el-form-item>
             <el-form-item label="水表编码 :" prop="water">
             <el-form-item label="水表编码 :" prop="water">
               <el-input
               <el-input
-                v-model="ruleForm.water"
+                v-model.trim="ruleForm.water"
                 placeholder="请输入水表编码"
                 placeholder="请输入水表编码"
                 clearable
                 clearable
               />
               />
             </el-form-item>
             </el-form-item>
             <el-form-item label="电表编码 :" prop="electric">
             <el-form-item label="电表编码 :" prop="electric">
               <el-input
               <el-input
-                v-model="ruleForm.electric"
+                v-model.trim="ruleForm.electric"
                 placeholder="请输入电表编码"
                 placeholder="请输入电表编码"
                 clearable
                 clearable
               />
               />
@@ -283,7 +283,7 @@
                 type="primary"
                 type="primary"
                 @click="submitAdd(ruleFormRef)"
                 @click="submitAdd(ruleFormRef)"
               >
               >
-                立即创建
+                确认
               </el-button>
               </el-button>
               <el-button @click="cancelAdd(ruleFormRef)">取消</el-button>
               <el-button @click="cancelAdd(ruleFormRef)">取消</el-button>
             </el-form-item>
             </el-form-item>
@@ -500,13 +500,13 @@ const rules = reactive({
   building: [{ required: true, message: "楼栋单元不能为空", trigger: "blur" }],
   building: [{ required: true, message: "楼栋单元不能为空", trigger: "blur" }],
   roomNum: [{ required: true, message: "房号不能为空", trigger: "blur" }],
   roomNum: [{ required: true, message: "房号不能为空", trigger: "blur" }],
   // ^(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*,\._\+(){}])[0-9a-zA-Z!@#$%^&*,\\._\+(){}]{8,20}$
   // ^(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*,\._\+(){}])[0-9a-zA-Z!@#$%^&*,\\._\+(){}]{8,20}$
-  doorLock: [
-    {
-      required: true,
-      message: "门锁型号不能为空",
-      trigger: "blur",
-    },
-  ],
+  // doorLock: [
+  //   {
+  //     required: true,
+  //     message: "门锁型号不能为空",
+  //     trigger: "blur",
+  //   },
+  // ],
   water: [
   water: [
     {
     {
       required: true,
       required: true,
@@ -789,6 +789,7 @@ const addlist = () => {
 // 取消添加员工
 // 取消添加员工
 const cancelAdd = () => {
 const cancelAdd = () => {
   addDialogVisible.value = false;
   addDialogVisible.value = false;
+  ruleForm.id = "";
   ruleFormRef.value.resetFields();
   ruleFormRef.value.resetFields();
 };
 };
 //编辑按钮
 //编辑按钮
@@ -861,7 +862,7 @@ const submitAdd = lodash.debounce(async (formEl) => {
         console.log(data);
         console.log(data);
         let res = await axios({
         let res = await axios({
           method: "post",
           method: "post",
-          url: api.value + "/house-number/listHouseNumber",
+          url: api.value + "/house-number/saveHouseNumber",
           headers: {
           headers: {
             token: sessionStorage.getItem("token"),
             token: sessionStorage.getItem("token"),
             user_head: sessionStorage.getItem("user_head"),
             user_head: sessionStorage.getItem("user_head"),
@@ -997,7 +998,7 @@ const handleCurrentChange = (value) => {
 onBeforeMount(() => {
 onBeforeMount(() => {
   api.value = store.state.user.api;
   api.value = store.state.user.api;
   const btnflag = JSON.parse(sessionStorage.getItem("btnflag"));
   const btnflag = JSON.parse(sessionStorage.getItem("btnflag"));
-  flagBtn.value = btnflag.account;
+  flagBtn.value = btnflag.roomList;
   console.log(flagBtn.value, "按钮权限");
   console.log(flagBtn.value, "按钮权限");
 
 
   getList();
   getList();
@@ -1108,6 +1109,7 @@ onUnmounted(() => {
     width: calc(100% - 60px);
     width: calc(100% - 60px);
     flex: 1;
     flex: 1;
     margin: 0 auto;
     margin: 0 auto;
+    overflow:auto;
     .el-table--fit {
     .el-table--fit {
       height: calc(100% - 60px);
       height: calc(100% - 60px);
       :deep(.el-table__header-wrapper) {
       :deep(.el-table__header-wrapper) {

+ 84 - 57
src/views/roomPrice/roomPrice.vue

@@ -21,7 +21,21 @@
               />
               />
             </div>
             </div>
             <div class="condition">
             <div class="condition">
-              <span>房型 : </span>
+              <span>房间类型 : </span>
+              <el-select
+                :clearable="true"
+                v-model="searchInput.houseType"
+                class="m-2"
+                style="width: 180px"
+                placeholder="请选择房间类型"
+                @change="houseTypeChange"
+              >
+                <el-option label="全日房" :value="1" />
+                <el-option label="钟点房" :value="2" />
+              </el-select>
+            </div>
+            <div class="condition">
+              <span>房型名称 : </span>
               <el-select
               <el-select
                 v-model="searchInput.changePriceSelId"
                 v-model="searchInput.changePriceSelId"
                 class="m-2"
                 class="m-2"
@@ -43,7 +57,7 @@
           </div>
           </div>
           <div class="filter_block">
           <div class="filter_block">
             <el-button
             <el-button
-              v-if="flagBtn.pilianggaijia==1"
+              v-if="flagBtn.pilianggaijia == 1"
               style="margin-left: 20px"
               style="margin-left: 20px"
               color="rgba(0, 97, 255, 1)"
               color="rgba(0, 97, 255, 1)"
               type="primary"
               type="primary"
@@ -52,7 +66,7 @@
               ><span>批量改价</span></el-button
               ><span>批量改价</span></el-button
             >
             >
             <el-button
             <el-button
-              v-if="flagBtn.gaijiajilu==1"
+              v-if="flagBtn.gaijiajilu == 1"
               style="margin-left: 20px"
               style="margin-left: 20px"
               color="rgba(0, 97, 255, 1)"
               color="rgba(0, 97, 255, 1)"
               type="primary"
               type="primary"
@@ -99,6 +113,18 @@
             </template>
             </template>
           </el-table-column>
           </el-table-column>
         </el-table>
         </el-table>
+         <!-- 分页组件 -->
+         <div class="pageSize">
+           <span></span>
+           <el-pagination
+             background
+             :current-page="currentPage"
+             :page-size="pageSize"
+             layout="total, prev, pager, next, jumper, slot"
+             :total="total"
+             @update:current-page="handleCurrentChange"
+           />
+         </div>
       </div>
       </div>
       <!-- 批量改价 -->
       <!-- 批量改价 -->
       <el-dialog
       <el-dialog
@@ -205,7 +231,7 @@
                         :clearable="false"
                         :clearable="false"
                         ref="inputPriceRef"
                         ref="inputPriceRef"
                         @change="inputPrice(row)"
                         @change="inputPrice(row)"
-                        v-model="row.roomPrice"
+                        v-model.trim="row.roomPrice"
                         class="w-50 m-2"
                         class="w-50 m-2"
                         placeholder="请输入价格"
                         placeholder="请输入价格"
                       />
                       />
@@ -242,11 +268,12 @@
         <div class="middle">
         <div class="middle">
           <div class="filter">
           <div class="filter">
             <div class="condition">
             <div class="condition">
-              <span>类型 : </span>
+              <span>房间类型 : </span>
               <el-select
               <el-select
                 v-model="recordSearch.type"
                 v-model="recordSearch.type"
                 class="m-2"
                 class="m-2"
                 placeholder="请选择类型"
                 placeholder="请选择类型"
+                @change="recordPriceSearch"
                 @clear="recordPriceSearch"
                 @clear="recordPriceSearch"
                 clearable
                 clearable
                 style="width: 200px"
                 style="width: 200px"
@@ -256,11 +283,12 @@
               </el-select>
               </el-select>
             </div>
             </div>
             <div class="condition">
             <div class="condition">
-              <span>房型 : </span>
+              <span>房型名称 : </span>
               <el-select
               <el-select
                 v-model="recordSearch.roomType"
                 v-model="recordSearch.roomType"
                 class="m-2"
                 class="m-2"
                 placeholder="请选择房型"
                 placeholder="请选择房型"
+                @change="recordPriceSearch"
                 @clear="recordPriceSearch"
                 @clear="recordPriceSearch"
                 clearable
                 clearable
                 style="width: 200px"
                 style="width: 200px"
@@ -310,7 +338,7 @@
               <el-input
               <el-input
                 :clearable="true"
                 :clearable="true"
                 @clear="recordPriceSearch"
                 @clear="recordPriceSearch"
-                v-model="recordSearch.keyWord"
+                v-model.trim="recordSearch.keyWord"
                 class="w-50 m-2"
                 class="w-50 m-2"
                 placeholder="请输入操作人名字"
                 placeholder="请输入操作人名字"
                 style="width: 230px"
                 style="width: 230px"
@@ -383,18 +411,7 @@
         </div>
         </div>
       </el-dialog>
       </el-dialog>
 
 
-      <!-- 分页组件 -->
-      <div class="pageSize">
-        <span></span>
-        <el-pagination
-          background
-          :current-page="currentPage"
-          :page-size="pageSize"
-          layout="total, prev, pager, next, jumper, slot"
-          :total="total"
-          @update:current-page="handleCurrentChange"
-        />
-      </div>
+     
     </div>
     </div>
   </div>
   </div>
 </template>
 </template>
@@ -523,6 +540,7 @@ const total = ref(); // 当前总数
 const searchInput = reactive({
 const searchInput = reactive({
   changePriceSelId: "",
   changePriceSelId: "",
   createTime: "",
   createTime: "",
+  houseType: "",
 });
 });
 const houseTypeData = ref([]); // 房型数据
 const houseTypeData = ref([]); // 房型数据
 
 
@@ -586,6 +604,7 @@ const getList = async () => {
     page: currentPage.value,
     page: currentPage.value,
     size: pageSize.value,
     size: pageSize.value,
     houseName: searchInput.changePriceSelId, //  房型
     houseName: searchInput.changePriceSelId, //  房型
+    houseType: searchInput.houseType,
     // managerId: sessionStorage.getItem("token"),
     // managerId: sessionStorage.getItem("token"),
   };
   };
   if (searchInput.createTime) {
   if (searchInput.createTime) {
@@ -624,12 +643,17 @@ const getList = async () => {
 };
 };
 
 
 // 搜索功能  改变日期和房型改变数据
 // 搜索功能  改变日期和房型改变数据
-const searchData = (val) => {
+const searchData = lodash.debounce(async () => {
   getList();
   getList();
+}, 300);
+
+// 改变房间类型改变房间名称
+const houseTypeChange = (val) => {
+  searchInput.changePriceSelId = "";
+  houseDatas().then((res) => {
+    searchData();
+  });
 };
 };
-// const searchData = lodash.debounce(async () => {
-//   getList();
-// }, 300);
 
 
 // 批量改价功能(------------------------------------)
 // 批量改价功能(------------------------------------)
 const roomClose = () => {
 const roomClose = () => {
@@ -674,7 +698,7 @@ const cancelRoomClose = () => {
 };
 };
 // 批量改价中表格设置价格按钮
 // 批量改价中表格设置价格按钮
 const inputPrice = (row) => {
 const inputPrice = (row) => {
-  console.log(typeList.value,row.roomPrice);
+  console.log(typeList.value, row.roomPrice);
   // if(row.roomPrice<0.01){
   // if(row.roomPrice<0.01){
   //   row.roomPrice = ""
   //   row.roomPrice = ""
   //   ElMessage({
   //   ElMessage({
@@ -719,42 +743,42 @@ const addChangePriceTime = () => {
 };
 };
 // 批量改价 确定改价
 // 批量改价 确定改价
 const notarizeRoomClose = async () => {
 const notarizeRoomClose = async () => {
-  let dateTime=[]
-  changePrice.createTime.forEach(item=>{
-    if(item.length){
-      dateTime.push(item)
+  let dateTime = [];
+  changePrice.createTime.forEach((item) => {
+    if (item.length) {
+      dateTime.push(item);
     }
     }
-  })
+  });
   let priceList = [];
   let priceList = [];
   changePriceData.typeData.forEach((item) => {
   changePriceData.typeData.forEach((item) => {
     priceList.push({
     priceList.push({
       type: item.roomType,
       type: item.roomType,
       name: item.roomName,
       name: item.roomName,
-      date: '',
+      date: "",
       price: item.roomPrice,
       price: item.roomPrice,
     });
     });
   });
   });
   // console.log(dateTime,priceList);
   // console.log(dateTime,priceList);
-  let arr=[]
-  dateTime.forEach(item=>{
-    priceList.forEach(i=>{
+  let arr = [];
+  dateTime.forEach((item) => {
+    priceList.forEach((i) => {
       arr.push({
       arr.push({
         type: i.type,
         type: i.type,
         name: i.name,
         name: i.name,
-        date: item.join(','),
+        date: item.join(","),
         price: i.price,
         price: i.price,
-      })
-    })
-  })
+      });
+    });
+  });
   console.log(arr);
   console.log(arr);
-  let flag=arr.every(i=>{
-    return i.price>=0.01&& i.price!=''
-  })
-  if(flag){
+  let flag = arr.every((i) => {
+    return i.price >= 0.01 && i.price != "";
+  });
+  if (flag) {
     let data = {
     let data = {
       alterDtoList: arr,
       alterDtoList: arr,
-      adminId: sessionStorage.getItem("permissionSettingId")
-    }
+      adminId: sessionStorage.getItem("permissionSettingId"),
+    };
     let res = await axios({
     let res = await axios({
       method: "post",
       method: "post",
       url: api.value + "/house-price/alterPrice",
       url: api.value + "/house-price/alterPrice",
@@ -776,7 +800,7 @@ const notarizeRoomClose = async () => {
         message: res.data.message,
         message: res.data.message,
         center: true,
         center: true,
       });
       });
-    }else{
+    } else {
       ElMessage({
       ElMessage({
         type: "error",
         type: "error",
         showClose: true,
         showClose: true,
@@ -784,11 +808,11 @@ const notarizeRoomClose = async () => {
         center: true,
         center: true,
       });
       });
     }
     }
-  }else{
+  } else {
     ElMessage({
     ElMessage({
       type: "warning",
       type: "warning",
       showClose: true,
       showClose: true,
-      message: '价格设置有误或价格不能为空',
+      message: "价格设置有误或价格不能为空",
       center: true,
       center: true,
     });
     });
   }
   }
@@ -1032,18 +1056,13 @@ const handleCurrentChange2 = (value) => {
   recordPage.value = value;
   recordPage.value = value;
   recordPriceData();
   recordPriceData();
 };
 };
-
-onBeforeMount(async () => {
-  api.value = store.state.user.api;
-  const btnflag = JSON.parse(sessionStorage.getItem("btnflag"));
-  flagBtn.value = btnflag.roomPrice;
-  console.log(flagBtn.value, "按钮权限");
+const houseDatas = async () => {
   const data = {
   const data = {
-    managerId: sessionStorage.getItem("token"),
+    type: searchInput.houseType,
   };
   };
   let res = await axios({
   let res = await axios({
     method: "get",
     method: "get",
-    url: api.value + "/house-price/roomType",
+    url: api.value + "/house/displayBar",
     headers: {
     headers: {
       token: sessionStorage.getItem("token"),
       token: sessionStorage.getItem("token"),
       user_head: sessionStorage.getItem("userhead"),
       user_head: sessionStorage.getItem("userhead"),
@@ -1051,7 +1070,14 @@ onBeforeMount(async () => {
     params: data,
     params: data,
   });
   });
   console.log(res, "房型下拉框数据");
   console.log(res, "房型下拉框数据");
-  houseTypeData.value = res.data.data.day;
+  houseTypeData.value = res.data.data;
+};
+onBeforeMount(async () => {
+  api.value = store.state.user.api;
+  const btnflag = JSON.parse(sessionStorage.getItem("btnflag"));
+  flagBtn.value = btnflag.roomPrice;
+  console.log(flagBtn.value, "按钮权限");
+  houseDatas();
   // changePriceSelect.value = res.data.data;
   // changePriceSelect.value = res.data.data;
   // recordRoomType.value = res.data.data;
   // recordRoomType.value = res.data.data;
   // changePirceRoomType.value = res.data.data;
   // changePirceRoomType.value = res.data.data;
@@ -1151,9 +1177,10 @@ onBeforeMount(async () => {
       width: 100%;
       width: 100%;
       flex: 1;
       flex: 1;
       margin: 10px auto 0;
       margin: 10px auto 0;
+      overflow:auto;
 
 
       .el-table--fit {
       .el-table--fit {
-        height: 100%;
+        height: calc(100% - 60px);
 
 
         :deep(.el-table__header-wrapper) {
         :deep(.el-table__header-wrapper) {
           background-color: #000;
           background-color: #000;
@@ -1419,7 +1446,7 @@ onBeforeMount(async () => {
                 }
                 }
 
 
                 span {
                 span {
-                  color: #096562;
+                  color: #0061ff;
                 }
                 }
 
 
                 .num {
                 .num {

Datei-Diff unterdrückt, da er zu groß ist
+ 431 - 191
src/views/roomStatus/roomStatus.vue


+ 127 - 110
src/views/roomType/roomType.vue

@@ -4,14 +4,14 @@
       <!-- <el-icon :size="23" class="camera"><VideoCameraFilled /></el-icon> -->
       <!-- <el-icon :size="23" class="camera"><VideoCameraFilled /></el-icon> -->
       <span class="cameratxt">房型管理</span>
       <span class="cameratxt">房型管理</span>
     </div>
     </div>
-    <div>
+    <div class="scroll">
       <div class="middle">
       <div class="middle">
         <div class="filter">
         <div class="filter">
           <div class="condition">
           <div class="condition">
             <el-input
             <el-input
               :clearable="true"
               :clearable="true"
               @clear="searchBtn"
               @clear="searchBtn"
-              v-model="searchInput.keyWord"
+              v-model.trim="searchInput.keyWord"
               class="w-50 m-2"
               class="w-50 m-2"
               placeholder="请输入房号"
               placeholder="请输入房号"
               style="width: 180px"
               style="width: 180px"
@@ -27,7 +27,7 @@
             </el-icon>
             </el-icon>
             <span>查询</span></el-button
             <span>查询</span></el-button
           >
           >
-          <div class="condition" style="margin-left: 50px">
+          <div class="condition">
             <span>房间类型</span>
             <span>房间类型</span>
             <el-select
             <el-select
               :clearable="false"
               :clearable="false"
@@ -103,7 +103,24 @@
               >
               >
             </template>
             </template>
           </el-table-column>
           </el-table-column>
-          <el-table-column align="center" prop="roomId" label="房号" />
+          <el-table-column
+            align="center"
+            prop="roomId"
+            label="房号"
+            width="220"
+          >
+            <template #default="{ row }">
+              <div class="ul" style="display:flex;flex-wrap:wrap;">
+                <el-tag
+                  v-for="i in row.roomList"
+                  style="margin: 5px"
+                  type="primary"
+                  >{{ i }}</el-tag
+                >
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column align="center" prop="roomLength" label="数量" />
           <el-table-column align="center" prop="price" label="房费(元)" />
           <el-table-column align="center" prop="price" label="房费(元)" />
           <!-- <el-table-column align="center" prop="count" label="数量" /> -->
           <!-- <el-table-column align="center" prop="count" label="数量" /> -->
           <!-- <el-table-column align="center" prop="count" label="类型">
           <!-- <el-table-column align="center" prop="count" label="类型">
@@ -142,6 +159,19 @@
             </template>
             </template>
           </el-table-column>
           </el-table-column>
         </el-table>
         </el-table>
+
+        <!-- 分页组件 -->
+        <div class="pageSize">
+          <span></span>
+          <el-pagination
+            background
+            :current-page="currentPage"
+            :page-size="pageSize"
+            layout="total, prev, pager, next, jumper, slot"
+            :total="total"
+            @update:current-page="handleCurrentChange"
+          />
+        </div>
         <!-- 添加房型弹窗 -->
         <!-- 添加房型弹窗 -->
         <el-dialog
         <el-dialog
           class="addStaff"
           class="addStaff"
@@ -233,7 +263,7 @@
                 <div class="items">
                 <div class="items">
                   <el-form-item label="房型名称 :" prop="roomName">
                   <el-form-item label="房型名称 :" prop="roomName">
                     <el-input
                     <el-input
-                      v-model="ruleForm.roomName"
+                      v-model.trim="ruleForm.roomName"
                       placeholder="请输入房型名称"
                       placeholder="请输入房型名称"
                       clearable
                       clearable
                     />
                     />
@@ -253,7 +283,7 @@
                 <div class="items">
                 <div class="items">
                   <el-form-item label="房费 :" prop="roomPrice">
                   <el-form-item label="房费 :" prop="roomPrice">
                     <el-input
                     <el-input
-                      v-model="ruleForm.roomPrice"
+                      v-model.trim="ruleForm.roomPrice"
                       placeholder="请输入房费"
                       placeholder="请输入房费"
                       clearable
                       clearable
                     />
                     />
@@ -273,7 +303,7 @@
                 <div class="items">
                 <div class="items">
                   <el-form-item label="面积 :" prop="roomArea">
                   <el-form-item label="面积 :" prop="roomArea">
                     <el-input
                     <el-input
-                      v-model="ruleForm.roomArea"
+                      v-model.trim="ruleForm.roomArea"
                       placeholder="请输入面积大小"
                       placeholder="请输入面积大小"
                       clearable
                       clearable
                     ></el-input>
                     ></el-input>
@@ -281,41 +311,28 @@
                   </el-form-item>
                   </el-form-item>
                 </div>
                 </div>
               </div>
               </div>
-              <!-- <div class="form_item">
+              <div class="form_item">
                 <div class="roomUl">
                 <div class="roomUl">
-                  <div class="title">房间</div>
+                  <div
+                    class="title"
+                    style="line-height: normal; transform: translateX(10px)"
+                  >
+                    房间
+                  </div>
                   <div class="delRoom">
                   <div class="delRoom">
                     <div class="ul">
                     <div class="ul">
-                      <div class="li">
-                        <div
-                          class="li_items"
-                          v-for="i in ruleForm.roomNumbers"
-                          :key="i.id"
+                      <div class="li" v-for="i in ruleForm.roomNumbers">
+                        <el-tag
+                          size="large"
+                          style="margin: 0 15px 8px 0"
+                          type="primary"
+                          >{{ i }}</el-tag
                         >
                         >
-                          <div
-                            class="li_item"
-                            :class="i.numberName ? '' : 'li_item_warning'"
-                          >
-                            <el-input
-                              v-model="i.numberName"
-                              placeholder="房间号"
-                              @input="roomNumber"
-                            />
-                            <div class="del" @click="delRoom(i)"></div>
-                          </div>
-                          <div class="warning" v-if="!i.numberName">
-                            请填写房间号
-                          </div>
-                        </div>
-                        <div class="addRoom" @click="addRoom">
-                          <img src="@/assets/addRoom.png" alt="" />
-                          <span>新增房间</span>
-                        </div>
                       </div>
                       </div>
                     </div>
                     </div>
                   </div>
                   </div>
                 </div>
                 </div>
-                <el-form-item label="房间号 :" prop="roomNumbers">
+                <!-- <el-form-item label="房间号 :" prop="roomNumbers">
                   <el-tree-select
                   <el-tree-select
                     v-model="roomSelNumList"
                     v-model="roomSelNumList"
                     :data="roomNumList"
                     :data="roomNumList"
@@ -326,8 +343,8 @@
                     :props="defaultProps"
                     :props="defaultProps"
                     node-key="id"
                     node-key="id"
                   />
                   />
-                </el-form-item>
-              </div> -->
+                </el-form-item> -->
+              </div>
               <div class="form_item">
               <div class="form_item">
                 <div class="items">
                 <div class="items">
                   <el-form-item label="类型 :" prop="roomType">
                   <el-form-item label="类型 :" prop="roomType">
@@ -428,19 +445,6 @@
           </div>
           </div>
         </el-dialog>
         </el-dialog>
       </div>
       </div>
-
-      <!-- 分页组件 -->
-      <div class="pageSize">
-        <span></span>
-        <el-pagination
-          background
-          :current-page="currentPage"
-          :page-size="pageSize"
-          layout="total, prev, pager, next, jumper, slot"
-          :total="total"
-          @update:current-page="handleCurrentChange"
-        />
-      </div>
     </div>
     </div>
     <div class="bgImg" v-if="bgImg">
     <div class="bgImg" v-if="bgImg">
       <el-carousel
       <el-carousel
@@ -651,6 +655,13 @@ const getList = async () => {
     //   });
     //   });
     //   item.visibleName = arr.join(",");
     //   item.visibleName = arr.join(",");
     // });
     // });
+    res.data.data.list.forEach((i) => {
+      if (i.roomId) {
+        let arr = i.roomId.split(",");
+        i.roomList = arr;
+        i.roomLength = arr.length;
+      }
+    });
     tableData.list = res.data.data.list;
     tableData.list = res.data.data.list;
     total.value = res.data.data.totalCount;
     total.value = res.data.data.totalCount;
   } else {
   } else {
@@ -831,6 +842,9 @@ const edit = async (row) => {
   console.log(row, "编辑房型");
   console.log(row, "编辑房型");
   dialongTitle.value = "编辑房型";
   dialongTitle.value = "编辑房型";
   ruleForm.id = row.id;
   ruleForm.id = row.id;
+  if (row.roomId) {
+    ruleForm.roomNumbers = row.roomId.split(",");
+  }
   let data = {
   let data = {
     houseId: row.id,
     houseId: row.id,
   };
   };
@@ -876,14 +890,14 @@ const edit = async (row) => {
       fileList.list = imgArr;
       fileList.list = imgArr;
     }
     }
 
 
-    let arr = [];
-    res.data.data.roomIds.split(",").forEach((item, ind) => {
-      arr.push({
-        numberName: item,
-        id: ind,
-      });
-    });
-    ruleForm.roomNumbers = arr;
+    // let arr = [];
+    // res.data.data.roomIds.split(",").forEach((item, ind) => {
+    //   arr.push({
+    //     numberName: item,
+    //     id: ind,
+    //   });
+    // });
+    // ruleForm.roomNumbers = arr;
   } else {
   } else {
     ElMessage({
     ElMessage({
       type: "error",
       type: "error",
@@ -918,7 +932,7 @@ const cancelAdd = () => {
   ruleForm.receivingTime = "";
   ruleForm.receivingTime = "";
   ruleForm.roomConfig = "";
   ruleForm.roomConfig = "";
   // roomConfig.value = '';
   // roomConfig.value = '';
-  ruleForm.roomNumbers = "";
+  ruleForm.roomNumbers = [];
   ruleForm.roomPicture = [];
   ruleForm.roomPicture = [];
   fileList.list = [];
   fileList.list = [];
 };
 };
@@ -931,44 +945,44 @@ const checkHouse = (val) => {
 };
 };
 
 
 // 监听房间数量
 // 监听房间数量
-watch(
-  () => ruleForm.number,
-  (newVal, oldVal) => {
-    console.log(newVal, "监听房间数量");
-    if (ruleForm.number <= 999) {
-      let arr = [];
-      if (newVal > 0) {
-        for (let i = 0; i < newVal; i++) {
-          arr[i] = {
-            numberName: "",
-            id: Math.random()
-              .toString(36)
-              .substr(3, i + 1),
-          };
-        }
-      }
-      arr.forEach((item, index) => {
-        ruleForm.roomNumbers.forEach((i, ind) => {
-          if (index == ind) {
-            item.numberName = i.numberName;
-            item.id = i.id;
-          }
-        });
-      });
-      ruleForm.roomNumbers = arr;
-      console.log(arr, "根据数量添加空房间");
-    } else {
-      ElMessage({
-        type: "warning",
-        showClose: true,
-        message: "房间数量最大为三位数",
-        center: true,
-      });
-      console.log(newVal.slice(0, 3));
-      ruleForm.number = newVal.slice(0, 3);
-    }
-  }
-);
+// watch(
+//   () => ruleForm.number,
+//   (newVal, oldVal) => {
+//     console.log(newVal, "监听房间数量");
+//     if (ruleForm.number <= 999) {
+//       let arr = [];
+//       if (newVal > 0) {
+//         for (let i = 0; i < newVal; i++) {
+//           arr[i] = {
+//             numberName: "",
+//             id: Math.random()
+//               .toString(36)
+//               .substr(3, i + 1),
+//           };
+//         }
+//       }
+//       arr.forEach((item, index) => {
+//         ruleForm.roomNumbers.forEach((i, ind) => {
+//           if (index == ind) {
+//             item.numberName = i.numberName;
+//             item.id = i.id;
+//           }
+//         });
+//       });
+//       ruleForm.roomNumbers = arr;
+//       console.log(arr, "根据数量添加空房间");
+//     } else {
+//       ElMessage({
+//         type: "warning",
+//         showClose: true,
+//         message: "房间数量最大为三位数",
+//         center: true,
+//       });
+//       console.log(newVal.slice(0, 3));
+//       ruleForm.number = newVal.slice(0, 3);
+//     }
+//   }
+// );
 
 
 // 新增房间号
 // 新增房间号
 const addRoom = () => {
 const addRoom = () => {
@@ -1291,8 +1305,8 @@ onUnmounted(() => {
 
 
 <style scoped lang="scss">
 <style scoped lang="scss">
 .content-box {
 .content-box {
-  width: 97.5%;
-  height: 89%;
+  width: calc(100% - 40px);
+  height: calc(100% - 105px);
   margin: 20px auto;
   margin: 20px auto;
   background-color: #fff;
   background-color: #fff;
   color: #fff;
   color: #fff;
@@ -1322,9 +1336,6 @@ onUnmounted(() => {
   }
   }
 
 
   .middle {
   .middle {
-    width: 96%;
-    margin: 0 auto;
-
     color: #000;
     color: #000;
 
 
     // border-bottom: 1px solid rgb(231, 231, 231);
     // border-bottom: 1px solid rgb(231, 231, 231);
@@ -1332,10 +1343,11 @@ onUnmounted(() => {
       display: flex;
       display: flex;
       flex-wrap: wrap;
       flex-wrap: wrap;
       align-items: center;
       align-items: center;
-      margin: 10px 0 0 0;
+      padding: 10px 0 0 0;
 
 
       .search {
       .search {
         color: #fff;
         color: #fff;
+        margin: 0 30px 0 0;
       }
       }
 
 
       .condition {
       .condition {
@@ -1354,7 +1366,7 @@ onUnmounted(() => {
     }
     }
 
 
     .gongneng {
     .gongneng {
-      margin: 10px 0 20px 0;
+      padding: 10px 0 20px 0;
 
 
       span {
       span {
         color: #fff;
         color: #fff;
@@ -1393,14 +1405,19 @@ onUnmounted(() => {
       margin: 0;
       margin: 0;
     }
     }
   }
   }
-
+  .scroll {
+    width: calc(100% - 60px);
+    height: calc(100% - 61px);
+    margin: 0 auto;
+    overflow: auto;
+    display: flex;
+    flex-direction: column;
+  }
   .footer {
   .footer {
-    width: 96%;
-    height: 550px;
-    margin: 10px auto 30px;
-
+    flex: 1;
+    overflow: auto;
     .el-table--fit {
     .el-table--fit {
-      height: 100%;
+      height: calc(100% - 60px);
 
 
       :deep(.el-table__header-wrapper) {
       :deep(.el-table__header-wrapper) {
         background-color: #000;
         background-color: #000;
@@ -1773,10 +1790,10 @@ onUnmounted(() => {
   }
   }
 
 
   .pageSize {
   .pageSize {
+    height: 60px;
     display: flex;
     display: flex;
     align-items: center;
     align-items: center;
     justify-content: space-between;
     justify-content: space-between;
-    margin: 0 30px;
 
 
     span {
     span {
       color: #000;
       color: #000;

+ 12 - 8
src/views/staff/staff.vue

@@ -12,7 +12,7 @@
             <el-input
             <el-input
               :clearable="true"
               :clearable="true"
               @clear="searchBtn"
               @clear="searchBtn"
-              v-model="searchInput.keyWord"
+              v-model.trim="searchInput.keyWord"
               class="w-50 m-2"
               class="w-50 m-2"
               placeholder="请输入关键字"
               placeholder="请输入关键字"
             />
             />
@@ -161,7 +161,7 @@
           <el-form-item label="职务 :" prop="userDepartment">
           <el-form-item label="职务 :" prop="userDepartment">
             <!-- 0为其他,1为学生,4为教职工,5为校友 -->
             <!-- 0为其他,1为学生,4为教职工,5为校友 -->
             <el-input
             <el-input
-              v-model="editRuleForm.userDepartment"
+              v-model.trim="editRuleForm.userDepartment"
               placeholder="请输入职务"
               placeholder="请输入职务"
               clearable
               clearable
               style="width: 500px"
               style="width: 500px"
@@ -182,7 +182,7 @@
           </el-form-item>
           </el-form-item>
           <el-form-item label="姓名 :" prop="userName">
           <el-form-item label="姓名 :" prop="userName">
             <el-input
             <el-input
-              v-model="editRuleForm.userName"
+              v-model.trim="editRuleForm.userName"
               placeholder="请输入姓名"
               placeholder="请输入姓名"
               clearable
               clearable
               style="width: 500px"
               style="width: 500px"
@@ -190,7 +190,7 @@
           </el-form-item>
           </el-form-item>
           <el-form-item label="电话号码 :" prop="userPhone">
           <el-form-item label="电话号码 :" prop="userPhone">
             <el-input
             <el-input
-              v-model="editRuleForm.userPhone"
+              v-model.trim="editRuleForm.userPhone"
               placeholder="请输入电话号码"
               placeholder="请输入电话号码"
               clearable
               clearable
               style="width: 500px"
               style="width: 500px"
@@ -211,7 +211,7 @@
           </el-form-item> -->
           </el-form-item> -->
           <el-form-item label="身份证号 :" prop="idCard">
           <el-form-item label="身份证号 :" prop="idCard">
             <el-input
             <el-input
-              v-model="editRuleForm.idCard"
+              v-model.trim="editRuleForm.idCard"
               placeholder="请输入身份证号"
               placeholder="请输入身份证号"
               clearable
               clearable
               style="width: 500px"
               style="width: 500px"
@@ -245,6 +245,7 @@
               v-model="editRuleForm.fingerRemark"
               v-model="editRuleForm.fingerRemark"
               class="m-2"
               class="m-2"
               placeholder="请选择指纹备注"
               placeholder="请选择指纹备注"
+              @change="fingerRemarkChange"
             >
             >
               <el-option label="左手·拇指  " value="左手·拇指  " />
               <el-option label="左手·拇指  " value="左手·拇指  " />
               <el-option label="左手·食指  " value="左手·食指  " />
               <el-option label="左手·食指  " value="左手·食指  " />
@@ -432,7 +433,7 @@ const defaultProps = ref({
 // 表单验证
 // 表单验证
 const editRules = reactive({
 const editRules = reactive({
   userDepartment: [
   userDepartment: [
-    { required: true, message: "身份不能为空", trigger: "blur" },
+    { required: true, message: "职务不能为空", trigger: "blur" },
   ],
   ],
   userName: [
   userName: [
     {
     {
@@ -600,7 +601,10 @@ const addClick = async () => {
   editRuleForm.fingerprint = ""; // 指纹
   editRuleForm.fingerprint = ""; // 指纹
   editRuleForm.fingerRemark = ""; // 指纹备注
   editRuleForm.fingerRemark = ""; // 指纹备注
 };
 };
-
+// 切换手指头删除指纹
+const fingerRemarkChange=()=>{
+  editRuleForm.fingerprint=""
+}
 //编辑按钮  (-------------------------------------------)
 //编辑按钮  (-------------------------------------------)
 const editClick = async (row) => {
 const editClick = async (row) => {
   titleDialog.value = "编辑员工";
   titleDialog.value = "编辑员工";
@@ -1122,7 +1126,7 @@ onUnmounted(() => {
   .footer {
   .footer {
     width: calc(100%);
     width: calc(100%);
     flex: 1;
     flex: 1;
-
+    overflow: auto;
     .el-table--fit {
     .el-table--fit {
       height: calc(100% - 60px);
       height: calc(100% - 60px);
 
 

+ 5 - 2
src/views/statement/statement.vue

@@ -28,7 +28,7 @@
             <el-input
             <el-input
               :clearable="true"
               :clearable="true"
               @clear="searchBtn"
               @clear="searchBtn"
-              v-model="searchInput.keyWord"
+              v-model.trim="searchInput.keyWord"
               class="w-50 m-2"
               class="w-50 m-2"
               placeholder="请输入关键字查询"
               placeholder="请输入关键字查询"
               style="width: 180px"
               style="width: 180px"
@@ -133,7 +133,7 @@
             align="center"
             align="center"
             prop="orderStatus"
             prop="orderStatus"
             label="订单状态"
             label="订单状态"
-            width="120"
+            width="160"
           >
           >
             <template #default="{ row }">
             <template #default="{ row }">
               <div style="color: #f07218" v-if="row.orderStatus == 1">
               <div style="color: #f07218" v-if="row.orderStatus == 1">
@@ -163,6 +163,9 @@
               <div style="color: #818282" v-if="row.orderStatus == 9">
               <div style="color: #818282" v-if="row.orderStatus == 9">
                 已取消,超时
                 已取消,超时
               </div>
               </div>
+              <div style="color: #eebe77" v-if="row.orderStatus == 10">
+                已支付,未入住
+              </div>
             </template>
             </template>
           </el-table-column>
           </el-table-column>
           <el-table-column
           <el-table-column

+ 239 - 0
src/views/system/richtext.vue

@@ -0,0 +1,239 @@
+<template>
+  <div class="richText">
+    <div style="border: 1px solid #ccc">
+      <Toolbar
+        style="border-bottom: 1px solid #ccc"
+        :editor="editorRef"
+        :defaultConfig="toolbarConfig"
+        :mode="mode"
+      />
+      <Editor
+        style="height: 300px; overflow-y: hidden"
+        v-model="valueHtml"
+        :defaultConfig="editorConfig"
+        :mode="mode"
+        @onCreated="handleCreated"
+        @onChange="handleChange"
+        @onDestroyed="handleDestroyed"
+        @onFocus="handleFocus"
+        @onBlur="handleBlur"
+        @customAlert="customAlert"
+        @customPaste="customPaste"
+      />
+    </div>
+  </div>
+</template>
+
+<script setup>
+import { useRouter } from "vue-router";
+import { ElMessage, ElMessageBox } from "element-plus";
+import { Calendar } from "@element-plus/icons-vue";
+import { dayjs } from "element-plus";
+import lodash, { reduce } from "lodash";
+import axios from "axios";
+import { useStore } from "vuex";
+// import COS from "cos-js-sdk-v5";
+
+import "@wangeditor/editor/dist/css/style.css"; // 引入 css
+
+import { onBeforeUnmount, nextTick, ref, shallowRef, onMounted } from "vue";
+import { Editor, Toolbar } from "@wangeditor/editor-for-vue";
+import { DomEditor, createToolbar } from "@wangeditor/editor";
+
+// 编辑器实例,必须用 shallowRef
+const editorRef = shallowRef();
+
+const props = defineProps({
+  fatherMessage: {
+    data:''
+  },
+});
+const emit = defineEmits(["richtextClick"]);
+
+// 内容 HTML
+const valueHtml = ref();
+const toolbarConfig = {
+  // JS 语法
+  /* 工具栏配置 */
+  excludeKeys: [
+    "insertLink",
+    "insertVideo",
+    "insertTable",
+    "fullScreen",
+    "insertImage",
+    "group-image"
+  ],
+};
+const uploadImg = (file, insertFn) => {
+  let imgData = new FormData();
+  console.log(file);
+  const cos = new COS({
+    SecretId: "AKID3HGLVgpx128DNdxOvyDb1mWLHELWt7Sw",
+    SecretKey: "n7uhSfzAdCmWQRWUMCYfvP3sv3DMg6aD",
+    SecurityToken: "1325577833",
+    Bucket: "jgy-1325577833",
+    Region: "ap-guangzhou",
+  });
+
+  var compressImgFile = file;
+  const compressKey = file.name; // 设置上传到 COS 后的文件名
+
+  cos.putObject(
+    {
+      Bucket: "jgy-1325577833",
+      Region: "ap-guangzhou",
+      Key: compressKey,
+      Body: compressImgFile,
+      onProgress: function (progressData) {
+        console.log(JSON.stringify(progressData));
+      },
+    },
+    function (err, data) {
+      if (err) {
+        console.error(err);
+      } else {
+        console.log(data, "压缩图片获取成功");
+        let href = "https://" + data.Location;
+        insertFn(href);
+      }
+    }
+  );
+};
+const editorConfig = {
+  placeholder: "请输入内容......",
+  MENU_CONF: {
+    uploadImage: {
+      // 自定义上传图片 方法
+      customUpload: uploadImg,
+      // 自定义插入图片 方法
+      // customInsert: insertImg,
+      //上传图片配置
+      // server: "https://	jgy-1325577833.cos.ap-guangzhou.myqcloud.com", //上传接口地址
+      fieldName: "file", //上传文件名
+      methods: "post",
+      metaWithUrl: false, // 参数拼接到 url 上
+      // 单个文件上传成功之后
+      // onSuccess(file, res) {
+      //   console.log(file, res);
+      // },
+      // 自定义插入图片
+      customInsert(res, insertFn) {
+        console.log(res);
+        // insertFn(res.url)
+      },
+    },
+    // insertImage: {
+    //   onInsertedImage(imageNode) {
+    //     if (imageNode == null) return;
+    //     const { src, alt, url, href } = imageNode;
+    //     console.log("inserted image", src, alt, url, href);
+    //   },
+    //   checkImage: customCheckImageFn, // 也支持 async 函数
+    //   parseImageSrc: customParseImageSrc, // 也支持 async 函数
+    // },
+    // editImage: {
+    //   onUpdatedImage(imageNode) {
+    //     if (imageNode == null) return;
+    //     const { src, alt, url } = imageNode;
+    //     console.log("updated image", src, alt, url);
+    //   },
+    //   checkImage: customCheckImageFn, // 也支持 async 函数
+    //   parseImageSrc: customParseImageSrc, // 也支持 async 函数
+    // },
+  },
+};
+// const mode = ref("default"); // 默认模式
+const mode = ref("simple"); // 简易模式
+
+const handleChange = (editor) => {
+  // console.log("change:", editor);
+  // console.log("change:", editor.getText());
+  // console.log("change:", editor.getHtml());
+  // emit("richtextClick", {
+  //   html: editor.getHtml(),
+  //   text: editor.getText(),
+  // });
+};
+const handleDestroyed = (editor) => {
+  console.log("destroyed", editor);
+};
+const handleFocus = (editor) => {
+  // console.log("focus", editor);
+  const toolbar = DomEditor.getToolbar(editor);
+
+  const curToolbarConfig = toolbar.getConfig();
+  console.log(curToolbarConfig.toolbarKeys); // 当前菜单排序和分组
+};
+const handleBlur = (editor) => {
+  // console.log("change:", editor);
+  // console.log("change:", editor.getText());
+  // console.log("change:", editor.getHtml());
+  emit("richtextClick", {
+    html: editor.getHtml(),
+    text: editor.getText(),
+  });
+};
+const customAlert = (info, type) => {
+  alert(`【自定义提示】${type} - ${info}`);
+};
+// 粘贴事件对象
+const customPaste = (editor, event, callback) => {
+  console.log("ClipboardEvent 粘贴事件对象", event);
+  const html = event.clipboardData.getData("text/html"); // 获取粘贴的 html
+  const text = event.clipboardData.getData("text/plain"); // 获取粘贴的纯文本
+  const rtf = event.clipboardData.getData("text/rtf"); // 获取 rtf 数据(如从 word wsp 复制粘贴)
+  console.log(html);
+
+  // 自定义插入内容
+  // editor.insertText("自定义插入内容");
+
+  // 返回 false ,阻止默认粘贴行为
+  // event.preventDefault();
+  // callback(false); // 返回值(注意,vue 事件的返回值,不能用 return)
+
+  // 返回 true ,继续默认的粘贴行为
+  callback(true);
+};
+
+// // 自定义图片上传
+// editorConfig.MENU_CONF["uploadImage"] = {
+//   async customUpload(file, insertFn) {
+//     let formData = new FormData();
+//     formData.append("files", file);
+//     try {
+//       // 这里结合实际场景写自己上传图片的逻辑,此处代码仅为示例
+//       const { data } = await upload(formData);
+//       // 对图片进行处理,同样需要结合实际场景
+//       data.forEach((item) => {
+//         insertFn(item, "image", item);
+//       });
+//     } catch (error) {
+//       console.log(error);
+//     }
+//   },
+// };
+
+const handleCreated = (editor) => {
+  editorRef.value = editor; // 记录 editor 实例,重要!
+  editor.setHtml(props.fatherMessage.data);
+};
+
+// 模拟 ajax 异步获取内容
+onMounted(() => {
+  // console.log(props.fatherMessage.data);
+});
+
+// 组件销毁时,也及时销毁编辑器
+onBeforeUnmount(() => {
+  console.log("销毁组件");
+  const editor = editorRef.value;
+  if (editor == null) return;
+  editor.destroy();
+});
+</script>
+
+<style scoped lang="scss">
+.richText {
+  width: 100%;
+}
+</style>

+ 235 - 43
src/views/system/system.vue

@@ -37,9 +37,13 @@
                 <span class="numImg" v-if="systemData.coverPicture">{{
                 <span class="numImg" v-if="systemData.coverPicture">{{
                   switchImgInd2 + 1 + "/" + systemData.coverPicture.length
                   switchImgInd2 + 1 + "/" + systemData.coverPicture.length
                 }}</span>
                 }}</span>
-                <div class="lookImg" v-if="systemData.coverPicture" >
+                <div class="lookImg" v-if="systemData.coverPicture">
                   <img src="@/assets/lookImg.png" alt="" @click="lookImg" />
                   <img src="@/assets/lookImg.png" alt="" @click="lookImg" />
-                  <div class="delimg" @click="delImgList(item)" v-if=" flagBtn.gongyushezhi == 1"></div>
+                  <div
+                    class="delimg"
+                    @click="delImgList(item)"
+                    v-if="flagBtn.gongyushezhi == 1"
+                  ></div>
                 </div>
                 </div>
               </div>
               </div>
               <el-upload
               <el-upload
@@ -73,12 +77,25 @@
               <el-input
               <el-input
                 v-if="flagBtn.gongyushezhi == 1"
                 v-if="flagBtn.gongyushezhi == 1"
                 clearable
                 clearable
-                v-model="systemData.name"
+                v-model.trim="systemData.name"
                 @blur="systemChange"
                 @blur="systemChange"
                 placeholder="请输入名称"
                 placeholder="请输入名称"
                 style="max-width: 300px; width: 280px"
                 style="max-width: 300px; width: 280px"
               />
               />
-              <span v-else style="display: inline-block;max-width: 300px; width: 280px;border: 1px solid #ccc;border-radius: 3px;height: 30px;line-height: 30px;padding-left: 8px;">{{ systemData.name }}</span>
+              <span
+                v-else
+                style="
+                  display: inline-block;
+                  max-width: 300px;
+                  width: 280px;
+                  border: 1px solid #ccc;
+                  border-radius: 3px;
+                  height: 30px;
+                  line-height: 30px;
+                  padding-left: 8px;
+                "
+                >{{ systemData.name }}</span
+              >
             </div>
             </div>
             <div class="conts">
             <div class="conts">
               <div class="name">开业时间:</div>
               <div class="name">开业时间:</div>
@@ -93,7 +110,20 @@
                 style="max-width: 300px; width: 280px"
                 style="max-width: 300px; width: 280px"
                 @change="systemChange"
                 @change="systemChange"
               />
               />
-              <span v-else style="display: inline-block;max-width: 300px; width: 280px;border: 1px solid #ccc;border-radius: 3px;height: 30px;line-height: 30px;padding-left: 8px;">{{ systemData.openingTime }}</span>
+              <span
+                v-else
+                style="
+                  display: inline-block;
+                  max-width: 300px;
+                  width: 280px;
+                  border: 1px solid #ccc;
+                  border-radius: 3px;
+                  height: 30px;
+                  line-height: 30px;
+                  padding-left: 8px;
+                "
+                >{{ systemData.openingTime }}</span
+              >
             </div>
             </div>
           </div>
           </div>
         </div>
         </div>
@@ -104,12 +134,26 @@
               <el-input
               <el-input
                 v-if="flagBtn.gongyushezhi == 1"
                 v-if="flagBtn.gongyushezhi == 1"
                 clearable
                 clearable
-                v-model="systemData.address"
+                v-model.trim="systemData.address"
                 @blur="systemChange"
                 @blur="systemChange"
                 placeholder="请输入地址"
                 placeholder="请输入地址"
                 style="max-width: 300px; width: 280px"
                 style="max-width: 300px; width: 280px"
               />
               />
-              <span v-else style="display: inline-block;max-width: 300px; width: 280px;border: 1px solid #ccc;border-radius: 3px;height: 30px;line-height: 30px;padding-left: 8px;overflow-x: auto;">{{ systemData.address }}</span>
+              <span
+                v-else
+                style="
+                  display: inline-block;
+                  max-width: 300px;
+                  width: 280px;
+                  border: 1px solid #ccc;
+                  border-radius: 3px;
+                  height: 30px;
+                  line-height: 30px;
+                  padding-left: 8px;
+                  overflow-x: auto;
+                "
+                >{{ systemData.address }}</span
+              >
             </div>
             </div>
             <div class="conts">
             <div class="conts">
               <div class="name">装修时间:</div>
               <div class="name">装修时间:</div>
@@ -124,7 +168,20 @@
                 style="max-width: 300px; width: 280px"
                 style="max-width: 300px; width: 280px"
                 @change="systemChange"
                 @change="systemChange"
               />
               />
-              <span v-else style="display: inline-block;max-width: 300px; width: 280px;border: 1px solid #ccc;border-radius: 3px;height: 30px;line-height: 30px;padding-left: 8px;">{{ systemData.decorationTime }}</span>
+              <span
+                v-else
+                style="
+                  display: inline-block;
+                  max-width: 300px;
+                  width: 280px;
+                  border: 1px solid #ccc;
+                  border-radius: 3px;
+                  height: 30px;
+                  line-height: 30px;
+                  padding-left: 8px;
+                "
+                >{{ systemData.decorationTime }}</span
+              >
             </div>
             </div>
           </div>
           </div>
         </div>
         </div>
@@ -152,7 +209,21 @@
                 end-placeholder="结束时间"
                 end-placeholder="结束时间"
                 @change="systemChange"
                 @change="systemChange"
               />
               />
-              <span v-else style="display: inline-block;max-width: 300px; width: 280px;border: 1px solid #ccc;border-radius: 3px;height: 30px;line-height: 30px;padding-left: 8px;">{{ systemData.liveTime[0] }} - {{ systemData.liveTime[1] }}</span>
+              <span
+                v-else
+                style="
+                  display: inline-block;
+                  max-width: 300px;
+                  width: 280px;
+                  border: 1px solid #ccc;
+                  border-radius: 3px;
+                  height: 30px;
+                  line-height: 30px;
+                  padding-left: 8px;
+                "
+                >{{ systemData.liveTime[0] }} -
+                {{ systemData.liveTime[1] }}</span
+              >
             </div>
             </div>
             <!-- <div class="conts">
             <!-- <div class="conts">
               <div class="name">离店时间:</div>
               <div class="name">离店时间:</div>
@@ -188,7 +259,20 @@
                     value-format="HH:mm:ss"
                     value-format="HH:mm:ss"
                     @change="systemChange"
                     @change="systemChange"
                   />
                   />
-                  <span v-else style="display: inline-block;max-width: 300px; width: 280px;border: 1px solid #ccc;border-radius: 3px;height: 30px;line-height: 30px;padding-left: 8px;">{{ i.time[0] }} - {{ i.time[1] }}</span>
+                  <span
+                    v-else
+                    style="
+                      display: inline-block;
+                      max-width: 300px;
+                      width: 280px;
+                      border: 1px solid #ccc;
+                      border-radius: 3px;
+                      height: 30px;
+                      line-height: 30px;
+                      padding-left: 8px;
+                    "
+                    >{{ i.time[0] }} - {{ i.time[1] }}</span
+                  >
                   <img
                   <img
                     v-if="flagBtn.gongyushezhi == 1"
                     v-if="flagBtn.gongyushezhi == 1"
                     class="img"
                     class="img"
@@ -216,13 +300,17 @@
               <el-input
               <el-input
                 v-if="flagBtn.gongyushezhi == 1"
                 v-if="flagBtn.gongyushezhi == 1"
                 clearable
                 clearable
-                v-model="systemData.phoneNumbr"
+                v-model.trim="systemData.phoneNumbr"
                 @blur="systemChange"
                 @blur="systemChange"
                 class="w-50 m-2"
                 class="w-50 m-2"
                 placeholder="请输入电话号码"
                 placeholder="请输入电话号码"
                 style="max-width: 300px; width: 280px"
                 style="max-width: 300px; width: 280px"
               />
               />
-              <span v-else style="display: inline-block;max-width: 300px; width: 280px">{{ systemData.phoneNumbr }}</span>
+              <span
+                v-else
+                style="display: inline-block; max-width: 300px; width: 280px"
+                >{{ systemData.phoneNumbr }}</span
+              >
             </div>
             </div>
           </div>
           </div>
         </div>
         </div>
@@ -231,7 +319,7 @@
           <div class="rows">
           <div class="rows">
             <div class="textarea">
             <div class="textarea">
               <div class="name">公寓简介:</div>
               <div class="name">公寓简介:</div>
-              <el-input
+              <!-- <el-input
                 v-if="flagBtn.gongyushezhi == 1"
                 v-if="flagBtn.gongyushezhi == 1"
                 v-model="systemData.introductory"
                 v-model="systemData.introductory"
                 :rows="9"
                 :rows="9"
@@ -240,8 +328,13 @@
                 show-word-limit
                 show-word-limit
                 placeholder="请输入公寓简介"
                 placeholder="请输入公寓简介"
                 @blur="systemChange"
                 @blur="systemChange"
-              />
-              <span v-else style="display: inline-block;max-width: 600px; width: 1000px;height:200px;border: 1px solid #ccc;overflow: auto;border-radius: 3px;padding: 5px 8px;">{{ systemData.introductory }}</span>
+              /> -->
+              <Richtext
+                v-if="textShow"
+                @richtextClick="richtextClick"
+                :fatherMessage="fatherMessage"
+              ></Richtext>
+              <!-- <span v-else style="display: inline-block;max-width: 600px; width: 1000px;height:200px;border: 1px solid #ccc;overflow: auto;border-radius: 3px;padding: 5px 8px;">{{ systemData.introductory }}</span> -->
             </div>
             </div>
           </div>
           </div>
         </div>
         </div>
@@ -251,7 +344,7 @@
           <div class="titles">
           <div class="titles">
             <div class="title">设施服务设置</div>
             <div class="title">设施服务设置</div>
             <el-button
             <el-button
-              v-if="flagBtn.sheshifuwushezhi==1"
+              v-if="flagBtn.sheshifuwushezhi == 1"
               @click="facilityServicesAdd"
               @click="facilityServicesAdd"
               type="primary"
               type="primary"
               color="rgba(0, 97, 255, 1)"
               color="rgba(0, 97, 255, 1)"
@@ -287,9 +380,13 @@
               prop="houseService"
               prop="houseService"
               label="房型服务"
               label="房型服务"
             />
             />
-            <el-table-column v-if="flagBtn.sheshifuwushezhi==1" align="center" label="操作">
+            <el-table-column
+              v-if="flagBtn.sheshifuwushezhi == 1"
+              align="center"
+              label="操作"
+            >
               <template #default="scope">
               <template #default="scope">
-                <div class="options" >
+                <div class="options">
                   <div class="look" @click="facilityServicesEdit(scope.row)">
                   <div class="look" @click="facilityServicesEdit(scope.row)">
                     编辑
                     编辑
                   </div>
                   </div>
@@ -317,9 +414,9 @@
           <div class="system">
           <div class="system">
             <span>退房后 </span>
             <span>退房后 </span>
             <el-input
             <el-input
-              v-if="flagBtn.tuifangshezhi==1"
+              v-if="flagBtn.tuifangshezhi == 1"
               clearable
               clearable
-              v-model="checkOutData.turnOffTime"
+              v-model.trim="checkOutData.turnOffTime"
               style="width: 150px; margin: 0 8px"
               style="width: 150px; margin: 0 8px"
               placeholder="请输入时间"
               placeholder="请输入时间"
               @blur="checkOutSettingUpdate"
               @blur="checkOutSettingUpdate"
@@ -332,21 +429,47 @@
                 />
                 />
               </template>
               </template>
             </el-input>
             </el-input>
-            <span v-else style="display: inline-block;width: 150px;border: 1px solid #ccc;border-radius: 3px;height: 30px;line-height: 30px;padding-left: 8px;margin:0 8px;">{{ checkOutData.turnOffTime }}</span>
+            <span
+              v-else
+              style="
+                display: inline-block;
+                width: 150px;
+                border: 1px solid #ccc;
+                border-radius: 3px;
+                height: 30px;
+                line-height: 30px;
+                padding-left: 8px;
+                margin: 0 8px;
+              "
+              >{{ checkOutData.turnOffTime }}</span
+            >
             <span>分钟,断电</span>
             <span>分钟,断电</span>
           </div>
           </div>
           <div class="system">
           <div class="system">
             <span>预定时间最多 </span>
             <span>预定时间最多 </span>
             <el-input
             <el-input
-              v-if="flagBtn.tuifangshezhi==1"
+              v-if="flagBtn.tuifangshezhi == 1"
               clearable
               clearable
-              v-model="checkOutData.preDay"
+              v-model.trim="checkOutData.preDay"
               style="width: 150px; margin: 0 8px"
               style="width: 150px; margin: 0 8px"
               placeholder="请输入天数"
               placeholder="请输入天数"
               @blur="checkOutSettingUpdate"
               @blur="checkOutSettingUpdate"
             >
             >
             </el-input>
             </el-input>
-            <span v-else style="display: inline-block;width: 150px;border: 1px solid #ccc;border-radius: 3px;height: 30px;line-height: 30px;padding-left: 8px;margin: 0 8px;">{{ checkOutData.preDay }}</span>
+            <span
+              v-else
+              style="
+                display: inline-block;
+                width: 150px;
+                border: 1px solid #ccc;
+                border-radius: 3px;
+                height: 30px;
+                line-height: 30px;
+                padding-left: 8px;
+                margin: 0 8px;
+              "
+              >{{ checkOutData.preDay }}</span
+            >
             <span>天</span>
             <span>天</span>
           </div>
           </div>
           <div class="titles">
           <div class="titles">
@@ -359,15 +482,28 @@
           <div class="system">
           <div class="system">
             <span>每人补助水量 </span>
             <span>每人补助水量 </span>
             <el-input
             <el-input
-              v-if="flagBtn.buzhushezhi==1"
+              v-if="flagBtn.buzhushezhi == 1"
               clearable
               clearable
-              v-model="subsidySetupData.freeQuotaOfWater"
+              v-model.trim="subsidySetupData.freeQuotaOfWater"
               style="width: 150px; margin: 0 8px"
               style="width: 150px; margin: 0 8px"
               placeholder="请输入吨数"
               placeholder="请输入吨数"
               @blur="subsidySetupUpdate"
               @blur="subsidySetupUpdate"
             >
             >
             </el-input>
             </el-input>
-            <span v-else style="display: inline-block;width: 150px;border: 1px solid #ccc;border-radius: 3px;height: 30px;line-height: 30px;padding-left: 8px;margin: 0 8px;">{{ subsidySetupData.freeQuotaOfWater }}</span>
+            <span
+              v-else
+              style="
+                display: inline-block;
+                width: 150px;
+                border: 1px solid #ccc;
+                border-radius: 3px;
+                height: 30px;
+                line-height: 30px;
+                padding-left: 8px;
+                margin: 0 8px;
+              "
+              >{{ subsidySetupData.freeQuotaOfWater }}</span
+            >
             <span>吨</span>
             <span>吨</span>
             <span
             <span
               style="
               style="
@@ -380,15 +516,28 @@
             ></span>
             ></span>
             <span>每人补助电量 </span>
             <span>每人补助电量 </span>
             <el-input
             <el-input
-              v-if="flagBtn.buzhushezhi==1"
+              v-if="flagBtn.buzhushezhi == 1"
               clearable
               clearable
-              v-model="subsidySetupData.freeQuotaOfElectric"
+              v-model.trim="subsidySetupData.freeQuotaOfElectric"
               style="width: 150px; margin: 0 8px"
               style="width: 150px; margin: 0 8px"
               placeholder="请输入度数"
               placeholder="请输入度数"
               @blur="subsidySetupUpdate"
               @blur="subsidySetupUpdate"
             >
             >
             </el-input>
             </el-input>
-            <span v-else style="display: inline-block;width: 150px;border: 1px solid #ccc;border-radius: 3px;height: 30px;line-height: 30px;padding-left: 8px;margin: 0 8px;">{{ subsidySetupData.freeQuotaOfElectric }}</span>
+            <span
+              v-else
+              style="
+                display: inline-block;
+                width: 150px;
+                border: 1px solid #ccc;
+                border-radius: 3px;
+                height: 30px;
+                line-height: 30px;
+                padding-left: 8px;
+                margin: 0 8px;
+              "
+              >{{ subsidySetupData.freeQuotaOfElectric }}</span
+            >
             <span>度</span>
             <span>度</span>
           </div>
           </div>
           <div class="titles">
           <div class="titles">
@@ -397,15 +546,28 @@
           <div class="system">
           <div class="system">
             <span>每 </span>
             <span>每 </span>
             <el-input
             <el-input
-              v-if="flagBtn.cuijiaoshezhi==1"
+              v-if="flagBtn.cuijiaoshezhi == 1"
               clearable
               clearable
-              v-model="callSystemData.askForPayment"
+              v-model.trim="callSystemData.askForPayment"
               style="width: 150px; margin: 0 8px"
               style="width: 150px; margin: 0 8px"
               placeholder="请输入天数"
               placeholder="请输入天数"
               @blur="callSystemDataUpdate"
               @blur="callSystemDataUpdate"
             >
             >
             </el-input>
             </el-input>
-            <span v-else style="display: inline-block;width: 150px;border: 1px solid #ccc;border-radius: 3px;height: 30px;line-height: 30px;padding-left: 8px;margin: 0 8px;">{{ callSystemData.askForPayment }}</span>
+            <span
+              v-else
+              style="
+                display: inline-block;
+                width: 150px;
+                border: 1px solid #ccc;
+                border-radius: 3px;
+                height: 30px;
+                line-height: 30px;
+                padding-left: 8px;
+                margin: 0 8px;
+              "
+              >{{ callSystemData.askForPayment }}</span
+            >
             <span>天,对待结账老师进行催缴</span>
             <span>天,对待结账老师进行催缴</span>
           </div>
           </div>
         </div>
         </div>
@@ -484,7 +646,7 @@
           </el-form-item>
           </el-form-item>
           <el-form-item label="房型服务 :" prop="name">
           <el-form-item label="房型服务 :" prop="name">
             <el-input
             <el-input
-              v-model="addtableRuleForm.name"
+              v-model.trim="addtableRuleForm.name"
               placeholder="请输入房型服务"
               placeholder="请输入房型服务"
               clearable
               clearable
             />
             />
@@ -509,7 +671,14 @@
 </template>
 </template>
 
 
 <script setup>
 <script setup>
-import { ref, reactive, nextTick, onBeforeMount, onUnmounted } from "vue";
+import {
+  ref,
+  reactive,
+  nextTick,
+  onMounted,
+  onBeforeMount,
+  onUnmounted,
+} from "vue";
 import { useRouter, useRoute } from "vue-router";
 import { useRouter, useRoute } from "vue-router";
 import { ElMessage, ElMessageBox } from "element-plus";
 import { ElMessage, ElMessageBox } from "element-plus";
 import { Calendar } from "@element-plus/icons-vue";
 import { Calendar } from "@element-plus/icons-vue";
@@ -517,6 +686,7 @@ import vidiconsApi from "@/api/vidicons.js";
 import { dayjs } from "element-plus";
 import { dayjs } from "element-plus";
 import lodash from "lodash";
 import lodash from "lodash";
 import axios from "axios";
 import axios from "axios";
+import Richtext from "./richtext.vue";
 
 
 import { useStore } from "vuex";
 import { useStore } from "vuex";
 const store = useStore();
 const store = useStore();
@@ -538,6 +708,11 @@ const systemData = reactive({
   openingTime: null,
   openingTime: null,
   phoneNumbr: null,
   phoneNumbr: null,
 });
 });
+// 富文本内容
+const textShow = ref(false);
+const fatherMessage = ref({
+  data: "",
+});
 
 
 // 查看设施服务设置数据 (===========================)
 // 查看设施服务设置数据 (===========================)
 const tableData = reactive({
 const tableData = reactive({
@@ -619,14 +794,16 @@ const getList = async () => {
   console.log(res, "系统设置信息");
   console.log(res, "系统设置信息");
   if (res.data.code == 200) {
   if (res.data.code == 200) {
     systemData.address = res.data.data.address;
     systemData.address = res.data.data.address;
-    if(res.data.data.coverPicture){
+    if (res.data.data.coverPicture) {
       systemData.coverPicture = res.data.data.coverPicture;
       systemData.coverPicture = res.data.data.coverPicture;
-    }else{
-      systemData.coverPicture =[]
+    } else {
+      systemData.coverPicture = [];
     }
     }
     systemData.decorationTime = res.data.data.decorationTime;
     systemData.decorationTime = res.data.data.decorationTime;
     systemData.id = res.data.data.id;
     systemData.id = res.data.data.id;
+    // console.log(res.data.data.introductory);
     systemData.introductory = res.data.data.introductory;
     systemData.introductory = res.data.data.introductory;
+    fatherMessage.value.data = res.data.data.introductory;
     let arr = res.data.data.hourTime.split(",");
     let arr = res.data.data.hourTime.split(",");
     let hourData = [];
     let hourData = [];
     arr.forEach((i) => {
     arr.forEach((i) => {
@@ -660,7 +837,7 @@ const addhourClick = () => {
 const delhourClick = (ind) => {
 const delhourClick = (ind) => {
   systemData.hourlivetime.splice(ind, 1);
   systemData.hourlivetime.splice(ind, 1);
   console.log(systemData.hourlivetime);
   console.log(systemData.hourlivetime);
-  systemChange()
+  systemChange();
 };
 };
 // 查看设施服务设置
 // 查看设施服务设置
 const facilityServices = async () => {
 const facilityServices = async () => {
@@ -797,7 +974,7 @@ const systemChange = async () => {
       hourlivetime.push(val);
       hourlivetime.push(val);
     });
     });
   }
   }
-  console.log(hourlivetime.join(','));
+  console.log(hourlivetime.join(","));
   let data = {
   let data = {
     permissionSettingId: sessionStorage.getItem("permissionSettingId"), //权限表id
     permissionSettingId: sessionStorage.getItem("permissionSettingId"), //权限表id
     id: systemData.id, //id(不带id时是添加,带id时是修改)
     id: systemData.id, //id(不带id时是添加,带id时是修改)
@@ -808,7 +985,7 @@ const systemChange = async () => {
     decorationTime: systemData.decorationTime, //装修时间
     decorationTime: systemData.decorationTime, //装修时间
     liveTime: systemData.liveTime[0], //入住时间
     liveTime: systemData.liveTime[0], //入住时间
     leaveTime: systemData.liveTime[1], //离店时间
     leaveTime: systemData.liveTime[1], //离店时间
-    hourTime: hourlivetime.join(','), // 钟点房时段
+    hourTime: hourlivetime.join(","), // 钟点房时段
     phoneNumbr: systemData.phoneNumbr, //电话号码
     phoneNumbr: systemData.phoneNumbr, //电话号码
     introductory: systemData.introductory, //简介
     introductory: systemData.introductory, //简介
   };
   };
@@ -839,6 +1016,16 @@ const systemChange = async () => {
     });
     });
   }
   }
 };
 };
+// 富文本编辑器 (----------------------------------------------------)
+
+const richtextClick = lodash.debounce((data) => {
+  console.log(data, "富文本传过来的数据");
+  systemData.introductory = data.html;
+  //fatherMessage.value.data = data.text;
+  fatherMessage.value.data = data.html;
+  systemChange();
+}, 500);
+
 // 查看设施服务添加 (===============================================================)
 // 查看设施服务添加 (===============================================================)
 const facilityServicesAdd = async () => {
 const facilityServicesAdd = async () => {
   addtableDataDialog.value = true;
   addtableDataDialog.value = true;
@@ -869,7 +1056,7 @@ const handleAddtableUpload = async (file) => {
   });
   });
   console.log(res, "成功上传图片");
   console.log(res, "成功上传图片");
   if (res.data.code == 200) {
   if (res.data.code == 200) {
-    addtableRuleForm.icon =  res.data.data.url;
+    addtableRuleForm.icon = res.data.data.url;
   } else {
   } else {
     ElMessage({
     ElMessage({
       type: "error",
       type: "error",
@@ -1187,7 +1374,7 @@ const handleUpload2 = async (file) => {
   console.log(res, "成功上传图片");
   console.log(res, "成功上传图片");
   if (res.data.code == 200) {
   if (res.data.code == 200) {
     console.log(systemData.coverPicture);
     console.log(systemData.coverPicture);
-    
+
     systemData.coverPicture.push({
     systemData.coverPicture.push({
       url: res.data.data.url,
       url: res.data.data.url,
       count: systemData.coverPicture.length,
       count: systemData.coverPicture.length,
@@ -1251,6 +1438,11 @@ onBeforeMount(async () => {
   subsidySetup();
   subsidySetup();
   callSystem();
   callSystem();
 });
 });
+onMounted(() => {
+  setTimeout(() => {
+    textShow.value = true;
+  }, 1000);
+});
 </script>
 </script>
 
 
 <style scoped lang="scss">
 <style scoped lang="scss">

+ 4 - 4
src/views/user/user.vue

@@ -12,7 +12,7 @@
             <el-input
             <el-input
               :clearable="true"
               :clearable="true"
               @clear="searchBtn"
               @clear="searchBtn"
-              v-model="searchInput.keyWord"
+              v-model.trim="searchInput.keyWord"
               class="w-50 m-2"
               class="w-50 m-2"
               placeholder="请输入关键字"
               placeholder="请输入关键字"
             />
             />
@@ -179,7 +179,7 @@
           </el-form-item>
           </el-form-item>
           <el-form-item label="用户名 :" prop="userName">
           <el-form-item label="用户名 :" prop="userName">
             <el-input
             <el-input
-              v-model="editRuleForm.userName"
+              v-model.trim="editRuleForm.userName"
               placeholder="请输入用户名"
               placeholder="请输入用户名"
               clearable
               clearable
               style="width: 500px"
               style="width: 500px"
@@ -187,7 +187,7 @@
           </el-form-item>
           </el-form-item>
           <el-form-item label="电话号码 :" prop="userPhone">
           <el-form-item label="电话号码 :" prop="userPhone">
             <el-input
             <el-input
-              v-model="editRuleForm.userPhone"
+              v-model.trim="editRuleForm.userPhone"
               placeholder="请输入电话号码"
               placeholder="请输入电话号码"
               clearable
               clearable
               style="width: 500px"
               style="width: 500px"
@@ -208,7 +208,7 @@
           </el-form-item> -->
           </el-form-item> -->
           <el-form-item label="微校卡号 :" prop="schoolCard">
           <el-form-item label="微校卡号 :" prop="schoolCard">
             <el-input
             <el-input
-              v-model="editRuleForm.schoolCard"
+              v-model.trim="editRuleForm.schoolCard"
               placeholder="请输入微校卡号"
               placeholder="请输入微校卡号"
               clearable
               clearable
               style="width: 500px"
               style="width: 500px"

+ 39 - 12
src/views/userRoles/userRoles.vue

@@ -12,7 +12,7 @@
             <el-input
             <el-input
               :clearable="true"
               :clearable="true"
               @clear="searchBtn"
               @clear="searchBtn"
-              v-model="searchInput.keyWord"
+              v-model.trim="searchInput.keyWord"
               class="w-50 m-2"
               class="w-50 m-2"
               placeholder="请输入关键字"
               placeholder="请输入关键字"
             />
             />
@@ -154,7 +154,7 @@
           <span>角色名称: &nbsp;&nbsp;</span>
           <span>角色名称: &nbsp;&nbsp;</span>
           <el-input
           <el-input
             :clearable="true"
             :clearable="true"
-            v-model="addRoles.name"
+            v-model.trim="addRoles.name"
             class="w-50 m-2"
             class="w-50 m-2"
             style="width: 450px"
             style="width: 450px"
             placeholder="请输入角色名称"
             placeholder="请输入角色名称"
@@ -554,7 +554,7 @@
         >
         >
           <el-form-item label="水电编码 :" prop="SD_encoding">
           <el-form-item label="水电编码 :" prop="SD_encoding">
             <el-input
             <el-input
-              v-model="editRuleForm.SD_encoding"
+              v-model.trim="editRuleForm.SD_encoding"
               placeholder="请输入水电编码"
               placeholder="请输入水电编码"
               clearable
               clearable
               style="width: 500px"
               style="width: 500px"
@@ -562,7 +562,7 @@
           </el-form-item>
           </el-form-item>
           <el-form-item label="电表编码 :" prop="DB_encoding">
           <el-form-item label="电表编码 :" prop="DB_encoding">
             <el-input
             <el-input
-              v-model="editRuleForm.DB_encoding"
+              v-model.trim="editRuleForm.DB_encoding"
               placeholder="请输入电表编码"
               placeholder="请输入电表编码"
               clearable
               clearable
               style="width: 500px"
               style="width: 500px"
@@ -710,6 +710,8 @@ const addRolesList1 = reactive({
         { name: "关电", id: 16 },
         { name: "关电", id: 16 },
         { name: "取消预定", id: 17 },
         { name: "取消预定", id: 17 },
         { name: "取消维修", id: 18 },
         { name: "取消维修", id: 18 },
+        { name: "查看密码", id: 19 },
+        { name: "退款", id: 20 },
       ],
       ],
     },
     },
   ],
   ],
@@ -815,6 +817,7 @@ const addRolesList6 = reactive({
         // { name: "删除", id: 7 },
         // { name: "删除", id: 7 },
         { name: "换房", id: 8 },
         { name: "换房", id: 8 },
         { name: "导出", id: 9 },
         { name: "导出", id: 9 },
+        { name: "备注", id: 10 },
       ],
       ],
     },
     },
   ],
   ],
@@ -834,6 +837,8 @@ const addRolesList7 = reactive({
         { name: "导入值班", id: 1 },
         { name: "导入值班", id: 1 },
         { name: "导出", id: 2 },
         { name: "导出", id: 2 },
         { name: "查看界面", id: 3 },
         { name: "查看界面", id: 3 },
+        { name: "删除", id: 4 },
+        { name: "添加", id: 5 },
       ],
       ],
     },
     },
   ],
   ],
@@ -1553,6 +1558,7 @@ const addRolesClick = () => {
   parentId.value = "";
   parentId.value = "";
   addRoles.name = "";
   addRoles.name = "";
   addRoles.id = "";
   addRoles.id = "";
+  addRoles.adminMenuId=""
   addRolesVisible.value = true;
   addRolesVisible.value = true;
   if (addRolesData1.value) {
   if (addRolesData1.value) {
     addRolesData1.value.setCheckedKeys([]);
     addRolesData1.value.setCheckedKeys([]);
@@ -1593,12 +1599,22 @@ const addRolesClick = () => {
   if (addRolesData13.value) {
   if (addRolesData13.value) {
     addRolesData13.value.setCheckedKeys([]);
     addRolesData13.value.setCheckedKeys([]);
   }
   }
+  if (addRolesData14.value) {
+    addRolesData14.value.setCheckedKeys([]);
+  }
+  if (addRolesData15.value) {
+    addRolesData15.value.setCheckedKeys([]);
+  }
+  if (addRolesData16.value) {
+    addRolesData16.value.setCheckedKeys([]);
+  }
 };
 };
 const addRolesClicks = (row) => {
 const addRolesClicks = (row) => {
   addRolesTitle.value = "添加二级角色";
   addRolesTitle.value = "添加二级角色";
   parentId.value = row.id;
   parentId.value = row.id;
   addRoles.name = "";
   addRoles.name = "";
   addRoles.id = "";
   addRoles.id = "";
+  addRoles.adminMenuId=""
   addRolesVisible.value = true;
   addRolesVisible.value = true;
   if (addRolesData1.value) {
   if (addRolesData1.value) {
     addRolesData1.value.setCheckedKeys([]);
     addRolesData1.value.setCheckedKeys([]);
@@ -1639,6 +1655,15 @@ const addRolesClicks = (row) => {
   if (addRolesData13.value) {
   if (addRolesData13.value) {
     addRolesData13.value.setCheckedKeys([]);
     addRolesData13.value.setCheckedKeys([]);
   }
   }
+  if (addRolesData14.value) {
+    addRolesData14.value.setCheckedKeys([]);
+  }
+  if (addRolesData15.value) {
+    addRolesData15.value.setCheckedKeys([]);
+  }
+  if (addRolesData16.value) {
+    addRolesData16.value.setCheckedKeys([]);
+  }
 };
 };
 const cancelAddRoles = () => {
 const cancelAddRoles = () => {
   addRolesVisible.value = false;
   addRolesVisible.value = false;
@@ -1903,8 +1928,8 @@ const confirmEdit = async () => {
   } else {
   } else {
     let data = {
     let data = {
       name: addRoles.name,
       name: addRoles.name,
-      adminMenuId: addRoles.adminMenuId,
-      permissionSettingId: sessionStorage.getItem("permissionSettingId"),
+      adminMenuId: sessionStorage.getItem("permissionSettingId"),
+      // permissionSettingId: sessionStorage.getItem("permissionSettingId"),
       houseStatusManagement: addRoles.houseStatusManagement.join(","),
       houseStatusManagement: addRoles.houseStatusManagement.join(","),
 
 
       buildingManagement: addRoles.buildingManagement.join(","),
       buildingManagement: addRoles.buildingManagement.join(","),
@@ -1951,12 +1976,13 @@ const confirmEdit = async () => {
       });
       });
       console.log(res, "添加T1角色");
       console.log(res, "添加T1角色");
       if (res.data.code == 200) {
       if (res.data.code == 200) {
-        if (addRoles.id == sessionStorage.getItem("permissionSettingId")) {
-          store.commit("ROLELIST", addRoles.id);
-          setTimeout(() => {
-            window.location.reload();
-          }, 1000);
-        }
+        getList()
+        // if (addRoles.id == sessionStorage.getItem("permissionSettingId")) {
+        //   store.commit("ROLELIST", addRoles.id);
+        //   setTimeout(() => {
+        //     window.location.reload();
+        //   }, 1000);
+        // }
         loading.close();
         loading.close();
         addRolesVisible.value = false;
         addRolesVisible.value = false;
         ElMessage({
         ElMessage({
@@ -2244,6 +2270,7 @@ onUnmounted(() => {
   .footer {
   .footer {
     width: 100%;
     width: 100%;
     flex: 1;
     flex: 1;
+    overflow: auto;
 
 
     .el-table--fit {
     .el-table--fit {
       height: calc(100% - 60px);
       height: calc(100% - 60px);