diff --git a/web/html/xui/inbounds.html b/web/html/xui/inbounds.html
index c358fb09..e946a26a 100644
--- a/web/html/xui/inbounds.html
+++ b/web/html/xui/inbounds.html
@@ -14,904 +14,877 @@
-
- {{ template "commonSider" . }}
-
-
-
-
-
- Please go to the panel settings as soon as possible to modify the username and password,
- otherwise there may be a risk of leaking account information
-
-
-
-
+
+ {{ template "commonSider" . }}
+
+
+
+
+
+ Please go to the panel settings as soon as possible to modify the username and password, otherwise there may be a risk of leaking account information
+
+
+
+
+
+
+ {{ i18n "pages.inbounds.totalDownUp" }}:
+ [[ sizeFormat(total.up) ]] / [[ sizeFormat(total.down) ]]
+
+
+ {{ i18n "pages.inbounds.totalUsage" }}:
+ [[ sizeFormat(total.up + total.down) ]]
+
+
+ {{ i18n "pages.inbounds.inboundCount" }}:
+ [[ dbInbounds.length ]]
+
+
+ {{ i18n "clients" }}:
+ [[ total.clients ]]
+
+
+ [[ clientEmail ]]
+
+ [[ total.deactive.length ]]
+
+
+
+ [[ clientEmail ]]
+
+ [[ total.depleted.length ]]
+
+
+
+ [[ clientEmail ]]
+
+ [[ total.expiring.length ]]
+
+
+
+
+
+
+
+
- {{ i18n "pages.inbounds.totalDownUp" }}:
- [[ sizeFormat(total.up) ]] / [[ sizeFormat(total.down)
- ]]
-
-
- {{ i18n "pages.inbounds.totalUsage" }}:
- [[ sizeFormat(total.up + total.down) ]]
-
-
- {{ i18n "pages.inbounds.inboundCount" }}:
- [[ dbInbounds.length ]]
-
-
- {{ i18n "clients" }}:
- [[ total.clients ]]
-
-
- [[ clientEmail ]]
-
- [[ total.deactive.length ]]
-
-
-
- [[ clientEmail ]]
-
- [[ total.depleted.length
- ]]
-
-
-
- [[ clientEmail ]]
-
- [[ total.expiring.length
- ]]
-
-
-
-
-
-
-
-
-
-
- {{ i18n
- "pages.inbounds.addInbound" }}
-
- {{ i18n "pages.inbounds.generalActions"
- }}
- generalActions(a)"
- :theme="themeSwitcher.currentTheme">
-
-
- {{ i18n "pages.inbounds.export" }}
-
-
-
- {{ i18n "pages.inbounds.resetAllTraffic" }}
-
-
-
- {{ i18n "pages.inbounds.resetAllClientTraffics" }}
-
-
-
- {{ i18n "pages.inbounds.delDepletedClients" }}
-
-
-
-
-
-
- [[ key
- ]]s
-
-
-
-
-
-
-
- getDBInbounds()">
-
+ {{ i18n "pages.inbounds.addInbound" }}
- e.preventDefault()" type="menu">
- clickAction(a, dbInbound)"
- :theme="themeSwitcher.currentTheme">
-
-
- {{ i18n "edit" }}
+ {{ i18n "pages.inbounds.generalActions" }}
+ generalActions(a)" :theme="themeSwitcher.currentTheme">
+
+
+ {{ i18n "pages.inbounds.export" }}
-
-
-
- {{ i18n "pages.client.add"}}
-
-
-
- {{ i18n "pages.client.bulk"}}
-
-
-
- {{ i18n "pages.inbounds.resetInboundClientTraffics"}}
-
-
-
- {{ i18n "pages.inbounds.export"}}
-
-
-
- {{ i18n "pages.inbounds.delDepletedClients" }}
-
-
-
-
-
- {{ i18n "info"}}
-
-
-
- {{ i18n "pages.inbounds.resetTraffic"
- }}
+
+
+ {{ i18n "pages.inbounds.resetAllTraffic" }}
-
- {{ i18n "pages.inbounds.clone"}}
+
+
+ {{ i18n "pages.inbounds.resetAllClientTraffics" }}
-
-
- {{ i18n "delete"}}
-
+
+
+ {{ i18n "pages.inbounds.delDepletedClients" }}
+
+
+
+ [[ key ]]s
+
+
+
+
+
+
+
+ getDBInbounds()">
+
+
+ e.preventDefault()" type="menu">
+ clickAction(a, dbInbound)" :theme="themeSwitcher.currentTheme">
+
+
+ {{ i18n "edit" }}
+
+
+
+
+ {{ i18n "pages.client.add"}}
+
+
+
+ {{ i18n "pages.client.bulk"}}
+
+
+
+ {{ i18n "pages.inbounds.resetInboundClientTraffics"}}
+
+
+
+ {{ i18n "pages.inbounds.export"}}
+
+
+
+ {{ i18n "pages.inbounds.delDepletedClients" }}
+
+
+
+
+
+ {{ i18n "info"}}
+
+
+
+ {{ i18n "pages.inbounds.resetTraffic" }}
+
+
+ {{ i18n "pages.inbounds.clone"}}
+
+
+
+ {{ i18n "delete"}}
+
+
+
+
+
+
+ [[ dbInbound.protocol ]]
+
+ [[ dbInbound.toInbound().stream.network ]]
+ tls
+ reality
-
- [[ dbInbound.protocol ]]
-
- [[ dbInbound.toInbound().stream.network
- ]]
- tls
- reality
-
+
+
+
+ [[ clientCount[dbInbound.id].clients ]]
+
+
+ [[ clientEmail ]]
+
+ [[ clientCount[dbInbound.id].deactive.length ]]
+
+
+
+ [[ clientEmail ]]
+
+ [[ clientCount[dbInbound.id].depleted.length ]]
+
+
+
+ [[ clientEmail ]]
+
+ [[ clientCount[dbInbound.id].expiring.length ]]
+
-
-
- [[ clientCount[dbInbound.id].clients
- ]]
-
-
- [[
- clientEmail ]]
-
- [[
- clientCount[dbInbound.id].deactive.length ]]
-
-
-
- [[
- clientEmail ]]
-
- [[
- clientCount[dbInbound.id].depleted.length ]]
-
-
-
- [[
- clientEmail ]]
-
- [[
- clientCount[dbInbound.id].expiring.length ]]
-
-
+
+
+ [[ sizeFormat(dbInbound.up) ]] / [[ sizeFormat(dbInbound.down) ]]
+
+ [[ sizeFormat(dbInbound.total) ]]
+ [[ sizeFormat(dbInbound.total) ]]
-
- [[ sizeFormat(dbInbound.up) ]] / [[ sizeFormat(dbInbound.down)
- ]]
-
- [[
- sizeFormat(dbInbound.total) ]]
- [[ sizeFormat(dbInbound.total) ]]
-
- {{ i18n "unlimited" }}
+ {{ i18n "unlimited" }}
+
+
+
+
+
+
+
+ [[ DateUtil.formatMillis(dbInbound.expiryTime) ]]
+
+
+ [[ DateUtil.formatMillis(dbInbound.expiryTime) ]]
+
-
-
-
-
-
-
- [[ DateUtil.formatMillis(dbInbound.expiryTime) ]]
-
-
- [[ DateUtil.formatMillis(dbInbound.expiryTime) ]]
-
-
- {{ i18n "indefinite" }}
-
-
-
- {{template "client_table"}}
-
-
- {{template "client_table"}}
-
-
-
-
-
-
-
-
+ {{ i18n "indefinite" }}
+
+
+
+ {{template "client_table"}}
+
+
+ {{template "client_table"}}
+
+
+
+
+
+
+
- {{template "js" .}}
- {{template "component/themeSwitcher" .}}
-
+ },
+ watch: {
+ searchKey: debounce(function (newVal) {
+ this.searchInbounds(newVal);
+ }, 500)
+ },
+ mounted() {
+ this.loading();
+ this.getDefaultSettings();
+ if (this.isRefreshEnabled) {
+ this.startDataRefreshLoop();
+ }
+ else {
+ this.getDBInbounds();
+ }
+ this.loading(false);
+ },
+ computed: {
+ total() {
+ let down = 0, up = 0;
+ let clients = 0, deactive = [], depleted = [], expiring = [];
+ this.dbInbounds.forEach(dbInbound => {
+ down += dbInbound.down;
+ up += dbInbound.up;
+ if (this.clientCount[dbInbound.id]) {
+ clients += this.clientCount[dbInbound.id].clients;
+ deactive = deactive.concat(this.clientCount[dbInbound.id].deactive);
+ depleted = depleted.concat(this.clientCount[dbInbound.id].depleted);
+ expiring = expiring.concat(this.clientCount[dbInbound.id].expiring);
+ }
+ });
+ return {
+ down: down,
+ up: up,
+ clients: clients,
+ deactive: deactive,
+ depleted: depleted,
+ expiring: expiring,
+ };
+ }
+ },
+ });
+
- {{template "inboundModal"}}
- {{template "promptModal"}}
- {{template "qrcodeModal"}}
- {{template "textModal"}}
- {{template "inboundInfoModal"}}
- {{template "clientsModal"}}
- {{template "clientsBulkModal"}}
+{{template "inboundModal"}}
+{{template "promptModal"}}
+{{template "qrcodeModal"}}
+{{template "textModal"}}
+{{template "inboundInfoModal"}}
+{{template "clientsModal"}}
+{{template "clientsBulkModal"}}
-