This commit is contained in:
Viet An
2026-05-09 15:44:25 +07:00
parent ae8aeb8761
commit edad738489
6 changed files with 531 additions and 65 deletions

View File

@@ -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);