diff --git a/src/layout/AppMenu.vue b/src/layout/AppMenu.vue index db458a9..73d61b9 100644 --- a/src/layout/AppMenu.vue +++ b/src/layout/AppMenu.vue @@ -13,7 +13,7 @@ const model = ref([ items: [ { label: 'ایجاد اموال', icon: 'pi pi-fw pi-file-plus', to: '/belonging/create-belonging' }, { label: 'لیست اموال', icon: 'pi pi-fw pi-file', to: '/belonging/list-belongings' }, - { label: 'لیست تراکنش اموال', icon: 'pi pi-fw pi-plus', to: '/transactions/belonging-transactions' } + { label: 'لیست تراکنش اموال', icon: 'pi pi-list-check', to: '/transactions/list-transactions' } ] }, { diff --git a/src/router/index.js b/src/router/index.js index e37211d..55ea009 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -63,6 +63,11 @@ const router = createRouter({ name: 'list-features', component: () => import('@/views/pages/Features/ListFeatures.vue') }, + { + path: '/transactions/list-transactions', + name: 'list-transactions', + component: () => import('@/views/pages/Transaction/ListTransactions.vue') + }, { path: '/uikit/formlayout', name: 'formlayout', diff --git a/src/service/TransactionService.js b/src/service/TransactionService.js index 920bba5..4d9f65d 100644 --- a/src/service/TransactionService.js +++ b/src/service/TransactionService.js @@ -1,6 +1,16 @@ import axios from 'axios'; export const TransactionService = { + _getAuthHeader: () => { + const bmToken = document.cookie + .split('; ') + .find((row) => row.startsWith('bm-token=')) + ?.split('=')[1]; + + return { + Authorization: `Bearer ${bmToken}` + }; + }, /** * Get a single transaction by ID * @param {string} transactionId - The transaction ID @@ -143,5 +153,36 @@ export const TransactionService = { console.log(err); return err.response?.data?.message || 'Error deleting transaction'; } + }, + + searchTransactions: async (query) => { + const config = { + method: 'get', + url: '/api/transactions/admin/search', + withCredentials: true, + params: query, + headers: TransactionService._getAuthHeader() + }; + try { + const response = await axios(config); + return response.data; + } catch (err) { + console.log(err); + } + }, + + indexTransactions: async () => { + const config = { + method: 'post', + url: '/api/transactions/admin/index-all', + withCredentials: true, + headers: TransactionService._getAuthHeader() + }; + try { + const response = await axios(config); + return response.data; + } catch (err) { + console.log(err); + } } }; diff --git a/src/views/pages/Belonging/CreateBelonging.vue b/src/views/pages/Belonging/CreateBelonging.vue index a03c9d1..bf5b849 100644 --- a/src/views/pages/Belonging/CreateBelonging.vue +++ b/src/views/pages/Belonging/CreateBelonging.vue @@ -142,7 +142,7 @@ const onTransactionSaved = async () => { if (editMode.value && belonging.value?._id) { belonging.value = await BelongingService.getBelonging(belonging.value._id); } - toast.add({ severity: 'success', summary: 'موفق', detail: 'تراکنش با موفقیت ثبت شد', life: 3000 }); + // toast.add({ severity: 'success', summary: 'موفق', detail: 'تراکنش با موفقیت ثبت شد', life: 3000 }); }; const handleSelectCategory = ($event) => { @@ -259,7 +259,7 @@ const getStatusSeverity = (status) => { case 'failed': return 'danger'; case 'pending': - return 'warning'; + return 'warn'; case 'finished': return 'success'; default: diff --git a/src/views/pages/Belonging/TransactionDialog.vue b/src/views/pages/Belonging/TransactionDialog.vue index b699c4a..8e02683 100644 --- a/src/views/pages/Belonging/TransactionDialog.vue +++ b/src/views/pages/Belonging/TransactionDialog.vue @@ -23,8 +23,7 @@ const transaction = reactive({ status: 'pending', value: null, description: '', - date: new Date().toISOString(), - belongingId: props.belongingId + date: new Date().toISOString() }); const typeOptions = [ @@ -78,6 +77,7 @@ const saveTransaction = async () => { } try { + transaction.belongingId = props.belongingId; const result = await TransactionService.createTransaction(transaction); if (result === 'success') { toast.add({ severity: 'success', summary: 'موفق', detail: 'تراکنش با موفقیت ثبت شد', life: 3000 }); diff --git a/src/views/pages/Features/ListFeatures.vue b/src/views/pages/Features/ListFeatures.vue index 173fe9c..259bd44 100644 --- a/src/views/pages/Features/ListFeatures.vue +++ b/src/views/pages/Features/ListFeatures.vue @@ -87,7 +87,7 @@ const saveFeature = async () => {

لیست ویژگی های {{ category.nativeName }}

- +
diff --git a/src/views/pages/Transaction/ListTransactions.vue b/src/views/pages/Transaction/ListTransactions.vue new file mode 100644 index 0000000..8d3bb4d --- /dev/null +++ b/src/views/pages/Transaction/ListTransactions.vue @@ -0,0 +1,346 @@ + + + diff --git a/src/views/pages/auth/Login.vue b/src/views/pages/auth/Login.vue index bf31d45..fbddab3 100644 --- a/src/views/pages/auth/Login.vue +++ b/src/views/pages/auth/Login.vue @@ -16,7 +16,12 @@ const login = async () => { email: email.value, password: password.value }); - Cookies.set('bm-token', response.data.data.token, { sameSite: 'none', secure: true, expires: 1000, domain: '.chbk.app' }); + const env = import.meta.env.VITE_ENV; + if (env === 'production') { + Cookies.set('bm-token', response.data.data.token, { sameSite: 'none', secure: true, expires: 1000, domain: '.chbk.app' }); + } else { + Cookies.set('bm-token', response.data.data.token, { sameSite: 'none', secure: true, expires: 1000 }); + } localStorage.setItem('bm-token', response.data.data.token); await router.push('/'); } catch (error) {