diff --git a/.env b/.env index ba2e359..0f150e0 100644 --- a/.env +++ b/.env @@ -1 +1,2 @@ -VUE_APP_ROOT_URL="http://192.168.1.198:8000/api/v1/" \ No newline at end of file +VUE_APP_ROOT_URL="https://api.novinplast.org/api/v1/" +COLOR_ATTRIBUTE_ID = "1" \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 5442a81..9001ba9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -39,6 +39,7 @@ "form-wizard-vue3": "^1.1.0", "fslightbox": "^3.4.1", "is": "^3.3.0", + "jalaali-js": "^1.2.7", "jalali-moment": "^3.3.11", "jquery": "^3.7.1", "moment": "^2.30.1", @@ -64,6 +65,7 @@ "vue3-datepicker": "^0.4.0", "vue3-google-map": "^0.18.0", "vue3-persian-datetime-picker": "^1.2.2", + "vue3-select2-component": "^0.1.7", "vue3-toastify": "^0.2.5", "vuex": "^4.1.0", "yarn": "^1.22.21" @@ -11982,6 +11984,12 @@ "dev": true, "license": "MIT" }, + "node_modules/select2": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/select2/-/select2-4.0.13.tgz", + "integrity": "sha512-1JeB87s6oN/TDxQQYCvS5EFoQyvV6eYMZZ0AeA4tdFDYWN3BAGZ8npr17UBFddU0lgAt3H0yjX3X6/ekOj1yjw==", + "license": "MIT" + }, "node_modules/selfsigned": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", @@ -13689,6 +13697,16 @@ "moment-jalaali": "^0.9.4" } }, + "node_modules/vue3-select2-component": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/vue3-select2-component/-/vue3-select2-component-0.1.7.tgz", + "integrity": "sha512-8UPZmFl02I47XwW+j8ICmHyAND8wfbavlvMrqh10wwdSVER1aF2kI9XCmfIrNlVQvxSbvc0mJjWQAHHSCW9dkw==", + "license": "MIT", + "dependencies": { + "jquery": "^3.3.1", + "select2": "^4.0.7-rc.0" + } + }, "node_modules/vue3-toastify": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/vue3-toastify/-/vue3-toastify-0.2.5.tgz", diff --git a/package.json b/package.json index d1a26aa..af77fb1 100644 --- a/package.json +++ b/package.json @@ -39,6 +39,7 @@ "form-wizard-vue3": "^1.1.0", "fslightbox": "^3.4.1", "is": "^3.3.0", + "jalaali-js": "^1.2.7", "jalali-moment": "^3.3.11", "jquery": "^3.7.1", "moment": "^2.30.1", @@ -64,6 +65,7 @@ "vue3-datepicker": "^0.4.0", "vue3-google-map": "^0.18.0", "vue3-persian-datetime-picker": "^1.2.2", + "vue3-select2-component": "^0.1.7", "vue3-toastify": "^0.2.5", "vuex": "^4.1.0", "yarn": "^1.22.21" diff --git a/src/assets/custom/دسته بندی ها.png b/src/assets/custom/دسته بندی ها.png new file mode 100644 index 0000000..ed5c16a Binary files /dev/null and b/src/assets/custom/دسته بندی ها.png differ diff --git a/src/assets/custom/صفحه اصلی.png b/src/assets/custom/صفحه اصلی.png new file mode 100644 index 0000000..07a67b4 Binary files /dev/null and b/src/assets/custom/صفحه اصلی.png differ diff --git a/src/components/customSidebar.vue b/src/components/customSidebar.vue index 638e964..0bbb075 100644 --- a/src/components/customSidebar.vue +++ b/src/components/customSidebar.vue @@ -30,7 +30,6 @@ export default { const logoutUser = async () => { try { const result = await Swal.fire({ - title: "آیا مطمئن هستید؟", text: "شما از سیستم خارج خواهید شد.", icon: "warning", showCancelButton: true, @@ -51,6 +50,10 @@ export default { } }; + const gotoAccount = () => { + router.push({ name: "profile" }); + }; + onMounted(() => { updateLogo(); @@ -68,7 +71,7 @@ export default { }); }); - return { currentLogo, user, logoutUser }; + return { currentLogo, user, logoutUser, gotoAccount }; }, components: { ChevronDownIcon, @@ -134,7 +137,6 @@ export default { let collapses = document.querySelectorAll(".navbar-content .collapse"); collapses.forEach((collapse) => { - // Hide sibling collapses on `show.bs.collapse` collapse.addEventListener("show.bs.collapse", (e) => { e.stopPropagation(); let closestCollapse = collapse.parentElement.closest(".collapse"); @@ -246,6 +248,17 @@ export default { کاربران +
  • + + + + + بنر ها +
  • @@ -266,6 +279,17 @@ export default { ویژگی ها
  • +
  • + + + + + مشخصات +
  • @@ -296,13 +320,44 @@ export default { تخفیف ها
  • -
  • - + +
  • + +
    + +
  • نظرات
  • -
  • +
  • @@ -365,6 +417,15 @@ export default {
  • +
  • + + + + + پیگیری +
  • + @@ -392,7 +453,7 @@ export default { - +
    diff --git a/src/components/modals/Brands/addBrand.vue b/src/components/modals/Brands/addBrand.vue index cb9d8c2..3d2f105 100644 --- a/src/components/modals/Brands/addBrand.vue +++ b/src/components/modals/Brands/addBrand.vue @@ -128,7 +128,6 @@ + + + \ No newline at end of file diff --git a/src/components/modals/editUser.vue b/src/components/modals/editUser.vue index 782dc2a..69fde0d 100644 --- a/src/components/modals/editUser.vue +++ b/src/components/modals/editUser.vue @@ -61,8 +61,9 @@ class="form-select" v-model="localRole" @change="clearError('role')" + placeholder="نوع کاربر" > - + @@ -121,7 +122,6 @@ + + diff --git a/src/components/modals/helperModals/mainPageBanner.vue b/src/components/modals/helperModals/mainPageBanner.vue new file mode 100644 index 0000000..d2b7e19 --- /dev/null +++ b/src/components/modals/helperModals/mainPageBanner.vue @@ -0,0 +1,130 @@ + + + + + diff --git a/src/components/modals/identity/addIdentity.vue b/src/components/modals/identity/addIdentity.vue new file mode 100644 index 0000000..a52b1f7 --- /dev/null +++ b/src/components/modals/identity/addIdentity.vue @@ -0,0 +1,290 @@ + + + + + diff --git a/src/components/modals/identity/editIdentity.vue b/src/components/modals/identity/editIdentity.vue new file mode 100644 index 0000000..3d6202e --- /dev/null +++ b/src/components/modals/identity/editIdentity.vue @@ -0,0 +1,316 @@ + + + + + diff --git a/src/components/modals/profile/accountInfo.vue b/src/components/modals/profile/accountInfo.vue new file mode 100644 index 0000000..1be9412 --- /dev/null +++ b/src/components/modals/profile/accountInfo.vue @@ -0,0 +1,164 @@ + + diff --git a/src/components/modals/profile/addAddress.vue b/src/components/modals/profile/addAddress.vue new file mode 100644 index 0000000..dd7a96e --- /dev/null +++ b/src/components/modals/profile/addAddress.vue @@ -0,0 +1,221 @@ + + diff --git a/src/components/modals/profile/addressList.vue b/src/components/modals/profile/addressList.vue new file mode 100644 index 0000000..e3ac734 --- /dev/null +++ b/src/components/modals/profile/addressList.vue @@ -0,0 +1,146 @@ + + + diff --git a/src/components/navbar.vue b/src/components/navbar.vue index ca46bd0..b01bc56 100644 --- a/src/components/navbar.vue +++ b/src/components/navbar.vue @@ -1,4 +1,5 @@ \ No newline at end of file + + 7 + + + + user-image + + +
    Apple Series 4 GPS A38 MM Space
    +

    + Apple Watch SE Smartwatch +

    +
    +
    + + Electronics, Laptop + $14.59 + 70 + + + + + user-image + + + + + 2 + + + + user-image + + +
    Boat On-Ear Wireless
    +

    + Mic(Bluetooth 4.2, Rockerz 450R +

    +
    +
    + + Electronics, Headphones + $81.99 + 45 + + + + + user-image + + + + + 7 + + + + user-image + + +
    Apple Series 4 GPS A38 MM Space
    +

    + Apple Watch SE Smartwatch +

    +
    +
    + + Electronics, Laptop + $14.59 + 70 + + + + + user-image + + + + + 2 + + + + user-image + + +
    Boat On-Ear Wireless
    +

    + Mic(Bluetooth 4.2, Rockerz 450R +

    +
    +
    + + Electronics, Headphones + $81.99 + 45 + + + + + user-image + + + + + 5 + + + + user-image + + +
    Fitbit MX30 Smart Watch
    +

    + (MX30- waterproof) watch +

    +
    +
    + + Fashion, Watch + $49.9 + 21 + + + + + user-image + + + + + + + + +
    +
    + + diff --git a/src/views/live-preview/pages/attributes/attributes.vue b/src/views/live-preview/pages/attributes/attributes.vue index 1ee54f9..1629785 100644 --- a/src/views/live-preview/pages/attributes/attributes.vue +++ b/src/views/live-preview/pages/attributes/attributes.vue @@ -39,7 +39,7 @@ export default { const getAttributes = () => { filterLoading.value = true; ApiServiece.get( - `admin/attribute-values?title=${encodeURIComponent( + `admin/attribute-values?attribute_id=1&title=${encodeURIComponent( searchQuery.value || "" )}&code=${encodeURIComponent(searchQuery.value || "")} &paginate=${paginate.value || 10}&page=${page.value || 1} @@ -156,6 +156,7 @@ export default { const getAttributeValues = () => { ApiServiece.get(`admin/attributes`).then((resp) => { + console.log(resp) attributeValues.value = resp.data.data; }); }; @@ -195,7 +196,7 @@ export default {
    diff --git a/src/views/live-preview/pages/banners/addBanner.vue b/src/views/live-preview/pages/banners/addBanner.vue new file mode 100644 index 0000000..a57306c --- /dev/null +++ b/src/views/live-preview/pages/banners/addBanner.vue @@ -0,0 +1,539 @@ + + + + + diff --git a/src/views/live-preview/pages/banners/banners.vue b/src/views/live-preview/pages/banners/banners.vue new file mode 100644 index 0000000..e03d96d --- /dev/null +++ b/src/views/live-preview/pages/banners/banners.vue @@ -0,0 +1,473 @@ + + + + diff --git a/src/views/live-preview/pages/banners/editBanner.vue b/src/views/live-preview/pages/banners/editBanner.vue new file mode 100644 index 0000000..bcf0aea --- /dev/null +++ b/src/views/live-preview/pages/banners/editBanner.vue @@ -0,0 +1,577 @@ + + + + + diff --git a/src/views/live-preview/pages/blogCats/blogCat.vue b/src/views/live-preview/pages/blogCats/blogCat.vue index cdb5ff1..2c56614 100644 --- a/src/views/live-preview/pages/blogCats/blogCat.vue +++ b/src/views/live-preview/pages/blogCats/blogCat.vue @@ -137,6 +137,7 @@ export default { }; const editModalData = (id, title, icon) => { + catId.value = id; catTitle.value = title; catIcon.value = icon; @@ -183,7 +184,7 @@ export default {
    diff --git a/src/views/live-preview/pages/blogs/addBlog.vue b/src/views/live-preview/pages/blogs/addBlog.vue index 01af477..dbf87cf 100644 --- a/src/views/live-preview/pages/blogs/addBlog.vue +++ b/src/views/live-preview/pages/blogs/addBlog.vue @@ -27,12 +27,12 @@
    - + @@ -98,9 +98,10 @@ :class="{ 'is-invalid': errors.blogCat }" v-model="blogCat" class="form-control" - @input="clearError('blogCat')" + @change="clearError('blogCat')" + placeholder="انتخاب دسته بلاگ" > - + @@ -165,7 +166,7 @@ + + + diff --git a/src/views/live-preview/pages/catrgories/cats.vue b/src/views/live-preview/pages/catrgories/cats.vue index e59995f..42b0a13 100644 --- a/src/views/live-preview/pages/catrgories/cats.vue +++ b/src/views/live-preview/pages/catrgories/cats.vue @@ -2,7 +2,7 @@ import Layout from "@/layout/custom.vue"; import ApiServiece from "@/services/ApiService"; import moment from "jalali-moment"; -import { onMounted, ref, watch , computed } from "vue"; +import { onMounted, ref, watch, computed } from "vue"; import { toast } from "vue3-toastify"; import "vue3-toastify/dist/index.css"; import Swal from "sweetalert2"; @@ -18,6 +18,7 @@ export default { editCat, }, setup() { + const catIcon = ref(); const searchPage = ref(); const currentPage = ref(1); const totalPages = ref(1); @@ -41,9 +42,11 @@ export default { }); const getCats = () => { filterLoading.value = true; - ApiServiece.get(`admin/categories?title=${searchQuery.value}&paginate=${ + ApiServiece.get( + `admin/categories?title=${searchQuery.value}&paginate=${ paginate.value || 10 - }&page=${page.value || 1}`) + }&page=${page.value || 1}` + ) .then((resp) => { filterLoading.value = false; cats.value = resp.data.data.data; @@ -107,7 +110,7 @@ export default { }; const deleteCat = (id, title) => { Swal.fire({ - title: `می خواهید دسته ${title} را حذف کنید ؟`, + text: `می خواهید دسته ${title} را حذف کنید؟`, icon: "warning", showCancelButton: true, confirmButtonColor: "#3085d6", @@ -122,7 +125,7 @@ export default { position: "top-right", autoClose: 3000, }); - cats.value = cats.value.filter((cat) => cat.id !== id); + getCats(); }) .catch((err) => { console.log(err); @@ -135,12 +138,13 @@ export default { }); }; - const editModalData = (id, title, desc, parent, img) => { + const editModalData = (id, title, desc, parent, img, icon) => { catId.value = id; catTitle.value = title; catDescription.value = desc; catParent.value = parent; catImage.value = img; + catIcon.value = icon; }; const descriptionModal = (desc) => { @@ -151,6 +155,38 @@ export default { getCats(); }); + const restoreCat = (id, title) => { + Swal.fire({ + text: `می خواهید دسته ${title} را بازیابی کنید؟`, + icon: "warning", + showCancelButton: true, + confirmButtonColor: "#3085d6", + cancelButtonColor: "#d33", + confirmButtonText: "بله!", + cancelButtonText: "خیر", + }).then((result) => { + if (result.isConfirmed) { + ApiServiece.put(`admin/categories/${id}/restore`) + .then(() => { + toast.success("!دسته با موفقیت بازیابی شد", { + position: "top-right", + autoClose: 3000, + }); + }) + .then(() => { + getCats(); + }) + .catch((err) => { + console.log(err); + toast.error("!مشکلی در بازیابی دسته پیش آمد", { + position: "top-right", + autoClose: 3000, + }); + }); + } + }); + }; + onMounted(() => { getCats(); }); @@ -176,6 +212,8 @@ export default { handlePageInput, searchPage, visiblePages, + catIcon, + restoreCat, }; }, }; @@ -186,7 +224,7 @@ export default {
    @@ -256,7 +294,8 @@ export default { cat?.title, cat.description, cat?.parent?.id, - cat?.image + cat?.image, + cat?.icon ) " data-bs-toggle="modal" @@ -266,11 +305,19 @@ export default { ویرایش + @@ -291,82 +338,82 @@ export default { :parent="catParent" :image="catImage" :allParents="cats" + :icon="catIcon" @cat-updated="handleCatUpdated()" /> - -
    - +
    +
    + +
    + +
    +
    diff --git a/src/views/live-preview/pages/comments/comments.vue b/src/views/live-preview/pages/comments/comments.vue index bfa0c8d..f89984f 100644 --- a/src/views/live-preview/pages/comments/comments.vue +++ b/src/views/live-preview/pages/comments/comments.vue @@ -80,7 +80,7 @@ export default { const deleteDiscount = (id, title) => { Swal.fire({ - text: `می خواهید تخفیف ${title} را حذف کنید ؟`, + text: `می خواهید تخفیف ${title} را حذف کنید؟`, icon: "warning", showCancelButton: true, confirmButtonColor: "#3085d6", @@ -125,11 +125,11 @@ export default { const changeCommentStatus = (id, op) => { let text, successMessage, errorMessage; if (op === "confirmed") { - text = `آیای می خواهید این نظر را قبول کنید؟`; + text = ` می خواهید این نظر را قبول کنید؟`; successMessage = "!نظر با موفقیت قبول شد"; errorMessage = "!مشکلی در تغییر وضعیت نظر ایجاد شد"; } else if (op === "rejected") { - text = `آیای می خواهید این نظر را رد کنید؟`; + text = `می خواهید این نظر را رد کنید؟`; successMessage = "!نظر با موفقیت رد شد"; errorMessage = "!مشکلی در تغییر وضعیت نظر ایجاد شد"; } @@ -197,7 +197,6 @@ export default { deleteDiscount, searchQuery, filterLoading, - currentPage, totalPages, nextPage, @@ -218,10 +217,10 @@ export default {
    -
    +
    diff --git a/src/views/live-preview/pages/discounts/addDiscount.vue b/src/views/live-preview/pages/discounts/addDiscount.vue index 8a14512..63ed3d1 100644 --- a/src/views/live-preview/pages/discounts/addDiscount.vue +++ b/src/views/live-preview/pages/discounts/addDiscount.vue @@ -33,10 +33,8 @@ class="form-control" :class="{ 'is-invalid': errors.discountType }" @change="clearError('discountType')" + placeholder="انتخاب نوع تخفیف" > - @@ -105,10 +103,8 @@ class="form-control" :class="{ 'is-invalid': errors.whichPart }" @select="clearError('whichPart')" + placeholder="انتخاب محل اعمال تخفبف" > - @@ -127,8 +123,8 @@ v-model="selectedCat" class="form-control" @select="clearError('selectedCat')" + placeholder="انتخاب دسته" > - @@ -141,26 +137,19 @@ -
    - - -
    + + + {{ errors.selectedProduct }} @@ -171,7 +160,7 @@ تاریخ انقضای تخفیف - بارگذاری... + ایجاد... ایجاد @@ -223,11 +212,12 @@ + + + diff --git a/src/views/live-preview/pages/orders/allOrdersItems.vue b/src/views/live-preview/pages/orders/allOrdersItems.vue new file mode 100644 index 0000000..579b401 --- /dev/null +++ b/src/views/live-preview/pages/orders/allOrdersItems.vue @@ -0,0 +1,304 @@ + + + + + diff --git a/src/views/live-preview/pages/orders/approvedOrders.vue b/src/views/live-preview/pages/orders/approvedOrders.vue new file mode 100644 index 0000000..e779995 --- /dev/null +++ b/src/views/live-preview/pages/orders/approvedOrders.vue @@ -0,0 +1,466 @@ + + + + + diff --git a/src/views/live-preview/pages/orders/orders.vue b/src/views/live-preview/pages/orders/orders.vue index f5d7c64..a2a7b35 100644 --- a/src/views/live-preview/pages/orders/orders.vue +++ b/src/views/live-preview/pages/orders/orders.vue @@ -98,9 +98,10 @@ export default { }; return statusLabels[status] || "نامشخص"; }; + const deleteOrder = (id) => { Swal.fire({ - text: `می خواهید سفارش ${id} را حذف کنید ؟`, + text: `می خواهید سفارش ${id} را حذف کنید؟`, icon: "warning", showCancelButton: true, confirmButtonColor: "#3085d6", @@ -128,6 +129,42 @@ export default { }); }; + const changeStatus = (id, status) => { + Swal.fire({ + text: `آیا می خواهید وضعیت سبد خرید را به ${getStatusLabel( + status + )} تغییر دهید؟ `, + icon: "warning", + showCancelButton: true, + confirmButtonColor: "#3085d6", + cancelButtonColor: "#d33", + confirmButtonText: "بله!", + cancelButtonText: "خیر", + }).then((result) => { + if (result.isConfirmed) { + const formData = new FormData(); + formData.append("status", status); + ApiServiece.put(`admin/orders/${id}`, formData) + .then(() => { + toast.success("!تغییر وضعیت سبد خرید با موفقیت انجام شد", { + position: "top-right", + autoClose: 3000, + }); + }) + .then(() => { + getOrders(); + }) + .catch((err) => { + console.log(err); + toast.error("!مشکلی در تغییر وضعیت سبد خرید پیش آمد", { + position: "top-right", + autoClose: 3000, + }); + }); + } + }); + }; + function handlePageInput() { if (searchPage.value < 1) { searchPage.value = 1; @@ -168,11 +205,10 @@ export default { return { orders, convertToJalali, - deleteOrder, searchQuery, filterLoading, - + changeStatus, currentPage, totalPages, nextPage, @@ -193,7 +229,7 @@ export default {
    @@ -238,11 +274,95 @@ export default { مشاهده + + @@ -454,4 +574,7 @@ export default { .badge-canceled { background-color: #6c757d; } +.dropdown-item { + cursor: pointer; +} diff --git a/src/views/live-preview/pages/orders/singleOrder.vue b/src/views/live-preview/pages/orders/singleOrder.vue index 5586506..0f51372 100644 --- a/src/views/live-preview/pages/orders/singleOrder.vue +++ b/src/views/live-preview/pages/orders/singleOrder.vue @@ -3,9 +3,6 @@ import Layout from "@/layout/custom.vue"; import ApiServiece from "@/services/ApiService"; import { useRoute } from "vue-router"; import { onMounted, ref } from "vue"; -import { toast } from "vue3-toastify"; -import "vue3-toastify/dist/index.css"; -import Swal from "sweetalert2"; export default { name: "OrderDetails", @@ -59,40 +56,47 @@ export default { }); }; - const changeStatus = (status) => { - Swal.fire({ - text: `آیا می خواهید وضعیت سفارش را به ${status} تغییر دهید ؟ `, - icon: "warning", - showCancelButton: true, - confirmButtonColor: "#3085d6", - cancelButtonColor: "#d33", - confirmButtonText: "بله!", - cancelButtonText: "خیر", - }).then((result) => { - if (result.isConfirmed) { - const formData = new FormData(); - formData.append("status", status); - ApiServiece.put(`admin/orders/${route.params.id}` , formData) - .then(() => { - toast.success("!تغییر وضعیت با موفقیت انجام شد", { - position: "top-right", - autoClose: 3000, - }); - }) - .then(()=>{ - getOrder() - }) - .catch((err) => { - console.log(err); - toast.error("!مشکلی در تغییر وضعیت سفارش پیش آمد", { - position: "top-right", - autoClose: 3000, - }); - }); - } - }); + const updateShippedCount = (item) => { + const formData = new FormData(); + formData.append("send_count", item.send_count); + ApiServiece.put(`admin/orders/order-items/${item.id}`, formData) + .then(() => { + console.log("Shipped quantity updated successfully."); + }) + .catch((error) => { + console.error("Failed to update shipped quantity:", error); + }); + }; + + const updateNote = (item) => { + // Call API to update the note + console.log(item); + const formData = new FormData(); + formData.append("description", item.description); + ApiServiece.put(`admin/orders/order-items/${item.id}`, formData) + .then(() => { + console.log("Note updated successfully."); + }) + .catch((error) => { + console.error("Failed to update note:", error); + }); }; + const updateStatus = (item) => { + const formData = new FormData(); + formData.append("status", item.status); + ApiServiece.put(`admin/orders/order-items/${item.id}`, formData) + .then(() => { + console.log("Status updated successfully."); + }) + .catch((error) => { + console.error("Failed to update status:", error); + }); + }; + function formatWithCommas(number) { + return number.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); + } + onMounted(() => { getOrder(); }); @@ -102,7 +106,10 @@ export default { getStatusClass, formatDate, getStatusLabel, - changeStatus, + updateShippedCount, + updateNote, + updateStatus, + formatWithCommas }; }, }; @@ -117,128 +124,81 @@ export default { class="d-flex justify-content-between align-items-center" >
    جزئیات سفارش
    - - - - شناسه سفارش: {{ order.id }} - - وضعیت: - - {{ getStatusLabel(order.status) }} - - - - - - قیمت کل: {{ order.total_price }} تومان - - - هزینه ارسال: {{ order.shipping_price }} تومان - - - - - تاریخ ثبت سفارش: - {{ formatDate(order.created_at) }} - - - تاریخ بروزرسانی: - {{ formatDate(order.updated_at) }} - - + -
    آیتم های سفارش
    + + + + + + + + + + + + + + + + +
    @@ -293,7 +253,14 @@ export default { h5 { font-weight: bold; } -.dropdown-item{ - cursor: pointer; +.dropdown-item { + cursor: pointer; +} +.table-header { + text-align: center; +} +.selector { + padding: 4px; + height: 35px; } diff --git a/src/views/live-preview/pages/products/addProduct.vue b/src/views/live-preview/pages/products/addProduct.vue index 0a2e073..8910a7c 100644 --- a/src/views/live-preview/pages/products/addProduct.vue +++ b/src/views/live-preview/pages/products/addProduct.vue @@ -8,7 +8,6 @@ -
    @@ -26,15 +25,14 @@ -
    - + @@ -44,7 +42,6 @@ -
    @@ -149,6 +146,23 @@ + +
    + + +
    + + {{ errors.countInCarton }} + +
    +
    @@ -247,7 +261,7 @@ - @@ -288,10 +300,8 @@ v-model="selectedBrand" class="form-control" @change="clearError('selectedBrand')" + placeholder="انتخاب برند محصول" > -
    - + - - - - +
    +
    اضافه کردن مشخصه ها
    +
    + + + + + + +
    + +
    - -
    -
    -
    + + @@ -466,22 +563,29 @@ + + diff --git a/src/views/live-preview/pages/test b/src/views/live-preview/pages/test index 2f3b562..8f2caaf 100644 --- a/src/views/live-preview/pages/test +++ b/src/views/live-preview/pages/test @@ -29,12 +29,12 @@
    - + @@ -586,7 +586,7 @@ export default { errors.value = {}; if (!title.value) errors.value.title = "وارد کردن عنوان محصول الزامی است"; if (!slug.value) - errors.value.slug = "وارد کردن اسلاگ محصول ضروری می باشد"; + errors.value.slug = "وارد کردن کلمه کلیدی محصول ضروری می باشد"; if (!summary.value) errors.value.summary = "وارد کردن خلاصه محصول ضروری می باشد"; if (!blogCat.value) diff --git a/src/views/live-preview/pages/users/users.vue b/src/views/live-preview/pages/users/users.vue index cd0fc52..8b74a2e 100644 --- a/src/views/live-preview/pages/users/users.vue +++ b/src/views/live-preview/pages/users/users.vue @@ -114,7 +114,7 @@ export default { const blockUser = (id) => { Swal.fire({ - title: "آیا مطمئن هستید؟", + text: "آیا میخواهید این کاربر را مسدود کنید؟", icon: "warning", showCancelButton: true, @@ -147,7 +147,7 @@ export default { const unBlockUser = (id) => { Swal.fire({ - title: "آیا مطمئن هستید؟", + text: "آیا میخواهید این کاربر را فعال نمایید؟", icon: "warning", showCancelButton: true, @@ -242,15 +242,16 @@ export default {
  • بلاک
  • --> -
    - - +
    + +
    @@ -262,7 +263,7 @@ export default { موبایل نقش تاریخ ایجاد - فعالیت + وضعیت