Browse Source

完成房态,房型,订单管理界面接口

hzj18279462576@163.com 1 year ago
parent
commit
0eb4b42f24

+ 210 - 0
package-lock.json

@@ -410,6 +410,19 @@
       "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.8.2.tgz",
       "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.8.2.tgz",
       "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw=="
       "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw=="
     },
     },
+    "ansi-regex": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
+      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
+    },
+    "ansi-styles": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz",
+      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+      "requires": {
+        "color-convert": "^2.0.1"
+      }
+    },
     "anymatch": {
     "anymatch": {
       "version": "3.1.3",
       "version": "3.1.3",
       "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz",
       "resolved": "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz",
@@ -457,6 +470,11 @@
       "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz",
       "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz",
       "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
       "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
     },
     },
+    "camelcase": {
+      "version": "5.3.1",
+      "resolved": "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz",
+      "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
+    },
     "chokidar": {
     "chokidar": {
       "version": "3.5.3",
       "version": "3.5.3",
       "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz",
       "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz",
@@ -472,6 +490,29 @@
         "readdirp": "~3.6.0"
         "readdirp": "~3.6.0"
       }
       }
     },
     },
+    "cliui": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmmirror.com/cliui/-/cliui-6.0.0.tgz",
+      "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
+      "requires": {
+        "string-width": "^4.2.0",
+        "strip-ansi": "^6.0.0",
+        "wrap-ansi": "^6.2.0"
+      }
+    },
+    "color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "requires": {
+        "color-name": "~1.1.4"
+      }
+    },
+    "color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
+    },
     "combined-stream": {
     "combined-stream": {
       "version": "1.0.8",
       "version": "1.0.8",
       "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz",
       "resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz",
@@ -495,6 +536,11 @@
       "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.8.tgz",
       "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.8.tgz",
       "integrity": "sha512-LcgxzFoWMEPO7ggRv1Y2N31hUf2R0Vj7fuy/m+Bg1K8rr+KAs1AEy4y9jd5DXe8pbHgX+srkHNS7TH6Q6ZhYeQ=="
       "integrity": "sha512-LcgxzFoWMEPO7ggRv1Y2N31hUf2R0Vj7fuy/m+Bg1K8rr+KAs1AEy4y9jd5DXe8pbHgX+srkHNS7TH6Q6ZhYeQ=="
     },
     },
+    "decamelize": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz",
+      "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA=="
+    },
     "deepmerge": {
     "deepmerge": {
       "version": "4.3.0",
       "version": "4.3.0",
       "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-4.3.0.tgz",
       "resolved": "https://registry.npmmirror.com/deepmerge/-/deepmerge-4.3.0.tgz",
@@ -505,6 +551,11 @@
       "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz",
       "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz",
       "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
       "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
     },
     },
+    "dijkstrajs": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz",
+      "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA=="
+    },
     "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",
@@ -543,6 +594,16 @@
         }
         }
       }
       }
     },
     },
+    "emoji-regex": {
+      "version": "8.0.0",
+      "resolved": "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz",
+      "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
+    },
+    "encode-utf8": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/encode-utf8/-/encode-utf8-1.0.3.tgz",
+      "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw=="
+    },
     "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",
@@ -591,6 +652,15 @@
         "to-regex-range": "^5.0.1"
         "to-regex-range": "^5.0.1"
       }
       }
     },
     },
+    "find-up": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmmirror.com/find-up/-/find-up-4.1.0.tgz",
+      "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+      "requires": {
+        "locate-path": "^5.0.0",
+        "path-exists": "^4.0.0"
+      }
+    },
     "follow-redirects": {
     "follow-redirects": {
       "version": "1.15.2",
       "version": "1.15.2",
       "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.2.tgz",
       "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.2.tgz",
@@ -618,6 +688,11 @@
       "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
       "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
       "dev": true
       "dev": true
     },
     },
+    "get-caller-file": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmmirror.com/get-caller-file/-/get-caller-file-2.0.5.tgz",
+      "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
+    },
     "glob-parent": {
     "glob-parent": {
       "version": "5.1.2",
       "version": "5.1.2",
       "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz",
       "resolved": "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz",
@@ -667,6 +742,11 @@
       "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz",
       "resolved": "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz",
       "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="
       "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="
     },
     },
+    "is-fullwidth-code-point": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+      "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
+    },
     "is-glob": {
     "is-glob": {
       "version": "4.0.3",
       "version": "4.0.3",
       "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz",
       "resolved": "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz",
@@ -690,6 +770,14 @@
       "resolved": "https://registry.npmmirror.com/klona/-/klona-2.0.6.tgz",
       "resolved": "https://registry.npmmirror.com/klona/-/klona-2.0.6.tgz",
       "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA=="
       "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA=="
     },
     },
+    "locate-path": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmmirror.com/locate-path/-/locate-path-5.0.0.tgz",
+      "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+      "requires": {
+        "p-locate": "^4.1.0"
+      }
+    },
     "lodash": {
     "lodash": {
       "version": "4.17.21",
       "version": "4.17.21",
       "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz",
       "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz",
@@ -751,6 +839,32 @@
       "resolved": "https://registry.npmmirror.com/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz",
       "resolved": "https://registry.npmmirror.com/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz",
       "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw=="
       "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw=="
     },
     },
+    "p-limit": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmmirror.com/p-limit/-/p-limit-2.3.0.tgz",
+      "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+      "requires": {
+        "p-try": "^2.0.0"
+      }
+    },
+    "p-locate": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmmirror.com/p-locate/-/p-locate-4.1.0.tgz",
+      "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+      "requires": {
+        "p-limit": "^2.2.0"
+      }
+    },
+    "p-try": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmmirror.com/p-try/-/p-try-2.2.0.tgz",
+      "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
+    },
+    "path-exists": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz",
+      "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
+    },
     "path-parse": {
     "path-parse": {
       "version": "1.0.7",
       "version": "1.0.7",
       "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz",
       "resolved": "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz",
@@ -767,6 +881,11 @@
       "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz",
       "resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz",
       "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="
       "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="
     },
     },
+    "pngjs": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmmirror.com/pngjs/-/pngjs-5.0.0.tgz",
+      "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw=="
+    },
     "postcss": {
     "postcss": {
       "version": "8.4.21",
       "version": "8.4.21",
       "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.21.tgz",
       "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.21.tgz",
@@ -782,6 +901,17 @@
       "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",
       "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
       "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
     },
     },
+    "qrcode": {
+      "version": "1.5.3",
+      "resolved": "https://registry.npmmirror.com/qrcode/-/qrcode-1.5.3.tgz",
+      "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==",
+      "requires": {
+        "dijkstrajs": "^1.0.1",
+        "encode-utf8": "^1.0.3",
+        "pngjs": "^5.0.0",
+        "yargs": "^15.3.1"
+      }
+    },
     "readdirp": {
     "readdirp": {
       "version": "3.6.0",
       "version": "3.6.0",
       "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz",
       "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz",
@@ -790,6 +920,16 @@
         "picomatch": "^2.2.1"
         "picomatch": "^2.2.1"
       }
       }
     },
     },
+    "require-directory": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmmirror.com/require-directory/-/require-directory-2.1.1.tgz",
+      "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="
+    },
+    "require-main-filename": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/require-main-filename/-/require-main-filename-2.0.0.tgz",
+      "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
+    },
     "resolve": {
     "resolve": {
       "version": "1.22.1",
       "version": "1.22.1",
       "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.1.tgz",
       "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.1.tgz",
@@ -829,6 +969,11 @@
         "neo-async": "^2.6.2"
         "neo-async": "^2.6.2"
       }
       }
     },
     },
+    "set-blocking": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/set-blocking/-/set-blocking-2.0.0.tgz",
+      "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw=="
+    },
     "shvl": {
     "shvl": {
       "version": "2.0.3",
       "version": "2.0.3",
       "resolved": "https://registry.npmmirror.com/shvl/-/shvl-2.0.3.tgz",
       "resolved": "https://registry.npmmirror.com/shvl/-/shvl-2.0.3.tgz",
@@ -858,6 +1003,24 @@
       "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=="
     },
     },
+    "string-width": {
+      "version": "4.2.3",
+      "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
+      "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+      "requires": {
+        "emoji-regex": "^8.0.0",
+        "is-fullwidth-code-point": "^3.0.0",
+        "strip-ansi": "^6.0.1"
+      }
+    },
+    "strip-ansi": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz",
+      "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+      "requires": {
+        "ansi-regex": "^5.0.1"
+      }
+    },
     "supports-preserve-symlinks-flag": {
     "supports-preserve-symlinks-flag": {
       "version": "1.0.0",
       "version": "1.0.0",
       "resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
       "resolved": "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
@@ -943,6 +1106,53 @@
         "shvl": "^2.0.3"
         "shvl": "^2.0.3"
       }
       }
     },
     },
