���Root Mod By V1rus_Alfa
User / IP
:
216.73.217.78
Host / Server
:
195.214.235.115 / npln.ir
System
:
Linux damavand.pws-dns.net 5.14.0-503.35.1.el9_5.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Apr 4 05:23:43 EDT 2025 x86_64
Command
|
Upload
|
Mass Deface
|
Create
:
/
home2
/
cutunixc
/
.trash
/
pages.1
/
analyze
/
Viewing: list.vue
<template> <div v-if="loading" class="flex items-center justify-center"> <SharedLoading/> </div> <div v-else> <section class=" pt-1 mt-1 mb-10 relative" v-if="fetchedData.list.length > 0"> <ul> <li class=" w-full border-b-2 odd:bg-gray-100 p-2 " v-for="row in chunkedData[computedPageCount - 1]" :key="row.id"> <section :dir="locale == 'en' ? 'ltr' : 'rtl'" class=" px-2 cursor-pointer flex justify-between items-center"> <div class=" flex justify-start items-center"> <div @click="toggleCollapse(row.id)" class="h-20 w-20 "> <img :src="row.unit?.image_3_d && row.unit.image_3_d ? config.public.FILE_URL+row.unit.image_3_d.address : '/apple-touch-icon.png'" class="w-32 border h-full mx-auto" alt="کات یونیکس | وب اپلیکیشن آنالیز یونیت"> </div> <label :class="locale == 'en' ? 'ml-2 text-left' : 'mr-2 text-right'" @click="toggleCollapse(row.id)" class=" block pb-2 w-[10rem] truncate text-main-700 cursor-pointer text-sm "> {{ locale == 'en' ? row.unit.title_en : row.unit.title }} </label> </div> <div class="flex justify-end items-center pb-2"> <ULink square :to="row.unit_id ? localePath('/unit/edit/'+row.id) : localePath('/unit/make/update/'+row.id)" class=" flex items-center !text-red-600 !shadow-none justify-center"> <UIcon name="i-heroicons-pencil-square" class="text-main-700 cursor-pointer ml-5 text-xl"/> </ULink> <ULink square :to="localePath('/unit/settings/'+row.id)" class=" flex items-center !text-red-600 !shadow-none justify-center"> <UIcon name="i-heroicons-cog-6-tooth" class="text-green-600 cursor-pointer ml-4 text-xl "/> </ULink> <UButton square :loading="spinnerLoading" @click.stop.prevent="toggleDeleteListItemDialog(row.id)" class=" flex items-center !text-red-600 !shadow-none justify-center bg-transparent hover:bg-transparent"> <UIcon name="i-heroicons-trash" class="text-red-600 cursor-pointer ml-2 text-xl"/> </UButton> <UIcon @click="toggleCollapse(row.id)" :id="'header_collapse_'+row.id" name="i-heroicons-chevron-down-20-solid" :class="locale == 'en' ? '-rotate-90' : 'rotate-90'" class="text-gray-500 transition-all text-2xl"/> </div> </section> <section :id="'body_collapse_'+row.id" class=" hidden border-t transition-all mt-2"> <table class="w-full p-0" v-if="row.attach" dir="ltr"> <!--:dir="locale == 'en' ? 'ltr' : 'rtl'"--> <thead> <tr class="bg-gray-300 text-[13px] text-center text-nowrap"> <th class="max-w-[15px]"> {{ t('length') }} </th> <th> </th> <th> {{ t('width') }} </th> <th> </th> <th> {{ t('count') }} </th> <th> {{ t('material') }} </th> <th> {{ t('length_1') }} </th> <th> {{ t('length_2') }} </th> <th> {{ t('width_1') }} </th> <th> {{ t('width_2') }} </th> <th> {{ t('unit_title') }} </th> <th> {{ t('edit') }} </th> <th> {{ t('delete') }} </th> </tr> </thead> <tbody> <tr :key="key" v-for="(slice, key) in row.attach" class="even:bg-gray-100 text-[11px] text-gray-500"> <td class="text-center !max-w-[15px]"> {{ slice.length }} </td> <td class="text-center"> <UIcon name="i-heroicons-x-mark" class="text-[11px]"/> </td> <td class="text-center"> {{ slice.width }} </td> <td class="text-center"> = </td> <td class="text-center"> {{ slice.count }} </td> <td class="text-center"> {{ slice.material ? locale == 'en' ? slice.material.title_en : slice.material.title : '---' }} </td> <td class="text-center"> {{ slice.length_one == '1' ? 'N' : slice.length_one == '2' ? 'F' : slice.length_one == '3' ? 'SH' : '-' }} </td> <td class="text-center"> {{ slice.length_two == '1' ? 'N' : slice.length_two == '2' ? 'F' : slice.length_two == '3' ? 'SH' : '-' }} </td> <td class="text-center"> {{ slice.width_one == '1' ? 'N' : slice.width_one == '2' ? 'F' : slice.width_one == '3' ? 'SH' : '-' }} </td> <td class="text-center"> {{ slice.width_two == '1' ? 'N' : slice.width_two == '2' ? 'F' : slice.width_two == '3' ? 'SH' : '-' }} </td> <td class="text-center"> <template v-if="(slice.label_en || slice.label)"> {{ locale == 'en' ? slice.label_en : slice.label }} </template> <template v-else> {{ t('Custom Slice') }} </template> </td> <td class="text-center"> <UIcon @click="toggleModal(slice)" name="i-heroicons-pencil-square" class="cursor-pointer text-green-600 text-sm"/> </td> <td class="text-center"> <UButton square :loading="spinnerLoading" @click.stop.prevent="toggleDeleteListItemSliceDialog(slice.id)" class="!text-red-600 !shadow-none bg-transparent hover:bg-transparent"> <UIcon name="i-heroicons-trash" class="text-red-600 cursor-pointer text-sm"/> </UButton> </td> </tr> </tbody> </table> <!-- <div :dir="locale == 'en' ? 'ltr' : 'rtl'"--> <!-- class="w-full border-b h-7 flex justify-between items-center" v-for="slice in row.attach">--> <!-- <div class=" cursor-pointer w-[7%] h-full flex justify-center items-center border-l">--> <!-- <ULink--> <!-- square--> <!-- @click.stop.prevent="deleteListItem([slice.id],'attach')"--> <!-- class=" flex items-center !text-red-600 !shadow-none justify-center">--> <!-- <UIcon name="i-heroicons-trash" class="text-red-600 cursor-pointer text-sm"/>--> <!-- </ULink>--> <!-- </div>--> <!-- <div class=" cursor-pointer w-[7%] h-full flex justify-center items-center border-l">--> <!-- <UIcon @click="toggleModal(slice)" name="i-heroicons-pencil-square" class="text-green-600 text-sm"/>--> <!-- </div>--> <!-- <div class=" w-[22%] h-full flex justify-start items-center border-l">--> <!-- <template v-if="(slice.label_en || slice.label)">--> <!-- <span :class="locale == 'en' ? 'ml-2 text-left' : 'mr-2 text-right'"--> <!-- v-text="locale == 'en' ? slice.label_en : slice.label "--> <!-- class=" text-gray-500 pr-1 text-[.55rem] ">--> <!-- </span>--> <!-- </template>--> <!-- <template v-else>--> <!-- <span :class="locale == 'en' ? 'ml-2 text-left' : 'mr-2 text-right'"--> <!-- v-text=" t('Custom Slice')" class=" text-gray-500 pr-1 text-[.55rem] ">--> <!-- </span>--> <!-- </template>--> <!-- </div>--> <!-- <div class=" w-[7%] flex justify-center items-center h-full border-l">--> <!-- <span class=" text-gray-500 text-[.55rem] "--> <!-- v-text="slice.width_one == '1' ? 'N' : slice.width_one == '2' ? 'F' : slice.width_one == '3' ? 'SH' : '-'"></span>--> <!-- </div>--> <!-- <div class=" w-[7%] flex justify-center items-center h-full border-l">--> <!-- <span class=" text-gray-500 text-[.55rem] "--> <!-- v-text="slice.width_two == '1' ? 'N' : slice.width_two == '2' ? 'F' : slice.width_two == '3' ? 'SH' : '-'"></span>--> <!-- </div>--> <!-- <div class=" w-[7%] flex justify-center items-center h-full border-l">--> <!-- <span class=" text-gray-500 text-[.55rem] "--> <!-- v-text="slice.length_one == '1' ? 'N' : slice.length_one == '2' ? 'F' : slice.length_one == '3' ? 'SH' : '-'"></span>--> <!-- </div>--> <!-- <div class=" w-[7%] flex justify-center items-center h-full border-l">--> <!-- <span class=" text-gray-500 text-[.55rem] "--> <!-- v-text="slice.length_two == '1' ? 'N' : slice.length_two == '2' ? 'F' : slice.length_two == '3' ? 'SH' : '-'"></span>--> <!-- </div>--> <!-- <div class=" w-[13%] flex justify-center items-center h-full border-l">--> <!-- <span class=" text-gray-500 text-[.55rem] "--> <!-- v-html="slice.material ? locale == 'en' ? slice.material.title_en : slice.material.title : '---'">--> <!-- </span>--> <!-- </div>--> <!-- <div :class="locale == 'en' ? ' justify-start' : ' justify-end'"--> <!-- class=" w-[24%] flex pl-1 items-center h-full">--> <!-- <div dir="ltr" class=" w-9/12 justify-start flex items-center ">--> <!-- <span :class="!slice.var_1 ? 'w-4/12' : 'w-2/12'"--> <!-- class="block text-gray-500 text-center text-[.6rem] ">--> <!-- {{ slice.length }}--> <!-- </span>--> <!-- <span :class="!slice.var_1 ? 'w-2/12' : 'w-1/12'"--> <!-- class="block text-gray-500 text-center text-[.6rem] ">--> <!-- <UIcon name="i-heroicons-x-mark"/>--> <!-- </span>--> <!-- <span :class="!slice.var_1 ? 'w-3/12' : 'w-2/12'"--> <!-- class="block text-gray-500 text-center text-[.6rem] ">--> <!-- {{ slice.width }}--> <!-- </span>--> <!-- <template v-if="slice.var_1 && slice.var_1 != 0">--> <!-- <span class="block w-1/12 text-gray-500 text-center text-[.6rem] ">--> <!-- <u-icon name="i-heroicons-x-mark"/>--> <!-- </span>--> <!-- <span class="block w-2/12 text-gray-500 text-center text-[.6rem] ">--> <!-- {{ slice.var_1 }}--> <!-- </span>--> <!-- </template>--> <!-- <template v-if="slice.var_2 && slice.var_2 != 0">--> <!-- <span class="block w-1/12 text-gray-500 text-center text-[.6rem] ">--> <!-- <u-icon name="i-heroicons-x-mark"/>--> <!-- </span>--> <!-- <span class="block w-2/12 text-gray-500 text-center text-[.6rem] ">--> <!-- {{ slice.var_2 }}--> <!-- </span>--> <!-- </template>--> <!-- <span class="block w-1/12 text-gray-500 text-center text-[.6rem] ">--> <!-- =--> <!-- </span>--> <!-- <span class="block w-2/12 text-gray-500 text-center text-[.6rem] ">--> <!-- {{ slice.count }}--> <!-- </span>--> <!-- </div>--> <!-- </div>--> <!-- </div>--> </section> </li> <li class="flex justify-center items-center my-2"> <UPagination v-model="page" :page-count="rowItemsCountInEachPage" :total="fetchedData.list.length"/> </li> <li class=" flex justify-start items-center mt-16 px-2"> <UButton square @click="toggleDeleteAllDialog" :loading="spinnerLoading" class="flex items-center bg-red-700 text-white text-sm bold px-4 !shadow-none justify-center rounded"> {{ t('delete_all') }} </UButton> <SharedConfirmationDialog :toggle-show-up="deleteDialogIsOpen" :message="t('are_you_sure_to_do_this_operation')" @on-closed="toggleDeleteAllDialog" @on-confirmed="handleDeleteAllItems" /> <SharedConfirmationDialog :toggle-show-up="deleteDialogIsOpen" :message="t('are_you_sure_to_do_this_operation')" @on-closed="toggleDeleteListItemDialog" @on-confirmed="deleteSelectedListItem" /> <SharedConfirmationDialog :toggle-show-up="deleteDialogIsOpen" :message="t('are_you_sure_to_do_this_operation')" @on-closed="toggleDeleteListItemSliceDialog" @on-confirmed="deleteSelectedListItemSlice" /> </li> </ul> </section> <section class="mt-36" v-else> <h2 class="text-red-500 block mx-auto w-full text-center"> {{ t('there_is_no_record_to_showing') }} </h2> </section> <UModal v-model="isOpen" class=" !top-0"> <div :dir="locale == 'en' ? 'ltr' : 'rtl'" class=" flex justify-between items-center p-2"> <span class=" block bold text-xs truncate !top-0 !bottom-auto !justify-start "> {{ t('Edit the piece') }} </span> <UButton color="gray" variant="ghost" icon="i-heroicons-x-mark-20-solid" class="-my-1" @click="isOpen = false"/> </div> <div :dir="locale == 'en' ? 'ltr' : 'rtl'" class=" h-96 mb-6 mt-3 px-4 pt-3 max-h-full overflow-y-auto "> <div class=" flex justify-start items-center w-full mb-3"> <label :class="locale == 'en' ? ' text-left' : ' text-right'" class="block w-3/12 text-gray-500 bg-white text-xs "> {{ t('Length') }} </label> <div class="w-8/12"> <UInput :loading="false" variant="outline" type="number" :inputClass="' w-full !shadow-none focus:ring-1 rounded-sm focus:ring-orange-600 h-7 pl-2 py-0 text-xs' " @keydown="MainStore.NumbersOnly" v-model="state.length" /> </div> </div> <div class=" flex justify-start items-center w-full mb-3"> <label :class="locale == 'en' ? ' text-left' : ' text-right'" class="block w-3/12 text-gray-500 bg-white text-xs "> {{ t('Width') }} </label> <div class="w-8/12"> <UInput :loading="false" variant="outline" type="number" :inputClass="' w-full !shadow-none focus:ring-1 rounded-sm focus:ring-orange-600 h-7 pl-2 py-0 text-xs' " @keydown="MainStore.NumbersOnly" v-model="state.width" /> </div> </div> <template v-if="has_var1"> <div class=" flex justify-start items-center w-full mb-3"> <label :class="locale == 'en' ? ' text-left' : ' text-right'" class="block w-3/12 text-gray-500 bg-white text-xs "> {{ t('Variable One') }} </label> <div class="w-8/12"> <UInput :loading="false" variant="outline" type="number" :inputClass="' w-full !shadow-none focus:ring-1 rounded-sm focus:ring-orange-600 h-7 pl-2 py-0 text-xs' " @keydown="MainStore.NumbersOnly" v-model="state.var_1" /> </div> </div> </template> <template v-if="has_var2 == true"> <div class=" flex justify-start items-center w-full mb-3"> <label :class="locale == 'en' ? ' text-left' : ' text-right'" class="block w-3/12 text-gray-500 bg-white text-xs "> {{ t('Variable Two') }} </label> <div class="w-8/12"> <UInput :loading="false" variant="outline" type="number" :inputClass="' w-full !shadow-none focus:ring-1 rounded-sm focus:ring-orange-600 h-7 pl-2 py-0 text-xs' " @keydown="MainStore.NumbersOnly" v-model="state.var_2" /> </div> </div> </template> <div class=" flex justify-start items-center w-full mb-3"> <label :class="locale == 'en' ? ' text-left' : ' text-right'" class="block w-3/12 text-gray-500 bg-white text-xs "> {{ t('count') }} </label> <div class="w-8/12"> <UInput :loading="false" variant="outline" type="number" :inputClass="' w-full !shadow-none focus:ring-1 rounded-sm focus:ring-orange-600 h-7 pl-2 py-0 text-xs' " @keydown="MainStore.NumbersOnly" v-model="state.count" /> </div> </div> <div class=" flex justify-start items-center w-full mb-3"> <label :class="locale == 'en' ? ' text-left' : ' text-right'" class="block w-3/12 text-gray-500 bg-white text-xs "> {{ t('Name') }} </label> <div class="w-8/12"> <UInput :loading="false" variant="outline" :inputClass="' w-full !shadow-none focus:ring-1 rounded-sm focus:ring-orange-600 h-7 pl-2 py-0 text-xs' " v-model="state.label" /> </div> </div> <div class=" flex justify-start items-center w-full mb-3"> <label :class="locale == 'en' ? ' text-left' : ' text-right'" class="block w-3/12 text-gray-500 bg-white text-xs "> {{ t('material') }} </label> <div class="w-8/12"> <USelect :options="fetchedData.materials" v-model="state.material_id" :option-attribute="locale == 'en' ? 'title_en' : 'title'" valueAttribute="id" :selectClass="'w-full !shadow-none focus:ring-1 rounded-sm focus:ring-orange-600 h-7 py-0 text-xs' " /> </div> </div> <div class=" flex justify-start items-center w-full mb-3"> <label :class="locale == 'en' ? ' text-left' : ' text-right'" class="block w-3/12 text-gray-500 bg-white text-xs "> {{ t('Top') }} </label> <div class="w-8/12"> <USelect :options="type" v-model="state.width_one" option-attribute="name" :selectClass="'w-full !shadow-none focus:ring-1 rounded-sm focus:ring-orange-600 h-7 py-0 text-xs' " /> </div> </div> <div class=" flex justify-start items-center w-full mb-3"> <label :class="locale == 'en' ? ' text-left' : ' text-right'" class="block w-3/12 text-gray-500 bg-white text-xs "> {{ t('Down') }} </label> <div class="w-8/12"> <USelect :options="type" v-model="state.width_two" option-attribute="name" :selectClass="'w-full !shadow-none focus:ring-1 rounded-sm focus:ring-orange-600 h-7 py-0 text-xs' " /> </div> </div> <div class=" flex justify-start items-center w-full mb-3"> <label :class="locale == 'en' ? ' text-left' : ' text-right'" class="block w-3/12 text-gray-500 bg-white text-xs "> {{ t('Left') }} </label> <div class="w-8/12"> <USelect :options="type" v-model="state.length_one" option-attribute="name" :selectClass="'w-full !shadow-none focus:ring-1 rounded-sm focus:ring-orange-600 h-7 py-0 text-xs' " /> </div> </div> <div class=" flex justify-start items-center w-full mb-3"> <label :class="locale == 'en' ? ' text-left' : ' text-right'" class="block w-3/12 text-gray-500 bg-white text-xs "> {{ t('Right') }} </label> <div class="w-8/12"> <USelect :options="type" v-model="state.length_two" option-attribute="name" :selectClass="'w-full !shadow-none focus:ring-1 rounded-sm focus:ring-orange-600 h-7 py-0 text-xs' " /> </div> </div> </div> <div class=" flex justify-around mb-2 items-center "> <UButton @click="isOpen = false" square class="w-5/12 flex px-2 text-white rounded bg-blue-700 items-center justify-center"> <span class=" block px-2 text-xs truncate "> {{ t('Cancel') }} </span> </UButton> <UButton square :loading="spinnerLoading" @click="editAttach()" class="w-5/12 flex px-2 text-white rounded bg-main-700 items-center justify-center"> <span class=" block px-2 text-xs truncate "> {{ t('payment_5') }} </span> </UButton> </div> </UModal> <UnitListFooter/> </div> </template> <script setup lang="ts"> import {useMainStore} from '~/stores'; import {ref} from "vue"; const {t, locale} = useI18n() const route = useRoute(); const localePath = useLocalePath() const token = useCookie('token'); const toast = useToast() const MainStore = useMainStore() const config = useRuntimeConfig(); const isOpen = ref(false); const has_var1 = ref(false); const has_var2 = ref(false); const spinnerLoading = ref(false); const loading = ref(true); const deleteDialogIsOpen = ref(false); const type = [{ name: t('Free'), value: '0' }, { name: t('Strip'), value: '1' }, { name: t('Farsi'), value: '2' }, { name: t('Groove'), value: '3' }]; const state = reactive({ attach_id: undefined, length: undefined, width: undefined, var_1: undefined, var_2: undefined, count: undefined, label: undefined, length_one: 1, length_two: 1, width_one: 1, width_two: 1, material_id: 1, page: 1, }); let fetchedData: Ref<any> = ref({ list: [], materials: [] }) async function getAnalyzeList() { const {data} = await useAPI('/analyze/list/get', { immediate: true, server: true, }); let list = data.value !== undefined ? data.value?.list : []; let materials = data.value !== undefined ? data.value?.materials : []; for (let key in list) { fetchedData.value.list.push(list[key]); } for (let key in materials) { fetchedData.value.materials.push(materials[key]); } } await getAnalyzeList(); const chunkArray = (size: number) => { let array = fetchedData.value.list; const chunkedArray = []; for (let i = 0; i < array?.length; i += size) { chunkedArray.push(array.slice(i, i + size)); } return chunkedArray; } onBeforeMount(() => { if (!route.query.length || !route.query.page) { navigateTo({ query: { ...route.query, page: 1 } }) } }) let page = computed({ get() { if (route.query?.page === undefined) { return 1; } return Number(route.query.page) }, set(newPage: number) { loading.value = true; navigateTo({ query: { ...route.query, page: newPage, } }) }, }); watch(page, () => { loading.value = false; }) const rowItemsCountInEachPage = ref(3); const chunkedData = chunkArray(rowItemsCountInEachPage.value); const computedPageCount = computed(() => { return Number(route.query.page) ?? 1; }); const toggleCollapse = (id: number) => { document.querySelector('#body_collapse_' + id)!.classList.toggle('hidden'); document.querySelector('#header_collapse_' + id)!.classList.toggle(locale.value == 'en' ? '-rotate-90' : 'rotate-90'); } const toggleModal = (obj: any) => { state.attach_id = obj['id']; state.label = obj['label']; state.width = obj['width']; state.length = obj['length']; state.var_1 = obj['var_1']; state.var_2 = obj['var_2']; state.count = obj['count']; state.length_one = obj['length_one']; state.length_two = obj['length_two']; state.width_one = obj['width_one']; state.width_two = obj['width_two']; state.material_id = obj['material_id']; isOpen.value = true; if (obj['var_1'] && obj['var_1'] != 0) { has_var1.value = true; } if (obj['var_2'] && obj['var_2'] != 0) { has_var2.value = true; } } async function editAttach() { if (!state.width) { return toast.add({title: t('Length_Alert'), color: "orange"}) } if (!state.count) { return toast.add({title: t('Number_Alert'), color: "orange"}) } if (!state.length) { return toast.add({title: t('Width_Alert'), color: "orange"}) } if (!state.material_id) { return toast.add({title: t('Material_Alert'), color: "orange"}) } if (!state.attach_id) { return toast.add({title: t('desired_Alert'), color: "orange"}) } spinnerLoading.value = true; await useFetch(config.public.API_URL + '/analyze/list/edit-attach', { method: 'POST', body: { attach_id: state.attach_id, label: state.label, width: state.width, length: state.length, var_1: state.var_1, var_2: state.var_2, count: state.count, length_one: state.length_one, length_two: state.length_two, width_one: state.width_one, width_two: state.width_two, material_id: state.material_id, }, onRequest({options}) { options.headers = {}; options.headers.Accept = 'application/json' options.headers.authorization = 'Bearer ' + token.value }, onResponseError({response}) { if (response.status == 401) { navigateTo(localePath('/login')); } }, onResponse({response}) { if (response.status == 422) { return toast.add({title: response._data.message, color: "orange"}) } } }) spinnerLoading.value = false; isOpen.value = false; await getAnalyzeList(); } async function handleDeleteAllItems() { await deleteListItem(0, 'list') } async function deleteListItem(id: any, type: any) { spinnerLoading.value = true; deleteDialogIsOpen.value = !deleteDialogIsOpen.value; await useAPI('/analyze/list/delete', { method: 'POST', body: { ids: id, type: type, }, immediate: true, server: true }) spinnerLoading.value = false; await getAnalyzeList(); } function toggleDeleteAllDialog() { deleteDialogIsOpen.value = !deleteDialogIsOpen.value; } let selectedListItemId = ref(null); function toggleDeleteListItemDialog(itemId: any = null) { selectedListItemId.value = itemId ?? null; deleteDialogIsOpen.value = !deleteDialogIsOpen.value; } let selectedListItemSliceId = ref(null); function toggleDeleteListItemSliceDialog(itemId: any = null) { selectedListItemSliceId.value = itemId ?? null; deleteDialogIsOpen.value = !deleteDialogIsOpen.value; } function deleteSelectedListItemSlice() { deleteListItem([selectedListItemSliceId], 'attach') } function deleteSelectedListItem() { deleteListItem([selectedListItemId.value], 'list') } useHead({ title: t('analysis_list') }); definePageMeta({ title: '', layout: 'with-out-footer', middleware: ['auth'], }); onMounted(() => { route.meta.title = t('analysis_list') loading.value = false; }) </script> <style scoped> table tr td { padding: 5px 0 !important; } </style>
Coded With 💗 by
0x6ick Mod By V1rus_Alfa