CarInfoForm.vue 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328
  1. <template>
  2. <view class="">
  3. <u--form labelPosition="left" :model="carInfo" :rules="carRules" ref="carForm" labelWidth="80"
  4. errorType="message">
  5. <template v-if="currentPagePath=='/pages/quote/quoteInfo'">
  6. <u-form-item label="车牌号" borderBottom>
  7. <u--input v-model="carInfo.licenseNo" border="none" clearable placeholder="请输入车牌号"
  8. placeholderStyle="text-align:right;" @input="upperCaseType('licenseNo')"></u--input>
  9. </u-form-item>
  10. <u-form-item label="车架号" prop="frameNo" borderBottom>
  11. <u--input placeholder="请输入车架号" placeholderStyle="text-align:right;"
  12. @input="upperCaseType('frameNo')" v-model="carInfo.vinNo" border="none" clearable></u--input>
  13. </u-form-item>
  14. <u-form-item label="品牌型号" prop="brandName" borderBottom>
  15. <u--input v-model="carInfo.brandName" border="none" @input="upperCaseType('brandName')" clearable
  16. placeholder="请输入品牌型号" placeholderStyle="text-align:right;"></u--input>
  17. </u-form-item>
  18. <u-form-item label="发动机号" prop="engineNo" borderBottom>
  19. <u--input v-model="carInfo.engineNo" border="none" clearable placeholder="请输入发动机号"
  20. placeholderStyle="text-align:right;" @input="upperCaseType('engineNo')"></u--input>
  21. </u-form-item>
  22. <u-form-item label="使用性质" prop="carNatureCode" borderBottom @tap="carnatureShow=true">
  23. <u--input v-model="carInfos.carNatureCode" disabled disabledColor="#ffffff" suffixIcon='arrow-down'
  24. suffixIconStyle="color:#333;font-size:30rpx" placeholder="请选择使用性质"
  25. placeholderStyle="text-align:right;" clearable border="none"
  26. style="pointer-events: none"></u--input>
  27. </u-form-item>
  28. <u-form-item label="注册日期" prop="registerDate" borderBottom @tap="registerDateShow = true; ">
  29. <u--input v-model="carInfo.registerDate" disabled disabledColor="#ffffff" clearable
  30. :holdKeyboard="true" suffixIcon='calendar' suffixIconStyle="color:#333;font-size:40rpx"
  31. placeholder="请选择 " placeholderStyle="text-align:right;" border="none"
  32. style="pointer-events: none"></u--input>
  33. </u-form-item>
  34. <u-form-item label="发证日期" prop="issueDate" borderBottom @click="issueDateShow=true">
  35. <u--input v-model="carInfo.issueDate" disabled disabledColor="#ffffff" clearable
  36. suffixIcon='calendar' suffixIconStyle="color:#333;font-size:40rpx" placeholder="请选择 "
  37. placeholderStyle="text-align:right;" border="none" style="pointer-events: none"></u--input>
  38. </u-form-item>
  39. <u-form-item label="整备质量" prop="completeKerbMass" borderBottom>
  40. <u--input v-model="carInfo.completeKerbMass" border="none" clearable placeholder="请输入整备质量"
  41. placeholderStyle="text-align:right;"></u--input>
  42. </u-form-item>
  43. <u-form-item label="核定载质量" prop="limitLoad" borderBottom>
  44. <u--input v-model="carInfo.limitLoad" border="none" clearable placeholder="请输入核定载质量"
  45. placeholderStyle="text-align:right;"></u--input>
  46. </u-form-item>
  47. </template>
  48. <template v-if="currentPagePath=='/pages/quote/selectInsuranceCompany'">
  49. <u-form-item label="车架号" prop="frameNo" borderBottom>
  50. <u--input placeholder="请输入车架号" placeholderStyle="text-align:right;" v-model="carInfo.frameNo"
  51. border="none" clearable></u--input>
  52. <view class="search ml-1 dis a-c j-c " @tap="toChooseVin(carInfo.frameNo)">查询</view>
  53. </u-form-item>
  54. <u-form-item label="品牌型号" prop="brandName" borderBottom>
  55. <u--input v-model="carInfo.brandName" border="none" clearable placeholder="请输入品牌型号"
  56. placeholderStyle="text-align:right;"></u--input>
  57. <view class="search ml-1 dis a-c j-c" @tap="toChooseVehicleType(carInfo.brandName)">查询</view>
  58. </u-form-item>
  59. <u-form-item label="能源种类" prop="energyTypeCode" borderBottom @click="energyTypeShow=true">
  60. <u--input v-model="carInfos.energyTypeCode" disabled disabledColor="#ffffff" suffixIcon='arrow-down'
  61. suffixIconStyle="color:#333;font-size:30rpx" placeholder="请选择使用性质 "
  62. placeholderStyle="text-align:right;" clearable border="none"
  63. style="pointer-events: none"></u--input>
  64. </u-form-item>
  65. <u-form-item label="车辆用途" prop="vehicleUseCode" borderBottom @click="vehicleUseShow=true">
  66. <u--input v-model="carInfos.vehicleUseCode" disabled disabledColor="#ffffff" suffixIcon='arrow-down'
  67. suffixIconStyle="color:#333;font-size:30rpx" placeholder="请选择车辆用途 "
  68. placeholderStyle="text-align:right;" clearable border="none"
  69. style="pointer-events: none"></u--input>
  70. </u-form-item>
  71. <u-form-item label="车辆种类" prop="carKindCode" borderBottom @click="cimodelclassShow=true">
  72. <u--input v-model="carInfos.carKindCode" disabled disabledColor="#ffffff" suffixIcon='arrow-down'
  73. suffixIconStyle="color:#333;font-size:30rpx" placeholder="请选择车辆种类 "
  74. placeholderStyle="text-align:right;" clearable border="none"
  75. style="pointer-events: none"></u--input>
  76. </u-form-item>
  77. <u-form-item label="车辆类型" prop="carTypeCode" borderBottom @click="cartypeShow=true">
  78. <u--input v-model="carInfos.carTypeCode" disabled disabledColor="#ffffff" suffixIcon='arrow-down'
  79. suffixIconStyle="color:#333;font-size:30rpx" placeholder="请选择车辆类型 "
  80. placeholderStyle="text-align:right;" clearable border="none"
  81. style="pointer-events: none"></u--input>
  82. </u-form-item>
  83. <u-form-item label="座位数" borderBottom>
  84. <u--input v-model="carInfo.seatCount" border="none" clearable placeholder="请输入座位数"
  85. placeholderStyle="text-align:right;">
  86. <template slot="suffix">
  87. <text style="font-size: 30rpx;">座</text>
  88. </template>
  89. </u--input>
  90. </u-form-item>
  91. <u-form-item label="年款" borderBottom>
  92. <u--input v-model="carInfo.caryear" border="none" clearable placeholder="请输入年款"
  93. placeholderStyle="text-align:right;"></u--input>
  94. </u-form-item>
  95. <u-form-item label="排量" borderBottom>
  96. <u--input v-model="carInfo.displacement" border="none" clearable placeholder="请输入排量"
  97. placeholderStyle="text-align:right;">
  98. <template slot="suffix">
  99. <text style="font-size: 30rpx;">L</text>
  100. </template></u--input>
  101. </u-form-item>
  102. <u-form-item label="功率" borderBottom>
  103. <u--input v-model="carInfo.powerScale" border="none" clearable placeholder="请输入功率"
  104. placeholderStyle="text-align:right;">
  105. <template slot="suffix">
  106. <text style="font-size: 30rpx;">KW</text>
  107. </template></u--input>
  108. </u-form-item>
  109. <u-form-item label="汽车购置价" prop="purchasePrice" borderBottom>
  110. <u--input v-model="carInfo.purchasePrice" border="none" clearable placeholder="请输入新车购置价"
  111. placeholderStyle="text-align:right;">
  112. <template slot="suffix">
  113. <text style="font-size: 30rpx;">元</text>
  114. </template></u--input>
  115. </u-form-item>
  116. </template>
  117. </u--form>
  118. <!-- 使用性质 -->
  119. <u-picker :show="carnatureShow" :columns="natureOfVehicleUseoptions" keyName="label"
  120. @cancel="carnatureShow=false" @confirm="dictionaryConfirm($event, 'carNatureCode','carnatureShow')"
  121. @close="carnatureShow=false" :closeOnClickOverlay="true"></u-picker>
  122. <!-- 能源种类 -->
  123. <u-picker :show="energyTypeShow" :columns="energyTypeoptions" keyName="label" @cancel="energyTypeShow=false"
  124. @confirm="dictionaryConfirm($event, 'energyTypeCode','energyTypeShow')" @close="energyTypeShow=false"
  125. :closeOnClickOverlay="true"></u-picker>
  126. <!-- 车辆用途 -->
  127. <u-picker v-if="carInfo.carNatureCode === '01'" :show="vehicleUseShow" :columns="businessVehicleUseoptions"
  128. keyName="label" @cancel="vehicleUseShow=false"
  129. @confirm="dictionaryConfirm($event, 'vehicleUseCode','vehicleUseShow')" @close="vehicleUseShow=false"
  130. :closeOnClickOverlay="true"></u-picker>
  131. <u-picker v-if="carInfo.carNatureCode === '02'" :show="vehicleUseShow" :columns="outOfBusinessVehicleUseoptions"
  132. keyName="label" @cancel="vehicleUseShow=false"
  133. @confirm="dictionaryConfirm($event, 'vehicleUseCode','vehicleUseShow')" @close="vehicleUseShow=false"
  134. :closeOnClickOverlay="true"></u-picker>
  135. <!-- 车辆类型 -->
  136. <u-picker :show="cartypeShow" :columns="trafficManagementVehicleTypeoptions" keyName="label"
  137. @cancel="cartypeShow=false" @confirm="dictionaryConfirm($event, 'carTypeCode','cartypeShow')"
  138. @close="cartypeShow=false" :closeOnClickOverlay="true"></u-picker>
  139. <!-- 车辆种类 -->
  140. <u-picker :show="cimodelclassShow" :columns="vehicleTypeoptions" keyName="label"
  141. @cancel="cimodelclassShow=false" @confirm="dictionaryConfirm($event, 'carKindCode','cimodelclassShow')"
  142. @close="cimodelclassShow=false" :closeOnClickOverlay="true"></u-picker>
  143. <u-datetime-picker :show="registerDateShow" v-model="registerDatevalue" mode="date" :formatter="formatter"
  144. @cancel="registerDateShow=false" @close="registerDateShow=false" :closeOnClickOverlay="true"
  145. @confirm="registerDateconfirm" confirmText="确定"></u-datetime-picker>
  146. <u-datetime-picker :show="issueDateShow" mode="date" v-model="issueDatevalue" :formatter="formatter"
  147. @cancel="issueDateShow=false" @confirm="issueDateconfirm" :closeOnClickOverlay="true"
  148. @close="issueDateShow=false" confirmText="确定"></u-datetime-picker>
  149. </view>
  150. </template>
  151. <script>
  152. var dateTime = new Date();
  153. let Year = dateTime.getFullYear();
  154. let Month = Number(dateTime.getMonth() + 1);
  155. export default {
  156. props: {
  157. carInfo: Object,
  158. currentPagePath: String,
  159. carInfos: Object,
  160. natureOfVehicleUseoptions: Array,
  161. energyTypeoptions: Array,
  162. trafficManagementVehicleTypeoptions: Array,
  163. vehicleTypeoptions: Array,
  164. businessVehicleUseoptions: Array,
  165. outOfBusinessVehicleUseoptions: Array,
  166. },
  167. data() {
  168. return {
  169. registerDatevalue: Number(new Date()), //注册日期
  170. issueDatevalue: Number(new Date()), //发证日期
  171. registerDateShow: false, //注册日期
  172. issueDateShow: false, //发证日期
  173. carnatureShow: false, //使用性质
  174. energyTypeShow: false,
  175. vehicleUseShow: false,
  176. cartypeShow: false,
  177. cimodelclassShow: false,
  178. carRules: {
  179. frameNo: [{
  180. required: true,
  181. message: '请输入车辆识别码',
  182. trigger: ['blur', 'change'],
  183. },
  184. {
  185. pattern: /^([0-9A-Z]){17}$/,
  186. message: '请输入正确的车辆识别码',
  187. }
  188. ],
  189. modelcname: [{
  190. required: true,
  191. message: '请输入品牌型号',
  192. trigger: ['blur', 'change'],
  193. }],
  194. engineNo: [{
  195. required: true,
  196. message: '请输入发动机号',
  197. trigger: ['blur', 'change'],
  198. }],
  199. purchasePrice: [{
  200. required: true,
  201. message: '请输入新车购置价',
  202. trigger: ['blur', 'change'],
  203. },
  204. ],
  205. completeKerbMass: [{
  206. required: true,
  207. message: '请输入整备质量',
  208. trigger: ['blur', 'change'],
  209. }],
  210. carNatureCode: [{
  211. required: true,
  212. message: '使用性质必选',
  213. trigger: 'change',
  214. }],
  215. energyTypeCode: [{
  216. required: true,
  217. message: '能源种类必选',
  218. trigger: 'change',
  219. }],
  220. vehicleUseCode: [{
  221. required: true,
  222. message: '车辆用途必选',
  223. trigger: 'change',
  224. }],
  225. carTypeCode: [{
  226. required: true,
  227. message: '车辆类型必选',
  228. trigger: 'change',
  229. }],
  230. carKindCode: [{
  231. required: true,
  232. message: '车辆种类必选',
  233. trigger: 'change',
  234. }],
  235. registerDate: [{
  236. required: true,
  237. message: '请选择注册日期',
  238. trigger: 'change',
  239. },
  240. {
  241. pattern: /^\d{4}-\d{2}-\d{2}$/,
  242. message: '注册日期格式错误',
  243. }
  244. ],
  245. issueDate: [{
  246. required: true,
  247. message: '请选择发证日期',
  248. trigger: 'change',
  249. },
  250. {
  251. pattern: /^\d{4}-\d{2}-\d{2}$/,
  252. message: '发证日期日期格式错误',
  253. }
  254. ],
  255. },
  256. }
  257. },
  258. mounted() {
  259. },
  260. methods: {
  261. toChooseVin(name) {
  262. this.$emit('toChooseVin', name)
  263. },
  264. toChooseVehicleType(name) {
  265. this.$emit('toChooseVehicleType', name)
  266. },
  267. upperCaseType(type) {
  268. this.carInfo[type] = this.carInfo[type].toUpperCase();
  269. if (type == 'frameNo') {
  270. this.carInfo.vinNo = this.carInfo.frameNo.trim();
  271. }
  272. },
  273. close() {
  274. this.registerDateShow = false;
  275. },
  276. registerDateconfirm(e) {
  277. this.carInfo.registerDate = uni.$u.timeFormat(e.value, 'yyyy-mm-dd');
  278. this.registerDateShow = false;
  279. },
  280. issueDateconfirm(e) {
  281. this.carInfo.issueDate = uni.$u.timeFormat(e.value, 'yyyy-mm-dd');
  282. this.issueDateShow = false;
  283. },
  284. formatter(type, value) {
  285. if (type === 'year') {
  286. return `${value}年`
  287. }
  288. if (type === 'month') {
  289. return `${value}月`
  290. }
  291. if (type === 'day') {
  292. return `${value}日`
  293. }
  294. return value
  295. },
  296. //字典信息回显处理
  297. dictionaryConfirm(value, name, showName) {
  298. this.carInfo[name] = value.value[0].value;
  299. this.carInfos[name] = value.value[0].label;
  300. this[showName] = false;
  301. },
  302. validate(callback) {
  303. this.$refs.carForm.setRules(this.carRules)
  304. this.$refs.carForm.validate().then(res => {
  305. callback(res)
  306. }).catch(errors => {
  307. callback(errors)
  308. })
  309. }
  310. },
  311. }
  312. </script>
  313. <style scoped lang="scss">
  314. /* 添加样式 */
  315. .search {
  316. width: 112rpx;
  317. height: 60rpx;
  318. background: #FDE935;
  319. border-radius: 100rpx 100rpx 100rpx 100rpx;
  320. }
  321. </style>