Преглед изворни кода

completed bugs admin panel

master
alireza пре 9 месеци
родитељ
комит
f45ecb1a18
19 измењених фајлова са 118 додато и 88 уклоњено
  1. +0
    -6
      dist/css/chunk-vendors.fd1119e3.css
  2. +1
    -1
      dist/index.html
  3. +1
    -1
      src/components/customSidebar.vue
  4. +2
    -6
      src/components/modals/addUser.vue
  5. +3
    -0
      src/components/modals/categories/addCat.vue
  6. +3
    -0
      src/components/modals/categories/editCat.vue
  7. +2
    -7
      src/components/modals/editUser.vue
  8. +35
    -9
      src/components/modals/identity/editIdentity.vue
  9. +19
    -7
      src/state/modules/user.js
  10. +0
    -6
      src/views/live-preview/pages/auth2/otpLogin.vue
  11. +7
    -11
      src/views/live-preview/pages/banners/addBanner.vue
  12. +11
    -9
      src/views/live-preview/pages/banners/editBanner.vue
  13. +2
    -2
      src/views/live-preview/pages/blogs/editBlog.vue
  14. +14
    -10
      src/views/live-preview/pages/identity/idenities.vue
  15. +1
    -1
      src/views/live-preview/pages/orders/approvedOrders.vue
  16. +1
    -1
      src/views/live-preview/pages/orders/orders.vue
  17. +12
    -5
      src/views/live-preview/pages/orders/singleOrder.vue
  18. +2
    -2
      src/views/live-preview/pages/products/addProduct.vue
  19. +2
    -4
      src/views/live-preview/pages/products/editProduct.vue

+ 0
- 6
dist/css/chunk-vendors.fd1119e3.css
Разлика између датотеке није приказан због своје велике величине
Прегледај датотеку


+ 1
- 1
dist/index.html Прегледај датотеку

