|
|
@@ -23,7 +23,7 @@
|
|
|
<div class="container wta-hero__content">
|
|
|
<div class="wta-hero__badge">
|
|
|
<span class="wta-hero__badge-dot"></span>
|
|
|
- <span>AI 工作流需求广场</span>
|
|
|
+ <span>{{ $t('workflowTrade.heroBadge') }}</span>
|
|
|
</div>
|
|
|
<h1 class="wta-hero__title">{{ t('workflowTradeAdd.publishDemand') }}</h1>
|
|
|
<p class="wta-hero__subtitle">{{ t('workflowTradeAdd.publishDemandTip') }}</p>
|
|
|
@@ -32,17 +32,17 @@
|
|
|
<div class="wta-hero__stats">
|
|
|
<div class="wta-hero__stat">
|
|
|
<span class="wta-hero__stat-num">12,847</span>
|
|
|
- <span class="wta-hero__stat-label">已发布需求</span>
|
|
|
+ <span class="wta-hero__stat-label">{{ $t('workflowTrade.statPublished') }}</span>
|
|
|
</div>
|
|
|
<div class="wta-hero__stat-divider"></div>
|
|
|
<div class="wta-hero__stat">
|
|
|
<span class="wta-hero__stat-num">9,632</span>
|
|
|
- <span class="wta-hero__stat-label">成功对接</span>
|
|
|
+ <span class="wta-hero__stat-label">{{ $t('workflowTrade.statSuccess') }}</span>
|
|
|
</div>
|
|
|
<div class="wta-hero__stat-divider"></div>
|
|
|
<div class="wta-hero__stat">
|
|
|
<span class="wta-hero__stat-num">98.6%</span>
|
|
|
- <span class="wta-hero__stat-label">好评率</span>
|
|
|
+ <span class="wta-hero__stat-label">{{ $t('workflowTrade.statRate') }}</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
@@ -91,7 +91,7 @@
|
|
|
</div>
|
|
|
<div>
|
|
|
<div class="wta-card__title">{{ t('workflowTradeAdd.basicInfo') }}</div>
|
|
|
- <div class="wta-card__subtitle">填写需求的基本信息,吸引更多专业人才关注</div>
|
|
|
+ <div class="wta-card__subtitle">{{ t('workflowTradeAdd.basicInfoSubtitle') }}</div>
|
|
|
</div>
|
|
|
<div class="wta-card__step-badge">Step 1</div>
|
|
|
</div>
|
|
|
@@ -166,7 +166,7 @@
|
|
|
</div>
|
|
|
<div>
|
|
|
<div class="wta-card__title">{{ t('workflowTradeAdd.detailInfo') }}</div>
|
|
|
- <div class="wta-card__subtitle">详细描述需求背景和具体要求,提高匹配精准度</div>
|
|
|
+ <div class="wta-card__subtitle">{{ t('workflowTradeAdd.detailInfoSubtitle') }}</div>
|
|
|
</div>
|
|
|
<div class="wta-card__step-badge wta-card__step-badge--purple">Step 2</div>
|
|
|
</div>
|
|
|
@@ -246,7 +246,7 @@
|
|
|
</div>
|
|
|
<div>
|
|
|
<div class="wta-card__title">{{ $t('workflowTradeAdd.projectInfo') }}</div>
|
|
|
- <div class="wta-card__subtitle">设置预算范围和截止日期,帮助匹配合适的服务商</div>
|
|
|
+ <div class="wta-card__subtitle">{{ t('workflowTradeAdd.projectInfoSubtitle') }}</div>
|
|
|
</div>
|
|
|
<div class="wta-card__step-badge wta-card__step-badge--green">Step 3</div>
|
|
|
</div>
|
|
|
@@ -325,7 +325,7 @@
|
|
|
</div>
|
|
|
<div>
|
|
|
<div class="wta-card__title">{{ $t('workflowTradeAdd.contactInfo') }}</div>
|
|
|
- <div class="wta-card__subtitle">留下联系方式,方便服务商与您沟通</div>
|
|
|
+ <div class="wta-card__subtitle">{{ t('workflowTradeAdd.contactInfoSubtitle') }}</div>
|
|
|
</div>
|
|
|
<div class="wta-card__step-badge wta-card__step-badge--pink">Step 4</div>
|
|
|
</div>
|
|
|
@@ -381,7 +381,7 @@
|
|
|
<!-- 隐私提示 -->
|
|
|
<div class="wta-privacy-tip">
|
|
|
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="#6366f1" stroke-width="2"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg>
|
|
|
- <span>您的联系方式将受到严格保护,仅对接单方可见</span>
|
|
|
+ <span>{{ t('workflowTradeAdd.privacyTip') }}</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
@@ -396,13 +396,13 @@
|
|
|
>
|
|
|
<span v-if="isSubmiting" class="wta-btn-spinner"></span>
|
|
|
<el-icon v-else><Promotion /></el-icon>
|
|
|
- <span>{{ isSubmiting ? '发布中...' : $t('common.fabuxuqiu') }}</span>
|
|
|
+ <span>{{ isSubmiting ? t('workflowTradeAdd.publishing') : $t('common.fabuxuqiu') }}</span>
|
|
|
</button>
|
|
|
<button class="wta-btn-cancel" @click="goBack">
|
|
|
<el-icon><Back /></el-icon>
|
|
|
<span>{{ $t('common.back') }}</span>
|
|
|
</button>
|
|
|
- <span class="wta-actions__tip">提交即表示同意 <a href="#" class="wta-link">服务协议</a></span>
|
|
|
+ <span class="wta-actions__tip">提交即表示同意 <a href="#" class="wta-link">{{ t('workflowTradeAdd.serviceAgreement') }}</a></span>
|
|
|
</div>
|
|
|
|
|
|
</el-form>
|
|
|
@@ -450,7 +450,7 @@
|
|
|
<div class="wta-sidebar-card__icon-wrap wta-sidebar-card__icon-wrap--guarantee">
|
|
|
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg>
|
|
|
</div>
|
|
|
- <span class="wta-sidebar-card__title">平台保障</span>
|
|
|
+ <span class="wta-sidebar-card__title">{{ t('workflowTradeAdd.platformGuarantee') }}</span>
|
|
|
</div>
|
|
|
<div class="wta-guarantee-list">
|
|
|
<div class="wta-guarantee-item" v-for="g in guarantees" :key="g.text">
|
|
|
@@ -495,15 +495,15 @@ const isSticky = ref(false)
|
|
|
const waveCanvasRef = ref(null)
|
|
|
const stepsSentinelRef = ref(null)
|
|
|
|
|
|
-const steps = ['基本信息', '详细描述', '项目预算', '联系方式', '确认发布']
|
|
|
+const steps = [t('workflowTradeAdd.stepBasicInfo'), t('workflowTradeAdd.stepDetailDesc'), t('workflowTradeAdd.stepProjectBudget'), t('workflowTradeAdd.stepContactInfo'), t('workflowTradeAdd.stepConfirmPublish')]
|
|
|
|
|
|
-const writingTips = ['功能需求', '技术要求', '交付标准', '验收方式']
|
|
|
+const writingTips = [t('workflowTradeAdd.writingTip1'), t('workflowTradeAdd.writingTip2'), t('workflowTradeAdd.writingTip3'), t('workflowTradeAdd.writingTip4')]
|
|
|
|
|
|
const guarantees = [
|
|
|
- { text: '信息安全保护', bg: '#ede9fe', color: '#7c3aed' },
|
|
|
- { text: '专业人才匹配', bg: '#dbeafe', color: '#2563eb' },
|
|
|
- { text: '交易纠纷仲裁', bg: '#d1fae5', color: '#059669' },
|
|
|
- { text: '资金安全托管', bg: '#fef3c7', color: '#d97706' },
|
|
|
+ { text: t('workflowTradeAdd.guarantee1'), bg: '#ede9fe', color: '#7c3aed' },
|
|
|
+ { text: t('workflowTradeAdd.guarantee2'), bg: '#dbeafe', color: '#2563eb' },
|
|
|
+ { text: t('workflowTradeAdd.guarantee3'), bg: '#d1fae5', color: '#059669' },
|
|
|
+ { text: t('workflowTradeAdd.guarantee4'), bg: '#fef3c7', color: '#d97706' },
|
|
|
]
|
|
|
|
|
|
const ruleForm = reactive({
|
|
|
@@ -563,7 +563,7 @@ function initWaveCanvas() {
|
|
|
const waves = [
|
|
|
{ amp: 40, freq: 0.004, speed: 0.0012, phase: 0, color: 'rgba(99,102,241,0.28)' },
|
|
|
{ amp: 28, freq: 0.006, speed: 0.0025, phase: 2.1, color: 'rgba(167,139,250,0.22)' },
|
|
|
- { amp: 18, freq: 0.008, speed: 0.004, phase: 4.3, color: 'rgba(244,244,255,1)' },
|
|
|
+ { amp: 18, freq: 0.008, speed: 0.004, phase: 4.3, color: 'rgba(255,255,255,1)' },
|
|
|
]
|
|
|
|
|
|
function draw() {
|
|
|
@@ -709,6 +709,14 @@ const getAgreementTypeFn = () => {
|
|
|
</script>
|
|
|
|
|
|
<style scoped lang="scss">
|
|
|
+.container {
|
|
|
+ // max-width: 1200px;
|
|
|
+ width: 100%;
|
|
|
+ min-width: auto;
|
|
|
+ margin: 0 auto;
|
|
|
+ padding: 0 24px;
|
|
|
+ position: relative; z-index: 1;
|
|
|
+}
|
|
|
/* ══════════════════════════════════════
|
|
|
CSS 变量
|
|
|
══════════════════════════════════════ */
|