From 996adc37ff33c3c35d0c806b1899af7a04a1377e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=A5=A5=E8=B6=85?= Date: Thu, 14 Mar 2024 20:41:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=99=BA=E8=83=BDDNS=E4=B8=AD=E5=9B=BD?= =?UTF-8?q?=E5=AE=B6/=E5=9C=B0=E5=8C=BA=E7=BA=BF=E8=B7=AF=E4=B8=8B?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E7=9C=81/=E5=B7=9E=E7=9A=84=E7=BB=86?= =?UTF-8?q?=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../js/components/ns/ns-routes-selector.js | 112 +++++++++++++----- 1 file changed, 84 insertions(+), 28 deletions(-) diff --git a/web/public/js/components/ns/ns-routes-selector.js b/web/public/js/components/ns/ns-routes-selector.js index b2611cd4..9f87f57f 100644 --- a/web/public/js/components/ns/ns-routes-selector.js +++ b/web/public/js/components/ns/ns-routes-selector.js @@ -7,6 +7,22 @@ Vue.component("ns-routes-selector", { .post() .success(function (resp) { that.routes = resp.data.routes + + // provinces + let provinces = {} + if (resp.data.provinces != null && resp.data.provinces.length > 0) { + for (const province of resp.data.provinces) { + let countryCode = province.countryCode + if (typeof provinces[countryCode] == "undefined") { + provinces[countryCode] = [] + } + provinces[countryCode].push({ + name: province.name, + code: province.code + }) + } + } + that.provinces = provinces }) }, data: function () { @@ -24,6 +40,10 @@ Vue.component("ns-routes-selector", { routeCode: "default", inputName: inputName, routes: [], + + provinces: {}, // country code => [ province1, province2, ... ] + provinceRouteCode: "", + isAdding: false, routeType: "default", selectedRoutes: selectedRoutes, @@ -45,6 +65,7 @@ Vue.component("ns-routes-selector", { this.isAdding = true this.routeType = "default" this.routeCode = "default" + this.provinceRouteCode = "" this.$emit("add") }, cancel: function () { @@ -57,11 +78,33 @@ Vue.component("ns-routes-selector", { } let that = this - this.routes.forEach(function (v) { - if (v.code == that.routeCode) { - that.selectedRoutes.push(v) + + // route + let selectedRoute = null + for (const route of this.routes) { + if (route.code == this.routeCode) { + selectedRoute = route + break } - }) + } + + if (selectedRoute != null) { + // province route + if (this.provinceRouteCode.length > 0 && this.provinces[this.routeCode] != null) { + for (const province of this.provinces[this.routeCode]) { + if (province.code == this.provinceRouteCode) { + selectedRoute = { + name: selectedRoute.name + "-" + province.name, + code: province.code + } + break + } + } + } + + that.selectedRoutes.push(selectedRoute) + } + this.$emit("change", this.selectedRoutes) this.cancel() }, @@ -80,30 +123,43 @@ Vue.component("ns-routes-selector", {
-
-
- -
- -
- -
- -
- -   -
-
+ + + + + + + + + + + + + +
选择类型 * + +
选择线路 * + +
选择省/州 + +
+
+ +   取消 +
- + ` }) \ No newline at end of file