update

parent 0a0f41ef
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -11,6 +11,7 @@
},
"dependencies": {
"@quasar/extras": "^1.0.0",
"@vue/runtime-core": "^3.2.33",
"axios": "^0.21.1",
"core-js": "^3.6.5",
"http-status-codes": "^2.1.4",
......@@ -19,6 +20,7 @@
"secure-ls": "^1.2.6",
"vue": "^3.0.11",
"vue-i18n": "^9.0.0-beta.0",
"vuex": "^4.0.2",
"vuex-persistedstate": "^4.0.0-beta.3"
},
"devDependencies": {
......@@ -48,5 +50,12 @@
"node": ">= 10.18.1",
"npm": ">= 6.13.4",
"yarn": ">= 1.21.1"
}
},
"main": ".eslintrc.js",
"repository": {
"type": "git",
"url": "http://103.147.34.20:30081/son.nguyen/quasar-web-base.git"
},
"keywords": [],
"license": "ISC"
}
......@@ -37,6 +37,7 @@ export enum API_PATHS {
getListArtists = '/artist',
getFieldOptions = '/field',
getNationalityOptions = '/nationality',
getProvinceOptions = '/common/province',
getArtistLevelOptions = '/artistLevel',
getQualificationOptions = '/qualification',
getWorkOptions = '/work',
......
......@@ -54,6 +54,7 @@ export type ArtistInfoType = {
instagram: string | null;
whatsapp: string | null;
nationality: NationalityType;
rovince: ProvinceType[];
fields: FieldType[];
works: WorkType[];
qualification: QualificationType;
......@@ -74,7 +75,12 @@ export type ArtistInfoType = {
mnWhatsapp: string | null;
favoriteScore: number;
};
export type ProvinceType = {
nam: string,
fullname: string,
code: string,
level: string,
};
export type FieldType = {
id: number;
name: string;
......@@ -82,6 +88,7 @@ export type FieldType = {
description: string | null;
numIndex: number;
};
export type NationalityType = {
id: number;
name: string;
......
......@@ -5,12 +5,14 @@ import axios, {
AxiosRequestConfig,
AxiosResponse,
} from 'axios';
import { config } from 'src/assets/configurations';
import { config } from 'src/assets/configurations.example';
import { StateInterface } from 'src/store';
// import { Store } from 'vuex';
import { Notify } from 'quasar';
import { i18n } from './i18n';
import { StatusCodes } from 'http-status-codes';
export * from '@vue/runtime-core'
// import { StatusCodes } from 'http-status-codes';
declare module '@vue/runtime-core' {
interface ComponentCustomProperties {
......
......@@ -2,7 +2,7 @@ import { defineComponent, PropType, Ref, ref, watch } from 'vue';
import { i18n } from 'src/boot/i18n';
import UploadImage from '../../upload-image/index.vue';
import { ProductType } from 'src/assets/type';
import { config } from 'src/assets/configurations';
import { config } from 'src/assets/configurations.example';
import { Notify } from 'quasar';
export default defineComponent({
components: {
......
......@@ -4,7 +4,7 @@ import { useRouter } from 'vue-router';
import { BannerType, StoriesType } from 'src/assets/type';
import UploadImage from 'components/upload-image/index.vue';
import { Dialog, Notify } from 'quasar';
import { config } from 'src/assets/configurations';
import { config } from 'src/assets/configurations.example';
export default defineComponent({
components: { UploadImage },
......
......@@ -85,7 +85,7 @@
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';
import { config } from 'src/assets/configurations.example';
export default defineComponent({
components: {
UploadImage,
......
......@@ -3,7 +3,7 @@ import { defineComponent, Ref, ref } from 'vue';
import Pagination from 'components/pagination/index.vue';
import { ProductType } from 'src/assets/type';
import { HotProductStatus } from 'src/assets/enums';
import { config } from 'src/assets/configurations';
import { config } from 'src/assets/configurations.example';
export default defineComponent({
components: {
Pagination,
......
......@@ -39,6 +39,7 @@ export default defineComponent({
sexOptions: { type: Array, required: true },
fieldOptions: { type: Array, required: true },
nationalityOptions: { type: Array, required: true },
provinceOptions: {type: Array, required: true},
professionOptions: { type: Array, required: true },
artistLevelOptions: { type: Array, required: true },
workOptions: { type: Array, required: true },
......@@ -69,6 +70,11 @@ export default defineComponent({
UploadImage,
},
setup(_, context) {
const BirthdayDatePicker = ref(moment().format('YYYY/MM/DD'));
const selectedFile = (value: FileList) => {
if (value.length !== 0) {
......@@ -80,6 +86,8 @@ export default defineComponent({
}
};
const upload = ref(null);
const uploadBanner = () => {
// eslint-disable-next-line
......@@ -105,6 +113,7 @@ export default defineComponent({
const onCancelClick = () => {
openDialog.value = false;
};
const errorMessArtistCode = i18n.global.t(
'artist.artistInformation.validateMessages.requireArtistCode'
......
......@@ -77,6 +77,7 @@
</div>
<div class="col-8">
<q-input
:model-value="artistCode"
@update:model-value="$emit('update:artistCode', $event)"
......@@ -213,29 +214,46 @@
></q-select>
</div>
</div>
<div class="row flex-center">
<div class="col-3 text-weight-medium">
{{ $t('artist.artistInformation.titleDataField.address') }}
<span style="color: red">*</span>
</div>
<div class="col-8">
<q-input
<q-select
:model-value="address"
@update:model-value="$emit('update:address', $event)"
:error="addressRules"
:error-message="errorMessAddress"
:options="provinceOptions"
option-value="name"
option-label="fullName"
type="text"
class="q-my-sm"
outlined
hide-bottom-space
class="q-my-sm"
clearable
dense
></q-input>
>
<template v-slot:no-option>
<q-item>
<q-item-section class="text-grey">
No results
</q-item-section>
</q-item>
</template>
</q-select>
</div>
</div>
<div class="row flex-center">
<div class="col-3 text-weight-medium">
{{ $t('artist.artistInformation.titleDataField.field') }}
<span style="color: red">*</span>
</div>
<div class="col-8">
<q-select
:model-value="fields"
......@@ -243,6 +261,7 @@
:error="fieldRules"
:error-message="errorMessFields"
:options="fieldOptions"
multiple
map-options
option-value="id"
option-label="name"
......@@ -257,6 +276,33 @@
></q-select>
</div>
</div>
<!-- thể loại -->
<div class="row flex-center">
<div class="col-3 text-weight-medium">
{{ $t('artist.artistInformation.titleDataField.type') }}
<span style="color: red">*</span>
</div>
<!-- :model-value="types"
@update:model-value="$emit('update:types', $event)"
:error="typeRules"
:error-message="errorMessTypes"
:options="typeOptions" -->
<div class="col-8">
<q-select
map-options
option-value="id"
option-label="name"
class="q-my-sm"
outlined
hide-bottom-space
clearable
dense
use-input
use-chips
></q-select>
</div>
</div>
<div class="row flex-center">
<div class="col-3 text-weight-medium">
{{ $t('artist.artistInformation.titleDataField.work') }}
......@@ -284,6 +330,7 @@
></q-select>
</div>
</div>
<div class="row flex-center">
<div class="col-3 text-weight-medium">
{{ $t('artist.artistInformation.titleDataField.qualification') }}
......@@ -308,6 +355,7 @@
></q-select>
</div>
</div>
<div class="row flex-center">
<div class="col-3 text-weight-medium">
{{ $t('artist.artistInformation.titleDataField.favoriteScore') }}
......@@ -325,31 +373,29 @@
</div>
</div>
</div>
<div class="col-5 q-ml-xl">
<div class="row flex-center">
<!-- <div class="row flex-center">
<div class="col-3 text-weight-medium">
{{ $t('artist.artistInformation.titleDataField.artistLevel') }}
<span style="color: red">*</span>
</div>
<div class="col-8">
<q-select
:model-value="artistLevel"
@update:model-value="$emit('update:artistLevel', $event)"
:options="artistLevelOptions"
:error="artistLevelRules"
:error-message="errorMessArtistLevel"
map-options
option-value="id"
option-label="name"
type="text"
class="q-my-sm"
outlined
hide-bottom-space
clearable
dense
></q-select>
</div>
</div>
1
<q-rating
:model-value="artistLevel"
@update:model-value="$emit('update:artistLevel', $event)"
max="5"
size="3em"
color="orange"
icon="star_border"
icon-selected="star"
icon-half="star_half"
no-dimming
/>
</div>
</div> -->
<div class="row flex-center">
<div class="col-3 text-weight-medium">
{{ $t('artist.artistInformation.titleDataField.phoneNumber') }}
......@@ -587,5 +633,10 @@
</div>
</div>
</template>
<script lang="ts" src="./PersonalInformation.ts"></script>
<script lang="ts" src="./PersonalInformation.ts"></script>
......@@ -371,7 +371,7 @@
</template>
<script lang="ts">
import { defineComponent, PropType, ref } from 'vue';
import { defineComponent, PropType } from 'vue';
import { i18n } from 'src/boot/i18n';
export default defineComponent({
......@@ -387,23 +387,23 @@ export default defineComponent({
content: { type: String, required: true },
nameMenu: { type: Array, required: true },
nameMenuOptions: { type: Array, required: true },
// languageOptions: {
// type: Array as PropType<
// {
// namePage: string;
// url: string;
// content: string;
// numIndex: number;
// nameMenu: [];
// language: {
// id: number;
// code: string;
// name: string;
// };
// }[]
// >,
// required: true,
// },
languageOptions: {
type: Array as PropType<
{
namePage: string;
url: string;
content: string;
numIndex: number;
nameMenu: [];
language: {
id: number;
code: string;
name: string;
};
}[]
>,
required: true,
},
},
setup() {
const namePageRules = [
......
......@@ -5,7 +5,7 @@ import { PostType, LanguageType, FileUploadType } from 'src/assets/type';
import ListPostDialog from 'components/post-category/list-post-dialog/index.vue';
import { api, BaseResponseBody } from 'src/boot/axios';
import { AxiosResponse } from 'axios';
import { config } from 'src/assets/configurations';
import { config } from 'src/assets/configurations.example';
export default defineComponent({
// name: 'ComponentName'
......
import { defineComponent, PropType, Ref, ref, watch } from 'vue';
import { PaginationResponse, PostType } from 'src/assets/type';
import { i18n } from 'src/boot/i18n';
import { API_PATHS, config } from 'src/assets/configurations';
import { API_PATHS, config } from 'src/assets/configurations.example';
import { api, BaseResponseBody } from 'src/boot/axios';
import { AxiosResponse } from 'axios';
import Pagination from 'components/pagination/index.vue';
......
......@@ -10,7 +10,7 @@ import {
import ListPostDialog from 'components/post-category/list-post-dialog/index.vue';
import { api, BaseResponseBody } from 'src/boot/axios';
import { AxiosResponse } from 'axios';
import { config } from 'src/assets/configurations';
import { config } from 'src/assets/configurations.example';
export default defineComponent({
// name: 'ComponentName'
......
......@@ -368,11 +368,11 @@ import { defineComponent, Ref, ref, onMounted, watch, PropType } from 'vue';
import { i18n } from 'src/boot/i18n';
import { isEmail } from '../../../boot/functions';
import { isMobilePhone } from '../../../boot/functions';
import { API_PATHS } from 'src/assets/configurations';
import { API_PATHS } from 'src/assets/configurations.example';
import { AxiosResponse } from 'axios';
import { api, BaseResponseBody } from 'src/boot/axios';
import { FieldType, ArtistInfoType, Contract } from 'src/assets/type';
import { config } from 'src/assets/configurations';
import { config } from 'src/assets/configurations.example';
import UnitAddUpdateArtistDialog from '../unit-add-update-artist/index.vue';
import UnitAddUpdateBankAccountDialog from '../unit-add-update-bank-account/index.vue';
import moment from 'moment';
......
......@@ -490,6 +490,7 @@ export default {
work: 'Công việc',
qualification: 'Độ chuyên',
artistLevel: 'Xếp hạng',
type:'Thể loại',
favoriteScore: 'Số lượt thích',
phoneNumber: 'Số điện thoại',
email: 'Email',
......
......@@ -159,7 +159,7 @@
import { i18n } from 'src/boot/i18n';
import { defineComponent, onMounted, ref, Ref } from 'vue';
import Pagination from 'components/pagination/index.vue';
import { API_PATHS } from 'src/assets/configurations';
import { API_PATHS } from 'src/assets/configurations.example';
import { AxiosResponse } from 'axios';
import { api, BaseResponseBody } from 'src/boot/axios';
import {
......@@ -171,7 +171,7 @@ import {
PostDetailType,
PostAddType,
} from 'src/assets/type';
import { config } from 'src/assets/configurations';
import { config } from 'src/assets/configurations.example';
import { PostStatus } from 'src/assets/enums';
import AddUpdatePostDialog from 'components/add-update-post/index.vue';
import { Dialog, Notify } from 'quasar';
......
......@@ -154,7 +154,7 @@ import {
UpdateBannerConfig,
AddBannerConfig,
} from 'src/assets/type';
import { config, API_PATHS } from 'src/assets/configurations';
import { config, API_PATHS } from 'src/assets/configurations.example';
import { BannerStatus } from 'src/assets/enums';
import AddUpdateBannerDialog from 'components/add-update-banner/index.vue';
import { Dialog, Notify } from 'quasar';
......
import { defineComponent, onMounted, ref, Ref, watch } from 'vue';
import { api, BaseResponseBody } from 'src/boot/axios';
import { API_PATHS, config } from 'src/assets/configurations';
import { API_PATHS, config } from 'src/assets/configurations.example';
import { useRoute } from 'vue-router';
import { AxiosResponse } from 'axios';
import moment from 'moment';
......@@ -337,10 +337,10 @@ export default defineComponent({
artistCode.value = ArtistInformation.artistCode;
fullName.value = ArtistInformation.fullName;
artistName.value = ArtistInformation.artistName;
birthday.value = moment(
ArtistInformation.birthday,
'DD/MM/YYYY HH:mm:ss'
).format('DD/MM/YYYY');
// birthday.value = moment(
// ArtistInformation.birthday,
// 'DD/MM/YYYY HH:mm:ss'
// ).format('DD/MM/YYYY');
address.value = ArtistInformation.address;
status.value = ArtistInformation.status;
phoneNumber.value = ArtistInformation.phoneNumber;
......
......@@ -154,7 +154,7 @@ import {
updateConfigPartnerConfig,
addConfigPartnerConfig,
} from 'src/assets/type';
import { config, API_PATHS } from 'src/assets/configurations';
import { config, API_PATHS } from 'src/assets/configurations.example';
import { BannerStatus } from 'src/assets/enums';
import AddUpdateConfigPartnerDialog from 'components/add-update-cau-hinh-doi-tac-truyen-thong/index.vue';
import { Dialog, Notify } from 'quasar';
......
......@@ -184,7 +184,7 @@ import { SystemHotProductStatus } from 'src/assets/enums';
import { i18n } from 'src/boot/i18n';
import Pagination from 'components/pagination/index.vue';
import { defineComponent, onMounted, Ref, ref } from 'vue';
import { config, API_PATHS } from 'src/assets/configurations';
import { config, API_PATHS } from 'src/assets/configurations.example';
import { AxiosResponse } from 'axios';
import { Notify, Dialog } from 'quasar';
import { api, BaseResponseBody } from 'src/boot/axios';
......
......@@ -155,7 +155,7 @@ import AddUpdateNewsDialog from 'components/news/index.vue';
import { NewsStatus } from 'src/assets/enums';
import { i18n } from 'src/boot/i18n';
import { defineComponent, onMounted, Ref, ref } from 'vue';
import { config } from 'src/assets/configurations';
import { config } from 'src/assets/configurations.example';
import { AxiosResponse } from 'axios';
import { api, BaseResponseBody } from 'src/boot/axios';
import { FileUploadType } from 'src/assets/type';
......
......@@ -161,7 +161,7 @@ import {
DetailConfigSystem,
// LanguageType,
} from 'src/assets/type';
import { config, API_PATHS } from 'src/assets/configurations';
import { config, API_PATHS } from 'src/assets/configurations.example';
export default defineComponent({
components: {
......
import { i18n } from 'src/boot/i18n';
import { defineComponent, onMounted, Ref, ref } from 'vue';
import { API_PATHS, config } from 'src/assets/configurations';
import { API_PATHS, config } from 'src/assets/configurations.example';
import { AxiosResponse } from 'axios';
import { api, BaseResponseBody } from 'src/boot/axios';
import {
......@@ -151,40 +151,40 @@ export default defineComponent({
} catch (error) {}
};
const confirmDelete = (id: number) => {
Dialog.create({
title: i18n.global.t(
'artist.bankAccount.confirmActionsTitle.confirmDeleteAccBankTitle'
),
message: i18n.global.t(
'postCategory.confirmActionsTitle.confirmDeletePostCategory'
),
cancel: i18n.global.t(
'artist.bankAccount.confirmActionsTitle.confirmDeleteAccBankBtnLabel'
),
color: 'negative',
}).onOk(async () => {
try {
const response = (await api({
url: API_PATHS.deleteCategoryPost,
method: 'GET',
params: {
id: id,
},
})) as AxiosResponse<BaseResponseBody<unknown>>;
if (response.data.error.code === config.API_RES_CODE.OK.code) {
Notify.create({
type: 'positive',
message: i18n.global.t(
'postCategory.actionMessages.deletePostCategoryAccess'
),
actions: [{ icon: 'close', color: 'white' }],
});
void getListCategoryPost();
}
} catch (error) {}
});
};
// const confirmDelete = (id: number) => {
// Dialog.create({
// title: i18n.global.t(
// 'artist.bankAccount.confirmActionsTitle.confirmDeleteAccBankTitle'
// ),
// message: i18n.global.t(
// 'postCategory.confirmActionsTitle.confirmDeletePostCategory'
// ),
// cancel: i18n.global.t(
// 'artist.bankAccount.confirmActionsTitle.confirmDeleteAccBankBtnLabel'
// ),
// color: 'negative',
// }).onOk(async () => {
// try {
// const response = (await api({
// url: API_PATHS.deleteCategoryPost,
// method: 'GET',
// params: {
// id: id,
// },
// })) as AxiosResponse<BaseResponseBody<unknown>>;
// if (response.data.error.code === config.API_RES_CODE.OK.code) {
// Notify.create({
// type: 'positive',
// message: i18n.global.t(
// 'postCategory.actionMessages.deletePostCategoryAccess'
// ),
// actions: [{ icon: 'close', color: 'white' }],
// });
// void getListCategoryPost();
// }
// } catch (error) {}
// });
// };
const openUpdateDialog = async (id: number) => {
await getDetailCategoryPost(id);
isOpenUpdateDialog.value = true;
......@@ -247,7 +247,7 @@ export default defineComponent({
getLanguages,
languages,
addPostCategory,
confirmDelete,
// confirmDelete,
openUpdateDialog,
detailPostCategory,
updatePostCategory,
......
......@@ -225,7 +225,7 @@
<script lang="ts">
import { api, BaseResponseBody } from 'src/boot/axios';
import { config, API_PATHS } from 'src/assets/configurations';
import { config, API_PATHS } from 'src/assets/configurations.example';
import { AxiosResponse } from 'axios';
import { i18n } from 'src/boot/i18n';
import { defineComponent, onMounted, Ref, ref } from 'vue';
......
......@@ -179,7 +179,7 @@ import {
ArtistOwnerAdd,
DetailUnit,
} from 'src/assets/type';
import { config, API_PATHS } from 'src/assets/configurations';
import { config, API_PATHS } from 'src/assets/configurations.example';
import AddUpdateUnitDialog from 'components/units-manager/add-update-unit-dialog/index.vue';
import { UnitStatus } from 'src/assets/enums';
......
......@@ -155,7 +155,7 @@ import { defineComponent, onMounted, Ref, ref } from 'vue';
import Pagination from 'components/pagination/index.vue';
import AddNewCustomerDialogComponent from '../../components/customer/add-new-customer-dialog/index.vue';
import UpdateNewCustomerDialogComponent from '../../components/customer/update-new-customer-dialog/index.vue';
import { API_PATHS, config } from 'src/assets/configurations';
import { API_PATHS, config } from 'src/assets/configurations.example';
import { AxiosResponse } from 'axios';
import { api, BaseResponseBody } from 'src/boot/axios';
import {
......
......@@ -126,11 +126,11 @@
<script lang="ts">
import { i18n } from 'src/boot/i18n';
import { defineComponent, onMounted, ref, Ref } from 'vue';
import { API_PATHS } from 'src/assets/configurations';
import { API_PATHS } from 'src/assets/configurations.example';
import { AxiosResponse } from 'axios';
import { api, BaseResponseBody } from 'src/boot/axios';
import { Field, AddField, DetailField, UpdateField } from 'src/assets/type';
import { config } from 'src/assets/configurations';
import { config } from 'src/assets/configurations.example';
import { FieldStatus } from 'src/assets/enums';
import AddUpdateFieldDialog from 'components/add-update-field/index.vue';
import { Dialog, Notify } from 'quasar';
......
......@@ -158,7 +158,7 @@ import {
UpdateMenu,
AddMenu,
} from 'src/assets/type';
import { config, API_PATHS } from 'src/assets/configurations';
import { config, API_PATHS } from 'src/assets/configurations.example';
export default defineComponent({
components: {
......
......@@ -35,7 +35,7 @@
clearable
></q-select>
</div>
<div class="col-2" dense outlined>
<!-- <div class="col-2" dense outlined>
<q-select
v-model="artistLevelSelected"
:options="artistLevelOptions"
......@@ -46,7 +46,7 @@
label="Xếp hạng"
clearable
></q-select>
</div>
</div> -->
<div class="col-auto">
<q-btn
color="primary"
......@@ -172,6 +172,7 @@
:nationality-options="nationalityOptions"
:profession-options="professionOptions"
:artist-level-options="artistLevelOptions"
:work-options="workOptions"
@click:CloseBtn="isOpenNewArtistDialog = false"
></AddNewArtistDialog>
......@@ -190,10 +191,11 @@ import {
ArtistLevelType,
QualificationType,
WorkType,
} from 'src/assets/type';
import Pagination from 'components/pagination/index.vue';
import { api, BaseResponseBody } from 'src/boot/axios';
import { API_PATHS, config } from 'src/assets/configurations';
import { API_PATHS, config } from 'src/assets/configurations.example';
import { AxiosResponse } from 'axios';
export default defineComponent({
......@@ -349,6 +351,7 @@ export default defineComponent({
const mnFbmess: Ref<string | null> = ref(null);
const mnIns: Ref<string | null> = ref(null);
const mnWhatsapp: Ref<string | null> = ref(null);
const getListArtists = async () => {
try {
......@@ -396,6 +399,8 @@ export default defineComponent({
nationalityOptions.value = response.data.data;
}
};
const getArtistLevelOptions = async () => {
const response = (await api({
url: API_PATHS.getArtistLevelOptions,
......@@ -470,6 +475,7 @@ export default defineComponent({
void getArtistLevelOptions();
void getQualificationOptions();
void getWorkOptions();
});
return {
configImg,
......
/* eslint-disable @typescript-eslint/ban-types */
import { AxiosResponse } from 'axios';
import { Dialog, Notify } from 'quasar';
import { API_PATHS, config } from 'src/assets/configurations';
import { API_PATHS, config } from 'src/assets/configurations.example';
import { PaginationResponse, UserObject } from 'src/assets/type';
import { api, BaseResponseBody } from 'src/boot/axios';
import { i18n } from 'src/boot/i18n';
......@@ -11,7 +11,7 @@ import AddNewUserDialogComponent from '../../components/user-management/add-new-
import UpdateUserDialogComponent from '../../components/user-management/update-user-dialog/index.vue';
import { GroupInfoType } from '../nhom-nguoi-dung/UserGroup';
import Pagination from 'components/pagination/index.vue';
import moment from 'moment';
// import moment from 'moment';
export default defineComponent({
components: {
......@@ -313,10 +313,10 @@ export default defineComponent({
address.value = userInfo.address as string;
id.value = userInfo.id;
// birthday.value = moment(userInfo.birthday).format('YYYY-MM-DD') as string;
birthday.value = moment(
userInfo.birthday,
'DD/MM/YYYY HH:mm:ss'
).format('DD/MM/YYYY');
// birthday.value = moment(
// userInfo.birthday,
// 'DD/MM/YYYY HH:mm:ss'
// ).format('DD/MM/YYYY');
email.value = userInfo.email as string;
fullName.value = userInfo.fullName as string;
mobileNumber.value = userInfo.mobileNumber as string;
......
......@@ -6,10 +6,10 @@ import accountGroup from '../../components/accountGroup/index.vue';
import { AxiosResponse } from 'axios';
import { api, BaseResponseBody } from 'src/boot/axios';
import { EditMode } from 'src/assets/enums';
import { API_PATHS, config } from 'src/assets/configurations';
import { API_PATHS, config } from 'src/assets/configurations.example';
import { Dialog, Notify } from 'quasar';
import { i18n } from 'src/boot/i18n';
import { Store } from 'vuex';
import { Store } from 'vuex'
export type GroupInfoType = {
createBy: null | string;
......@@ -32,7 +32,7 @@ const selectedPageRoles: Ref<string[]> = ref([]);
const addNewGroupInfo = async ($store: Store<StateInterface>) => {
try {
const response = (await api({
url: API_PATHS.addNewGroupUser,
// url: API_PATHS.addNewGroupUser,
method: 'POST',
data: {
group: {
......
import { defineComponent, onMounted, ref, Ref, watch } from 'vue';
import { api, BaseResponseBody } from 'src/boot/axios';
import { API_PATHS, config } from 'src/assets/configurations';
import { API_PATHS, config } from 'src/assets/configurations.example';
import { useRoute } from 'vue-router';
import { AxiosResponse } from 'axios';
import moment from 'moment';
import { i18n } from 'src/boot/i18n';
import { Dialog, Notify } from 'quasar';
import { Router } from 'src/router';
import { Pages } from 'src/router/routes';
import moment from 'moment';
import PersonalInformation from 'components/artist-information/personal-information/index.vue';
import VabAccount from 'components/artist-information/VAB-account/index.vue';
import BankAccount from 'components/artist-information/bank-account/index.vue';
......@@ -35,6 +34,7 @@ import {
CardBankType,
TypeCardType,
FileUploadType,
ProvinceType
} from 'src/assets/type';
export type AvatarType = {
......@@ -81,6 +81,7 @@ export default defineComponent({
const cardBankOptions: Ref<CardBankType[]> = ref([]);
const typeBankOptions: Ref<TypeCardType[]> = ref([]);
const workOptions: Ref<WorkType[]> = ref([]);
const provinceOptions:Ref<ProvinceType[]> = ref([]);
const sexOptions = ref([
{ id: 1, name: 'Nam' },
{ id: 2, name: 'Nữ' },
......@@ -335,6 +336,19 @@ export default defineComponent({
nationalityOptions.value = response.data.data;
}
};
const getProvinceOptions = async () => {
const response = (await api ({
url : API_PATHS.getProvinceOptions,
method: 'GET',
params: {},
})) as AxiosResponse<BaseResponseBody<ProvinceType[]>>;
if(response.data.error.code === config.API_RES_CODE.OK.code){
provinceOptions.value = response.data.data
}
}
const getArtistLevelOptions = async () => {
const response = (await api({
url: API_PATHS.getArtistLevelOptions,
......@@ -617,95 +631,95 @@ export default defineComponent({
} catch (error) {}
};
const checkValidate = () => {
let hasError = false;
if (!avatarFile.value) {
hasError = true;
hidden_img.value = true;
}
if (!artistCode.value || !artistCode.value?.trim().length) {
hasError = true;
artistCodeRules.value = true;
}
if (!fullName.value || !fullName.value?.trim().length) {
hasError = true;
fullNameRules.value = true;
}
if (!artistName.value || !artistName.value?.trim().length) {
hasError = true;
artistNameRules.value = true;
}
if (!address.value || !address.value.trim().length) {
hasError = true;
addressRules.value = true;
}
if (!birthday.value || !birthday.value?.trim().length) {
hasError = true;
birthdayRules.value = true;
}
if (sex.value === null) {
hasError = true;
sexRules.value = true;
}
if (!phoneNumber.value || !phoneNumber.value?.trim().length) {
hasError = true;
phoneNumberRules.value = true;
errorMessPhoneNumber.value = i18n.global.t(
'artist.artistInformation.validateMessages.requirePhoneNumber'
);
}
// let hasError = false;
// if (!avatarFile.value) {
// hasError = true;
// hidden_img.value = true;
// }
// if (!artistCode.value || !artistCode.value?.trim().length) {
// hasError = true;
// artistCodeRules.value = true;
// }
// if (!fullName.value || !fullName.value?.trim().length) {
// hasError = true;
// fullNameRules.value = true;
// }
// if (!artistName.value || !artistName.value?.trim().length) {
// hasError = true;
// artistNameRules.value = true;
// }
// if (address.value) {
// hasError = true;
// addressRules.value = true;
// }
// if (!birthday.value || !birthday.value?.trim().length) {
// hasError = true;
// birthdayRules.value = true;
// }
// if (sex.value === null) {
// hasError = true;
// sexRules.value = true;
// }
// if (!phoneNumber.value || !phoneNumber.value?.trim().length) {
// hasError = true;
// phoneNumberRules.value = true;
// errorMessPhoneNumber.value = i18n.global.t(
// 'artist.artistInformation.validateMessages.requirePhoneNumber'
// );
// }
if (!email.value || !email.value?.trim().length) {
hasError = true;
emailRules.value = true;
errorMessEmail.value = i18n.global.t(
'artist.artistInformation.validateMessages.requireEmail'
);
}
// if (!email.value || !email.value?.trim().length) {
// hasError = true;
// emailRules.value = true;
// errorMessEmail.value = i18n.global.t(
// 'artist.artistInformation.validateMessages.requireEmail'
// );
// }
if (
(!mnBookingPhone.value || !mnBookingPhone.value?.trim().length) &&
check_infoBooking.value
) {
hasError = true;
mnBookingPhoneRules.value = true;
errorMessmnBookingPhone.value = i18n.global.t(
'artist.artistInformation.validateMessages.requirePhoneNumberAdminister'
);
}
if (
(!mnBookingEmail.value || !mnBookingEmail.value?.trim().length) &&
check_infoBooking.value
) {
hasError = true;
mnBookingEmailRules.value = true;
errorMessmnBookingEmail.value = i18n.global.t(
'artist.artistInformation.validateMessages.requireEmailAdminister'
);
}
// if (
// (!mnBookingPhone.value || !mnBookingPhone.value?.trim().length) &&
// check_infoBooking.value
// ) {
// hasError = true;
// mnBookingPhoneRules.value = true;
// errorMessmnBookingPhone.value = i18n.global.t(
// 'artist.artistInformation.validateMessages.requirePhoneNumberAdminister'
// );
// }
// if (
// (!mnBookingEmail.value || !mnBookingEmail.value?.trim().length) &&
// check_infoBooking.value
// ) {
// hasError = true;
// mnBookingEmailRules.value = true;
// errorMessmnBookingEmail.value = i18n.global.t(
// 'artist.artistInformation.validateMessages.requireEmailAdminister'
// );
// }
if (artistLevel.value === null) {
hasError = true;
artistLevelRules.value = true;
}
if (!fields.value) {
hasError = true;
fieldRules.value = true;
}
if (nationality.value === null) {
hasError = true;
nationalityRules.value = true;
}
if (qualification.value === null) {
hasError = true;
qualificationRules.value = true;
}
if (!works.value.length) {
hasError = true;
workRules.value = true;
}
if (hasError === false) {
// if (artistLevel.value === null) {
// hasError = true;
// artistLevelRules.value = true;
// }
// if (!fields.value) {
// hasError = true;
// fieldRules.value = true;
// }
// if (nationality.value === null) {
// hasError = true;
// nationalityRules.value = true;
// }
// if (qualification.value === null) {
// hasError = true;
// qualificationRules.value = true;
// }
// if (!works.value.length) {
// hasError = true;
// workRules.value = true;
// }
// if (hasError === false) {
void addArtist();
}
// }
};
const addArtist = async () => {
try {
......@@ -744,6 +758,8 @@ export default defineComponent({
},
[]
);
const response = (await api({
url: API_PATHS.addArtist,
......@@ -768,8 +784,8 @@ export default defineComponent({
shortDescription: null,
account: account.value,
socialEmbedded: socialEmbedded.value,
artistLevel: artistLevel.value,
fields: [fields.value],
// artistLevel: artistLevel.value,
fields: fields.value,
nationality: nationality.value,
qualification: qualification.value,
works: works.value,
......@@ -824,6 +840,7 @@ export default defineComponent({
void getQualificationOptions();
void getBankOptions();
void getTypeCardOptions();
void getProvinceOptions();
});
return {
hidden_img,
......@@ -937,6 +954,8 @@ export default defineComponent({
confirmChangeIsDefault,
favoriteScore,
check_infoBooking,
getProvinceOptions,
provinceOptions,
};
},
});
......@@ -85,6 +85,7 @@
:sex-options="sexOptions"
:field-options="fieldOptions"
:nationality-options="nationalityOptions"
:province-options="provinceOptions"
:profession-options="professionOptions"
:artist-level-options="artistLevelOptions"
:work-options="workOptions"
......
......@@ -88,7 +88,7 @@ import {
DetailVABInfoType,
UpdateVABInfoType,
} from 'src/assets/type';
import { config, API_PATHS } from 'src/assets/configurations';
import { config, API_PATHS } from 'src/assets/configurations.example';
import UpdateInfoVABDialog from 'components/update-info-vab/update-info-vab-dialog/index.vue';
export type AvatarType = {
file?: File;
......
......@@ -149,7 +149,7 @@
<script lang="ts">
import { i18n } from 'src/boot/i18n';
import { defineComponent, onMounted, ref, Ref } from 'vue';
import { API_PATHS } from 'src/assets/configurations';
import { API_PATHS } from 'src/assets/configurations.example';
import { AxiosResponse } from 'axios';
import { api, BaseResponseBody } from 'src/boot/axios';
import {
......@@ -158,7 +158,7 @@ import {
DetailCustomerRank,
UpdateCustomerRank,
} from 'src/assets/type';
import { config } from 'src/assets/configurations';
import { config } from 'src/assets/configurations.example';
import { CustomerRankStatus } from 'src/assets/enums';
import AddUpdateCustomerRankDialog from 'components/add-update-customer-rank/index.vue';
import { Dialog, Notify } from 'quasar';
......
import { AxiosResponse } from 'axios';
import { Notify } from 'quasar';
import { API_PATHS } from 'src/assets/configurations';
import { API_PATHS } from 'src/assets/configurations.example';
import { api, BaseResponseBody } from 'src/boot/axios';
import { i18n } from 'src/boot/i18n';
import { Router } from 'src/router';
......
......@@ -8,8 +8,9 @@ import {
import authentication from './authentication';
import { AuthenticationState } from './authentication/state';
import SecureLS from 'secure-ls';
import SecureLS from 'secure-ls'
import createPersistedState from 'vuex-persistedstate';
export * from '@vue/runtime-core'
// eslint-disable-next-line
const ls = new SecureLS({ isCompression: true });
......@@ -31,7 +32,7 @@ export interface StateInterface {
// provide typings for `this.$store`
declare module '@vue/runtime-core' {
interface ComponentCustomProperties {
export interface ComponentCustomProperties {
$store: VuexStore<StateInterface>;
}
}
......
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