Merged balance actions into one page
This commit is contained in:
		
							parent
							
								
									17e640892a
								
							
						
					
					
						commit
						502c40329c
					
				|  | @ -1,67 +1,59 @@ | |||
| <template> | ||||
|   <q-page padding class="fit row justify-left q-col-gutter-sm"> | ||||
|     <div class="col-12"> | ||||
|       <q-card> | ||||
|         <BalanceHeader @update:user="userUpdated" :showSelector="showSelector" /> | ||||
|         <q-separator /> | ||||
|   <q-card> | ||||
|     <BalanceHeader @update:user="userUpdated" :showSelector="showSelector" /> | ||||
|     <q-separator /> | ||||
| 
 | ||||
|         <q-card-section class="row q-col-gutter-md" v-if="shortCuts"> | ||||
|           <div :key="index" v-for="(shortcut, index) in shortCuts" class="col-4"> | ||||
|             <q-btn | ||||
|               push | ||||
|               v-if="shortcut" | ||||
|               color="primary" | ||||
|               style="width: 100%" | ||||
|               :label="shortcut.toFixed(2).toString() + ' €'" | ||||
|               @click="changeBalance(shortcut)" | ||||
|             > | ||||
|               <q-popup-proxy context-menu> | ||||
|                 <q-btn label="Entfernen" @click="removeShortcut(shortcut)" /> | ||||
|               </q-popup-proxy> | ||||
|               <q-tooltip>Rechtsklick um Verknüpfung zu entfernen</q-tooltip> | ||||
|             </q-btn> | ||||
|           </div></q-card-section | ||||
|     <q-card-section class="row q-col-gutter-md" v-if="shortCuts"> | ||||
|       <div :key="index" v-for="(shortcut, index) in shortCuts" class="col-4"> | ||||
|         <q-btn | ||||
|           push | ||||
|           v-if="shortcut" | ||||
|           color="primary" | ||||
|           style="width: 100%" | ||||
|           :label="shortcut.toFixed(2).toString() + ' €'" | ||||
|           @click="changeBalance(shortcut)" | ||||
|         > | ||||
|         <q-card-section class="row q-col-gutter-md items-center"> | ||||
|           <div class="col-sm-4 col-xs-12"> | ||||
|             <q-input | ||||
|               v-model.number="amount" | ||||
|               type="number" | ||||
|               filled | ||||
|               label="Eigener Betrag" | ||||
|               step="0.1" | ||||
|               min="0" | ||||
|             /> | ||||
|           </div> | ||||
|           <div class="col-sm-4 col-xs-6"> | ||||
|             <q-btn | ||||
|               style="width: 100%" | ||||
|               color="primary" | ||||
|               label="Anschreiben" | ||||
|               @click="changeBalance(amount * -1)" | ||||
|               ><q-tooltip>Rechtsklick um Betrag als Verknüpfung hinzuzufügen</q-tooltip> | ||||
|               <q-popup-proxy context-menu v-model="showAddShortcut"> | ||||
|                 <q-btn label="neue Verknüpfung" @click="addShortcut"></q-btn> | ||||
|               </q-popup-proxy> | ||||
|             </q-btn> | ||||
|           </div> | ||||
|           <div class="col-sm-4 col-xs-6"> | ||||
|             <q-btn | ||||
|               v-if="canAddCredit" | ||||
|               style="width: 100%" | ||||
|               color="secondary" | ||||
|               label="Gutschreiben" | ||||
|               @click="changeBalance(amount)" | ||||
|             /> | ||||
|           </div> | ||||
|         </q-card-section> | ||||
|       </q-card> | ||||
|     </div> | ||||
|     <div v-for="(transaction, index) in transactions" v-bind:key="index" class="col-md-4 col-sm-6"> | ||||
|       <!-- TODO: In Vue3 use v-model:transaction="..." --> | ||||
|       <Transaction :transaction.sync="transactions[index]" /> | ||||
|     </div> | ||||
|   </q-page> | ||||
|           <q-popup-proxy context-menu> | ||||
|             <q-btn label="Entfernen" @click="removeShortcut(shortcut)" /> | ||||
|           </q-popup-proxy> | ||||
|           <q-tooltip>Rechtsklick um Verknüpfung zu entfernen</q-tooltip> | ||||
|         </q-btn> | ||||
|       </div></q-card-section | ||||
|     > | ||||
|     <q-card-section class="row q-col-gutter-md items-center"> | ||||
|       <div class="col-sm-4 col-xs-12"> | ||||
|         <q-input | ||||
|           v-model.number="amount" | ||||
|           type="number" | ||||
|           filled | ||||
|           label="Eigener Betrag" | ||||
|           step="0.1" | ||||
|           min="0" | ||||
|         /> | ||||
|       </div> | ||||
|       <div class="col-sm-4 col-xs-6"> | ||||
|         <q-btn | ||||
|           style="width: 100%" | ||||
|           color="primary" | ||||
|           label="Anschreiben" | ||||
|           @click="changeBalance(amount * -1)" | ||||
|           ><q-tooltip>Rechtsklick um Betrag als Verknüpfung hinzuzufügen</q-tooltip> | ||||
|           <q-popup-proxy context-menu v-model="showAddShortcut"> | ||||
|             <q-btn label="neue Verknüpfung" @click="addShortcut"></q-btn> | ||||
|           </q-popup-proxy> | ||||
|         </q-btn> | ||||
|       </div> | ||||
|       <div class="col-sm-4 col-xs-6"> | ||||
|         <q-btn | ||||
|           v-if="canAddCredit" | ||||
|           style="width: 100%" | ||||
|           color="secondary" | ||||
|           label="Gutschreiben" | ||||
|           @click="changeBalance(amount)" | ||||
|         /> | ||||
|       </div> | ||||
|     </q-card-section> | ||||
|   </q-card> | ||||
| </template> | ||||
| 
 | ||||
| <script lang="ts"> | ||||
|  | @ -69,20 +61,25 @@ import { computed, ref, defineComponent, onBeforeMount } from '@vue/composition- | |||
| import { hasPermission } from 'src/utils/permission'; | ||||
| import { StateInterfaceBalance } from '../store/balance'; | ||||
| import { Store } from 'vuex'; | ||||
| import Transaction from '../components/Transaction.vue'; | ||||
| import BalanceHeader from '../components/BalanceHeader.vue'; | ||||
| import PERMISSIONS from '../permissions'; | ||||
| 
 | ||||
| export default defineComponent({ | ||||
|   name: 'BalanceAdd', | ||||
|   components: { Transaction, BalanceHeader }, | ||||
|   components: { BalanceHeader }, | ||||
|   setup(_, { root }) { | ||||
|     onBeforeMount(() => void store.dispatch('balance/getShortcuts')); | ||||
|     onBeforeMount(() => { | ||||
|       void store.dispatch('balance/getShortcuts'); | ||||
|       if (store.state.balance.transactions.length == 0) | ||||
|         // No transaction, load at most six since yesterday | ||||
|         void store.dispatch('balance/getTransactions', { | ||||
|           filter: { limit: 6, from: new Date(new Date().setDate(new Date().getDate() - 1)) } | ||||
|         }); | ||||
|     }); | ||||
|     const store = <Store<StateInterfaceBalance>>root.$store; | ||||
| 
 | ||||
|     const amount = ref<number>(0); | ||||
|     const showAddShortcut = ref(false); | ||||
|     const transactions = computed(() => store.state.balance.transactions.slice().reverse()); | ||||
|     const user = ref(store.state.user.currentUser); | ||||
|     const shortCuts = ref(store.state.balance.shortcuts); | ||||
| 
 | ||||
|  | @ -113,7 +110,6 @@ export default defineComponent({ | |||
|       removeShortcut, | ||||
|       showAddShortcut, | ||||
|       changeBalance, | ||||
|       transactions, | ||||
|       amount, | ||||
|       showSelector, | ||||
|       shortCuts, | ||||
|  |  | |||
|  | @ -1,39 +1,25 @@ | |||
| <template> | ||||
|   <q-page padding class="fit row justify-left q-col-gutter-sm"> | ||||
|     <div class="col-12"> | ||||
|       <q-card> | ||||
|         <BalanceHeader @update:user="senderUpdated" :showSelector="showSelector" /> | ||||
|         <q-separator /> | ||||
|         <q-card-section class="row q-col-gutter-md items-center"> | ||||
|           <div class="col-sm-4 col-xs-12"> | ||||
|             <q-input | ||||
|               v-model.number="amount" | ||||
|               type="number" | ||||
|               filled | ||||
|               label="Betrag" | ||||
|               step="0.1" | ||||
|               min="0" | ||||
|             /> | ||||
|           </div> | ||||
|           <div class="col-sm-4 col-xs-6"> | ||||
|             <UserSelector :user="receiver" @update:user="receiverUpdated" label="Empfänger" /> | ||||
|           </div> | ||||
|           <div class="col-sm-4 col-xs-6"> | ||||
|             <q-btn | ||||
|               style="width: 100%" | ||||
|               color="primary" | ||||
|               :disable="sendDisabled" | ||||
|               label="Senden" | ||||
|               @click="sendAmount" | ||||
|             /> | ||||
|           </div> | ||||
|         </q-card-section> | ||||
|       </q-card> | ||||
|     </div> | ||||
|     <div v-for="(transaction, index) in transactions" v-bind:key="index" class="col-sm-4 col-xs-6"> | ||||
|       <Transaction :transaction.sync="transactions[index]" /> | ||||
|     </div> | ||||
|   </q-page> | ||||
|   <q-card> | ||||
|     <BalanceHeader @update:user="senderUpdated" :showSelector="showSelector" /> | ||||
|     <q-separator /> | ||||
|     <q-card-section class="row q-col-gutter-md items-center"> | ||||
|       <div class="col-sm-4 col-xs-12"> | ||||
|         <q-input v-model.number="amount" type="number" filled label="Betrag" step="0.1" min="0" /> | ||||
|       </div> | ||||
|       <div class="col-sm-4 col-xs-6"> | ||||
|         <UserSelector :user="receiver" @update:user="receiverUpdated" label="Empfänger" /> | ||||
|       </div> | ||||
|       <div class="col-sm-4 col-xs-6"> | ||||
|         <q-btn | ||||
|           style="width: 100%" | ||||
|           color="primary" | ||||
|           :disable="sendDisabled" | ||||
|           label="Senden" | ||||
|           @click="sendAmount" | ||||
|         /> | ||||
|       </div> | ||||
|     </q-card-section> | ||||
|   </q-card> | ||||
| </template> | ||||
| 
 | ||||
| <script lang="ts"> | ||||
|  | @ -42,13 +28,12 @@ import { hasPermission } from 'src/utils/permission'; | |||
| import { StateInterfaceBalance } from '../store/balance'; | ||||
| import { Store } from 'vuex'; | ||||
| import UserSelector from 'src/plugins/user/components/UserSelector.vue'; | ||||
| import Transaction from '../components/Transaction.vue'; | ||||
| import BalanceHeader from '../components/BalanceHeader.vue'; | ||||
| import PERMISSIONS from '../permissions'; | ||||
| 
 | ||||
| export default defineComponent({ | ||||
|   name: 'BalanceTransfer', | ||||
|   components: { Transaction, BalanceHeader, UserSelector }, | ||||
|   components: { BalanceHeader, UserSelector }, | ||||
|   setup(_, { root }) { | ||||
|     const store: Store<StateInterfaceBalance> = <Store<StateInterfaceBalance>>root.$store; | ||||
| 
 | ||||
|  | @ -56,7 +41,6 @@ export default defineComponent({ | |||
|     const sender = ref(store.state.user.currentUser); | ||||
|     const receiver = ref<FG.User | undefined>(undefined); | ||||
|     const amount = ref<number>(0); | ||||
|     const transactions = computed(() => store.state.balance.transactions.slice().reverse()); | ||||
| 
 | ||||
|     const sendDisabled = computed(() => { | ||||
|       return !( | ||||
|  | @ -90,7 +74,6 @@ export default defineComponent({ | |||
|       receiver, | ||||
|       amount, | ||||
|       sendAmount, | ||||
|       transactions, | ||||
|       showSelector, | ||||
|       senderUpdated, | ||||
|       receiverUpdated, | ||||
|  |  | |||
|  | @ -1,48 +1,112 @@ | |||
| <template> | ||||
|   <div> | ||||
|     <q-page padding v-if="checkMain"> | ||||
|       <q-card> | ||||
|         <q-card-section> | ||||
|           <q-list v-for="(mainRoute, index) in mainRoutes" :key="'mainRoute' + index"> | ||||
|             <essential-link | ||||
|               v-for="(route, index2) in mainRoute.children" | ||||
|               :key="'route' + index2" | ||||
|               :title="route.title" | ||||
|               :icon="route.icon" | ||||
|               :link="route.name" | ||||
|               :permissions="route.meta.permissions" | ||||
|             /> | ||||
|           </q-list> | ||||
|         </q-card-section> | ||||
|       </q-card> | ||||
|     <q-tabs v-model="tab" v-if="$q.screen.gt.sm"> | ||||
|       <q-tab | ||||
|         v-for="(tabindex, index) in tabs" | ||||
|         :key="'tab' + index" | ||||
|         :name="tabindex.name" | ||||
|         :label="tabindex.label" | ||||
|       /> | ||||
|     </q-tabs> | ||||
|     <div class="fit row justify-end" v-else> | ||||
|       <q-btn flat round icon="mdi-menu" @click="showDrawer = !showDrawer" /> | ||||
|     </div> | ||||
|     <q-drawer side="right" v-model="showDrawer" @click="showDrawer = !showDrawer" behavior="mobile"> | ||||
|       <q-list v-model="tab"> | ||||
|         <q-item | ||||
|           v-for="(tabindex, index) in tabs" | ||||
|           :key="'tab' + index" | ||||
|           :active="tab == tabindex.name" | ||||
|           clickable | ||||
|           @click="tab = tabindex.name" | ||||
|         > | ||||
|           <q-item-label>{{ tabindex.label }}</q-item-label> | ||||
|         </q-item> | ||||
|       </q-list> | ||||
|     </q-drawer> | ||||
|     <q-page padding class="fit row justify-left q-col-gutter-sm"> | ||||
|       <q-tab-panels | ||||
|         v-model="tab" | ||||
|         style="background-color: transparent" | ||||
|         class="q-pa-none col-12" | ||||
|         animated | ||||
|       > | ||||
|         <q-tab-panel name="add" class="q-px-xs"> | ||||
|           <BalanceAdd /> | ||||
|         </q-tab-panel> | ||||
|         <q-tab-panel name="transfer" class="q-px-xs"> | ||||
|           <BalanceTransfer /> | ||||
|         </q-tab-panel> | ||||
|       </q-tab-panels> | ||||
|       <div | ||||
|         v-for="(transaction, index) in transactions" | ||||
|         v-bind:key="index" | ||||
|         class="col-md-4 col-sm-6" | ||||
|       > | ||||
|         <!-- TODO: In Vue3 use v-model:transaction="..." --> | ||||
|         <Transaction :transaction.sync="transactions[index]" /> | ||||
|       </div> | ||||
|     </q-page> | ||||
|     <router-view /> | ||||
|   </div> | ||||
| </template> | ||||
| 
 | ||||
| <script lang="ts"> | ||||
| import { computed, defineComponent } from '@vue/composition-api'; | ||||
| import EssentialLink from 'src/components/navigation/EssentialLink.vue'; | ||||
| import mainRoutes from 'src/plugins/balance/routes'; | ||||
| import { computed, defineComponent, ref } from '@vue/composition-api'; | ||||
| import { Store } from 'vuex'; | ||||
| import { BalanceInterface } from 'src/plugins/balance/store/balance'; | ||||
| import setLoadingBar from 'src/utils/loading'; | ||||
| import { StateInterface } from 'src/store'; | ||||
| import { hasPermissions, hasSomePermissions } from 'src/utils/permission'; | ||||
| import PERMISSIONS from '../permissions'; | ||||
| import { Screen } from 'quasar'; | ||||
| import BalanceAdd from '../components/BalanceAdd.vue'; | ||||
| import BalanceTransfer from '../components/BalanceTransfer.vue'; | ||||
| import Transaction from '../components/Transaction.vue'; | ||||
| import { StateInterfaceBalance } from '../store/balance'; | ||||
| 
 | ||||
| export default defineComponent({ | ||||
|   // name: 'PageName' | ||||
|   components: { EssentialLink }, | ||||
|   name: 'BalanceManage', | ||||
|   components: { BalanceAdd, BalanceTransfer, Transaction }, | ||||
|   setup(_, { root }) { | ||||
|     const store = <Store<StateInterface>>root.$store; | ||||
|     const loading = computed(() => { | ||||
|       return (<BalanceInterface>store.state.balance).loading > 0; | ||||
|     }); | ||||
|     const checkMain = computed(() => { | ||||
|       return root.$route.matched.length == 2; | ||||
|     const store = <Store<StateInterfaceBalance>>root.$store; | ||||
| 
 | ||||
|     const transactions = computed(() => | ||||
|       store.state.balance.transactions | ||||
|         .filter(t => t.original_id == undefined) | ||||
|         .sort((a, b) => (a.time >= b.time ? -1 : 1)) | ||||
|     ); | ||||
| 
 | ||||
|     const canAdd = () => | ||||
|       hasSomePermissions([PERMISSIONS.DEBIT, PERMISSIONS.CREDIT, PERMISSIONS.DEBIT_OWN], store); | ||||
| 
 | ||||
|     interface Tab { | ||||
|       name: string; | ||||
|       label: string; | ||||
|     } | ||||
| 
 | ||||
|     const tabs: Tab[] = [ | ||||
|       ...(canAdd() ? [{ name: 'add', label: 'Anschreiben' }] : []), | ||||
|       ...(hasSomePermissions([PERMISSIONS.SEND, PERMISSIONS.SEND_OTHER], store) | ||||
|         ? [{ name: 'transfer', label: 'Übertragen' }] | ||||
|         : []) | ||||
|     ]; | ||||
| 
 | ||||
|     const drawer = ref<boolean>(false); | ||||
| 
 | ||||
|     const showDrawer = computed({ | ||||
|       get: () => { | ||||
|         return !Screen.gt.sm && drawer.value; | ||||
|       }, | ||||
|       set: (val: boolean) => { | ||||
|         drawer.value = val; | ||||
|       } | ||||
|     }); | ||||
| 
 | ||||
|     setLoadingBar(loading); | ||||
|     const tab = ref<string>(canAdd() ? 'add' : 'transfer'); | ||||
| 
 | ||||
|     return { checkMain, mainRoutes }; | ||||
|     return { | ||||
|       showDrawer, | ||||
|       tab, | ||||
|       tabs, | ||||
|       transactions | ||||
|     }; | ||||
|   } | ||||
| }); | ||||
| </script> | ||||
|  |  | |||
|  | @ -7,32 +7,32 @@ const mainRoutes: FG_Plugin.PluginRouteConfig[] = [ | |||
|     icon: 'mdi-cash-100', | ||||
|     path: 'balance', | ||||
|     name: 'balance', | ||||
|     redirect: { name: 'balance-add' }, | ||||
|     redirect: { name: 'balance-view' }, | ||||
|     meta: { permissions: ['user'] }, | ||||
|     children: [ | ||||
|       { | ||||
|         title: 'Anschreiben', | ||||
|         title: 'Übersicht', | ||||
|         icon: 'mdi-cash-plus', | ||||
|         path: 'add', | ||||
|         name: 'balance-add', | ||||
|         shortcut: true, | ||||
|         meta: { permissions: [permissions.DEBIT_OWN, permissions.SHOW] }, | ||||
|         component: () => import('../pages/Add.vue') | ||||
|         path: 'overview', | ||||
|         name: 'balance-view', | ||||
|         meta: { permissions: [permissions.SHOW] }, | ||||
|         component: () => import('../pages/Overview.vue') | ||||
|       }, | ||||
|       { | ||||
|         title: 'Übertragen', | ||||
|         icon: 'mdi-cash-refund', | ||||
|         path: 'transfer', | ||||
|         name: 'balance-transfer', | ||||
|         meta: { permissions: [permissions.SEND] }, | ||||
|         component: () => import('../pages/Transfer.vue') | ||||
|         title: 'Buchen', | ||||
|         icon: 'mdi-cash-plus', | ||||
|         path: 'change', | ||||
|         name: 'balance-change', | ||||
|         shortcut: true, | ||||
|         meta: { permissions: [permissions.DEBIT_OWN, permissions.SHOW] }, | ||||
|         component: () => import('../pages/MainPage.vue') | ||||
|       }, | ||||
|       { | ||||
|         title: 'Verwaltung', | ||||
|         icon: 'mdi-account-cash', | ||||
|         path: 'admin', | ||||
|         name: 'balance-admin', | ||||
|         meta: { permissions: [permissions.DEBIT_OWN, permissions.SHOW] }, | ||||
|         meta: { permissions: [permissions.SET_LIMIT, permissions.SHOW_OTHER] }, | ||||
|         component: () => import('../pages/Admin.vue') | ||||
|       } | ||||
|     ] | ||||
|  |  | |||
|  | @ -1,25 +1,5 @@ | |||
| import { FG_Plugin } from 'src/plugins'; | ||||
| 
 | ||||
| /*const permissions = { | ||||
|   // Show own and others balance
 | ||||
|   SHOW: 'balance_show', | ||||
|   SHOW_OTHER: 'balance_show_others', | ||||
|   // Credit balance (give)
 | ||||
|   CREDIT: 'balance_credit', | ||||
|   // Debit balance (take)
 | ||||
|   DEBIT: 'balance_debit', | ||||
|   // Debit own balance only
 | ||||
|   DEBIT_OWN: 'balance_debit_own', | ||||
|   // Send from to other
 | ||||
|   SEND: 'balance_send', | ||||
|   // Send from other to another
 | ||||
|   SEND_OTHER: 'balance_send_others', | ||||
|   // Can set limit for users
 | ||||
|   SET_LIMIT: 'balance_set_limit', | ||||
|   //Allow sending / sub while exceeding the set limit
 | ||||
|   EXCEED_LIMIT: 'balance_exceed_limit' | ||||
| };*/ | ||||
| 
 | ||||
| const mainRoutes: FG_Plugin.PluginRouteConfig[] = [ | ||||
|   { | ||||
|     title: 'Dienste', | ||||
|  |  | |||
|  | @ -31,12 +31,7 @@ | |||
|           label="Zeit" | ||||
|           filled | ||||
|         /> | ||||
|         <q-select | ||||
|           class="col-xs-12 col-sm-6 q-px-sm" | ||||
|           :options="options" | ||||
|           v-model="option" | ||||
|           filled | ||||
|         /> | ||||
|         <q-select class="col-xs-12 col-sm-6 q-px-sm" :options="options" v-model="option" filled /> | ||||
|       </div> | ||||
|     </q-card-section> | ||||
|     <q-card-actions align="right" v-if="!isEdit"> | ||||
|  | @ -59,10 +54,10 @@ export default defineComponent({ | |||
|   name: 'Sessions', | ||||
|   props: { | ||||
|     session: { | ||||
|       required: true, | ||||
|     }, | ||||
|       required: true | ||||
|     } | ||||
|   }, | ||||
|   setup(props: {session: FG.Session}, { root }) { | ||||
|   setup(props: { session: FG.Session }, { root }) { | ||||
|     const store = <Store<StateInterface>>root.$store; | ||||
|     const options = ref(['Minuten', 'Stunden', 'Tage']); | ||||
|     const option = ref<string>(options.value[0]); | ||||
|  | @ -92,7 +87,7 @@ export default defineComponent({ | |||
|     } | ||||
| 
 | ||||
|     function deleteSession(token: string) { | ||||
|       store.dispatch('session/deleteSession', token).catch((error) => { | ||||
|       store.dispatch('session/deleteSession', token).catch(error => { | ||||
|         console.warn(error); | ||||
|       }); | ||||
|     } | ||||
|  | @ -113,7 +108,7 @@ export default defineComponent({ | |||
|             return (lifetime.value / (60 * 60 * 24)).toFixed(2); | ||||
|         } | ||||
|       }, | ||||
|       set: (val) => { | ||||
|       set: val => { | ||||
|         if (val) { | ||||
|           switch (option.value) { | ||||
|             case options.value[0]: | ||||
|  | @ -127,7 +122,7 @@ export default defineComponent({ | |||
|               break; | ||||
|           } | ||||
|         } | ||||
|       }, | ||||
|       } | ||||
|     }); | ||||
| 
 | ||||
|     function edit(value: boolean) { | ||||
|  | @ -139,11 +134,8 @@ export default defineComponent({ | |||
|       console.log(lifetime.value); | ||||
|       isEdit.value = false; | ||||
|       void store | ||||
|         .dispatch( | ||||
|           'session/updateSession', | ||||
|           {lifetime: lifetime.value, token: props.session.token} | ||||
|         ) | ||||
|         .catch((error) => { | ||||
|         .dispatch('session/updateSession', { lifetime: lifetime.value, token: props.session.token }) | ||||
|         .catch(error => { | ||||
|           console.log(error); | ||||
|         }); | ||||
|     } | ||||
|  | @ -159,8 +151,8 @@ export default defineComponent({ | |||
|       option, | ||||
|       lifetime, | ||||
|       computedLifetime, | ||||
|       save, | ||||
|       save | ||||
|     }; | ||||
|   }, | ||||
|   } | ||||
| }); | ||||
| </script> | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue