Commit 3748fc66 authored by Tình Trương's avatar Tình Trương

update

parent 641b5de3
...@@ -82,4 +82,6 @@ export enum API_PATHS { ...@@ -82,4 +82,6 @@ export enum API_PATHS {
updateCategoryPost = 'postCategory/update', updateCategoryPost = 'postCategory/update',
getListBooking = 'booking', getListBooking = 'booking',
getBookingDetail = 'booking/detail', getBookingDetail = 'booking/detail',
getArrayArtist = 'artist/arrayArtist',
getArrayCust = 'customer/arrayCust',
} }
...@@ -412,3 +412,13 @@ export type ListBooking = { ...@@ -412,3 +412,13 @@ export type ListBooking = {
activeStatus: number; activeStatus: number;
fee: string; fee: string;
}; };
export type ListArrayArtist = {
id: number;
artistName: string;
};
export type ListArrayCust = {
id: number;
fullName: string;
};
...@@ -93,6 +93,7 @@ export default defineComponent({ ...@@ -93,6 +93,7 @@ export default defineComponent({
'deleteStories', 'deleteStories',
'confirmDeleteSocialEmbedded', 'confirmDeleteSocialEmbedded',
'click:openAddStoryDialog', 'click:openAddStoryDialog',
'click:openUpdateStoryDialog',
'confirmDeleteStory', 'confirmDeleteStory',
], ],
}); });
...@@ -245,6 +245,16 @@ ...@@ -245,6 +245,16 @@
<div class="flex flex-center"> <div class="flex flex-center">
<div class="text-h6 text-weight-regular q-py-md">Story</div> <div class="text-h6 text-weight-regular q-py-md">Story</div>
<q-space></q-space> <q-space></q-space>
<!-- <q-btn
class="q-py-md"
v-if="stories !== null"
@click="$emit('click:openUpdateStoryDialog')"
flat
color="primary"
icon="mdi-pencil-circle-outline"
>
<q-tooltip>Chỉnh sửa Story</q-tooltip></q-btn
> -->
<q-btn <q-btn
class="q-py-md" class="q-py-md"
v-if="stories.length" v-if="stories.length"
...@@ -288,7 +298,6 @@ ...@@ -288,7 +298,6 @@
v-model="slideStory" v-model="slideStory"
animated animated
arrows arrows
navigation
infinite infinite
style="height: 35rem" style="height: 35rem"
> >
...@@ -307,31 +316,20 @@ ...@@ -307,31 +316,20 @@
" "
style="height: 35rem" style="height: 35rem"
> >
<!-- <q-input <div
outlined style="
type="text" background: center bottom;
style="font-size: 30px; padding-top: 18.75rem" text-align: justify;
readonly height: 100%;
></q-input> --> display: flex;
<!-- <q-input flex-direction: column;
outlined justify-content: flex-end;
type="textarea" "
class="q-py-sm" >
:model-value="story.content" <div style="font-size: 30px">
@update:model-value="$emit('update:content', $event)"
readonly
></q-input> -->
<div style="background: bottom; padding-top: 320px">
<div
style="
text-align: justify;
background: bottom;
font-size: 30px;
"
>
{{ story.title }} {{ story.title }}
</div> </div>
<div style="text-align: justify; background: bottom"> <div>
{{ story.content }} {{ story.content }}
</div> </div>
</div> </div>
......
<template>
<q-dialog
persistent
:model-value="isOpenUpdateStory"
@update:model-value="$emit('update:isOpenUpdateStory', $event)"
>
<q-card style="min-width: 600px" bordered>
<q-card-section>
<q-item>
<q-item-section>
<q-item-label class="text-h6 text-weight-regular">{{
$t('artist.dialogLabel.title.updateStory')
}}</q-item-label>
</q-item-section>
</q-item>
</q-card-section>
<q-separator />
<q-card-section>
<div class="row q-col-gutter-sm">
<div class="col-12">
<q-card v-if="urlFileLocal" flat>
<div align="center">
<q-img
:src="imageAPI ? imageAPI : urlFileLocal"
style="aspect-ratio: 16/9"
>
</q-img>
</div>
</q-card>
<UploadImage
@selectedFile="uploadStory"
class="q-mt-md"
:isBtn="true"
></UploadImage>
<q-input
v-model="title"
label="Tiêu đề"
hide-bottom-space
type="text"
class="q-my-sm"
outlined
clearable
></q-input>
<q-input
v-model="content"
label="Nội dung"
hide-bottom-space
type="textarea"
class="q-my-sm"
outlined
clearable
></q-input>
</div>
</div>
</q-card-section>
<q-card-actions align="right">
<q-btn
color="grey"
no-caps
style="width: 90px"
:label="$t('customer.crudActions.cancel')"
@click="$emit('click:CloseBtnUpdateStory')"
/>
<q-btn
color="primary"
no-caps
style="width: 90px"
:label="$t('customer.crudActions.save')"
type="submit"
/>
</q-card-actions>
</q-card>
</q-dialog>
</template>
<script lang="ts">
import { defineComponent, PropType, Ref, ref, watch } from 'vue';
import UploadImage from '../../../upload-image/index.vue';
import { StoriesType } from 'src/assets/type';
import { config } from 'src/assets/configurations';
export default defineComponent({
components: {
UploadImage,
},
props: {
isOpenUpdateStory: {
type: Boolean,
required: true,
},
stories: {
type: Object as PropType<StoriesType>,
requied: false,
},
},
setup(props) {
const configImg = config;
const id: Ref<number | null> = ref(null);
const file: Ref<File | string> = ref('');
const title: Ref<string> = ref('');
const content: Ref<string> = ref('');
const urlFileLocal: Ref<string> = ref('');
const imageAPI: Ref<string | null> = ref(null);
const uploadStory = (value: FileList) => {
urlFileLocal.value = URL.createObjectURL(value[0]);
file.value = value[0];
imageAPI.value = null;
};
watch(
() => props.isOpenUpdateStory,
(value) => {
if (value) {
id.value = props.stories?.id as number;
title.value = props.stories?.title as string;
content.value = props.stories?.content as string;
urlFileLocal.value = props.stories?.imageUrl as string;
imageAPI.value =
// eslint-disable-next-line @typescript-eslint/restrict-plus-operands
configImg.API_IMAGE_ENDPOINT + props.stories?.imageUrl;
}
}
);
const ResetData = () => {
file.value = '';
title.value = '';
content.value = '';
urlFileLocal.value = '';
};
return {
uploadStory,
urlFileLocal,
file,
title,
content,
ResetData,
id,
configImg,
imageAPI,
};
},
emits: [
'selectedFile',
'update:isOpenUpdateStory',
'click:CloseBtnUpdateStory',
],
});
</script>
...@@ -413,6 +413,7 @@ export default { ...@@ -413,6 +413,7 @@ export default {
dialogLabel: { dialogLabel: {
title: { title: {
addStory: 'Thêm Story', addStory: 'Thêm Story',
updateStory: 'Chỉnh sửa Story',
addArtist: 'Thêm nghệ sỹ', addArtist: 'Thêm nghệ sỹ',
updateArtist: 'Cập nhật nghệ sỹ', updateArtist: 'Cập nhật nghệ sỹ',
addAccountBank: 'Thêm tài khoản ngân hàng', addAccountBank: 'Thêm tài khoản ngân hàng',
......
...@@ -100,6 +100,7 @@ ...@@ -100,6 +100,7 @@
:stories="stories" :stories="stories"
@deleteStories="DeleteItemStories" @deleteStories="DeleteItemStories"
@click:openAddStoryDialog="isOpenAddStory = true" @click:openAddStoryDialog="isOpenAddStory = true"
@click:openUpdateStoryDialog="isOpenUpdateStory = true"
@confirmDeleteStory="deleteStory" @confirmDeleteStory="deleteStory"
></VabAccount> ></VabAccount>
</q-tab-panel> </q-tab-panel>
...@@ -170,6 +171,10 @@ ...@@ -170,6 +171,10 @@
v-model:is-open-add-story="isOpenAddStory" v-model:is-open-add-story="isOpenAddStory"
@click:CloseBtnAddStory="isOpenAddStory = false" @click:CloseBtnAddStory="isOpenAddStory = false"
></AddStory> ></AddStory>
<UpdateStory
v-model:is-open-update-story="isOpenUpdateStory"
@click:CloseBtnUpdateStory="isOpenUpdateStory = false"
></UpdateStory>
<div class="col-12 q-mt-md"> <div class="col-12 q-mt-md">
<div class="row"> <div class="row">
<q-space></q-space> <q-space></q-space>
......
...@@ -19,6 +19,7 @@ import EditBankAccountDialog from 'components/artist-information/bank-account/ed ...@@ -19,6 +19,7 @@ import EditBankAccountDialog from 'components/artist-information/bank-account/ed
import UploadEmbedDialog from 'components/artist-information/upload-embed-dialog/index.vue'; import UploadEmbedDialog from 'components/artist-information/upload-embed-dialog/index.vue';
import UpdateHotProduct from 'components/artist-information/UpdateHotProduct/index.vue'; import UpdateHotProduct from 'components/artist-information/UpdateHotProduct/index.vue';
import AddStory from 'components/artist-information/VAB-account/add-story/index.vue'; import AddStory from 'components/artist-information/VAB-account/add-story/index.vue';
import UpdateStory from 'components/artist-information/VAB-account/update-story/index.vue';
import { import {
ArtistInfoType, ArtistInfoType,
...@@ -56,6 +57,7 @@ export default defineComponent({ ...@@ -56,6 +57,7 @@ export default defineComponent({
UpdateHotProduct, UpdateHotProduct,
UploadEmbedDialog, UploadEmbedDialog,
AddStory, AddStory,
UpdateStory,
}, },
setup() { setup() {
...@@ -68,6 +70,7 @@ export default defineComponent({ ...@@ -68,6 +70,7 @@ export default defineComponent({
const openUpdateHotProduct: Ref<boolean> = ref(false); const openUpdateHotProduct: Ref<boolean> = ref(false);
const isOpenDialogEmbed: Ref<boolean> = ref(false); const isOpenDialogEmbed: Ref<boolean> = ref(false);
const isOpenAddStory: Ref<boolean> = ref(false); const isOpenAddStory: Ref<boolean> = ref(false);
const isOpenUpdateStory: Ref<boolean> = ref(false);
// state // state
const fieldOptions: Ref<FieldType[]> = ref([]); const fieldOptions: Ref<FieldType[]> = ref([]);
...@@ -951,6 +954,7 @@ export default defineComponent({ ...@@ -951,6 +954,7 @@ export default defineComponent({
confirmDeleteSocialEmbedded, confirmDeleteSocialEmbedded,
changeEmbed, changeEmbed,
isOpenAddStory, isOpenAddStory,
isOpenUpdateStory,
addStory, addStory,
deleteStory, deleteStory,
UpdateBirtday, UpdateBirtday,
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<q-select <q-select
v-model="sreachArtist" v-model="sreachArtist"
:options="artistOptions" :options="artistOptions"
option-label="name" option-label="artistName"
option-value="id" option-value="id"
dense dense
outlined outlined
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
<q-select <q-select
v-model="sreachUserName" v-model="sreachUserName"
:options="customerOptions" :options="customerOptions"
option-label="name" option-label="fullName"
option-value="id" option-value="id"
dense dense
outlined outlined
...@@ -235,8 +235,8 @@ import Pagination from 'components/pagination/index.vue'; ...@@ -235,8 +235,8 @@ import Pagination from 'components/pagination/index.vue';
import { import {
PaginationResponse, PaginationResponse,
ListBooking, ListBooking,
ArtistInfoType, ListArrayArtist,
CustomerType, ListArrayCust,
} from 'src/assets/type'; } from 'src/assets/type';
import detailBooking from '../../components/detailBooking/index.vue'; import detailBooking from '../../components/detailBooking/index.vue';
import moment from 'moment'; import moment from 'moment';
...@@ -413,32 +413,30 @@ export default defineComponent({ ...@@ -413,32 +413,30 @@ export default defineComponent({
} }
}; };
const artistOptions: Ref<ArtistInfoType[] | null> = ref([]); const artistOptions: Ref<ListArrayArtist[] | null> = ref([]);
const customerOptions: Ref<CustomerType[] | null> = ref([]); const customerOptions: Ref<ListArrayCust[] | null> = ref([]);
// const getArtistOptions = async () => { const getArrayArtist = async () => {
// const response = (await api({ const response = (await api({
// url: API_PATHS.getListArtists, url: API_PATHS.getArrayArtist,
// method: 'GET', method: 'GET',
// params: {}, params: {},
// })) as AxiosResponse<BaseResponseBody<ArtistInfoType[]>>; })) as AxiosResponse<BaseResponseBody<ListArrayArtist[]>>;
// if (response.data.error.code === config.API_RES_CODE.OK.code) { if (response.data.error.code === config.API_RES_CODE.OK.code) {
// console.log(response, 'sss'); artistOptions.value = response.data.data;
// artistOptions.value = response.data.data; }
// } };
// };
// const getCustomerOptions = async () => { const getArrayCust = async () => {
// const response = (await api({ const response = (await api({
// url: API_PATHS.listCustomers, url: API_PATHS.getArrayCust,
// method: 'GET', method: 'GET',
// params: {}, params: {},
// })) as AxiosResponse<BaseResponseBody<CustomerType[]>>; })) as AxiosResponse<BaseResponseBody<ListArrayCust[]>>;
// if (response.data.error.code === config.API_RES_CODE.OK.code) { if (response.data.error.code === config.API_RES_CODE.OK.code) {
// console.log(response, 'sss111'); customerOptions.value = response.data.data;
// customerOptions.value = response.data.data; }
// } };
// };
const getListBooking = async () => { const getListBooking = async () => {
try { try {
...@@ -448,8 +446,10 @@ export default defineComponent({ ...@@ -448,8 +446,10 @@ export default defineComponent({
params: { params: {
pageIndex: pageIndex.value, pageIndex: pageIndex.value,
pageSize: pageSize.value, pageSize: pageSize.value,
artistName: sreachArtist.value, artistId: sreachArtist.value,
userName: sreachUserName.value, custId: sreachUserName.value,
status: sreachStatus.value,
performBooking: sreachActiveStatus.value,
}, },
})) as AxiosResponse<BaseResponseBody<PaginationResponse<ListBooking>>>; })) as AxiosResponse<BaseResponseBody<PaginationResponse<ListBooking>>>;
if (response.data.error.code === config.API_RES_CODE.OK.code) { if (response.data.error.code === config.API_RES_CODE.OK.code) {
...@@ -480,8 +480,8 @@ export default defineComponent({ ...@@ -480,8 +480,8 @@ export default defineComponent({
onMounted(() => { onMounted(() => {
void getListBooking(); void getListBooking();
// void getArtistOptions(); void getArrayArtist();
// void getCustomerOptions(); void getArrayCust();
}); });
return { return {
changeTime, changeTime,
...@@ -509,6 +509,6 @@ export default defineComponent({ ...@@ -509,6 +509,6 @@ export default defineComponent({
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.sreach { .sreach {
width: 12rem; width: 14rem;
} }
</style> </style>
...@@ -19,6 +19,7 @@ import EditBankAccountDialog from 'components/artist-information/bank-account/ed ...@@ -19,6 +19,7 @@ import EditBankAccountDialog from 'components/artist-information/bank-account/ed
import UploadEmbedDialog from 'components/artist-information/upload-embed-dialog/index.vue'; import UploadEmbedDialog from 'components/artist-information/upload-embed-dialog/index.vue';
import UpdateHotProduct from 'components/artist-information/UpdateHotProduct/index.vue'; import UpdateHotProduct from 'components/artist-information/UpdateHotProduct/index.vue';
import AddStory from 'components/artist-information/VAB-account/add-story/index.vue'; import AddStory from 'components/artist-information/VAB-account/add-story/index.vue';
import UpdateStory from 'components/artist-information/VAB-account/update-story/index.vue';
import { import {
FieldType, FieldType,
...@@ -58,6 +59,7 @@ export default defineComponent({ ...@@ -58,6 +59,7 @@ export default defineComponent({
UpdateHotProduct, UpdateHotProduct,
UploadEmbedDialog, UploadEmbedDialog,
AddStory, AddStory,
UpdateStory,
}, },
setup() { setup() {
...@@ -71,6 +73,7 @@ export default defineComponent({ ...@@ -71,6 +73,7 @@ export default defineComponent({
const openUpdateHotProduct: Ref<boolean> = ref(false); const openUpdateHotProduct: Ref<boolean> = ref(false);
const isOpenDialogEmbed: Ref<boolean> = ref(false); const isOpenDialogEmbed: Ref<boolean> = ref(false);
const isOpenAddStory: Ref<boolean> = ref(false); const isOpenAddStory: Ref<boolean> = ref(false);
const isOpenUpdateStory: Ref<boolean> = ref(false);
// state // state
const fieldOptions: Ref<FieldType[]> = ref([]); const fieldOptions: Ref<FieldType[]> = ref([]);
...@@ -863,6 +866,7 @@ export default defineComponent({ ...@@ -863,6 +866,7 @@ export default defineComponent({
confirmDeleteSocialEmbedded, confirmDeleteSocialEmbedded,
changeEmbed, changeEmbed,
isOpenAddStory, isOpenAddStory,
isOpenUpdateStory,
addStory, addStory,
deleteStory, deleteStory,
UpdateBirtday, UpdateBirtday,
......
...@@ -100,6 +100,7 @@ ...@@ -100,6 +100,7 @@
:stories="stories" :stories="stories"
@deleteStories="DeleteItemStories" @deleteStories="DeleteItemStories"
@click:openAddStoryDialog="isOpenAddStory = true" @click:openAddStoryDialog="isOpenAddStory = true"
@click:openUpdateStoryDialog="isOpenUpdateStory = true"
@confirmDeleteStory="deleteStory" @confirmDeleteStory="deleteStory"
></VabAccount> ></VabAccount>
</q-tab-panel> </q-tab-panel>
...@@ -170,6 +171,10 @@ ...@@ -170,6 +171,10 @@
v-model:is-open-add-story="isOpenAddStory" v-model:is-open-add-story="isOpenAddStory"
@click:CloseBtnAddStory="isOpenAddStory = false" @click:CloseBtnAddStory="isOpenAddStory = false"
></AddStory> ></AddStory>
<UpdateStory
v-model:is-open-update-story="isOpenUpdateStory"
@click:CloseBtnUpdateStory="isOpenUpdateStory = false"
></UpdateStory>
<div class="col-12 q-mt-md"> <div class="col-12 q-mt-md">
<div class="row"> <div class="row">
<q-space></q-space> <q-space></q-space>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment