7777 </div >
7878 </div >
7979
80- <OpDialog ref =" opRef" @search =" search" />
80+ <OpDialog ref =" opRef" @search =" search" @submit =" onSubmitDelete()" >
81+ <template #content >
82+ <el-form class =" mt-4 mb-1" ref =" deleteForm" label-position =" left" >
83+ <el-form-item >
84+ <el-checkbox v-model =" forceDelete" :label =" $t('website.forceDelete')" />
85+ <span class =" input-help" >
86+ {{ $t('website.forceDeleteHelper') }}
87+ </span >
88+ </el-form-item >
89+ </el-form >
90+ </template >
91+ </OpDialog >
8192 <OperateDialog @search =" search" ref =" dialogRef" />
8293 </div >
8394</template >
@@ -91,6 +102,7 @@ import { operateForwardRule, searchFireRule } from '@/api/modules/host';
91102import { Host } from ' @/api/interface/host' ;
92103import i18n from ' @/lang' ;
93104import { GlobalStore } from ' @/store' ;
105+ import { MsgSuccess } from ' @/utils/message' ;
94106
95107const globalStore = GlobalStore ();
96108
@@ -107,6 +119,8 @@ const fireName = ref();
107119const fireStatusRef = ref ();
108120
109121const opRef = ref ();
122+ const forceDelete = ref (false );
123+ const operateRules = ref ();
110124
111125const data = ref ();
112126const paginationConfig = reactive ({
@@ -180,18 +194,32 @@ const onDelete = async (row: Host.RuleForward | null) => {
180194 });
181195 }
182196 }
197+ operateRules .value = rules ;
183198 opRef .value .acceptParams ({
184199 title: i18n .global .t (' commons.button.delete' ),
185200 names: names ,
186201 msg: i18n .global .t (' commons.msg.operatorHelper' , [
187202 i18n .global .t (' firewall.forwardRule' ),
188203 i18n .global .t (' commons.button.delete' ),
189204 ]),
190- api: operateForwardRule ,
191- params: { rules: rules } ,
205+ api: null ,
206+ params: null ,
192207 });
193208};
194209
210+ const onSubmitDelete = async () => {
211+ loading .value = true ;
212+ await operateForwardRule ({ rules: operateRules .value , forceDelete: forceDelete .value })
213+ .then (() => {
214+ loading .value = false ;
215+ MsgSuccess (i18n .global .t (' commons.msg.deleteSuccess' ));
216+ search ();
217+ })
218+ .catch (() => {
219+ loading .value = false ;
220+ });
221+ };
222+
195223const buttons = [
196224 {
197225 label: i18n .global .t (' commons.button.edit' ),
@@ -208,6 +236,7 @@ const buttons = [
208236];
209237
210238onMounted (() => {
239+ forceDelete .value = false ;
211240 if (fireName .value !== ' -' ) {
212241 loading .value = true ;
213242 fireStatusRef .value .acceptParams ();
0 commit comments