<template>
|
<a-form
|
ref="formRef"
|
:model="formData"
|
class="form"
|
:label-col-props="{ span: 6 }"
|
:wrapper-col-props="{ span: 18 }"
|
>
|
<a-form-item
|
field="advertisingSource"
|
:label="$t('stepForm.form.label.advertisingSource')"
|
:rules="[
|
{
|
required: true,
|
message: $t('stepForm.form.error.advertisingSource.required'),
|
},
|
]"
|
>
|
<a-input
|
v-model="formData.advertisingSource"
|
:placeholder="$t('stepForm.placeholder.advertisingSource')"
|
/>
|
</a-form-item>
|
<a-form-item
|
field="advertisingMedia"
|
:label="$t('stepForm.form.label.advertisingMedia')"
|
:rules="[
|
{
|
required: true,
|
message: $t('stepForm.form.error.advertisingMedia.required'),
|
},
|
]"
|
>
|
<a-input
|
v-model="formData.advertisingMedia"
|
:placeholder="$t('stepForm.placeholder.advertisingMedia')"
|
/>
|
</a-form-item>
|
<a-form-item
|
field="keyword"
|
:label="$t('stepForm.form.label.keyword')"
|
:rules="[
|
{ required: true, message: $t('stepForm.form.error.keyword.required') },
|
]"
|
>
|
<a-select
|
v-model="formData.keyword"
|
:placeholder="$t('stepForm.placeholder.keyword')"
|
multiple
|
>
|
<a-option>今日头条</a-option>
|
<a-option>火山</a-option>
|
</a-select>
|
</a-form-item>
|
<a-form-item
|
field="pushNotify"
|
:label="$t('stepForm.form.label.pushNotify')"
|
:rules="[{ required: true }]"
|
>
|
<a-switch v-model="formData.pushNotify" />
|
</a-form-item>
|
<a-form-item
|
field="advertisingContent"
|
:label="$t('stepForm.form.label.advertisingContent')"
|
:rules="[
|
{
|
required: true,
|
message: $t('stepForm.form.error.advertisingContent.required'),
|
},
|
{
|
maxLength: 200,
|
message: $t('stepForm.form.error.advertisingContent.maxLength'),
|
},
|
]"
|
row-class="keep-margin"
|
>
|
<a-textarea
|
v-model="formData.advertisingContent"
|
:placeholder="$t('stepForm.placeholder.advertisingContent')"
|
/>
|
</a-form-item>
|
<a-form-item>
|
<!-- <a-button type="primary" @click="onNextClick">
|
{{ $t('stepForm.button.next') }}
|
</a-button> -->
|
<a-space>
|
<a-button type="secondary" @click="goPrev">
|
{{ $t('stepForm.button.prev') }}
|
</a-button>
|
<a-button type="primary" @click="onNextClick">
|
{{ $t('stepForm.button.next') }}
|
</a-button>
|
</a-space>
|
</a-form-item>
|
</a-form>
|
</template>
|
|
<script lang="ts" setup>
|
import { ref } from 'vue';
|
import { FormInstance } from '@arco-design/web-vue/es/form';
|
import { ChannelInfoModel } from '@/api/form';
|
|
const emits = defineEmits(['changeStep']);
|
|
const formRef = ref<FormInstance>();
|
const formData = ref<ChannelInfoModel>({
|
advertisingSource: '',
|
advertisingMedia: '',
|
keyword: [],
|
pushNotify: true,
|
advertisingContent: '',
|
});
|
|
const onNextClick = async () => {
|
const res = await formRef.value?.validate();
|
if (!res) {
|
emits('changeStep', 'submit', { ...formData.value });
|
}
|
};
|
const goPrev = () => {
|
emits('changeStep', 'backward');
|
};
|
</script>
|
|
<style scoped lang="less">
|
.container {
|
.keep-margin {
|
margin-bottom: 20px;
|
}
|
}
|
|
.wrapper {
|
display: flex;
|
flex-direction: column;
|
align-items: center;
|
padding: 64px 0;
|
background-color: var(--color-bg-2);
|
}
|
|
.steps {
|
margin-bottom: 36px;
|
}
|
|
.form {
|
width: 540px;
|
}
|
|
.form-content {
|
padding: 8px 50px 0 30px;
|
}
|
</style>
|