diff --git a/web/public/js/components.js b/web/public/js/components.js index 2e9ca512..98bd6ab3 100644 --- a/web/public/js/components.js +++ b/web/public/js/components.js @@ -353,7 +353,7 @@ Vue.component("traffic-map-box",{props:["v-stats","v-is-attack"],mounted:functio @change="change" ref="comboBox"> -`}),Vue.component("ns-routes-selector",{props:["v-routes","name"],mounted:function(){let t=this;Tea.action("/ns/routes/options").post().success(function(e){t.routes=e.data.routes})},data:function(){let e=this.vRoutes,t=(null==e&&(e=[]),this.name);return{routeCode:"default",inputName:t="string"==typeof t&&0!=t.length?t:"routeCodes",routes:[],isAdding:!1,routeType:"default",selectedRoutes:e}},watch:{routeType:function(t){this.routeCode="";let i=this;this.routes.forEach(function(e){e.type==t&&0==i.routeCode.length&&(i.routeCode=e.code)})}},methods:{add:function(){this.isAdding=!0,this.routeType="default",this.routeCode="default",this.$emit("add")},cancel:function(){this.isAdding=!1,this.$emit("cancel")},confirm:function(){if(0!=this.routeCode.length){let t=this;this.routes.forEach(function(e){e.code==t.routeCode&&t.selectedRoutes.push(e)}),this.$emit("change",this.selectedRoutes),this.cancel()}},remove:function(e){this.selectedRoutes.$remove(e),this.$emit("change",this.selectedRoutes)}},template:`
+
`}),Vue.component("ns-routes-selector",{props:["v-routes","name"],mounted:function(){let s=this;Tea.action("/ns/routes/options").post().success(function(e){s.routes=e.data.routes;let t={};if(null!=e.data.provinces&&0
@@ -362,31 +362,44 @@ Vue.component("traffic-map-box",{props:["v-stats","v-is-attack"],mounted:functio
-
-
- -
- -
- -
- -
- -   -
-
+ + + + + + + + + + + + + +
选择类型 * + +
选择线路 * + +
选择省/州 + +
+
+ +   取消 +
- +
`}),Vue.component("ns-recursion-config-box",{props:["v-recursion-config"],data:function(){let e=this.vRecursionConfig;return null==(e=null==e?{isOn:!1,hosts:[],allowDomains:[],denyDomains:[],useLocalHosts:!1}:e).hosts&&(e.hosts=[]),null==e.allowDomains&&(e.allowDomains=[]),null==e.denyDomains&&(e.denyDomains=[]),{config:e,hostIsAdding:!1,host:"",updatingHost:null}},methods:{changeHosts:function(e){this.config.hosts=e},changeAllowDomains:function(e){this.config.allowDomains=e},changeDenyDomains:function(e){this.config.denyDomains=e},removeHost:function(e){this.config.hosts.$remove(e)},addHost:function(){var t;this.updatingHost=null,this.host="",this.hostIsAdding=!this.hostIsAdding,this.hostIsAdding&&(t=this,setTimeout(function(){let e=t.$refs.hostRef;null!=e&&e.focus()},200))},updateHost:function(e){var t;this.updatingHost=e,this.host=e.host,this.hostIsAdding=!this.hostIsAdding,this.hostIsAdding&&(t=this,setTimeout(function(){let e=t.$refs.hostRef;null!=e&&e.focus()},200))},confirmHost:function(){0==this.host.length?teaweb.warn("请输入DNS地址"):(this.hostIsAdding=!1,null==this.updatingHost?this.config.hosts.push({host:this.host}):this.updatingHost.host=this.host)},cancelHost:function(){this.hostIsAdding=!1}},template:`
@@ -6555,7 +6568,7 @@ example2.com `}),Vue.component("digit-input",{props:["value","maxlength","size","min","max","required","placeholder"],mounted:function(){let e=this;setTimeout(function(){e.check()})},data:function(){let e=this.maxlength,t=(null==e&&(e=20),this.size);return null==t&&(t=6),{realValue:this.value,realMaxLength:e,realSize:t,isValid:!0}},watch:{realValue:function(e){this.notifyChange()}},methods:{notifyChange:function(){let e=parseInt(this.realValue.toString(),10);isNaN(e)&&(e=0),this.check(),this.$emit("input",e)},check:function(){var e;null!=this.realValue&&(e=this.realValue.toString(),/^\d+$/.test(e)?(e=parseInt(e,10),isNaN(e)?this.isValid=!1:this.required?this.isValid=(null==this.min||this.min<=e)&&(null==this.max||this.max>=e):this.isValid=0==e||(null==this.min||this.min<=e)&&(null==this.max||this.max>=e)):this.isValid=!1)}},template:''}),Vue.component("keyword",{props:["v-word"],data:function(){let e=this.vWord;e=null==e?"":(e=(e=(e=(e=(e=(e=(e=(e=(e=e.replace(/\)/g,"\\)")).replace(/\(/g,"\\(")).replace(/\+/g,"\\+")).replace(/\^/g,"\\^")).replace(/\$/g,"\\$")).replace(/\?/g,"\\?")).replace(/\*/g,"\\*")).replace(/\[/g,"\\[")).replace(/{/g,"\\{")).replace(/\./g,"\\.");let t=this.$slots.default[0].text;if(0",t="$TMP__KEY__"+s.toString()+"$";return n.push([t,e]),t}),t=this.encodeHTML(t),n.forEach(function(e){t=t.replace(e[0],e[1])})}else t=this.encodeHTML(t);return{word:e,text:t}},methods:{encodeHTML:function(e){return e=(e=(e=(e=e.replace(/&/g,"&")).replace(//g,">")).replace(/"/g,""")}},template:''}),Vue.component("bits-var",{props:["v-bits"],data:function(){let e=this.vBits;return"number"!=typeof e&&(e=0),{format:teaweb.splitFormat(teaweb.formatBits(e))}},template:` {{format[0]}}{{format[1]}} -`}),Vue.component("chart-columns-grid",{props:[],mounted:function(){this.columns=this.calculateColumns();let e=this;window.addEventListener("resize",function(){e.columns=e.calculateColumns()})},updated:function(){var e=this.$el.getElementsByClassName("column").length;e!=this.totalElements&&(this.totalElements=e,this.calculateColumns())},data:function(){return{columns:"four",totalElements:0}},methods:{calculateColumns:function(){var e=window.innerWidth;let i=Math.floor(e/500);0==i&&(i=1);var n=this.$el.getElementsByClassName("column");if(0==n.length)return"one";e=n.length;i>e&&(i=e);for(let t=0;t +`}),Vue.component("mask-warning",{template:'为了安全起见,此项数据保存后将不允许在界面查看完整明文,为避免忘记,请自行记录原始数据。'}),Vue.component("chart-columns-grid",{props:[],mounted:function(){this.columns=this.calculateColumns();let e=this;window.addEventListener("resize",function(){e.columns=e.calculateColumns()})},updated:function(){var e=this.$el.getElementsByClassName("column").length;e!=this.totalElements&&(this.totalElements=e,this.calculateColumns())},data:function(){return{columns:"four",totalElements:0}},methods:{calculateColumns:function(){var e=window.innerWidth;let i=Math.floor(e/500);0==i&&(i=1);var n=this.$el.getElementsByClassName("column");if(0==n.length)return"one";e=n.length;i>e&&(i=e);for(let t=0;t `}),Vue.component("bytes-var",{props:["v-bytes"],data:function(){let e=this.vBytes;return"number"!=typeof e&&(e=0),{format:teaweb.splitFormat(teaweb.formatBytes(e))}},template:` {{format[0]}}{{format[1]}} @@ -6685,7 +6698,7 @@ example2.com
[IPv6] {{address.ip}} - ({{address.name}},不可访问 + (备注:{{address.name}},不可访问 (不可访问) [off] [down] diff --git a/web/public/js/components.src.js b/web/public/js/components.src.js index 4020e060..00143efa 100755 --- a/web/public/js/components.src.js +++ b/web/public/js/components.src.js @@ -1230,6 +1230,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 () { @@ -1247,6 +1263,10 @@ Vue.component("ns-routes-selector", { routeCode: "default", inputName: inputName, routes: [], + + provinces: {}, // country code => [ province1, province2, ... ] + provinceRouteCode: "", + isAdding: false, routeType: "default", selectedRoutes: selectedRoutes, @@ -1268,6 +1288,7 @@ Vue.component("ns-routes-selector", { this.isAdding = true this.routeType = "default" this.routeCode = "default" + this.provinceRouteCode = "" this.$emit("add") }, cancel: function () { @@ -1280,11 +1301,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() }, @@ -1303,31 +1346,44 @@ Vue.component("ns-routes-selector", {
-
-
- -
- -
- -
- -
- -   -
-
+
+ + + + + + + + + + + + +
选择类型 * + +
选择线路 * + +
选择省/州 + +
+
+ +   取消 +
- + ` }) @@ -19525,6 +19581,10 @@ Vue.component("bits-var", { ` }) +Vue.component("mask-warning", { + template: `为了安全起见,此项数据保存后将不允许在界面查看完整明文,为避免忘记,请自行记录原始数据。` +}) + Vue.component("chart-columns-grid", { props: [], mounted: function () { @@ -20525,7 +20585,7 @@ Vue.component("node-ip-addresses-box", {
[IPv6] {{address.ip}} - ({{address.name}},不可访问 + (备注:{{address.name}},不可访问 (不可访问) [off] [down]