浏览代码

Merge branch 'master' of http://face3d.4dage.com:7005/shaogen1995/YFYC-H5

任一存 1 年之前
父节点
当前提交
eeed0fb20a

+ 325 - 7
houtai/package-lock.json

@@ -11,10 +11,11 @@
         "axios": "^0.24.0",
         "Base64": "^1.1.0",
         "core-js": "^3.6.5",
-        "dayjs": "^1.11.5",
+        "dayjs": "^1.11.8",
         "echarts": "^5.4.0",
         "element-ui": "^2.15.6",
         "js-base64": "^3.7.2",
+        "js-export-excel": "^1.1.4",
         "moment": "^2.29.1",
         "v-viewer": "^1.6.4",
         "vant": "^2.12.45",
@@ -2960,6 +2961,21 @@
         "node": ">= 0.12.0"
       }
     },
+    "node_modules/adler-32": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmmirror.com/adler-32/-/adler-32-1.2.0.tgz",
+      "integrity": "sha512-/vUqU/UY4MVeFsg+SsK6c+/05RZXIHZMGJA+PX5JyWI0ZRcBpupnRuPLU/NXXoFwMYCPCoxIfElM2eS+DUXCqQ==",
+      "dependencies": {
+        "exit-on-epipe": "~1.0.1",
+        "printj": "~1.1.0"
+      },
+      "bin": {
+        "adler32": "bin/adler32.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
     "node_modules/aggregate-error": {
       "version": "3.1.0",
       "resolved": "https://registry.npm.taobao.org/aggregate-error/download/aggregate-error-3.1.0.tgz",
@@ -3650,6 +3666,11 @@
         "file-uri-to-path": "1.0.0"
       }
     },
+    "node_modules/blob.js": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/blob.js/-/blob.js-1.0.1.tgz",
+      "integrity": "sha512-TkPuWPeCHBbN+LWFg7BlXdSh6stRxwmAbuirKfiiHTMmo/uQfKFQMx2jrxVUkueKRiG+Tc7Os1Zn618Yc0MZpg=="
+    },
     "node_modules/bluebird": {
       "version": "3.7.2",
       "resolved": "https://registry.npm.taobao.org/bluebird/download/bluebird-3.7.2.tgz?cache=0&sync_timestamp=1589682744631&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbluebird%2Fdownload%2Fbluebird-3.7.2.tgz",
@@ -4108,6 +4129,26 @@
       "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
       "dev": true
     },
+    "node_modules/cfb": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmmirror.com/cfb/-/cfb-1.2.2.tgz",
+      "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==",
+      "dependencies": {
+        "adler-32": "~1.3.0",
+        "crc-32": "~1.2.0"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/cfb/node_modules/adler-32": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmmirror.com/adler-32/-/adler-32-1.3.1.tgz",
+      "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
     "node_modules/chalk": {
       "version": "2.4.2",
       "resolved": "https://registry.nlark.com/chalk/download/chalk-2.4.2.tgz?cache=0&sync_timestamp=1627646655305&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-2.4.2.tgz",
@@ -4590,6 +4631,26 @@
         "node": ">=0.10.0"
       }
     },
+    "node_modules/codepage": {
+      "version": "1.14.0",
+      "resolved": "https://registry.npmmirror.com/codepage/-/codepage-1.14.0.tgz",
+      "integrity": "sha512-iz3zJLhlrg37/gYRWgEPkaFTtzmnEv1h+r7NgZum2lFElYQPi0/5bnmuDfODHxfp0INEfnRqyfyeIJDbb7ahRw==",
+      "dependencies": {
+        "commander": "~2.14.1",
+        "exit-on-epipe": "~1.0.1"
+      },
+      "bin": {
+        "codepage": "bin/codepage.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/codepage/node_modules/commander": {
+      "version": "2.14.1",
+      "resolved": "https://registry.npmmirror.com/commander/-/commander-2.14.1.tgz",
+      "integrity": "sha512-+YR16o3rK53SmWHU3rEM3tPAh2rwb1yPcQX5irVn7mb0gXbwuCCrnkbV5+PBfETdfg1vui07nM6PCG1zndcjQw=="
+    },
     "node_modules/collection-visit": {
       "version": "1.0.0",
       "resolved": "https://registry.npm.taobao.org/collection-visit/download/collection-visit-1.0.0.tgz",
@@ -5114,6 +5175,17 @@
         "node": ">=4"
       }
     },
+    "node_modules/crc-32": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmmirror.com/crc-32/-/crc-32-1.2.2.tgz",
+      "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==",
+      "bin": {
+        "crc32": "bin/crc32.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
     "node_modules/create-ecdh": {
       "version": "4.0.4",
       "resolved": "https://registry.npm.taobao.org/create-ecdh/download/create-ecdh-4.0.4.tgz",
@@ -5483,9 +5555,9 @@
       "dev": true
     },
     "node_modules/dayjs": {
-      "version": "1.11.5",
-      "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.5.tgz",
-      "integrity": "sha512-CAdX5Q3YW3Gclyo5Vpqkgpj8fSdLQcRuzfX6mC6Phy0nfJ0eGYOeS7m4mt2plDWLAtA4TqTakvbboHvUxfe4iA=="
+      "version": "1.11.8",
+      "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.8.tgz",
+      "integrity": "sha512-LcgxzFoWMEPO7ggRv1Y2N31hUf2R0Vj7fuy/m+Bg1K8rr+KAs1AEy4y9jd5DXe8pbHgX+srkHNS7TH6Q6ZhYeQ=="
     },
     "node_modules/de-indent": {
       "version": "1.0.2",
@@ -7050,6 +7122,14 @@
         "node": ">=6"
       }
     },
+    "node_modules/exit-on-epipe": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz",
+      "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
     "node_modules/expand-brackets": {
       "version": "2.1.4",
       "resolved": "https://registry.npm.taobao.org/expand-brackets/download/expand-brackets-2.1.4.tgz",
@@ -7431,6 +7511,11 @@
         "webpack": "^4.0.0"
       }
     },
