diff --git a/app/components/imports/AddOS.vue b/app/components/imports/AddOS.vue new file mode 100644 index 0000000..018a779 --- /dev/null +++ b/app/components/imports/AddOS.vue @@ -0,0 +1,3 @@ + + + diff --git a/app/components/imports/AddProductForm.vue b/app/components/imports/AddProductForm.vue new file mode 100644 index 0000000..a2ceeb9 --- /dev/null +++ b/app/components/imports/AddProductForm.vue @@ -0,0 +1,264 @@ + + + diff --git a/app/components/imports/AddProductVariantForm.vue b/app/components/imports/AddProductVariantForm.vue new file mode 100644 index 0000000..d132013 --- /dev/null +++ b/app/components/imports/AddProductVariantForm.vue @@ -0,0 +1,134 @@ + + + diff --git a/app/components/imports/Imports.vue b/app/components/imports/Imports.vue index 4256a3f..49a125a 100644 --- a/app/components/imports/Imports.vue +++ b/app/components/imports/Imports.vue @@ -1,38 +1,8 @@ - diff --git a/app/plugins/02-connection.js b/app/plugins/02-connection.js index 4bbfc9b..ea0030b 100644 --- a/app/plugins/02-connection.js +++ b/app/plugins/02-connection.js @@ -570,19 +570,13 @@ export default defineNuxtPlugin((nuxtApp) => { commit: "product", url: "data/Product/", url_detail: "data-detail/Product/", - params: { - sort: "id", - values: - "prdbk__transaction__amount_remain,prdbk__transaction,price_excluding_vat,prdbk__transaction__txncurrent__detail__status__name,locked_until,note,cart,cart__name,cart__code,cart__dealer,cart__dealer__code,cart__dealer__name,direction,type,zone_type,dealer,link,type__name,dealer__code,dealer__name,prdbk,prdbk__transaction__customer,prdbk__transaction,prdbk__transaction__policy__code,prdbk__transaction__sale_price,prdbk__transaction__discount_amount,prdbk__transaction__code,prdbk__transaction__customer__code,prdbk__transaction__customer__phone,prdbk__transaction__customer__fullname,prdbk__transaction__customer__legal_code,id,code,trade_code,land_lot_code,zone_code,zone_type__name,lot_area,building_area,total_built_area,number_of_floors,land_lot_size,origin_price,direction__name,villa_model,product_type,template_name,project,project__name,status,status__code,status__name,status__color,status__sale_status,status__sale_status__color,create_time,prdbk__transaction__amount_received", - distinct_values: { - label: { - type: "Concat", - field: ["trade_code", "type__name", "land_lot_size", "zone_type__name", "status__name"], - }, - count_note: { type: "Count", field: "prdnote" }, - }, - summary: "annotate", - }, + params: {}, + }, + { + name: "Product_Variant", + url: "data/Product_Variant/", + url_detail: "data-detail/Product_Variant/", + params: {}, }, { name: "productdocument", @@ -996,6 +990,115 @@ export default defineNuxtPlugin((nuxtApp) => { url_detail: "data-detail/Invoice/", params: {}, }, + { + name: "Manufacturer", + url: "data/Manufacturer/", + url_detail: "data-detail/Manufacturer/", + params: {}, + }, + { + name: "OS", + url: "data/OS/", + url_detail: "data-detail/OS/", + params: {}, + }, + { + name: "Battery", + url: "data/Battery/", + url_detail: "data-detail/Battery/", + params: {}, + }, + { + name: "Screen", + url: "data/Screen/", + url_detail: "data-detail/Screen/", + params: {}, + }, + { + name: "CPU", + url: "data/CPU/", + url_detail: "data-detail/CPU/", + params: {}, + }, + { + name: "GPU", + url: "data/GPU/", + url_detail: "data-detail/GPU/", + params: {}, + }, + { + name: "Camera_System", + url: "data/Camera_System/", + url_detail: "data-detail/Camera_System/", + params: {}, + }, + { + name: "SIM", + url: "data/SIM/", + url_detail: "data-detail/SIM/", + params: {}, + }, + { + name: "Network_Technology", + url: "data/Network_Technology/", + url_detail: "data-detail/Network_Technology/", + params: {}, + }, + { + name: "Charging_Technology", + url: "data/Charging_Technology/", + url_detail: "data-detail/Charging_Technology/", + params: {}, + }, + { + name: "External_Storage", + url: "data/External_Storage/", + url_detail: "data-detail/External_Storage/", + params: {}, + }, + { + name: "IP_Rating", + url: "data/IP_Rating/", + url_detail: "data-detail/IP_Rating/", + params: {}, + }, + { + name: "Design", + url: "data/Design/", + url_detail: "data-detail/Design/", + params: { + values: "id,code,frame_material,back_material,create_time", + distinct_values: { + label: { + type: "Concat", + field: ["frame_material", "back_material"], + }, + }, + summary: "annotate", + }, + }, + { + name: "color", + url: "data/Color/", + url_detail: "data-detail/Color/", + params: {}, + }, + { + name: "RAM", + url: "data/RAM/", + url_detail: "data-detail/RAM/", + params: { + sort: "capacity", + }, + }, + { + name: "internalstorage", + url: "data/Internal_Storage/", + url_detail: "data-detail/Internal_Storage/", + params: { + sort: "capacity", + }, + }, ]; const { $copy, $clone, $updateSeriesFields, $snackbar, $store, $remove, $dialog } = nuxtApp; @@ -1014,6 +1117,11 @@ export default defineNuxtPlugin((nuxtApp) => { const result = Array.isArray(name) ? apis.filter((v) => name.findIndex((x) => v.name === x) >= 0) : apis.find((v) => v.name === name); + + if (!result) { + console.error(`API "${name}" doesn't exist`); + } + return $copy(result); }; @@ -1070,18 +1178,17 @@ export default defineNuxtPlugin((nuxtApp) => { params: { values }, }); } else { - let params = { action: "import", values }; rs = await $fetch(`${curpath}import-data/${found.url.substring(5, found.url.length - 1)}/`, { method: "POST", body: data, - params, + params: { action: "import", values }, }); } // update store if (found.commit) { if ($store[found.commit]) { - let copy = JSON.parse(JSON.stringify($store[found.commit])); - let rows = Array.isArray(rs.data) ? rs.data : [rs.data]; + let copy = $copy($store[found.commit]); + let rows = Array.isArray(rs) ? rs : [rs]; rows.map((v) => { if (v.id && !v.error) { let idx = copy.findIndex((x) => x.id === v.id); diff --git a/app/plugins/04-components.js b/app/plugins/04-components.js index 0c226f1..183da55 100644 --- a/app/plugins/04-components.js +++ b/app/plugins/04-components.js @@ -7,6 +7,7 @@ import POS from "@/components/pos/POS.vue"; import CreateReceipts from "@/components/receipts/CreateReceipts.vue"; import Return from "@/components/receipts/Return.vue"; import Imports from "@/components/imports/Imports.vue"; +import AddOS from "@/components/imports/AddOS.vue"; import Returns from "@/components/imports/Returns.vue"; import Exports from "@/components/exports/Exports.vue"; import ExportsDamaged from "@/components/exports/ExportsDamaged.vue"; @@ -145,6 +146,7 @@ const components = { CreateReceipts, Return, Imports, + AddOS, Returns, Exports, ExportsDamaged,