Explorar el Código

making nuloufar edits

master
unknown hace 11 meses
padre
commit
b0e0665158
Se han modificado 16 ficheros con 97 adiciones y 98 borrados
  1. +10
    -0
      package-lock.json
  2. +1
    -0
      package.json
  3. +2
    -2
      src/components/modals/addUser.vue
  4. +1
    -1
      src/components/modals/attribute/editAttribute.vue
  5. +9
    -9
      src/components/modals/commonModals/showDescription.vue
  6. +2
    -2
      src/views/live-preview/pages/attributes/attributes.vue
  7. +10
    -12
      src/views/live-preview/pages/banners/addBanner.vue
  8. +1
    -1
      src/views/live-preview/pages/banners/banners.vue
  9. +15
    -12
      src/views/live-preview/pages/banners/editBanner.vue
  10. +23
    -35
      src/views/live-preview/pages/discounts/addDiscount.vue
  11. +1
    -1
      src/views/live-preview/pages/discounts/editDiscount.vue
  12. +15
    -17
      src/views/live-preview/pages/orders/approvedOrders.vue
  13. +1
    -1
      src/views/live-preview/pages/orders/orders.vue
  14. +1
    -0
      src/views/live-preview/pages/products/addProduct.vue
  15. +5
    -4
      src/views/live-preview/pages/products/products.vue
  16. +0
    -1
      src/views/live-preview/pages/users/users.vue

+ 10
- 0
package-lock.json Ver fichero