+    "node_modules/file-saver": {
+      "version": "1.3.8",
+      "resolved": "https://registry.npmmirror.com/file-saver/-/file-saver-1.3.8.tgz",
+      "integrity": "sha512-spKHSBQIxxS81N/O21WmuXA2F6wppUCsutpzenOeZzOCCJ5gEfcbqJP983IrpLXzYmXnMUa6J03SubcNPdKrlg=="
+    },
     "node_modules/file-uri-to-path": {
       "version": "1.0.0",
       "resolved": "https://registry.nlark.com/file-uri-to-path/download/file-uri-to-path-1.0.0.tgz",
@@ -7636,6 +7721,14 @@
         "node": ">= 0.6"
       }
     },
+    "node_modules/frac": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmmirror.com/frac/-/frac-1.1.2.tgz",
+      "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
     "node_modules/fragment-cache": {
       "version": "0.2.1",
       "resolved": "https://registry.npm.taobao.org/fragment-cache/download/fragment-cache-0.2.1.tgz",
@@ -9398,6 +9491,17 @@
       "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.2.tgz",
       "integrity": "sha512-NnRs6dsyqUXejqk/yv2aiXlAvOs56sLkX6nUdeaNezI5LFFLlsZjOThmwnrcwh5ZZRwZlCMnVAY3CvhIhoVEKQ=="
     },
+    "node_modules/js-export-excel": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/js-export-excel/-/js-export-excel-1.1.4.tgz",
+      "integrity": "sha512-19m7e3Gnn4CRfHXoFrLYj4fFfJ/KpvI7HRRn25p4GXYD+AlTV+1oU24NH6S904Ksi44tSx7futxhouOPAQ22oQ==",
+      "dependencies": {
+        "blob.js": "^1.0.1",
+        "file-saver": "^1.3.3",
+        "script-loader": "0.7.2",
+        "xlsx": "0.16.3"
+      }
+    },
     "node_modules/js-message": {
       "version": "1.0.7",
       "resolved": "https://registry.npm.taobao.org/js-message/download/js-message-1.0.7.tgz",
@@ -12540,6 +12644,17 @@
         "renderkid": "^2.0.4"
       }
     },
+    "node_modules/printj": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmmirror.com/printj/-/printj-1.1.2.tgz",
+      "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==",
+      "bin": {
+        "printj": "bin/printj.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
     "node_modules/process": {
       "version": "0.11.10",
       "resolved": "https://registry.npm.taobao.org/process/download/process-0.11.10.tgz",
@@ -12767,6 +12882,11 @@
         "node": ">= 0.8"
       }
     },
+    "node_modules/raw-loader": {
+      "version": "0.5.1",
+      "resolved": "https://registry.npmmirror.com/raw-loader/-/raw-loader-0.5.1.tgz",
+      "integrity": "sha512-sf7oGoLuaYAScB4VGr0tzetsYlS8EJH6qnTCfQ/WVEa89hALQ4RQfCKt5xCyPQKPDUbVUAIP1QsxAwfAjlDp7Q=="
+    },
     "node_modules/read-pkg": {
       "version": "5.2.0",
       "resolved": "https://registry.nlark.com/read-pkg/download/read-pkg-5.2.0.tgz",
@@ -13298,6 +13418,14 @@
         "node": ">= 8.9.0"
       }
     },
+    "node_modules/script-loader": {
+      "version": "0.7.2",
+      "resolved": "https://registry.npmmirror.com/script-loader/-/script-loader-0.7.2.tgz",
+      "integrity": "sha512-UMNLEvgOAQuzK8ji8qIscM3GIrRCWN6MmMXGD4SD5l6cSycgGsCo0tX5xRnfQcoghqct0tjHjcykgI1PyBE2aA==",
+      "dependencies": {
+        "raw-loader": "~0.5.1"
+      }
+    },
     "node_modules/select-hose": {
       "version": "2.0.0",
       "resolved": "https://registry.npm.taobao.org/select-hose/download/select-hose-2.0.0.tgz",
@@ -13968,6 +14096,17 @@
       "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
       "dev": true
     },
+    "node_modules/ssf": {
+      "version": "0.11.2",
+      "resolved": "https://registry.npmmirror.com/ssf/-/ssf-0.11.2.tgz",
+      "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==",
+      "dependencies": {
+        "frac": "~1.1.2"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
     "node_modules/sshpk": {
       "version": "1.16.1",
       "resolved": "https://registry.npm.taobao.org/sshpk/download/sshpk-1.16.1.tgz",
@@ -16286,6 +16425,22 @@
       "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
       "dev": true
     },
+    "node_modules/wmf": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/wmf/-/wmf-1.0.2.tgz",
+      "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/word": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmmirror.com/word/-/word-0.3.0.tgz",
+      "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==",
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
     "node_modules/word-wrap": {
       "version": "1.2.3",
       "resolved": "https://registry.npm.taobao.org/word-wrap/download/word-wrap-1.2.3.tgz?cache=0&sync_timestamp=1589683603678&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fword-wrap%2Fdownload%2Fword-wrap-1.2.3.tgz",
@@ -16375,6 +16530,33 @@
         "async-limiter": "~1.0.0"
       }
     },
+    "node_modules/xlsx": {
+      "version": "0.16.3",
+      "resolved": "https://registry.npmmirror.com/xlsx/-/xlsx-0.16.3.tgz",
+      "integrity": "sha512-LInZ1OK6vpe+Em8XDZ5gDH3WixARwxI7UWc+3chLeafI6gUwECEgL43k4Tjbs1uRfkxpM7wQFy5DLE0hFBRqRw==",
+      "dependencies": {
+        "adler-32": "~1.2.0",
+        "cfb": "^1.1.4",
+        "codepage": "~1.14.0",
+        "commander": "~2.17.1",
+        "crc-32": "~1.2.0",
+        "exit-on-epipe": "~1.0.1",
+        "ssf": "~0.11.2",
+        "wmf": "~1.0.1",
+        "word": "~0.3.0"
+      },
+      "bin": {
+        "xlsx": "bin/xlsx.njs"
+      },
+      "engines": {
+        "node": ">=0.8"
+      }
+    },
+    "node_modules/xlsx/node_modules/commander": {
+      "version": "2.17.1",
+      "resolved": "https://registry.npmmirror.com/commander/-/commander-2.17.1.tgz",
+      "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg=="
+    },
     "node_modules/xtend": {
       "version": "4.0.2",
       "resolved": "https://registry.npm.taobao.org/xtend/download/xtend-4.0.2.tgz?cache=0&sync_timestamp=1589682817913&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fxtend%2Fdownload%2Fxtend-4.0.2.tgz",
@@ -18757,6 +18939,15 @@
       "integrity": "sha1-vxEWycdYxRt6kz0pa3LCIe2UKLY=",
       "dev": true
     },
+    "adler-32": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmmirror.com/adler-32/-/adler-32-1.2.0.tgz",
+      "integrity": "sha512-/vUqU/UY4MVeFsg+SsK6c+/05RZXIHZMGJA+PX5JyWI0ZRcBpupnRuPLU/NXXoFwMYCPCoxIfElM2eS+DUXCqQ==",
+      "requires": {
+        "exit-on-epipe": "~1.0.1",
+        "printj": "~1.1.0"
+      }
+    },
     "aggregate-error": {
       "version": "3.1.0",
       "resolved": "https://registry.npm.taobao.org/aggregate-error/download/aggregate-error-3.1.0.tgz",
@@ -19332,6 +19523,11 @@
         "file-uri-to-path": "1.0.0"
       }
     },
