ApplicantInfoForm.vue 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. <template>
  2. <view class="">
  3. <u--form labelPosition="left" :model="policyHolderInfo" :rules="policyRules" ref="policyForm" labelWidth="80"
  4. errorType="message">
  5. <u-form-item label="姓名" prop="name" borderBottom>
  6. <u-input v-model="policyHolderInfo.name" border="none" clearable placeholder="请输入姓名"
  7. placeholderStyle="text-align:right;"></u-input>
  8. </u-form-item>
  9. <u-form-item label="证件类型" borderBottom @click="identifyTypeShow=true">
  10. <u-input v-model="policyHolderInfos.identifyType" border="none" clearable placeholder=""
  11. placeholderStyle="text-align:right;" suffixIcon='arrow-down'
  12. suffixIconStyle="color:#333;font-size:30rpx" style="pointer-events: none"></u-input>
  13. </u-form-item>
  14. <u-form-item label="证件号" prop="identifyNumber" borderBottom>
  15. <u-input v-model="policyHolderInfo.identifyNumber" border="none" clearable placeholder="请输入证件号"
  16. placeholderStyle="text-align:right;"></u-input>
  17. </u-form-item>
  18. <u-form-item label="手机号" prop="mobile" borderBottom>
  19. <u-input v-model="policyHolderInfo.mobile" border="none" clearable placeholder="请输入手机号" maxlength="11"
  20. placeholderStyle="text-align:right;"></u-input>
  21. </u-form-item>
  22. <u-form-item label="地址" prop="addr" borderBottom>
  23. <u--textarea v-model="policyHolderInfo.addr" border="none" placeholder="请输入地址" autoHeight></u--textarea>
  24. </u-form-item>
  25. <u-form-item label="证件起期" prop="identifyValidDate" borderBottom @click="identifyValidDateShow = true; ">
  26. <u--input v-model="policyHolderInfo.identifyValidDate" disabled disabledColor="#ffffff" clearable
  27. suffixIcon='calendar' suffixIconStyle="color:#333;font-size:40rpx" placeholder="请选择证件起期 "
  28. placeholderStyle="text-align:right;" border="none" style="pointer-events: none"></u--input>
  29. </u-form-item>
  30. <u-form-item label="证件止期" prop="identifyValidEndDate" @click="identifyValidEndDateShow = true; ">
  31. <u--input v-model="policyHolderInfo.identifyValidEndDate" disabled disabledColor="#ffffff" clearable
  32. suffixIcon='calendar' suffixIconStyle="color:#333;font-size:40rpx;margin-right:20px"
  33. placeholder="请选择证件止期 " placeholderStyle="text-align:right;" border="none"
  34. style="pointer-events: none">
  35. </u--input>
  36. <u-checkbox-group v-model="ownerlongTerm" iconPlacement="right" @change="ownerlongTermChange">
  37. <u-checkbox activeColor="#FDE935" iconColor="#333" labelSize="15px" shape="circle" label="长期有效"
  38. name="长期有效"></u-checkbox>
  39. </u-checkbox-group>
  40. </u-form-item>
  41. </u--form>
  42. <u-picker :show="identifyTypeShow" :columns="identifyTypelist" keyName="label" @cancel="identifyTypeShow=false"
  43. @confirm="identifyTypeConfirm($event,'identifyType','identifyTypeShow')" @close="identifyTypeShow=false"
  44. :closeOnClickOverlay="true"></u-picker>
  45. <u-datetime-picker :show="identifyValidDateShow" v-model="identifyValidDatevalue" mode="date"
  46. :formatter="formatter" @cancel="identifyValidDateShow=false" @close="identifyValidDateShow=false"
  47. :closeOnClickOverlay="true" @confirm="identifyValidDateconfirm" confirmText="确定"></u-datetime-picker>
  48. <u-datetime-picker :show="identifyValidEndDateShow" mode="date" v-model="identifyValidEndDatevalue"
  49. :formatter="formatter" @cancel="identifyValidEndDateShow=false" @confirm="identifyValidEndDateconfirm"
  50. :closeOnClickOverlay="true" @close="identifyValidEndDateShow=false" confirmText="确定"></u-datetime-picker>
  51. </view>
  52. </template>
  53. <script>
  54. export default {
  55. props: {
  56. policyHolderInfo: Object,
  57. policyHolderInfos: Object,
  58. },
  59. data() {
  60. return {
  61. identifyValidDatevalue: Number(new Date()), //证件起期
  62. identifyValidEndDatevalue: Number(new Date()), //证件止期
  63. identifyTypeShow: false, //证件类型
  64. identifyValidDateShow: false, //证件起期
  65. identifyValidEndDateShow: false, //证件止期
  66. ownerlongTerm: [], //车主长期
  67. identifyTypelist: [
  68. [{
  69. label: "身份证",
  70. value: "01",
  71. },
  72. {
  73. label: "统一社会信用代码",
  74. value: "10",
  75. }
  76. ]
  77. ],
  78. policyRules: {
  79. name: [{
  80. required: true,
  81. message: '请输入车主姓名',
  82. trigger: ['blur', 'change'],
  83. },
  84. {
  85. minLength: 2,
  86. maxLength: 5,
  87. message: '车主姓名长度在 {minLength} 到 {maxLength} 个字符',
  88. },
  89. {
  90. pattern: /^([\u4e00-\u9fa5]{1,6}|[a-zA-Z\.\s]{1,6})$/,
  91. message: '请输入正确的车主姓名',
  92. }
  93. ],
  94. identifyNumber: [{
  95. required: true,
  96. message: '请输入车主证件号',
  97. trigger: ['blur', 'change'],
  98. },
  99. {
  100. pattern: /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/,
  101. message: '请输入正确的车主证件号',
  102. }
  103. ],
  104. mobile: [{
  105. required: true,
  106. message: '请输入车主手机号',
  107. trigger: ['blur', 'change'],
  108. },
  109. {
  110. pattern: /^1[3-9]\d{9}$/,
  111. message: '请输入正确的手机号',
  112. }
  113. ],
  114. addr: [{
  115. required: true,
  116. message: '请输入车主地址',
  117. trigger: ['blur', 'change'],
  118. },
  119. {
  120. minLength: 8,
  121. maxLength: 40,
  122. message: '车主地址长度在 {minLength} 到 {maxLength} 个字符',
  123. },
  124. ],
  125. identifyValidDate: [{
  126. required: true,
  127. message: '请选择身份证起期',
  128. trigger: ['blur', 'change'],
  129. }, {
  130. pattern: /^\d{4}-\d{2}-\d{2}$/,
  131. message: '身份证起期格式错误',
  132. }],
  133. identifyValidEndDate: [{
  134. required: true,
  135. message: '请选择身份证止期',
  136. trigger: ['blur', 'change'],
  137. }, {
  138. pattern: /^\d{4}-\d{2}-\d{2}$/,
  139. message: '身份证止期格式错误',
  140. }]
  141. },
  142. }
  143. },
  144. methods: {
  145. identifyTypeConfirm(value, name, showName) {
  146. this.policyHolderInfo[name] = value.value[0].value;
  147. this.policyHolderInfos[name] = value.value[0].label;
  148. this[showName] = false;
  149. },
  150. ownerlongTermChange(e) {
  151. if (e.length) {
  152. this.policyHolderInfo.identifyValidEndDate = '9999-12-31';
  153. } else {
  154. this.policyHolderInfo.identifyValidEndDate = '';
  155. }
  156. },
  157. identifyValidDateconfirm(e) {
  158. this.policyHolderInfo.identifyValidDate = uni.$u.timeFormat(e.value, 'yyyy-mm-dd');
  159. this.identifyValidDateShow = false;
  160. },
  161. identifyValidEndDateconfirm(e) {
  162. this.policyHolderInfo.identifyValidEndDate = uni.$u.timeFormat(e.value, 'yyyy-mm-dd');
  163. this.identifyValidEndDateShow = false;
  164. },
  165. formatter(type, value) {
  166. if (type === 'year') {
  167. return `${value}年`
  168. }
  169. if (type === 'month') {
  170. return `${value}月`
  171. }
  172. if (type === 'day') {
  173. return `${value}日`
  174. }
  175. return value
  176. },
  177. validate(callback) {
  178. this.$refs.policyForm.setRules(this.policyRules)
  179. this.$refs.policyForm.validate().then(res => {
  180. callback(res)
  181. }).catch(errors => {
  182. callback(errors)
  183. })
  184. }
  185. },
  186. }
  187. </script>
  188. <style scoped lang="scss">
  189. ::v-deep {
  190. .u-textarea {
  191. text-align: right;
  192. padding: 0;
  193. color: #303133;
  194. }
  195. .uni-textarea-placeholder {
  196. color: grey !important;
  197. text-align: right;
  198. }
  199. }
  200. /* 添加样式 */
  201. .search {
  202. width: 112rpx;
  203. height: 60rpx;
  204. background: #FDE935;
  205. border-radius: 100rpx 100rpx 100rpx 100rpx;
  206. }
  207. </style>