@@ -1,4 +1,4 @@
<!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" id="favicon" 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>NovinPlast</title><script defer="defer" src="/js/chunk-vendors.b16869db.js"></script><script defer="defer" src="/js/app.fa8072f6.js"></script><link href="/css/chunk-vendors.fd1119e3.css" rel="stylesheet"><link href="/css/app.cbef7f68.css" rel="stylesheet"></head><body lang><noscript><strong>We're sorry but NovinPlast doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script>document.addEventListener("DOMContentLoaded", function () {
<!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" id="favicon" 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>NovinPlast</title><script defer="defer" src="/js/chunk-vendors.0a758772.js"></script><script defer="defer" src="/js/app.7f7271d2.js"></script><link href="/css/chunk-vendors.8ada15f4.css" rel="stylesheet"><link href="/css/app.fed18238.css" rel="stylesheet"></head><body lang><noscript><strong>We're sorry but NovinPlast doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script>document.addEventListener("DOMContentLoaded", function () {
const faviconUrl = localStorage.getItem("logo"); const faviconUrl = localStorage.getItem("logo");
if (faviconUrl) { if (faviconUrl) {
const faviconLink = document.getElementById("favicon"); const faviconLink = document.getElementById("favicon");


+ 1
- 1
src/components/customSidebar.vue Прегледај датотеку

@@ -375,7 +375,7 @@ export default {
</span> </span>
<span class="pc-mtext">سفارشات</span> <span class="pc-mtext">سفارشات</span>
<span class="pc-arrow"> <span class="pc-arrow">
<ChevronDownIcon></ChevronDownIcon>
<ChevronDownIcon />
</span> </span>
</BLink> </BLink>
<div class="collapse" id="collapse-orders"> <div class="collapse" id="collapse-orders">


+ 2
- 6
src/components/modals/addUser.vue Прегледај датотеку

@@ -28,14 +28,10 @@
<label class="form-label">نام</label> <label class="form-label">نام</label>
<input <input
v-model="name" v-model="name"
@input="clearError('name')"
type="text" type="text"
class="form-control" class="form-control"
placeholder="نام را وارد نمایید" placeholder="نام را وارد نمایید"
/> />
<small v-if="errors.name" class="text-danger">{{
errors.name
}}</small>
</div> </div>
</BCol> </BCol>


@@ -158,7 +154,6 @@ export default {


const validateForm = () => { const validateForm = () => {
errors.value = {}; errors.value = {};
if (!name.value) errors.value.name = "وارد کردن نام ضروری می باشد";
if (!mobile.value) errors.value.mobile = "وارد کردن موبایل ضروری می باشد"; if (!mobile.value) errors.value.mobile = "وارد کردن موبایل ضروری می باشد";
if (!role.value) errors.value.role = "انتخاب نقش ضروری می باشد"; if (!role.value) errors.value.role = "انتخاب نقش ضروری می باشد";


@@ -191,7 +186,8 @@ export default {


const formData = new FormData(); const formData = new FormData();
formData.append("mobile", mobile.value); formData.append("mobile", mobile.value);
formData.append("name", name.value);
if (name.value)
formData.append("name", name.value);
formData.append("role", role.value); formData.append("role", role.value);
formData.append("password", password.value); formData.append("password", password.value);
formData.append("password_confirmation", repeatPassword.value); formData.append("password_confirmation", repeatPassword.value);


+ 3
- 0
src/components/modals/categories/addCat.vue Прегледај датотеку

@@ -107,6 +107,9 @@
class="form-control" class="form-control"
placeholder="انتخاب کنید" placeholder="انتخاب کنید"
> >
<option :value="null">
ندارد
</option>
<option <option
v-for="parent in localParents" v-for="parent in localParents"
:key="parent.id" :key="parent.id"


+ 3
- 0
src/components/modals/categories/editCat.vue Прегледај датотеку

@@ -100,6 +100,9 @@
class="form-control" class="form-control"
placeholder="انتخاب کنید" placeholder="انتخاب کنید"
> >
<option :value="null">
ندارد
</option>
<option <option
v-for="parent in allLocalParents" v-for="parent in allLocalParents"
:key="parent.id" :key="parent.id"


+ 2
- 7
src/components/modals/editUser.vue Прегледај датотеку

@@ -26,14 +26,10 @@
<label class="form-label">نام</label> <label class="form-label">نام</label>
<input <input
v-model="localName" v-model="localName"
@input="clearError('localName')"
type="text" type="text"
class="form-control" class="form-control"
placeholder="نام را وارد نمایید" placeholder="نام را وارد نمایید"
/> />
<small v-if="errors.localName" class="text-danger">{{
errors.localName
}}</small>
</div> </div>
</BCol> </BCol>


@@ -174,8 +170,6 @@ export default {


const validateForm = () => { const validateForm = () => {
errors.value = {}; errors.value = {};
if (!localName.value)
errors.value.localName = "وارد کردن نام ضروری می باشد";
if (!localMobile.value) if (!localMobile.value)
errors.value.localMobile = "وارد کردن موبایل ضروری می باشد"; errors.value.localMobile = "وارد کردن موبایل ضروری می باشد";
if (!localRole.value) if (!localRole.value)
@@ -202,7 +196,8 @@ export default {


const formData = new FormData(); const formData = new FormData();
formData.append("mobile", localMobile.value); formData.append("mobile", localMobile.value);
formData.append("name", localName.value);
if (localName.value)
formData.append("name", localName.value);
formData.append("role", localRole.value); formData.append("role", localRole.value);
if (password.value) { if (password.value) {
formData.append("password", password.value); formData.append("password", password.value);


+ 35
- 9
src/components/modals/identity/editIdentity.vue Прегледај датотеку

@@ -49,9 +49,11 @@
style="--vs-min-height: 48px; --vs-border-radius: 8px" style="--vs-min-height: 48px; --vs-border-radius: 8px"
v-model="localCatId" v-model="localCatId"
:options="formattedCategories" :options="formattedCategories"
:isLoading="categorySelectorLoader"
label="label" label="label"
:reduce="(option) => option.value" :reduce="(option) => option.value"
placeholder="دسته ای را انتخاب کنید" placeholder="دسته ای را انتخاب کنید"
@search="handleSearch"
/> />
</div> </div>
<small v-if="errors.selectedCat" class="text-danger"> <small v-if="errors.selectedCat" class="text-danger">
@@ -104,8 +106,8 @@ export default {
type: String, type: String,
Required: true, Required: true,
}, },
catId: {
type: String,
cat: {
type: Object,
Required: true, Required: true,
}, },
id: { id: {
@@ -123,14 +125,17 @@ export default {
setup(props, { emit }) { setup(props, { emit }) {
const localCat = toRef(props.cats); const localCat = toRef(props.cats);
const localTitle = toRef(props.title); const localTitle = toRef(props.title);
const localCatId = toRef(props.catId);
const localCatId = toRef(props.cat);
const localId = toRef(props.id); const localId = toRef(props.id);
const errors = ref({}); const errors = ref({});
const loading = ref(false); const loading = ref(false);
const categorySelectorLoader = ref(false);


watch( watch(
() => props.cats, () => props.cats,
(newVal) => (localCat.value = newVal)
(newVal) => {
localCat.value = newVal
}
); );


watch( watch(
@@ -140,13 +145,32 @@ export default {


watch( watch(
() => props.id, () => props.id,
(newVal) => (localId.value = newVal)
(newVal) => {
localId.value = newVal
}
); );

watch( watch(
() => props.catId,
(newVal) => (localCatId.value = newVal)
);
() => props.cat,
(newVal) => {
localCatId.value = newVal?.id;
localCat.value = [{ title: newVal?.title, id: newVal?.id }];
},{ immediate: true });

const handleSearch = async (searchTerm) => {
if (searchTerm?.length < 3) return;
categorySelectorLoader.value = true;
try {
const response = await ApiServiece.get(
`admin/categories?title=${searchTerm}`
);
localCat.value = response.data.data;
categorySelectorLoader.value = false;
} catch (error) {
categorySelectorLoader.value = false;
localCat.value = [];
}
};


const formattedCategories = computed(() => const formattedCategories = computed(() =>
Array.isArray(localCat.value) Array.isArray(localCat.value)
@@ -218,6 +242,8 @@ export default {
localId, localId,
localCatId, localCatId,
formattedCategories, formattedCategories,
categorySelectorLoader,
handleSearch,
}; };
}, },
}; };


+ 19
- 7
src/state/modules/user.js Прегледај датотеку

@@ -1,4 +1,5 @@
import axios from "axios"; import axios from "axios";
import Swal from "sweetalert2";
const url = process.env.VUE_APP_ROOT_URL; const url = process.env.VUE_APP_ROOT_URL;


const state = { const state = {
@@ -77,7 +78,6 @@ export const actions = {
); );


if (response.data.success) { if (response.data.success) {
console.log(response.data.data);
const token = response.data.data.token; const token = response.data.data.token;
const user = response.data.data.user; const user = response.data.data.user;


@@ -91,14 +91,26 @@ export const actions = {
commit("SET_USER", user); commit("SET_USER", user);
return response.data; return response.data;
} else { } else {
throw new Error("خطا در تایید کد");
const errorMsg = response.data.message || "خطا در تایید کد";
console.log(errorMsg, 'errorMsg')
throw new Error(errorMsg);
} }
} catch (error) { } catch (error) {
console.error(
"OTP verification failed:",
error.response?.data || error.message
// console.error(
// "OTP verification failed:",
// error.response?.data || error.message
// );
Swal.fire({
icon: "error",
title: "انگار چیزی اشتباه شد",
text: `${error?.response?.data?.message}`,
confirmButtonText: "باشه",
});

throw new Error(
error.response?.data?.message ||
"ورود با مشکل مواجه شد ...! لطفا دوباره امتحان کنید"
); );
throw new Error(error.response?.data?.msg || "خطا در تایید کد");
} }
}, },


@@ -160,7 +172,7 @@ export const actions = {


if (response.data.success) { if (response.data.success) {
console.log(response.data.message); console.log(response.data.message);
} else { } else {
console.error("Logout failed: " + response.data.message); console.error("Logout failed: " + response.data.message);
} }


+ 0
- 6
src/views/live-preview/pages/auth2/otpLogin.vue Прегледај датотеку

@@ -84,12 +84,6 @@ export default {
router.push({ name: "products" }); router.push({ name: "products" });
} catch (error) { } catch (error) {
verifyOtpLoading.value = false; verifyOtpLoading.value = false;
Swal.fire({
icon: "error",
title: "انگار چیزی اشتباه شد",
text: `${error.message}`,
confirmButtonText: "باشه",
});
} }
}; };




+ 7
- 11
src/views/live-preview/pages/banners/addBanner.vue Прегледај датотеку

@@ -227,10 +227,10 @@
<option value="B">B-Banner</option> <option value="B">B-Banner</option>
<option value="C">C-Banner</option> <option value="C">C-Banner</option>
<option value="D">D-Banner</option> <option value="D">D-Banner</option>
<option value="F">E-Banner</option>
<option value="G">F-Banner</option>
<option value="H">G-Banner</option>
<option value="G">H-Banner</option>
<option value="E">E-Banner</option>
<option value="F">F-Banner</option>
<option value="G">G-Banner</option>
<option value="H">H-Banner</option>
<option value="I">I-Banner</option> <option value="I">I-Banner</option>
<option value="J">J-Banner</option> <option value="J">J-Banner</option>
</select> </select>
@@ -305,12 +305,8 @@
<option value="B">B-Banner</option> <option value="B">B-Banner</option>
<option value="C">C-Banner</option> <option value="C">C-Banner</option>
<option value="D">D-Banner</option> <option value="D">D-Banner</option>
<option value="F">E-Banner</option>
<option value="G">F-Banner</option>
<option value="H">G-Banner</option>
<option value="G">H-Banner</option>
<option value="I">I-Banner</option>
<option value="J">J-Banner</option>
<option value="E">E-Banner</option>
<option value="F">F-Banner</option>
</select> </select>
</div> </div>
<small v-if="errors.selectedLoc" class="text-danger"> <small v-if="errors.selectedLoc" class="text-danger">
@@ -500,7 +496,7 @@ export default {


try { try {
const response = await ApiServiece.get( const response = await ApiServiece.get(
`admin/categories?title=${searchTerm}`
`admin/categories/parents?title=${searchTerm}`
); );
categoryPages.value = response.data.data; categoryPages.value = response.data.data;
categoryPageSelectorLoader.value = false; categoryPageSelectorLoader.value = false;


+ 11
- 9
src/views/live-preview/pages/banners/editBanner.vue Прегледај датотеку

@@ -234,10 +234,10 @@
<option value="B">B-Banner</option> <option value="B">B-Banner</option>
<option value="C">C-Banner</option> <option value="C">C-Banner</option>
<option value="D">D-Banner</option> <option value="D">D-Banner</option>
<option value="F">E-Banner</option>
<option value="G">F-Banner</option>
<option value="H">G-Banner</option>
<option value="G">H-Banner</option>
<option value="E">E-Banner</option>
<option value="F">F-Banner</option>
<option value="G">G-Banner</option>
<option value="H">H-Banner</option>
<option value="I">I-Banner</option> <option value="I">I-Banner</option>
<option value="J">J-Banner</option> <option value="J">J-Banner</option>
</select> </select>
@@ -312,10 +312,10 @@
<option value="B">B-Banner</option> <option value="B">B-Banner</option>
<option value="C">C-Banner</option> <option value="C">C-Banner</option>
<option value="D">D-Banner</option> <option value="D">D-Banner</option>
<option value="F">E-Banner</option>
<option value="G">F-Banner</option>
<option value="H">G-Banner</option>
<option value="G">H-Banner</option>
<option value="E">E-Banner</option>
<option value="F">F-Banner</option>
<option value="G">G-Banner</option>
<option value="H">H-Banner</option>
<option value="I">I-Banner</option> <option value="I">I-Banner</option>
<option value="J">J-Banner</option> <option value="J">J-Banner</option>
</select> </select>
@@ -485,12 +485,14 @@ export default {
: [] : []
); );


console.log(formattedCatPages.value,'formattedCatPages')

const handleCategoryPageSearch = async (searchTerm) => { const handleCategoryPageSearch = async (searchTerm) => {
if (searchTerm.length < 3) return; if (searchTerm.length < 3) return;
categoryPageSelectorLoader.value = true; categoryPageSelectorLoader.value = true;
try { try {
const response = await ApiServiece.get( const response = await ApiServiece.get(
`admin/categories?title=${searchTerm}`
`admin/categories/parents?title=${searchTerm}`
); );
catPages.value = response.data.data; catPages.value = response.data.data;
categoryPageSelectorLoader.value = false; categoryPageSelectorLoader.value = false;


+ 2
- 2
src/views/live-preview/pages/blogs/editBlog.vue Прегледај датотеку

@@ -260,8 +260,8 @@ export default {
ApiServiece.get(`admin/blogs/${route.params.id}`) ApiServiece.get(`admin/blogs/${route.params.id}`)
.then((resp) => { .then((resp) => {
blog.value = resp.data.data; blog.value = resp.data.data;
categories.value[0].id = blog.value.blog_category_id;
categories.value[0].title = "test";
categories.value[0].id = blog.value?.blog_category_id;
categories.value[0].title = blog.value?.blog_category?.title;


title.value = blog.value.title; title.value = blog.value.title;
slug.value = blog.value.slug; slug.value = blog.value.slug;


+ 14
- 10
src/views/live-preview/pages/identity/idenities.vue Прегледај датотеку

@@ -2,13 +2,15 @@
import Layout from "@/layout/custom.vue"; import Layout from "@/layout/custom.vue";
import ApiServiece from "@/services/ApiService"; import ApiServiece from "@/services/ApiService";
import moment from "jalali-moment"; import moment from "jalali-moment";
import { onMounted, ref, watch, computed } from "vue";
import {onMounted, ref, watch, computed, nextTick} from "vue";
import { toast } from "vue3-toastify"; import { toast } from "vue3-toastify";
import "vue3-toastify/dist/index.css"; import "vue3-toastify/dist/index.css";
import Swal from "sweetalert2"; import Swal from "sweetalert2";
import VueSelect from "vue3-select-component"; import VueSelect from "vue3-select-component";
import addIdentity from "@/components/modals/identity/addIdentity.vue"; import addIdentity from "@/components/modals/identity/addIdentity.vue";
import editIdentity from "@/components/modals/identity/editIdentity.vue"; import editIdentity from "@/components/modals/identity/editIdentity.vue";
import { Modal } from "bootstrap";

export default { export default {
name: "BORDER", name: "BORDER",
components: { components: {
@@ -105,7 +107,6 @@ export default {


const getCategories = () => { const getCategories = () => {
ApiServiece.get("admin/categories").then((resp) => { ApiServiece.get("admin/categories").then((resp) => {
console.log(resp.data.data);
cats.value = resp.data.data; cats.value = resp.data.data;
}); });
}; };
@@ -204,14 +205,19 @@ export default {
}; };


const editModalData = (id, title, cat) => { const editModalData = (id, title, cat) => {
attributeId.value = id;
attributeTitle.value = title;
attrebuteCat.value = cat;
nextTick(()=> {
attributeId.value = id;
attributeTitle.value = title;
attrebuteCat.value = cat;
})
const modal = new Modal(document.getElementById('editIdentity'));

modal?.show();
}; };


onMounted(() => { onMounted(() => {
getAttributes(); getAttributes();
getCategories();
//getCategories();
}); });
return { return {
attributes, attributes,
@@ -313,11 +319,9 @@ export default {
editModalData( editModalData(
attribute?.id, attribute?.id,
attribute?.title, attribute?.title,
attribute.category_id
attribute?.category,
) )
" "
data-bs-toggle="modal"
data-bs-target="#editIdentity"
class="btn btn-sm btn-outline-warning me-1" class="btn btn-sm btn-outline-warning me-1"
> >
ویرایش ویرایش
@@ -345,7 +349,7 @@ export default {
<editIdentity <editIdentity
@identity-updated="handleAttributeUpdated()" @identity-updated="handleAttributeUpdated()"
:title="attributeTitle" :title="attributeTitle"
:catId="attrebuteCat"
:cat="attrebuteCat"
:id="attributeId" :id="attributeId"
:cats="cats" :cats="cats"
/> />


+ 1
- 1
src/views/live-preview/pages/orders/approvedOrders.vue Прегледај датотеку

@@ -370,7 +370,7 @@ export default {
<tbody> <tbody>
<tr v-for="order in orders" :key="order?.id"> <tr v-for="order in orders" :key="order?.id">
<!-- Product Details --> <!-- Product Details -->
<td class="text-start">
<td class="text-start" style="max-width: 200px; white-space: normal !important;">
<div class="d-flex align-items-center gap-3"> <div class="d-flex align-items-center gap-3">
<img <img
:src="order?.product?.image" :src="order?.product?.image"


+ 1
- 1
src/views/live-preview/pages/orders/orders.vue Прегледај датотеку

@@ -329,7 +329,7 @@ export default {
</span> </span>
</td> </td>


<td>{{ order?.total_price || "" }}</td>
<td>{{ Number(order?.total_price).toLocaleString() || "" }}</td>
<td>{{ order?.user?.mobile || "مهمان" }}</td> <td>{{ order?.user?.mobile || "مهمان" }}</td>


<td>{{ order?.tracking_code || "" }}</td> <td>{{ order?.tracking_code || "" }}</td>


+ 12
- 5
src/views/live-preview/pages/orders/singleOrder.vue Прегледај датотеку

@@ -4,6 +4,7 @@ import Layout from "@/layout/custom.vue";
import ApiServiece from "@/services/ApiService"; import ApiServiece from "@/services/ApiService";
import { useRoute } from "vue-router"; import { useRoute } from "vue-router";
import { onMounted, ref } from "vue"; import { onMounted, ref } from "vue";
import moment from "jalali-moment";


export default { export default {
name: "OrderDetails", name: "OrderDetails",
@@ -43,7 +44,9 @@ export default {
}; };


const formatDate = (date) => { const formatDate = (date) => {
return new Date(date).toLocaleDateString("fa-IR");
return moment(date,"YYYY-MM-DD HH:mm:ss")
.locale("fa")
.format("HH:mm:ss YYYY/MM/DD");
}; };


const getOrder = () => { const getOrder = () => {
@@ -187,7 +190,7 @@ export default {
</BCol> </BCol>


<BCol md="6"> <BCol md="6">
<strong class="me-2">رنگ سفارش:</strong>
<strong class="me-2">وضعیت سفارش:</strong>
<span>{{ order?.status || "-" }}</span> <span>{{ order?.status || "-" }}</span>
</BCol> </BCol>
</BRow> </BRow>
@@ -195,7 +198,7 @@ export default {
<BRow class="mb-3"> <BRow class="mb-3">
<BCol md="6"> <BCol md="6">
<strong class="me-2">قیمت کل:</strong> <strong class="me-2">قیمت کل:</strong>
<span>{{ order?.total_price ? order?.total_price + 'تومان' : '0' }}</span>
<span>{{ order?.total_price ? Number(order?.total_price).toLocaleString() + 'تومان' : '0' }}</span>
</BCol> </BCol>
</BRow> </BRow>


@@ -215,6 +218,7 @@ export default {
{ key: 'color', label: 'رنگ محصول' }, { key: 'color', label: 'رنگ محصول' },
{ key: 'count', label: 'تعداد در خواستی ' }, { key: 'count', label: 'تعداد در خواستی ' },
{ key: 'price', label: 'قیمت' }, { key: 'price', label: 'قیمت' },
{ key: 'discount', label: 'مبلغ تخفیف' },
{ key: 'created_at', label: 'تاریخ ثبت' }, { key: 'created_at', label: 'تاریخ ثبت' },
{ key: 'edit_count', label: 'تعداد فرستاده شده' }, { key: 'edit_count', label: 'تعداد فرستاده شده' },
{ key: 'description', label: 'یادداشت' }, { key: 'description', label: 'یادداشت' },
@@ -223,11 +227,14 @@ export default {
> >
<!-- Price formatting --> <!-- Price formatting -->
<template #cell(price)="data"> <template #cell(price)="data">
{{ formatPrice(data.item.price) }} تومان
{{ formatPrice(data?.item?.product?.retail_price) }} تومان
</template>
<template #cell(discount)="data">
{{ formatPrice(data?.item?.price) }} تومان
</template> </template>


<template #cell(title)="data"> <template #cell(title)="data">
{{ data.item?.product?.title }}
{{ data?.item?.product?.title }}
</template> </template>


<!-- Created Date formatting --> <!-- Created Date formatting -->


+ 2
- 2
src/views/live-preview/pages/products/addProduct.vue Прегледај датотеку

@@ -238,11 +238,11 @@


<BCol v-if="spescial == 1" md="6"> <BCol v-if="spescial == 1" md="6">
<div class="form-group"> <div class="form-group">
<label class="form-label"> تخفیف ویژه درصد</label>
<label class="form-label">درصد تخفیف ویژه</label>
<input <input
type="number" type="number"
class="form-control" class="form-control"
placeholder="قیمت"
placeholder="درصد"
:class="{ 'is-invalid': errors.spescialPrice }" :class="{ 'is-invalid': errors.spescialPrice }"
@input="clearError('spescialPrice')" @input="clearError('spescialPrice')"
v-model="spescialPrice" v-model="spescialPrice"


+ 2
- 4
src/views/live-preview/pages/products/editProduct.vue Прегледај датотеку

@@ -231,11 +231,11 @@


<BCol v-if="spescial == 1" md="6"> <BCol v-if="spescial == 1" md="6">
<div class="form-group"> <div class="form-group">
<label class="form-label"> تخفیف ویژه درصد </label>
<label class="form-label"> درصد تخفیف ویژه</label>
<input <input
type="number" type="number"
class="form-control" class="form-control"
placeholder="قیمت"
placeholder="درصد"
:class="{ 'is-invalid': errors.spescialPrice }" :class="{ 'is-invalid': errors.spescialPrice }"
@input="clearError('spescialPrice')" @input="clearError('spescialPrice')"
v-model="spescialPrice" v-model="spescialPrice"
@@ -812,7 +812,6 @@


<script> <script>
import VueSelect from "vue3-select-component"; import VueSelect from "vue3-select-component";
import Quill from "quill";
import "quill/dist/quill.snow.css"; import "quill/dist/quill.snow.css";
import Swal from "sweetalert2"; import Swal from "sweetalert2";
import { useRoute } from "vue-router"; import { useRoute } from "vue-router";
@@ -846,7 +845,6 @@ export default {
attribute_value_id: null, attribute_value_id: null,
}, },
]); ]);
const quillInstance = ref(null);


const localIdentities = ref([]); const localIdentities = ref([]);
const countInCarton = ref(); const countInCarton = ref();


Loading…
Откажи
Сачувај