+    "blob.js": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/blob.js/-/blob.js-1.0.1.tgz",
+      "integrity": "sha512-TkPuWPeCHBbN+LWFg7BlXdSh6stRxwmAbuirKfiiHTMmo/uQfKFQMx2jrxVUkueKRiG+Tc7Os1Zn618Yc0MZpg=="
+    },
     "bluebird": {
       "version": "3.7.2",
       "resolved": "https://registry.npm.taobao.org/bluebird/download/bluebird-3.7.2.tgz?cache=0&sync_timestamp=1589682744631&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbluebird%2Fdownload%2Fbluebird-3.7.2.tgz",
@@ -19750,6 +19946,22 @@
       "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
       "dev": true
     },
+    "cfb": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmmirror.com/cfb/-/cfb-1.2.2.tgz",
+      "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==",
+      "requires": {
+        "adler-32": "~1.3.0",
+        "crc-32": "~1.2.0"
+      },
+      "dependencies": {
+        "adler-32": {
+          "version": "1.3.1",
+          "resolved": "https://registry.npmmirror.com/adler-32/-/adler-32-1.3.1.tgz",
+          "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A=="
+        }
+      }
+    },
     "chalk": {
       "version": "2.4.2",
       "resolved": "https://registry.nlark.com/chalk/download/chalk-2.4.2.tgz?cache=0&sync_timestamp=1627646655305&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fchalk%2Fdownload%2Fchalk-2.4.2.tgz",
@@ -20135,6 +20347,22 @@
       "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
       "dev": true
     },
+    "codepage": {
+      "version": "1.14.0",
+      "resolved": "https://registry.npmmirror.com/codepage/-/codepage-1.14.0.tgz",
+      "integrity": "sha512-iz3zJLhlrg37/gYRWgEPkaFTtzmnEv1h+r7NgZum2lFElYQPi0/5bnmuDfODHxfp0INEfnRqyfyeIJDbb7ahRw==",
+      "requires": {
+        "commander": "~2.14.1",
+        "exit-on-epipe": "~1.0.1"
+      },
+      "dependencies": {
+        "commander": {
+          "version": "2.14.1",
+          "resolved": "https://registry.npmmirror.com/commander/-/commander-2.14.1.tgz",
+          "integrity": "sha512-+YR16o3rK53SmWHU3rEM3tPAh2rwb1yPcQX5irVn7mb0gXbwuCCrnkbV5+PBfETdfg1vui07nM6PCG1zndcjQw=="
+        }
+      }
+    },
     "collection-visit": {
       "version": "1.0.0",
       "resolved": "https://registry.npm.taobao.org/collection-visit/download/collection-visit-1.0.0.tgz",
@@ -20580,6 +20808,11 @@
         }
       }
     },
+    "crc-32": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmmirror.com/crc-32/-/crc-32-1.2.2.tgz",
+      "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ=="
+    },
     "create-ecdh": {
       "version": "4.0.4",
       "resolved": "https://registry.npm.taobao.org/create-ecdh/download/create-ecdh-4.0.4.tgz",
@@ -20890,9 +21123,9 @@
       "dev": true
     },
     "dayjs": {
-      "version": "1.11.5",
-      "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.5.tgz",
-      "integrity": "sha512-CAdX5Q3YW3Gclyo5Vpqkgpj8fSdLQcRuzfX6mC6Phy0nfJ0eGYOeS7m4mt2plDWLAtA4TqTakvbboHvUxfe4iA=="
+      "version": "1.11.8",
+      "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.8.tgz",
+      "integrity": "sha512-LcgxzFoWMEPO7ggRv1Y2N31hUf2R0Vj7fuy/m+Bg1K8rr+KAs1AEy4y9jd5DXe8pbHgX+srkHNS7TH6Q6ZhYeQ=="
     },
     "de-indent": {
       "version": "1.0.2",
@@ -22175,6 +22408,11 @@
         "strip-eof": "^1.0.0"
       }
     },
+    "exit-on-epipe": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz",
+      "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw=="
+    },
     "expand-brackets": {
       "version": "2.1.4",
       "resolved": "https://registry.npm.taobao.org/expand-brackets/download/expand-brackets-2.1.4.tgz",
@@ -22502,6 +22740,11 @@
         "schema-utils": "^2.5.0"
       }
     },
+    "file-saver": {
+      "version": "1.3.8",
+      "resolved": "https://registry.npmmirror.com/file-saver/-/file-saver-1.3.8.tgz",
+      "integrity": "sha512-spKHSBQIxxS81N/O21WmuXA2F6wppUCsutpzenOeZzOCCJ5gEfcbqJP983IrpLXzYmXnMUa6J03SubcNPdKrlg=="
+    },
     "file-uri-to-path": {
       "version": "1.0.0",
       "resolved": "https://registry.nlark.com/file-uri-to-path/download/file-uri-to-path-1.0.0.tgz",
@@ -22669,6 +22912,11 @@
       "integrity": "sha1-ImmTZCiq1MFcfr6XeahL8LKoGBE=",
       "dev": true
     },
