This commit is contained in:
Viet An
2026-05-11 13:34:53 +07:00
parent edad738489
commit f1ecd5c7ff
22 changed files with 1582 additions and 326 deletions

View File

@@ -29,106 +29,135 @@ async function createProductVariant() {
</script>
<template>
<h1 class="subtitle is-4">AddProductVariantForm</h1>
<form class="fixed-grid has-12-cols">
<div class="grid">
<div class="cell is-col-span-8">
<div class="field">
<label class="label">Sản phẩm</label>
<SearchBox
v-bind="{
api: 'product',
field: 'name',
column: ['name'],
first: true,
placeholder: 'Sản phẩm',
}"
@option="selected('product', $event)"
/>
</div>
</div>
<div class="cell is-col-span-4">
<div class="field">
<label class="label">Đơn giá</label>
<div class="control">
<InputNumber
<div>
<h1 class="subtitle is-4">AddProductVariantForm</h1>
<form class="fixed-grid has-12-cols">
<div class="grid">
<div class="cell is-col-span-8">
<div class="field">
<label class="label">Sản phẩm</label>
<SearchBox
v-bind="{
record: body,
attr: 'price',
placeholder: 'Đơn giá',
api: 'product',
field: 'name',
column: ['name'],
first: true,
placeholder: 'Sản phẩm',
addon: {
component: 'imports/AddProductForm',
width: '90%',
height: 'auto',
title: 'Thêm sản phẩm',
},
}"
@number="selected('price', $event)"
@option="selected('product', $event)"
/>
</div>
</div>
</div>
<div class="cell is-col-span-4">
<div class="field">
<label class="label">Màu sắc</label>
<SearchBox
v-bind="{
api: 'color',
field: 'name',
column: ['name'],
first: true,
placeholder: 'Màu sắc',
}"
@option="selected('color', $event)"
/>
<div class="cell is-col-span-4">
<div class="field">
<label class="label">Đơn giá</label>
<div class="control">
<InputNumber
v-bind="{
record: body,
attr: 'price',
placeholder: 'Đơn giá',
unit: 'VND',
}"
@number="selected('price', $event)"
/>
</div>
</div>
</div>
<div class="cell is-col-span-4">
<div class="field">
<label class="label">Màu sắc</label>
<SearchBox
v-bind="{
api: 'color',
field: 'name',
column: ['name'],
first: true,
placeholder: 'Màu sắc',
addon: {
component: 'imports/addons/AddColor',
width: '60%',
height: 'auto',
title: 'Thêm màu sắc',
},
}"
@option="selected('color', $event)"
/>
</div>
</div>
<div class="cell is-col-span-4">
<div class="field">
<label class="label">RAM</label>
<SearchBox
v-bind="{
api: 'RAM',
field: 'code',
column: ['code'],
first: true,
placeholder: 'RAM',
addon: {
component: 'imports/addons/AddRAM',
width: '60%',
height: 'auto',
title: 'Thêm RAM',
},
}"
@option="selected('ram', $event)"
/>
</div>
</div>
<div class="cell is-col-span-4">
<div class="field">
<label class="label">Bộ nhớ trong</label>
<SearchBox
v-bind="{
api: 'Internal_Storage',
field: 'code',
column: ['code'],
first: true,
placeholder: 'Bộ nhớ trong',
addon: {
component: 'imports/addons/AddInternalStorage',
width: '60%',
height: 'auto',
title: 'Thêm bộ nhớ trong',
},
}"
@option="selected('internal_storage', $event)"
/>
</div>
</div>
<div class="cell is-col-span-12">
<div class="field">
<label class="label">Ghi chú</label>
<textarea
v-model.trim="body.note"
class="textarea"
name="note"
placeholder="Ghi chú"
rows="1"
></textarea>
</div>
</div>
<div class="cell is-col-span-12">
<button
:class="['button is-primary', { 'is-loading': isPending }]"
:disabled="Object.values(body).every((v) => v === null)"
@click.prevent="createProductVariant"
>
<span class="icon">
<Icon name="material-symbols:add-2-rounded" />
</span>
<span>Thêm phiên bản</span>
</button>
</div>
</div>
<div class="cell is-col-span-4">
<div class="field">
<label class="label">RAM</label>
<SearchBox
v-bind="{
api: 'RAM',
field: 'code',
column: ['code'],
first: true,
placeholder: 'RAM',
}"
@option="selected('ram', $event)"
/>
</div>
</div>
<div class="cell is-col-span-4">
<div class="field">
<label class="label">Bộ nhớ trong</label>
<SearchBox
v-bind="{
api: 'internalstorage',
field: 'code',
column: ['code'],
first: true,
placeholder: 'Bộ nhớ trong',
}"
@option="selected('internal_storage', $event)"
/>
</div>
</div>
<div class="cell is-col-span-12">
<div class="field">
<label class="label">Ghi chú</label>
<textarea
v-model.trim="body.note"
class="textarea"
name="note"
placeholder="Ghi chú"
rows="2"
></textarea>
</div>
</div>
<div class="cell is-col-span-12">
<button
:class="['button is-primary', { 'is-loading': isPending }]"
:disabled="Object.values(body).every((v) => v === null)"
@click.prevent="createProductVariant"
>
Thêm phiên bản
</button>
</div>
</div>
</form>
</form>
</div>
</template>