From baae7232e291e1ce44badde0abf0e0be8aa082b3 Mon Sep 17 00:00:00 2001 From: Babak Alizadeh Date: Sun, 13 Apr 2025 15:33:45 +0000 Subject: [PATCH] add statment manager forms --- .../src/Controller/GeneralController.php | 6 - .../Controller/System/StatementController.php | 80 + webUI/src/router/index.ts | 1722 +++++++++-------- .../views/user/manager/statements/list.vue | 116 ++ .../src/views/user/manager/statements/mod.vue | 139 ++ webUI/src/views/user/profile/profile-main.vue | 1 + 6 files changed, 1205 insertions(+), 859 deletions(-) create mode 100644 hesabixCore/src/Controller/System/StatementController.php create mode 100644 webUI/src/views/user/manager/statements/list.vue create mode 100644 webUI/src/views/user/manager/statements/mod.vue diff --git a/hesabixCore/src/Controller/GeneralController.php b/hesabixCore/src/Controller/GeneralController.php index 2160ff0..de167ed 100644 --- a/hesabixCore/src/Controller/GeneralController.php +++ b/hesabixCore/src/Controller/GeneralController.php @@ -39,12 +39,6 @@ class GeneralController extends AbstractController ]); } - #[Route('/api/general/statements', name: 'general_statement')] - public function general_statement(EntityManagerInterface $entityManager): JsonResponse - { - return $this->json($entityManager->getRepository(Statment::class)->findBy([], ['id' => 'DESC'])); - } - #[Route('/api/general/get/time', name: 'general_get_time')] public function general_get_time(Jdate $jdate, Request $request): JsonResponse { diff --git a/hesabixCore/src/Controller/System/StatementController.php b/hesabixCore/src/Controller/System/StatementController.php new file mode 100644 index 0000000..a949950 --- /dev/null +++ b/hesabixCore/src/Controller/System/StatementController.php @@ -0,0 +1,80 @@ +json($entityManager->getRepository(Statment::class)->findBy([], ['id' => 'DESC'])); + } + + #[Route('/api/admin/statement/list', name: 'system_statement_admin_list')] + public function admin_statement_list(EntityManagerInterface $entityManager): JsonResponse + { + return $this->json($entityManager->getRepository(Statment::class)->findBy([], ['id' => 'DESC'])); + } + + #[Route('/api/admin/statement/mod', name: 'system_statement_admin_create', methods: ['POST'])] + public function admin_statement_create(EntityManagerInterface $entityManager, Request $request): JsonResponse + { + $data = json_decode($request->getContent(), true); + $statement = new Statment(); + + $statement->setTitle($data['title'] ?? ''); + $statement->setBody($data['body'] ?? ''); + $statement->setDateSubmit($data['dateSubmit'] ?? date('Y-m-d')); + + $entityManager->persist($statement); + $entityManager->flush(); + + return $this->json(['success' => true, 'id' => $statement->getId()]); + } + + #[Route('/api/admin/statement/mod/{id}', name: 'system_statement_admin_mod', methods: ['GET', 'PUT', 'DELETE'])] + public function admin_statement_mod( + EntityManagerInterface $entityManager, + Request $request, + ?string $id = null + ): JsonResponse { + if (!$id) { + return $this->json(['error' => 'ID is required'], 400); + } + + $statement = $entityManager->getRepository(Statment::class)->find($id); + if (!$statement) { + return $this->json(['error' => 'Statement not found'], 404); + } + + if ($request->isMethod('GET')) { + return $this->json($statement); + } + + if ($request->isMethod('DELETE')) { + $entityManager->remove($statement); + $entityManager->flush(); + return $this->json(['success' => true]); + } + + if ($request->isMethod('PUT')) { + $data = json_decode($request->getContent(), true); + $statement->setTitle($data['title'] ?? ''); + $statement->setBody($data['body'] ?? ''); + $statement->setDateSubmit($data['dateSubmit'] ?? date('Y-m-d')); + $entityManager->flush(); + return $this->json(['success' => true]); + } + + return $this->json(['error' => 'Method not allowed'], 405); + } +} diff --git a/webUI/src/router/index.ts b/webUI/src/router/index.ts index 647e2c9..03dbf8f 100644 --- a/webUI/src/router/index.ts +++ b/webUI/src/router/index.ts @@ -107,878 +107,894 @@ const router = createRouter({ } }, { - path: 'manager/business/list', - component: () => import('../views/user/manager/business/list.vue'), + path: 'manager/statments/list', + component: () => import('../views/user/manager/statements/list.vue'), meta: { - 'title': 'کسب‌و‌کارها', + 'title': 'اطلاعیه‌ها', 'login': true } }, { - path: 'manager/users/list', - component: () => import('../views/user/manager/users/list.vue'), + path: 'manager/statments/mod/:id?', + component: () => import('../views/user/manager/statements/mod.vue'), meta: { - 'title': 'کاربران', + 'title': 'ویرایش اطلاعیه', 'login': true } }, - { - path: 'manager/plugins/list', - component: () => import('../views/user/manager/settings/plugins.vue'), - meta: { - 'title': 'افزونه‌ها', - 'login': true - } - }, - { - path: 'manager/update-core', - component: () => import('../views/user/manager/settings/update-core.vue'), - meta: { - 'title': 'به روز رسانی هسته', - 'login': true - } - }, - { - path: 'manager/logs/list', - component: () => import('../views/user/manager/log/logs.vue'), - meta: { - 'title': 'تاریخچه سیستم', - 'login': true - } - }, - { - path: 'manager/wallet/list', - component: () => import('../views/user/manager/wallet/list.vue'), - meta: { - 'title': 'کیف پول', - 'login': true - } - }, - { - path: 'manager/changes/list', - component: () => import('../views/user/manager/reportchange/list.vue'), - meta: { - 'title': 'لیست تغییرات', - 'login': true - } - }, - { - path: 'manager/changes/mod/:id', - component: () => import('../views/user/manager/reportchange/mod.vue'), - meta: { - 'title': 'ارائه تغییرات سیستم', - 'login': true - } - }, - { - path: 'manager/database/info', - component: () => import('../views/user/manager/settings/database_info.vue'), - meta: { - 'title': 'خروجی از بانک اطلاعاتی', - 'login': true - } - }, - { - path: 'manager/system/mod', - component: () => import('../views/user/manager/settings/system.vue'), - meta: { - 'title': 'تنظیمات پایه', - 'login': true - } - }, - { - path: 'manager/registry/mod', - component: () => import('../views/user/manager/settings/registry.vue'), - meta: { - 'title': 'تنظیمات رجیستری', - 'login': true - } - }, - { - path: 'manager/system/sms/settings', - component: () => import('../views/user/manager/settings/sms/smsSettings.vue'), - meta: { - 'title': 'تنظیمات پیامک', - 'login': true - } - }, - { - path: 'manager/users/onlinelist', - component: () => import('../views/user/manager/online-users.vue'), - meta: { - 'title': 'کاربران آنلاین', - 'login': true - } - }, - ], + { + path: 'manager/business/list', + component: () => import('../views/user/manager/business/list.vue'), + meta: { + 'title': 'کسب‌و‌کارها', + 'login': true + } + }, + { + path: 'manager/users/list', + component: () => import('../views/user/manager/users/list.vue'), + meta: { + 'title': 'کاربران', + 'login': true + } + }, + { + path: 'manager/plugins/list', + component: () => import('../views/user/manager/settings/plugins.vue'), + meta: { + 'title': 'افزونه‌ها', + 'login': true + } + }, + { + path: 'manager/update-core', + component: () => import('../views/user/manager/settings/update-core.vue'), + meta: { + 'title': 'به روز رسانی هسته', + 'login': true + } + }, + { + path: 'manager/logs/list', + component: () => import('../views/user/manager/log/logs.vue'), + meta: { + 'title': 'تاریخچه سیستم', + 'login': true + } + }, + { + path: 'manager/wallet/list', + component: () => import('../views/user/manager/wallet/list.vue'), + meta: { + 'title': 'کیف پول', + 'login': true + } + }, + { + path: 'manager/changes/list', + component: () => import('../views/user/manager/reportchange/list.vue'), + meta: { + 'title': 'لیست تغییرات', + 'login': true + } + }, + { + path: 'manager/changes/mod/:id', + component: () => import('../views/user/manager/reportchange/mod.vue'), + meta: { + 'title': 'ارائه تغییرات سیستم', + 'login': true + } + }, + { + path: 'manager/database/info', + component: () => import('../views/user/manager/settings/database_info.vue'), + meta: { + 'title': 'خروجی از بانک اطلاعاتی', + 'login': true + } + }, + { + path: 'manager/system/mod', + component: () => import('../views/user/manager/settings/system.vue'), + meta: { + 'title': 'تنظیمات پایه', + 'login': true + } + }, + { + path: 'manager/registry/mod', + component: () => import('../views/user/manager/settings/registry.vue'), + meta: { + 'title': 'تنظیمات رجیستری', + 'login': true + } + }, + { + path: 'manager/system/sms/settings', + component: () => import('../views/user/manager/settings/sms/smsSettings.vue'), + meta: { + 'title': 'تنظیمات پیامک', + 'login': true + } + }, + { + path: 'manager/users/onlinelist', + component: () => import('../views/user/manager/online-users.vue'), + meta: { + 'title': 'کاربران آنلاین', + 'login': true + } + }, + ], +}, { + path: '/acc/', + component: () => import('../views/acc/App.vue'), + children: [ + { + path: 'dashboard', + component: () => import('../views/acc/dashboard.vue'), + name: 'acc_home', + meta: { + 'title': 'داشبورد کسب‌و‌کار', + 'login': true + } + }, + { + path: 'business/printtemplates', + name: 'business_printtemplates', + component: () => + import('../views/acc/printers/templates.vue') + }, + { + path: 'printers/list', + name: 'printers_list', + component: () => + import('../views/acc/printers/list.vue') }, { - path: '/acc/', - component: () => import('../views/acc/App.vue'), - children: [ - { - path: 'dashboard', - component: () => import('../views/acc/dashboard.vue'), - name: 'acc_home', - meta: { - 'title': 'داشبورد کسب‌و‌کار', - 'login': true - } - }, - { - path: 'business/printtemplates', - name: 'business_printtemplates', - component: () => - import('../views/acc/printers/templates.vue') - }, - { - path: 'printers/list', - name: 'printers_list', - component: () => - import('../views/acc/printers/list.vue') - }, { - path: 'printers/printqueue/:id?', - name: 'printers_queue', - component: () => - import('../views/acc/printers/queue.vue') - }, { - path: 'reports/list', - name: 'reports_list', - component: () => - import('../views/acc/reports/reports.vue') - }, - { - path: 'reports/persons/debtors', - name: 'person_debtors_list', - component: () => - import('../views/acc/reports/persons/debtors.vue'), - }, - { - path: 'reports/acc/balance_sheet', - name: 'acc_balanceSheet_list', - component: () => - import('../views/acc/reports/balanceSheet.vue'), - }, - { - path: 'reports/acc/explore_accounts', - name: 'acc_report_explore_accounts', - component: () => - import('../views/acc/reports/explore_accounts.vue'), - }, - { - path: 'reports/commodity/buysell', - name: 'commodity_report_buysell', - component: () => - import('../views/acc/reports/commodity/buysellByCommodity.vue'), - }, - { - path: 'reports/persons/depositors', - name: 'person_depositors_list', - component: () => - import('../views/acc/reports/persons/depositors.vue'), - }, - { - path: 'reports/persons/buysell', - name: 'person_buysell_by_person', - component: () => - import('../views/acc/reports/persons/buysellByPerson.vue'), - }, - { - path: 'costs/list', - name: 'costs_list', - component: () => - import('../views/acc/costs/list.vue'), - }, - { - path: 'costs/mod/:id?', - name: 'costs_mod', - component: () => - import('../views/acc/costs/mod.vue'), - }, - { - path: 'incomes/list', - name: 'incomes_list', - component: () => - import('../views/acc/incomes/list.vue'), - }, - { - path: 'incomes/mod/:id?', - name: 'incomes_mod', - component: () => - import('../views/acc/incomes/mod.vue'), - }, - { - path: 'accounting/mod/:id?', - name: 'accounting_mod', - component: () => - import('../views/acc/accounting/mod.vue'), - }, - { - path: 'accounting/list', - name: 'accounting_list_doc', - component: () => - import('../views/acc/accounting/list.vue'), - }, - { - path: 'accounting/open_balance', - name: 'accounting_open_balance', - component: () => - import('../views/acc/accounting/openBalance.vue'), - }, - { - path: 'accounting/table', - name: 'accounting_table', - component: () => - import('../views/acc/accounting/table.vue'), - }, - { - path: 'accounting/close_year', - name: 'accounting_close_year', - component: () => - import('../views/acc/accounting/closeyear.vue'), - }, - { - path: 'accounting/view/:id?', - name: 'accounting_view_doc', - component: () => - import('../views/acc/accounting/viewDoc.vue'), - }, - { - path: 'banks/list', - name: 'banks_list', - component: () => - import('../views/acc/bank/list.vue') - }, - { - path: 'banks/card/view/:id?', - name: 'bank_card_view', - component: () => - import('../views/acc/bank/card.vue'), - }, - { - path: 'banks/mod/:id?', - name: 'bank_mod', - component: () => - import('../views/acc/bank/mod.vue'), - }, - { - path: 'salary/list', - name: 'salary_list', - component: () => - import('../views/acc/salary/list.vue') - }, - { - path: 'salary/card/view/:id?', - name: 'salary_card_view', - component: () => - import('../views/acc/salary/card.vue'), - }, - { - path: 'salary/mod/:id?', - name: 'salary_mod', - component: () => - import('../views/acc/salary/mod.vue'), - }, - { - path: 'wallet/view', - name: 'wallet_view', - component: () => - import('../views/acc/wallet/view.vue') - }, - { - path: 'cashdesk/list', - name: 'cashdesk_list', - component: () => - import('../views/acc/cashdesk/list.vue') - }, - { - path: 'cashdesk/card/view/:id?', - name: 'cashdesk_card_view', - component: () => - import('../views/acc/cashdesk/card.vue'), - }, - { - path: 'cashdesk/mod/:id?', - name: 'cashdesk_mod', - component: () => - import('../views/acc/cashdesk/mod.vue'), - }, - { - path: 'transfer/list', - name: 'transfer_list', - component: () => - import('../views/acc/transfer/list.vue') - }, - { - path: 'transfer/mod/:id?', - name: 'transfer_mod', - component: () => - import('../views/acc/transfer/mod.vue'), - }, - { - path: 'persons/receive/list', - name: 'person_receive_list', - component: () => - import('../views/acc/persons/receive/list.vue') - }, - { - path: 'persons/send/list', - name: 'person_send_list', - component: () => - import('../views/acc/persons/send/list.vue') - }, - { - path: 'persons/receive/mod/:id?', - name: 'person_receive_mod', - component: () => - import('../views/acc/persons/receive/mod.vue'), - }, - { - path: 'persons/send/mod/:id?', - name: 'person_send_mod', - component: () => - import('../views/acc/persons/send/mod.vue'), - }, - { - path: 'persons/card/view/:id?', - name: 'person_card_view', - component: () => - import('../views/acc/persons/card.vue'), - }, - { - path: 'persons/list', - name: 'person_list', - component: () => - import('../views/acc/persons/list.vue'), - }, - { - path: 'persons/mod/:id?', - name: 'person_new', - component: () => - import('../views/acc/persons/insert.vue'), - }, - { - path: 'business/settings', - name: 'business_settings', - component: () => - import('../views/acc/settings/bussiness.vue'), - }, - { - path: 'business/printoptions', - name: 'print_settings', - component: () => - import('../views/acc/settings/print.vue'), - }, - { - path: 'business/avatar', - name: 'business_avatar', - component: () => - import('../views/acc/settings/avatar.vue'), - }, - { - path: 'business/extramoneys', - name: 'business_extramoneys', - component: () => - import('../views/acc/settings/extramoneys.vue'), - }, - { - path: 'business/logs', - name: 'business_logs', - component: () => - import('../views/acc/settings/logs.vue'), - }, - { - path: 'business/apis', - name: 'business_apis', - component: () => - import('../views/acc/api/list.vue'), - }, - { - path: 'business/users', - name: 'business_users', - component: () => - import('../views/acc/settings/user_rolls.vue'), - }, - { - path: 'business/user/roll/edit/:email', - name: 'business_user_roll_edit', - component: () => - import('../views/acc/settings/user_perm_edit.vue'), - }, - { - path: 'commodity/cat/list', - name: 'commodity_cat_list', - component: () => - import('../views/acc/commodity/cat/list.vue'), - }, - { - path: 'commodity/pricelist/list', - name: 'commodity_pricelist_list', - component: () => - import('../views/acc/commodity/priceList/list.vue'), - }, - { - path: 'commodity/pricelist/mod/:id?', - name: 'commodity_pricelist_mod', - component: () => - import('../views/acc/commodity/priceList/mod.vue'), - }, - { - path: 'commodity/pricelist/view/:id?', - name: 'commodity_pricelist_view', - component: () => - import('../views/acc/commodity/priceList/view.vue'), - }, { - path: 'commodity/pricelist/list/mod/:id?', - name: 'commodity_pricelist_list_mod', - component: () => - import('../views/acc/commodity/priceList/pricelistedit.vue'), - }, - { - path: 'commodity/drop/list', - name: 'commodity_drop_list', - component: () => - import('../views/acc/commodity/drop/list.vue'), - }, - { - path: 'commodity/drop/mod/:id?', - name: 'commodity_drop_mod', - component: () => - import('../views/acc/commodity/drop/mod.vue'), - }, - { - path: 'commodity/list', - name: 'commodity_list', - component: () => - import('../views/acc/commodity/list.vue'), - }, - { - path: 'commodity/mod/:id?', - name: 'commodity_mod', - component: () => - import('../views/acc/commodity/mod.vue'), - }, - { - path: 'cheque/input/:id?', - name: 'cheque_input', - component: () => - import('../views/acc/cheque/input.vue'), - }, - { - path: 'cheque/output/:id?', - name: 'cheque_output', - component: () => - import('../views/acc/cheque/output.vue'), - }, - { - path: 'cheque/list', - name: 'cheque_list', - component: () => - import('../views/acc/cheque/list.vue'), - }, - { - path: 'cheque/transfer/:id', - name: 'cheque_transfer', - component: () => - import('../views/acc/cheque/transfer.vue'), - }, - { - path: 'buy/mod/:id?', - name: 'buy_mod', - component: () => - import('../views/acc/buy/mod.vue'), - }, - { - path: 'buy/list', - name: 'buy_list', - component: () => - import('../views/acc/buy/list.vue'), - }, - { - path: 'buy/view/:id?', - name: 'buy_view', - component: () => - import('../views/acc/buy/viewInvoice.vue'), - }, - { - path: 'sell/mod/:id?', - name: 'sell_mod', - component: () => - import('../views/acc/sell/mod.vue'), - }, - { - path: 'sell/fast-mod/:id?', - name: 'sell_fast_mod', - component: () => - import('../views/acc/sell/fastMod.vue'), - }, - { - path: 'sell/list', - name: 'sell_list', - component: () => - import('../views/acc/sell/list.vue'), - }, - { - path: 'sell/view/:id?', - name: 'sell_view', - component: () => - import('../views/acc/sell/viewInvoice.vue'), - }, - { - path: 'presell/mod/:id?', - name: 'presell_mod', - component: () => - import('../views/acc/presell/mod.vue'), - }, - { - path: 'presell/list', - name: 'presell_list', - component: () => - import('../views/acc/presell/list.vue'), - }, - { - path: 'presell/view/:id?', - name: 'presell_view', - component: () => - import('../views/acc/presell/viewInvoice.vue'), - }, - { - path: 'rfbuy/mod/:id?', - name: 'rfbuy_mod', - component: () => - import('../views/acc/rfbuy/mod.vue'), - }, - { - path: 'rfbuy/list', - name: 'rfbuy_list', - component: () => - import('../views/acc/rfbuy/list.vue'), - }, - { - path: 'rfbuy/view/:id?', - name: 'rfbuy_view', - component: () => - import('../views/acc/rfbuy/viewInvoice.vue'), - }, - { - path: 'rfsell/mod/:id?', - name: 'rfsell_mod', - component: () => - import('../views/acc/rfsell/mod.vue'), - }, - { - path: 'rfsell/list', - name: 'rfsell_list', - component: () => - import('../views/acc/rfsell/list.vue'), - }, - { - path: 'rfsell/view/:id?', - name: 'rfsell_view', - component: () => - import('../views/acc/rfsell/viewInvoice.vue'), - }, - { - path: 'wizard/home', - name: 'wizard_home', - component: () => - import('../views/wizard/home.vue'), - }, - { - path: 'plugin-center/list', - name: 'plugin_center_list', - component: () => - import('../views/acc/store/plugin-world.vue'), - }, - { - path: 'plugin-center/my', - name: 'plugin_center_my', - component: () => - import('../views/acc/store/plugin-my.vue'), - }, - { - path: 'plugin-center/invoice', - name: 'plugin_center_invoice', - component: () => - import('../views/acc/store/plugin-invoice.vue'), - }, - { - path: 'plugin-center/view-end/:id?', - name: 'plugin_center_view_prodect', - component: () => - import('../views/acc/store/viewProdect.vue'), - }, - { - path: 'plugins/apartemanma/intro', - name: 'plugin_apartemanma_intro', - component: () => - import('../views/acc/plugins/amartemanma/intro.vue'), - }, - { - path: 'plugins/accpro/intro', - name: 'plugin_accpro_intro', - component: () => - import('../views/acc/plugins/accpro/intro.vue'), - }, - { - path: 'plugins/repservice/intro', - name: 'plugin_repservice_intro', - component: () => - import('../views/acc/plugins/repservice/intro.vue'), - }, { - path: 'plugin/repservice/order/mod/:id?', - name: 'plugin_repservice_order_mod', - component: () => - import('../views/acc/plugins/repservice/mod.vue'), - }, - { - path: 'plugin/repservice/order/view/:id?', - name: 'plugin_repservice_order_view', - component: () => - import('../views/acc/plugins/repservice/view.vue'), - }, - { - path: 'plugin/repservice/order/list', - name: 'plugin_repservice_order_list', - component: () => - import('../views/acc/plugins/repservice/list.vue'), - }, - { - path: 'plugins/restamap/intro', - name: 'plugin_restamap_intro', - component: () => - import('../views/acc/plugins/resamap/intro.vue'), - }, - { - path: 'plugins/noghre/intro', - name: 'plugin_noghre_intro', - component: () => - import('../views/acc/plugins/noghre/intro.vue'), - }, - { - path: 'plugins/cc/intro', - name: 'plugin_cc_intro', - component: () => - import('../views/acc/plugins/cc/intro.vue'), - }, - { - path: 'plugins/onlinestore/intro', - name: 'plugin_onlinestore_intro', - component: () => - import('../views/acc/plugins/onlinestore/intro.vue'), - }, - { - path: 'notifications/list', - name: 'notification_list', - component: () => - import('../views/acc/notifications/notifications.vue'), - }, - { - path: 'sms/panel', - name: 'sms_panel_dashboard', - component: () => - import('../views/acc/smspanel/smspanel.vue'), - }, - { - path: 'plugin/noghre/employees/list', - name: 'plugin_noghre_employees_list', - component: () => - import('../views/acc/plugins/noghre/employess/list.vue'), - }, - { - path: 'plugin/noghre/employees/mod/:id?', - name: 'plugin_noghre_employees_mod', - component: () => - import('../views/acc/plugins/noghre/employess/mod.vue'), - }, - { - path: 'plugin/noghre/order/list', - name: 'plugin_noghre_order_list', - component: () => - import('../views/acc/plugins/noghre/order/list.vue'), - }, - { - path: 'plugin/noghre/order/mod/:id?', - name: 'plugin_noghre_order_mod', - component: () => - import('../views/acc/plugins/noghre/order/mod.vue'), - }, - { - path: 'plugin/noghre/order/view/:id?', - name: 'plugin_noghre_order_view', - component: () => - import('../views/acc/plugins/noghre/order/view.vue'), - }, - { - path: 'plugin/noghre/pays/view/:id?', - name: 'plugin_noghre_pays_view', - component: () => - import('../views/acc/plugins/noghre/pays.vue'), - }, - { - path: 'storeroom/commodity/check/exist', - name: 'storeroom_commodity_check_exist', - component: () => - import('../views/acc/storeroom/commodityCheck/checkByStoreroom.vue'), - }, - { - path: 'storeroom/new/ticket/type', - name: 'storeroom_new_ticket_type', - component: () => - import('../views/acc/storeroom/io/modalNew.vue'), - }, - { - path: 'storeroom/tickets/list', - name: 'storeroom_tickets_list', - component: () => - import('../views/acc/storeroom/io/ticketList.vue'), - }, - { - path: 'storeroom/ticket/view/:id', - name: 'storeroom_ticket_view', - component: () => - import('../views/acc/storeroom/io/view.vue'), - }, - { - path: 'storeroom/new/ticket/buy/:doc/:storeID', - name: 'storeroom_new_ticket_buy', - component: () => - import('../views/acc/storeroom/io/buy.vue'), - }, - { - path: 'storeroom/new/ticket/sell/:doc/:storeID', - name: 'storeroom_new_ticket_sell', - component: () => - import('../views/acc/storeroom/io/sell.vue'), - }, - { - path: 'storeroom/new/ticket/rfbuy/:doc/:storeID', - name: 'storeroom_new_ticket_rfbuy', - component: () => - import('../views/acc/storeroom/io/rfbuy.vue'), - }, - { - path: 'storeroom/new/ticket/rfsell/:doc/:storeID', - name: 'storeroom_new_ticket_rfsell', - component: () => - import('../views/acc/storeroom/io/rfsell.vue'), - }, - { - path: 'storeroom/list', - name: 'storeroom_list', - component: () => - import('../views/acc/storeroom/list.vue'), - }, - { - path: 'storeroom/mod/:id?', - name: 'storeroom_mod', - component: () => - import('../views/acc/storeroom/mod.vue'), - }, - { - path: 'archive/list', - name: 'archive_list', - component: () => - import('../views/acc/archive/view_files.vue'), - }, - { - path: 'archive/order/new', - name: 'order_new', - component: () => - import('../views/acc/archive/order_new.vue'), - }, - { - path: 'archive/order/list', - name: 'order_list', - component: () => - import('../views/acc/archive/orders_list.vue'), - }, - { - path: 'package/order/new', - name: 'package_new', - component: () => - import('../views/acc/ultimatepackage/new.vue'), - }, - { - path: 'package/order/list', - name: 'package_list', - component: () => - import('../views/acc/ultimatepackage/list.vue'), - }, - { - path: 'shareholders/list', - name: 'shareholders_list', - component: () => - import('../views/acc/shareholder/list.vue'), - }, - ], + path: 'printers/printqueue/:id?', + name: 'printers_queue', + component: () => + import('../views/acc/printers/queue.vue') + }, { + path: 'reports/list', + name: 'reports_list', + component: () => + import('../views/acc/reports/reports.vue') }, { - path: '/user/', - component: () => import('../views/user/single.vue'), - children: [ - { - path: 'login', - name: 'user_login', - component: () => import('../views/user/login.vue'), - meta: { - 'title': 'ورود کاربر', - } - }, - { - path: 'forget-password', - name: 'user_forget_password', - component: () => import('../views/user/profile/forget-password.vue'), - meta: { - 'title': 'بازیابی گذرواژه', - } - }, - { - path: 'forget-password-submit-code/:id', - name: 'user_forget_password_submit_code', - component: () => import('../views/user/profile/forget-password-submit-code.vue'), - meta: { - 'title': 'تایید کد بازیابی گذرواژه', - } - }, - { - path: 'register', - name: 'user_register', - component: () => import('../views/user/register.vue'), - meta: { - 'title': 'عضویت', - } - }, - { - path: 'active-account/:id', - name: 'user_active_account', - component: () => import('../views/user/active-account.vue'), - meta: { - 'title': 'فعال سازی حساب کاربری', - } - }, - ], + path: 'reports/persons/debtors', + name: 'person_debtors_list', + component: () => + import('../views/acc/reports/persons/debtors.vue'), }, { - path: '/ms/:param', - name: 'ReferralRedirect', - component: () => import('../views/user/ReferralRedirect.vue'), + path: 'reports/acc/balance_sheet', + name: 'acc_balanceSheet_list', + component: () => + import('../views/acc/reports/balanceSheet.vue'), }, { - path: '/install-pwa', - name: 'install_pwa', - component: () => import('../views/user/InstallPWA.vue'), - meta: { - 'title': 'نصب وب اپلیکیشن ', - } + path: 'reports/acc/explore_accounts', + name: 'acc_report_explore_accounts', + component: () => + import('../views/acc/reports/explore_accounts.vue'), }, { - path: "/:catchAll(.*)", - name: "not-found", - component: () => import("../views/NotFound.vue"), - meta: { - 'title': 'صفحه یافت نشد', - } + path: 'reports/commodity/buysell', + name: 'commodity_report_buysell', + component: () => + import('../views/acc/reports/commodity/buysellByCommodity.vue'), + }, + { + path: 'reports/persons/depositors', + name: 'person_depositors_list', + component: () => + import('../views/acc/reports/persons/depositors.vue'), + }, + { + path: 'reports/persons/buysell', + name: 'person_buysell_by_person', + component: () => + import('../views/acc/reports/persons/buysellByPerson.vue'), + }, + { + path: 'costs/list', + name: 'costs_list', + component: () => + import('../views/acc/costs/list.vue'), + }, + { + path: 'costs/mod/:id?', + name: 'costs_mod', + component: () => + import('../views/acc/costs/mod.vue'), + }, + { + path: 'incomes/list', + name: 'incomes_list', + component: () => + import('../views/acc/incomes/list.vue'), + }, + { + path: 'incomes/mod/:id?', + name: 'incomes_mod', + component: () => + import('../views/acc/incomes/mod.vue'), + }, + { + path: 'accounting/mod/:id?', + name: 'accounting_mod', + component: () => + import('../views/acc/accounting/mod.vue'), + }, + { + path: 'accounting/list', + name: 'accounting_list_doc', + component: () => + import('../views/acc/accounting/list.vue'), + }, + { + path: 'accounting/open_balance', + name: 'accounting_open_balance', + component: () => + import('../views/acc/accounting/openBalance.vue'), + }, + { + path: 'accounting/table', + name: 'accounting_table', + component: () => + import('../views/acc/accounting/table.vue'), + }, + { + path: 'accounting/close_year', + name: 'accounting_close_year', + component: () => + import('../views/acc/accounting/closeyear.vue'), + }, + { + path: 'accounting/view/:id?', + name: 'accounting_view_doc', + component: () => + import('../views/acc/accounting/viewDoc.vue'), + }, + { + path: 'banks/list', + name: 'banks_list', + component: () => + import('../views/acc/bank/list.vue') + }, + { + path: 'banks/card/view/:id?', + name: 'bank_card_view', + component: () => + import('../views/acc/bank/card.vue'), + }, + { + path: 'banks/mod/:id?', + name: 'bank_mod', + component: () => + import('../views/acc/bank/mod.vue'), + }, + { + path: 'salary/list', + name: 'salary_list', + component: () => + import('../views/acc/salary/list.vue') + }, + { + path: 'salary/card/view/:id?', + name: 'salary_card_view', + component: () => + import('../views/acc/salary/card.vue'), + }, + { + path: 'salary/mod/:id?', + name: 'salary_mod', + component: () => + import('../views/acc/salary/mod.vue'), + }, + { + path: 'wallet/view', + name: 'wallet_view', + component: () => + import('../views/acc/wallet/view.vue') + }, + { + path: 'cashdesk/list', + name: 'cashdesk_list', + component: () => + import('../views/acc/cashdesk/list.vue') + }, + { + path: 'cashdesk/card/view/:id?', + name: 'cashdesk_card_view', + component: () => + import('../views/acc/cashdesk/card.vue'), + }, + { + path: 'cashdesk/mod/:id?', + name: 'cashdesk_mod', + component: () => + import('../views/acc/cashdesk/mod.vue'), + }, + { + path: 'transfer/list', + name: 'transfer_list', + component: () => + import('../views/acc/transfer/list.vue') + }, + { + path: 'transfer/mod/:id?', + name: 'transfer_mod', + component: () => + import('../views/acc/transfer/mod.vue'), + }, + { + path: 'persons/receive/list', + name: 'person_receive_list', + component: () => + import('../views/acc/persons/receive/list.vue') + }, + { + path: 'persons/send/list', + name: 'person_send_list', + component: () => + import('../views/acc/persons/send/list.vue') + }, + { + path: 'persons/receive/mod/:id?', + name: 'person_receive_mod', + component: () => + import('../views/acc/persons/receive/mod.vue'), + }, + { + path: 'persons/send/mod/:id?', + name: 'person_send_mod', + component: () => + import('../views/acc/persons/send/mod.vue'), + }, + { + path: 'persons/card/view/:id?', + name: 'person_card_view', + component: () => + import('../views/acc/persons/card.vue'), + }, + { + path: 'persons/list', + name: 'person_list', + component: () => + import('../views/acc/persons/list.vue'), + }, + { + path: 'persons/mod/:id?', + name: 'person_new', + component: () => + import('../views/acc/persons/insert.vue'), + }, + { + path: 'business/settings', + name: 'business_settings', + component: () => + import('../views/acc/settings/bussiness.vue'), + }, + { + path: 'business/printoptions', + name: 'print_settings', + component: () => + import('../views/acc/settings/print.vue'), + }, + { + path: 'business/avatar', + name: 'business_avatar', + component: () => + import('../views/acc/settings/avatar.vue'), + }, + { + path: 'business/extramoneys', + name: 'business_extramoneys', + component: () => + import('../views/acc/settings/extramoneys.vue'), + }, + { + path: 'business/logs', + name: 'business_logs', + component: () => + import('../views/acc/settings/logs.vue'), + }, + { + path: 'business/apis', + name: 'business_apis', + component: () => + import('../views/acc/api/list.vue'), + }, + { + path: 'business/users', + name: 'business_users', + component: () => + import('../views/acc/settings/user_rolls.vue'), + }, + { + path: 'business/user/roll/edit/:email', + name: 'business_user_roll_edit', + component: () => + import('../views/acc/settings/user_perm_edit.vue'), + }, + { + path: 'commodity/cat/list', + name: 'commodity_cat_list', + component: () => + import('../views/acc/commodity/cat/list.vue'), + }, + { + path: 'commodity/pricelist/list', + name: 'commodity_pricelist_list', + component: () => + import('../views/acc/commodity/priceList/list.vue'), + }, + { + path: 'commodity/pricelist/mod/:id?', + name: 'commodity_pricelist_mod', + component: () => + import('../views/acc/commodity/priceList/mod.vue'), + }, + { + path: 'commodity/pricelist/view/:id?', + name: 'commodity_pricelist_view', + component: () => + import('../views/acc/commodity/priceList/view.vue'), + }, { + path: 'commodity/pricelist/list/mod/:id?', + name: 'commodity_pricelist_list_mod', + component: () => + import('../views/acc/commodity/priceList/pricelistedit.vue'), + }, + { + path: 'commodity/drop/list', + name: 'commodity_drop_list', + component: () => + import('../views/acc/commodity/drop/list.vue'), + }, + { + path: 'commodity/drop/mod/:id?', + name: 'commodity_drop_mod', + component: () => + import('../views/acc/commodity/drop/mod.vue'), + }, + { + path: 'commodity/list', + name: 'commodity_list', + component: () => + import('../views/acc/commodity/list.vue'), + }, + { + path: 'commodity/mod/:id?', + name: 'commodity_mod', + component: () => + import('../views/acc/commodity/mod.vue'), + }, + { + path: 'cheque/input/:id?', + name: 'cheque_input', + component: () => + import('../views/acc/cheque/input.vue'), + }, + { + path: 'cheque/output/:id?', + name: 'cheque_output', + component: () => + import('../views/acc/cheque/output.vue'), + }, + { + path: 'cheque/list', + name: 'cheque_list', + component: () => + import('../views/acc/cheque/list.vue'), + }, + { + path: 'cheque/transfer/:id', + name: 'cheque_transfer', + component: () => + import('../views/acc/cheque/transfer.vue'), + }, + { + path: 'buy/mod/:id?', + name: 'buy_mod', + component: () => + import('../views/acc/buy/mod.vue'), + }, + { + path: 'buy/list', + name: 'buy_list', + component: () => + import('../views/acc/buy/list.vue'), + }, + { + path: 'buy/view/:id?', + name: 'buy_view', + component: () => + import('../views/acc/buy/viewInvoice.vue'), + }, + { + path: 'sell/mod/:id?', + name: 'sell_mod', + component: () => + import('../views/acc/sell/mod.vue'), + }, + { + path: 'sell/fast-mod/:id?', + name: 'sell_fast_mod', + component: () => + import('../views/acc/sell/fastMod.vue'), + }, + { + path: 'sell/list', + name: 'sell_list', + component: () => + import('../views/acc/sell/list.vue'), + }, + { + path: 'sell/view/:id?', + name: 'sell_view', + component: () => + import('../views/acc/sell/viewInvoice.vue'), + }, + { + path: 'presell/mod/:id?', + name: 'presell_mod', + component: () => + import('../views/acc/presell/mod.vue'), + }, + { + path: 'presell/list', + name: 'presell_list', + component: () => + import('../views/acc/presell/list.vue'), + }, + { + path: 'presell/view/:id?', + name: 'presell_view', + component: () => + import('../views/acc/presell/viewInvoice.vue'), + }, + { + path: 'rfbuy/mod/:id?', + name: 'rfbuy_mod', + component: () => + import('../views/acc/rfbuy/mod.vue'), + }, + { + path: 'rfbuy/list', + name: 'rfbuy_list', + component: () => + import('../views/acc/rfbuy/list.vue'), + }, + { + path: 'rfbuy/view/:id?', + name: 'rfbuy_view', + component: () => + import('../views/acc/rfbuy/viewInvoice.vue'), + }, + { + path: 'rfsell/mod/:id?', + name: 'rfsell_mod', + component: () => + import('../views/acc/rfsell/mod.vue'), + }, + { + path: 'rfsell/list', + name: 'rfsell_list', + component: () => + import('../views/acc/rfsell/list.vue'), + }, + { + path: 'rfsell/view/:id?', + name: 'rfsell_view', + component: () => + import('../views/acc/rfsell/viewInvoice.vue'), + }, + { + path: 'wizard/home', + name: 'wizard_home', + component: () => + import('../views/wizard/home.vue'), + }, + { + path: 'plugin-center/list', + name: 'plugin_center_list', + component: () => + import('../views/acc/store/plugin-world.vue'), + }, + { + path: 'plugin-center/my', + name: 'plugin_center_my', + component: () => + import('../views/acc/store/plugin-my.vue'), + }, + { + path: 'plugin-center/invoice', + name: 'plugin_center_invoice', + component: () => + import('../views/acc/store/plugin-invoice.vue'), + }, + { + path: 'plugin-center/view-end/:id?', + name: 'plugin_center_view_prodect', + component: () => + import('../views/acc/store/viewProdect.vue'), + }, + { + path: 'plugins/apartemanma/intro', + name: 'plugin_apartemanma_intro', + component: () => + import('../views/acc/plugins/amartemanma/intro.vue'), + }, + { + path: 'plugins/accpro/intro', + name: 'plugin_accpro_intro', + component: () => + import('../views/acc/plugins/accpro/intro.vue'), + }, + { + path: 'plugins/repservice/intro', + name: 'plugin_repservice_intro', + component: () => + import('../views/acc/plugins/repservice/intro.vue'), + }, { + path: 'plugin/repservice/order/mod/:id?', + name: 'plugin_repservice_order_mod', + component: () => + import('../views/acc/plugins/repservice/mod.vue'), + }, + { + path: 'plugin/repservice/order/view/:id?', + name: 'plugin_repservice_order_view', + component: () => + import('../views/acc/plugins/repservice/view.vue'), + }, + { + path: 'plugin/repservice/order/list', + name: 'plugin_repservice_order_list', + component: () => + import('../views/acc/plugins/repservice/list.vue'), + }, + { + path: 'plugins/restamap/intro', + name: 'plugin_restamap_intro', + component: () => + import('../views/acc/plugins/resamap/intro.vue'), + }, + { + path: 'plugins/noghre/intro', + name: 'plugin_noghre_intro', + component: () => + import('../views/acc/plugins/noghre/intro.vue'), + }, + { + path: 'plugins/cc/intro', + name: 'plugin_cc_intro', + component: () => + import('../views/acc/plugins/cc/intro.vue'), + }, + { + path: 'plugins/onlinestore/intro', + name: 'plugin_onlinestore_intro', + component: () => + import('../views/acc/plugins/onlinestore/intro.vue'), + }, + { + path: 'notifications/list', + name: 'notification_list', + component: () => + import('../views/acc/notifications/notifications.vue'), + }, + { + path: 'sms/panel', + name: 'sms_panel_dashboard', + component: () => + import('../views/acc/smspanel/smspanel.vue'), + }, + { + path: 'plugin/noghre/employees/list', + name: 'plugin_noghre_employees_list', + component: () => + import('../views/acc/plugins/noghre/employess/list.vue'), + }, + { + path: 'plugin/noghre/employees/mod/:id?', + name: 'plugin_noghre_employees_mod', + component: () => + import('../views/acc/plugins/noghre/employess/mod.vue'), + }, + { + path: 'plugin/noghre/order/list', + name: 'plugin_noghre_order_list', + component: () => + import('../views/acc/plugins/noghre/order/list.vue'), + }, + { + path: 'plugin/noghre/order/mod/:id?', + name: 'plugin_noghre_order_mod', + component: () => + import('../views/acc/plugins/noghre/order/mod.vue'), + }, + { + path: 'plugin/noghre/order/view/:id?', + name: 'plugin_noghre_order_view', + component: () => + import('../views/acc/plugins/noghre/order/view.vue'), + }, + { + path: 'plugin/noghre/pays/view/:id?', + name: 'plugin_noghre_pays_view', + component: () => + import('../views/acc/plugins/noghre/pays.vue'), + }, + { + path: 'storeroom/commodity/check/exist', + name: 'storeroom_commodity_check_exist', + component: () => + import('../views/acc/storeroom/commodityCheck/checkByStoreroom.vue'), + }, + { + path: 'storeroom/new/ticket/type', + name: 'storeroom_new_ticket_type', + component: () => + import('../views/acc/storeroom/io/modalNew.vue'), + }, + { + path: 'storeroom/tickets/list', + name: 'storeroom_tickets_list', + component: () => + import('../views/acc/storeroom/io/ticketList.vue'), + }, + { + path: 'storeroom/ticket/view/:id', + name: 'storeroom_ticket_view', + component: () => + import('../views/acc/storeroom/io/view.vue'), + }, + { + path: 'storeroom/new/ticket/buy/:doc/:storeID', + name: 'storeroom_new_ticket_buy', + component: () => + import('../views/acc/storeroom/io/buy.vue'), + }, + { + path: 'storeroom/new/ticket/sell/:doc/:storeID', + name: 'storeroom_new_ticket_sell', + component: () => + import('../views/acc/storeroom/io/sell.vue'), + }, + { + path: 'storeroom/new/ticket/rfbuy/:doc/:storeID', + name: 'storeroom_new_ticket_rfbuy', + component: () => + import('../views/acc/storeroom/io/rfbuy.vue'), + }, + { + path: 'storeroom/new/ticket/rfsell/:doc/:storeID', + name: 'storeroom_new_ticket_rfsell', + component: () => + import('../views/acc/storeroom/io/rfsell.vue'), + }, + { + path: 'storeroom/list', + name: 'storeroom_list', + component: () => + import('../views/acc/storeroom/list.vue'), + }, + { + path: 'storeroom/mod/:id?', + name: 'storeroom_mod', + component: () => + import('../views/acc/storeroom/mod.vue'), + }, + { + path: 'archive/list', + name: 'archive_list', + component: () => + import('../views/acc/archive/view_files.vue'), + }, + { + path: 'archive/order/new', + name: 'order_new', + component: () => + import('../views/acc/archive/order_new.vue'), + }, + { + path: 'archive/order/list', + name: 'order_list', + component: () => + import('../views/acc/archive/orders_list.vue'), + }, + { + path: 'package/order/new', + name: 'package_new', + component: () => + import('../views/acc/ultimatepackage/new.vue'), + }, + { + path: 'package/order/list', + name: 'package_list', + component: () => + import('../views/acc/ultimatepackage/list.vue'), + }, + { + path: 'shareholders/list', + name: 'shareholders_list', + component: () => + import('../views/acc/shareholder/list.vue'), + }, + ], +}, + { + path: '/user/', + component: () => import('../views/user/single.vue'), + children: [ + { + path: 'login', + name: 'user_login', + component: () => import('../views/user/login.vue'), + meta: { + 'title': 'ورود کاربر', + } + }, + { + path: 'forget-password', + name: 'user_forget_password', + component: () => import('../views/user/profile/forget-password.vue'), + meta: { + 'title': 'بازیابی گذرواژه', + } + }, + { + path: 'forget-password-submit-code/:id', + name: 'user_forget_password_submit_code', + component: () => import('../views/user/profile/forget-password-submit-code.vue'), + meta: { + 'title': 'تایید کد بازیابی گذرواژه', + } + }, + { + path: 'register', + name: 'user_register', + component: () => import('../views/user/register.vue'), + meta: { + 'title': 'عضویت', + } + }, + { + path: 'active-account/:id', + name: 'user_active_account', + component: () => import('../views/user/active-account.vue'), + meta: { + 'title': 'فعال سازی حساب کاربری', + } + }, + ], + }, + { + path: '/ms/:param', + name: 'ReferralRedirect', + component: () => import('../views/user/ReferralRedirect.vue'), + }, + { + path: '/install-pwa', + name: 'install_pwa', + component: () => import('../views/user/InstallPWA.vue'), + meta: { + 'title': 'نصب وب اپلیکیشن ', } + }, + { + path: "/:catchAll(.*)", + name: "not-found", + component: () => import("../views/NotFound.vue"), + meta: { + 'title': 'صفحه یافت نشد', + } + } ] }) diff --git a/webUI/src/views/user/manager/statements/list.vue b/webUI/src/views/user/manager/statements/list.vue new file mode 100644 index 0000000..dfba47a --- /dev/null +++ b/webUI/src/views/user/manager/statements/list.vue @@ -0,0 +1,116 @@ + + + + + diff --git a/webUI/src/views/user/manager/statements/mod.vue b/webUI/src/views/user/manager/statements/mod.vue new file mode 100644 index 0000000..5751420 --- /dev/null +++ b/webUI/src/views/user/manager/statements/mod.vue @@ -0,0 +1,139 @@ + + + + + diff --git a/webUI/src/views/user/profile/profile-main.vue b/webUI/src/views/user/profile/profile-main.vue index 876ef1b..488aabf 100644 --- a/webUI/src/views/user/profile/profile-main.vue +++ b/webUI/src/views/user/profile/profile-main.vue @@ -106,6 +106,7 @@ export default defineComponent({ { text: 'تغییرات', url: '/profile/manager/changes/list', icon: 'mdi-cellphone-arrow-down', visible: true }, { text: 'تاریخچه سیستم', url: '/profile/manager/logs/list', icon: 'mdi-history', visible: true }, { text: 'کیف پول', url: '/profile/manager/wallet/list', icon: 'mdi-wallet', visible: true }, + { text: 'اطلاعیه‌ها', url: '/profile/manager/statments/list', icon: 'mdi-bell', visible: true }, ], adminSettings: [