diff --git a/components.d.ts b/components.d.ts index 872bec6..b9e7102 100644 --- a/components.d.ts +++ b/components.d.ts @@ -7,19 +7,25 @@ export {} /* prettier-ignore */ declare module 'vue' { export interface GlobalComponents { + AddVideo: typeof import('./src/components/AddVideo.vue')['default'] Avatar: typeof import('primevue/avatar')['default'] + Badge: typeof import('primevue/badge')['default'] Button: typeof import('primevue/button')['default'] Card: typeof import('primevue/card')['default'] CategoryForm: typeof import('./src/components/CategoryForm.vue')['default'] + Checkbox: typeof import('primevue/checkbox')['default'] Column: typeof import('primevue/column')['default'] + copy: typeof import('./src/components/ProductDetails copy.vue')['default'] CouponDetails: typeof import('./src/components/CouponDetails.vue')['default'] DataTable: typeof import('primevue/datatable')['default'] Dropdown: typeof import('primevue/dropdown')['default'] Editor: typeof import('primevue/editor')['default'] Fieldset: typeof import('primevue/fieldset')['default'] + FileUpload: typeof import('primevue/fileupload')['default'] FirstStep: typeof import('./src/components/ProductFormSteps/FirstStep.vue')['default'] FloatLabel: typeof import('primevue/floatlabel')['default'] Galleria: typeof import('primevue/galleria')['default'] + HeadlineDetail: typeof import('./src/components/HeadlineDetail.vue')['default'] HelloWorld: typeof import('./src/components/HelloWorld.vue')['default'] IconCommunity: typeof import('./src/components/icons/IconCommunity.vue')['default'] IconDocumentation: typeof import('./src/components/icons/IconDocumentation.vue')['default'] @@ -35,8 +41,10 @@ declare module 'vue' { Paginator: typeof import('primevue/paginator')['default'] Panel: typeof import('primevue/panel')['default'] PanelMenu: typeof import('primevue/panelmenu')['default'] + Password: typeof import('primevue/password')['default'] ProductDetails: typeof import('./src/components/ProductDetails.vue')['default'] ProductForm: typeof import('./src/components/ProductForm.vue')['default'] + ProgressBar: typeof import('primevue/progressbar')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] SecondStep: typeof import('./src/components/ProductFormSteps/SecondStep.vue')['default'] diff --git a/src/components/AddVideo.vue b/src/components/AddVideo.vue new file mode 100644 index 0000000..3333db5 --- /dev/null +++ b/src/components/AddVideo.vue @@ -0,0 +1,314 @@ + + + + + + + + + {{ $t("عنوان ویدیو") }} + + + + + + + {{ $t("توضیحات متا") }} + + + + + + + {{ $t("وضعیت ویدیو") }} + + + + + + + + + + + + + + + + + + {{ totalSize }}B / 1Mb + + + + + + + Pending + + + + + + {{ file.name }} + {{ formatSize(file.size) }} + + + + + + + + Completed + + + + + + {{ file.name }} + {{ formatSize(file.size) }} + + + + + + + + + + + ویدیو را اینجا رها کنید + + + + + + + + + + + + + + + + diff --git a/src/components/HeadlineDetail.vue b/src/components/HeadlineDetail.vue new file mode 100644 index 0000000..77d68ed --- /dev/null +++ b/src/components/HeadlineDetail.vue @@ -0,0 +1,85 @@ + + + + + + + + + {{ $t('عنوان') }} + + + {{ head.product.headline }} + + + + {{ $t('توضیحات') }} + {{ head.product.description }} + + + {{ $t('تعداد نظرات') }} + {{ head.product.Comment.length }} + + + + + + + + + + \ No newline at end of file diff --git a/src/layouts/Main.vue b/src/layouts/Main.vue index efb4206..53e4860 100644 --- a/src/layouts/Main.vue +++ b/src/layouts/Main.vue @@ -104,8 +104,8 @@ const items = ref([ command: () => router.push('/create') }, { - label: t('addVideo'), - icon: 'pi pi-file-edit', + label: t('مدیریت ویدیو ها'), + icon: 'pi pi-video', command: () => router.push('/videos') }, diff --git a/src/router/index.js b/src/router/index.js index 7cda070..8b31aaa 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -108,6 +108,11 @@ const router = createRouter({ name: 'AddVideos', component: () => import('@/views/AddVideos.vue'), }, + // { + // path: '/videos/create', + // name: 'createVideo', + // component: () => import('@/views/CreateVideo.vue'), + // }, { path: '/pages', children: [ diff --git a/src/stores/Headlines.js b/src/stores/Headlines.js index 9ead11b..5e2b5a0 100644 --- a/src/stores/Headlines.js +++ b/src/stores/Headlines.js @@ -12,32 +12,33 @@ export const useHeadlinesStore = defineStore('headlines', { actions: { async index(courseId) { this.items = []; + const params = { courseId } + this.fetching = true - const { status, data } = await axios.get('/courseHeadline', courseId) + const { status, data } = await axios.get('/courseHeadline', { params }) this.fetching = false - return data - - }, - - async create(newCourse) { - const { status, data } = await axios.post('/course', newCourse) - - return data + return this.items = data }, async delete(id) { - const { status, data } = await axios.delete(`/course/${id}`, id) - + const { status, data } = await axios.delete(`/courseHeadline/${id}`, id) return data - }, + // async create(newCourse) { + // const { status, data } = await axios.post('/course', newCourse) + // return data + // }, + async edit(id) { const { status, data } = await axios.get(`/course/${id}`) return data }, - +async create(form){ + const {status, data} = await axios.post('/courseHeadline', form) + return data +} // async store(form) { diff --git a/src/stores/uploader.js b/src/stores/uploader.js index 9f2f4f4..60a3827 100644 --- a/src/stores/uploader.js +++ b/src/stores/uploader.js @@ -13,7 +13,7 @@ export const useUploaderStore = defineStore('uploader', { const form = new FormData() form.append('directoryName', 'directoryName') - form.append('file', new Blob([file])) + form.append('file', file) // for (var pair of form.entries()) { // console.log('pairs :',pair[0]+ ', ' + pair[1]); // } @@ -21,6 +21,7 @@ export const useUploaderStore = defineStore('uploader', { headers: { "Content-Type": "multipart/form-data", }, + }; try { const result = await axios.post('/uploader', diff --git a/src/views/AddVideos.vue b/src/views/AddVideos.vue index 9fd6c18..ff2170d 100644 --- a/src/views/AddVideos.vue +++ b/src/views/AddVideos.vue @@ -1,24 +1,154 @@ - add - {{ videos }} - - + + + + + + + + + + + + + + + + + + + + + {{ store.fetching ? $t("loading") : $t("emptyTable") }} + + + + + + + + + \ No newline at end of file diff --git a/src/views/Create.vue b/src/views/Create.vue index fba45b1..fe56fc4 100644 --- a/src/views/Create.vue +++ b/src/views/Create.vue @@ -27,6 +27,8 @@ {{ $t("سطح دوره") }} @@ -80,9 +82,10 @@ + {{ $t("image") }} @@ -198,10 +201,11 @@ const newCourse = reactive({ countOfVideos: 0, totalFileSize: "", }); -const chooseImage = async (el) => { - const uploader = await uploadStore.uploader(el.target.value); - //console.log('uploader', uploader.data.url); - newCourse.image = uploader.data.url; +const chooseImage = async (val) => { + console.log(val.target.files[0]); + const uploader = await uploadStore.uploader(val.target.files[0]); + console.log('uploader', uploader.data.url); + newCourse.image = uploader.data.url; console.log("تصویر آپلود شد"); console.log("upldr", uploader); }; diff --git a/src/views/Videos.vue b/src/views/Videos.vue index fea6ceb..59cee2e 100644 --- a/src/views/Videos.vue +++ b/src/views/Videos.vue @@ -34,9 +34,10 @@ - +
ویدیو را اینجا رها کنید
{{ store.fetching ? $t("loading") : $t("emptyTable") }}