SchemeB.vue 3.54 KB
<template>
  <PlanPopup title="保险计划书申请" @close="close" @submit="submit">
    <!-- 币种 -->
    <div class="flex justify-between items-start mb-5">
      <span class="text-sm text-gray-600 mt-1.5">币种</span>
      <div class="bg-blue-50 rounded-md px-3 py-1.5">
        <span class="text-sm text-blue-600">美元保单</span>
      </div>
    </div>

    <!-- 计划 -->
    <div class="flex justify-between items-start mb-5">
      <span class="text-sm text-gray-600 mt-1.5">计划</span>
      <div class="bg-blue-50 rounded-md px-3 py-1.5">
        <span class="text-sm text-blue-600">基础情景</span>
      </div>
    </div>

    <!-- 附加计划 -->
    <div class="mb-5">
      <span class="text-base text-gray-900">附加计划</span>
    </div>

    <!-- 性别 -->
    <div class="text-sm text-gray-600 mb-2">性别</div>
    <nut-radio-group v-model="form.gender" direction="horizontal" class="mb-4">
      <nut-radio label="female" class="mr-8">女</nut-radio>
      <nut-radio label="male">男</nut-radio>
    </nut-radio-group>

    <!-- 年龄 -->
    <div class="text-sm text-gray-600 mb-2">年龄</div>
    <div class="border border-gray-200 rounded-lg mb-4 overflow-hidden">
      <nut-input
        v-model="form.age"
        type="digit"
        placeholder="请输入年龄"
        class="!p-0 !bg-transparent !text-sm !text-gray-900"
        :border="false"
      />
    </div>

    <!-- 保险期间 -->
    <div class="flex justify-between items-start mb-5">
      <span class="text-sm text-gray-600 mt-1.5">保险期间</span>
      <div class="bg-blue-50 rounded-md px-3 py-1.5">
        <span class="text-sm text-blue-600">终身</span>
      </div>
    </div>

    <!-- 交费期间 -->
    <div class="text-sm text-gray-600 mb-3">交费期间</div>
    <nut-radio-group v-model="form.paymentPeriod" direction="horizontal" class="mb-4">
      <nut-radio
        v-for="period in paymentPeriods"
        :key="period"
        :label="period"
        class="mr-6"
      >
        {{ period }}
      </nut-radio>
    </nut-radio-group>

    <!-- 年交保费 -->
    <div class="text-sm text-gray-600 mb-2">年交保费</div>
    <div class="border border-gray-200 rounded-lg mb-4 flex items-center overflow-hidden">
      <nut-input
        v-model="form.premium"
        type="digit"
        placeholder="请输入保费"
        class="!p-0 !bg-transparent flex-1 !text-sm !text-gray-900"
        :border="false"
      />
      <span class="text-sm text-gray-500 shrink-0 ml-2 mr-5">美元</span>
    </div>
  </PlanPopup>
</template>

<script setup>
/**
 * @description 录入计划书 - 方案B 内容组件
 * @description 使用 PlanPopup 容器组件提供统一的布局和按钮
 *
 * @emits close - 关闭弹窗事件
 * @emits submit - 提交事件,携带表单数据
 */
import { reactive } from 'vue'
import PlanPopup from './PlanPopup.vue'

const emit = defineEmits(['close', 'submit'])

/**
 * 表单数据
 */
const form = reactive({
  currency: '美元保单',
  plan: '基础情景',
  gender: 'female',
  age: '30',
  insurancePeriod: '终身',
  paymentPeriod: '10年交',
  premium: '100000'
})

/**
 * 交费期间选项
 */
const paymentPeriods = ['10年交', '3年交', '5年交', '2年交']

/**
 * 关闭弹窗
 */
const close = () => {
  emit('close')
}

/**
 * 提交表单
 */
const submit = () => {
  console.log('SchemeB Submit:', form)
  emit('submit', form)
}
</script>

<style lang="less" scoped>
/* Override NutUI input styles to match design */
:deep(.nut-input) {
  padding: 0;
  background: transparent;
  border-radius: inherit;
}
</style>