+    "frac": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmmirror.com/frac/-/frac-1.1.2.tgz",
+      "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA=="
+    },
     "fragment-cache": {
       "version": "0.2.1",
       "resolved": "https://registry.npm.taobao.org/fragment-cache/download/fragment-cache-0.2.1.tgz",
@@ -24095,6 +24343,17 @@
       "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.2.tgz",
       "integrity": "sha512-NnRs6dsyqUXejqk/yv2aiXlAvOs56sLkX6nUdeaNezI5LFFLlsZjOThmwnrcwh5ZZRwZlCMnVAY3CvhIhoVEKQ=="
     },
+    "js-export-excel": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmmirror.com/js-export-excel/-/js-export-excel-1.1.4.tgz",
+      "integrity": "sha512-19m7e3Gnn4CRfHXoFrLYj4fFfJ/KpvI7HRRn25p4GXYD+AlTV+1oU24NH6S904Ksi44tSx7futxhouOPAQ22oQ==",
+      "requires": {
+        "blob.js": "^1.0.1",
+        "file-saver": "^1.3.3",
+        "script-loader": "0.7.2",
+        "xlsx": "0.16.3"
+      }
+    },
     "js-message": {
       "version": "1.0.7",
       "resolved": "https://registry.npm.taobao.org/js-message/download/js-message-1.0.7.tgz",
@@ -26694,6 +26953,11 @@
         "renderkid": "^2.0.4"
       }
     },
+    "printj": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmmirror.com/printj/-/printj-1.1.2.tgz",
+      "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ=="
+    },
     "process": {
       "version": "0.11.10",
       "resolved": "https://registry.npm.taobao.org/process/download/process-0.11.10.tgz",
@@ -26890,6 +27154,11 @@
         "unpipe": "1.0.0"
       }
     },
+    "raw-loader": {
+      "version": "0.5.1",
+      "resolved": "https://registry.npmmirror.com/raw-loader/-/raw-loader-0.5.1.tgz",
+      "integrity": "sha512-sf7oGoLuaYAScB4VGr0tzetsYlS8EJH6qnTCfQ/WVEa89hALQ4RQfCKt5xCyPQKPDUbVUAIP1QsxAwfAjlDp7Q=="
+    },
     "read-pkg": {
       "version": "5.2.0",
       "resolved": "https://registry.nlark.com/read-pkg/download/read-pkg-5.2.0.tgz",
@@ -27341,6 +27610,14 @@
         "ajv-keywords": "^3.5.2"
       }
     },
+    "script-loader": {
+      "version": "0.7.2",
+      "resolved": "https://registry.npmmirror.com/script-loader/-/script-loader-0.7.2.tgz",
+      "integrity": "sha512-UMNLEvgOAQuzK8ji8qIscM3GIrRCWN6MmMXGD4SD5l6cSycgGsCo0tX5xRnfQcoghqct0tjHjcykgI1PyBE2aA==",
+      "requires": {
+        "raw-loader": "~0.5.1"
+      }
+    },
     "select-hose": {
       "version": "2.0.0",
       "resolved": "https://registry.npm.taobao.org/select-hose/download/select-hose-2.0.0.tgz",
@@ -27939,6 +28216,14 @@
       "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
       "dev": true
     },
+    "ssf": {
+      "version": "0.11.2",
+      "resolved": "https://registry.npmmirror.com/ssf/-/ssf-0.11.2.tgz",
+      "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==",
+      "requires": {
+        "frac": "~1.1.2"
+      }
+    },
     "sshpk": {
       "version": "1.16.1",
       "resolved": "https://registry.npm.taobao.org/sshpk/download/sshpk-1.16.1.tgz",
@@ -29840,6 +30125,16 @@
       "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
       "dev": true
     },
+    "wmf": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/wmf/-/wmf-1.0.2.tgz",
+      "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw=="
+    },
+    "word": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmmirror.com/word/-/word-0.3.0.tgz",
+      "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA=="
+    },
     "word-wrap": {
       "version": "1.2.3",
       "resolved": "https://registry.npm.taobao.org/word-wrap/download/word-wrap-1.2.3.tgz?cache=0&sync_timestamp=1589683603678&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fword-wrap%2Fdownload%2Fword-wrap-1.2.3.tgz",
@@ -29916,6 +30211,29 @@
         "async-limiter": "~1.0.0"
       }
     },
+    "xlsx": {
+      "version": "0.16.3",
+      "resolved": "https://registry.npmmirror.com/xlsx/-/xlsx-0.16.3.tgz",
+      "integrity": "sha512-LInZ1OK6vpe+Em8XDZ5gDH3WixARwxI7UWc+3chLeafI6gUwECEgL43k4Tjbs1uRfkxpM7wQFy5DLE0hFBRqRw==",
+      "requires": {
+        "adler-32": "~1.2.0",
+        "cfb": "^1.1.4",
+        "codepage": "~1.14.0",
+        "commander": "~2.17.1",
+        "crc-32": "~1.2.0",
+        "exit-on-epipe": "~1.0.1",
+        "ssf": "~0.11.2",
+        "wmf": "~1.0.1",
+        "word": "~0.3.0"
+      },
+      "dependencies": {
+        "commander": {
+          "version": "2.17.1",
+          "resolved": "https://registry.npmmirror.com/commander/-/commander-2.17.1.tgz",
+          "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg=="
+        }
+      }
+    },
     "xtend": {
       "version": "4.0.2",
       "resolved": "https://registry.npm.taobao.org/xtend/download/xtend-4.0.2.tgz?cache=0&sync_timestamp=1589682817913&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fxtend%2Fdownload%2Fxtend-4.0.2.tgz",

+ 3 - 2
houtai/package.json

@@ -11,16 +11,17 @@
     "axios": "^0.24.0",
     "Base64": "^1.1.0",
     "core-js": "^3.6.5",
-    "dayjs": "^1.11.5",
+    "dayjs": "^1.11.8",
     "echarts": "^5.4.0",
     "element-ui": "^2.15.6",
     "js-base64": "^3.7.2",
+    "js-export-excel": "^1.1.4",
     "moment": "^2.29.1",
+    "v-viewer": "^1.6.4",
     "vant": "^2.12.45",
     "vue": "^2.6.11",
     "vue-json-excel": "^0.3.0",
     "vue-router": "^3.2.0",
-    "v-viewer": "^1.6.4",
     "wangeditor": "^4.7.11"
   },
   "devDependencies": {

+ 41 - 0
houtai/src/apis/tab4.js

@@ -0,0 +1,41 @@
+import axios from '../utils/request'
+// 预约列表相关
+export const booksList = (data) => {
+  return axios({
+    method: 'post',
+    url: 'cms/book/page',
+    data
+  })
+}
+
+
+// 展馆可预约人数相关
+// 获取列表
+export const exhibitionList = () => {
+  return axios({
+    method: 'post',
+    url: 'cms/position/list',
+  })
+}
+// 点击删除
+export const exhibitionRemove = (id) => {
+  return axios({
+    url: `cms/position/remove/${id}`
+  })
+}
+
+// 通过id获取详情
+export const exhibitionDetail = (id) => {
+  return axios({
+    url: `cms/position/detail/${id}`
+  })
+}
+
+// 修改预约人数
+export const editNumber = (data) => {
+  return axios({
+    method: 'post',
+    url: 'cms/position/update/books',
+    data
+  })
+}

+ 8 - 0
houtai/src/router/index.js

@@ -37,6 +37,14 @@ const routes = [{
       myInd: 3
     },
     component: () => import('../views/tab3/index.vue')
+  },
+  {
+    path: 'tab4',
+    name: 'tab4',
+    meta: {
+      myInd: 4
+    },
+    component: () => import('../views/tab4/index.vue')
   }
 
   ]

+ 20 - 1
houtai/src/views/layout/index.vue

@@ -36,6 +36,23 @@
         </ul>
 
         <div
+          class="biaoji"
+          :class="{ biaojiAc: $route.meta.myInd === 4 }"
+        >
+          建筑可游玩
+        </div>
+        <ul>
+          <li
+            v-for="item in tab3"
+            :key="item.id"
+            :class="{ active: $route.meta.myInd === item.id }"
+            @click="push(item.url)"
+          >
+            {{ item.name }}
+          </li>
+        </ul>
+
+        <div
           v-show="0"
           class="biaoji el-icon-setting"
           :class="{ biaojiAc: $route.meta.myInd === 3 }"
@@ -127,7 +144,9 @@ export default {
       cut: false,
       isShow: false,
       tab1: [{ name: '发布审核', id: 2, url: '/layout/tab2' }],
-      tab2: [{ name: '操作日志', id: 3, url: '/layout/tab3' }]
+      tab2: [{ name: '操作日志', id: 3, url: '/layout/tab3' }],
+      tab3: [{ name: '预约管理', id: 4, url: '/layout/tab4' }]
+
     }
   },
   // 监听属性 类似于data概念

+ 1 - 1
houtai/src/views/tab2/index.vue

@@ -17,7 +17,7 @@
 
         <!-- 表格 -->
         <div class="table">
