| @@ -1,4 +1,4 @@ | |||||
| { | { | ||||
| "title": "Light Able Vue3 Admin & Dashboard Template", | |||||
| "description": "Light Able is a fully featured premium Vuejs admin dashboard template built with Bootstrap" | |||||
| "title": "NovinPlast", | |||||
| "description": "NovinPlast" | |||||
| } | } | ||||
| @@ -1 +0,0 @@ | |||||
| .product-img[data-v-ad78ea8e]{max-width:48px;min-width:48px;max-height:45px;min-height:45px;-o-object-fit:cover;object-fit:cover}.brand-img[data-v-ad78ea8e]{max-width:43px;min-width:43px;max-height:40px;min-height:40px;-o-object-fit:cover;object-fit:cover}.search-number[data-v-ad78ea8e]{display:flex;align-items:center}.search-number input[data-v-ad78ea8e]{width:150px;padding:.5rem;font-size:1rem;border-radius:.375rem;margin-bottom:7px;border:1px solid #ced4da;transition:border-color .3s ease,box-shadow .3s ease}.search-number input[data-v-ad78ea8e]:focus{border-color:#007bff;box-shadow:0 0 0 .2rem rgba(38,143,255,.25)}.search-number input[data-v-ad78ea8e]::-moz-placeholder{color:#6c757d}.search-number input[data-v-ad78ea8e]::placeholder{color:#6c757d}.search-number input[data-v-ad78ea8e]:disabled{background-color:#f8f9fa;cursor:not-allowed}.pagination[data-v-ad78ea8e]{display:flex;flex-wrap:wrap;gap:5px}.page-item[data-v-ad78ea8e]{flex:0 0 auto}.page-link[data-v-ad78ea8e]{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none} | |||||
| @@ -1 +1,30 @@ | |||||
| <!doctype html><html lang=""><head><meta charset="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta name="viewport" content="width=device-width,initial-scale=1"/><link rel="icon" href="/favicon.svg"/><link rel="stylesheet" href="/fonts/vazir.css"/><title>LightAble</title><script defer="defer" src="/js/chunk-vendors.e8a82f84.js"></script><script defer="defer" src="/js/app.dbf18e6e.js"></script><link href="/css/chunk-vendors.fd1119e3.css" rel="stylesheet"><link href="/css/app.80538a0b.css" rel="stylesheet"></head><body lang><noscript><strong>We're sorry but LightAble doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html> | |||||
| <!DOCTYPE html> | |||||
| <html lang=""> | |||||
| <head> | |||||
| <meta charset="utf-8" /> | |||||
| <meta http-equiv="X-UA-Compatible" content="IE=edge" /> | |||||
| <meta name="viewport" content="width=device-width,initial-scale=1" /> | |||||
| <link rel="icon" href="/favicon.svg" /> | |||||
| <link rel="stylesheet" href="/fonts/vazir.css" /> | |||||
| <script | |||||
| defer="defer" | |||||
| src="https://bazarce.liara.run/script.js" | |||||
| data-website-id="7baabdd5-3224-41c1-9267-d2a1abd29d01" | |||||
| ></script> | |||||
| <title>LightAble</title> | |||||
| <script defer="defer" src="/js/chunk-vendors.f384eb27.js"></script> | |||||
| <script defer="defer" src="/js/app.274a0e78.js"></script> | |||||
| <link href="/css/chunk-vendors.fd1119e3.css" rel="stylesheet" /> | |||||
| <link href="/css/app.80538a0b.css" rel="stylesheet" /> | |||||
| <script defer src="https://bazarce.liara.run/script.js" data-website-id="7baabdd5-3224-41c1-9267-d2a1abd29d01"></script> | |||||
| </head> | |||||
| <body lang> | |||||
| <noscript | |||||
| ><strong | |||||
| >We're sorry but LightAble doesn't work properly without JavaScript | |||||
| enabled. Please enable it to continue.</strong | |||||
| ></noscript | |||||
| > | |||||
| <div id="app"></div> | |||||
| </body> | |||||
| </html> | |||||
| @@ -233,9 +233,7 @@ export default { | |||||
| class="logo-lg custom_logo" | class="logo-lg custom_logo" | ||||
| /> | /> | ||||
| <img src="@/assets/images/favicon.svg" alt="" class="logo logo-sm" /> | <img src="@/assets/images/favicon.svg" alt="" class="logo logo-sm" /> | ||||
| <span class="badge bg-brand-color-2 rounded-pill ms-2 theme-version" | |||||
| >v1.0</span | |||||
| > | |||||
| </router-link> | </router-link> | ||||
| </div> | </div> | ||||
| <simplebar data-simplebar class="navbar-content pc-trigger"> | <simplebar data-simplebar class="navbar-content pc-trigger"> | ||||
| @@ -67,6 +67,7 @@ | |||||
| > | > | ||||
| <option value="admin">مدیر</option> | <option value="admin">مدیر</option> | ||||
| <option value="client">مشتری</option> | <option value="client">مشتری</option> | ||||
| <option value="operator">اپراتور</option> | |||||
| </select> | </select> | ||||
| <small v-if="errors.role" class="text-danger">{{ | <small v-if="errors.role" class="text-danger">{{ | ||||
| @@ -210,7 +211,7 @@ export default { | |||||
| }) | }) | ||||
| .catch((error) => { | .catch((error) => { | ||||
| console.error(error.response.data.message); | console.error(error.response.data.message); | ||||
| toast.error(`${error.response.data.message}` , { | |||||
| toast.error(`${error.response.data.message}`, { | |||||
| position: "top-right", | position: "top-right", | ||||
| autoClose: 1000, | autoClose: 1000, | ||||
| }); | }); | ||||
| @@ -65,6 +65,7 @@ | |||||
| > | > | ||||
| <option value="admin">مدیر</option> | <option value="admin">مدیر</option> | ||||
| <option value="client">مشتری</option> | <option value="client">مشتری</option> | ||||
| <option value="operator">اپراتور</option> | |||||
| </select> | </select> | ||||
| <small v-if="errors.role" class="text-danger">{{ | <small v-if="errors.role" class="text-danger">{{ | ||||
| @@ -19,7 +19,7 @@ export default { | |||||
| const store = useStore(); | const store = useStore(); | ||||
| const mobile = ref(""); | const mobile = ref(""); | ||||
| const otpSent = ref(false); | const otpSent = ref(false); | ||||
| const timer = ref(20); | |||||
| const timer = ref(120); | |||||
| const otpCode = ref(""); | const otpCode = ref(""); | ||||
| const resendAvailable = ref(false); | const resendAvailable = ref(false); | ||||
| let timerInterval = null; | let timerInterval = null; | ||||
| @@ -1,6 +1,6 @@ | |||||
| <script> | <script> | ||||
| import Layout from "@/layout/custom.vue"; | import Layout from "@/layout/custom.vue"; | ||||
| import { onMounted, ref, watch , computed } from "vue"; | |||||
| import { onMounted, ref, watch, computed } from "vue"; | |||||
| import Swal from "sweetalert2"; | import Swal from "sweetalert2"; | ||||
| import ApiServiece from "@/services/ApiService"; | import ApiServiece from "@/services/ApiService"; | ||||
| import moment from "jalali-moment"; | import moment from "jalali-moment"; | ||||
| @@ -59,7 +59,7 @@ export default { | |||||
| getUsers(); | getUsers(); | ||||
| } | } | ||||
| }; | }; | ||||
| const visiblePages = computed(() => { | const visiblePages = computed(() => { | ||||
| const pages = []; | const pages = []; | ||||
| if (totalPages.value <= 5) { | if (totalPages.value <= 5) { | ||||
| @@ -80,12 +80,10 @@ export default { | |||||
| return pages; | return pages; | ||||
| }); | }); | ||||
| watch(searchQuery, () => { | watch(searchQuery, () => { | ||||
| getUsers(); | getUsers(); | ||||
| }); | }); | ||||
| watch(page, () => { | watch(page, () => { | ||||
| getUsers(); | getUsers(); | ||||
| }); | }); | ||||
| @@ -114,7 +112,6 @@ export default { | |||||
| const blockUser = (id) => { | const blockUser = (id) => { | ||||
| Swal.fire({ | Swal.fire({ | ||||
| text: "آیا میخواهید این کاربر را مسدود کنید؟", | text: "آیا میخواهید این کاربر را مسدود کنید؟", | ||||
| icon: "warning", | icon: "warning", | ||||
| showCancelButton: true, | showCancelButton: true, | ||||
| @@ -147,7 +144,6 @@ export default { | |||||
| const unBlockUser = (id) => { | const unBlockUser = (id) => { | ||||
| Swal.fire({ | Swal.fire({ | ||||
| text: "آیا میخواهید این کاربر را فعال نمایید؟", | text: "آیا میخواهید این کاربر را فعال نمایید؟", | ||||
| icon: "warning", | icon: "warning", | ||||
| showCancelButton: true, | showCancelButton: true, | ||||
| @@ -202,7 +198,7 @@ export default { | |||||
| prevPage, | prevPage, | ||||
| visiblePages, | visiblePages, | ||||
| page, | page, | ||||
| searchPage | |||||
| searchPage, | |||||
| }; | }; | ||||
| }, | }, | ||||
| }; | }; | ||||
| @@ -242,16 +238,14 @@ export default { | |||||
| <li><a class="dropdown-item" href="#">بلاک</a></li> | <li><a class="dropdown-item" href="#">بلاک</a></li> | ||||
| </ul> | </ul> | ||||
| </div> --> | </div> --> | ||||
| <button | |||||
| data-bs-toggle="modal" | |||||
| data-bs-target="#addUser" | |||||
| class="btn btn-add-user me-3" | |||||
| > | |||||
| افزودن کاربر | |||||
| </button> | |||||
| <button | |||||
| data-bs-toggle="modal" | |||||
| data-bs-target="#addUser" | |||||
| class="btn btn-add-user me-3" | |||||
| > | |||||
| افزودن کاربر | |||||
| </button> | |||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| <div class="table-responsive"> | <div class="table-responsive"> | ||||
| @@ -287,6 +281,7 @@ export default { | |||||
| <td>{{ user?.mobile }}</td> | <td>{{ user?.mobile }}</td> | ||||
| <td v-if="user.role === 'admin'">مدیر</td> | <td v-if="user.role === 'admin'">مدیر</td> | ||||
| <td v-if="user.role === 'client'">مشتری</td> | <td v-if="user.role === 'client'">مشتری</td> | ||||
| <td v-if="user.role === 'operator'">اپراتور</td> | |||||
| <td>{{ convertToJalali(user.created_at) }}</td> | <td>{{ convertToJalali(user.created_at) }}</td> | ||||
| <td> | <td> | ||||
| <span | <span | ||||