diff --git a/app/assets/styles/main.scss b/app/assets/styles/main.scss index 1643ce0..765245b 100644 --- a/app/assets/styles/main.scss +++ b/app/assets/styles/main.scss @@ -16,8 +16,8 @@ // Tooltip Styles .tooltiptext { opacity: 0; - background-color: var(--bulma-primary-95); - color: var(--bulma-primary-bold); + background-color: hsl(from var(--bulma-black-bis) h s l / 0.7); + color: var(--bulma-white-bis); border-radius: 6px; position: absolute; margin-left: 0px; @@ -27,7 +27,7 @@ padding: 0.4rem 0.6rem; font-size: 13px; pointer-events: none; - box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2); + backdrop-filter: blur(2px); } .control:hover .tooltiptext { diff --git a/app/components/Modal.vue b/app/components/Modal.vue index d4f8e3a..0d99155 100644 --- a/app/components/Modal.vue +++ b/app/components/Modal.vue @@ -23,7 +23,7 @@ class="modal-card-head px-4 py-3" > Nhập dữ liệu @@ -110,7 +110,7 @@ Thêm mới @@ -129,7 +129,7 @@ Xuất Excel @@ -148,7 +148,7 @@ Làm mới @@ -170,6 +170,8 @@ + + diff --git a/app/components/inventory/Inventory.vue b/app/components/inventory/Inventory.vue index ab97f9c..8ed5dc1 100644 --- a/app/components/inventory/Inventory.vue +++ b/app/components/inventory/Inventory.vue @@ -1,6 +1,6 @@ + + diff --git a/app/components/inventory/InventoryItemName.vue b/app/components/inventory/InventoryItemName.vue new file mode 100644 index 0000000..819636b --- /dev/null +++ b/app/components/inventory/InventoryItemName.vue @@ -0,0 +1,30 @@ + + + diff --git a/app/components/inventory/InventoryRow.vue b/app/components/inventory/InventoryRow.vue deleted file mode 100644 index 6d488f7..0000000 --- a/app/components/inventory/InventoryRow.vue +++ /dev/null @@ -1,53 +0,0 @@ - - - - diff --git a/app/components/inventory/InventoryTable.vue b/app/components/inventory/InventoryTable.vue deleted file mode 100644 index beef978..0000000 --- a/app/components/inventory/InventoryTable.vue +++ /dev/null @@ -1,565 +0,0 @@ - - - diff --git a/app/components/inventory/Status.vue b/app/components/inventory/Status.vue new file mode 100644 index 0000000..0eff8a0 --- /dev/null +++ b/app/components/inventory/Status.vue @@ -0,0 +1,20 @@ + + + diff --git a/app/components/pos/ChooseIMEIModal.vue b/app/components/pos/ChooseIMEIModal.vue index 63193f3..a983018 100644 --- a/app/components/pos/ChooseIMEIModal.vue +++ b/app/components/pos/ChooseIMEIModal.vue @@ -54,14 +54,14 @@ async function addToCart() { async function fetchImeis() { isLoading.value = true; - const imeisFetched = await $getdata("IMEI", { - filter: { variant: props.variant.id }, - }); - const imeisSoldFetched = await $getdata("IMEI_Sold"); + const [imeisRes, imeisSoldRes] = await Promise.all([ + $getdata("IMEI", { filter: { variant: props.variant.id } }), + $getdata("IMEI_Sold"), + ]); - imeis.value = imeisFetched.filter((imeiRec) => { + imeis.value = imeisRes.filter((imeiRec) => { const inCart = activeCartItems.value.find((cartItem) => cartItem.imei === imeiRec.id); - const sold = imeisSoldFetched.find((imeiSold) => imeiSold.imei === imeiRec.imei); + const sold = imeisSoldRes.find((imeiSold) => imeiSold.imei === imeiRec.imei); return !inCart && !sold; }); @@ -105,6 +105,7 @@ onMounted(fetchImeis); STT IMEI Trạng thái + Kho @@ -130,6 +131,7 @@ onMounted(fetchImeis); imeiRec.deleted ? "Không có sẵn" : "Có sẵn" }} + {{ imeiRec.warehouse__name }} diff --git a/app/plugins/02-connection.js b/app/plugins/02-connection.js index 33ce5c8..861c62d 100644 --- a/app/plugins/02-connection.js +++ b/app/plugins/02-connection.js @@ -102,7 +102,7 @@ export default defineNuxtPlugin((nuxtApp) => { params: { values }, }); } - // update store + if (api.commit) { if (store[api.commit]) { const copy = $copy(store[api.commit]); @@ -117,6 +117,7 @@ export default defineNuxtPlugin((nuxtApp) => { store.commit(api.commit, copy); } } + if (notify) { $snackbar( store.lang === "en" ? "Data has been successfully saved to the system." : "Dữ liệu đã được lưu vào hệ thống", @@ -138,12 +139,22 @@ export default defineNuxtPlugin((nuxtApp) => { const api = findapi(name); const curpath = getpath(api.path); const updateUrl = api.url_detail || api.url; + let rs; - const rs = await $fetch(`${curpath}${updateUrl}${data.id}/`, { - method: "PATCH", - body: data, - params: { values: values || api.params?.values }, - }); + if (Array.isArray(data)) { + const model = api.url.slice(5); + rs = await $fetch(`${curpath}import-data/${model}`, { + method: "POST", + body: data, + params: { values, action: "import" }, + }); + } else { + rs = await $fetch(`${curpath}${updateUrl}${data.id}/`, { + method: "PATCH", + body: data, + params: { values: values || api.params?.values }, + }); + } if (api.commit) { const index = store[api.commit] ? store[api.commit].findIndex((v) => v.id === rs.id) : -1; diff --git a/app/plugins/04-components.js b/app/plugins/04-components.js index 8b2f4df..40564ec 100644 --- a/app/plugins/04-components.js +++ b/app/plugins/04-components.js @@ -28,6 +28,9 @@ import CustomerForm from "~/components/customer/CustomerForm.vue"; import Dashboard from "~/components/dashboard/Dashboard.vue"; import Orders from "~/components/orders/Orders.vue"; import Inventory from "~/components/inventory/Inventory.vue"; +import InventoryItemName from "~/components/inventory/InventoryItemName.vue"; +import IMEICountByWarehouse from "~/components/inventory/IMEICountByWarehouse.vue"; +import Status from "~/components/inventory/Status.vue"; import Rights from "~/components/rights/Rights.vue"; import POS from "~/components/pos/POS.vue"; import ChooseIMEIButton from "~/components/pos/ChooseIMEIButton.vue"; @@ -80,6 +83,9 @@ const components = { Dashboard, Orders, Inventory, + InventoryItemName, + IMEICountByWarehouse, + Status, Rights, POS, ChooseIMEIButton, diff --git a/app/stores/usePosStore.js b/app/stores/usePosStore.js index dd0aebe..0e77568 100644 --- a/app/stores/usePosStore.js +++ b/app/stores/usePosStore.js @@ -41,6 +41,7 @@ export const usePosStore = defineStore("pos", () => { id: activeCartId.value, customer: cusId, }, + notify: false, }); await getCarts(); isChangingCus.value = false; diff --git a/app/utils/apis.js b/app/utils/apis.js index 7a3f579..0ebf1c5 100644 --- a/app/utils/apis.js +++ b/app/utils/apis.js @@ -634,7 +634,7 @@ export default /** @type {const} */ ([ params: { sort: "id", values: - "id,code,imei,variant,variant,variant__code,variant__product,variant__product__code,variant__product__name,variant__product__manufacturer,variant__product__os,variant__product__battery,variant__product__screen,variant__product__cpu,variant__product__gpu,variant__product__camera_system,variant__product__sim,variant__product__network_technology,variant__product__charging_technology,variant__product__external_storage,variant__product__ip_rating,variant__product__design,variant__product__creator,variant__product__updater,variant__product__deleted,variant__color,variant__color__code,variant__color__name,variant__color__hex_code,variant__color__deleted,variant__ram,variant__ram__code,variant__ram__capacity,variant__ram__deleted,variant__internal_storage,variant__internal_storage__code,variant__internal_storage__capacity,variant__internal_storage__deleted,variant__image,variant__image__code,variant__image__name,variant__image__path,variant__image__is_active,variant__image__deleted,variant__image__create_time,variant__price,variant__note,variant__creator,variant__updater,variant__deleted,variant__create_time,variant__update_time,deleted,create_time,update_time", + "id,code,imei,variant,variant,variant__code,variant__product,variant__product__code,variant__product__name,variant__product__manufacturer,variant__product__os,variant__product__battery,variant__product__screen,variant__product__cpu,variant__product__gpu,variant__product__camera_system,variant__product__sim,variant__product__network_technology,variant__product__charging_technology,variant__product__external_storage,variant__product__ip_rating,variant__product__design,variant__product__creator,variant__product__updater,variant__product__deleted,variant__color,variant__color__code,variant__color__name,variant__color__hex_code,variant__color__deleted,variant__ram,variant__ram__code,variant__ram__capacity,variant__ram__deleted,variant__internal_storage,variant__internal_storage__code,variant__internal_storage__capacity,variant__internal_storage__deleted,variant__image,variant__image__code,variant__image__name,variant__image__path,variant__image__is_active,variant__image__deleted,variant__image__create_time,variant__price,variant__note,variant__creator,variant__updater,variant__deleted,variant__create_time,variant__update_time,warehouse,warehouse__code,warehouse__name,warehouse__address,warehouse__deleted,deleted,create_time,update_time", }, }, { @@ -718,6 +718,12 @@ export default /** @type {const} */ ([ url_detail: "data-detail/Staff/", params: {}, }, + { + name: "Warehouse", + url: "data/Warehouse/", + url_detail: "data-detail/Warehouse/", + params: {}, + }, ]); /** diff --git a/nuxt.config.ts b/nuxt.config.ts index cf1f09d..c6ee218 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -3,9 +3,6 @@ export default defineNuxtConfig({ ssr: false, css: ["./my-bulma-project.css", "./app/assets/styles/main.scss"], - future: { - compatibilityVersion: 4, - }, app: { head: { link: [{ rel: "icon", type: "image/x-icon", href: "/favicon.svg" }],