-          <el-table :data="tableData" style="width: 100%">
+          <el-table :data="tableData" style="width: 100%" v-loa>
             <el-table-column label="编号" width="80">
               <template slot-scope="scope">
                 {{

+ 180 - 0
houtai/src/views/tab4/components/ExhibitionTable.vue

@@ -0,0 +1,180 @@
+<template>
+  <div>
+    <el-table
+      :data="tableData"
+      border
+      :span-method="objectSpanMethod"
+      style="width: 100%; height: 60vh; overflow: auto"
+      :header-cell-style="{background:'#e9e9e9'}"
+    >
+      <el-table-column prop="name" label="预约建筑" width="180">
+      </el-table-column>
+      <el-table-column prop="period" label="预约时段"> </el-table-column>
+      <el-table-column prop="booksNumber" label="可预约人数"> </el-table-column>
+      <el-table-column label="操作">
+        <template #default="{ row }">
+          <el-button
+            type="text"
+            style="color: #d9001b"
+            @click="openEditNumber(row)"
+            >修改</el-button
+          >
+        </template>
+      </el-table-column>
+    </el-table>
+    <!-- 修改可访问人数窗口 -->
+    <el-dialog
+      title=""
+      :visible.sync="isEditNumber"
+      width="200px"
+      :modal-append-to-body="false"
+      append-to-body
+    >
+      <el-form
+        :model="numberValidateForm"
+        ref="numberValidateForm"
+        label-width="100px"
+        class="demo-ruleForm"
+      >
+        <el-form-item
+          label="可预约人数"
+          prop="num"
+          :rules="[
+            { required: true, message: '不能为空' },
+            { type: 'number', message: '必须为数字值' },
+          ]"
+        >
+          <el-input
+            v-model.number="numberValidateForm.num"
+            autocomplete="off"
+            placeholder="请输入数字:1-10000"
+            @input="verification"
+          ></el-input>
+        </el-form-item>
+        <el-form-item style="display: flex; justify-content: center;">
+          <el-button type="primary" @click="submitForm('numberValidateForm')"
+            >提交</el-button
+          >
+          <el-button
+            @click="
+              () => {
+                isEditNumber = false;
+              }
+            "
+            >取消</el-button
+          >
+        </el-form-item>
+      </el-form>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { exhibitionList, editNumber } from "@/apis/tab4";
+export default {
+  data() {
+    return {
+      tableData: [],
+      isEditNumber: false,
+      numberValidateForm: {
+        num: "",
+      },
+      currentRow: {},
+    };
+  },
+  methods: {
+    objectSpanMethod({ row, column, rowIndex, columnIndex }) {
+      if (columnIndex === 0) {
+        if (rowIndex % 2 === 0) {
+          return {
+            rowspan: 2,
+            colspan: 1,
+          };
+        } else {
+          return {
+            rowspan: 0,
+            colspan: 0,
+          };
+        }
+      }
+    },
+    submitForm(formName) {
+      this.$refs[formName].validate(async (valid) => {
+        if (valid) {
+          if (
+            this.numberValidateForm.num > 0 &&
+            this.numberValidateForm.num < 10001
+          ) {
+            var res = await editNumber({
+              id: this.currentRow.id,
+              num: this.numberValidateForm.num,
+              type: this.currentRow.period === "8:30-12:00" ? "AM" : "PM",
+            });
+            if (res.code === 0) {
+              this.$message.success("修改成功");
+              this.isEditNumber = false;
+              this.getList();
+            }
+          } else {
+            this.$message.error("请输入1-10000");
+            return;
+          }
+        } else {
+          console.log("error submit!!");
+          return false;
+        }
+      });
+    },
+    // 验证输入数字最大值最小值
+    verification() {
+      if (
+        this.numberValidateForm.num < 1 ||
+        this.numberValidateForm.num > 10000
+      ) {
+        this.$message.error("请输入1-10000");
+        return;
+      }
+      return;
+    },
+    // 封装获取列表的函数
+    async getList() {
+      this.tableData = [];
+      const res = await exhibitionList();
+      if (res.code === 0) {
+        // this.tableData = res.data;
+        res.data.forEach((item) => {
+          // push上午对象
+          this.tableData.push({
+            ...item,
+            period: "8:30-12:00",
+            booksNumber: item.booksAm,
+          });
+          // push下午对象
+          this.tableData.push({
+            ...item,
+            period: "12:00-18:30",
+            booksNumber: item.booksPm,
+          });
+        });
+      }
+    },
+    // 修改可预约人数
+    openEditNumber(row) {
+      this.isEditNumber = true;
+      this.currentRow = row;
+      this.numberValidateForm.num = this.currentRow.booksNumber;
+    },
+  },
+  mounted() {
+    this.getList();
+  },
+};
+</script>
+<style lang='less' scoped>
+/deep/.el-dialog {
+  border-radius: 20px;
+}
+/deep/ .el-form-item__content {
+  // margin-left: 0 !important;
+}
+</style>

+ 526 - 0
houtai/src/views/tab4/index.vue

@@ -0,0 +1,526 @@
+<template>
+  <div class="tab2">
+    <div class="insideTop">建筑可游玩-预约列表</div>
+    <div class="obstruct"></div>
+    <div class="conten">
+      <!-- 右侧主要内容 -->
+      <div class="con_right" v-loading="loading">
+        <div class="search">
+          <div>
+            <span class="search_k">预约建筑:</span>
+            <el-select
+              v-model="formData.buildId"
+              placeholder="请选择"
+              @change="selectChange"
+            >
+              <el-option label="全部" value=""> </el-option>
+              <el-option
+                v-for="item in allArchitecture"
+                :key="item.id"
+                :label="item.name"
+                :value="item.id"
+              >
+              </el-option>
+            </el-select>
+          </div>
+          <div>
+            <span>预约日期:</span>
+            <el-date-picker
+              style="width: 240px"
+              v-model="appointmentTime"
+              type="daterange"
+              range-separator="-"
+              start-placeholder="开始日期"
+              end-placeholder="结束日期"
+            >
+            </el-date-picker>
+          </div>
+          <div>
+            <span class="search_k">预约时段:</span>
+            <el-select
+              style="width: 160px"
+              v-model="formData.timeType"
+              placeholder="请选择"
+              @change="selectChange"
+            >
+              <el-option label="全部" value=""> </el-option>
+              <el-option
+                v-for="item in allPeriod"
+                :key="item.value"
+                :label="item.time"
+                :value="item.value"
+              >
+              </el-option>
+            </el-select>
+          </div>
+          <el-input
+            style="width: 260px"
+            v-model="formData.searchKey"
+            maxlength="20"
+            show-word-limit
+            placeholder="请输入姓名/身份证号/手机号"
+            @input="selectChange"
+          ></el-input>
+        </div>
+        <div class="search" style="justify-content: left">
+          <div>
+            <span>发起日期:</span>
+            <el-date-picker
+              style="width: 240px"
+              v-model="initiationTime"
+              type="daterange"
+              range-separator="-"
+              start-placeholder="开始日期"
+              end-placeholder="结束日期"
+            >
+            </el-date-picker>
+          </div>
+
+          <div class="options">
+            <div @click="resetBtn">重置</div>
+            <div @click="deriveFu">批量导出</div>
+            <div @click="() => (isEditNumber = true)">设置可访问人数</div>
+          </div>
+        </div>
+
+        <!-- 表格 -->
+        <div class="table">
+          <el-table :data="tableData" style="width: 100%" v-loading="isLoading">
+            <el-table-column prop="id" label="编号" width="60">
+              <template slot-scope="scope">
+                {{
+                  scope.$index + (formData.pageNum - 1) * formData.pageSize +1 
+                }}
+              </template>
+            </el-table-column>
+            <el-table-column prop="buildName" label="预约建筑">
+            </el-table-column>
+            <el-table-column prop="day" label="预约日期"></el-table-column>
+            <el-table-column prop="timeStr" label="预约时段"></el-table-column>
+            <el-table-column prop="name" label="姓名"></el-table-column>
+            <el-table-column prop="identity" label="身份证号"></el-table-column>
+            <el-table-column prop="phone" label="手机号码"></el-table-column>
+            <el-table-column label="年龄" width="60">
+              <template #default="{ row }">
+                {{ row.age ? row.age : "(空)" }}
+              </template>
+            </el-table-column>
+            <el-table-column prop="num" label="人数"></el-table-column>
+            <el-table-column
+              prop="createTime"
+              label="发起时间"
+              sortable
+            ></el-table-column>
+          </el-table>
+        </div>
+      </div>
+    </div>
+    <!-- 分页 -->
+    <div class="paging">
+      <span>共 {{ total }} 条</span>
+      <el-pagination
+        layout="sizes,prev, pager, next,jumper"
+        :total="total"
+        :current-page="formData.pageNum"
+        @current-change="currentChange"
+        @size-change="sizeChange"
+      >
+      </el-pagination>
+    </div>
+    <!-- 可访问人数信息窗口 -->
+    <el-dialog
+      title=""
+      :visible.sync="isEditNumber"
+      width="60%"
+      height
+      :modal-append-to-body="false"
+      append-to-body
+    >
+      <Exhibition />
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { baseURL } from "../../utils/request";
+import Exhibition from "./components/ExhibitionTable.vue";
+import { booksList, exhibitionList } from "@/apis/tab4.js";
+import ExportJsonExcel from "js-export-excel";
+import dayjs from "dayjs";
+import relativeTime from "dayjs/plugin/relativeTime";
+import "dayjs/locale/zh-cn";
+dayjs.extend(relativeTime);
+
+export default {
+  name: "tab2",
+  components: { Exhibition },
+  data() {
+    // 这里存放数据
+    return {
+      // 筛选条件
+      // 现存的所有建筑
+      allArchitecture: [],
+      // 预约时间
+      appointmentTime: [new Date(), dayjs(new Date()).add(7, "day").$d],
+      // 预约发起时间
+      initiationTime: [new Date(), new Date()],
+      // 预约时段
+      allPeriod: [
+        {
+          time: "8:30 - 12:00",
+          value: "AM",
+        },
+        {
+          time: "12:00 - 18:30",
+          value: "PM",
+        },
+      ],
+      // 可访问人数开关
+      isEditNumber: false,
+      loading: false,
+      baseURL,
+      total: 0,
+      formData: {
+        bookEndTime: "",
+        bookStartTime: 1,
+        buildId: "",
+        startTime: "",
+        endTime: "",
+        pageNum: 1,
+        pageSize: 10,
+        searchKey: "",
+        timeType: "",
+      },
+      tableData: [],
+      // 加载中
+      isLoading: true,
+    };
+  },
+  // 监听属性 类似于data概念
+  computed: {},
+  // 监控data中的数据变化
+  watch: {
+    // 监听预约日期
+    appointmentTime(val) {
+      this.handleSelect(val, "appointmentTime");
+      this.goodsList(this.formData);
+    },
+    // 监听发起日期
+    initiationTime(val) {
+      this.handleSelect(val, "initiationTime");
+      this.goodsList(this.formData);
+    },
+  },
+  // 方法集合
+  methods: {
+    // 时间处理
+    handleSelect(e, key) {
+      const date = [];
+      for (const i in e) {
+        date.push(this.gettime(e[i]));
+      }
+      key === "appointmentTime"
+        ? (this.formData.bookStartTime = date[0])
+        : key === "initiationTime"
+        ? (this.formData.startTime = date[0])
+        : "";
+      if (date[1]) {
+        key === "appointmentTime"
+          ? (this.formData.bookEndTime = date[1].replace(
+              "00:00:00",
+              "23:59:59"
+            ))
+          : key === "initiationTime"
+          ? (this.formData.endTime = date[1].replace("00:00:00", "23:59:59"))
+          : "";
+      }
+      if (e === null) this.formData.endTime = "";
+    },
+    gettime(data) {
+      const value =
+        data.getFullYear() +
+        "-" +
+        this.checkTime(data.getMonth() + 1) +
+        "-" +
+        this.checkTime(data.getDate()) +
+        " " +
+        this.checkTime(data.getHours()) +
+        ":" +
+        this.checkTime(data.getMinutes()) +
+        ":" +
+        this.checkTime(data.getSeconds());
+      return value;
+    },
+    checkTime(i) {
+      if (i < 10) {
+        i = "0" + i;
+      }
+      return i;
+    },
+
+    // 初始化预约日期、发起日期的默认时间
+    // 预约时间 今日-7天后
+    // 发起时间 当年1月1日-今日
+    defaultDate() {
+      this.initiationTime[0].setMonth(0);
+      this.initiationTime[0].setDate(1);
+      this.handleSelect(this.appointmentTime, "appointmentTime");
+      this.handleSelect(this.initiationTime, "initiationTime");
+      setTimeout(() => {
+        this.goodsList(this.formData);
+      }, 300);
+    },
+
+    // 点击重置
+    resetBtn() {
+      // this.formData.startTime = this.formData.endTime = "";
+      // this.formData.searchKey = "";
+      // this.formData.bookEndTime = this.formData.bookStartTime = "";
+      // this.formData.buildId = "";
+      // this.formData.pageNum = 0;
+      // this.formData.timeType = "";
+      // formData 全部置空
+      this.formData = this.$options.data().formData;
+      this.appointmentTime = "";
+      this.initiationTime = "";
+    },
+
+    // 批量导出
+    async deriveFu() {
+      if (this.tableData.length === 0) {
+        this.$message.warning("当前筛选条件没有符合的数据可以导出!");
+        return;
+      }
+
+      const curPageNum = this.formData.pageNum;
+      this.formData.pageSize = 99999;
+      this.formData.pageNum = 1;
+
+      const res = await booksList(this.formData);
+      if (res.code === 0) {
+        const date = new Date();
+        const name =
+          "建筑可游玩预约列表-" + date.getMonth() + "-" + date.getDate();
+        const resData = res.data.records;
+        console.log(name);
+        const option = {
+          fileName: name,
+          datas: [
+            {
+              sheetData: resData.map((v, i) => {
+                const builds = this.allArchitecture.find((build) => {
+                  return build.id === v.buildId;
+                });
+                return {
+                  ...v,
+                  index: i + 1,
+                  buildName: builds.name,
+                  timeStr:
+                    v.timeStr === "AM" ? "8:30 - 12:00" : "12:00 - 18:30",
+                  age: "(空)",
+                };
+              }),
+              sheetName: name,
+              sheetFilter: [
+                "index",
+                "buildName",
+                "day",
+                "timeStr",
+                "name",
+                "identity",
+                "phone",
+                "age",
+                "num",
+                "createTime",
+              ],
+              sheetHeader: [
+                "序号",
+                "预约建筑",
+                "预约日期",
+                "预约时段",
+                "姓名",
+                "身份证号",
+                "手机号码",
+                "年龄",
+                "人数",
+                "发起时间",
+              ],
+            },
+          ],
+        };
+
+        const toExcel = new ExportJsonExcel(option);
+        toExcel.saveExcel();
+      }
+
+      this.formData.pageSize = 10;
+      this.formData.pageNum = curPageNum;
+    },
+
+    // 建筑筛选切换
+    // 时段筛选切换
+    selectChange() {
+      this.formData.searchKey = this.formData.searchKey.trim();
+      this.goodsList(this.formData);
+    },
+
+    // 分页器方法
+    currentChange(val) {
+      this.formData.pageNum = val;
+      this.goodsList(this.formData);
+    },
+    sizeChange(val) {
+      // console.log('条数改变了', val)
+      this.formData.pageNum = 1;
+      this.formData.pageSize = val;
+      this.goodsList(this.formData);
+    },
+    async getExhibitions() {
+      // 所有建筑列表
+      const ress = await exhibitionList();
+      if (ress.code === 0) {
+        this.allArchitecture = ress.data;
+      }
+    },
+    // 封装获取列表的函数
+    async goodsList(data) {
+      // 获得预约列表的接口
+      await booksList(data).then((res) => {
+        if (res.code === 0) {
+          this.isLoading = false;
+          this.tableData = [];
+          this.total = res.data.total;
+          res.data.records.forEach((item) => {
+            const builds = this.allArchitecture.find((build) => {
+              return build.id === item.buildId;
+            });
+            this.tableData.push({
+              ...item,
+              buildName: builds.name,
+              timeStr: item.timeStr === "AM" ? "8:30 - 12:00" : "12:00 - 18:30",
+            });
+          });
+        }
+      });
+    },
+  },
+  // 生命周期 - 创建完成(可以访问当前this实例)
+  async created() {
+    this.getExhibitions();
+    // this.goodsList({});
+    // 初始化默认时间
+    this.defaultDate();
+  },
+  // 生命周期 - 挂载完成(可以访问DOM元素)
+  mounted() {},
+  beforeCreate() {}, // 生命周期 - 创建之前
+  beforeMount() {}, // 生命周期 - 挂载之前
+  beforeUpdate() {}, // 生命周期 - 更新之前
+  updated() {}, // 生命周期 - 更新之后
+  beforeDestroy() {}, // 生命周期 - 销毁之前
+  destroyed() {}, // 生命周期 - 销毁完成
+  activated() {}, // 如果页面有keep-alive缓存功能,这个函数会触发
+};
+</script>
+<style lang='less' scoped>
+/deep/.el-dialog {
+  border-radius: 20px;
+}
+.tab2 {
+  height: 100%;
+  .conten {
+    display: flex;
+    height: calc(100% - 52px);
+    .con_left {
+      padding: 20px 0 0 15px;
+      width: 150px;
+      height: 100%;
+      border-right: 1px solid black;
+      .cutJT {
+        margin-bottom: 10px;
+      }
+      ul {
+        li {
+          cursor: pointer;
+          width: 100px;
+          text-align: center;
+          line-height: 40px;
+          height: 40px;
+          &:hover {
+            color: #3a80d2;
+          }
+        }
+        .active {
+          color: #3a80d2;
+        }
+      }
+    }
+    .con_right {
+      padding: 15px 30px 0;
+      width: 100%;
+      .classify {
+        text-align: center;
+        width: 40px;
+        padding-bottom: 10px;
+        color: #b9412e;
+        border-bottom: 2px solid #b9412e;
+      }
+      .search {
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
+        margin-bottom: 20px;
+        position: relative;
+        margin-top: 12px;
+        height: 40px;
+        .options {
+          display: flex;
+          height: 100%;
+          margin-left: 40px;
+
+          div {
+            display: flex;
+            align-items: center;
+            height: 100%;
+            border-radius: 5px;
+            border: 1px solid rgb(207, 206, 206);
+            padding: 0 20px;
+            font-size: 14px;
+            margin-right: 20px;
+            cursor: pointer;
+            font-weight: 600;
+          }
+        }
+
+        .search_btn {
+          margin-left: 50px;
+          display: flex;
+          justify-content: space-between;
+          width: 300px;
+        }
+      }
+    }
+  }
+  // .table {
+  //   max-width: 1370px;
+  // }
+  /deep/.el-table__body-wrapper {
+    max-height: 480px;
+    overflow-y: auto;
+  }
+  .paging {
+    display: flex;
+    align-items: center;
+    position: absolute;
+    bottom: 15px;
+    right: 50px;
+    & > span {
+      margin-right: 15px;
+      font-size: 13px;
+    }
+  }
+  .disNo {
+    color: #ccc !important;
+  }
+}
+</style>

+ 2 - 1
houtai/vue.config.js

@@ -1,3 +1,4 @@
 module.exports = {
-  publicPath: './'
+  publicPath: './',
+  lintOnSave: false
 }

文件差异内容过多而无法显示
+ 0 - 28762
yfyc/package-lock.json


二进制
yfyc/src/assets/img/home/logo.png


二进制
yfyc/src/assets/img/home/logo2.png


+ 1 - 1
yfyc/src/views/Construct/index.vue

@@ -55,7 +55,7 @@
 <script>
 const unityUrlObj = {
   1: "https://4dscene.4dage.com/culturalrelics/YFYCM2/Model2.html?m=yfyc204",
-  2: "",
+  2: "https://4dscene.4dage.com/culturalrelics/YFYCM2/Model2.html?m=yfyc214",
   3: "https://4dscene.4dage.com/culturalrelics/YFYCM2/Model2.html?m=yfyc215",
   4: "https://4dscene.4dage.com/culturalrelics/YFYCM2/Model2.html?m=yfyc211",
   5: "https://4dscene.4dage.com/culturalrelics/YFYCM2/Model2.html?m=yfyc213",

+ 12 - 1
yfyc/src/views/Home/index.vue

@@ -1,6 +1,7 @@
 <template>
   <div class="Home">
     <img class="logo" src="../../assets/img/home/logo.png" alt="" />
+    <img class="logo2" src="../../assets/img/home/logo2.png" alt="" />
     <img
       class="btn"
       @click="$router.push('/layout/list')"
@@ -55,11 +56,21 @@ export default {
       height: 100%;
     }
   }
+  .logo2{
+    width: 90%;
+    position: absolute;
+    top: 5px;
+    left: 50%;
+    transform: translateX(-50%);
+    z-index: 2;
+    pointer-events: none;
+  }
 
   .logo {
+    pointer-events: none;
     position: absolute;
     z-index: 2;
-    width: 300px;
+    width: 120px;
     top: 60px;
     left: 50%;
     transform: translateX(-50%);

+ 1 - 1
yfyc/src/views/Interact/index.vue

@@ -87,7 +87,7 @@ export default {
       //此处的ID是在文档的开发-基本配置里面
       let appid = "wx3255043d1b21a4f7";
       // let url = "http://192.168.20.48:8080/#/layout/interact";
-      let url = baseURL + "/web/index.html#/layout/interact";
+      let url = "https://yifangyice.4dage.com/web/index.html#/layout/interact";
       window.location.href =
         "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" +
         appid +