+    "which-module": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/which-module/-/which-module-2.0.1.tgz",
+      "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ=="
+    },
+    "wrap-ansi": {
+      "version": "6.2.0",
+      "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+      "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+      "requires": {
+        "ansi-styles": "^4.0.0",
+        "string-width": "^4.1.0",
+        "strip-ansi": "^6.0.0"
+      }
+    },
+    "y18n": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmmirror.com/y18n/-/y18n-4.0.3.tgz",
+      "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="
+    },
+    "yargs": {
+      "version": "15.4.1",
+      "resolved": "https://registry.npmmirror.com/yargs/-/yargs-15.4.1.tgz",
+      "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
+      "requires": {
+        "cliui": "^6.0.0",
+        "decamelize": "^1.2.0",
+        "find-up": "^4.1.0",
+        "get-caller-file": "^2.0.1",
+        "require-directory": "^2.1.1",
+        "require-main-filename": "^2.0.0",
+        "set-blocking": "^2.0.0",
+        "string-width": "^4.2.0",
+        "which-module": "^2.0.0",
+        "y18n": "^4.0.0",
+        "yargs-parser": "^18.1.2"
+      }
+    },
+    "yargs-parser": {
+      "version": "18.1.3",
+      "resolved": "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-18.1.3.tgz",
+      "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
+      "requires": {
+        "camelcase": "^5.0.0",
+        "decamelize": "^1.2.0"
+      }
+    },
     "zrender": {
     "zrender": {
       "version": "5.4.3",
       "version": "5.4.3",
       "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.4.3.tgz",
       "resolved": "https://registry.npmmirror.com/zrender/-/zrender-5.4.3.tgz",

+ 1 - 0
package.json

@@ -19,6 +19,7 @@
     "hls.js": "^1.3.4",
     "hls.js": "^1.3.4",
     "jsencrypt": "^3.3.1",
     "jsencrypt": "^3.3.1",
     "lodash": "^4.17.21",
     "lodash": "^4.17.21",
+    "qrcode": "^1.5.3",
     "sass": "^1.58.0",
     "sass": "^1.58.0",
     "sass-loader": "^13.2.0",
     "sass-loader": "^13.2.0",
     "terser": "^5.16.5",
     "terser": "^5.16.5",

BIN
src/assets/delRoom.png


BIN
src/assets/icons/roomCheck.png


+ 2 - 2
src/store/modules/user.js

@@ -9,8 +9,8 @@ const state = {
   activeIndex: "",
   activeIndex: "",
   username: "",
   username: "",
   password: "",
   password: "",
-  api: "/hotel/ihotel/auto", // 线上
-  // api: "/ihotel/auto", // 测试
+  // api: "/hotel/ihotel/auto", // 线上
+  api: "/ihotel/auto", // 测试
   islogin: 1,
   islogin: 1,
   hasRoutes: false,
   hasRoutes: false,
   level: 1,
   level: 1,

+ 93 - 604
src/views/class/class.vue

@@ -60,29 +60,27 @@
         </div>
         </div>
         <div class="filter">
         <div class="filter">
           <div class="filter_block">
           <div class="filter_block">
-            <!-- <el-button
-              color="rgba(0, 97, 255, 1)"
-              type="primary"
-              class="search"
-              @click="roomClose"
-              ><span>批量改价</span></el-button
-            > -->
-            <el-button
-              color="rgba(0, 97, 255, 1)"
-              type="primary"
-              class="search"
-              @click="roomClose"
-              ><span>导入</span></el-button
-            >
-            <el-button type="primary" plain>导出</el-button>
-            <!-- <el-button
-              style="margin-left: 20px"
-              color="rgba(0, 97, 255, 1)"
-              type="primary"
-              class="search"
-              @click="recordPrice"
-              ><span>改价记录</span></el-button
-            > -->
+            <el-upload
+                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比例)
+                  </div> -->
+                </template>
+              </el-upload>
+            <el-button type="primary" @click="importExcel" plain>导出</el-button>
           </div>
           </div>
         </div>
         </div>
       </div>
       </div>
@@ -112,6 +110,7 @@
           <el-table-column
           <el-table-column
             align="center"
             align="center"
             v-for="i in tableHead"
             v-for="i in tableHead"
+            width="100"
           >
           >
           <template #header>
           <template #header>
             <div>教师资格</div>
             <div>教师资格</div>
@@ -123,265 +122,6 @@
           </el-table-column>
           </el-table-column>
         </el-table>
         </el-table>
       </div>
       </div>
-      <!-- 批量改价 -->
-      <el-dialog
-        class="roomCloseDilog"
-        v-model="roomCloseDialogVisible"
-        :close-on-click-modal="false"
-        :close-on-press-escape="false"
-        title="批量改价"
-        align-center
-        width="700"
-        :before-close="cancelRoomClose"
-      >
-        <div class="last">
-          <div class="roomUl">
-            <div class="title">选择类型</div>
-            <div class="delRoom">
-              <el-select
-                v-model="changePriceSelData"
-                class="m-2"
-                placeholder="请选择类型"
-              >
-                <el-option label="全日房" value="1" />
-                <el-option label="钟点房" value="2" />
-              </el-select>
-            </div>
-          </div>
-          <div class="roomUl">
-            <div class="title">选择房型</div>
-            <div class="delRoom">
-              <el-checkbox-group
-                @change="changePriceSelcet"
-                v-model="changePriceSelData"
-              >
-                <el-checkbox
-                  :label="i.id"
-                  v-for="i in changePirceRoomType"
-                  :key="i.id"
-                  >{{ i.hName }}</el-checkbox
-                >
-              </el-checkbox-group>
-            </div>
-          </div>
-          <div class="roomUl roomTime">
-            <div class="title">选择日期</div>
-            <div class="delRoom">
-              <div class="date">适用日期</div>
-              <div class="addDate">
-                <div class="elDate">
-                  <div
-                    class="time_li"
-                    v-for="(i, index) in changePrice.createTime"
-                    :key="index"
-                  >
-                    <el-date-picker
-                      v-model="changePrice.createTime[index]"
-                      type="daterange"
-                      range-separator="至"
-                      start-placeholder="起始时间"
-                      end-placeholder="结束时间"
-                      format="YYYY-MM-DD"
-                      value-format="YYYY-MM-DD"
-                      :prefix-icon="Calendar"
-                      placeholder="请选择日期"
-                    />
-                    <img
-                      src="@/assets/addRoom.png"
-                      v-if="changePrice.createTime.length > 1"
-                      alt=""
-                      @click="delChangePriceTime(index)"
-                    />
-                  </div>
-                </div>
-                <div class="addTime">
-                  <div class="imgTime" @click="addChangePriceTime">
-                    <img src="@/assets/addRoom.png" alt="" />
-                    <span>添加时间段</span>
-                  </div>
-                  <span class="num">最多可添加10个</span>
-                </div>
-              </div>
-            </div>
-          </div>
-          <div class="roomUl">
-            <div class="title">设置价格</div>
-            <div class="delRoom">
-              <el-table
-                :row-class-name="tableRowClassName"
-                :data="changePriceData.list"
-                style="width: 100%; height: 280px"
-                :header-cell-style="{
-                  background: 'rgba(233, 242, 242, 1)',
-                  height: '40px',
-                  border: 0,
-                }"
-              >
-                <el-table-column align="center" prop="hName" label="房型" />
-                <el-table-column align="center" />
-                <el-table-column align="center" label="价格" width="200">
-                  <template #default="{ row }">
-                    <div @click="inputPrice(row)">
-                      <span v-if="row.inputPriceShow">{{ row.price }}</span>
-                      <el-input
-                        v-else
-                        :clearable="false"
-                        ref="inputPriceRef"
-                        @blur="inputPriceBlur(row)"
-                        v-model="row.price"
-                        class="w-50 m-2"
-                        placeholder="请输入价格"
-                      />
-                    </div>
-                  </template>
-                </el-table-column>
-              </el-table>
-            </div>
-          </div>
-
-          <div class="options">
-            <el-button
-              class="queding"
-              color="rgba(0, 97, 255, 1)"
-              @click="notarizeRoomClose(roomCloseTree)"
-              >确认</el-button
-            >
-            <el-button @click="cancelRoomClose">取消</el-button>
-          </div>
-        </div>
-      </el-dialog>
-
-      <!-- 改价记录 -->
-      <el-dialog
-        class="recordDilog"
-        v-model="recordDialogVisible"
-        :close-on-click-modal="false"
-        :close-on-press-escape="false"
-        title="改价记录"
-        align-center
-        width="1400"
-        :before-close="cancelRecord"
-      >
-        <div class="middle">
-          <div class="filter">
-            <div class="condition">
-              <span>房型 : </span>
-              <el-select
-                v-model="recordSearch.roomType"
-                class="m-2"
-                placeholder="请选择房型"
-                @clear="recordPriceSearch"
-                clearable
-              >
-                <el-option
-                  :label="i.hName"
-                  :value="i.id"
-                  v-for="i in recordRoomType"
-                  :key="i.id"
-                />
-              </el-select>
-            </div>
-            <div class="condition">
-              <span>操作时间 : </span>
-              <el-date-picker
-                v-model="recordSearch.operationTime"
-                type="daterange"
-                range-separator="-"
-                start-placeholder="起始时间"
-                end-placeholder="结束时间"
-                format="YYYY-MM-DD"
-                value-format="YYYY-MM-DD"
-                :prefix-icon="Calendar"
-                placeholder="请选择日期"
-              />
-            </div>
-            <div class="condition">
-              <span>价格日期 : </span>
-              <el-date-picker
-                v-model="recordSearch.setDate"
-                type="daterange"
-                range-separator="-"
-                start-placeholder="起始时间"
-                end-placeholder="结束时间"
-                format="YYYY-MM-DD"
-                value-format="YYYY-MM-DD"
-                :prefix-icon="Calendar"
-                placeholder="请选择日期"
-              />
-            </div>
-            <div class="condition">
-              <span>操作人 : </span>
-              <el-input
-                :clearable="true"
-                @clear="recordPriceSearch"
-                v-model="recordSearch.keyWord"
-                class="w-50 m-2"
-                placeholder="请输入操作人名字"
-                style="width: 230px"
-              />
-            </div>
-            <el-button
-              style="margin-left: 20px"
-              color="rgba(0, 97, 255, 1)"
-              type="primary"
-              class="search"
-              @click="recordPriceSearch"
-              ><el-icon>
-                <Search />
-              </el-icon>
-              <span>查询</span></el-button
-            >
-            <el-button
-              style="margin-left: 20px"
-              color="rgba(0, 97, 255, 1)"
-              type="primary"
-              class="search"
-              @click="importExcel"
-              ><span>导出房价</span></el-button
-            >
-          </div>
-        </div>
-        <div class="footer" v-loading="loading">
-          <el-table
-            :row-class-name="tableRowClassName2"
-            :data="recordData.list"
-            @selection-change="handleSelectionChange"
-            style="width: 100%; height: 550px"
-            :header-cell-style="{
-              background: 'rgba(240, 243, 247, 1)',
-              height: '50px',
-              border: 0,
-            }"
-          >
-            <el-table-column align="center" prop="houseName" label="房型">
-            </el-table-column>
-            <el-table-column align="center" prop="setDate" label="价格日期" />
-            <el-table-column align="center" prop="price" label="修改后价格" />
-            <el-table-column
-              align="center"
-              prop="operationName"
-              label="操作人"
-            />
-            <el-table-column
-              align="center"
-              prop="operationTime"
-              label="操作时间"
-            >
-            </el-table-column>
-          </el-table>
-        </div>
-        <div class="pageSize">
-          <span></span>
-          <el-pagination
-            background
-            :current-page="recordPage"
-            :page-size="recordSize"
-            layout="total, prev, pager, next, jumper, slot"
-            :total="recordTotal"
-            @update:current-page="handleCurrentChange2"
-          />
-        </div>
-      </el-dialog>
 
 
       <!-- 分页组件 -->
       <!-- 分页组件 -->
       <div class="pageSize">
       <div class="pageSize">
@@ -440,77 +180,6 @@ const searchInput = reactive({
   createTime: ["2023-09-04", "2023-09-06"],
   createTime: ["2023-09-04", "2023-09-06"],
 });
 });
 
 
