diff options
| author | MHSanaei <ho3ein.sanaei@gmail.com> | 2023-05-07 14:06:43 +0300 |
|---|---|---|
| committer | MHSanaei <ho3ein.sanaei@gmail.com> | 2023-05-07 14:06:43 +0300 |
| commit | 9d47d74a7a076921d157188ae82ea83e66c96d09 (patch) | |
| tree | 9d2d89dcddc840c2aca076e2eeacfa2f8400f227 /web/html/xui | |
| parent | 92f5dfed1ca7ed51f197c6b3f631212a47545b5d (diff) | |
design update
Diffstat (limited to 'web/html/xui')
| -rw-r--r-- | web/html/xui/client_bulk_modal.html | 15 | ||||
| -rw-r--r-- | web/html/xui/form/client.html | 26 | ||||
| -rw-r--r-- | web/html/xui/form/inbound.html | 2 | ||||
| -rw-r--r-- | web/html/xui/form/protocol/shadowsocks.html | 14 | ||||
| -rw-r--r-- | web/html/xui/form/protocol/trojan.html | 180 | ||||
| -rw-r--r-- | web/html/xui/form/protocol/vless.html | 192 | ||||
| -rw-r--r-- | web/html/xui/form/protocol/vmess.html | 175 | ||||
| -rw-r--r-- | web/html/xui/inbounds.html | 8 |
8 files changed, 320 insertions, 292 deletions
diff --git a/web/html/xui/client_bulk_modal.html b/web/html/xui/client_bulk_modal.html index 274f8588..e856c6df 100644 --- a/web/html/xui/client_bulk_modal.html +++ b/web/html/xui/client_bulk_modal.html @@ -33,6 +33,12 @@ <span slot="label">{{ i18n "pages.client.clientCount" }}</span> <a-input-number v-model="clientsBulkModal.quantity" :min="1" :max="100"></a-input-number> </a-form-item> + <a-form-item label="Subscription"> + <a-input v-model.trim="clientsBulkModal.subId"></a-input> + </a-form-item> + <a-form-item label="Telegram ID"> + <a-input v-model.trim="clientsBulkModal.tgId"></a-input> + </a-form-item> <a-form-item> <span slot="label"> <span>{{ i18n "pages.inbounds.IPLimit" }}</span> @@ -45,6 +51,7 @@ </span> <a-input-number v-model="clientsBulkModal.limitIp" min="0"></a-input-number> </a-form-item> + <br> <a-form-item v-if="clientsBulkModal.inbound.xtls" label="Flow"> <a-select v-model="clientsBulkModal.flow" style="width: 200px" :dropdown-class-name="siderDrawer.isDarkTheme ? 'ant-card-dark' : ''"> <a-select-option value="">{{ i18n "none" }}</a-select-option> @@ -57,12 +64,6 @@ <a-select-option v-for="key in TLS_FLOW_CONTROL" :value="key">[[ key ]]</a-select-option> </a-select> </a-form-item> - <a-form-item label="Subscription"> - <a-input v-model.trim="clientsBulkModal.subId"></a-input> - </a-form-item> - <a-form-item label="Telegram ID"> - <a-input v-model.trim="clientsBulkModal.tgId"></a-input> - </a-form-item> <a-form-item> <span slot="label"> <span >{{ i18n "pages.inbounds.totalFlow" }}</span> (GB) @@ -75,9 +76,11 @@ </span> <a-input-number v-model="clientsBulkModal.totalGB" :min="0"></a-input-number> </a-form-item> + <br> <a-form-item label='{{ i18n "pages.client.delayedStart" }}'> <a-switch v-model="clientsBulkModal.delayedStart" @click="clientsBulkModal.expiryTime=0"></a-switch> </a-form-item> + <br> <a-form-item label='{{ i18n "pages.client.expireDays" }}' v-if="clientsBulkModal.delayedStart"> <a-input-number v-model="delayedExpireDays" :min="0"></a-input-number> </a-form-item> diff --git a/web/html/xui/form/client.html b/web/html/xui/form/client.html index 1740e74b..017bd7dc 100644 --- a/web/html/xui/form/client.html +++ b/web/html/xui/form/client.html @@ -3,6 +3,10 @@ <template v-if="isEdit"> <a-tag v-if="isExpiry || isTrafficExhausted" color="red" style="margin-bottom: 10px;display: block;text-align: center;">Account is (Expired|Traffic Ended) And Disabled</a-tag> </template> + <a-form-item label='{{ i18n "pages.inbounds.enable" }}'> + <a-switch v-model="client.enable"></a-switch> + </a-form-item> + <br> <a-form-item> <span slot="label"> <span>{{ i18n "pages.inbounds.Email" }}</span> @@ -13,17 +17,14 @@ <a-icon type="sync" @click="getNewEmail(client)"></a-icon> </a-tooltip> </span> - <a-input v-model.trim="client.email" style="width: 150px;" ></a-input> - </a-form-item> - <a-form-item label='{{ i18n "pages.inbounds.enable" }}'> - <a-switch v-model="client.enable"></a-switch> + <a-input v-model.trim="client.email" style="width: 200px;" ></a-input> </a-form-item> <a-form-item label="Password" v-if="inbound.protocol === Protocols.TROJAN || inbound.protocol === Protocols.SHADOWSOCKS"> <a-icon v-if="inbound.protocol === Protocols.SHADOWSOCKS" @click="client.password = RandomUtil.randomShadowsocksPassword()" type="sync"> </a-icon> - <a-input v-model.trim="client.password" style="width: 150px;" ></a-input> + <a-input v-model.trim="client.password" style="width: 300px;" ></a-input> </a-form-item> <a-form-item label='{{ i18n "additional" }} ID' v-if="inbound.protocol === Protocols.VMESS"> - <a-input-number v-model="client.alterId" style="width: 70px;"></a-input-number> + <a-input-number v-model="client.alterId"></a-input-number> </a-form-item> <a-form-item label="ID" v-if="inbound.protocol === Protocols.VMESS || inbound.protocol === Protocols.VLESS"> <a-input v-model.trim="client.id" style="width: 300px;"></a-input> @@ -44,7 +45,7 @@ <a-icon type="question-circle" theme="filled"></a-icon> </a-tooltip> </span> - <a-input-number v-model="client.limitIp" min="0" style="width: 70px;"></a-input-number> + <a-input-number v-model="client.limitIp" min="0"></a-input-number> </a-form-item> <a-form-item v-if="client.email && client.limitIp > 0 && isEdit"> <span slot="label"> @@ -69,13 +70,14 @@ </a-textarea> </a-form> </a-form-item> + <br> <a-form-item v-if="inbound.xtls" label="Flow"> <a-select v-model="client.flow" style="width: 200px" :dropdown-class-name="siderDrawer.isDarkTheme ? 'ant-card-dark' : ''"> <a-select-option value="">{{ i18n "none" }}</a-select-option> <a-select-option v-for="key in XTLS_FLOW_CONTROL" :value="key">[[ key ]]</a-select-option> </a-select> </a-form-item> - <a-form-item v-else-if="inbound.canEnableTlsFlow()" label="Flow" layout="inline"> + <a-form-item v-else-if="inbound.canEnableTlsFlow()" label="Flow"> <a-select v-model="client.flow" style="width: 200px" :dropdown-class-name="siderDrawer.isDarkTheme ? 'ant-card-dark' : ''"> <a-select-option value="" selected>{{ i18n "none" }}</a-select-option> <a-select-option v-for="key in TLS_FLOW_CONTROL" :value="key">[[ key ]]</a-select-option> @@ -91,9 +93,9 @@ <a-icon type="question-circle" theme="filled"></a-icon> </a-tooltip> </span> - <a-input-number v-model="client._totalGB":min="0" style="width: 70px;"></a-input-number> + <a-input-number v-model="client._totalGB":min="0"></a-input-number> <template v-if="isEdit && clientStats"> - <span>{{ i18n "usage" }}:</span> + <br><span> {{ i18n "usage" }}:</span> <a-tag :color="statsColor"> [[ sizeFormat(clientStats.up) ]] / [[ sizeFormat(clientStats.down) ]] @@ -103,11 +105,13 @@ <template slot="title">{{ i18n "pages.inbounds.resetTraffic" }}</template> <a-icon type="retweet" @click="resetClientTraffic(client.email,clientStats.inboundId,$event.target)" v-if="client.email.length > 0"></a-icon> </a-tooltip> - </template> + </template> </a-form-item> + <br> <a-form-item label='{{ i18n "pages.client.delayedStart" }}'> <a-switch v-model="clientModal.delayedStart" @click="client._expiryTime=0"></a-switch> </a-form-item> + <br> <a-form-item label='{{ i18n "pages.client.expireDays" }}' v-if="clientModal.delayedStart"> <a-input-number v-model="delayedExpireDays" :min="0"></a-input-number> </a-form-item> diff --git a/web/html/xui/form/inbound.html b/web/html/xui/form/inbound.html index 603ca46a..3c40447e 100644 --- a/web/html/xui/form/inbound.html +++ b/web/html/xui/form/inbound.html @@ -24,9 +24,11 @@ </span> <a-input v-model.trim="inbound.listen"></a-input> </a-form-item> + <br> <a-form-item label='{{ i18n "pages.inbounds.port" }}'> <a-input-number v-model="inbound.port"></a-input-number> </a-form-item> + <br> <a-form-item> <span slot="label"> <span >{{ i18n "pages.inbounds.totalFlow" }}</span> (GB) diff --git a/web/html/xui/form/protocol/shadowsocks.html b/web/html/xui/form/protocol/shadowsocks.html index b143cff1..c739ae10 100644 --- a/web/html/xui/form/protocol/shadowsocks.html +++ b/web/html/xui/form/protocol/shadowsocks.html @@ -1,5 +1,5 @@ {{define "form/shadowsocks"}} -<a-form layout="inline"> +<a-form layout="inline" style="padding: 10px 0px;"> <a-collapse activeKey="0" v-for="(client, index) in inbound.settings.shadowsockses.slice(0,1)" v-if="!isEdit"> <a-collapse-panel header='{{ i18n "pages.inbounds.client" }}'> <a-form-item> @@ -16,7 +16,7 @@ </a-form-item> <a-form-item label="Password"> <a-icon @click="client.password = RandomUtil.randomShadowsocksPassword()" type="sync"> </a-icon> - <a-input v-model.trim="client.password" style="width: 150px;"></a-input> + <a-input v-model.trim="client.password" style="width: 250px;"></a-input> </a-form-item> <a-form-item label="Subscription" v-if="client.email"> <a-input v-model.trim="client.subId"></a-input> @@ -34,8 +34,9 @@ <a-icon type="question-circle" theme="filled"></a-icon> </a-tooltip> </span> - <a-input-number v-model="client.limitIp" min="0" style="width: 70px;"></a-input-number> + <a-input-number v-model="client.limitIp" min="0"></a-input-number> </a-form-item> + <br> <a-form-item> <span slot="label"> <span >{{ i18n "pages.inbounds.totalFlow" }}</span> (GB) @@ -48,13 +49,15 @@ </span> <a-input-number v-model="client._totalGB" :min="0"></a-input-number> </a-form-item> + <br> <a-form-item label='{{ i18n "pages.client.delayedStart" }}'> <a-switch v-model="delayedStart" @click="client._expiryTime=0"></a-switch> </a-form-item> + <br> <a-form-item v-if="delayedStart" label='{{ i18n "pages.client.expireDays" }}'> <a-input-number v-model.number="delayedExpireDays" :min="0"></a-input-number> </a-form-item> - <a-form-item> + <a-form-item v-else> <span slot="label"> <span >{{ i18n "pages.inbounds.expireDate" }}</span> <a-tooltip> @@ -82,6 +85,8 @@ </table> </a-collapse-panel> </a-collapse> +</a-form> +<a-form layout="inline"> <a-form-item label='{{ i18n "encryption" }}'> <a-select v-model="inbound.settings.method" style="width: 250px;" :dropdown-class-name="siderDrawer.isDarkTheme ? 'ant-card-dark' : ''"> <a-select-option v-for="method in SSMethods" :value="method">[[ method ]]</a-select-option> @@ -97,4 +102,5 @@ <a-select-option value="udp">UDP</a-select-option> </a-select> </a-form-item> +</a-form> {{end}}
\ No newline at end of file diff --git a/web/html/xui/form/protocol/trojan.html b/web/html/xui/form/protocol/trojan.html index cee59c34..9c392926 100644 --- a/web/html/xui/form/protocol/trojan.html +++ b/web/html/xui/form/protocol/trojan.html @@ -1,92 +1,96 @@ {{define "form/trojan"}} -<a-form layout="inline"> -<a-collapse activeKey="0" v-for="(client, index) in inbound.settings.trojans.slice(0,1)" v-if="!isEdit"> - <a-collapse-panel header='{{ i18n "pages.inbounds.client" }}'> - <a-form-item> - <span slot="label"> - <span>{{ i18n "pages.inbounds.Email" }}</span> - <a-tooltip> - <template slot="title"> - <span>{{ i18n "pages.inbounds.EmailDesc" }}</span> - </template> - <a-icon type="sync" @click="getNewEmail(client)"></a-icon> - </a-tooltip> - </span> - <a-input v-model.trim="client.email" style="width: 150px;"></a-input> - </a-form-item> - <a-form-item label="Password"> - <a-input v-model.trim="client.password" style="width: 150px;"></a-input> - </a-form-item> - <a-form-item label="Subscription" v-if="client.email"> - <a-input v-model.trim="client.subId"></a-input> - </a-form-item> - <a-form-item label="Telegram Username" v-if="client.email"> - <a-input v-model.trim="client.tgId"></a-input> - </a-form-item> - <a-form-item> - <span slot="label"> - <span>{{ i18n "pages.inbounds.IPLimit" }}</span> - <a-tooltip> - <template slot="title"> - <span>{{ i18n "pages.inbounds.IPLimitDesc" }}</span> - </template> - <a-icon type="question-circle" theme="filled"></a-icon> - </a-tooltip> - </span> - <a-input-number v-model="client.limitIp" min="0" style="width: 70px;"></a-input-number> - </a-form-item> - <a-form-item v-if="inbound.xtls" label="Flow"> - <a-select v-model="client.flow" style="width: 150px" :dropdown-class-name="siderDrawer.isDarkTheme ? 'ant-card-dark' : ''"> - <a-select-option value="">{{ i18n "none" }}</a-select-option> - <a-select-option v-for="key in XTLS_FLOW_CONTROL" :value="key">[[ key ]]</a-select-option> - </a-select> - </a-form-item> - <a-form-item> - <span slot="label"> - <span >{{ i18n "pages.inbounds.totalFlow" }}</span> (GB) - <a-tooltip> - <template slot="title"> - 0 <span>{{ i18n "pages.inbounds.meansNoLimit" }}</span> - </template> - <a-icon type="question-circle" theme="filled"></a-icon> - </a-tooltip> - </span> - <a-input-number v-model="client._totalGB" :min="0"></a-input-number> - </a-form-item> - <a-form-item label='{{ i18n "pages.client.delayedStart" }}'> - <a-switch v-model="delayedStart" @click="client._expiryTime=0"></a-switch> - </a-form-item> - <a-form-item v-if="delayedStart" label='{{ i18n "pages.client.expireDays" }}'> - <a-input-number v-model.number="delayedExpireDays" :min="0"></a-input-number> - </a-form-item> - <a-form-item> - <span slot="label"> - <span >{{ i18n "pages.inbounds.expireDate" }}</span> - <a-tooltip> - <template slot="title"> - <span>{{ i18n "pages.inbounds.leaveBlankToNeverExpire" }}</span> - </template> - <a-icon type="question-circle" theme="filled"></a-icon> - </a-tooltip> - </span> - <a-date-picker :show-time="{ format: 'HH:mm:ss' }" format="YYYY-MM-DD HH:mm:ss" - :dropdown-class-name="siderDrawer.isDarkTheme ? 'ant-card-dark' : ''" - v-model="client._expiryTime" style="width: 170px;"></a-date-picker> - </a-form-item> - </a-collapse-panel> -</a-collapse> -<a-collapse v-else> - <a-collapse-panel :header="'{{ i18n "pages.client.clientCount"}} : ' + inbound.settings.trojans.length"> - <table width="100%"> - <tr class="client-table-header"> - <th v-for="col in Object.keys(inbound.settings.trojans[0]).slice(0, 3)">[[ col ]]</th> - </tr> - <tr v-for="(client, index) in inbound.settings.trojans" :class="index % 2 == 1 ? 'client-table-odd-row' : ''"> - <td v-for="col in Object.values(client).slice(0, 3)">[[ col ]]</td> - </tr> - </table> - </a-collapse-panel> -</a-collapse> +<a-form layout="inline" style="padding: 10px 0px;"> + <a-collapse activeKey="0" v-for="(client, index) in inbound.settings.trojans.slice(0,1)" v-if="!isEdit"> + <a-collapse-panel header='{{ i18n "pages.inbounds.client" }}'> + <a-form-item> + <span slot="label"> + <span>{{ i18n "pages.inbounds.Email" }}</span> + <a-tooltip> + <template slot="title"> + <span>{{ i18n "pages.inbounds.EmailDesc" }}</span> + </template> + <a-icon type="sync" @click="getNewEmail(client)"></a-icon> + </a-tooltip> + </span> + <a-input v-model.trim="client.email" style="width: 150px;"></a-input> + </a-form-item> + <a-form-item label="Password"> + <a-input v-model.trim="client.password" style="width: 150px;"></a-input> + </a-form-item> + <a-form-item label="Subscription" v-if="client.email"> + <a-input v-model.trim="client.subId"></a-input> + </a-form-item> + <a-form-item label="Telegram Username" v-if="client.email"> + <a-input v-model.trim="client.tgId"></a-input> + </a-form-item> + <a-form-item> + <span slot="label"> + <span>{{ i18n "pages.inbounds.IPLimit" }}</span> + <a-tooltip> + <template slot="title"> + <span>{{ i18n "pages.inbounds.IPLimitDesc" }}</span> + </template> + <a-icon type="question-circle" theme="filled"></a-icon> + </a-tooltip> + </span> + <a-input-number v-model="client.limitIp" min="0"></a-input-number> + </a-form-item> + <br> + <a-form-item v-if="inbound.xtls" label="Flow"> + <a-select v-model="client.flow" style="width: 150px" :dropdown-class-name="siderDrawer.isDarkTheme ? 'ant-card-dark' : ''"> + <a-select-option value="">{{ i18n "none" }}</a-select-option> + <a-select-option v-for="key in XTLS_FLOW_CONTROL" :value="key">[[ key ]]</a-select-option> + </a-select> + </a-form-item> + <a-form-item> + <span slot="label"> + <span >{{ i18n "pages.inbounds.totalFlow" }}</span> (GB) + <a-tooltip> + <template slot="title"> + 0 <span>{{ i18n "pages.inbounds.meansNoLimit" }}</span> + </template> + <a-icon type="question-circle" theme="filled"></a-icon> + </a-tooltip> + </span> + <a-input-number v-model="client._totalGB" :min="0"></a-input-number> + </a-form-item> + <br> + <a-form-item label='{{ i18n "pages.client.delayedStart" }}'> + <a-switch v-model="delayedStart" @click="client._expiryTime=0"></a-switch> + </a-form-item> + <br> + <a-form-item v-if="delayedStart" label='{{ i18n "pages.client.expireDays" }}'> + <a-input-number v-model.number="delayedExpireDays" :min="0"></a-input-number> + </a-form-item> + <a-form-item v-else> + <span slot="label"> + <span >{{ i18n "pages.inbounds.expireDate" }}</span> + <a-tooltip> + <template slot="title"> + <span>{{ i18n "pages.inbounds.leaveBlankToNeverExpire" }}</span> + </template> + <a-icon type="question-circle" theme="filled"></a-icon> + </a-tooltip> + </span> + <a-date-picker :show-time="{ format: 'HH:mm:ss' }" format="YYYY-MM-DD HH:mm:ss" + :dropdown-class-name="siderDrawer.isDarkTheme ? 'ant-card-dark' : ''" + v-model="client._expiryTime" style="width: 170px;"></a-date-picker> + </a-form-item> + </a-collapse-panel> + </a-collapse> + <a-collapse v-else> + <a-collapse-panel :header="'{{ i18n "pages.client.clientCount"}} : ' + inbound.settings.trojans.length"> + <table width="100%"> + <tr class="client-table-header"> + <th v-for="col in Object.keys(inbound.settings.trojans[0]).slice(0, 3)">[[ col ]]</th> + </tr> + <tr v-for="(client, index) in inbound.settings.trojans" :class="index % 2 == 1 ? 'client-table-odd-row' : ''"> + <td v-for="col in Object.values(client).slice(0, 3)">[[ col ]]</td> + </tr> + </table> + </a-collapse-panel> + </a-collapse> +</a-form> <template v-if="inbound.isTcp"> <a-form layout="inline"> <a-form-item label="Fallbacks"> diff --git a/web/html/xui/form/protocol/vless.html b/web/html/xui/form/protocol/vless.html index c25ff574..c9547ae9 100644 --- a/web/html/xui/form/protocol/vless.html +++ b/web/html/xui/form/protocol/vless.html @@ -1,98 +1,102 @@ {{define "form/vless"}} -<a-form layout="inline"> -<a-collapse activeKey="0" v-for="(client, index) in inbound.settings.vlesses.slice(0,1)" v-if="!isEdit"> - <a-collapse-panel header='{{ i18n "pages.inbounds.client" }}'> - <a-form-item> - <span slot="label"> - <span>{{ i18n "pages.inbounds.Email" }}</span> - <a-tooltip> - <template slot="title"> - <span>{{ i18n "pages.inbounds.EmailDesc" }}</span> - </template> - <a-icon type="sync" @click="getNewEmail(client)"></a-icon> - </a-tooltip> - </span> - <a-input v-model.trim="client.email" style="width: 150px;"></a-input> - </a-form-item> - <a-form-item label="ID"> - <a-input v-model.trim="client.id" style="width: 300px;"></a-input> - </a-form-item> - <a-form-item label="Subscription" v-if="client.email"> - <a-input v-model.trim="client.subId"></a-input> - </a-form-item> - <a-form-item label="Telegram Username" v-if="client.email"> - <a-input v-model.trim="client.tgId"></a-input> - </a-form-item> - <a-form-item> - <span slot="label"> - <span>{{ i18n "pages.inbounds.IPLimit" }}</span> - <a-tooltip> - <template slot="title"> - <span>{{ i18n "pages.inbounds.IPLimitDesc" }}</span> - </template> - <a-icon type="question-circle" theme="filled"></a-icon> - </a-tooltip> - </span> - <a-input-number v-model="client.limitIp" min="0" style="width: 70px;"></a-input-number> - </a-form-item> - <a-form-item v-if="inbound.xtls" label="Flow"> - <a-select v-model="inbound.settings.vlesses[index].flow" style="width: 200px" :dropdown-class-name="siderDrawer.isDarkTheme ? 'ant-card-dark' : ''"> - <a-select-option value="" selected>{{ i18n "none" }}</a-select-option> - <a-select-option v-for="key in XTLS_FLOW_CONTROL" :value="key">[[ key ]]</a-select-option> - </a-select> - </a-form-item> - <a-form-item v-else-if="inbound.canEnableTlsFlow()" label="Flow" layout="inline"> - <a-select v-model="inbound.settings.vlesses[index].flow" style="width: 200px" :dropdown-class-name="siderDrawer.isDarkTheme ? 'ant-card-dark' : ''"> - <a-select-option value="" selected>{{ i18n "none" }}</a-select-option> - <a-select-option v-for="key in TLS_FLOW_CONTROL" :value="key">[[ key ]]</a-select-option> - </a-select> - </a-form-item> - <a-form-item> - <span slot="label"> - <span >{{ i18n "pages.inbounds.totalFlow" }}</span> (GB) - <a-tooltip> - <template slot="title"> - 0 <span>{{ i18n "pages.inbounds.meansNoLimit" }}</span> - </template> - <a-icon type="question-circle" theme="filled"></a-icon> - </a-tooltip> - </span> - <a-input-number v-model="client._totalGB" :min="0"></a-input-number> - </a-form-item> - <a-form-item label='{{ i18n "pages.client.delayedStart" }}'> - <a-switch v-model="delayedStart" @click="client._expiryTime=0"></a-switch> - </a-form-item> - <a-form-item v-if="delayedStart" label='{{ i18n "pages.client.expireDays" }}'> - <a-input-number v-model.number="delayedExpireDays" :min="0"></a-input-number> - </a-form-item> - <a-form-item> - <span slot="label"> - <span >{{ i18n "pages.inbounds.expireDate" }}</span> - <a-tooltip> - <template slot="title"> - <span>{{ i18n "pages.inbounds.leaveBlankToNeverExpire" }}</span> - </template> - <a-icon type="question-circle" theme="filled"></a-icon> - </a-tooltip> - </span> - <a-date-picker :show-time="{ format: 'HH:mm:ss' }" format="YYYY-MM-DD HH:mm:ss" - :dropdown-class-name="siderDrawer.isDarkTheme ? 'ant-card-dark' : ''" - v-model="client._expiryTime" style="width: 170px;"></a-date-picker> - </a-form-item> - </a-collapse-panel> -</a-collapse> -<a-collapse v-else> - <a-collapse-panel :header="'{{ i18n "pages.client.clientCount"}} : ' + inbound.settings.vlesses.length"> - <table width="100%"> - <tr class="client-table-header"> - <th v-for="col in Object.keys(inbound.settings.vlesses[0]).slice(0, 3)">[[ col ]]</th> - </tr> - <tr v-for="(client, index) in inbound.settings.vlesses" :class="index % 2 == 1 ? 'client-table-odd-row' : ''"> - <td v-for="col in Object.values(client).slice(0, 3)">[[ col ]]</td> - </tr> - </table> - </a-collapse-panel> -</a-collapse> +<a-form layout="inline" style="padding: 10px 0px;"> + <a-collapse activeKey="0" v-for="(client, index) in inbound.settings.vlesses.slice(0,1)" v-if="!isEdit"> + <a-collapse-panel header='{{ i18n "pages.inbounds.client" }}'> + <a-form-item> + <span slot="label"> + <span>{{ i18n "pages.inbounds.Email" }}</span> + <a-tooltip> + <template slot="title"> + <span>{{ i18n "pages.inbounds.EmailDesc" }}</span> + </template> + <a-icon type="sync" @click="getNewEmail(client)"></a-icon> + </a-tooltip> + </span> + <a-input v-model.trim="client.email" style="width: 150px;"></a-input> + </a-form-item> + <a-form-item label="ID"> + <a-input v-model.trim="client.id" style="width: 300px;"></a-input> + </a-form-item> + <a-form-item label="Subscription" v-if="client.email"> + <a-input v-model.trim="client.subId"></a-input> + </a-form-item> + <a-form-item label="Telegram Username" v-if="client.email"> + <a-input v-model.trim="client.tgId"></a-input> + </a-form-item> + <a-form-item> + <span slot="label"> + <span>{{ i18n "pages.inbounds.IPLimit" }}</span> + <a-tooltip> + <template slot="title"> + <span>{{ i18n "pages.inbounds.IPLimitDesc" }}</span> + </template> + <a-icon type="question-circle" theme="filled"></a-icon> + </a-tooltip> + </span> + <a-input-number v-model="client.limitIp" min="0"></a-input-number> + </a-form-item> + <br> + <a-form-item v-if="inbound.xtls" label="Flow"> + <a-select v-model="inbound.settings.vlesses[index].flow" style="width: 200px" :dropdown-class-name="siderDrawer.isDarkTheme ? 'ant-card-dark' : ''"> + <a-select-option value="" selected>{{ i18n "none" }}</a-select-option> + <a-select-option v-for="key in XTLS_FLOW_CONTROL" :value="key">[[ key ]]</a-select-option> + </a-select> + </a-form-item> + <a-form-item v-else-if="inbound.canEnableTlsFlow()" label="Flow"> + <a-select v-model="inbound.settings.vlesses[index].flow" style="width: 200px" :dropdown-class-name="siderDrawer.isDarkTheme ? 'ant-card-dark' : ''"> + <a-select-option value="" selected>{{ i18n "none" }}</a-select-option> + <a-select-option v-for="key in TLS_FLOW_CONTROL" :value="key">[[ key ]]</a-select-option> + </a-select> + </a-form-item> + <a-form-item> + <span slot="label"> + <span >{{ i18n "pages.inbounds.totalFlow" }}</span> (GB) + <a-tooltip> + <template slot="title"> + 0 <span>{{ i18n "pages.inbounds.meansNoLimit" }}</span> + </template> + <a-icon type="question-circle" theme="filled"></a-icon> + </a-tooltip> + </span> + <a-input-number v-model="client._totalGB" :min="0"></a-input-number> + </a-form-item> + <br> + <a-form-item label='{{ i18n "pages.client.delayedStart" }}'> + <a-switch v-model="delayedStart" @click="client._expiryTime=0"></a-switch> + </a-form-item> + <br> + <a-form-item v-if="delayedStart" label='{{ i18n "pages.client.expireDays" }}'> + <a-input-number v-model.number="delayedExpireDays" :min="0"></a-input-number> + </a-form-item> + <a-form-item v-else> + <span slot="label"> + <span >{{ i18n "pages.inbounds.expireDate" }}</span> + <a-tooltip> + <template slot="title"> + <span>{{ i18n "pages.inbounds.leaveBlankToNeverExpire" }}</span> + </template> + <a-icon type="question-circle" theme="filled"></a-icon> + </a-tooltip> + </span> + <a-date-picker :show-time="{ format: 'HH:mm:ss' }" format="YYYY-MM-DD HH:mm:ss" + :dropdown-class-name="siderDrawer.isDarkTheme ? 'ant-card-dark' : ''" + v-model="client._expiryTime" style="width: 170px;"></a-date-picker> + </a-form-item> + </a-collapse-panel> + </a-collapse> + <a-collapse v-else> + <a-collapse-panel :header="'{{ i18n "pages.client.clientCount"}} : ' + inbound.settings.vlesses.length"> + <table width="100%"> + <tr class="client-table-header"> + <th v-for="col in Object.keys(inbound.settings.vlesses[0]).slice(0, 3)">[[ col ]]</th> + </tr> + <tr v-for="(client, index) in inbound.settings.vlesses" :class="index % 2 == 1 ? 'client-table-odd-row' : ''"> + <td v-for="col in Object.values(client).slice(0, 3)">[[ col ]]</td> + </tr> + </table> + </a-collapse-panel> + </a-collapse> +</a-form> <template v-if="inbound.isTcp"> <a-form layout="inline"> <a-form-item label="Fallbacks"> diff --git a/web/html/xui/form/protocol/vmess.html b/web/html/xui/form/protocol/vmess.html index f06ecedf..0591d3d6 100644 --- a/web/html/xui/form/protocol/vmess.html +++ b/web/html/xui/form/protocol/vmess.html @@ -1,89 +1,94 @@ {{define "form/vmess"}} -<a-form layout="inline"> -<a-collapse activeKey="0" v-for="(client, index) in inbound.settings.vmesses.slice(0,1)" v-if="!isEdit"> - <a-collapse-panel header='{{ i18n "pages.inbounds.client" }}'> - <a-form-item> - <span slot="label"> - <span>{{ i18n "pages.inbounds.Email" }}</span> - <a-tooltip> - <template slot="title"> - <span>{{ i18n "pages.inbounds.EmailDesc" }}</span> - </template> - <a-icon type="sync" @click="getNewEmail(client)"></a-icon> - </a-tooltip> - </span> - <a-input v-model.trim="client.email" style="width: 150px;"></a-input> - </a-form-item> - <a-form-item label='{{ i18n "additional" }} ID'> - <a-input-number v-model="client.alterId" style="width: 70px;"></a-input-number> - </a-form-item> - <a-form-item label="ID"> - <a-input v-model.trim="client.id" style="width: 300px;"></a-input> - </a-form-item> - <a-form-item label="Subscription" v-if="client.email"> - <a-input v-model.trim="client.subId"></a-input> - </a-form-item> - <a-form-item label="Telegram Username" v-if="client.email"> - <a-input v-model.trim="client.tgId"></a-input> - </a-form-item> - <a-form-item> - <span slot="label"> - <span>{{ i18n "pages.inbounds.IPLimit" }}</span> - <a-tooltip> - <template slot="title"> - <span>{{ i18n "pages.inbounds.IPLimitDesc" }}</span> - </template> - <a-icon type="question-circle" theme="filled"></a-icon> - </a-tooltip> - </span> - <a-input-number v-model="client.limitIp" min="0" style="width: 70px;"></a-input-number> - </a-form-item> - <a-form-item> - <span slot="label"> - <span >{{ i18n "pages.inbounds.totalFlow" }}</span> (GB) - <a-tooltip> - <template slot="title"> - 0 <span>{{ i18n "pages.inbounds.meansNoLimit" }}</span> - </template> - <a-icon type="question-circle" theme="filled"></a-icon> - </a-tooltip> - </span> - <a-input-number v-model="client._totalGB" :min="0"></a-input-number> - </a-form-item> - <a-form-item label='{{ i18n "pages.client.delayedStart" }}'> - <a-switch v-model="delayedSta
|
