Files
aida_front/src/views/SellerDashboard/BrandProfile/brand-info.vue

140 lines
3.5 KiB
Vue
Raw Normal View History

2026-04-09 11:40:17 +08:00
<template>
<div class="brand-info">
2026-04-09 13:48:46 +08:00
<a-form :model="formData" :rules="isEdit ? formRules : {}" layout="vertical" ref="formRef">
<div class="form-group">
<a-form-item label="Store Name" name="storeName">
<a-input
v-model:value="formData.storeName"
placeholder="Enter the store name"
:maxlength="80"
:readonly="!isEdit"
/>
<span v-show="isEdit" class="tip-length"
>{{ formData.storeName.length }}/80</span
>
</a-form-item>
<a-form-item label="Owners Full Name" name="fullName">
<a-input
v-model:value="formData.fullName"
placeholder="Enter store owner's full name"
:readonly="!isEdit"
/>
</a-form-item>
</div>
2026-04-09 11:40:17 +08:00
<div class="form-group">
<a-form-item label="Email" name="email">
<a-input
type="email"
v-model:value="formData.email"
placeholder="Enter email"
2026-04-09 13:48:46 +08:00
:readonly="!isEdit"
2026-04-09 11:40:17 +08:00
/>
</a-form-item>
<a-form-item label="Phone Number" name="phoneNumber">
<a-input
type="tel"
v-model:value="formData.phoneNumber"
placeholder="Enter phone number"
2026-04-09 13:48:46 +08:00
:readonly="!isEdit"
2026-04-09 11:40:17 +08:00
/>
</a-form-item>
</div>
2026-04-09 13:48:46 +08:00
<div class="form-group">
<a-form-item label="Portfoilo/Social Media Links">
<a-input
placeholder="https://"
v-for="(v, i) in formData.links"
:key="i"
v-model:value="formData.links[i]"
:readonly="!isEdit"
>
<template #prefix>Link {{ i + 1 }}</template>
</a-input>
<a-input
placeholder="https://"
v-model:value="newLink"
@keyup.enter.prevent="addLink"
v-if="isEdit"
>
<template #prefix>
<span @click="addLink" style="cursor: pointer">
<svg-icon name="seller-add" size="20" />
</span>
</template>
</a-input>
</a-form-item>
<a-form-item label="Store Description" name="description">
<a-textarea
v-model:value="formData.description"
placeholder="Briefly describe your design style and store features..."
:maxlength="500"
:readonly="!isEdit"
/>
<span v-show="isEdit" class="tip-length"
>{{ formData.description.length }}/500</span
>
</a-form-item>
</div>
2026-04-09 11:40:17 +08:00
</a-form>
</div>
</template>
<script setup>
2026-04-09 13:48:46 +08:00
import { ref, reactive, watch } from "vue"
2026-04-09 11:40:17 +08:00
import { useRoute, useRouter } from "vue-router"
const route = useRoute()
const router = useRouter()
2026-04-09 13:48:46 +08:00
const props = defineProps({
isEdit: {
type: Boolean,
default: false
}
})
2026-04-09 11:40:17 +08:00
const formRules = {
storeName: [{ required: true, message: "Enter the store name" }],
fullName: [{ required: true, message: "Enter store owner's full name" }],
email: [{ required: true, message: "Enter email" }],
phoneNumber: [{ required: true, message: "Enter phone number" }],
description: [{ required: true, message: "Enter store description" }]
}
2026-04-09 13:48:46 +08:00
2026-04-09 11:40:17 +08:00
const formRef = ref(null)
const formData = reactive({
storeName: "",
fullName: "",
email: "",
phoneNumber: "",
description: "",
links: ["", ""]
})
const newLink = ref("")
const addLink = () => {
formData.links.push(newLink.value)
newLink.value = ""
}
2026-04-09 13:48:46 +08:00
watch(
() => props.isEdit,
(v) => (v ? edit() : cancel())
)
const edit = () => {}
const cancel = () => {}
const submit = async () => {
const valid = await formRef.value.validate()
if (!valid) return Promise.reject(false)
console.log(valid)
return valid
2026-04-09 11:40:17 +08:00
}
2026-04-09 13:48:46 +08:00
defineExpose({
submit
})
2026-04-09 11:40:17 +08:00
</script>
<style scoped lang="less">
@import "@/assets/style/ant-from-style.less";
.brand-info {
// width: 100%;
// height: 100%;
// overflow: hidden;
// padding: 0 10rem;
}
</style>