changes
This commit is contained in:
71
app/components/imports/addons/AddBattery.vue
Normal file
71
app/components/imports/addons/AddBattery.vue
Normal file
@@ -0,0 +1,71 @@
|
||||
<script setup>
|
||||
const { $empty, $insertapi } = useNuxtApp();
|
||||
|
||||
const isLoading = ref(false);
|
||||
const body = ref({
|
||||
code: null,
|
||||
battery_type: null,
|
||||
capacity: null,
|
||||
});
|
||||
|
||||
async function submit() {
|
||||
isLoading.value = true;
|
||||
await $insertapi("Battery", body.value);
|
||||
isLoading.value = false;
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<form class="fixed-grid has-12-cols">
|
||||
<div class="grid">
|
||||
<div class="cell is-col-span-4">
|
||||
<div class="field">
|
||||
<label class="label">Mã</label>
|
||||
<div class="control">
|
||||
<input
|
||||
type="text"
|
||||
class="input"
|
||||
v-model.trim="body.code"
|
||||
placeholder="Mã"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-4">
|
||||
<div class="field">
|
||||
<label class="label">Loại pin</label>
|
||||
<div class="control">
|
||||
<input
|
||||
type="text"
|
||||
class="input"
|
||||
v-model.trim="body.battery_type"
|
||||
placeholder="Loại pin"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-4">
|
||||
<div class="field">
|
||||
<label class="label">Dung lượng</label>
|
||||
<div class="control">
|
||||
<input
|
||||
type="text"
|
||||
class="input"
|
||||
v-model.trim="body.capacity"
|
||||
placeholder="Dung lượng"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-12">
|
||||
<button
|
||||
@click.prevent="submit"
|
||||
:disabled="Object.values(body).every($empty)"
|
||||
:class="['button is-primary', { 'is-loading': isLoading }]"
|
||||
>
|
||||
Thêm
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</template>
|
||||
71
app/components/imports/addons/AddCPU.vue
Normal file
71
app/components/imports/addons/AddCPU.vue
Normal file
@@ -0,0 +1,71 @@
|
||||
<script setup>
|
||||
const { $empty, $insertapi } = useNuxtApp();
|
||||
|
||||
const isLoading = ref(false);
|
||||
const body = ref({
|
||||
code: null,
|
||||
name: null,
|
||||
core_count: null,
|
||||
});
|
||||
|
||||
async function submit() {
|
||||
isLoading.value = true;
|
||||
await $insertapi("CPU", body.value);
|
||||
isLoading.value = false;
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<form class="fixed-grid has-12-cols">
|
||||
<div class="grid">
|
||||
<div class="cell is-col-span-4">
|
||||
<div class="field">
|
||||
<label class="label">Mã</label>
|
||||
<div class="control">
|
||||
<input
|
||||
type="text"
|
||||
class="input"
|
||||
v-model.trim="body.code"
|
||||
placeholder="Mã"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-4">
|
||||
<div class="field">
|
||||
<label class="label">Tên</label>
|
||||
<div class="control">
|
||||
<input
|
||||
type="text"
|
||||
class="input"
|
||||
v-model.trim="body.name"
|
||||
placeholder="Tên"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-4">
|
||||
<div class="field">
|
||||
<label class="label">Số lõi</label>
|
||||
<div class="control">
|
||||
<input
|
||||
type="text"
|
||||
class="input"
|
||||
v-model.trim="body.core_count"
|
||||
placeholder="Số lõi"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-12">
|
||||
<button
|
||||
@click.prevent="submit"
|
||||
:disabled="Object.values(body).every($empty)"
|
||||
:class="['button is-primary', { 'is-loading': isLoading }]"
|
||||
>
|
||||
Thêm
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</template>
|
||||
71
app/components/imports/addons/AddCamera.vue
Normal file
71
app/components/imports/addons/AddCamera.vue
Normal file
@@ -0,0 +1,71 @@
|
||||
<script setup>
|
||||
const { $empty, $insertapi } = useNuxtApp();
|
||||
|
||||
const isLoading = ref(false);
|
||||
const body = ref({
|
||||
code: null,
|
||||
rear_camera_specs: null,
|
||||
front_camera_specs: null,
|
||||
});
|
||||
|
||||
async function submit() {
|
||||
isLoading.value = true;
|
||||
await $insertapi("Camera_System", body.value);
|
||||
isLoading.value = false;
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<form class="fixed-grid has-12-cols">
|
||||
<div class="grid">
|
||||
<div class="cell is-col-span-6">
|
||||
<div class="field">
|
||||
<label class="label">Mã</label>
|
||||
<div class="control">
|
||||
<input
|
||||
type="text"
|
||||
class="input"
|
||||
v-model.trim="body.code"
|
||||
placeholder="Mã"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-6">
|
||||
<div class="field">
|
||||
<label class="label">Camera sau</label>
|
||||
<div class="control">
|
||||
<input
|
||||
type="text"
|
||||
class="input"
|
||||
v-model.trim="body.rear_camera_specs"
|
||||
placeholder="Camera sau"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-6">
|
||||
<div class="field">
|
||||
<label class="label">Camera trước</label>
|
||||
<div class="control">
|
||||
<input
|
||||
type="text"
|
||||
class="input"
|
||||
v-model.trim="body.front_camera_specs"
|
||||
placeholder="Camera trước"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-12">
|
||||
<button
|
||||
@click.prevent="submit"
|
||||
:disabled="Object.values(body).every($empty)"
|
||||
:class="['button is-primary', { 'is-loading': isLoading }]"
|
||||
>
|
||||
Thêm
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</template>
|
||||
71
app/components/imports/addons/AddChargingTechnology.vue
Normal file
71
app/components/imports/addons/AddChargingTechnology.vue
Normal file
@@ -0,0 +1,71 @@
|
||||
<script setup>
|
||||
const { $empty, $insertapi } = useNuxtApp();
|
||||
|
||||
const isLoading = ref(false);
|
||||
const body = ref({
|
||||
code: null,
|
||||
port: null,
|
||||
technologies: null,
|
||||
});
|
||||
|
||||
async function submit() {
|
||||
isLoading.value = true;
|
||||
await $insertapi("Charging_Technology", body.value);
|
||||
isLoading.value = false;
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<form class="fixed-grid has-12-cols">
|
||||
<div class="grid">
|
||||
<div class="cell is-col-span-4">
|
||||
<div class="field">
|
||||
<label class="label">Mã</label>
|
||||
<div class="control">
|
||||
<input
|
||||
type="text"
|
||||
class="input"
|
||||
v-model.trim="body.code"
|
||||
placeholder="Mã"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-4">
|
||||
<div class="field">
|
||||
<label class="label">Cổng</label>
|
||||
<div class="control">
|
||||
<input
|
||||
type="text"
|
||||
class="input"
|
||||
v-model.trim="body.port"
|
||||
placeholder="Cổng"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-4">
|
||||
<div class="field">
|
||||
<label class="label">Công nghệ</label>
|
||||
<div class="control">
|
||||
<input
|
||||
type="text"
|
||||
class="input"
|
||||
v-model.trim="body.technologies"
|
||||
placeholder="Công nghệ"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-12">
|
||||
<button
|
||||
@click.prevent="submit"
|
||||
:disabled="Object.values(body).every($empty)"
|
||||
:class="['button is-primary', { 'is-loading': isLoading }]"
|
||||
>
|
||||
Thêm
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</template>
|
||||
71
app/components/imports/addons/AddColor.vue
Normal file
71
app/components/imports/addons/AddColor.vue
Normal file
@@ -0,0 +1,71 @@
|
||||
<script setup>
|
||||
const { $empty, $insertapi } = useNuxtApp();
|
||||
|
||||
const isLoading = ref(false);
|
||||
const body = ref({
|
||||
code: null,
|
||||
name: null,
|
||||
hex_code: null,
|
||||
});
|
||||
|
||||
async function submit() {
|
||||
isLoading.value = true;
|
||||
await $insertapi("Color", body.value);
|
||||
isLoading.value = false;
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<form class="fixed-grid has-12-cols">
|
||||
<div class="grid">
|
||||
<div class="cell is-col-span-4">
|
||||
<div class="field">
|
||||
<label class="label">Mã</label>
|
||||
<div class="control">
|
||||
<input
|
||||
type="text"
|
||||
class="input"
|
||||
v-model.trim="body.code"
|
||||
placeholder="Mã"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-4">
|
||||
<div class="field">
|
||||
<label class="label">Tên</label>
|
||||
<div class="control">
|
||||
<input
|
||||
type="text"
|
||||
class="input"
|
||||
v-model.trim="body.name"
|
||||
placeholder="Tên"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-4">
|
||||
<div class="field">
|
||||
<label class="label">Hex Code</label>
|
||||
<div class="control">
|
||||
<input
|
||||
type="text"
|
||||
class="input"
|
||||
v-model.trim="body.hex_code"
|
||||
placeholder="e.g. #f27a90"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-12">
|
||||
<button
|
||||
@click.prevent="submit"
|
||||
:disabled="Object.values(body).every($empty)"
|
||||
:class="['button is-primary', { 'is-loading': isLoading }]"
|
||||
>
|
||||
Thêm
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</template>
|
||||
71
app/components/imports/addons/AddDesign.vue
Normal file
71
app/components/imports/addons/AddDesign.vue
Normal file
@@ -0,0 +1,71 @@
|
||||
<script setup>
|
||||
const { $empty, $insertapi } = useNuxtApp();
|
||||
|
||||
const isLoading = ref(false);
|
||||
const body = ref({
|
||||
code: null,
|
||||
frame_material: null,
|
||||
back_material: null,
|
||||
});
|
||||
|
||||
async function submit() {
|
||||
isLoading.value = true;
|
||||
await $insertapi("Design", body.value);
|
||||
isLoading.value = false;
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<form class="fixed-grid has-12-cols">
|
||||
<div class="grid">
|
||||
<div class="cell is-col-span-4">
|
||||
<div class="field">
|
||||
<label class="label">Mã</label>
|
||||
<div class="control">
|
||||
<input
|
||||
type="text"
|
||||
class="input"
|
||||
v-model.trim="body.code"
|
||||
placeholder="Mã"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-4">
|
||||
<div class="field">
|
||||
<label class="label">Khung</label>
|
||||
<div class="control">
|
||||
<input
|
||||
type="text"
|
||||
class="input"
|
||||
v-model.trim="body.frame_material"
|
||||
placeholder="Khung"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-4">
|
||||
<div class="field">
|
||||
<label class="label">Lưng</label>
|
||||
<div class="control">
|
||||
<input
|
||||
type="text"
|
||||
class="input"
|
||||
v-model.trim="body.back_material"
|
||||
placeholder="Lưng"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-12">
|
||||
<button
|
||||
@click.prevent="submit"
|
||||
:disabled="Object.values(body).every($empty)"
|
||||
:class="['button is-primary', { 'is-loading': isLoading }]"
|
||||
>
|
||||
Thêm
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</template>
|
||||
60
app/components/imports/addons/AddExternalStorage.vue
Normal file
60
app/components/imports/addons/AddExternalStorage.vue
Normal file
@@ -0,0 +1,60 @@
|
||||
<script setup>
|
||||
const { $empty, $insertapi } = useNuxtApp();
|
||||
|
||||
const isLoading = ref(false);
|
||||
const body = ref({
|
||||
code: null,
|
||||
max_capacity: null,
|
||||
});
|
||||
|
||||
async function submit() {
|
||||
isLoading.value = true;
|
||||
await $insertapi("External_Storage", body.value);
|
||||
isLoading.value = false;
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<form class="fixed-grid has-12-cols">
|
||||
<div class="grid">
|
||||
<div class="cell is-col-span-6">
|
||||
<div class="field">
|
||||
<label class="label">Mã</label>
|
||||
<div class="control">
|
||||
<input
|
||||
type="text"
|
||||
class="input"
|
||||
v-model.trim="body.code"
|
||||
placeholder="Mã"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-6">
|
||||
<div class="field">
|
||||
<label class="label">Dung lượng max</label>
|
||||
<div class="control">
|
||||
<InputNumber
|
||||
v-bind="{
|
||||
record: body,
|
||||
attr: 'max_capacity',
|
||||
placeholder: 'Dung lượng max',
|
||||
unit: 'GB',
|
||||
}"
|
||||
@number="(num) => (body.max_capacity = num)"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-12">
|
||||
<button
|
||||
@click.prevent="submit"
|
||||
:disabled="Object.values(body).every($empty)"
|
||||
:class="['button is-primary', { 'is-loading': isLoading }]"
|
||||
>
|
||||
Thêm
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</template>
|
||||
57
app/components/imports/addons/AddGPU.vue
Normal file
57
app/components/imports/addons/AddGPU.vue
Normal file
@@ -0,0 +1,57 @@
|
||||
<script setup>
|
||||
const { $empty, $insertapi } = useNuxtApp();
|
||||
|
||||
const isLoading = ref(false);
|
||||
const body = ref({
|
||||
code: null,
|
||||
name: null,
|
||||
});
|
||||
|
||||
async function submit() {
|
||||
isLoading.value = true;
|
||||
await $insertapi("GPU", body.value);
|
||||
isLoading.value = false;
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<form class="fixed-grid has-12-cols">
|
||||
<div class="grid">
|
||||
<div class="cell is-col-span-6">
|
||||
<div class="field">
|
||||
<label class="label">Mã</label>
|
||||
<div class="control">
|
||||
<input
|
||||
type="text"
|
||||
class="input"
|
||||
v-model.trim="body.code"
|
||||
placeholder="Mã"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-6">
|
||||
<div class="field">
|
||||
<label class="label">Tên</label>
|
||||
<div class="control">
|
||||
<input
|
||||
type="text"
|
||||
class="input"
|
||||
v-model.trim="body.name"
|
||||
placeholder="Tên"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-12">
|
||||
<button
|
||||
@click.prevent="submit"
|
||||
:disabled="Object.values(body).every($empty)"
|
||||
:class="['button is-primary', { 'is-loading': isLoading }]"
|
||||
>
|
||||
Thêm
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</template>
|
||||
57
app/components/imports/addons/AddIPRating.vue
Normal file
57
app/components/imports/addons/AddIPRating.vue
Normal file
@@ -0,0 +1,57 @@
|
||||
<script setup>
|
||||
const { $empty, $insertapi } = useNuxtApp();
|
||||
|
||||
const isLoading = ref(false);
|
||||
const body = ref({
|
||||
code: null,
|
||||
name: null,
|
||||
});
|
||||
|
||||
async function submit() {
|
||||
isLoading.value = true;
|
||||
await $insertapi("IP_Rating", body.value);
|
||||
isLoading.value = false;
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<form class="fixed-grid has-12-cols">
|
||||
<div class="grid">
|
||||
<div class="cell is-col-span-6">
|
||||
<div class="field">
|
||||
<label class="label">Mã</label>
|
||||
<div class="control">
|
||||
<input
|
||||
type="text"
|
||||
class="input"
|
||||
v-model.trim="body.code"
|
||||
placeholder="Mã"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-6">
|
||||
<div class="field">
|
||||
<label class="label">Tên</label>
|
||||
<div class="control">
|
||||
<input
|
||||
type="text"
|
||||
class="input"
|
||||
v-model.trim="body.name"
|
||||
placeholder="Tên"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-12">
|
||||
<button
|
||||
@click.prevent="submit"
|
||||
:disabled="Object.values(body).every($empty)"
|
||||
:class="['button is-primary', { 'is-loading': isLoading }]"
|
||||
>
|
||||
Thêm
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</template>
|
||||
62
app/components/imports/addons/AddInternalStorage.vue
Normal file
62
app/components/imports/addons/AddInternalStorage.vue
Normal file
@@ -0,0 +1,62 @@
|
||||
<script setup>
|
||||
import InputNumber from "@/components/common/InputNumber.vue";
|
||||
|
||||
const { $empty, $insertapi } = useNuxtApp();
|
||||
|
||||
const isLoading = ref(false);
|
||||
const body = ref({
|
||||
code: null,
|
||||
capacity: null,
|
||||
});
|
||||
|
||||
async function submit() {
|
||||
isLoading.value = true;
|
||||
await $insertapi("Internal_Storage", body.value);
|
||||
isLoading.value = false;
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<form class="fixed-grid has-12-cols">
|
||||
<div class="grid">
|
||||
<div class="cell is-col-span-6">
|
||||
<div class="field">
|
||||
<label class="label">Mã</label>
|
||||
<div class="control">
|
||||
<input
|
||||
type="text"
|
||||
class="input"
|
||||
v-model.trim="body.code"
|
||||
placeholder="Mã"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-6">
|
||||
<div class="field">
|
||||
<label class="label">Dung lượng</label>
|
||||
<div class="control">
|
||||
<InputNumber
|
||||
v-bind="{
|
||||
record: body,
|
||||
attr: 'capacity',
|
||||
placeholder: 'Dung lượng',
|
||||
unit: 'GB',
|
||||
}"
|
||||
@number="(num) => (body.capacity = num)"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-12">
|
||||
<button
|
||||
@click.prevent="submit"
|
||||
:disabled="Object.values(body).every($empty)"
|
||||
:class="['button is-primary', { 'is-loading': isLoading }]"
|
||||
>
|
||||
Thêm
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</template>
|
||||
57
app/components/imports/addons/AddManufacturer.vue
Normal file
57
app/components/imports/addons/AddManufacturer.vue
Normal file
@@ -0,0 +1,57 @@
|
||||
<script setup>
|
||||
const { $empty, $insertapi } = useNuxtApp();
|
||||
|
||||
const isLoading = ref(false);
|
||||
const body = ref({
|
||||
code: null,
|
||||
name: null,
|
||||
});
|
||||
|
||||
async function submit() {
|
||||
isLoading.value = true;
|
||||
await $insertapi("Manufacturer", body.value);
|
||||
isLoading.value = false;
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<form class="fixed-grid has-12-cols">
|
||||
<div class="grid">
|
||||
<div class="cell is-col-span-6">
|
||||
<div class="field">
|
||||
<label class="label">Mã</label>
|
||||
<div class="control">
|
||||
<input
|
||||
type="text"
|
||||
class="input"
|
||||
v-model.trim="body.code"
|
||||
placeholder="Mã"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-6">
|
||||
<div class="field">
|
||||
<label class="label">Tên</label>
|
||||
<div class="control">
|
||||
<input
|
||||
type="text"
|
||||
class="input"
|
||||
v-model.trim="body.name"
|
||||
placeholder="Tên"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-12">
|
||||
<button
|
||||
@click.prevent="submit"
|
||||
:disabled="Object.values(body).every($empty)"
|
||||
:class="['button is-primary', { 'is-loading': isLoading }]"
|
||||
>
|
||||
Thêm
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</template>
|
||||
57
app/components/imports/addons/AddNetworkTechnology.vue
Normal file
57
app/components/imports/addons/AddNetworkTechnology.vue
Normal file
@@ -0,0 +1,57 @@
|
||||
<script setup>
|
||||
const { $empty, $insertapi } = useNuxtApp();
|
||||
|
||||
const isLoading = ref(false);
|
||||
const body = ref({
|
||||
code: null,
|
||||
name: null,
|
||||
});
|
||||
|
||||
async function submit() {
|
||||
isLoading.value = true;
|
||||
await $insertapi("Network_Technology", body.value);
|
||||
isLoading.value = false;
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<form class="fixed-grid has-12-cols">
|
||||
<div class="grid">
|
||||
<div class="cell is-col-span-6">
|
||||
<div class="field">
|
||||
<label class="label">Mã</label>
|
||||
<div class="control">
|
||||
<input
|
||||
type="text"
|
||||
class="input"
|
||||
v-model.trim="body.code"
|
||||
placeholder="Mã"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-6">
|
||||
<div class="field">
|
||||
<label class="label">Tên</label>
|
||||
<div class="control">
|
||||
<input
|
||||
type="text"
|
||||
class="input"
|
||||
v-model.trim="body.name"
|
||||
placeholder="Tên"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-12">
|
||||
<button
|
||||
@click.prevent="submit"
|
||||
:disabled="Object.values(body).every($empty)"
|
||||
:class="['button is-primary', { 'is-loading': isLoading }]"
|
||||
>
|
||||
Thêm
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</template>
|
||||
71
app/components/imports/addons/AddOS.vue
Normal file
71
app/components/imports/addons/AddOS.vue
Normal file
@@ -0,0 +1,71 @@
|
||||
<script setup>
|
||||
const { $empty, $insertapi } = useNuxtApp();
|
||||
|
||||
const isLoading = ref(false);
|
||||
const body = ref({
|
||||
code: null,
|
||||
name: null,
|
||||
version: null,
|
||||
});
|
||||
|
||||
async function submit() {
|
||||
isLoading.value = true;
|
||||
await $insertapi("OS", body.value);
|
||||
isLoading.value = false;
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<form class="fixed-grid has-12-cols">
|
||||
<div class="grid">
|
||||
<div class="cell is-col-span-4">
|
||||
<div class="field">
|
||||
<label class="label">Mã</label>
|
||||
<div class="control">
|
||||
<input
|
||||
type="text"
|
||||
class="input"
|
||||
v-model.trim="body.code"
|
||||
placeholder="Mã"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-4">
|
||||
<div class="field">
|
||||
<label class="label">Tên</label>
|
||||
<div class="control">
|
||||
<input
|
||||
type="text"
|
||||
class="input"
|
||||
v-model.trim="body.name"
|
||||
placeholder="Tên"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-4">
|
||||
<div class="field">
|
||||
<label class="label">Phiên bản</label>
|
||||
<div class="control">
|
||||
<input
|
||||
type="text"
|
||||
class="input"
|
||||
v-model.trim="body.version"
|
||||
placeholder="Phiên bản"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-12">
|
||||
<button
|
||||
@click.prevent="submit"
|
||||
:disabled="Object.values(body).every($empty)"
|
||||
:class="['button is-primary', { 'is-loading': isLoading }]"
|
||||
>
|
||||
Thêm
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</template>
|
||||
62
app/components/imports/addons/AddRAM.vue
Normal file
62
app/components/imports/addons/AddRAM.vue
Normal file
@@ -0,0 +1,62 @@
|
||||
<script setup>
|
||||
import InputNumber from "@/components/common/InputNumber.vue";
|
||||
|
||||
const { $empty, $insertapi } = useNuxtApp();
|
||||
|
||||
const isLoading = ref(false);
|
||||
const body = ref({
|
||||
code: null,
|
||||
capacity: null,
|
||||
});
|
||||
|
||||
async function submit() {
|
||||
isLoading.value = true;
|
||||
await $insertapi("RAM", body.value);
|
||||
isLoading.value = false;
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<form class="fixed-grid has-12-cols">
|
||||
<div class="grid">
|
||||
<div class="cell is-col-span-6">
|
||||
<div class="field">
|
||||
<label class="label">Mã</label>
|
||||
<div class="control">
|
||||
<input
|
||||
type="text"
|
||||
class="input"
|
||||
v-model.trim="body.code"
|
||||
placeholder="Mã"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-6">
|
||||
<div class="field">
|
||||
<label class="label">Dung lượng</label>
|
||||
<div class="control">
|
||||
<InputNumber
|
||||
v-bind="{
|
||||
record: body,
|
||||
attr: 'capacity',
|
||||
placeholder: 'Dung lượng',
|
||||
unit: 'GB',
|
||||
}"
|
||||
@number="(num) => (body.capacity = num)"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-12">
|
||||
<button
|
||||
@click.prevent="submit"
|
||||
:disabled="Object.values(body).every($empty)"
|
||||
:class="['button is-primary', { 'is-loading': isLoading }]"
|
||||
>
|
||||
Thêm
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</template>
|
||||
75
app/components/imports/addons/AddSIM.vue
Normal file
75
app/components/imports/addons/AddSIM.vue
Normal file
@@ -0,0 +1,75 @@
|
||||
<script setup>
|
||||
import InputNumber from "@/components/common/InputNumber.vue";
|
||||
|
||||
const { $empty, $insertapi } = useNuxtApp();
|
||||
|
||||
const isLoading = ref(false);
|
||||
const body = ref({
|
||||
code: null,
|
||||
sim_count: null,
|
||||
sim_types: null,
|
||||
});
|
||||
|
||||
async function submit() {
|
||||
isLoading.value = true;
|
||||
await $insertapi("SIM", body.value);
|
||||
isLoading.value = false;
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<form class="fixed-grid has-12-cols">
|
||||
<div class="grid">
|
||||
<div class="cell is-col-span-4">
|
||||
<div class="field">
|
||||
<label class="label">Mã</label>
|
||||
<div class="control">
|
||||
<input
|
||||
type="text"
|
||||
class="input"
|
||||
v-model.trim="body.code"
|
||||
placeholder="Mã"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-4">
|
||||
<div class="field">
|
||||
<label class="label">Số lượng SIM</label>
|
||||
<div class="control">
|
||||
<InputNumber
|
||||
v-bind="{
|
||||
record: body,
|
||||
attr: 'sim_count',
|
||||
placeholder: 'Số lượng SIM',
|
||||
}"
|
||||
@number="(num) => (body.sim_count = num)"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-4">
|
||||
<div class="field">
|
||||
<label class="label">Loại SIM</label>
|
||||
<div class="control">
|
||||
<input
|
||||
type="text"
|
||||
class="input"
|
||||
v-model.trim="body.sim_types"
|
||||
placeholder="Loại SIM"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-12">
|
||||
<button
|
||||
@click.prevent="submit"
|
||||
:disabled="Object.values(body).every($empty)"
|
||||
:class="['button is-primary', { 'is-loading': isLoading }]"
|
||||
>
|
||||
Thêm
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</template>
|
||||
141
app/components/imports/addons/AddScreen.vue
Normal file
141
app/components/imports/addons/AddScreen.vue
Normal file
@@ -0,0 +1,141 @@
|
||||
<script setup>
|
||||
const { $empty, $insertapi } = useNuxtApp();
|
||||
|
||||
const isLoading = ref(false);
|
||||
const body = ref({
|
||||
code: null,
|
||||
technology: null,
|
||||
standard: null,
|
||||
size: null,
|
||||
resolution: null,
|
||||
max_brightness: null,
|
||||
refresh_rate: null,
|
||||
screen_type: null,
|
||||
});
|
||||
|
||||
async function submit() {
|
||||
isLoading.value = true;
|
||||
await $insertapi("Screen", body.value);
|
||||
isLoading.value = false;
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<form class="fixed-grid has-12-cols">
|
||||
<div class="grid">
|
||||
<div class="cell is-col-span-4">
|
||||
<div class="field">
|
||||
<label class="label">Mã</label>
|
||||
<div class="control">
|
||||
<input
|
||||
type="text"
|
||||
class="input"
|
||||
v-model.trim="body.code"
|
||||
placeholder="Mã"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-4">
|
||||
<div class="field">
|
||||
<label class="label">Công nghệ màn hình</label>
|
||||
<div class="control">
|
||||
<input
|
||||
type="text"
|
||||
class="input"
|
||||
v-model.trim="body.technology"
|
||||
placeholder="Công nghệ màn hình"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-4">
|
||||
<div class="field">
|
||||
<label class="label">Tiêu chuẩn</label>
|
||||
<div class="control">
|
||||
<input
|
||||
type="text"
|
||||
class="input"
|
||||
v-model.trim="body.standard"
|
||||
placeholder="Tiêu chuẩn"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-4">
|
||||
<div class="field">
|
||||
<label class="label">Kích thước</label>
|
||||
<div class="control">
|
||||
<input
|
||||
type="text"
|
||||
class="input"
|
||||
v-model.trim="body.size"
|
||||
placeholder="Kích thước"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-4">
|
||||
<div class="field">
|
||||
<label class="label">Độ phân giải</label>
|
||||
<div class="control">
|
||||
<input
|
||||
type="text"
|
||||
class="input"
|
||||
v-model.trim="body.resolution"
|
||||
placeholder="Độ phân giải"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-4">
|
||||
<div class="field">
|
||||
<label class="label">Độ sáng tối đa</label>
|
||||
<div class="control">
|
||||
<input
|
||||
type="text"
|
||||
class="input"
|
||||
v-model.trim="body.max_brightness"
|
||||
placeholder="Độ sáng tối đa"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-4">
|
||||
<div class="field">
|
||||
<label class="label">Tần số quét</label>
|
||||
<div class="control">
|
||||
<input
|
||||
type="text"
|
||||
class="input"
|
||||
v-model.trim="body.refresh_rate"
|
||||
placeholder="Tần số quét"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-4">
|
||||
<div class="field">
|
||||
<label class="label">Loại màn hình</label>
|
||||
<div class="control">
|
||||
<input
|
||||
type="text"
|
||||
class="input"
|
||||
v-model.trim="body.screen_type"
|
||||
placeholder="Loại màn hình"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cell is-col-span-12">
|
||||
<button
|
||||
@click.prevent="submit"
|
||||
:disabled="Object.values(body).every($empty)"
|
||||
:class="['button is-primary', { 'is-loading': isLoading }]"
|
||||
>
|
||||
Thêm
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</template>
|
||||
Reference in New Issue
Block a user