diff --git a/src/components/common/VnSelectWorker.vue b/src/components/common/VnSelectWorker.vue
new file mode 100644
index 000000000..26406b47a
--- /dev/null
+++ b/src/components/common/VnSelectWorker.vue
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+
+
+
+ {{ t('Responsible for approving invoices') }}
+
+
+
+
+
+
+ {{ scope.opt.name }}
+
+
+ {{ scope.opt.nickname }},
+ {{ scope.opt.code }}
+
+
+
+
+
+
diff --git a/src/pages/Customer/Card/CustomerBasicData.vue b/src/pages/Customer/Card/CustomerBasicData.vue
index a77d2f865..e7c03bf5c 100644
--- a/src/pages/Customer/Card/CustomerBasicData.vue
+++ b/src/pages/Customer/Card/CustomerBasicData.vue
@@ -9,6 +9,7 @@ import VnRow from 'components/ui/VnRow.vue';
import VnInput from 'src/components/common/VnInput.vue';
import VnSelect from 'src/components/common/VnSelect.vue';
import VnAvatar from 'src/components/ui/VnAvatar.vue';
+import VnSelectWorker from 'src/components/common/VnSelectWorker.vue';
const route = useRoute();
const { t } = useI18n();
@@ -103,17 +104,18 @@ const exprBuilder = (param, value) => {
/>
- {
:title="title"
/>
-
-
-
- {{ scope.opt?.name }}
- {{ scope.opt?.nickname }},
- {{ scope.opt?.code }}
-
-
-
-
+
{
- {
outlined
rounded
:input-debounce="0"
- >
-
-
-
- {{ opt.name }}
-
- {{ opt.nickname }},{{ opt.code }}
-
-
-
-
+ />
diff --git a/src/pages/Customer/CustomerList.vue b/src/pages/Customer/CustomerList.vue
index 3cb17332c..af73e6554 100644
--- a/src/pages/Customer/CustomerList.vue
+++ b/src/pages/Customer/CustomerList.vue
@@ -2,7 +2,6 @@
import { ref, computed, markRaw } from 'vue';
import { useI18n } from 'vue-i18n';
import { useRouter } from 'vue-router';
-import VnSelect from 'src/components/common/VnSelect.vue';
import VnTable from 'components/VnTable/VnTable.vue';
import VnLocation from 'src/components/common/VnLocation.vue';
import VnSearchbar from 'components/ui/VnSearchbar.vue';
@@ -12,6 +11,7 @@ import RightMenu from 'src/components/common/RightMenu.vue';
import VnLinkPhone from 'src/components/ui/VnLinkPhone.vue';
import { toDate } from 'src/filters';
import CustomerFilter from './CustomerFilter.vue';
+import VnSelectWorker from 'src/components/common/VnSelectWorker.vue';
const { t } = useI18n();
const router = useRouter();
@@ -421,40 +421,21 @@ function handleLocation(data, location) {
auto-load
>
-
-
-
-
-
-
-
- {{ scope.opt?.name }}
- {{ scope.opt?.nickname }},
- {{ scope.opt?.code }}
-
-
-
-
-
+ />
-
{
-
-
-
-
- {{ scope.opt?.name }}
- {{ scope.opt?.nickname }},
- {{ scope.opt?.code }}
-
-
-
-
+ />
diff --git a/src/pages/Monitor/Ticket/MonitorTicketFilter.vue b/src/pages/Monitor/Ticket/MonitorTicketFilter.vue
index 57248d580..7f232426d 100644
--- a/src/pages/Monitor/Ticket/MonitorTicketFilter.vue
+++ b/src/pages/Monitor/Ticket/MonitorTicketFilter.vue
@@ -9,6 +9,7 @@ import VnInput from 'src/components/common/VnInput.vue';
import VnInputNumber from 'src/components/common/VnInputNumber.vue';
import FetchData from 'src/components/FetchData.vue';
import { dateRange } from 'src/filters';
+import VnSelectWorker from 'src/components/common/VnSelectWorker.vue';
defineProps({ dataKey: { type: String, required: true } });
const { t, te } = useI18n();
@@ -108,33 +109,19 @@ const getLocale = (label) => {
-
-
-
-
- {{ opt.name }}
-
- {{ `${opt.nickname}, ${opt.code}` }}
-
-
-
-
-
+ />
diff --git a/src/pages/Order/Card/OrderFilter.vue b/src/pages/Order/Card/OrderFilter.vue
index 917369919..42359febe 100644
--- a/src/pages/Order/Card/OrderFilter.vue
+++ b/src/pages/Order/Card/OrderFilter.vue
@@ -6,6 +6,7 @@ import VnFilterPanel from 'src/components/ui/VnFilterPanel.vue';
import VnSelect from 'components/common/VnSelect.vue';
import VnInputDate from 'components/common/VnInputDate.vue';
import VnInput from 'components/common/VnInput.vue';
+import VnSelectWorker from 'src/components/common/VnSelectWorker.vue';
const { t } = useI18n();
const props = defineProps({
@@ -61,28 +62,18 @@ const sourceList = ref([]);
outlined
rounded
/>
-
-
-
-
- {{ opt.name }}
-
- {{ opt.nickname }},{{ opt.code }}
-
-
-
-
-
+ />
-
-
-
-
- {{ opt.name }}
-
- {{ opt.nickname }},{{ opt.code }}
-
-
-
-
-
+ />
diff --git a/src/pages/Route/Card/RouteForm.vue b/src/pages/Route/Card/RouteForm.vue
index 8c89718fa..dfbfdc788 100644
--- a/src/pages/Route/Card/RouteForm.vue
+++ b/src/pages/Route/Card/RouteForm.vue
@@ -11,6 +11,7 @@ import VnInputDate from 'components/common/VnInputDate.vue';
import VnInput from 'components/common/VnInput.vue';
import axios from 'axios';
import VnInputTime from 'components/common/VnInputTime.vue';
+import VnSelectWorker from 'src/components/common/VnSelectWorker.vue';
const { t } = useI18n();
const route = useRoute();
@@ -94,26 +95,15 @@ const onSave = (data, response) => {
>
-
-
-
-
- {{ opt.name }}
-
- {{ opt.nickname }}, {{ opt.code }}
-
-
-
-
-
+ :url="'Workers/search'"
+ :option-value="'id'"
+ :option-label="'nickname'"
+ :fields="['id', 'name', 'nickname']"
+ :sort-by="'nickname ASC'"
+ />
-
-
-
- {{
- t('Responsible for approving invoices')
- }}
-
-
-
-
-
- {{ scope.opt?.name }}
-
- {{ scope.opt?.nickname }}, {{ scope.opt?.id }}
-
-
-
-
-
+ />
(formData.userFk = user.value.id);
option-label="name"
option-value="id"
/>
-
-
-
-
-
- {{ opt.name }}
-
-
- {{ opt.nickname }}, {{ opt.code }}
-
-
-
-
+ :url="'Workers/search'"
+ :option-value="'id'"
+ :option-label="'name'"
+ :fields="['id', 'name', 'nickname']"
+ :sort-by="'name ASC'"
+ />
diff --git a/src/pages/Worker/WorkerCreate.vue b/src/pages/Worker/WorkerCreate.vue
index 5676837dd..e9b6b2060 100644
--- a/src/pages/Worker/WorkerCreate.vue
+++ b/src/pages/Worker/WorkerCreate.vue
@@ -14,6 +14,7 @@ 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';
+import VnSelectWorker from 'src/components/common/VnSelectWorker.vue';
const { t } = useI18n();
const user = useState().getUser();
@@ -149,27 +150,15 @@ async function autofillBic(worker) {
hide-selected
:rules="validate('Worker.company')"
/>
-
-
-
-
- {{ scope.opt.name }}
- {{ scope.opt.nickname }},
- {{ scope.opt.code }}
-
-
-
-
-
+ />
-
-
-
-
- {{ scope.opt.name }}
- {{ scope.opt.nickname }},
- {{ scope.opt.code }}
-
-
-
-
-
+ :url="'Workers/search'"
+ :option-value="'id'"
+ :option-label="'name'"
+ :fields="['id', 'name', 'nickname']"
+ />