| <template> | 
|   <a-form | 
|     ref="formRef" | 
|     :model="formData" | 
|     class="form" | 
|     :label-col-props="{ span: 6 }" | 
|     :wrapper-col-props="{ span: 18 }" | 
|   > | 
|     <a-form-item | 
|       field="activityName" | 
|       :label="$t('stepForm.form.label.activityName')" | 
|       :rules="[ | 
|         { | 
|           required: true, | 
|           message: $t('stepForm.form.error.activityName.required'), | 
|         }, | 
|         { | 
|           match: /^[a-zA-Z0-9\u4e00-\u9fa5]{1,20}$/, | 
|           message: $t('stepForm.form.error.activityName.pattern'), | 
|         }, | 
|       ]" | 
|     > | 
|       <a-input | 
|         v-model="formData.activityName" | 
|         :placeholder="$t('stepForm.placeholder.activityName')" | 
|       /> | 
|     </a-form-item> | 
|     <a-form-item | 
|       field="channelType" | 
|       :label="$t('stepForm.form.label.channelType')" | 
|       :rules="[ | 
|         { | 
|           required: true, | 
|           message: $t('stepForm.form.error.channelType.required'), | 
|         }, | 
|       ]" | 
|     > | 
|       <a-select | 
|         v-model="formData.channelType" | 
|         :placeholder="$t('stepForm.placeholder.channelType')" | 
|       > | 
|         <a-option>APP通用渠道</a-option> | 
|       </a-select> | 
|     </a-form-item> | 
|     <a-form-item | 
|       field="promotionTime" | 
|       :label="$t('stepForm.form.label.promotionTime')" | 
|       :rules="[ | 
|         { | 
|           required: true, | 
|           message: $t('stepForm.form.error.promotionTime.required'), | 
|         }, | 
|       ]" | 
|     > | 
|       <a-range-picker v-model="formData.promotionTime" /> | 
|     </a-form-item> | 
|     <a-form-item | 
|       field="promoteLink" | 
|       :label="$t('stepForm.form.label.promoteLink')" | 
|       :rules="[ | 
|         { | 
|           required: true, | 
|           message: $t('stepForm.form.error.promoteLink.required'), | 
|         }, | 
|         { | 
|           type: 'url', | 
|           message: $t('stepForm.form.error.promoteLink.pattern'), | 
|         }, | 
|       ]" | 
|       row-class="keep-margin" | 
|     > | 
|       <a-input | 
|         v-model="formData.promoteLink" | 
|         :placeholder="$t('stepForm.placeholder.promoteLink')" | 
|       /> | 
|       <template #help> | 
|         <span>{{ $t('stepForm.form.tip.promoteLink') }}</span> | 
|       </template> | 
|     </a-form-item> | 
|     <a-form-item> | 
|       <a-button type="primary" @click="onNextClick"> | 
|         {{ $t('stepForm.button.next') }} | 
|       </a-button> | 
|     </a-form-item> | 
|   </a-form> | 
| </template> | 
|   | 
| <script lang="ts" setup> | 
|   import { ref } from 'vue'; | 
|   import { FormInstance } from '@arco-design/web-vue/es/form'; | 
|   import { BaseInfoModel } from '@/api/form'; | 
|   | 
|   const emits = defineEmits(['changeStep']); | 
|   const formRef = ref<FormInstance>(); | 
|   const formData = ref<BaseInfoModel>({ | 
|     activityName: '', | 
|     channelType: '', | 
|     promotionTime: [], | 
|     promoteLink: 'https://arco.design', | 
|   }); | 
|   | 
|   const onNextClick = async () => { | 
|     const res = await formRef.value?.validate(); | 
|     if (!res) { | 
|       emits('changeStep', 'forward', { ...formData.value }); | 
|     } | 
|   }; | 
| </script> | 
|   | 
| <style scoped lang="less"> | 
|   .container { | 
|     padding: 20px; | 
|     .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: 500px; | 
|   } | 
|   | 
|   .form-content { | 
|     padding: 8px 50px 0 30px; | 
|   } | 
| </style> |