Merge branch 'dev_vite' of ssh://18.167.251.121:10002/aidlab/aida_front into dev_vite
This commit is contained in:
3516
src/lang/cn.ts
3516
src/lang/cn.ts
File diff suppressed because it is too large
Load Diff
@@ -1889,6 +1889,7 @@ export default {
|
||||
draftMessage: 'Product moved to drafts and stats reset.',
|
||||
publishMessage: 'Item is now live on the Marketplace.',
|
||||
ActiveListings: 'Active Listings',
|
||||
Praka: 'Praka',
|
||||
Drafts: 'Drafts',
|
||||
Cancel: 'Cancel',
|
||||
Delete: 'Delete',
|
||||
@@ -1908,5 +1909,34 @@ export default {
|
||||
SelectCollection: 'Select Collection',
|
||||
SelectSketch: 'Select Sketch',
|
||||
EditListingDetails: 'Edit Listing Details',
|
||||
},
|
||||
ApplySeller: {
|
||||
applySellerTitle: 'Apply to Become a Seller',
|
||||
applySellerDesc: 'Join the Stylish Parade and start selling your design work',
|
||||
formTitle: 'Brand Information',
|
||||
formTip: 'Share a few details to set up your seller profile',
|
||||
termsTitle: 'Seller Terms',
|
||||
termsTip: 'Please carefully read and agree to the following terms',
|
||||
agreementTitle: 'AiDA Seller Agreement',
|
||||
agreementTip: 'Please read and agree to the following agreement',
|
||||
agreementItem1: "Provide accurate and truthful personal and store information",
|
||||
agreementItem2: "Only sell original designs or content with proper licensing",
|
||||
agreementItem3: "Maintain high quality standards for all products",
|
||||
agreementItem4: "Respond to customer inquiries within 48 hours",
|
||||
agreementItem5: "Ship orders within promised timeframes",
|
||||
agreementItem6: "Comply with AiDA's terms of service and community guidelines",
|
||||
agreementItem7: "Pay applicable platform fees and transaction charges",
|
||||
agreementItem8: "Handle customer disputes professionally and fairly",
|
||||
agreementAgreement: "I have read and agree to the Seller Agreement, understanding my responsibilities and obligations as a seller on the AiDA platform.",
|
||||
submitApplication: "Submit Application",
|
||||
applicationSubmitted: "Application Submitted",
|
||||
applicationSubmittedTip: "Our team will review your application and get back to you within 1–3 business days. You'll receive a notification in your email once a decision has been made.",
|
||||
auditStatus1_title: "Step 1: Submit Application",
|
||||
auditStatus1_tip: "Fill out the seller information form and agree to our terms",
|
||||
auditStatus2_title: "Step 2: Review & Verification",
|
||||
auditStatus2_tip: "Our team will review your application (typically 1-3 business days)",
|
||||
auditStatus3_title: "Step 3: Start Selling",
|
||||
auditStatus3_tip: "Once approved, access your seller dashboard and start listing products",
|
||||
backToHomepage: "Back to Homepage",
|
||||
}
|
||||
}
|
||||
|
||||
@@ -224,8 +224,8 @@ const routes: Array<RouteRecordRaw> = [
|
||||
name: "becomeSeller",
|
||||
meta: {
|
||||
enter: "all",
|
||||
sellerHeaderTitle: "Apply to Become a Seller",
|
||||
sellerHeaderTip: "Join the Stylish Parade and start selling your design work"
|
||||
sellerHeaderTitle: "ApplySeller.applySellerTitle",
|
||||
sellerHeaderTip: "ApplySeller.applySellerDesc"
|
||||
},
|
||||
component: () => import("@/views/SellerDashboard/BecomeSeller/index.vue")
|
||||
},
|
||||
@@ -283,7 +283,7 @@ const routes: Array<RouteRecordRaw> = [
|
||||
name: "myListingsSelectItem",
|
||||
meta: {
|
||||
enter: "all",
|
||||
sellerHeaderTitleKey: "Seller.SelectCollection",
|
||||
sellerHeaderTitleKey: "Seller.SelectSketch",
|
||||
sellerBreadcrumbs: [
|
||||
myListingsBreadcrumb,
|
||||
selectCollectionBreadcrumb,
|
||||
|
||||
@@ -2,56 +2,58 @@
|
||||
<div class="seller-apply">
|
||||
<div class="session">
|
||||
<div class="content mini-scrollbar">
|
||||
<div class="title">Brand Information</div>
|
||||
<div class="tip">Share a few details to set up your seller profile</div>
|
||||
<div class="title">{{ $t("ApplySeller.formTitle") }}</div>
|
||||
<div class="tip">{{ $t("ApplySeller.formTip") }}</div>
|
||||
<div class="form">
|
||||
<a-form :model="formData" :rules="formRules" layout="vertical" ref="formRef">
|
||||
<a-form-item label="Store Name" name="storeName">
|
||||
<a-form-item :label="$t('Seller.storeName')" name="storeName">
|
||||
<a-input
|
||||
v-model:value="formData.storeName"
|
||||
placeholder="Enter the store name"
|
||||
:placeholder="$t('Seller.storeNameDesc')"
|
||||
:maxlength="80"
|
||||
/>
|
||||
<span class="tip-length">{{ formData.storeName.length }}/80</span>
|
||||
</a-form-item>
|
||||
<a-form-item label="Owner’s Full Name" name="fullName">
|
||||
<a-form-item :label="$t('Seller.ownerName')" name="fullName">
|
||||
<a-input
|
||||
v-model:value="formData.fullName"
|
||||
placeholder="Enter store owner's full name"
|
||||
:placeholder="$t('Seller.ownerNameDesc')"
|
||||
/>
|
||||
</a-form-item>
|
||||
<div class="form-group">
|
||||
<a-form-item label="Email" name="email">
|
||||
<a-form-item :label="$t('Seller.email')" name="email">
|
||||
<a-input
|
||||
type="email"
|
||||
v-model:value="formData.email"
|
||||
placeholder="Enter email"
|
||||
:placeholder="$t('Seller.emailDesc')"
|
||||
/>
|
||||
</a-form-item>
|
||||
<a-form-item label="Phone Number" name="phoneNumber">
|
||||
<a-form-item :label="$t('Seller.mobile')" name="mobile">
|
||||
<a-input
|
||||
type="tel"
|
||||
v-model:value="formData.phoneNumber"
|
||||
placeholder="Enter phone number"
|
||||
v-model:value="formData.mobile"
|
||||
:placeholder="$t('Seller.mobileDesc')"
|
||||
/>
|
||||
</a-form-item>
|
||||
</div>
|
||||
<a-form-item label="Store Description" name="description">
|
||||
<a-form-item :label="$t('Seller.storeDescription')" name="description">
|
||||
<a-textarea
|
||||
v-model:value="formData.description"
|
||||
placeholder="Briefly describe your design style and store features..."
|
||||
:placeholder="$t('Seller.storeDescriptionDesc')"
|
||||
:maxlength="500"
|
||||
/>
|
||||
<span class="tip-length">{{ formData.description.length }}/500</span>
|
||||
</a-form-item>
|
||||
<a-form-item label="Portfoilo/Social Media Links">
|
||||
<a-form-item :label="$t('Seller.links')">
|
||||
<a-input
|
||||
placeholder="https://"
|
||||
v-for="(v, i) in formData.links"
|
||||
:key="i"
|
||||
v-model:value="formData.links[i]"
|
||||
>
|
||||
<template #prefix>Link {{ i + 1 }}</template>
|
||||
<template #prefix>{{
|
||||
$t("Seller.link", { index: i + 1 })
|
||||
}}</template>
|
||||
</a-input>
|
||||
<a-input
|
||||
placeholder="https://"
|
||||
@@ -71,33 +73,25 @@
|
||||
</div>
|
||||
<div class="session">
|
||||
<div class="content">
|
||||
<div class="title">Brand Information</div>
|
||||
<div class="tip">Share a few details to set up your seller profile</div>
|
||||
<div class="title">{{ $t("ApplySeller.termsTitle") }}</div>
|
||||
<div class="tip">{{ $t("ApplySeller.termsTip") }}</div>
|
||||
<div class="agreement">
|
||||
<div class="title">AiDA Seller Agreement</div>
|
||||
<div class="tip">
|
||||
By checking the box below, you agree to comply with the following terms:
|
||||
</div>
|
||||
<div class="title">{{ $t("ApplySeller.agreementTitle") }}</div>
|
||||
<div class="tip">{{ $t("ApplySeller.agreementTip") }}</div>
|
||||
<ul>
|
||||
<li>Provide accurate and truthful personal and store information</li>
|
||||
<li>Only sell original designs or content with proper licensing</li>
|
||||
<li>Maintain high quality standards for all products</li>
|
||||
<li>Respond to customer inquiries within 48 hours</li>
|
||||
<li>Ship orders within promised timeframes</li>
|
||||
<li>Comply with AiDA's terms of service and community guidelines</li>
|
||||
<li>Pay applicable platform fees and transaction charges</li>
|
||||
<li>Handle customer disputes professionally and fairly</li>
|
||||
<li v-for="(v, i) in 8" :key="i">
|
||||
{{ $t(`ApplySeller.agreementItem${i + 1}`) }}
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<a-checkbox class="agree-agreement" v-model:checked="isAgreement">
|
||||
I have read and agree to the Seller Agreement, understanding my responsibilities
|
||||
and obligations as a seller on the AiDA platform.
|
||||
{{ $t("ApplySeller.agreementAgreement") }}
|
||||
</a-checkbox>
|
||||
</div>
|
||||
<div class="btns">
|
||||
<button class="cancel" @click="onCancel">Cancel</button>
|
||||
<button class="cancel" @click="onCancel">{{ $t("Seller.cancel") }}</button>
|
||||
<button class="submit" :disabled="!isAgreement" @click="onSubmit">
|
||||
Submit Application
|
||||
{{ $t("ApplySeller.submitApplication") }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -106,24 +100,26 @@
|
||||
|
||||
<script setup>
|
||||
import { ref, reactive } from "vue"
|
||||
import { useI18n } from "vue-i18n"
|
||||
const { t } = useI18n()
|
||||
import { useRoute, useRouter } from "vue-router"
|
||||
const route = useRoute()
|
||||
const router = useRouter()
|
||||
import { Https } from "@/tool/https"
|
||||
const emit = defineEmits(["submit"])
|
||||
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" }]
|
||||
storeName: [{ required: true, message: t("Seller.storeNameDesc") }],
|
||||
fullName: [{ required: true, message: t("Seller.ownerNameDesc") }],
|
||||
email: [{ required: true, message: t("Seller.emailDesc") }],
|
||||
mobile: [{ required: true, message: t("Seller.mobileDesc") }],
|
||||
description: [{ required: true, message: t("Seller.storeDescriptionErr") }]
|
||||
}
|
||||
const formRef = ref(null)
|
||||
const formData = reactive({
|
||||
storeName: "",
|
||||
fullName: "",
|
||||
email: "",
|
||||
phoneNumber: "",
|
||||
mobile: "",
|
||||
description: "",
|
||||
links: ["", ""]
|
||||
})
|
||||
@@ -140,7 +136,6 @@
|
||||
formRef.value
|
||||
.validate()
|
||||
.then(() => {
|
||||
console.log(formData)
|
||||
const data = {
|
||||
// userId: 0,
|
||||
shopName: formData.storeName,
|
||||
@@ -148,7 +143,7 @@
|
||||
// brandBanner: "",
|
||||
ownerName: formData.fullName,
|
||||
email: formData.email,
|
||||
mobile: formData.phoneNumber,
|
||||
mobile: formData.mobile,
|
||||
description: formData.description,
|
||||
socialLinks: JSON.stringify(formData.links.filter((v) => v))
|
||||
}
|
||||
|
||||
@@ -1,11 +1,8 @@
|
||||
<template>
|
||||
<div class="seller-review">
|
||||
<img class="success" src="@/assets/images/seller/success-1.png" />
|
||||
<div class="title">Application Submitted</div>
|
||||
<div class="tip">
|
||||
Our team will review your application and get back to you within 1–3 business days.
|
||||
You'll receive a notification in your email once a decision has been made.
|
||||
</div>
|
||||
<div class="title">{{ $t("ApplySeller.applicationSubmitted") }}</div>
|
||||
<div class="tip">{{ $t("ApplySeller.applicationSubmittedTip") }}</div>
|
||||
<div class="step-list">
|
||||
<div v-for="v in list" :key="v.title" class="step-item">
|
||||
<img v-show="!v.active" src="@/assets/images/seller/success-0.png" />
|
||||
@@ -16,7 +13,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<button class="home-btn" @click="onBackToHome">Back to Homepage</button>
|
||||
<button class="home-btn" @click="onBackToHome">{{ $t("ApplySeller.backToHomepage") }}</button>
|
||||
<div class="tip">ID: {{ userId }}</div>
|
||||
</div>
|
||||
</template>
|
||||
@@ -26,6 +23,9 @@
|
||||
import { useRoute, useRouter } from "vue-router"
|
||||
import { useStore } from "vuex"
|
||||
import { ApplyStatus } from "@/store/seller/index.d"
|
||||
import { useI18n } from "vue-i18n"
|
||||
const { t } = useI18n()
|
||||
|
||||
const route = useRoute()
|
||||
const router = useRouter()
|
||||
const store = useStore()
|
||||
@@ -33,18 +33,18 @@
|
||||
const applyStatus = computed(() => store.state.seller.applyStatus)
|
||||
const list = computed(() => [
|
||||
{
|
||||
title: "Step 1: Submit Application",
|
||||
tip: "Fill out the seller information form and agree to our terms",
|
||||
title: t("ApplySeller.auditStatus1_title"),
|
||||
tip: t("ApplySeller.auditStatus1_tip"),
|
||||
active: [ApplyStatus.Pending, ApplyStatus.Approved].includes(applyStatus.value)
|
||||
},
|
||||
{
|
||||
title: "Step 2: Review & Verification",
|
||||
tip: "Our team will review your application (typically 1-3 business days)",
|
||||
title: t("ApplySeller.auditStatus2_title"),
|
||||
tip: t("ApplySeller.auditStatus2_tip"),
|
||||
active: applyStatus.value === ApplyStatus.Approved
|
||||
},
|
||||
{
|
||||
title: "Step 3: Start Selling",
|
||||
tip: "Once approved, access your seller dashboard and start listing products ",
|
||||
title: t("ApplySeller.auditStatus3_title"),
|
||||
tip: t("ApplySeller.auditStatus3_tip"),
|
||||
active: applyStatus.value === ApplyStatus.Approved
|
||||
}
|
||||
])
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
:closable="false"
|
||||
wrapClassName="#app"
|
||||
:keyboard="false"
|
||||
:destroyOnClose="true"
|
||||
>
|
||||
<div class="image-clip-dialog-box">
|
||||
<div class="header" :class="{ 'is-product': data.isProduct }">
|
||||
|
||||
@@ -178,7 +178,7 @@ const {} = toRefs(data);
|
||||
<div class="title">
|
||||
<div class="left">
|
||||
<i class="fi fi-rs-comments"></i>
|
||||
<span>{{ $t('Seller.ActiveListings') }}</span>
|
||||
<span>{{ $t('Seller.Praka') }}</span>
|
||||
</div>
|
||||
<div class="right">
|
||||
<div class="generalModel_state">
|
||||
@@ -317,6 +317,7 @@ const {} = toRefs(data);
|
||||
margin: 0 auto;
|
||||
overflow-y: auto;
|
||||
align-content: flex-start;
|
||||
min-width: 90%;
|
||||
&::-webkit-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@@ -400,6 +400,7 @@ const { showDrafts } = toRefs(data);
|
||||
margin: 0 auto;
|
||||
align-items: flex-start;
|
||||
overflow: auto;
|
||||
min-width: 90%;
|
||||
&::-webkit-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@@ -132,6 +132,7 @@ const {} = toRefs(data);
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
background-color: #fff;
|
||||
}
|
||||
> .maskBtn{
|
||||
position: absolute;
|
||||
|
||||
@@ -41,7 +41,7 @@ const {} = toRefs(data);
|
||||
</script>
|
||||
<template>
|
||||
<div class="myListings-seller">
|
||||
<seller-header>
|
||||
<seller-header :displayBack="false">
|
||||
<template #right>
|
||||
<div class="button" @click="newListing">
|
||||
<span>{{ $t('Seller.newListing') }}</span>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<div class="seller-header">
|
||||
<div class="back" @click="() => router.back()">
|
||||
<div class="back" v-if="displayBack" @click="() => router.back()">
|
||||
<svg-icon name="seller-back" size="24" />
|
||||
</div>
|
||||
<div class="content">
|
||||
@@ -55,13 +55,16 @@
|
||||
defineProps<{
|
||||
title?: string
|
||||
tip?: string
|
||||
displayBack?: boolean
|
||||
breadcrumbs?: SellerBreadcrumbSource[]
|
||||
}>(),
|
||||
{
|
||||
title: "",
|
||||
tip: "",
|
||||
breadcrumbs: () => []
|
||||
breadcrumbs: () => [],
|
||||
displayBack: true
|
||||
}
|
||||
|
||||
)
|
||||
const route = useRoute()
|
||||
const router = useRouter()
|
||||
|
||||
Reference in New Issue
Block a user