@@ -65,6 +65,7 @@
"vue3-datepicker": "^0.4.0", "vue3-datepicker": "^0.4.0",
"vue3-google-map": "^0.18.0", "vue3-google-map": "^0.18.0",
"vue3-persian-datetime-picker": "^1.2.2", "vue3-persian-datetime-picker": "^1.2.2",
"vue3-select-component": "^0.11.3",
"vue3-select2-component": "^0.1.7", "vue3-select2-component": "^0.1.7",
"vue3-toastify": "^0.2.5", "vue3-toastify": "^0.2.5",
"vuex": "^4.1.0", "vuex": "^4.1.0",
@@ -13697,6 +13698,15 @@
"moment-jalaali": "^0.9.4" "moment-jalaali": "^0.9.4"
} }
}, },
"node_modules/vue3-select-component": {
"version": "0.11.3",
"resolved": "https://registry.npmjs.org/vue3-select-component/-/vue3-select-component-0.11.3.tgz",
"integrity": "sha512-Tw2iBpwONIhasPm3UrQ9o6bvUWPhAVPHGiYtGB0e9nXLcqESDx5LxG3k4+55n9FF0jFoKRji1UdCNt1dsJkxbw==",
"license": "MIT",
"peerDependencies": {
"vue": "^3.5.0"
}
},
"node_modules/vue3-select2-component": { "node_modules/vue3-select2-component": {
"version": "0.1.7", "version": "0.1.7",
"resolved": "https://registry.npmjs.org/vue3-select2-component/-/vue3-select2-component-0.1.7.tgz", "resolved": "https://registry.npmjs.org/vue3-select2-component/-/vue3-select2-component-0.1.7.tgz",


+ 1
- 0
package.json Ver fichero

@@ -65,6 +65,7 @@
"vue3-datepicker": "^0.4.0", "vue3-datepicker": "^0.4.0",
"vue3-google-map": "^0.18.0", "vue3-google-map": "^0.18.0",
"vue3-persian-datetime-picker": "^1.2.2", "vue3-persian-datetime-picker": "^1.2.2",
"vue3-select-component": "^0.11.3",
"vue3-select2-component": "^0.1.7", "vue3-select2-component": "^0.1.7",
"vue3-toastify": "^0.2.5", "vue3-toastify": "^0.2.5",
"vuex": "^4.1.0", "vuex": "^4.1.0",


+ 2
- 2
src/components/modals/addUser.vue Ver fichero

@@ -209,8 +209,8 @@ export default {
}, 500); }, 500);
}) })
.catch((error) => { .catch((error) => {
console.error(error);
toast.error("!افزودن کاربر با مشکل مواجه شد", {
console.error(error.response.data.message);
toast.error(`${error.response.data.message}` , {
position: "top-right", position: "top-right",
autoClose: 1000, autoClose: 1000,
}); });


+ 1
- 1
src/components/modals/attribute/editAttribute.vue Ver fichero

@@ -196,7 +196,7 @@ export default {
}) })
.catch((error) => { .catch((error) => {
console.error(error); console.error(error);
toast.success("!مشکلی در ویرایش ویژگی پیش آمد", {
toast.error("!مشکلی در ویرایش ویژگی پیش آمد", {
position: "top-right", position: "top-right",
autoClose: 1000, autoClose: 1000,
}); });


+ 9
- 9
src/components/modals/commonModals/showDescription.vue Ver fichero

@@ -1,13 +1,13 @@
<template> <template>
<div
class="modal fade"
id="showDescription"
tabindex="-1"
role="dialog"
aria-labelledby="exampleModalLabel"
aria-hidden="true"
:inert="localDesc"
>
<div
class="modal fade"
id="showDescription"
tabindex="-1"
role="dialog"
aria-labelledby="exampleModalLabel"
aria-hidden="true"
>
<div class="modal-dialog modal-lg" role="document"> <div class="modal-dialog modal-lg" role="document">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">


+ 2
- 2
src/views/live-preview/pages/attributes/attributes.vue Ver fichero

@@ -241,7 +241,7 @@ export default {


<td>{{ convertToJalali(attribute?.created_at) }}</td> <td>{{ convertToJalali(attribute?.created_at) }}</td>
<td> <td>
<button
<!-- <button
@click=" @click="
editModalData( editModalData(
attribute?.id, attribute?.id,
@@ -254,7 +254,7 @@ export default {
class="btn btn-sm btn-outline-warning me-1" class="btn btn-sm btn-outline-warning me-1"
> >
ویرایش ویرایش
</button>
</button> -->
<button <button
@click="deleteAttribute(attribute.id, attribute.title)" @click="deleteAttribute(attribute.id, attribute.title)"
class="btn btn-sm btn-outline-danger" class="btn btn-sm btn-outline-danger"


+ 10
- 12
src/views/live-preview/pages/banners/addBanner.vue Ver fichero

@@ -183,12 +183,11 @@
> >
<label for="token">صفحه محصول</label> <label for="token">صفحه محصول</label>


<Select2
id="token"
<VueSelect
style="--vs-min-height: 48px; --vs-border-radius: 8px ; margin-top: 7px;"
v-model="selectedLandingProduct" v-model="selectedLandingProduct"
:options="formattedUsers"
:settings="{ settingOption: value, settingOption: value }"
style="height: 60px"
:options="formattedProducts"
placeholder="محصولی را انتخاب کنید"
/> />
<small v-if="errors.selectedLandingProduct" class="text-danger"> <small v-if="errors.selectedLandingProduct" class="text-danger">
{{ errors.selectedLandingProduct }} {{ errors.selectedLandingProduct }}
@@ -384,7 +383,7 @@
</template> </template>


<script> <script>
import Select2 from "vue3-select2-component";
import VueSelect from "vue3-select-component";
import catBanner from "@/components/modals/helperModals/catBanner.vue"; import catBanner from "@/components/modals/helperModals/catBanner.vue";
import mainPageBanner from "@/components/modals/helperModals/mainPageBanner.vue"; import mainPageBanner from "@/components/modals/helperModals/mainPageBanner.vue";
import { toast } from "vue3-toastify"; import { toast } from "vue3-toastify";
@@ -399,7 +398,7 @@ export default {
Layout, Layout,
mainPageBanner, mainPageBanner,
catBanner, catBanner,
Select2,
VueSelect,
}, },
setup() { setup() {
const title = ref(); const title = ref();
@@ -467,10 +466,10 @@ export default {
} }
}; };


const formattedUsers = computed(() => {
const formattedProducts = computed(() => {
return products.value.map((product) => ({ return products.value.map((product) => ({
id: product.id,
text: product.title,
value: product.id,
label: product.title,
})); }));
}); });


@@ -558,7 +557,6 @@ export default {
if (pannel.value === "wholesale") { if (pannel.value === "wholesale") {
formData.append("type", "slider"); formData.append("type", "slider");
formData.append("location", "A"); formData.append("location", "A");
console.log("test")
} }


if (selectedLoc.value) { if (selectedLoc.value) {
@@ -602,7 +600,7 @@ export default {
submitForm, submitForm,
clearError, clearError,
pageType, pageType,
formattedUsers,
formattedProducts,
landingType, landingType,
selectedLandingCat, selectedLandingCat,
selectedLandingProduct, selectedLandingProduct,


+ 1
- 1
src/views/live-preview/pages/banners/banners.vue Ver fichero

@@ -251,7 +251,7 @@ export default {
type="button" type="button"
data-bs-toggle="modal" data-bs-toggle="modal"
data-bs-target="#showDescription" data-bs-target="#showDescription"
@click="descriptionModal(call.text)"
@click="descriptionModal(banner.title)"
class="subject-box" class="subject-box"
aria-haspopup="dialog" aria-haspopup="dialog"
aria-controls="showDescription" aria-controls="showDescription"


+ 15
- 12
src/views/live-preview/pages/banners/editBanner.vue Ver fichero

@@ -158,12 +158,15 @@
> >
<label for="token">صفحه محصول</label> <label for="token">صفحه محصول</label>


<Select2
id="token"
<VueSelect
style="
--vs-min-height: 48px;
--vs-border-radius: 8px;
margin-top: 7px;
"
v-model="selectedLandingProduct" v-model="selectedLandingProduct"
:options="formattedUsers"
:settings="{ settingOption: value, settingOption: value }"
style="height: 60px"
:options="formattedProducts"
placeholder="محصولی را انتخاب کنید"
/> />
<small v-if="errors.selectedLandingProduct" class="text-danger"> <small v-if="errors.selectedLandingProduct" class="text-danger">
{{ errors.selectedLandingProduct }} {{ errors.selectedLandingProduct }}
@@ -359,8 +362,8 @@
</template> </template>


<script> <script>
import VueSelect from "vue3-select-component";
import { useRoute } from "vue-router"; import { useRoute } from "vue-router";
import Select2 from "vue3-select2-component";
import catBanner from "@/components/modals/helperModals/catBanner.vue"; import catBanner from "@/components/modals/helperModals/catBanner.vue";
import mainPageBanner from "@/components/modals/helperModals/mainPageBanner.vue"; import mainPageBanner from "@/components/modals/helperModals/mainPageBanner.vue";
import { toast } from "vue3-toastify"; import { toast } from "vue3-toastify";
@@ -375,7 +378,7 @@ export default {
Layout, Layout,
mainPageBanner, mainPageBanner,
catBanner, catBanner,
Select2,
VueSelect,
}, },
setup() { setup() {
const route = useRoute(); const route = useRoute();
@@ -443,10 +446,10 @@ export default {
} }
}; };


const formattedUsers = computed(() => {
const formattedProducts = computed(() => {
return products.value.map((product) => ({ return products.value.map((product) => ({
id: product.id,
text: product.title,
value: product.id,
label: product.title,
})); }));
}); });


@@ -491,7 +494,7 @@ export default {
selectedLoc.value = data?.location; selectedLoc.value = data?.location;
selectedLandingCat.value = data?.category_id; selectedLandingCat.value = data?.category_id;
selectedLandingProduct.value = data?.product_id; selectedLandingProduct.value = data?.product_id;
pageType.value = data.page_type
pageType.value = data.page_type;
if (data.page_id) { if (data.page_id) {
pageType.value = "category"; pageType.value = "category";
selectedCatPage.value = data?.page_id; selectedCatPage.value = data?.page_id;
@@ -609,7 +612,7 @@ export default {
submitForm, submitForm,
clearError, clearError,
pageType, pageType,
formattedUsers,
formattedProducts,
landingType, landingType,
selectedLandingCat, selectedLandingCat,
selectedLandingProduct, selectedLandingProduct,


+ 23
- 35
src/views/live-preview/pages/discounts/addDiscount.vue Ver fichero

@@ -141,14 +141,15 @@
class="mt-3" class="mt-3"
style="margin-top: 30px" style="margin-top: 30px"
> >
<label for="token"> انتخاب محصول </label>
<label for="token" style="margin-bottom: 5px">
انتخاب محصول
</label>


<Select2
id="token"
<VueSelect
style="--vs-min-height: 48px; --vs-border-radius: 8px"
v-model="selectedProduct" v-model="selectedProduct"
:options="formattedProducts" :options="formattedProducts"
:settings="{ settingOption: value, settingOption: value }"
style="height: 60px"
placeholder="محصولی را انتخاب کنید"
/> />
<small v-if="errors.selectedProduct" class="text-danger"> <small v-if="errors.selectedProduct" class="text-danger">
{{ errors.selectedProduct }} {{ errors.selectedProduct }}
@@ -163,7 +164,6 @@
:format="'jYYYY/jMM/jDD HH:mm:ss'" :format="'jYYYY/jMM/jDD HH:mm:ss'"
type="datetime" type="datetime"
v-model="startDate" v-model="startDate"
@input="handleStartDateInput"
></DatePicker> ></DatePicker>
</div> </div>
<small v-if="errors.startDate" class="text-danger"> <small v-if="errors.startDate" class="text-danger">
@@ -179,7 +179,6 @@
:format="'jYYYY/jMM/jDD HH:mm:ss'" :format="'jYYYY/jMM/jDD HH:mm:ss'"
type="datetime" type="datetime"
v-model="expire" v-model="expire"
@input="handleExpireDateInput"
></DatePicker> ></DatePicker>
</div> </div>
<small v-if="errors.expire" class="text-danger"> <small v-if="errors.expire" class="text-danger">
@@ -212,8 +211,8 @@
</template> </template>


<script> <script>
import Select2 from "vue3-select2-component";
import moment from "moment";
import VueSelect from "vue3-select-component";
import moment from "moment-jalaali";
import { toast } from "vue3-toastify"; import { toast } from "vue3-toastify";
import "vue3-toastify/dist/index.css"; import "vue3-toastify/dist/index.css";
import ApiServiece from "@/services/ApiService"; import ApiServiece from "@/services/ApiService";
@@ -226,7 +225,8 @@ export default {
components: { components: {
Layout, Layout,
DatePicker, DatePicker,
Select2,

VueSelect,
}, },
setup() { setup() {
const title = ref(); const title = ref();
@@ -264,31 +264,10 @@ export default {
}); });
}; };


const handleStartDateInput = () => {
if (startDate.value) {
startDate.value = moment(
startDate.value,
"jYYYY/jMM/jDD HH:mm:ss"
).format("YYYY-MM-DD HH:mm:ss");
} else {
clearError("startDate");
}
};

const handleExpireDateInput = () => {
if (expire.value) {
expire.value = moment(expire.value, "jYYYY/jMM/jDD HH:mm:ss").format(
"YYYY-MM-DD HH:mm:ss"
);
} else {
clearError("expire");
}
};

const formattedProducts = computed(() => { const formattedProducts = computed(() => {
return products.value.map((product) => ({ return products.value.map((product) => ({
id: product.id,
text: product.title,
value: product.id,
label: product.title,
})); }));
}); });


@@ -331,7 +310,16 @@ export default {
getProduct(); getProduct();
}); });


function convertJalaliToGregorian(jalaliDate) {
return moment(jalaliDate, "jYYYY/jMM/jDD HH:mm:ss").format(
"YYYY-MM-DD HH:mm:ss"
);
}

const submitForm = () => { const submitForm = () => {
startDate.value = convertJalaliToGregorian(startDate.value);
expire.value = convertJalaliToGregorian(expire.value);

if (!validateForm()) { if (!validateForm()) {
toast.error("لطفا فیلد های لازم را وارد نمایید", { toast.error("لطفا فیلد های لازم را وارد نمایید", {
position: "top-right", position: "top-right",
@@ -390,8 +378,6 @@ export default {
expire, expire,
maxUsage, maxUsage,
submitForm, submitForm,
handleStartDateInput,
handleExpireDateInput,
whichPart, whichPart,
clearError, clearError,
loading, loading,
@@ -448,4 +434,6 @@ export default {
.delete-btn:focus { .delete-btn:focus {
outline: none; outline: none;
} }
.custom-select {
}
</style> </style>

+ 1
- 1
src/views/live-preview/pages/discounts/editDiscount.vue Ver fichero

@@ -390,7 +390,7 @@ export default {
ApiServiece.post(`/admin/discounts`, formData) ApiServiece.post(`/admin/discounts`, formData)
.then((resp) => { .then((resp) => {
loading.value = false; loading.value = false;
toast.success("!تخفیف با موفقیت اضافه شد", {
toast.success("!تخفیف با موفقیت ویرایش شد", {
position: "top-right", position: "top-right",
autoClose: 1000, autoClose: 1000,
}); });


+ 15
- 17
src/views/live-preview/pages/orders/approvedOrders.vue Ver fichero

@@ -3,13 +3,13 @@ import Layout from "@/layout/custom.vue";
import ApiServiece from "@/services/ApiService"; import ApiServiece from "@/services/ApiService";
import { onMounted, ref, watch, computed } from "vue"; import { onMounted, ref, watch, computed } from "vue";
import DatePicker from "vue3-persian-datetime-picker"; import DatePicker from "vue3-persian-datetime-picker";
import Select2 from "vue3-select2-component";
import VueSelect from "vue3-select-component";
import moment from "jalali-moment"; import moment from "jalali-moment";
export default { export default {
name: "PRODUCT-LIST", name: "PRODUCT-LIST",
components: { components: {
Layout, Layout,
Select2,
VueSelect,
DatePicker, DatePicker,
}, },
setup() { setup() {
@@ -61,10 +61,10 @@ export default {
.format("YYYY/MM/DD"); .format("YYYY/MM/DD");
}; };


const formattedUsers = computed(() => {
const formattedBrands = computed(() => {
return brands.value.map((brand) => ({ return brands.value.map((brand) => ({
id: brand?.id,
text: brand?.title,
value: brand?.id,
label: brand?.title,
})); }));
}); });


@@ -181,7 +181,7 @@ export default {
convertToJalali, convertToJalali,
searchPage, searchPage,
brands, brands,
formattedUsers,
formattedBrands,
selectedBrand, selectedBrand,
date, date,
isLoading, isLoading,
@@ -201,17 +201,13 @@ export default {
<!-- Button to Trigger Export --> <!-- Button to Trigger Export -->
<BRow> <BRow>
<BCol sm="3" class="mt-3"> <BCol sm="3" class="mt-3">
<Select2
id="token"

<VueSelect
style="--vs-border-radius: 8px"
v-model="selectedBrand" v-model="selectedBrand"
:options="formattedUsers"
:settings="{
placeholder: 'انتخاب برند',
dir: 'rtl',
width: '100%',
theme: 'classic',
}"
class="select2 custom-select2"
:options="formattedBrands"
placeholder="انتخاب برند"
/> />
</BCol> </BCol>
<BCol style="margin-right: 180px" class="mt-3" sm="3"> <BCol style="margin-right: 180px" class="mt-3" sm="3">
@@ -291,7 +287,9 @@ export default {
v-if="product?.product?.wholesale_price" v-if="product?.product?.wholesale_price"
class="text-end" class="text-end"
> >
{{ formatWithCommas(product?.product?.wholesale_price) }}تومان
{{
formatWithCommas(product?.product?.wholesale_price)
}}تومان
</td> </td>
<td <td
v-if="!product?.product?.wholesale_price" v-if="!product?.product?.wholesale_price"


+ 1
- 1
src/views/live-preview/pages/orders/orders.vue Ver fichero

@@ -146,7 +146,7 @@ export default {
formData.append("status", status); formData.append("status", status);
ApiServiece.put(`admin/orders/${id}`, formData) ApiServiece.put(`admin/orders/${id}`, formData)
.then(() => { .then(() => {
toast.success("!تغییر وضعیت سبد خرید با موفقیت انجام شد", {
toast.success("تغییر وضعیت سبد خرید با موفقیت انجام شد", {
position: "top-right", position: "top-right",
autoClose: 3000, autoClose: 3000,
}); });


+ 1
- 0
src/views/live-preview/pages/products/addProduct.vue Ver fichero

@@ -941,6 +941,7 @@ export default {


.catch((error) => { .catch((error) => {
console.error(error); console.error(error);
loading.value = false;
toast.error(`${error?.response?.data?.message}`, { toast.error(`${error?.response?.data?.message}`, {
position: "top-right", position: "top-right",
autoClose: 1000, autoClose: 1000,


+ 5
- 4
src/views/live-preview/pages/products/products.vue Ver fichero

@@ -190,7 +190,7 @@ export default {
searchPage, searchPage,
visiblePages, visiblePages,
restoreProduct, restoreProduct,
formatWithCommas
formatWithCommas,
}; };
}, },
}; };
@@ -232,9 +232,9 @@ export default {
<td>برگزیده</td> <td>برگزیده</td>
<td>قیمت انتخاب شده</td> <td>قیمت انتخاب شده</td>
<td>ویژه</td> <td>ویژه</td>
<td>قیمت</td>
<td>قیمت عمده</td>
<td>قیمت تک</td>
<td>وضعیت</td> <td>وضعیت</td>
<th>تاریخ ایجاد</th>
<th>عملیات</th> <th>عملیات</th>
</tr> </tr>
</thead> </thead>
@@ -291,9 +291,11 @@ export default {
<td v-if="product?.wholesale_price"> <td v-if="product?.wholesale_price">
{{ formatWithCommas(product.wholesale_price) }} {{ formatWithCommas(product.wholesale_price) }}
</td> </td>
<td v-if="!product?.wholesale_price">ندارد</td>
<td v-if="product?.retail_price"> <td v-if="product?.retail_price">
{{ formatWithCommas(product?.retail_price) }} {{ formatWithCommas(product?.retail_price) }}
</td> </td>
<td v-if="!product?.retail_price">ندارد</td>


<td v-if="!product.deleted_at"> <td v-if="!product.deleted_at">
<span class="badge bg-success text-white">فعال</span> <span class="badge bg-success text-white">فعال</span>
@@ -302,7 +304,6 @@ export default {
<span class="badge bg-danger text-white">حذف شده</span> <span class="badge bg-danger text-white">حذف شده</span>
</td> </td>


<td>{{ convertToJalali(product?.created_at) }}</td>
<td> <td>
<router-link <router-link
:to="`/editProduct/${product?.id}`" :to="`/editProduct/${product?.id}`"


+ 0
- 1
src/views/live-preview/pages/users/users.vue Ver fichero

@@ -259,7 +259,6 @@ export default {
<thead> <thead>
<tr> <tr>
<th>نام</th> <th>نام</th>

<th>موبایل</th> <th>موبایل</th>
<th>نقش</th> <th>نقش</th>
<th>تاریخ ایجاد</th> <th>تاریخ ایجاد</th>


Cargando…
Cancelar
Guardar