auth.vue 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. <template>
  2. <view class="auth-container">
  3. <!-- 顶部提示 -->
  4. <view class="top-tip">请确保身份信息的准确,以免影响后续履约费用结算。</view>
  5. <!-- 表单信息 -->
  6. <view class="form-card">
  7. <!-- 证件类型 -->
  8. <view class="form-item">
  9. <text class="label">证件类型</text>
  10. <view class="read-only-text">居民身份证</view>
  11. </view>
  12. <!-- 真实姓名 -->
  13. <view class="form-item">
  14. <text class="label">真实姓名</text>
  15. <view class="gray-input-box">
  16. <input class="input-area" type="text" v-model="formData.name" placeholder="证件姓名" placeholder-class="input-placeholder" />
  17. </view>
  18. </view>
  19. <!-- 证件号码 -->
  20. <view class="form-item">
  21. <text class="label">证件号码</text>
  22. <view class="gray-input-box">
  23. <input class="input-area" type="idcard" v-model="formData.idNumber" placeholder="身份证号" placeholder-class="input-placeholder" />
  24. </view>
  25. </view>
  26. <!-- 有效日期 -->
  27. <view class="form-item">
  28. <text class="label">有效日期</text>
  29. <view class="gray-input-box" @click="openPicker">
  30. <text class="input-area" :class="{'input-placeholder': !formData.expiryDate}">
  31. {{ formData.expiryDate || '选择有效结束期限' }}
  32. </text>
  33. <!-- 箭头SVG -->
  34. <svg class="arrow-right" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg">
  35. <path d="M340.864 149.312a30.592 30.592 0 0 0 0 42.752L652.736 512 340.864 831.872a30.592 30.592 0 0 0 0 42.752 29.12 29.12 0 0 0 41.728 0L714.24 534.336a32 32 0 0 0 0-45.056L382.592 149.312a29.12 29.12 0 0 0-41.728 0z" fill="#CCCCCC"></path>
  36. </svg>
  37. </view>
  38. </view>
  39. </view>
  40. <!-- 身份证正面 -->
  41. <view class="upload-card">
  42. <view class="upload-box" @click="chooseImage('front')">
  43. <image v-if="idCardFront" :src="idCardFront" class="preview-img" mode="aspectFill"></image>
  44. <template v-else>
  45. <!-- 相机图标SVG -->
  46. <svg class="camera-icon" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
  47. <path d="M12 12C14.7614 12 17 9.76142 17 7C17 4.23858 14.7614 2 12 2C9.23858 2 7 4.23858 7 7C7 9.76142 9.23858 12 12 12Z" fill="#E0E0E0"/>
  48. <circle cx="12" cy="12" r="3" stroke="#CCCCCC" stroke-width="2"/>
  49. <path d="M20 6H17.82L16.4 4.47C15.96 4 15.34 3.73 14.68 3.73H9.32C8.66 3.73 8.04 4 7.6 4.47L6.18 6H4C2.9 6 2 6.9 2 8V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V8C22 6.9 21.1 6 20 6ZM12 17C9.24 17 7 14.76 7 12C7 9.24 9.24 7 12 7C14.76 7 17 9.24 17 12C17 14.76 14.76 17 12 17Z" fill="#CCCCCC"/>
  50. </svg>
  51. <text class="upload-text">点击上传</text>
  52. </template>
  53. </view>
  54. <text class="card-label">证件带照片面</text>
  55. </view>
  56. <!-- 身份证反面 -->
  57. <view class="upload-card">
  58. <view class="upload-box" @click="chooseImage('back')">
  59. <image v-if="idCardBack" :src="idCardBack" class="preview-img" mode="aspectFill"></image>
  60. <template v-else>
  61. <!-- 相机图标SVG -->
  62. <svg class="camera-icon" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
  63. <path d="M20 6H17.82L16.4 4.47C15.96 4 15.34 3.73 14.68 3.73H9.32C8.66 3.73 8.04 4 7.6 4.47L6.18 6H4C2.9 6 2 6.9 2 8V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V8C22 6.9 21.1 6 20 6ZM12 17C9.24 17 7 14.76 7 12C7 9.24 9.24 7 12 7C14.76 7 17 9.24 17 12C17 14.76 14.76 17 12 17Z" fill="#CCCCCC"/>
  64. </svg>
  65. <text class="upload-text">点击上传</text>
  66. </template>
  67. </view>
  68. <text class="card-label">证件国徽面</text>
  69. </view>
  70. <!-- 底部按钮 -->
  71. <view class="footer-btn-area">
  72. <button class="next-btn" @click="goToQualifications">下一步,完善资质</button>
  73. </view>
  74. <!-- 自定义日期选择器 -->
  75. <view class="picker-mask" :class="{show: showPicker}" @click="closePicker">
  76. <view class="picker-content" @click.stop>
  77. <view class="picker-header">
  78. <text class="picker-btn-cancel" @click="closePicker">取消</text>
  79. <text class="picker-title">选择有效结束期限</text>
  80. <text class="picker-btn-confirm" @click="confirmPicker">确定</text>
  81. </view>
  82. <picker-view
  83. class="picker-view"
  84. indicator-style="height: 50px;"
  85. :value="pickerValue"
  86. @change="onPickerChange"
  87. >
  88. <picker-view-column>
  89. <view class="picker-item" v-for="(item,index) in years" :key="index">{{item}}年</view>
  90. </picker-view-column>
  91. <picker-view-column>
  92. <view class="picker-item" v-for="(item,index) in months" :key="index">{{item}}月</view>
  93. </picker-view-column>
  94. <picker-view-column>
  95. <view class="picker-item" v-for="(item,index) in days" :key="index">{{item}}日</view>
  96. </picker-view-column>
  97. </picker-view>
  98. </view>
  99. </view>
  100. </view>
  101. </template>
  102. <script>
  103. import logic from './auth_logic.js'; // 注意文件名可能需要对应
  104. export default logic;
  105. </script>
  106. <style>
  107. @import './auth.css';
  108. </style>