This commit is contained in:
HAM!DREZA
2024-05-31 00:03:10 +03:30
parent fd5b06c2d7
commit 2242ed022f
17 changed files with 379 additions and 96 deletions
+23 -8
View File
@@ -3,12 +3,12 @@
<div class="relative text-center h-[56.154vw] md:h-[11.406vw]"> <div class="relative text-center h-[56.154vw] md:h-[11.406vw]">
<p <p
class="post w-[30.769vw] md:w-[6.979vw] h-[9.487vw] md:h-[2.24vw] flexBox text-[3.59vw] md:text-[0.938vw] absolute left-0 bottom-0 bg-white rounded-tr-[3.59vw] md:rounded-tr-[0.781vw]"> class="post w-[30.769vw] md:w-[6.979vw] h-[9.487vw] md:h-[2.24vw] flexBox text-[3.59vw] md:text-[0.938vw] absolute left-0 bottom-0 bg-white rounded-tr-[3.59vw] md:rounded-tr-[0.781vw]">
540,000 {{props.course?.price}},000
<span class="ms-[1vw] md:ms-[0.2vw] text-[2.236vw] md:text-[0.585vw]">تومان</span> <span class="ms-[1vw] md:ms-[0.2vw] text-[2.236vw] md:text-[0.585vw]">تومان</span>
</p> </p>
<NuxtImg style="object-fit: cover;" :src="props.course?.image" alt="laravel" <NuxtImg style="object-fit: cover;" :src="props.course?.image" alt="laravel"
:placeholder="[30, 20]" :placeholder="[30, 20]"
:format="webp"
class="h-[56.154vw] md:h-[11.406vw] w-full rounded-[3.846vw] md:rounded-[0.781vw]" /> class="h-[56.154vw] md:h-[11.406vw] w-full rounded-[3.846vw] md:rounded-[0.781vw]" />
</div> </div>
@@ -17,10 +17,10 @@
<div class="flexBox flex-col"> <div class="flexBox flex-col">
<div class="w-[69.231vw] md:w-[16vw] space-y-[9vw] md:space-y-[1.4vw] mt-[4vw] md:mt-[0vw] xl:mt-[0.7vw]"> <div class="w-[69.231vw] md:w-[16vw] space-y-[9vw] md:space-y-[1.4vw] mt-[4vw] md:mt-[0vw] xl:mt-[0.7vw]">
<NuxtLink to="/ترفندهای-پایتون" <h1
class="hover:text-primaryGreen text-[3.59vw] md:text-[0.833vw] text-[#383E43] w-full"> class="hover:text-primaryGreen text-[3.59vw] md:text-[0.833vw] text-[#383E43] w-full">
{{props.course?.name}} {{props.course?.name}}
</NuxtLink> </h1>
<div class="flex justify-between text-[3.614vw] md:text-[0.658vw]"> <div class="flex justify-between text-[3.614vw] md:text-[0.658vw]">
<p class="flex items-center text-[#878787]"> <p class="flex items-center text-[#878787]">
<svg <svg
@@ -39,7 +39,22 @@
stroke-linejoin="round" /> stroke-linejoin="round" />
</svg> </svg>
<span class="md:ms-[0.2vw]">بک اند</span> <span class="md:ms-[0.2vw]"
v-for="category in props.course?.categories"
:key="category.id"
>
{{category.name}}
<!-- <span v-if="props.course?.categories[0] === '66587a9498d0a0db14693a5b'">
بک اند
</span>
<span v-if="props.course?.categories[0] === '66587ae698d0a0db14693a5e'">
فرانت اند
</span>
<span v-else>
{{props.course?.categories}}
</span> -->
</span>
</p> </p>
<p class="flex items-center text-[#878787]"> <p class="flex items-center text-[#878787]">
<svg <svg
@@ -60,7 +75,7 @@
fill="#E5E5E5" /> fill="#E5E5E5" />
</svg> </svg>
<span class="md:ms-[0.2vw]">825 دانشجو</span> <span class="md:ms-[0.2vw]">{{props.course?.studentsCount}} دانشجو</span>
</p> </p>
<p class="flex items-center text-[#878787]"> <p class="flex items-center text-[#878787]">
<svg <svg
@@ -72,7 +87,7 @@
fill="#E5E5E5" /> fill="#E5E5E5" />
</svg> </svg>
<span class="md:ms-[0.2vw]">00:28</span> <span class="md:ms-[0.2vw]">{{props.course?.duration}} ساعت</span>
</p> </p>
</div> </div>
<div class="flex justify-between"> <div class="flex justify-between">
@@ -127,7 +142,7 @@
</template> </template>
<script setup> <script setup>
import { useToast } from 'vue-toastification' import { useToast } from 'vue-toastification'
const props = defineProps(['course']) const props = defineProps(['course']);
const toast = useToast() const toast = useToast()
const change = () =>{ const change = () =>{
toast.error('متن تست') toast.error('متن تست')
+7 -5
View File
@@ -49,12 +49,13 @@
<li class="pb-[0.681vw]">گران ترین</li> <li class="pb-[0.681vw]">گران ترین</li>
</ul> </ul>
</div> </div>
<div <div class="mt-[4.051vw] md:mt-[2.1vw] grid gap-[4vw] md:gap-[1.25vw] grid-cols-1 md:grid-cols-4"
class="mt-[4.051vw] md:mt-[2.1vw] grid gap-[4vw] md:gap-[1.25vw] grid-cols-1 md:grid-cols-4"
v-for="(course, index) in data.data.value"
:key="index"
> >
<div v-for="(course, index) in data.data.courses"
:key="index">
<Card :course="course" /> <Card :course="course" />
</div>
</div> </div>
</div> </div>
</template> </template>
@@ -62,7 +63,8 @@
<script setup> <script setup>
// const pages = 17 / 16 // const pages = 17 / 16
// console.log(Math.ceil(pages)); // console.log(Math.ceil(pages));
const data = await useFetch("/api/course"); //const data = await useFetch("/api/course");
const data = defineProps(['data']);
const openSortOptions = () => { const openSortOptions = () => {
if (process.client) { if (process.client) {
document document
@@ -17,7 +17,9 @@
</h3> </h3>
<span <span
class="mt-[3vw] md:mt-[3vw] text-[#878787] text-[3.59vw] md:text-[0.833vw] md:me-[1.563vw]" class="mt-[3vw] md:mt-[3vw] text-[#878787] text-[3.59vw] md:text-[0.833vw] md:me-[1.563vw]"
>42 ویدیو آموزشی</span >
{{data?.count}}
ویدیو آموزشی</span
> >
</div> </div>
<p <p
@@ -79,8 +81,9 @@
:wrapAround="true" :wrapAround="true"
class="w-full md:w-[95%]" class="w-full md:w-[95%]"
> >
<Slide v-for="slide in categories" :key="slide"> <Slide v-for="slide in categories" :key="slide" @click="selectCategory(slide.id)">
<div class="categoriesOption">{{ slide }}</div> <div class="categoriesOption"
>{{ slide.name }}</div>
</Slide> </Slide>
</Carousel> </Carousel>
@@ -98,21 +101,30 @@
</svg> </svg>
</div> </div>
</div> </div>
<div v-if="pending" class="grid grid-cols-4 gap-[2vw] mt-[2vw]">
<Loading />
<Loading />
<Loading />
<Loading />
</div>
<courses-pageCourses-list :data="data"/>
</template> </template>
<script setup> <script setup>
const categories = [ const changeCategory = ref('')
"Python", const {data, refresh, pending} = await useFetch(() => "/api/course", {
"JavaScript", method: "POST",
"C#", body: {
"php", changeCategory
"C++", }
"Ruby", });
"Node.js", const categoryLis = await useFetch("/api/category");
"php", // console.log('daste bandy', categoryLis.data.value);
"C++", const categories = categoryLis.data.value;
"Ruby", function selectCategory (id){
"Node.js", changeCategory.value = '/category/' + id
]; refresh()
}
const breakpoints = { const breakpoints = {
// 700px and up // 700px and up
300: { 300: {
@@ -10,14 +10,15 @@
<div <div
class="mt-[4.051vw] md:mt-[2.1vw] grid gap-[4vw] md:gap-[1.25vw] grid-cols-1 md:grid-cols-4" class="mt-[4.051vw] md:mt-[2.1vw] grid gap-[4vw] md:gap-[1.25vw] grid-cols-1 md:grid-cols-4"
> >
<Card /> <div v-for="(course, index) in selectedItems"
<Card /> :key="index">
<Card /> <Card :course="course" />
<Card />
<Card /> </div>
<Card />
<Card />
<Card />
</div> </div>
</div> </div>
</template> </template>
<script setup>
const data = await useFetch("/api/course");
const selectedItems = data.data.value.courses.slice(0, 8);
</script>
+8 -1
View File
@@ -245,7 +245,14 @@
<p <p
class="py-[2vw] md:py-0 text-[17.72px] md:text-[1.502vw] text-[#383E43] mt-[0.417vw]" class="py-[2vw] md:py-0 text-[17.72px] md:text-[1.502vw] text-[#383E43] mt-[0.417vw]"
> >
علی مصلحی عزیز خوش اومدی <span v-if="authUser.name">
{{authUser?.name}}
</span>
<span v-else>کاربر</span>
عزیز خوش اومدی
</p> </p>
<svg <svg
class="hidden md:block float-left" class="hidden md:block float-left"
+1
View File
@@ -10,6 +10,7 @@ export default defineNuxtConfig({
'@nuxtjs/tailwindcss', '@nuxtjs/tailwindcss',
'@nuxt/image', '@nuxt/image',
'vue3-carousel-nuxt', 'vue3-carousel-nuxt',
"@formkit/nuxt"
], ],
tailwindcss: { tailwindcss: {
cssPath: '~/assets/css/tailwind.css', cssPath: '~/assets/css/tailwind.css',
+178 -26
View File
@@ -7,6 +7,7 @@
"name": "nuxt-app", "name": "nuxt-app",
"hasInstallScript": true, "hasInstallScript": true,
"dependencies": { "dependencies": {
"@formkit/nuxt": "^1.6.5",
"@nuxt/image": "^1.7.0", "@nuxt/image": "^1.7.0",
"nuxt": "^3.11.2", "nuxt": "^3.11.2",
"vue": "^3.4.27", "vue": "^3.4.27",
@@ -23,7 +24,7 @@
"version": "5.2.0", "version": "5.2.0",
"resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
"integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",
"dev": true, "devOptional": true,
"engines": { "engines": {
"node": ">=10" "node": ">=10"
}, },
@@ -1131,6 +1132,134 @@
"integrity": "sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==", "integrity": "sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==",
"peer": true "peer": true
}, },
"node_modules/@formkit/core": {
"version": "1.6.5",
"resolved": "https://registry.npmjs.org/@formkit/core/-/core-1.6.5.tgz",
"integrity": "sha512-LLq8+vLd9ddPYA0NkyvnKycN4ESU8Wqcl9TrllPyU/axduJunSIJMZz4LHzlwK8G26b0pQNegXF/hXaj4wbmng==",
"dependencies": {
"@formkit/utils": "1.6.5"
}
},
"node_modules/@formkit/dev": {
"version": "1.6.5",
"resolved": "https://registry.npmjs.org/@formkit/dev/-/dev-1.6.5.tgz",
"integrity": "sha512-dg62HTehLPi9lLBShixr9AoYgIv13gpxTZgiHEvf1UZz2HQq0Lcp63d0a+XT/tQ2HTz2ewLUGeXSN9dUVkYFSg==",
"dependencies": {
"@formkit/core": "1.6.5",
"@formkit/utils": "1.6.5"
}
},
"node_modules/@formkit/i18n": {
"version": "1.6.5",
"resolved": "https://registry.npmjs.org/@formkit/i18n/-/i18n-1.6.5.tgz",
"integrity": "sha512-mM1UKGSa0Mdd8a8AAF+6BCNFnf8gUD1nOzU6dJ9UoPE8M/qA+hmcPR3PJm39p6e3OaT5O0Gn/J6JxgccPyWmGA==",
"dependencies": {
"@formkit/core": "1.6.5",
"@formkit/utils": "1.6.5",
"@formkit/validation": "1.6.5"
}
},
"node_modules/@formkit/inputs": {
"version": "1.6.5",
"resolved": "https://registry.npmjs.org/@formkit/inputs/-/inputs-1.6.5.tgz",
"integrity": "sha512-mHLMF0JMFZL/JC6NYrG4xaIdi7lUNE+tdC+QMipBdhobUhND0EJSpO6QNPGF6OLd9Zm9MDgqAzNXEtc05/nvow==",
"dependencies": {
"@formkit/core": "1.6.5",
"@formkit/utils": "1.6.5"
}
},
"node_modules/@formkit/nuxt": {
"version": "1.6.5",
"resolved": "https://registry.npmjs.org/@formkit/nuxt/-/nuxt-1.6.5.tgz",
"integrity": "sha512-/jzQ833DoUmD3qWc7RHxJDpfT1kRQBi4oqRzwKIzOJ1+s0/Q1p11m1XAWayF4io/kEs3rHEnIn6X+nzpxzjICw==",
"dependencies": {
"@formkit/core": "1.6.5",
"@formkit/i18n": "1.6.5",
"@formkit/vue": "1.6.5",
"@nuxt/kit": "^3.10.3",
"chokidar": "^3.6.0",
"pathe": "^1.1.2",
"unplugin": "^1.9.0",
"unplugin-formkit": "^0.2.13"
}
},
"node_modules/@formkit/observer": {
"version": "1.6.5",
"resolved": "https://registry.npmjs.org/@formkit/observer/-/observer-1.6.5.tgz",
"integrity": "sha512-3Vh2Pj6tHX3wosbNm5VvwVVlTI5Zq0FT3dl/+DAuaCG84abpTLoc3O0C2pmbQcDaJ4aCuxu3+tBmhY9J7qFXMQ==",
"dependencies": {
"@formkit/core": "1.6.5",
"@formkit/utils": "1.6.5"
}
},
"node_modules/@formkit/rules": {
"version": "1.6.5",
"resolved": "https://registry.npmjs.org/@formkit/rules/-/rules-1.6.5.tgz",
"integrity": "sha512-j9ylAibBvNx+3tEAkYzl2HjQwDzWV2mRPmFH7GTAmtxijFiktPS8HTU9H88H/x2stkYk9S13/MMeqDgZnc3VrQ==",
"dependencies": {
"@formkit/core": "1.6.5",
"@formkit/utils": "1.6.5",
"@formkit/validation": "1.6.5"
}
},
"node_modules/@formkit/themes": {
"version": "1.6.5",
"resolved": "https://registry.npmjs.org/@formkit/themes/-/themes-1.6.5.tgz",
"integrity": "sha512-C+ANzH6qw4zS7niv+RamJAqpASOPfrZvMURVj5HQcT1XlcYB7ULvA9UmDW/AKOqP/OGf/OL6WvOzA7B16UkiiA==",
"dependencies": {
"@formkit/core": "1.6.5"
},
"peerDependencies": {
"tailwindcss": "^3.2.0",
"unocss": "0.x.x",
"windicss": "^3.0.0"
},
"peerDependenciesMeta": {
"tailwindcss": {
"optional": true
},
"unocss": {
"optional": true
},
"windicss": {
"optional": true
}
}
},
"node_modules/@formkit/utils": {
"version": "1.6.5",
"resolved": "https://registry.npmjs.org/@formkit/utils/-/utils-1.6.5.tgz",
"integrity": "sha512-fohOg344tqFujHlEwvyHzzH5YiOBgecuOPkg7r7QObUrsH8gP1N8Rp9CHZlafxZ1zAEHZY2nTNx0VVQBkVmJbA=="
},
"node_modules/@formkit/validation": {
"version": "1.6.5",
"resolved": "https://registry.npmjs.org/@formkit/validation/-/validation-1.6.5.tgz",
"integrity": "sha512-mnU+F6uXsNlczbU7QOq6QfsafSYNmMF9zvOpk4ravn9mba0IDXRhkPgU/+VFpcF/EEiXmqQql3pqQ7Vqv2wVbg==",
"dependencies": {
"@formkit/core": "1.6.5",
"@formkit/observer": "1.6.5",
"@formkit/utils": "1.6.5"
}
},
"node_modules/@formkit/vue": {
"version": "1.6.5",
"resolved": "https://registry.npmjs.org/@formkit/vue/-/vue-1.6.5.tgz",
"integrity": "sha512-D5W8JfhFJXUXm8RX0OfPbPZt3Ds68iqxSrvbvmyabae2cBlGl8sqhMEuc48FptnsGOYqYXOhG+CPni+uE72Whw==",
"dependencies": {
"@formkit/core": "1.6.5",
"@formkit/dev": "1.6.5",
"@formkit/i18n": "1.6.5",
"@formkit/inputs": "1.6.5",
"@formkit/observer": "1.6.5",
"@formkit/rules": "1.6.5",
"@formkit/themes": "1.6.5",
"@formkit/utils": "1.6.5",
"@formkit/validation": "1.6.5"
},
"peerDependencies": {
"vue": "^3.4.0"
}
},
"node_modules/@iconify/types": { "node_modules/@iconify/types": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz",
@@ -4236,7 +4365,7 @@
"version": "1.3.0", "version": "1.3.0",
"resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
"integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
"dev": true "devOptional": true
}, },
"node_modules/anymatch": { "node_modules/anymatch": {
"version": "3.1.3", "version": "3.1.3",
@@ -4364,7 +4493,7 @@
"version": "5.0.2", "version": "5.0.2",
"resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
"integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
"dev": true "devOptional": true
}, },
"node_modules/argparse": { "node_modules/argparse": {
"version": "2.0.1", "version": "2.0.1",
@@ -4845,7 +4974,7 @@
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
"integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
"dev": true, "devOptional": true,
"engines": { "engines": {
"node": ">= 6" "node": ">= 6"
} }
@@ -5677,7 +5806,7 @@
"version": "1.2.2", "version": "1.2.2",
"resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
"integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
"dev": true "devOptional": true
}, },
"node_modules/diff": { "node_modules/diff": {
"version": "5.2.0", "version": "5.2.0",
@@ -5691,7 +5820,7 @@
"version": "1.1.3", "version": "1.1.3",
"resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
"integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
"dev": true "devOptional": true
}, },
"node_modules/dom-serializer": { "node_modules/dom-serializer": {
"version": "2.0.0", "version": "2.0.0",
@@ -7385,7 +7514,7 @@
"version": "1.2.4", "version": "1.2.4",
"resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
"dev": true "devOptional": true
}, },
"node_modules/listhen": { "node_modules/listhen": {
"version": "1.7.2", "version": "1.7.2",
@@ -7915,7 +8044,7 @@
"version": "2.7.0", "version": "2.7.0",
"resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
"integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
"dev": true, "devOptional": true,
"dependencies": { "dependencies": {
"any-promise": "^1.0.0", "any-promise": "^1.0.0",
"object-assign": "^4.0.1", "object-assign": "^4.0.1",
@@ -8589,7 +8718,7 @@
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
"integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
"dev": true, "devOptional": true,
"engines": { "engines": {
"node": ">= 6" "node": ">= 6"
} }
@@ -8936,7 +9065,7 @@
"version": "2.3.0", "version": "2.3.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
"integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
"dev": true, "devOptional": true,
"engines": { "engines": {
"node": ">=0.10.0" "node": ">=0.10.0"
} }
@@ -8945,7 +9074,7 @@
"version": "4.0.6", "version": "4.0.6",
"resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
"integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
"dev": true, "devOptional": true,
"engines": { "engines": {
"node": ">= 6" "node": ">= 6"
} }
@@ -9126,7 +9255,7 @@
"version": "15.1.0", "version": "15.1.0",
"resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
"integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
"dev": true, "devOptional": true,
"dependencies": { "dependencies": {
"postcss-value-parser": "^4.0.0", "postcss-value-parser": "^4.0.0",
"read-cache": "^1.0.0", "read-cache": "^1.0.0",
@@ -9143,7 +9272,7 @@
"version": "4.0.1", "version": "4.0.1",
"resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz",
"integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==",
"dev": true, "devOptional": true,
"dependencies": { "dependencies": {
"camelcase-css": "^2.0.1" "camelcase-css": "^2.0.1"
}, },
@@ -9162,7 +9291,7 @@
"version": "4.0.2", "version": "4.0.2",
"resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz",
"integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==",
"dev": true, "devOptional": true,
"funding": [ "funding": [
{ {
"type": "opencollective", "type": "opencollective",
@@ -9289,7 +9418,7 @@
"version": "6.0.1", "version": "6.0.1",
"resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz",
"integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==",
"dev": true, "devOptional": true,
"dependencies": { "dependencies": {
"postcss-selector-parser": "^6.0.11" "postcss-selector-parser": "^6.0.11"
}, },
@@ -9791,7 +9920,7 @@
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
"integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
"dev": true, "devOptional": true,
"dependencies": { "dependencies": {
"pify": "^2.3.0" "pify": "^2.3.0"
} }
@@ -10842,7 +10971,7 @@
"version": "3.35.0", "version": "3.35.0",
"resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",
"integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==",
"dev": true, "devOptional": true,
"dependencies": { "dependencies": {
"@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/gen-mapping": "^0.3.2",
"commander": "^4.0.0", "commander": "^4.0.0",
@@ -10864,7 +10993,7 @@
"version": "4.1.1", "version": "4.1.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
"integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
"dev": true, "devOptional": true,
"engines": { "engines": {
"node": ">= 6" "node": ">= 6"
} }
@@ -10873,7 +11002,7 @@
"version": "10.3.14", "version": "10.3.14",
"resolved": "https://registry.npmjs.org/glob/-/glob-10.3.14.tgz", "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.14.tgz",
"integrity": "sha512-4fkAqu93xe9Mk7le9v0y3VrPDqLKHarNi2s4Pv7f2yOvfhWfhc7hRPHC/JyqMqb8B/Dt/eGS4n7ykwf3fOsl8g==", "integrity": "sha512-4fkAqu93xe9Mk7le9v0y3VrPDqLKHarNi2s4Pv7f2yOvfhWfhc7hRPHC/JyqMqb8B/Dt/eGS4n7ykwf3fOsl8g==",
"dev": true, "devOptional": true,
"dependencies": { "dependencies": {
"foreground-child": "^3.1.0", "foreground-child": "^3.1.0",
"jackspeak": "^2.3.6", "jackspeak": "^2.3.6",
@@ -10895,7 +11024,7 @@
"version": "9.0.4", "version": "9.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
"integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
"dev": true, "devOptional": true,
"dependencies": { "dependencies": {
"brace-expansion": "^2.0.1" "brace-expansion": "^2.0.1"
}, },
@@ -11070,7 +11199,7 @@
"version": "3.4.3", "version": "3.4.3",
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.3.tgz", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.3.tgz",
"integrity": "sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==", "integrity": "sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==",
"dev": true, "devOptional": true,
"dependencies": { "dependencies": {
"@alloc/quick-lru": "^5.2.0", "@alloc/quick-lru": "^5.2.0",
"arg": "^5.0.2", "arg": "^5.0.2",
@@ -11107,7 +11236,7 @@
"version": "6.0.2", "version": "6.0.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
"integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
"dev": true, "devOptional": true,
"dependencies": { "dependencies": {
"is-glob": "^4.0.3" "is-glob": "^4.0.3"
}, },
@@ -11119,7 +11248,7 @@
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",
"integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",
"dev": true, "devOptional": true,
"engines": { "engines": {
"node": ">=10" "node": ">=10"
} }
@@ -11233,7 +11362,7 @@
"version": "3.3.1", "version": "3.3.1",
"resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
"integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
"dev": true, "devOptional": true,
"dependencies": { "dependencies": {
"any-promise": "^1.0.0" "any-promise": "^1.0.0"
} }
@@ -11242,7 +11371,7 @@
"version": "1.6.0", "version": "1.6.0",
"resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
"integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
"dev": true, "devOptional": true,
"dependencies": { "dependencies": {
"thenify": ">= 3.1.0 < 4" "thenify": ">= 3.1.0 < 4"
}, },
@@ -11299,7 +11428,7 @@
"version": "0.1.13", "version": "0.1.13",
"resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
"integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==",
"dev": true "devOptional": true
}, },
"node_modules/tsscmp": { "node_modules/tsscmp": {
"version": "1.0.6", "version": "1.0.6",
@@ -11584,6 +11713,29 @@
"node": ">=14.0.0" "node": ">=14.0.0"
} }
}, },
"node_modules/unplugin-formkit": {
"version": "0.2.13",
"resolved": "https://registry.npmjs.org/unplugin-formkit/-/unplugin-formkit-0.2.13.tgz",
"integrity": "sha512-qNHz7/0QDO0uVD5MoUZz49CI7q8cHM24RQDwbs5NfRJ6EiyZ1gBmWq9ta3QHR2nD7xacXV+yzmfDbnwlNpkzsg==",
"dependencies": {
"pathe": "^1.1.1",
"unplugin": "^1.4.0"
},
"peerDependenciesMeta": {
"esbuild": {
"optional": true
},
"rollup": {
"optional": true
},
"vite": {
"optional": true
},
"webpack": {
"optional": true
}
}
},
"node_modules/unplugin-vue-router": { "node_modules/unplugin-vue-router": {
"version": "0.7.0", "version": "0.7.0",
"resolved": "https://registry.npmjs.org/unplugin-vue-router/-/unplugin-vue-router-0.7.0.tgz", "resolved": "https://registry.npmjs.org/unplugin-vue-router/-/unplugin-vue-router-0.7.0.tgz",
+1
View File
@@ -10,6 +10,7 @@
"postinstall": "nuxt prepare" "postinstall": "nuxt prepare"
}, },
"dependencies": { "dependencies": {
"@formkit/nuxt": "^1.6.5",
"@nuxt/image": "^1.7.0", "@nuxt/image": "^1.7.0",
"nuxt": "^3.11.2", "nuxt": "^3.11.2",
"vue": "^3.4.27", "vue": "^3.4.27",
+49 -12
View File
@@ -71,13 +71,13 @@
/> />
</svg> </svg>
</div> </div>
<FormKit type="form" @submit="edit" :incomplete-message="false" :actions="false">
<div class="relative items-center gap-[5vw] md:gap-0 grid grid-cols-1 md:grid-cols-2 mt-[2vw] w-full md:w-[65%]"> <div class="relative items-center gap-[5vw] md:gap-0 grid grid-cols-1 md:grid-cols-2 mt-[2vw] w-full md:w-[65%]">
<div class="flex flex-col space-y-[0.2vw] mb-[0.5vw]"> <div class="flex flex-col space-y-[0.2vw] mb-[0.5vw]">
<label for="" class="text-[3.19vw] md:text-[0.833vw] font-[400]">شماره موبایل</label> <label for="" class="text-[3.19vw] md:text-[0.833vw] font-[400]">شماره موبایل</label>
<input <input type="text" name="name"
:value="authUser?.phone" :value="authUser?.phone"
type="text" readonly
class="bg-[#F5F5F5] h-[13.59vw] md:h-[2.969vw] w-full md:w-[19.01vw] rounded-[2.564vw] md:rounded-[0.521vw] px-[1vw]" class="bg-[#F5F5F5] h-[13.59vw] md:h-[2.969vw] w-full md:w-[19.01vw] rounded-[2.564vw] md:rounded-[0.521vw] px-[1vw]"
/> />
</div> </div>
@@ -85,29 +85,66 @@
<label for="" class="text-[3.19vw] md:text-[0.833vw] font-[400]" <label for="" class="text-[3.19vw] md:text-[0.833vw] font-[400]"
>نام و نام خانوادگی</label >نام و نام خانوادگی</label
> >
<input <FormKit
name="name"
:value="authUser?.name" :value="authUser?.name"
type="text" type="text"
class="bg-[#F5F5F5] h-[13.59vw] md:h-[2.969vw] w-full md:w-[19.01vw] rounded-[2.564vw] md:rounded-[0.521vw]" input-class="bg-[#F5F5F5] h-[13.59vw] md:h-[2.969vw] w-full md:w-[19.01vw] rounded-[2.564vw] md:rounded-[0.521vw] px-[1vw]"
/>
</div>
<div class="flex flex-col space-y-[0.2vw]">
<label for="" class="text-[3.19vw] md:text-[0.833vw] font-[400]">نام کاربری</label>
<FormKit
name="userName"
:value="authUser?.userName"
type="text"
input-class="bg-[#F5F5F5] h-[13.59vw] md:h-[2.969vw] w-full md:w-[19.01vw] rounded-[2.564vw] md:rounded-[0.521vw] px-[1vw]"
/> />
</div> </div>
<div class="flex flex-col space-y-[0.2vw]"> <div class="flex flex-col space-y-[0.2vw]">
<label for="" class="text-[3.19vw] md:text-[0.833vw] font-[400]">ایمیل</label> <label for="" class="text-[3.19vw] md:text-[0.833vw] font-[400]">ایمیل</label>
<input <FormKit
name="email"
:value="authUser?.email"
type="text" type="text"
class="bg-[#F5F5F5] h-[13.59vw] md:h-[2.969vw] w-full md:w-[19.01vw] rounded-[2.564vw] md:rounded-[0.521vw]" input-class="bg-[#F5F5F5] h-[13.59vw] md:h-[2.969vw] w-full md:w-[19.01vw] rounded-[2.564vw] md:rounded-[0.521vw] px-[1vw]"
/> />
</div> </div>
<button <FormKit
class="text-[3.59vw] md:text-[0.833vw] absolute md:left-[1vw] top-[80vw] md:top-[11vw] greenButton h-[13.59vw] md:h-[2.813vw] w-full md:w-[8.438vw] rounded-[2.564vw] md:rounded-[0.521vw] flexBox px-0" input-class="
> text-[3.59vw] md:text-[0.833vw] absolute md:left-[1vw] top-[80vw] md:top-[11vw] greenButton h-[13.59vw]
ثبت اطلاعات md:h-[2.813vw] w-full md:w-[8.438vw] rounded-[2.564vw] md:rounded-[0.521vw] flexBox px-0
</button> "
type="submit">
ویرایش
</FormKit>
</div> </div>
</FormKit>
</div> </div>
</template> </template>
<script setup> <script setup>
import { useToast } from 'vue-toastification'
const toast = useToast()
const { authUser } = useAuth(); const { authUser } = useAuth();
const loading = ref(false)
const edit = async(formData) => {
console.log('form :',formData);
try {
loading.value = true;
await $fetch('/api/user/update', {
method: 'PUT',
body: formData
})
// toast.success("ویرایش اطلاعات شما باموفقیت انجام شد");
location.reload()
} catch (error) {
toast.error(error)
} finally {
loading.value = false;
}
}
</script> </script>
+4 -7
View File
@@ -385,7 +385,6 @@ import { useToast } from 'vue-toastification'
const toast = useToast() const toast = useToast()
const { data: tickets, refresh: load } = await useFetch("/api/ticket"); const { data: tickets, refresh: load } = await useFetch("/api/ticket");
console.log('cli tick', tickets);
const loading = ref(false); const loading = ref(false);
const addTicketForm = ref(false); const addTicketForm = ref(false);
const subject = ref(null); const subject = ref(null);
@@ -401,12 +400,13 @@ const sendTicket = async () => {
const data = await useFetch("/api/ticket", { const data = await useFetch("/api/ticket", {
method: "POST", method: "POST",
body: { body: {
subject, subject: subject.value,
}, },
}); });
subject.value = '';
addTicketForm.value = false;
load() load()
addTicketForm.value = false;
subject.value = null;
console.log('تیکت',data);
}; };
@@ -424,9 +424,6 @@ const openTicket = async (data) => {
} }
} }
const {data: single, refresh: reload} = await useFetch("/api/ticket/id", { const {data: single, refresh: reload} = await useFetch("/api/ticket/id", {
method: "POST", method: "POST",
body: { body: {
+1 -1
View File
@@ -3,7 +3,7 @@
<div class="courses"> <div class="courses">
<div > <div >
<home-page-courses-sectionCategories /> <home-page-courses-sectionCategories />
<courses-pageCourses-list /> <!-- <courses-pageCourses-list /> -->
<courses-pagePagination /> <courses-pagePagination />
</div> </div>
</div> </div>
@@ -1,13 +1,13 @@
export default defineEventHandler(async (event) => { export default defineEventHandler(async (event) => {
const { public: { apiBase } } = useRuntimeConfig(); const { public: { apiBase } } = useRuntimeConfig();
try { try {
const data = await $fetch(`${apiBase}/course`, { const categoryLis = await $fetch(`${apiBase}/courseCategory`, {
method: 'GET', method: 'GET',
headers: { headers: {
'Accept': 'application/json', 'Accept': 'application/json',
} }
}); });
return data; return categoryLis;
} catch (error) { } catch (error) {
return error; return error;
} }
+33
View File
@@ -0,0 +1,33 @@
export default defineEventHandler(async (event) => {
const { public: { apiBase } } = useRuntimeConfig();
const body = await readBody(event);
console.log(body);
try {
const data = await $fetch(`${apiBase}/course${body.changeCategory}`, {
method: 'GET',
headers: {
'Accept': 'application/json',
}
});
return data;
} catch (error) {
return error;
}
})
// const page = ref(0);
// const { data, refresh } = await useFetch(() => '/api/global', {
// query: { url: '/orders', page },
// headers: useRequestHeaders(['cookie'])
// })
// function paginate(value) {
// page.value = value;
// refresh()
// }
+1 -2
View File
@@ -3,7 +3,7 @@ export default defineEventHandler(async (event) => {
const { public: { apiBase } } = useRuntimeConfig(); const { public: { apiBase } } = useRuntimeConfig();
const token = getCookie(event, 'token'); const token = getCookie(event, 'token');
const body = await readBody(event); const body = await readBody(event);
console.log('body', body.id); console.log('badane :', body);
try { try {
const data = await $fetch(`${apiBase}/ticket/${body.id}`, { const data = await $fetch(`${apiBase}/ticket/${body.id}`, {
method: 'GET', method: 'GET',
@@ -13,7 +13,6 @@ console.log('body', body.id);
}, },
id: body.id id: body.id
}); });
console.log('tttt :', data);
return data; return data;
} catch (error) { } catch (error) {
return error; return error;
@@ -3,7 +3,7 @@ export default defineEventHandler(async (event) => {
const { public: { apiBase } } = useRuntimeConfig(); const { public: { apiBase } } = useRuntimeConfig();
const token = getCookie(event, 'token'); const token = getCookie(event, 'token');
const body = await readBody(event); const body = await readBody(event);
console.log(body);
try { try {
const data = await $fetch(`${apiBase}/ticket`, { const data = await $fetch(`${apiBase}/ticket`, {
method: 'POST', method: 'POST',
@@ -11,8 +11,9 @@ export default defineEventHandler(async (event) => {
'Accept': 'application/json', 'Accept': 'application/json',
'Authorization': `Bearer ${token}` 'Authorization': `Bearer ${token}`
}, },
body body,
}); });
return data; return data;
} catch (error) { } catch (error) {
-2
View File
@@ -3,7 +3,6 @@ export default defineEventHandler(async (event) => {
const { public: { apiBase } } = useRuntimeConfig(); const { public: { apiBase } } = useRuntimeConfig();
const token = getCookie(event, 'token'); const token = getCookie(event, 'token');
const body = await readBody(event); const body = await readBody(event);
console.log('bod' , body);
try { try {
const data = await $fetch(`${apiBase}/ticket/message`, { const data = await $fetch(`${apiBase}/ticket/message`, {
method: 'POST', method: 'POST',
@@ -13,7 +12,6 @@ console.log('bod' , body);
}, },
body body
}); });
console.log('new :', data);
return data; return data;
} catch (error) { } catch (error) {
// if (error.statusCode == 401) { // if (error.statusCode == 401) {
+27
View File
@@ -0,0 +1,27 @@
export default defineEventHandler(async (event) => {
const body = await readBody(event);
const { public: { apiBase } } = useRuntimeConfig();
const token = getCookie(event, 'token');
console.log(body);
try {
const data = await $fetch(`${apiBase}/user/update`, {
method: 'PUT',
body: {
avatarMediaId: "",
name: body.name,
lastName: "",
userName: "",
email: body.email,
userName: body.userName
},
headers: {
'Accept': 'application/json',
'Authorization': `Bearer ${token}`
}
});
return data;
} catch (err) {
return err
}
})