CarInfoForm.vue 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257
  1. <template>
  2. <u-form :model="carInfo" :rules="carRules" ref="carForm" :errorType="errorType" label-width="200"
  3. style="padding: 0 15px;">
  4. <u-form-item label-width="120" label="车牌号:">
  5. <u-input placeholder="输入车牌号" v-model="carInfo.licenseNo" type="text" :custom-style="{textAlign:'right'}"
  6. @input="upperCaseType('licenseNo')"></u-input>
  7. </u-form-item>
  8. <u-form-item label="品牌型号:" prop="modelcname">
  9. <u-input placeholder="请输入品牌型号" v-model="carInfo.modelcname" type="text" :custom-style="{textAlign:'right'}"
  10. @input="upperCaseType('modelcname')"></u-input>
  11. <view class="search ml-1" @tap="toChooseVehicleType(carInfo.modelcname)">查询</view>
  12. </u-form-item>
  13. <u-form-item label="车辆识别码:" prop="frameNo">
  14. <u-input placeholder="请输入车辆识别码" v-model="carInfo.frameNo" type="text" :custom-style="{textAlign:'right'}"
  15. @input="upperCaseType('frameNo')"></u-input>
  16. <view class="search ml-1" @tap="toChooseVin(carInfo.frameNo)">查询</view>
  17. </u-form-item>
  18. <u-form-item label="发动机号:" prop="engineNo">
  19. <u-input placeholder="请输入发动机号" v-model="carInfo.engineNo" type="text" :custom-style="{textAlign:'right'}"
  20. @input="upperCaseType('engineNo')"></u-input>
  21. </u-form-item>
  22. <u-form-item label="注册日期:" prop="registerDate">
  23. <u-input type="select" :custom-style="{textAlign:'right'}" :select-open="registerDateShow"
  24. v-model="carInfo.registerDate" placeholder="请选择注册日期" @click="registerDateShow = true"
  25. placeholder-style="color:#808080"></u-input>
  26. <u-picker v-model="registerDateShow" mode="time" :params="params" :end-year="endYear" :end-month="endMonth"
  27. @confirm="e => Dateconfirm(e, 'carInfo', 'registerDate')"></u-picker>
  28. </u-form-item>
  29. <u-form-item label="发证日期:" prop="issueDate">
  30. <u-input type="select" :custom-style="{textAlign:'right'}" :select-open="issueDateShow"
  31. v-model="carInfo.issueDate" placeholder="请选择发证日期" @click="issueDateShow = true"
  32. placeholder-style="color:#808080"></u-input>
  33. <u-picker v-model="issueDateShow" mode="time" :params="params"
  34. @confirm="e => Dateconfirm(e, 'carInfo', 'issueDate')"></u-picker>
  35. </u-form-item>
  36. <u-form-item label="整备质量:" prop="completeKerbMass">
  37. <u-input placeholder="请输入整备质量" v-model="carInfo.completeKerbMass" type="text"
  38. :custom-style="{textAlign:'right'}"></u-input>
  39. </u-form-item>
  40. <u-form-item label="核定载质量:" prop="limitLoad">
  41. <u-input placeholder="请输入核定载质量" v-model="carInfo.limitLoad" type="text"
  42. :custom-style="{textAlign:'right'}"></u-input>
  43. </u-form-item>
  44. <u-form-item label="使用性质:" prop="carnature">
  45. <u-input v-model="carInfos.carnature" type="select" :select-open="carnatureShow"
  46. @click="carnatureShow = true" :custom-style="{textAlign:'right'}" placeholder-style="color:#808080"
  47. placeholder="请选择使用性质" />
  48. <u-select mode="single-column" :list="natureOfVehicleUseoptions" v-model="carnatureShow"
  49. label-name="dictTag" value-name="dictValue"
  50. @confirm="dictionaryConfirm($event, 'carnature')"></u-select>
  51. </u-form-item>
  52. <u-form-item label="能源种类:" prop="energyType">
  53. <u-input v-model="carInfos.energyType" type="select" :select-open="energyTypeShow"
  54. @click="energyTypeShow = true" :custom-style="{textAlign:'right'}" placeholder-style="color:#808080"
  55. placeholder="请选择能源种类" />
  56. <u-select mode="single-column" :list="energyTypeoptions" v-model="energyTypeShow" label-name="dictTag"
  57. value-name="dictValue" @confirm="dictionaryConfirm($event, 'energyType')"></u-select>
  58. </u-form-item>
  59. <u-form-item label="车辆用途:" prop="vehicleUse">
  60. <u-input v-model="carInfos.vehicleUse" type="select" :select-open="vehicleUseShow"
  61. @click="vehicleUseShow = true" :custom-style="{textAlign:'right'}" placeholder-style="color:#808080"
  62. placeholder="请选择车辆用途" />
  63. <u-select v-if="carInfo.carnature === '01'" mode="single-column" :list="businessVehicleUseoptions"
  64. v-model="vehicleUseShow" label-name="dictTag" value-name="dictValue"
  65. @confirm="dictionaryConfirm($event, 'vehicleUse')"></u-select>
  66. <u-select v-else mode="single-column" :list="outOfBusinessVehicleUseoptions" v-model="vehicleUseShow"
  67. label-name="dictTag" value-name="dictValue"
  68. @confirm="dictionaryConfirm($event, 'vehicleUse')"></u-select>
  69. </u-form-item>
  70. <u-form-item label="车辆类型:" prop="cartype">
  71. <u-input v-model="carInfos.cartype" type="select" :select-open="cartypeShow" @click="cartypeShow = true"
  72. :custom-style="{textAlign:'right'}" placeholder-style="color:#808080" placeholder="请选择车辆类型" />
  73. <u-select mode="single-column" :searchShow="true" :list="trafficManagementVehicleTypeoptions"
  74. v-model="cartypeShow" label-name="dictTag" value-name="dictValue"
  75. @confirm="dictionaryConfirm($event, 'cartype')"></u-select>
  76. </u-form-item>
  77. <u-form-item label="车辆种类:" prop="cimodelclass">
  78. <u-input v-model="carInfos.cimodelclass" type="select" :select-open="cimodelclassShow"
  79. @click="cimodelclassShow = true" :custom-style="{textAlign:'right'}" placeholder-style="color:#808080"
  80. placeholder="请选择车辆种类" />
  81. <u-select mode="single-column" :list="vehicleTypeoptions" v-model="cimodelclassShow" label-name="dictTag"
  82. value-name="dictValue" @confirm="dictionaryConfirm($event, 'cimodelclass')"></u-select>
  83. </u-form-item>
  84. <u-form-item label="年款:">
  85. <u-input type="text" placeholder="请输入年款" v-model="carInfo.caryear"
  86. :custom-style="{textAlign:'right'}"></u-input>
  87. </u-form-item>
  88. <u-form-item label="座位数:">
  89. <u-input type="text" placeholder="请输入座位数" v-model="carInfo.seatCount"
  90. :custom-style="{textAlign:'right'}"></u-input>
  91. </u-form-item>
  92. <u-form-item label="排量:">
  93. <u-input type="text" placeholder="请输入排量" v-model="carInfo.enginedesc"
  94. :custom-style="{textAlign:'right'}"></u-input>
  95. </u-form-item>
  96. <u-form-item label="功率:">
  97. <u-input type="text" placeholder="请输入功率" v-model="carInfo.powerScale"
  98. :custom-style="{textAlign:'right'}"></u-input>
  99. </u-form-item>
  100. <u-form-item label="新车购置价:" prop="purchasePrice">
  101. <u-input type="text" placeholder="请输入新车购置价" v-model="carInfo.purchasePrice"
  102. :custom-style="{textAlign:'right'}" @input="upperCaseType('purchasePrice')"></u-input>
  103. </u-form-item>
  104. </u-form>
  105. </template>
  106. <script>
  107. var dateTime = new Date();
  108. let Year = dateTime.getFullYear();
  109. let Month = Number(dateTime.getMonth() + 1);
  110. export default {
  111. props: {
  112. carInfo: Object,
  113. upperCaseType: Function,
  114. toChooseVehicleType: Function,
  115. toChooseVin: Function,
  116. dictionaryConfirm: Function,
  117. Dateconfirm: Function,
  118. natureOfVehicleUseoptions: Array,
  119. energyTypeoptions: Array,
  120. trafficManagementVehicleTypeoptions: Array,
  121. vehicleTypeoptions: Array,
  122. businessVehicleUseoptions: Array,
  123. outOfBusinessVehicleUseoptions: Array,
  124. carInfos: Object,
  125. errorType: {
  126. type: Array,
  127. default: () => ['border-bottom', 'toast'],
  128. },
  129. },
  130. data() {
  131. return {
  132. registerDateShow: false,
  133. issueDateShow: false,
  134. carnatureShow: false,
  135. energyTypeShow: false,
  136. vehicleUseShow: false,
  137. cartypeShow: false,
  138. cimodelclassShow: false,
  139. params: {
  140. year: true, //年
  141. month: true, //月
  142. day: true, //日
  143. hour: false, //时
  144. minute: false, //分
  145. second: false, //秒
  146. },
  147. endYear: Year,
  148. endMonth: Month,
  149. carRules: {
  150. frameNo: [{
  151. required: true,
  152. message: '请输入车辆识别码',
  153. trigger: ['blur', 'change'],
  154. },
  155. {
  156. pattern: /^([0-9A-Z]){17}$/,
  157. message: '请输入正确的车辆识别码',
  158. }
  159. ],
  160. modelcname: [{
  161. required: true,
  162. message: '请输入品牌型号',
  163. trigger: ['blur', 'change'],
  164. }],
  165. engineNo: [{
  166. required: true,
  167. message: '请输入发动机号',
  168. trigger: ['blur', 'change'],
  169. }],
  170. purchasePrice: [{
  171. required: true,
  172. message: '请输入新车购置价',
  173. trigger: ['blur', 'change'],
  174. },
  175. ],
  176. completeKerbMass: [{
  177. required: true,
  178. message: '请输入整备质量',
  179. trigger: ['blur', 'change'],
  180. }],
  181. carnature: [{
  182. required: true,
  183. message: '使用性质必选',
  184. trigger: 'change',
  185. }],
  186. energyType: [{
  187. required: true,
  188. message: '能源种类必选',
  189. trigger: 'change',
  190. }],
  191. vehicleUse: [{
  192. required: true,
  193. message: '车辆用途必选',
  194. trigger: 'change',
  195. }],
  196. cartype: [{
  197. required: true,
  198. message: '车辆类型必选',
  199. trigger: 'change',
  200. }],
  201. cimodelclass: [{
  202. required: true,
  203. message: '车辆种类必选',
  204. trigger: 'change',
  205. }],
  206. registerDate: [{
  207. required: true,
  208. message: '请选择注册日期',
  209. trigger: 'change',
  210. },
  211. {
  212. pattern: /^\d{4}-\d{2}-\d{2}$/,
  213. message: '注册日期格式错误',
  214. }
  215. ],
  216. issueDate: [{
  217. required: true,
  218. message: '请选择发证日期',
  219. trigger: 'change',
  220. },
  221. {
  222. pattern: /^\d{4}-\d{2}-\d{2}$/,
  223. message: '发证日期日期格式错误',
  224. }
  225. ],
  226. },
  227. }
  228. },
  229. methods: {
  230. validate(callback) {
  231. this.$refs.carForm.setRules(this.carRules);
  232. this.$refs.carForm.validate(valid => {
  233. if (callback) {
  234. callback(valid);
  235. }
  236. });
  237. },
  238. setRules(rules) {
  239. // 更新规则逻辑
  240. this.carRules = rules; // 或者根据需要
  241. },
  242. },
  243. }
  244. </script>
  245. <style scoped lang="scss">
  246. /* 添加样式 */
  247. .search {
  248. background: linear-gradient(270deg, #FF9A47 0%, #FF5600 100%);
  249. border-radius: 2px;
  250. color: #fff;
  251. font-size: 22rpx;
  252. padding: 1px 6px;
  253. }
  254. </style>