Initial commit

This commit is contained in:
Viet An
2026-03-02 09:45:33 +07:00
commit d17a9e2588
415 changed files with 92113 additions and 0 deletions

View File

@@ -0,0 +1,91 @@
<template>
<div>
<div class="mb-5">
<label
v-for="item in filteredPhases"
:key="item.id"
class="py-3 is-clickable is-block"
:class="{ 'has-background-success-light': selectedPhaseId === item.id }"
style="border-bottom: 1px solid #dbdbdb;"
>
<div class="columns px-3 is-mobile is-vcentered is-gapless mb-0">
<div class="column">
<span class="is-size-6">{{ item.name }}</span>
</div>
<div class="column is-narrow">
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="12" cy="12" r="10" :stroke="selectedPhaseId === item.id ? '#48c78e' : '#dbdbdb'" stroke-width="2"/>
<circle v-if="selectedPhaseId === item.id" cx="12" cy="12" r="6" fill="#48c78e"/>
</svg>
<input
type="radio"
:value="item.id"
v-model="selectedPhaseId"
style="display: none;"
/>
</div>
</div>
</label>
</div>
<div class="field">
<div class="control">
<button
class="button is-success has-text-white is-fullwidth"
@click="submit"
:disabled="!selectedPhaseId"
>
{{ isVietnamese ? 'Xác nhận' : 'Confirm' }}
</button>
</div>
</div>
</div>
</template>
<script>
import { useStore } from "@/stores/index";
export default {
setup() {
const store = useStore();
return { store };
},
emits: ['modalevent', 'close'],
props: {
filterPhases: {
type: Array,
default: () => []
}
},
data() {
return {
selectedPhaseId: null,
phases: [
{ id: 'p1', name: 'Giữ chỗ', code: 'reserved', phase: 1, status: 3,transstatus :1 },
{ id: 'p2a', name: 'Thỏa thuận thực hiện nguyện vọng', code: 'fulfillwish', phase: 4, status: 5,transstatus :1 },
{ id: 'p2b', name: 'Đặt cọc', code: 'deposit', phase: 2, status: 4,transstatus :1 },
{ id: 'p3', name: 'Mua bán', code: 'pertrade', phase: 3, status: 6,transstatus :1 }
]
};
},
computed: {
isVietnamese() {
return this.store.lang === 'vi';
},
filteredPhases() {
if (this.filterPhases.length === 0) {
return this.phases; // If no filter is provided, show all phases
}
return this.phases.filter(phase => this.filterPhases.includes(phase.code));
}
},
methods: {
submit() {
if (this.selectedPhaseId) {
const selected = this.phases.find(p => p.id === this.selectedPhaseId);
this.$emit('modalevent', { name: 'phaseSelected', data: selected });
this.$emit('close');
}
}
}
};
</script>