diff --git a/src/pages/Worker/Card/WorkerSummary.vue b/src/pages/Worker/Card/WorkerSummary.vue
index 5c6261b94..33d949dbb 100644
--- a/src/pages/Worker/Card/WorkerSummary.vue
+++ b/src/pages/Worker/Card/WorkerSummary.vue
@@ -93,7 +93,6 @@ const filter = {
/>
-
-
-
-
-
-
-
+
+
+
+
+
diff --git a/src/pages/Worker/WorkerCreate.vue b/src/pages/Worker/WorkerCreate.vue
index a1ded2bfd..23f92bef1 100644
--- a/src/pages/Worker/WorkerCreate.vue
+++ b/src/pages/Worker/WorkerCreate.vue
@@ -2,7 +2,6 @@
import { onBeforeMount, ref } from 'vue';
import { useI18n } from 'vue-i18n';
import axios from 'axios';
-import { useUserConfig } from 'src/composables/useUserConfig';
import VnRow from 'components/ui/VnRow.vue';
import VnSubToolbar from 'src/components/ui/VnSubToolbar.vue';
import VnInputDate from 'components/common/VnInputDate.vue';
@@ -14,15 +13,26 @@ import FetchData from 'components/FetchData.vue';
import FormModel from 'components/FormModel.vue';
import CreateBankEntityForm from 'src/components/CreateBankEntityForm.vue';
import VnRadio from 'src/components/common/VnRadio.vue';
+import { useState } from 'src/composables/useState';
const { t } = useI18n();
+const user = useState().getUser();
const companiesOptions = ref([]);
const workersOptions = ref([]);
const payMethodsOptions = ref([]);
const bankEntitiesOptions = ref([]);
-const formData = ref({ isFreelance: false });
-const defaultPayMethod = ref(0);
+const formData = ref({ companyFk: user.value.companyFk, isFreelance: false });
+const defaultPayMethod = ref();
+
+onBeforeMount(async () => {
+ defaultPayMethod.value = (
+ await axios.get('WorkerConfigs/findOne', {
+ params: { field: ['payMethodFk'] },
+ })
+ ).data.payMethodFk;
+ formData.value.payMethodFk = defaultPayMethod.value;
+});
function handleLocation(data, location) {
const { town, code, provinceFk, countryFk } = location ?? {};
@@ -32,16 +42,20 @@ function handleLocation(data, location) {
data.countryFk = countryFk;
}
-onBeforeMount(async () => {
- const userInfo = await useUserConfig().fetch();
- formData.value.companyFk = userInfo.companyFk;
+function generateCodeUser(worker) {
+ if (!worker.firstName || !worker.lastNames) return;
- const { data } = await axios.get('WorkerConfigs/findOne', {
- params: { field: ['payMethodFk'] },
- });
- defaultPayMethod.value = data.payMethodFk;
- formData.value.payMethodFk = defaultPayMethod.value;
-});
+ const totalName = worker.firstName.concat(' ' + worker.lastNames).toLowerCase();
+ const totalNameArray = totalName.split(' ');
+ let newCode = '';
+
+ for (let part of totalNameArray) newCode += part.charAt(0);
+
+ worker.code = newCode.toUpperCase().slice(0, 3);
+ worker.name = totalNameArray[0] + newCode.slice(1);
+
+ if (!worker.companyFk) worker.companyFk = user.companyFk;
+}
{
v-model="data.firstName"
:label="t('worker.create.name')"
:rules="validate('Worker.firstName')"
+ @update:model-value="generateCodeUser(data)"
/>
-import { computed, ref } from 'vue';
+import { onBeforeMount, computed, ref } from 'vue';
import { useI18n } from 'vue-i18n';
import { useSummaryDialog } from 'src/composables/useSummaryDialog';
import VnSearchbar from 'src/components/ui/VnSearchbar.vue';
@@ -16,6 +16,8 @@ import CreateBankEntityForm from 'src/components/CreateBankEntityForm.vue';
import FetchData from 'src/components/FetchData.vue';
import RightMenu from 'src/components/common/RightMenu.vue';
import WorkerFilter from './WorkerFilter.vue';
+import { useState } from 'src/composables/useState';
+import axios from 'axios';
const { t } = useI18n();
const tableRef = ref();
@@ -26,6 +28,8 @@ const payMethodsOptions = ref([]);
const bankEntitiesOptions = ref([]);
const postcodesOptions = ref([]);
+const user = useState().getUser();
+const defaultPayMethod = ref();
const columns = computed(() => [
{
align: 'left',
@@ -82,6 +86,14 @@ const columns = computed(() => [
},
]);
+onBeforeMount(async () => {
+ defaultPayMethod.value = (
+ await axios.get('WorkerConfigs/findOne', {
+ params: { field: ['payMethodFk'] },
+ })
+ ).data?.payMethodFk;
+});
+
function handleLocation(data, location) {
const { town, code, provinceFk, countryFk } = location ?? {};
data.postcode = code;
@@ -98,6 +110,21 @@ function uppercaseStreetModel(data) {
},
};
}
+
+function generateCodeUser(worker) {
+ if (!worker.firstName || !worker.lastNames) return;
+
+ const totalName = worker.firstName.concat(' ' + worker.lastNames).toLowerCase();
+ const totalNameArray = totalName.split(' ');
+ let newCode = '';
+
+ for (let part of totalNameArray) newCode += part.charAt(0);
+
+ worker.code = newCode.toUpperCase().slice(0, 3);
+ worker.name = totalNameArray[0] + newCode.slice(1);
+
+ if (!worker.companyFk) worker.companyFk = user.companyFk;
+}
tableRef.redirect(id),
formInitialData: {
+ payMethodFk: defaultPayMethod,
+ companyFk: user.companyFk,
isFreelance: false,
},
}"
@@ -149,7 +179,7 @@ function uppercaseStreetModel(data) {
auto-load
>
-