| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 | 
							- {{define "reverseModal"}}
 
- <a-modal id="reverse-modal" v-model="reverseModal.visible" :title="reverseModal.title" @ok="reverseModal.ok"
 
-          :confirm-loading="reverseModal.confirmLoading" :closable="true" :mask-closable="false"
 
-          :ok-text="reverseModal.okText" cancel-text='{{ i18n "close" }}' :class="themeSwitcher.currentTheme">
 
-     <a-form :colon="false" :label-col="{ md: {span:8} }" :wrapper-col="{ md: {span:14} }">
 
-         <a-form-item label='{{ i18n "pages.xray.outbound.type" }}'>
 
-             <a-select v-model="reverseModal.reverse.type" :dropdown-class-name="themeSwitcher.currentTheme">
 
-                 <a-select-option v-for="x,y in reverseTypes" :value="y">[[ x ]]</a-select-option>
 
-             </a-select>
 
-         </a-form-item>
 
-         <a-form-item label='{{ i18n "pages.xray.outbound.tag" }}'>
 
-             <a-input v-model.trim="reverseModal.reverse.tag"></a-input>
 
-         </a-form-item>
 
-         <a-form-item label='{{ i18n "pages.xray.outbound.domain" }}'>
 
-             <a-input v-model.trim="reverseModal.reverse.domain"></a-input>
 
-         </a-form-item>
 
-         <template v-if="reverseModal.reverse.type=='bridge'">
 
-         <a-form-item label='{{ i18n "pages.xray.outbound.intercon" }}'>
 
-             <a-select v-model="reverseModal.rules[0].outboundTag" :dropdown-class-name="themeSwitcher.currentTheme">
 
-                 <a-select-option v-for="x in reverseModal.outboundTags" :value="x">[[ x ]]</a-select-option>
 
-             </a-select>
 
-         </a-form-item>
 
-         <a-form-item label='{{ i18n "pages.xray.rules.outbound" }}'>
 
-             <a-select v-model="reverseModal.rules[1].outboundTag" :dropdown-class-name="themeSwitcher.currentTheme">
 
-                 <a-select-option v-for="x in reverseModal.outboundTags" :value="x">[[ x ]]</a-select-option>
 
-             </a-select>
 
-         </a-form-item>
 
-         </template>
 
-         <template v-else>
 
-             <a-form-item label='{{ i18n "pages.xray.outbound.intercon" }}'>
 
-                 <a-checkbox-group
 
-                     v-model="reverseModal.rules[0].inboundTag"
 
-                     :options="reverseModal.inboundTags"></a-checkbox-group>
 
-             </a-form-item>
 
-             <a-form-item label='{{ i18n "pages.xray.rules.inbound" }}'>
 
-                 <a-checkbox-group
 
-                     v-model="reverseModal.rules[1].inboundTag"
 
-                     :options="reverseModal.inboundTags"></a-checkbox-group>
 
-             </a-form-item>
 
-         </template>
 
-     </table>
 
-     </a-form>
 
- </a-modal>
 
- <script>
 
-     const reverseModal = {
 
-         title: '',
 
-         visible: false,
 
-         confirmLoading: false,
 
-         okText: '{{ i18n "sure" }}',
 
-         isEdit: false,
 
-         confirm: null,
 
-         reverse: {
 
-             tag: "",
 
-             type: "",
 
-             domain: ""
 
-         },
 
-         rules: [
 
-             { outboundTag: '', inboundTag: []},
 
-             { outboundTag: '', inboundTag: []}
 
-         ],
 
-         inboundTags: [],
 
-         outboundTags: [],
 
-         ok() {
 
-             reverseModal.rules[0].domain = ["full:" + reverseModal.reverse.domain];
 
-             reverseModal.rules[0].type = 'field';
 
-             reverseModal.rules[1].type = 'field';
 
-             if(reverseModal.reverse.type == 'bridge'){
 
-                 reverseModal.rules[0].inboundTag = [reverseModal.reverse.tag];
 
-                 reverseModal.rules[1].inboundTag = [reverseModal.reverse.tag];
 
-             } else {
 
-                 reverseModal.rules[0].outboundTag = reverseModal.reverse.tag;
 
-                 reverseModal.rules[1].outboundTag = reverseModal.reverse.tag;
 
-             }
 
-             ObjectUtil.execute(reverseModal.confirm, reverseModal.reverse, reverseModal.rules);
 
-         },
 
-         show({ title='', okText='{{ i18n "sure" }}', reverse, rules, confirm=(reverse, rules)=>{}, isEdit=false  }) {
 
-             this.title = title;
 
-             this.okText = okText;
 
-             this.confirm = confirm;
 
-             this.visible = true;
 
-             if(isEdit) {
 
-                 this.reverse = {
 
-                     tag: reverse.tag,
 
-                     type: reverse.type,
 
-                     domain: reverse.domain,
 
-                 };
 
-                     reverse;
 
-                 rules0 = rules.filter(r => r.domain != null);
 
-                 if(rules0.length == 0) rules0 = [{ outboundTag: '', domain: ["full:" + this.reverse.domain], inboundTag: []}];
 
-                 rules1 = rules.filter(r => r.domain == null);
 
-                 if(rules1.length == 0) rules1 = [{ outboundTag: '', inboundTag: []}];
 
-                 this.rules = [];
 
-                 this.rules.push({
 
-                     domain: rules0[0].domain,
 
-                     outboundTag: rules0[0].outboundTag,
 
-                     inboundTag: rules0.map(r => r.inboundTag).flat()
 
-                 });
 
-                 this.rules.push({
 
-                     outboundTag: rules1[0].outboundTag,
 
-                     inboundTag: rules1.map(r => r.inboundTag).flat()
 
-                 });
 
-             } else {
 
-                 this.reverse = {
 
-                     tag: "reverse-" + app.reverseData.length,
 
-                     type: "bridge",
 
-                     domain: "reverse.xui"
 
-                 }
 
-                 this.rules = [
 
-                     { outboundTag: '', inboundTag: []},
 
-                     { outboundTag: '', inboundTag: []}
 
-                 ]
 
-             }
 
-             this.isEdit = isEdit;
 
-             this.inboundTags = app.templateSettings.inbounds.filter((i) => !ObjectUtil.isEmpty(i.tag)).map(obj => obj.tag);
 
-             this.inboundTags.push(...app.inboundTags);
 
-             this.outboundTags = app.templateSettings.outbounds.filter((o) => !ObjectUtil.isEmpty(o.tag)).map(obj => obj.tag);
 
-         },
 
-         close() {
 
-             reverseModal.visible = false;
 
-             reverseModal.loading(false);
 
-         },
 
-         loading(loading=true) {
 
-             reverseModal.confirmLoading = loading;
 
-         },
 
-     };
 
-     new Vue({
 
-         delimiters: ['[[', ']]'],
 
-         el: '#reverse-modal',
 
-         data: {
 
-             reverseModal: reverseModal,
 
-             reverseTypes: { bridge: '{{ i18n "pages.xray.outbound.bridge" }}', portal:'{{ i18n "pages.xray.outbound.portal" }}'},
 
-         },
 
-     });
 
- </script>
 
- {{end}}
 
 
  |