OwnerInfoForm.vue 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312
  1. <template>
  2. <view class="">
  3. <u--form labelPosition="left" :model="ownerInfo" :rules="ownerRules" ref="ownerForm" labelWidth="80"
  4. errorType="message">
  5. <u-form-item label="姓名" prop="name" borderBottom>
  6. <u-input v-model="ownerInfo.name" border="none" clearable placeholder="请输入姓名"
  7. placeholderStyle="text-align:right;"></u-input>
  8. </u-form-item>
  9. <u-form-item label="车主类型" borderBottom @click="propertyShow=true">
  10. <u-input v-model="ownerInfos.property" 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="证件类型" borderBottom>
  15. <u-input v-model="ownerInfos.identifyType" border="none" clearable placeholder=""
  16. placeholderStyle="text-align:right;" suffixIcon='arrow-down'
  17. suffixIconStyle="color:#333;font-size:30rpx" style="pointer-events: none"></u-input>
  18. </u-form-item>
  19. <u-form-item v-if="ownerInfo.property==1" label="证件号" prop="identifyNumber" borderBottom>
  20. <u-input v-model="ownerInfo.identifyNumber" border="none" maxlength="18" clearable placeholder="请输入证件号"
  21. placeholderStyle="text-align:right;"></u-input>
  22. </u-form-item>
  23. <u-form-item v-if="ownerInfo.property==2" label="社会信用代码" prop="organizationCode" borderBottom
  24. labelWidth="120">
  25. <u-input v-model="ownerInfo.organizationCode" border="none" clearable maxlength="18"
  26. placeholder="请输入统一社会信用代码" placeholderStyle="text-align:right;"></u-input>
  27. </u-form-item>
  28. <u-form-item v-if="ownerInfo.property==2" label="注册资金" borderBottom>
  29. <u--input v-model="ownerInfo.registeredCapital" border="none" clearable placeholder="请输入注册资金"
  30. placeholderStyle="text-align:right;">
  31. </u--input>
  32. <view class="suffixClass">
  33. 万元
  34. </view>
  35. </u-form-item>
  36. <u-form-item label="手机号" prop="mobile" borderBottom>
  37. <u-input v-model="ownerInfo.mobile" border="none" clearable placeholder="请输入手机号" maxlength="11"
  38. placeholderStyle="text-align:right;"></u-input>
  39. </u-form-item>
  40. <u-form-item v-if="ownerInfo.property==2" label="车主座机" borderBottom>
  41. <u-input v-model="ownerInfo.tel" border="none" clearable placeholder="请输入车主座机"
  42. placeholderStyle="text-align:right;"></u-input>
  43. </u-form-item>
  44. <u-form-item v-if="ownerInfo.property==2" label="车主联系人" borderBottom>
  45. <u-input v-model="ownerInfo.legalPerson" border="none" clearable placeholder="请输入车主联系人"
  46. placeholderStyle="text-align:right;"></u-input>
  47. </u-form-item>
  48. <u-form-item v-if="ownerInfo.property==2" label="联系人证件号码" borderBottom labelWidth="120">
  49. <u-input v-model="ownerInfo.leaderIdentifyNumber" border="none" clearable placeholder="请输入联系人证件号码"
  50. placeholderStyle="text-align:right;"></u-input>
  51. </u-form-item>
  52. <u-form-item label="联系人有效期止期" v-if="ownerInfo.property==2" prop="leaderOtherEffectiveDate" borderBottom
  53. labelWidth="150" @click="leaderOtherEffectiveDateShow = true; ">
  54. <u--input v-model="ownerInfo.leaderOtherEffectiveDate" disabled disabledColor="#ffffff" clearable
  55. suffixIcon='calendar' suffixIconStyle="color:#333;font-size:40rpx" placeholder="选择有效期止期"
  56. placeholderStyle="text-align:right;" border="none" style="pointer-events: none"></u--input>
  57. </u-form-item>
  58. <u-form-item label="省市区" v-if="ownerInfo.property==2" borderBottom @click="addressPickershow=true">
  59. <u-input v-model="ownerInfos.fullAddress" border="none" clearable placeholder="请选择省市区"
  60. placeholderStyle="text-align:right;" suffixIcon='arrow-down'
  61. suffixIconStyle="color:#333;font-size:30rpx" style="pointer-events: none"></u-input>
  62. </u-form-item>
  63. <u-form-item label="地址" prop="addr" borderBottom>
  64. <u--textarea v-model="ownerInfo.addr" border="none" placeholder="请输入地址" autoHeight></u--textarea>
  65. </u-form-item>
  66. <u-form-item label="证件起期" prop="identifyValidDate" borderBottom @click="identifyValidDateShow = true; ">
  67. <u--input v-model="ownerInfo.identifyValidDate" disabled disabledColor="#ffffff" clearable
  68. suffixIcon='calendar' suffixIconStyle="color:#333;font-size:40rpx" placeholder="请选择证件起期"
  69. placeholderStyle="text-align:right;" border="none" style="pointer-events: none"></u--input>
  70. </u-form-item>
  71. <u-form-item label="证件止期" prop="identifyValidEndDate" @click="identifyValidEndDateShow = true; ">
  72. <u--input v-model="ownerInfo.identifyValidEndDate" disabled disabledColor="#ffffff" clearable
  73. suffixIcon='calendar' suffixIconStyle="color:#333;font-size:40rpx;margin-right:20px"
  74. placeholder="请选择证件止期 " placeholderStyle="text-align:right;" border="none"
  75. style="pointer-events: none">
  76. </u--input>
  77. <u-checkbox-group v-model="ownerlongTerm" iconPlacement="right" @change="ownerlongTermChange">
  78. <u-checkbox activeColor="#FDE935" iconColor="#333" labelSize="15px" shape="circle" label="长期有效"
  79. name="长期有效"></u-checkbox>
  80. </u-checkbox-group>
  81. </u-form-item>
  82. </u--form>
  83. <!-- 车主类型 -->
  84. <u-picker :show="propertyShow" :columns="propertylist" keyName="label" @cancel="propertyShow=false"
  85. @confirm="propertyConfirm($event,'property','propertyShow')" @close="propertyShow=false"
  86. :closeOnClickOverlay="true"></u-picker>
  87. <!-- 身份证起期 -->
  88. <u-datetime-picker :show="identifyValidDateShow" v-model="identifyValidDatevalue" mode="date"
  89. :formatter="formatter" @cancel="identifyValidDateShow=false" @close="identifyValidDateShow=false"
  90. :closeOnClickOverlay="true" @confirm="identifyValidDateconfirm" confirmText="确定"></u-datetime-picker>
  91. <!-- 身份证止期 -->
  92. <u-datetime-picker :show="identifyValidEndDateShow" mode="date" v-model="identifyValidEndDatevalue"
  93. :formatter="formatter" @cancel="identifyValidEndDateShow=false" @confirm="identifyValidEndDateconfirm"
  94. :closeOnClickOverlay="true" @close="identifyValidEndDateShow=false" confirmText="确定"></u-datetime-picker>
  95. <!-- 有效期止期 -->
  96. <u-datetime-picker :show="leaderOtherEffectiveDateShow" v-model="leaderOtherEffectiveDatevalue" mode="date"
  97. :formatter="formatter" @cancel="leaderOtherEffectiveDateShow=false"
  98. @close="leaderOtherEffectiveDateShow=false" :closeOnClickOverlay="true"
  99. @confirm="leaderOtherEffectiveDateconfirm" confirmText="确定"></u-datetime-picker>
  100. <!-- 省市区组件 -->
  101. <uni-areaCascadePicker :show="addressPickershow" @confirm="addressConfirm" @close="addressPickershow=false"
  102. @cancel="addressPickershow=false"></uni-areaCascadePicker>
  103. </view>
  104. </template>
  105. <script>
  106. var dateTime = new Date();
  107. let Year = dateTime.getFullYear();
  108. let Month = Number(dateTime.getMonth() + 1);
  109. export default {
  110. props: {
  111. ownerInfo: Object,
  112. ownerInfos: Object,
  113. carInfo: Object, //车辆信息
  114. },
  115. data() {
  116. return {
  117. propertyShow: false,
  118. leaderOtherEffectiveDatevalue: Number(new Date()),
  119. identifyValidDatevalue: Number(new Date()), //证件起期
  120. identifyValidEndDatevalue: Number(new Date()), //证件止期
  121. identifyValidDateShow: false, //证件起期
  122. identifyValidEndDateShow: false, //证件止期
  123. leaderOtherEffectiveDateShow: false, //有效期止期
  124. addressPickershow: false, //省市区
  125. ownerlongTerm: [], //车主长期
  126. propertylist: [
  127. [{
  128. label: "个人",
  129. value: "1",
  130. }, {
  131. label: "法人",
  132. value: "2",
  133. }]
  134. ],
  135. ownerRules: {
  136. name: [{
  137. required: true,
  138. message: '请输入车主姓名',
  139. trigger: ['blur', 'change'],
  140. },
  141. {
  142. minLength: 2,
  143. maxLength: 5,
  144. message: '车主姓名长度在 {minLength} 到 {maxLength} 个字符',
  145. },
  146. {
  147. pattern: /^([\u4e00-\u9fa5]{1,6}|[a-zA-Z\.\s]{1,6})$/,
  148. message: '请输入正确的车主姓名',
  149. }
  150. ],
  151. organizationCode: [{
  152. required: true,
  153. message: '请输入统一社会信用代码',
  154. trigger: ['blur', 'change'],
  155. }],
  156. identifyNumber: [{
  157. required: true,
  158. message: '请输入车主证件号',
  159. trigger: ['blur', 'change'],
  160. },
  161. {
  162. 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]$/,
  163. message: '请输入正确的车主证件号',
  164. }
  165. ],
  166. mobile: [{
  167. required: true,
  168. message: '请输入车主手机号',
  169. trigger: ['blur', 'change'],
  170. },
  171. {
  172. pattern: /^1[3-9]\d{9}$/,
  173. message: '请输入正确的手机号',
  174. }
  175. ],
  176. addr: [{
  177. required: true,
  178. message: '请输入车主地址',
  179. trigger: ['blur', 'change'],
  180. },
  181. {
  182. minLength: 8,
  183. maxLength: 40,
  184. message: '车主地址长度在 {minLength} 到 {maxLength} 个字符',
  185. },
  186. ],
  187. identifyValidDate: [{
  188. required: true,
  189. message: '请选择身份证起期',
  190. trigger: ['blur', 'change'],
  191. }, {
  192. pattern: /^\d{4}-\d{2}-\d{2}$/,
  193. message: '身份证起期格式错误',
  194. }],
  195. identifyValidEndDate: [{
  196. required: true,
  197. message: '请选择身份证止期',
  198. trigger: ['blur', 'change'],
  199. }, {
  200. pattern: /^\d{4}-\d{2}-\d{2}$/,
  201. message: '身份证止期格式错误',
  202. }]
  203. },
  204. }
  205. },
  206. watch: {
  207. },
  208. methods: {
  209. addressConfirm(value) {
  210. if (value) {
  211. this.ownerInfos.fullAddress = value.fullAddress;
  212. this.ownerInfo.provinceCode = value.codes[0];
  213. this.ownerInfo.cityCode = value.codes[1];
  214. this.ownerInfo.countyCode = value.codes[2];
  215. }
  216. this.addressPickershow = false;
  217. },
  218. ownerlongTermChange(e) {
  219. if (e.length) {
  220. this.ownerInfo.identifyValidEndDate = '9999-12-31';
  221. } else {
  222. this.ownerInfo.identifyValidEndDate = '';
  223. }
  224. },
  225. propertyConfirm(value, name, showName) {
  226. this.ownerInfo[name] = value.value[0].value;
  227. this.ownerInfos[name] = value.value[0].label;
  228. this[showName] = false;
  229. if (value.value[0].value == '1') { //个人
  230. this.ownerInfos.identifyType = "身份证";
  231. this.ownerInfo.identifyType = "01";
  232. } else {
  233. this.ownerInfos.identifyType = "营业执照";
  234. this.ownerInfo.identifyType = "10";
  235. }
  236. },
  237. identifyValidDateconfirm(e) {
  238. this.ownerInfo.identifyValidDate = uni.$u.timeFormat(e.value, 'yyyy-mm-dd');
  239. this.identifyValidDateShow = false;
  240. },
  241. identifyValidEndDateconfirm(e) {
  242. this.ownerInfo.identifyValidEndDate = uni.$u.timeFormat(e.value, 'yyyy-mm-dd');
  243. this.identifyValidEndDateShow = false;
  244. },
  245. leaderOtherEffectiveDateconfirm(e) {
  246. this.ownerInfo.leaderOtherEffectiveDate = uni.$u.timeFormat(e.value, 'yyyy-mm-dd');
  247. this.leaderOtherEffectiveDateShow = false;
  248. },
  249. formatter(type, value) {
  250. if (type === 'year') {
  251. return `${value}年`
  252. }
  253. if (type === 'month') {
  254. return `${value}月`
  255. }
  256. if (type === 'day') {
  257. return `${value}日`
  258. }
  259. return value
  260. },
  261. validate(callback) {
  262. this.$refs.ownerForm.setRules(this.ownerRules)
  263. this.$refs.ownerForm.validate().then(res => {
  264. callback(res)
  265. }).catch(errors => {
  266. callback(errors)
  267. })
  268. }
  269. },
  270. }
  271. </script>
  272. <style scoped lang="scss">
  273. ::v-deep {
  274. .u-textarea {
  275. text-align: right;
  276. padding: 0;
  277. color: #303133;
  278. }
  279. .uni-textarea-placeholder {
  280. color: grey !important;
  281. text-align: right;
  282. }
  283. .u-checkbox__icon-wrap {
  284. margin-left: 10rpx;
  285. }
  286. }
  287. /* 添加样式 */
  288. .search {
  289. width: 112rpx;
  290. height: 60rpx;
  291. background: #FDE935;
  292. border-radius: 100rpx 100rpx 100rpx 100rpx;
  293. }
  294. .suffixClass {
  295. margin-left: 10rpx;
  296. font-size: 30rpx;
  297. }
  298. </style>