-const addDialogVisible = ref(false); // 控制添加员工弹窗
-
-// 批量改价数据(---------------------------------------)
-const roomCloseDialogVisible = ref(false);
-const inputPriceRef = ref();
-const changePirceRoomType = ref(); // 批量改价房间类型
-const changePrice = reactive({
-  createTime: [[]],
-});
-const changePriceSelData = ref(); // 选中的房间数据
-// 批量改价表格数据
-const changePriceData = reactive({ list: [] });
-
-// 改价记录数据(---------------------------------------)
-const recordDialogVisible = ref(false);
-const recordData = reactive({ list: [] }); // 改价记录数据
-const recordPage = ref(1); // 当前页
-const recordSize = ref(10); // 页数
-const recordTotal = ref(10); // 页数
-const recordRoomType = ref(); // 房间类型
-const recordSearch = reactive({
-  operationTime: "",
-  keyWord: "",
-  roomType: "",
-  setDate: "",
-});
-
-// 表单验证
-const rules = reactive({
-  // serial: [{ required: true, message: "序列号不能为空", trigger: "blur" }],
-  userName: [{ required: true, message: "姓名不能为空", trigger: "blur" }],
-  cardNumber: [
-    { required: true, message: "微校卡号不能为空", trigger: "blur" },
-  ],
-  userzzId: [{ required: true, message: "身份不能为空", trigger: "blur" }],
-  userPhone: [{ required: true, message: "手机号码不能为空", trigger: "blur" }],
-  schoolId: [{ required: true, message: "校区不能为空", trigger: "blur" }],
-  workType: [{ required: true, message: "工种不能为空", trigger: "blur" }],
-  teamId: [{ required: true, message: "维修班不能为空", trigger: "blur" }],
-  articleIds: [
-    { required: true, message: "关联报修类型不能为空", trigger: "blur" },
-  ],
-  buildIds: [{ required: true, message: "关联楼栋不能为空", trigger: "blur" }],
-  acceptanceTime: [
-    { required: true, message: "接单考核时间不能为空", trigger: "blur" },
-  ],
-  maintenanceTime: [
-    { required: true, message: "维修考核时间不能为空", trigger: "blur" },
-  ],
-});
-// 改价记录 操作时间
-watch(
-  () => recordSearch.operationTime,
-  (newVal, oldVal) => {
-    console.log("监听时间:", newVal);
-    if (newVal == null) {
-      recordPriceSearch();
-    }
-  }
-);
-// 改价记录 价格日期
-watch(
-  () => recordSearch.setDate,
-  (newVal, oldVal) => {
-    console.log("监听时间:", newVal);
-    if (newVal == null) {
-      recordPriceSearch();
-    }
-  }
-);
-
 // 查看员工列表
 // 查看员工列表
 const getList = async () => {
 const getList = async () => {
   loading.value = true;
   loading.value = true;
@@ -565,279 +234,101 @@ const searchBtn = () => {
 //   getList();
 //   getList();
 // }, 300);
 // }, 300);
 
 
-// 批量改价功能(------------------------------------)
-const roomClose = () => {
-  roomCloseDialogVisible.value = true;
-  changePrice.createTime = [];
-};
-// 关闭批量改价
-const cancelRoomClose = () => {
-  roomCloseDialogVisible.value = false;
-  changePriceData.list = [];
-  changePriceSelData.value = [];
-};
-// 批量改价中表格设置价格按钮
-const inputPrice = (row) => {
-  row.inputPriceShow = false;
-  // nextTick(() => {
-  //   if (inputPriceRef.value) {
-  //     inputPriceRef.value.focus();
-  //   }
-  // });
+// 导入 (--------------------------------------------------------------)
+const handleRemove = (uploadFile, uploadFiles) => {
+  // console.log(uploadFile.uid, uploadFiles);
 };
 };
-// 批量改价中表格设置价格按钮失去焦点
-const inputPriceBlur = (row) => {
-  row.inputPriceShow = true;
+// 点击图片的查看按钮
+const handlePreview = (file) => {
+  // console.log(file);
 };
 };
-// 勾选房间类型后表格添加相应的数据
-const changePriceSelcet = (val) => {
-  // console.log(val);
-  // console.log(changePriceSelData.value);
-  changePriceData.list = [];
-  changePriceSelData.value.forEach((item) => {
-    changePirceRoomType.value.forEach((i) => {
-      // console.log(item == i.id);
-      if (item == i.id) {
-        changePriceData.list.push(i);
-      }
-    });
-  });
+// 限制上传图片的大小
+const beforeAvatarUpload = (rawFile) => {
+  console.log(rawFile.type);
+  // if (rawFile.type !== "image/jpeg") {
+  //   ElMessage.error("图片格式必须为JPG/PNG格式!");
+  //   return false;
+  // } 
+  // return true;
 };
 };
-// 批量改价 删除时间段
-const delChangePriceTime = (index) => {
-  changePrice.createTime = changePrice.createTime.filter((i, ind) => {
-    return index != ind;
-  });
+// 添加照片时往fileList列表中添加图片信息
+const handleChange = async (file, fileLists) => {
+  // console.log(file, "1111");
 };
 };
-// 批量改价 添加时间段
-const addChangePriceTime = () => {
-  if (changePrice.createTime.length <= 10) {
-    changePrice.createTime.push([]);
-  } else {
-    ElMessage({
-      type: "warning",
-      showClose: true,
-      message: "最多可添加10个时间段",
-      center: true,
-    });
-  }
-};
-// 批量改价 确定改价
-const notarizeRoomClose = async () => {
-  let dateList = [];
-  changePrice.createTime.forEach((item) => [dateList.push(item.join(","))]);
-  // console.log(dateList);
-  let priceList = [];
-  changePriceData.list.forEach((item) => {
-    console.log(item);
-    priceList.push({
-      managerId: item.managerId,
-      houseId: item.id,
-      price: item.price,
-      createId: sessionStorage.getItem("roomId"),
-    });
-  });
-  let data = {
-    dateList: dateList,
-    priceList: priceList,
-  };
+// 可以获取图片参数
+const handleUpload = async (file) => {
+  console.log(file, "22222222");
+  let data = new FormData();
+  data.set("file", file.file);
   let res = await axios({
   let res = await axios({
-    method: "post",
-    url: api.value + "/mhotel/house/price/modifyPriceBatch.action",
+    method: "get",
+    url: api.value + "/class-schedule/uploadSchedule",
     headers: {
     headers: {
-      // token: sessionStorage.getItem("token"),
-      // user_head: sessionStorage.getItem("userhead"),
+      token: sessionStorage.getItem("token"),
+      user_head: sessionStorage.getItem("user_head"),
     },
     },
     data: data,
     data: data,
   });
   });
+  console.log(res, "导入课表信息");
   if (res.data.code == 200) {
   if (res.data.code == 200) {
-    getList();
-    roomCloseDialogVisible.value = false;
-    changePriceData.list = [];
-    changePriceSelData.value = [];
     ElMessage({
     ElMessage({
       type: "success",
       type: "success",
       showClose: true,
       showClose: true,
       message: res.data.message,
       message: res.data.message,
       center: true,
       center: true,
     });
     });
+  } else {
+    ElMessage({
+      type: "error",
+      showClose: true,
+      message: res.data.message,
+      center: true,
+    });
   }
   }
-  console.log(res, "确定改价");
 };
 };
 
 
-// 改价记录弹窗(---------------------------------------)
-const recordPrice = async () => {
-  recordDialogVisible.value = true;
-  recordPriceData();
-};
-// 改价数据
-const recordPriceData = async () => {
+//导出功能
+const importExcel = lodash.debounce(async () => {
   let data = {
   let data = {
-    page: recordPage.value,
-    rows: recordSize.value,
-    managerId: sessionStorage.getItem("token"),
-    houseId: recordSearch.roomType, //  房型id
-    operationName: recordSearch.keyWord, // 关键字查询
+    teacherName: searchInput.keyWord, // 关键字查询
+    stateTime:"",
+    endTime:""
   };
   };
-  if (recordSearch.operationTime) {
-    data.operationTime = recordSearch.operationTime.join(",");
-  }
-  if (recordSearch.setDate) {
-    data.setDate = recordSearch.setDate.join(",");
+  if (searchInput.createTime) {
+    data.stateTime = searchInput.createTime[0];
+    data.endTime = searchInput.createTime[1];
   }
   }
   let res = await axios({
   let res = await axios({
     method: "get",
     method: "get",
-    url: api.value + "/mhotel/house/price/queryPageHistory.action",
+    url: api.value + "/class-schedule/downloadSchedule",
     headers: {
     headers: {
-      // token: sessionStorage.getItem("token"),
-      // user_head: sessionStorage.getItem("userhead"),
+      token: sessionStorage.getItem("token"),
+      user_head: sessionStorage.getItem("user_head"),
     },
     },
     params: data,
     params: data,
+    responseType: "blob",
   });
   });
-  if (res.data.code == 200) {
-    recordData.list = res.data.data.pageList;
-    recordTotal.value = res.data.data.total;
-  }
-  console.log(res, "改价记录");
-};
-// 查询数据
-const recordPriceSearch = () => {
-  recordPriceData();
-};
-// 取消改价记录
-const cancelRecord = () => {
-  recordDialogVisible.value = false;
-};
-
-// 确认添加员工
-// const submitAdd = async (formEl) => {
-//   if (!formEl) return;
-//   await formEl.validate(async (valid, fields) => {
-//     if (valid) {
-//       if (dialongTitle.value == "添加员工") {
-//         let data = {
-//           userName: ruleForm.userName,
-//           cardNumber: ruleForm.cardNumber,
-//           userzzId: ruleForm.userzzId,
-//           userPhone: ruleForm.userPhone,
-//           schoolId: ruleForm.schoolId,
-//           workType: ruleForm.workType,
-//           articleIds: ruleForm.articleIds,
-//           buildIds: ruleForm.buildIds,
-//           teamId: ruleForm.teamId,
-//           acceptanceAssessTime: ruleForm.acceptanceTime,
-//           maintenanceAssessTime: ruleForm.maintenanceTime,
-//         };
-//         let res = await axios({
-//           method: "post",
-//           url: api.value + "/repairUser/insertRepairUserSetting",
-//           headers: {
-//             token: sessionStorage.getItem("token"),
-//             user_head: sessionStorage.getItem("userhead"),
-//           },
-//           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 {
-//         let data = {
-//           userName: ruleForm.userName,
-//           cardNumber: ruleForm.cardNumber,
-//           userzzId: ruleForm.userzzId,
-//           userPhone: ruleForm.userPhone,
-//           schoolId: ruleForm.schoolId,
-//           workType: ruleForm.workType,
-//           articleIds: ruleForm.articleIds,
-//           buildIds: ruleForm.buildIds,
-//           teamId: ruleForm.teamId,
-//           acceptanceAssessTime: ruleForm.acceptanceTime,
-//           maintenanceAssessTime: ruleForm.maintenanceTime,
-//           id: ruleForm.id,
-//         };
-//         let res = await axios({
-//           method: "post",
-//           url: api.value + "/repairUser/updateRepairUserSettingById",
-//           headers: {
-//             token: sessionStorage.getItem("token"),
-//             user_head: sessionStorage.getItem("userhead"),
-//           },
-//           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);
-//     }
-//   });
-// };
-
-//导出功能
-const importExcel = lodash.debounce(async () => {
-  let data = new FormData();
-  data.set("managerId", sessionStorage.getItem("token"));
-  data.set("houseId", recordSearch.roomType);
-  data.set("operationName", recordSearch.keyWord);
-  if (recordSearch.operationTime) {
-    data.set("operationTime", recordSearch.operationTime.join(","));
-  }
-  let res = await axios({
-    method: "post",
-    url: api.value + "/mhotel/house/price/exportHistory.action",
-    headers: {
-      // token: sessionStorage.getItem("token"),
-    },
-    data: data,
-  });
-  console.log(res, "导出台账管理");
-  if (res.data.code == 200) {
-    // var downloadPath = res.data.downurl;
-    // // window.open(downloadPath);
-    // window.location.href = downloadPath;
-    // var downloadLink = document.createElement("a");
-    // downloadLink.style.display = "none"; // 使其隐藏
-    // downloadLink.href = downloadPath;
-    // downloadLink.download = "";
-    // downloadLink.click();
-    // document.body.appendChild(downloadLink);
-    // document.body.removeChild(downloadLink);
+  console.log(res, "导出课表信息");
+  if (res.status == 200) {
+    let name = `改价记录数据`;
+    var content = res.data;
+    var datas = new Blob([content]);
+    var downloadUrl = window.URL.createObjectURL(datas);
+    var anchor = document.createElement("a");
+    anchor.href = downloadUrl;
+    anchor.download = name + ".xlsx";
+    anchor.click();
+    window.URL.revokeObjectURL(datas);
     ElMessage({
     ElMessage({
       type: "success",
       type: "success",
       showClose: true,
       showClose: true,
+      message: "导出成功",
+      center: true,
+    });
+  } else {
+    ElMessage({
+      type: "error",
+      showClose: true,
       message: res.data.message,
       message: res.data.message,
       center: true,
       center: true,
     });
     });
@@ -853,15 +344,7 @@ const tableRowClassName = ({ row, rowIndex }) => {
   }
   }
   return "";
   return "";
 };
 };
-// 表格斑马纹颜色修改
-const tableRowClassName2 = ({ row, rowIndex }) => {
-  if (rowIndex % 2 === 0) {
-    return "even2";
-  } else if (rowIndex % 2 !== 0) {
-    return "odd2";
-  }
-  return "";
-};
+
 // 分页
 // 分页
 const handleCurrentChange = (value) => {
 const handleCurrentChange = (value) => {
   // console.log(value);
   // console.log(value);
@@ -946,6 +429,12 @@ onBeforeMount(async () => {
 
 
       .filter_block {
       .filter_block {
         display: flex;
         display: flex;
+        .avatar-uploader{
+          margin-right: 20px;
+          :deep(.el-upload-list){
+            display: none;
+          }
+        }
       }
       }
 
 
       .search {
       .search {

+ 1 - 1
src/views/login/index.vue

@@ -136,7 +136,7 @@ const handleLogin = (formEl) => {
         router.push({ path: `/hotel/roomStatus` });
         router.push({ path: `/hotel/roomStatus` });
         // store.commit("indexUp", "/seniorCelebrity/order");
         // store.commit("indexUp", "/seniorCelebrity/order");
         // sessionStorage.setItem("username", ruleForm.user);
         // sessionStorage.setItem("username", ruleForm.user);
-        // sessionStorage.setItem("sidevarItem", "/hotel/roomStatus");
+        sessionStorage.setItem("sidevarItem", "/hotel/roomStatus");
         ElMessage({
         ElMessage({
           type: "success",
           type: "success",
           showClose: true,
           showClose: true,

+ 13 - 6
src/views/meter/meter.vue

@@ -134,10 +134,10 @@
           label-position="left"
           label-position="left"
           status-icon
           status-icon
         >
         >
-          <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="editRuleForm.SB_encoding"
-              placeholder="请输入水编码"
+              placeholder="请输入水编码"
               clearable
               clearable
               style="width: 500px"
               style="width: 500px"
             />
             />
@@ -319,8 +319,8 @@ const roomNumRef = ref();
 const roomNumData = ref();
 const roomNumData = ref();
 // 表单验证
 // 表单验证
 const editRules = reactive({
 const editRules = reactive({
-  SD_encoding: [
-    { required: true, message: "水编码不能为空", trigger: "blur" },
+  SB_encoding: [
+    { required: true, message: "水编码不能为空", trigger: "blur" },
   ],
   ],
   DB_encoding: [
   DB_encoding: [
     {
     {
@@ -401,7 +401,6 @@ const roomNumClick = async () => {
     params: data,
     params: data,
   });
   });
   console.log(res, "房间号查询");
   console.log(res, "房间号查询");
-
   if (res.data.code == 200) {
   if (res.data.code == 200) {
     roomNumData.value = res.data.data.records;
     roomNumData.value = res.data.data.records;
     editPageTotal.value = res.data.data.pages;
     editPageTotal.value = res.data.data.pages;
@@ -456,7 +455,9 @@ const editClick = async (row) => {
   editVisible.value = true;
   editVisible.value = true;
   editRuleForm.SB_encoding = row.waterEquipmentMeterName;
   editRuleForm.SB_encoding = row.waterEquipmentMeterName;
   editRuleForm.DB_encoding = row.electricEquipmentMeterName;
   editRuleForm.DB_encoding = row.electricEquipmentMeterName;
-  editRuleForm.roomNum = row.id;
+  roomNumClick().then(()=>{
+    editRuleForm.roomNum = row.id;
+  })
 };
 };
 // 确定编辑
 // 确定编辑
 const confirmEdit = (formEl) => {
 const confirmEdit = (formEl) => {
@@ -481,6 +482,9 @@ const confirmEdit = (formEl) => {
         });
         });
         console.log(res, "新增确定");
         console.log(res, "新增确定");
         if (res.data.code == 200) {
         if (res.data.code == 200) {
+          editVisible.value = false;
+          editRef.value.resetFields();
+          getList()
           ElMessage({
           ElMessage({
             type: "success",
             type: "success",
             showClose: true,
             showClose: true,
@@ -513,6 +517,9 @@ const confirmEdit = (formEl) => {
         });
         });
         console.log(res, "编辑确定");
         console.log(res, "编辑确定");
         if (res.data.code == 200) {
         if (res.data.code == 200) {
+          editVisible.value = false;
+          editRef.value.resetFields();
+          getList()
           ElMessage({
           ElMessage({
             type: "success",
             type: "success",
             showClose: true,
             showClose: true,

File diff suppressed because it is too large
+ 2544 - 847
src/views/order/order.vue


+ 21 - 11
src/views/process/process.vue

@@ -112,7 +112,11 @@
               style="width: 150px"
               style="width: 150px"
               @change="searchBtn"
               @change="searchBtn"
             >
             >
-              <el-option v-for="i in departmentData" :label="i" :value="i" />
+              <el-option
+                v-for="i in departmentData"
+                :label="i.name"
+                :value="i.id"
+              />
             </el-select>
             </el-select>
           </div>
           </div>
         </div>
         </div>
@@ -169,7 +173,7 @@
               label="提交时间"
               label="提交时间"
               width="180"
               width="180"
             />
             />
-            <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"
               prop="examineAndApproveTime"
               prop="examineAndApproveTime"
@@ -222,8 +226,8 @@
             >
             >
               <template #default="{ row }">
               <template #default="{ row }">
                 <div class="options">
                 <div class="options">
-                  <div class="agree" @click="agreeRemarksClick(row)">同意</div>
-                  <div class="reject" @click="rejectRemarksClick(row)">
+                  <div class="agree" v-if="row.status==1" @click="agreeRemarksClick(row)">同意</div>
+                  <div class="reject" v-if="row.status==1" @click="rejectRemarksClick(row)">
                     驳回
                     驳回
                   </div>
                   </div>
                 </div>
                 </div>
@@ -292,7 +296,7 @@
       </el-dialog>
       </el-dialog>
     </div>
     </div>
     <div v-if="changeIndex == 2" class="regulation">
     <div v-if="changeIndex == 2" class="regulation">
-      <div class="condition">
+      <!-- <div class="condition">
         <span>可见范围&nbsp;&nbsp; </span>
         <span>可见范围&nbsp;&nbsp; </span>
         <el-select
         <el-select
           :clearable="false"
           :clearable="false"
@@ -305,7 +309,7 @@
           <el-option label="领导" :value="1" />
           <el-option label="领导" :value="1" />
           <el-option label="教师" :value="2" />
           <el-option label="教师" :value="2" />
         </el-select>
         </el-select>
-      </div>
+      </div> -->
       <div class="condition">
       <div class="condition">
         <span>指定终点 &nbsp;&nbsp;</span>
         <span>指定终点 &nbsp;&nbsp;</span>
         <el-select
         <el-select
@@ -315,9 +319,8 @@
           placeholder="请选择指定终点"
           placeholder="请选择指定终点"
           style="width: 280px"
           style="width: 280px"
         >
         >
-          <el-option label="全部" :value="0" />
-          <el-option label="最高上级" :value="1" />
-          <el-option label="直属上级" :value="2" />
+          <el-option label="最上级审批" :value="1" />
+          <el-option label="依次审批" :value="2" />
         </el-select>
         </el-select>
       </div>
       </div>
       <div class="condition hint">
       <div class="condition hint">
@@ -365,7 +368,14 @@ const loading = ref(false);
 const tableData = reactive({
 const tableData = reactive({
   list: [],
   list: [],
 });
 });
-const departmentData = ref(); // 部门数据
+const departmentData = ref([
+  {name:'学生',id:1},
+  {name:'教职工',id:4},
+  {name:'校友',id:5},
+  {name:'访客应用身份',id:6},
+  {name:'临时人员',id:7},
+  {name:'其他',id:0},
+]); // 部门数据
 const currentPage = ref(1); // 当前页
 const currentPage = ref(1); // 当前页
 const pageSize = ref(9);
 const pageSize = ref(9);
 const total = ref(); // 当前总数
 const total = ref(); // 当前总数
@@ -600,7 +610,7 @@ const handleCurrentChange = (value) => {
 
 
 onBeforeMount(async () => {
 onBeforeMount(async () => {
   api.value = store.state.user.api;
   api.value = store.state.user.api;
-  departmentList();
+  // departmentList();
   getList();
   getList();
   // changeItem(changeIndex.value);
   // changeItem(changeIndex.value);
 });
 });

+ 225 - 140
src/views/roomPrice/roomPrice.vue

@@ -15,7 +15,7 @@
                 format="YYYY-MM-DD HH:mm:ss"
                 format="YYYY-MM-DD HH:mm:ss"
                 value-format="YYYY-MM-DD HH:mm:ss"
                 value-format="YYYY-MM-DD HH:mm:ss"
                 :prefix-icon="Calendar"
                 :prefix-icon="Calendar"
-                :clearable="false"
+                :clearable="true"
                 placeholder="请选择日期"
                 placeholder="请选择日期"
                 @change="searchData"
                 @change="searchData"
               />
               />
@@ -33,7 +33,7 @@
               >
               >
                 <el-option
                 <el-option
                   :label="i.roomName"
                   :label="i.roomName"
-                  :value="i.id"
+                  :value="i.roomName"
                   v-for="i in houseTypeData"
                   v-for="i in houseTypeData"
                   :key="i.id"
                   :key="i.id"
                 />
                 />
@@ -70,7 +70,21 @@
             height: '50px',
             height: '50px',
           }"
           }"
         >
         >
-          <el-table-column align="center" width="200" prop="houseName" label="本地房型" />
+          <el-table-column
+            align="center"
+            width="200"
+            prop="houseName"
+            label="本地房型"
+          >
+            <template #default="{ row }">
+              <span
+                >{{ row.houseName
+                }}<span style="color: #1e7dfb"
+                  >( {{ row.houseType == 1 ? "全" : "钟" }} )</span
+                ></span
+              >
+            </template>
+          </el-table-column>
           <el-table-column
           <el-table-column
             v-for="(item, index) in tableHead"
             v-for="(item, index) in tableHead"
             align="center"
             align="center"
@@ -100,12 +114,13 @@
             <div class="title">选择类型</div>
             <div class="title">选择类型</div>
             <div class="delRoom">
             <div class="delRoom">
               <el-select
               <el-select
-                v-model="changePriceSelData"
+                v-model="changePriceData.type"
                 class="m-2"
                 class="m-2"
                 placeholder="请选择类型"
                 placeholder="请选择类型"
+                @change="roomTypeChange"
               >
               >
-                <el-option label="全日房" value="1" />
-                <el-option label="钟点房" value="2" />
+                <el-option label="全日房" :value="1" />
+                <el-option label="钟点房" :value="2" />
               </el-select>
               </el-select>
             </div>
             </div>
           </div>
           </div>
@@ -113,15 +128,14 @@
             <div class="title">选择房型</div>
             <div class="title">选择房型</div>
             <div class="delRoom">
             <div class="delRoom">
               <el-checkbox-group
               <el-checkbox-group
-                @change="changePriceSelcet"
-                v-model="changePriceSelData"
+                @change="changeTypeSelect"
+                v-model="changePriceData.list"
               >
               >
                 <el-checkbox
                 <el-checkbox
-                  :label="i.id"
-                  v-for="i in changePirceRoomType"
-                  :key="i.id"
-                  >{{ i.hName }}</el-checkbox
-                >
+                  :label="i.roomName"
+                  v-for="i in typeList"
+                  :value="i.id"
+                ></el-checkbox>
               </el-checkbox-group>
               </el-checkbox-group>
             </div>
             </div>
           </div>
           </div>
@@ -170,7 +184,7 @@
             <div class="delRoom">
             <div class="delRoom">
               <el-table
               <el-table
                 :row-class-name="tableRowClassName"
                 :row-class-name="tableRowClassName"
-                :data="changePriceData.list"
+                :data="changePriceData.typeData"
                 style="width: 100%; height: 280px"
                 style="width: 100%; height: 280px"
                 :header-cell-style="{
                 :header-cell-style="{
                   background: 'rgba(233, 242, 242, 1)',
                   background: 'rgba(233, 242, 242, 1)',
@@ -178,18 +192,17 @@
                   border: 0,
                   border: 0,
                 }"
                 }"
               >
               >
-                <el-table-column align="center" prop="hName" label="房型" />
+                <el-table-column align="center" prop="roomName" label="房型" />
                 <el-table-column align="center" />
                 <el-table-column align="center" />
                 <el-table-column align="center" label="价格" width="200">
                 <el-table-column align="center" label="价格" width="200">
                   <template #default="{ row }">
                   <template #default="{ row }">
-                    <div @click="inputPrice(row)">
-                      <span v-if="row.inputPriceShow">{{ row.price }}</span>
+                    <div>
+                      <!-- <span v-if="row.inputPriceShow">{{ row.roomPrice }}</span> -->
                       <el-input
                       <el-input
-                        v-else
                         :clearable="false"
                         :clearable="false"
                         ref="inputPriceRef"
                         ref="inputPriceRef"
-                        @blur="inputPriceBlur(row)"
-                        v-model="row.price"
+                        @change="inputPrice(row)"
+                        v-model="row.roomPrice"
                         class="w-50 m-2"
                         class="w-50 m-2"
                         placeholder="请输入价格"
                         placeholder="请输入价格"
                       />
                       />
@@ -226,6 +239,20 @@
         <div class="middle">
         <div class="middle">
           <div class="filter">
           <div class="filter">
             <div class="condition">
             <div class="condition">
+              <span>类型 : </span>
+              <el-select
+                v-model="recordSearch.type"
+                class="m-2"
+                placeholder="请选择类型"
+                @clear="recordPriceSearch"
+                clearable
+                style="width: 200px"
+              >
+                <el-option label="全日房" :value="1" />
+                <el-option label="钟点房" :value="2" />
+              </el-select>
+            </div>
+            <div class="condition">
               <span>房型 : </span>
               <span>房型 : </span>
               <el-select
               <el-select
                 v-model="recordSearch.roomType"
                 v-model="recordSearch.roomType"
@@ -236,9 +263,9 @@
                 style="width: 200px"
                 style="width: 200px"
               >
               >
                 <el-option
                 <el-option
-                  :label="i.hName"
-                  :value="i.id"
-                  v-for="i in recordRoomType"
+                  :label="i.roomName"
+                  :value="i.roomName"
+                  v-for="i in houseTypeData"
                   :key="i.id"
                   :key="i.id"
                 />
                 />
               </el-select>
               </el-select>
@@ -246,7 +273,7 @@
             <div class="condition">
             <div class="condition">
               <span>操作时间 : </span>
               <span>操作时间 : </span>
               <el-date-picker
               <el-date-picker
-                v-model="recordSearch.operationTime"
+                v-model="recordSearch.operatingTime"
                 type="daterange"
                 type="daterange"
                 range-separator="-"
                 range-separator="-"
                 start-placeholder="起始时间"
                 start-placeholder="起始时间"
@@ -255,6 +282,8 @@
                 value-format="YYYY-MM-DD"
                 value-format="YYYY-MM-DD"
                 :prefix-icon="Calendar"
                 :prefix-icon="Calendar"
                 placeholder="请选择日期"
                 placeholder="请选择日期"
+                unlink-panels
+                @change="recordPriceSearch"
               />
               />
             </div>
             </div>
             <div class="condition">
             <div class="condition">
@@ -269,6 +298,8 @@
                 value-format="YYYY-MM-DD"
                 value-format="YYYY-MM-DD"
                 :prefix-icon="Calendar"
                 :prefix-icon="Calendar"
                 placeholder="请选择日期"
                 placeholder="请选择日期"
+                unlink-panels
+                @change="recordPriceSearch"
               />
               />
             </div>
             </div>
             <div class="condition">
             <div class="condition">
@@ -316,19 +347,23 @@
             }"
             }"
           >
           >
             <el-table-column align="center" prop="houseName" label="房型">
             <el-table-column align="center" prop="houseName" label="房型">
+              <template #default="{ row }">
+                <span
+                  >{{ row.houseName
+                  }}<span style="color: #1e7dfb"
+                    >( {{ row.houseType == 1 ? "全" : "钟" }} )</span
+                  ></span
+                >
+              </template>
             </el-table-column>
             </el-table-column>
             <el-table-column align="center" prop="setDate" label="价格日期" />
             <el-table-column align="center" prop="setDate" label="价格日期" />
-            <el-table-column align="center" prop="price" label="修改后价格" />
             <el-table-column
             <el-table-column
               align="center"
               align="center"
-              prop="operationName"
-              label="操作人"
+              prop="alterPrice"
+              label="修改后价格"
             />
             />
-            <el-table-column
-              align="center"
-              prop="operationTime"
-              label="操作时间"
-            >
+            <el-table-column align="center" prop="name" label="操作人" />
+            <el-table-column align="center" prop="date" label="操作时间">
             </el-table-column>
             </el-table-column>
           </el-table>
           </el-table>
         </div>
         </div>
@@ -478,28 +513,27 @@ const tableData = reactive({
 const currentPage = ref(1); // 当前页
 const currentPage = ref(1); // 当前页
 const pageSize = ref(10);
 const pageSize = ref(10);
 const total = ref(); // 当前总数
 const total = ref(); // 当前总数
-// 下拉框数据
-const changePriceSelect = ref();
-// const selectData = reactive({ list: [] }); // 多选框选择的数据
+
 // 搜索按钮数据
 // 搜索按钮数据
 const searchInput = reactive({
 const searchInput = reactive({
   changePriceSelId: "",
   changePriceSelId: "",
-  createTime: '',
+  createTime: "",
 });
 });
-const houseTypeData=ref()// 房型数据
-
-const addDialogVisible = ref(false); // 控制添加员工弹窗
+const houseTypeData = ref([]); // 房型数据
 
 
 // 批量改价数据(---------------------------------------)
 // 批量改价数据(---------------------------------------)
 const roomCloseDialogVisible = ref(false);
 const roomCloseDialogVisible = ref(false);
 const inputPriceRef = ref();
 const inputPriceRef = ref();
-const changePirceRoomType = ref(); // 批量改价房间类型
 const changePrice = reactive({
 const changePrice = reactive({
   createTime: [[]],
   createTime: [[]],
+}); // 日期列表
+const typeList = ref(); // 类型列表
+// 批量改价数据
+const changePriceData = reactive({
+  type: "", // 房间选择的类型
+  list: [], // 类型勾选数据
+  typeData: [],
 });
 });
-const changePriceSelData = ref(); // 选中的房间数据
-// 批量改价表格数据
-const changePriceData = reactive({ list: [] });
 
 
 // 改价记录数据(---------------------------------------)
 // 改价记录数据(---------------------------------------)
 const recordDialogVisible = ref(false);
 const recordDialogVisible = ref(false);
@@ -509,10 +543,11 @@ const recordSize = ref(10); // 页数
 const recordTotal = ref(10); // 页数
 const recordTotal = ref(10); // 页数
 const recordRoomType = ref(); // 房间类型
 const recordRoomType = ref(); // 房间类型
 const recordSearch = reactive({
 const recordSearch = reactive({
-  operationTime: "",
-  keyWord: "",
-  roomType: "",
+  operatingTime: "",
   setDate: "",
   setDate: "",
+  keyWord: "",
+  roomType: "", // 房型
+  type: "", // 类型
 });
 });
 
 
 // 表单验证
 // 表单验证
@@ -538,26 +573,6 @@ const rules = reactive({
     { required: true, message: "维修考核时间不能为空", trigger: "blur" },
     { required: true, message: "维修考核时间不能为空", trigger: "blur" },
   ],
   ],
 });
 });
-// 改价记录 操作时间
-watch(
-  () => recordSearch.operationTime,
-  (newVal, oldVal) => {
-    console.log("监听时间:", newVal);
-    if (newVal == null) {
-      recordPriceSearch();
-    }
-  }
-);
-// 改价记录 价格日期
-watch(
-  () => recordSearch.setDate,
-  (newVal, oldVal) => {
-    console.log("监听时间:", newVal);
-    if (newVal == null) {
-      recordPriceSearch();
-    }
-  }
-);
 
 
 // 房价管理分页
 // 房价管理分页
 const getList = async () => {
 const getList = async () => {
@@ -580,7 +595,7 @@ const getList = async () => {
     },
     },
     params: data,
     params: data,
   });
   });
-  console.log(res, "房价管理");
+  console.log(res, "房价分页数据");
   if (res.data.code == 200) {
   if (res.data.code == 200) {
     tableData.list = res.data.data.page.records;
     tableData.list = res.data.data.page.records;
     let arr = [];
     let arr = [];
@@ -605,7 +620,6 @@ const getList = async () => {
 
 
 // 搜索功能  改变日期和房型改变数据
 // 搜索功能  改变日期和房型改变数据
 const searchData = (val) => {
 const searchData = (val) => {
-  // console.log(val);
   getList();
   getList();
 };
 };
 // const searchData = lodash.debounce(async () => {
 // const searchData = lodash.debounce(async () => {
@@ -615,40 +629,60 @@ const searchData = (val) => {
 // 批量改价功能(------------------------------------)
 // 批量改价功能(------------------------------------)
 const roomClose = () => {
 const roomClose = () => {
   roomCloseDialogVisible.value = true;
   roomCloseDialogVisible.value = true;
+  changePriceData.type = 1;
+  roomTypeChange();
   changePrice.createTime = [[]];
   changePrice.createTime = [[]];
 };
 };
+// 选择类型改变房型数据
+const roomTypeChange = async (val) => {
+  changePriceData.typeData = [];
+  changePriceData.list = [];
+  let res = await axios({
+    method: "get",
+    url: api.value + "house-price/roomType",
+    headers: {
+      token: sessionStorage.getItem("token"),
+      user_head: sessionStorage.getItem("userhead"),
+    },
+  });
+  console.log(res, "房型类型列表");
+  if (res.data.code == 200) {
+    if (changePriceData.type == 1) {
+      typeList.value = res.data.data.day;
+    } else if (changePriceData.type == 2) {
+      typeList.value = res.data.data.hour;
+    }
+  } else {
+    ElMessage({
+      type: "error",
+      showClose: true,
+      message: res.data.message,
+      center: true,
+    });
+  }
+};
 // 关闭批量改价
 // 关闭批量改价
 const cancelRoomClose = () => {
 const cancelRoomClose = () => {
   roomCloseDialogVisible.value = false;
   roomCloseDialogVisible.value = false;
   changePriceData.list = [];
   changePriceData.list = [];
-  changePriceSelData.value = [];
+  changePriceData.typeData = [];
 };
 };
 // 批量改价中表格设置价格按钮
 // 批量改价中表格设置价格按钮
 const inputPrice = (row) => {
 const inputPrice = (row) => {
-  row.inputPriceShow = false;
-  // nextTick(() => {
-  //   if (inputPriceRef.value) {
-  //     inputPriceRef.value.focus();
-  //   }
-  // });
-};
-// 批量改价中表格设置价格按钮失去焦点
-const inputPriceBlur = (row) => {
-  row.inputPriceShow = true;
+  console.log(typeList.value);
 };
 };
+
 // 勾选房间类型后表格添加相应的数据
 // 勾选房间类型后表格添加相应的数据
-const changePriceSelcet = (val) => {
-  // console.log(val);
-  // console.log(changePriceSelData.value);
-  changePriceData.list = [];
-  changePriceSelData.value.forEach((item) => {
-    changePirceRoomType.value.forEach((i) => {
-      // console.log(item == i.id);
-      if (item == i.id) {
-        changePriceData.list.push(i);
+const changeTypeSelect = (val) => {
+  changePriceData.typeData = [];
+  typeList.value.forEach((item) => {
+    changePriceData.list.forEach((i) => {
+      if (item.id == i) {
+        changePriceData.typeData.push(item);
       }
       }
     });
     });
   });
   });
+  console.log(changePriceData.typeData);
 };
 };
 // 批量改价 删除时间段
 // 批量改价 删除时间段
 const delChangePriceTime = (index) => {
 const delChangePriceTime = (index) => {
@@ -671,81 +705,118 @@ const addChangePriceTime = () => {
 };
 };
 // 批量改价 确定改价
 // 批量改价 确定改价
 const notarizeRoomClose = async () => {
 const notarizeRoomClose = async () => {
-  let dateList = [];
-  changePrice.createTime.forEach((item) => [dateList.push(item.join(","))]);
-  // console.log(dateList);
+  let dateTime=[]
+  changePrice.createTime.forEach(item=>{
+    if(item.length){
+      dateTime.push(item)
+    }
+  })
   let priceList = [];
   let priceList = [];
-  changePriceData.list.forEach((item) => {
-    console.log(item);
+  changePriceData.typeData.forEach((item) => {
     priceList.push({
     priceList.push({
-      managerId: item.managerId,
-      houseId: item.id,
-      price: item.price,
-      createId: sessionStorage.getItem("roomId"),
+      type: item.roomType,
+      name: item.roomName,
+      date: '',
+      price: item.roomPrice,
     });
     });
   });
   });
+  // console.log(dateTime,priceList);
+  let arr=[]
+  dateTime.forEach(item=>{
+    priceList.forEach(i=>{
+      arr.push({
+        type: i.type,
+        name: i.name,
+        date: item.join(','),
+        price: i.price,
+      })
+    })
+  })
+  console.log(arr);
   let data = {
   let data = {
-    dateList: dateList,
-    priceList: priceList,
-  };
+    alterDtoList: arr,
+    adminId: sessionStorage.getItem("permissionSettingId")
+  }
   let res = await axios({
   let res = await axios({
     method: "post",
     method: "post",
-    url: api.value + "/mhotel/house/price/modifyPriceBatch.action",
+    url: api.value + "/house-price/alterPrice",
     headers: {
     headers: {
-      // token: sessionStorage.getItem("token"),
-      // user_head: sessionStorage.getItem("userhead"),
+      token: sessionStorage.getItem("token"),
+      user_head: sessionStorage.getItem("userhead"),
     },
     },
     data: data,
     data: data,
   });
   });
+  console.log(res, "确定改价");
   if (res.data.code == 200) {
   if (res.data.code == 200) {
     getList();
     getList();
     roomCloseDialogVisible.value = false;
     roomCloseDialogVisible.value = false;
     changePriceData.list = [];
     changePriceData.list = [];
-    changePriceSelData.value = [];
+    changePriceData.typeData = [];
     ElMessage({
     ElMessage({
       type: "success",
       type: "success",
       showClose: true,
       showClose: true,
       message: res.data.message,
       message: res.data.message,
       center: true,
       center: true,
     });
     });
+  }else{
+    ElMessage({
+      type: "error",
+      showClose: true,
+      message: res.data.message,
+      center: true,
+    });
   }
   }
-  console.log(res, "确定改价");
 };
 };
 
 
 // 改价记录弹窗(---------------------------------------)
 // 改价记录弹窗(---------------------------------------)
 const recordPrice = async () => {
 const recordPrice = async () => {
   recordDialogVisible.value = true;
   recordDialogVisible.value = true;
+  recordSearch.operatingTime = "";
+  recordSearch.setDate = "";
+  recordSearch.keyWord = "";
+  recordSearch.roomType = "";
+  recordSearch.type = "";
   recordPriceData();
   recordPriceData();
 };
 };
 // 改价数据
 // 改价数据
 const recordPriceData = async () => {
 const recordPriceData = async () => {
   let data = {
   let data = {
     page: recordPage.value,
     page: recordPage.value,
-    rows: recordSize.value,
-    managerId: sessionStorage.getItem("token"),
-    houseId: recordSearch.roomType, //  房型id
-    operationName: recordSearch.keyWord, // 关键字查询
+    size: recordSize.value,
+    adminId: sessionStorage.getItem("permissionSettingId"),
+    type: recordSearch.type, // 房型
+    operatingName: recordSearch.keyWord, // 操作人
+    houseName: recordSearch.roomType,
   };
   };
-  if (recordSearch.operationTime) {
-    data.operationTime = recordSearch.operationTime.join(",");
+  // 操作时间
+  if (recordSearch.operatingTime) {
+    data.operatingTime = recordSearch.operatingTime.join(",");
   }
   }
+  // 价格日期
   if (recordSearch.setDate) {
   if (recordSearch.setDate) {
-    data.setDate = recordSearch.setDate.join(",");
+    data.priceTime = recordSearch.setDate.join(",");
   }
   }
   let res = await axios({
   let res = await axios({
     method: "get",
     method: "get",
-    url: api.value + "/mhotel/house/price/queryPageHistory.action",
+    url: api.value + "/house-price/alterPriceRecord",
     headers: {
     headers: {
       // token: sessionStorage.getItem("token"),
       // token: sessionStorage.getItem("token"),
       // user_head: sessionStorage.getItem("userhead"),
       // user_head: sessionStorage.getItem("userhead"),
     },
     },
     params: data,
     params: data,
   });
   });
+  console.log(res, "改价记录");
   if (res.data.code == 200) {
   if (res.data.code == 200) {
-    recordData.list = res.data.data.pageList;
-    recordTotal.value = res.data.data.total;
+    recordData.list = res.data.data.list;
+    recordTotal.value = res.data.data.totalCount;
+  } else {
+    ElMessage({
+      type: "error",
+      showClose: true,
+      message: res.data.message,
+      center: true,
+    });
   }
   }
-  console.log(res, "改价记录");
 };
 };
 // 查询数据
 // 查询数据
 const recordPriceSearch = () => {
 const recordPriceSearch = () => {
@@ -855,36 +926,50 @@ const cancelRecord = () => {
 
 
 //导出功能
 //导出功能
 const importExcel = lodash.debounce(async () => {
 const importExcel = lodash.debounce(async () => {
-  let data = new FormData();
-  data.set("managerId", sessionStorage.getItem("token"));
-  data.set("houseId", recordSearch.roomType);
-  data.set("operationName", recordSearch.keyWord);
-  if (recordSearch.operationTime) {
-    data.set("operationTime", recordSearch.operationTime.join(","));
+  let data = {
+    type: recordSearch.type, // 房型
+    operatingName: recordSearch.keyWord, // 操作人
+    houseName: recordSearch.roomType,
+  };
+  // 操作时间
+  if (recordSearch.operatingTime) {
+    data.operatingTime = recordSearch.operatingTime.join(",");
+  }
+  // 价格日期
+  if (recordSearch.setDate) {
+    data.priceTime = recordSearch.setDate.join(",");
   }
   }
   let res = await axios({
   let res = await axios({
-    method: "post",
-    url: api.value + "/mhotel/house/price/exportHistory.action",
+    method: "get",
+    url: api.value + "/house-price/queryExport",
     headers: {
     headers: {
-      // token: sessionStorage.getItem("token"),
+      token: sessionStorage.getItem("token"),
+      user_head: sessionStorage.getItem("user_head"),
     },
     },
-    data: data,
+    params: data,
+    responseType: "blob",
   });
   });
-  console.log(res, "导出台账管理");
-  if (res.data.code == 200) {
-    // var downloadPath = res.data.downurl;
-    // // window.open(downloadPath);
-    // window.location.href = downloadPath;
-    // var downloadLink = document.createElement("a");
-    // downloadLink.style.display = "none"; // 使其隐藏
-    // downloadLink.href = downloadPath;
-    // downloadLink.download = "";
-    // downloadLink.click();
-    // document.body.appendChild(downloadLink);
-    // document.body.removeChild(downloadLink);
+  console.log(res, "导出改价记录");
+  if (res.status == 200) {
+    let name = `改价记录数据`;
+    var content = res.data;
+    var datas = new Blob([content]);
+    var downloadUrl = window.URL.createObjectURL(datas);
+    var anchor = document.createElement("a");
+    anchor.href = downloadUrl;
+    anchor.download = name + ".xlsx";
+    anchor.click();
+    window.URL.revokeObjectURL(datas);
     ElMessage({
     ElMessage({
       type: "success",
       type: "success",
       showClose: true,
       showClose: true,
+      message: "导出成功",
+      center: true,
+    });
+  } else {
+    ElMessage({
+      type: "error",
+      showClose: true,
       message: res.data.message,
       message: res.data.message,
       center: true,
       center: true,
     });
     });
@@ -937,7 +1022,7 @@ onBeforeMount(async () => {
     params: data,
     params: data,
   });
   });
   console.log(res, "房型下拉框数据");
   console.log(res, "房型下拉框数据");
-  houseTypeData.value=res.data.data.day
+  houseTypeData.value = res.data.data.day;
   // 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;
@@ -1035,7 +1120,7 @@ onBeforeMount(async () => {
 
 
     .footer {
     .footer {
       width: 100%;
       width: 100%;
-     flex:1;
+      flex: 1;
       margin: 10px auto 0;
       margin: 10px auto 0;
 
 
       .el-table--fit {
       .el-table--fit {

File diff suppressed because it is too large
+ 2370 - 913
src/views/roomStatus/roomStatus.vue


+ 75 - 70
src/views/roomType/roomType.vue

@@ -81,7 +81,7 @@
           <el-table-column align="center" prop="name" label="房型" />
           <el-table-column align="center" prop="name" label="房型" />
           <el-table-column align="center" prop="roomId" label="房号" />
           <el-table-column align="center" prop="roomId" label="房号" />
           <el-table-column align="center" prop="price" label="房费(元)" />
           <el-table-column align="center" prop="price" label="房费(元)" />
-          <el-table-column align="center" prop="visibleName" label="可见范围" />
+          <!-- <el-table-column align="center" prop="visibleName" 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="类型">
             <template #default="scope">
             <template #default="scope">
@@ -296,7 +296,7 @@
                 </div>
                 </div>
               </div>
               </div>
               <div class="form_item">
               <div class="form_item">
-                <div class="items">
+                <!-- <div class="items">
                   <el-form-item label="可见范围 :" prop="visible">
                   <el-form-item label="可见范围 :" prop="visible">
                     <el-select
                     <el-select
                       v-model="ruleForm.visible"
                       v-model="ruleForm.visible"
@@ -314,7 +314,7 @@
                       <el-option label="领导" value="7" />
                       <el-option label="领导" value="7" />
                     </el-select>
                     </el-select>
                   </el-form-item>
                   </el-form-item>
-                </div>
+                </div> -->
                 <div class="items">
                 <div class="items">
                   <el-form-item label="类型 :" prop="roomType">
                   <el-form-item label="类型 :" prop="roomType">
                     <el-select
                     <el-select
@@ -329,7 +329,7 @@
                   </el-form-item>
                   </el-form-item>
                 </div>
                 </div>
               </div>
               </div>
-              <div class="form_item">
+              <div class="form_item" v-if="ruleForm.roomType==2">
                 <div class="items">
                 <div class="items">
                   <el-form-item label="钟点时长 :" prop="roomLiveTime">
                   <el-form-item label="钟点时长 :" prop="roomLiveTime">
                     <el-select
                     <el-select
@@ -345,7 +345,7 @@
                     </el-select>
                     </el-select>
                   </el-form-item>
                   </el-form-item>
                 </div>
                 </div>
-                <div class="items">
+                <!-- <div class="items">
                   <el-form-item label="使用时间 :" prop="receivingTime">
                   <el-form-item label="使用时间 :" prop="receivingTime">
                     <el-time-picker
                     <el-time-picker
                       v-model="ruleForm.receivingTime"
                       v-model="ruleForm.receivingTime"
@@ -358,7 +358,7 @@
                       style="width: 200px"
                       style="width: 200px"
                     />
                     />
                   </el-form-item>
                   </el-form-item>
-                </div>
+                </div> -->
               </div>
               </div>
               <div class="titles">
               <div class="titles">
                 <span>房型配置</span
                 <span>房型配置</span
@@ -384,11 +384,11 @@
                       v-model="ruleForm.roomConfig"
                       v-model="ruleForm.roomConfig"
                       :max="5"
                       :max="5"
                     >
                     >
-                      <el-checkbox label="阳台">阳台</el-checkbox>
-                      <el-checkbox label="电视">电视</el-checkbox>
+                      <el-checkbox v-for="i in roomConfig" :label="i.houseService">{{i.houseService}}</el-checkbox>
+                      <!-- <el-checkbox label="电视">电视</el-checkbox>
                       <el-checkbox label="双人床">双人床</el-checkbox>
                       <el-checkbox label="双人床">双人床</el-checkbox>
                       <el-checkbox label="浴室">浴室</el-checkbox>
                       <el-checkbox label="浴室">浴室</el-checkbox>
-                      <el-checkbox label="投影机">投影机</el-checkbox>
+                      <el-checkbox label="投影机">投影机</el-checkbox> -->
                     </el-checkbox-group>
                     </el-checkbox-group>
                   </el-form-item>
                   </el-form-item>
                 </div>
                 </div>
@@ -464,28 +464,7 @@ const router = useRouter();
 // 表格数据
 // 表格数据
 const loading = ref(false);
 const loading = ref(false);
 const tableData = reactive({
 const tableData = reactive({
-  list: [
-    // {
-    //   userName: "双人房",
-    //   userPhone: 150,
-    //   teamName: 12,
-    // },
-    // {
-    //   userName: "双人房",
-    //   userPhone: 150,
-    //   teamName: 12,
-    // },
-    // {
-    //   userName: "双人房",
-    //   userPhone: 150,
-    //   teamName: 12,
-    // },
-    // {
-    //   userName: "双人房",
-    //   userPhone: 150,
-    //   teamName: 12,
-    // },
-  ],
+  list: [],
 });
 });
 
 
 // 添加员工弹窗数据 (------------------------------------)
 // 添加员工弹窗数据 (------------------------------------)
@@ -533,7 +512,7 @@ const ruleForm = reactive({
   roomPicture: "", // 房间图片
   roomPicture: "", // 房间图片
   id: "",
   id: "",
 });
 });
-// const roomConfig=ref([]) //房型配置
+const roomConfig=ref([]) //房型配置
 
 
 // 房费验证
 // 房费验证
 const validatePrice = (rule, value, callback) => {
 const validatePrice = (rule, value, callback) => {
@@ -609,46 +588,39 @@ const getList = async () => {
     method: "get",
     method: "get",
     url: api.value + "/house/list",
     url: api.value + "/house/list",
     headers: {
     headers: {
-      // token: sessionStorage.getItem("token"),
-      // user_head: sessionStorage.getItem("userhead"),
+      token: sessionStorage.getItem("token"),
+      user_head: sessionStorage.getItem("user_head"),
     },
     },
     params: data,
     params: data,
   });
   });
   console.log(res, "房型管理");
   console.log(res, "房型管理");
   if (res.data.code == 200) {
   if (res.data.code == 200) {
     loading.value = false;
     loading.value = false;
-
-    res.data.data.list.forEach((item) => {
-      let arr = [];
-      item.visible.split(",").forEach((i) => {
-        if (i == 0) {
-          arr.push("全部");
-        } else if (i == 1) {
-          arr.push("学生");
-        } else if (i == 2) {
-          arr.push("教职工");
-        } else if (i == 3) {
-          arr.push("校友");
-        } else if (i == 4) {
-          arr.push("访客");
-        } else if (i == 5) {
-          arr.push("临时人员");
-        } else if (i == 6) {
-          arr.push("其他");
-        } else if (i == 7) {
-          arr.push("领导");
-        }
-      });
-      item.visibleName = arr.join(",");
-    });
+    // res.data.data.list.forEach((item) => {
+    //   let arr = [];
+    //   item.visible.split(",").forEach((i) => {
+    //     if (i == 0) {
+    //       arr.push("全部");
+    //     } else if (i == 1) {
+    //       arr.push("学生");
+    //     } else if (i == 2) {
+    //       arr.push("教职工");
+    //     } else if (i == 3) {
+    //       arr.push("校友");
+    //     } else if (i == 4) {
+    //       arr.push("访客");
+    //     } else if (i == 5) {
+    //       arr.push("临时人员");
+    //     } else if (i == 6) {
+    //       arr.push("其他");
+    //     } else if (i == 7) {
+    //       arr.push("领导");
+    //     }
+    //   });
+    //   item.visibleName = arr.join(",");
+    // });
     tableData.list = res.data.data.list;
     tableData.list = res.data.data.list;
     total.value = res.data.data.totalCount;
     total.value = res.data.data.totalCount;
-    // ElMessage({
-    //   type: "success",
-    //   showClose: true,
-    //   message: res.data.message,
-    //   center: true,
-    // });
   } else {
   } else {
     loading.value = false;
     loading.value = false;
     ElMessage({
     ElMessage({
@@ -659,6 +631,32 @@ const getList = async () => {
     });
     });
   }
   }
 };
 };
+const systemList=async ()=>{
+  let data = {
+    permissionSettingId: sessionStorage.getItem('permissionSettingId'),
+  };
+  let res = await axios({
+    method: "get",
+    url: api.value + "/facility-services/list",
+    headers: {
+      token: sessionStorage.getItem("token"),
+      user_head: sessionStorage.getItem("user_head"),
+    },
+    params: data,
+  });
+  console.log(res, "房型配置");
+  if (res.data.code == 200) {
+    roomConfig.value=res.data.data;
+  } else {
+    loading.value = false;
+    ElMessage({
+      type: "error",
+      showClose: true,
+      message: res.data.message,
+      center: true,
+    });
+  }
+}
 
 
 // 搜索功能
 // 搜索功能
 const searchBtn = lodash.debounce(async () => {
 const searchBtn = lodash.debounce(async () => {
@@ -722,7 +720,8 @@ const handleUpload = async (file) => {
 const addlist = async () => {
 const addlist = async () => {
   dialongTitle.value = "添加房型";
   dialongTitle.value = "添加房型";
   addDialogVisible.value = true;
   addDialogVisible.value = true;
-  ruleForm.roomPicture = "1.jpg"; // 房间图片
+  systemList()
+  ruleForm.roomPicture = ""; // 房间图片
   fileList.list = []; // 将选中的图片文件置为空
   fileList.list = []; // 将选中的图片文件置为空
   ruleForm.roomName = ""; // 房型名称
   ruleForm.roomName = ""; // 房型名称
   ruleForm.roomArea = ""; //房型面积
   ruleForm.roomArea = ""; //房型面积
@@ -762,11 +761,17 @@ const edit = async (row) => {
     ruleForm.roomArea = res.data.data.roomArea;
     ruleForm.roomArea = res.data.data.roomArea;
     ruleForm.roomPrice = res.data.data.roomPrice;
     ruleForm.roomPrice = res.data.data.roomPrice;
     ruleForm.number = res.data.data.number;
     ruleForm.number = res.data.data.number;
-    ruleForm.visible = res.data.data.visible.split(",");
+    // ruleForm.visible = res.data.data.visible.split(",");
     ruleForm.roomType = String(res.data.data.roomType);
     ruleForm.roomType = String(res.data.data.roomType);
     ruleForm.roomLiveTime = res.data.data.roomLiveTime;
     ruleForm.roomLiveTime = res.data.data.roomLiveTime;
-    ruleForm.receivingTime = res.data.data.receivingTime.split("-");
-    ruleForm.roomConfig = res.data.data.roomConfiguration.split(",");
+    if(res.data.data.receivingTime){
+      ruleForm.receivingTime = res.data.data.receivingTime.split("-");
+    }else{
+      ruleForm.receivingTime =""
+    }
+    systemList().then(()=>{
+      ruleForm.roomConfig = res.data.data.roomConfiguration.split(",");
+    })
     // roomConfig.value = res.data.data.roomConfiguration.split(",");
     // roomConfig.value = res.data.data.roomConfiguration.split(",");
 
 
     let arr = [];
     let arr = [];
@@ -922,7 +927,7 @@ const submitAdd = lodash.debounce(async (formEl) => {
             roomArea: ruleForm.roomArea,
             roomArea: ruleForm.roomArea,
             roomLiveTime: ruleForm.roomLiveTime,
             roomLiveTime: ruleForm.roomLiveTime,
             receivingTime: `${ruleForm.receivingTime[0]}-${ruleForm.receivingTime[1]}`,
             receivingTime: `${ruleForm.receivingTime[0]}-${ruleForm.receivingTime[1]}`,
-            visible: ruleForm.visible.join(","), //可见类型(0:全部,1:学生,2:教职工,3:校友,4:访客,5:临时人员,6:其他,7:领导)
+            // visible: ruleForm.visible.join(","), //可见类型(0:全部,1:学生,2:教职工,3:校友,4:访客,5:临时人员,6:其他,7:领导)
             roomConfiguration: ruleForm.roomConfig.join(","),
             roomConfiguration: ruleForm.roomConfig.join(","),
             roomPicture: ruleForm.roomPicture,
             roomPicture: ruleForm.roomPicture,
           },
           },
@@ -976,7 +981,7 @@ const submitAdd = lodash.debounce(async (formEl) => {
             roomArea: ruleForm.roomArea,
             roomArea: ruleForm.roomArea,
             roomLiveTime: ruleForm.roomLiveTime,
             roomLiveTime: ruleForm.roomLiveTime,
             receivingTime: `${ruleForm.receivingTime[0]}-${ruleForm.receivingTime[1]}`,
             receivingTime: `${ruleForm.receivingTime[0]}-${ruleForm.receivingTime[1]}`,
-            visible: ruleForm.visible.join(","), //可见类型(0:全部,1:学生,2:教职工,3:校友,4:访客,5:临时人员,6:其他,7:领导)
+            // visible: ruleForm.visible.join(","), //可见类型(0:全部,1:学生,2:教职工,3:校友,4:访客,5:临时人员,6:其他,7:领导)
             roomConfiguration: ruleForm.roomConfig.join(","),
             roomConfiguration: ruleForm.roomConfig.join(","),
             roomPicture: ruleForm.roomPicture,
             roomPicture: ruleForm.roomPicture,
           },
           },

+ 125 - 14
src/views/system/system.vue

@@ -122,8 +122,8 @@
         <div class="tooltips">
         <div class="tooltips">
           <div class="rows">
           <div class="rows">
             <div class="conts">
             <div class="conts">
-              <div class="name">入住时间:</div>
-              <el-time-picker
+              <div class="name">全日房入住时间:</div>
+              <!-- <el-time-picker
                 v-model="systemData.liveTime"
                 v-model="systemData.liveTime"
                 format="HH:mm"
                 format="HH:mm"
                 value-format="HH:mm"
                 value-format="HH:mm"
@@ -131,9 +131,19 @@
                 placeholder="请输入入住时间"
                 placeholder="请输入入住时间"
                 style="max-width: 300px; width: 280px"
                 style="max-width: 300px; width: 280px"
                 @change="systemChange"
                 @change="systemChange"
+              /> -->
+              <el-time-picker
+                v-model="systemData.liveTime"
+                is-range
+                range-separator="-"
+                format="HH:mm:ss"
+                value-format="HH:mm:ss"
+                start-placeholder="开始时间"
+                end-placeholder="结束时间"
+                @change="systemChange"
               />
               />
             </div>
             </div>
-            <div class="conts">
+            <!-- <div class="conts">
               <div class="name">离店时间:</div>
               <div class="name">离店时间:</div>
               <el-time-picker
               <el-time-picker
                 v-model="systemData.leaveTime"
                 v-model="systemData.leaveTime"
@@ -144,6 +154,44 @@
                 style="max-width: 300px; width: 280px"
                 style="max-width: 300px; width: 280px"
                 @change="systemChange"
                 @change="systemChange"
               />
               />
+            </div> -->
+          </div>
+        </div>
+        <div class="tooltips">
+          <div class="rows">
+            <div class="conts">
+              <div class="name">钟点房入住时间:</div>
+              <div class="hourlivetime">
+                <div
+                  class="addlive"
+                  v-for="(i, ind) in systemData.hourlivetime"
+                >
+                  <el-time-picker
+                    v-model="i.time"
+                    is-range
+                    range-separator="-"
+                    start-placeholder="开始时间"
+                    end-placeholder="结束时间"
+                    format="HH:mm:ss"
+                    value-format="HH:mm:ss"
+                    @change="systemChange"
+                  />
+                  <img
+                    class="img"
+                    src="@/assets/addRoom.png"
+                    @click="addhourClick(ind)"
+                    alt=""
+                  />
+                  <img
+                    class="img"
+                    src="@/assets/delRoom.png"
+                    @click="delhourClick(ind)"
+                    alt=""
+                    v-if="ind != 0"
+                  />
+                  <div class="img" alt="" v-else />
+                </div>
+              </div>
             </div>
             </div>
           </div>
           </div>
         </div>
         </div>
@@ -174,7 +222,6 @@
                 type="textarea"
                 type="textarea"
                 show-word-limit
                 show-word-limit
                 placeholder="请输入公寓简介"
                 placeholder="请输入公寓简介"
-                style="width: 900px"
                 @blur="systemChange"
                 @blur="systemChange"
               />
               />
             </div>
             </div>
@@ -455,8 +502,8 @@ const systemData = reactive({
   decorationTime: null,
   decorationTime: null,
   id: null,
   id: null,
   introductory: null,
   introductory: null,
-  leaveTime: null,
-  liveTime: null,
+  hourlivetime: [],
+  liveTime: [],
   name: null,
   name: null,
   openingTime: null,
   openingTime: null,
   phoneNumbr: null,
   phoneNumbr: null,
@@ -546,8 +593,19 @@ const getList = async () => {
     systemData.decorationTime = res.data.data.decorationTime;
     systemData.decorationTime = res.data.data.decorationTime;
     systemData.id = res.data.data.id;
     systemData.id = res.data.data.id;
     systemData.introductory = res.data.data.introductory;
     systemData.introductory = res.data.data.introductory;
-    systemData.leaveTime = res.data.data.leaveTime;
-    systemData.liveTime = res.data.data.liveTime;
+    let arr = res.data.data.hourTime.split(",");
+    let hourData = [];
+    arr.forEach((i) => {
+      let time = i.split("-");
+      hourData.push({
+        time: time,
+      });
+    });
+    console.log(hourData);
+
+    systemData.hourlivetime = hourData;
+    systemData.liveTime[0] = res.data.data.liveTime;
+    systemData.liveTime[1] = res.data.data.leaveTime;
     systemData.name = res.data.data.name;
     systemData.name = res.data.data.name;
     systemData.openingTime = res.data.data.openingTime;
     systemData.openingTime = res.data.data.openingTime;
     systemData.phoneNumbr = res.data.data.phoneNumbr;
     systemData.phoneNumbr = res.data.data.phoneNumbr;
@@ -560,6 +618,16 @@ const getList = async () => {
     });
     });
   }
   }
 };
 };
+// 添加钟点房时间列表
+const addhourClick = () => {
+  systemData.hourlivetime.push({ time: [] });
+};
+// 删除钟点房时间列表
+const delhourClick = (ind) => {
+  systemData.hourlivetime.splice(ind, 1);
+  console.log(systemData.hourlivetime);
+  systemChange()
+};
 // 查看设施服务设置
 // 查看设施服务设置
 const facilityServices = async () => {
 const facilityServices = async () => {
   let data = {
   let data = {
@@ -676,6 +744,26 @@ const systemChange = async () => {
   systemData.coverPicture.forEach((item) => {
   systemData.coverPicture.forEach((item) => {
     arr.push(item.url);
     arr.push(item.url);
   });
   });
+  console.log(systemData.hourlivetime);
+  let flag = systemData.hourlivetime.some((item) => {
+    return item.time.length == 0;
+  });
+  let hourlivetime = [];
+  if (flag) {
+    ElMessage({
+      type: "warning",
+      showClose: true,
+      message: "时间段不能为空",
+      center: true,
+    });
+    return false;
+  } else {
+    systemData.hourlivetime.forEach((item) => {
+      let val = item.time.join("-");
+      hourlivetime.push(val);
+    });
+  }
+  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时是修改)
@@ -684,8 +772,9 @@ const systemChange = async () => {
     address: systemData.address, //地址
     address: systemData.address, //地址
     openingTime: systemData.openingTime, //开业时间
     openingTime: systemData.openingTime, //开业时间
     decorationTime: systemData.decorationTime, //装修时间
     decorationTime: systemData.decorationTime, //装修时间
-    liveTime: systemData.liveTime, //入住时间
-    leaveTime: systemData.leaveTime, //离店时间
+    liveTime: systemData.liveTime[0], //入住时间
+    leaveTime: systemData.liveTime[1], //离店时间
+    hourTime: hourlivetime.join(','), // 钟点房时段
     phoneNumbr: systemData.phoneNumbr, //电话号码
     phoneNumbr: systemData.phoneNumbr, //电话号码
     introductory: systemData.introductory, //简介
     introductory: systemData.introductory, //简介
   };
   };
@@ -1151,12 +1240,15 @@ onBeforeMount(async () => {
 
 
   .contentss {
   .contentss {
     width: calc(100% - 60px);
     width: calc(100% - 60px);
-    // height: 100%;
+    height: calc(100% - 81px);
     margin: 0 auto;
     margin: 0 auto;
     display: flex;
     display: flex;
+    overflow: auto;
 
 
     .left {
     .left {
-      width: 900px;
+      // width: 900px;
+      width: calc(100% - 600px);
+      min-width: 750px;
       color: #000;
       color: #000;
       margin-right: 50px;
       margin-right: 50px;
       .titles {
       .titles {
@@ -1213,7 +1305,7 @@ onBeforeMount(async () => {
                 height: 120px;
                 height: 120px;
               }
               }
               :deep(.el-carousel__arrow) {
               :deep(.el-carousel__arrow) {
-                  display: none;
+                display: none;
               }
               }
               :deep(.el-carousel__container) {
               :deep(.el-carousel__container) {
                 border: 1px solid #ccc;
                 border: 1px solid #ccc;
@@ -1285,16 +1377,35 @@ onBeforeMount(async () => {
             }
             }
           }
           }
           .textarea {
           .textarea {
+            width: 100%;
             .name {
             .name {
               margin: 5px 0 15px 0;
               margin: 5px 0 15px 0;
             }
             }
           }
           }
+          .hourlivetime {
+            display: flex;
+            // align-items: center;
+            flex-direction: column;
+            .addlive {
+              display: flex;
+              align-items: center;
+              margin-bottom: 15px;
+              .img {
+                width: 28px;
+                height: 28px;
+                margin-left: 15px;
+                margin-right: 0;
+                cursor: pointer;
+              }
+            }
+          }
         }
         }
       }
       }
     }
     }
 
 
     .right {
     .right {
-      width: calc(100% - 950px);
+      // width: calc(100% - 950px);
+      width: 600px;
       height: 100%;
       height: 100%;
       color: #000;
       color: #000;
 
 

+ 10 - 10
vite.config.js

@@ -22,20 +22,20 @@ export default defineConfig({
     port: 8877,
     port: 8877,
     // 是否开启 https
     // 是否开启 https
     // https: false,
     // https: false,
-    proxy: {
-      "/hotel/ihotel/auto": {
-        target: "https://chtech.ncjti.edu.cn/hotel/ihotel/auto", // 测试环境
-        changeOrigin: true,
-        rewrite: (path) => path.replace(/^\/hotel\/ihotel\/auto/, ""),
-      },
-    },
     // proxy: {
     // proxy: {
-    //   "/ihotel/auto": {
-    //     target: "http://192.168.161.224:8090/ihotel/auto", // 测试环境
+    //   "/hotel/ihotel/auto": {
+    //     target: "https://chtech.ncjti.edu.cn/hotel/ihotel/auto", // 测试环境
     //     changeOrigin: true,
     //     changeOrigin: true,
-    //     rewrite: (path) => path.replace(/^\/ihotel\/auto/, ""),
+    //     rewrite: (path) => path.replace(/^\/hotel\/ihotel\/auto/, ""),
     //   },
     //   },
     // },
     // },
+    proxy: {
+      "/ihotel/auto": {
+        target: "http://192.168.161.190:8090/ihotel/auto", // 测试环境
+        changeOrigin: true,
+        rewrite: (path) => path.replace(/^\/ihotel\/auto/, ""),
+      },
+    },
   },
   },
   publicDir: "public",
   publicDir: "public",
   base: "./",
   base: "./",