Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

add-car.vue 8.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318
  1. <!-- 新增车辆 -->
  2. <template>
  3. <view class="box">
  4. <form-builder :config="config" :formData="state.formData" @submit="submit" @radioChange="radioChange"
  5. @addressInfo="addressInfo" @pickerCustom="state.showPopup = true"/>
  6. </view>
  7. <u-popup v-model="state.showPopup" mode="bottom" > <view v-if="state.showPopup">
  8. <popup-numberplate-color :numberplateCor="state.curNumberplateColor"
  9. @numberplateResult="numberplateResult"></popup-numberplate-color>
  10. </view> </u-popup>
  11. </template>
  12. <script setup lang="ts">
  13. import {reactive} from "vue";
  14. import {onLoad} from "@dcloudio/uni-app";
  15. import { msg,confirm } from '@/utils/utils';
  16. import popupNumberplateColor from "./components/popup-choose-numberplate-color";
  17. const config = ({
  18. submitName: '提交车辆',
  19. titleWidth: 160,
  20. })
  21. const state = reactive({
  22. //显示车牌颜色选择popup
  23. showPopup:false,
  24. //当前选择的车牌颜色
  25. curNumberplateColor:{id:-1},
  26. //设备领取方式: mail-邮寄 offline-自提
  27. receiveType: "mail",
  28. //邮寄
  29. formData: [
  30. {
  31. 'title': '填写车辆信息',
  32. 'type': 1,
  33. 'value':'carInfo',
  34. 'disabled': true,
  35. 'labelColor': '000000',
  36. 'hide':false,
  37. },
  38. {
  39. 'title': '输入车牌号',
  40. 'required': true,
  41. 'star': true,
  42. 'type': 9,
  43. 'vertical': 2,
  44. 'value': 'numberplate',
  45. 'labelColor': '777777',
  46. 'emptyHint':'请输入车牌号',
  47. 'hide':false,
  48. },
  49. {
  50. 'title': '车牌颜色',
  51. 'type': 4,
  52. 'required': true,
  53. 'star': true,
  54. 'value': 'carColor',
  55. 'labelColor': '777777',
  56. 'emptyHint':'请选择车牌颜色',
  57. 'divider': true,
  58. 'mode': 'custom', //自定义选择器事件
  59. 'hide':false,
  60. },
  61. {
  62. 'title': '收费车型',
  63. 'type': 4,
  64. 'required': true,
  65. 'star': true,
  66. 'value': 'moneyCarType',
  67. 'labelColor': '777777',
  68. 'emptyHint':'请选择收费车型',
  69. 'divider': true,
  70. 'itemData': ['车型1', '车型12', '车型13', '车型14'],
  71. 'hide':false,
  72. },
  73. {
  74. 'title': '车类别',
  75. 'type': 7,
  76. 'value': 'carType',
  77. 'star': true,
  78. 'required':true,
  79. 'labelColor': '777777',
  80. 'divider': true,
  81. 'itemData': [{
  82. 'checked': false,
  83. 'value': '1',
  84. 'name': '客车'
  85. }, {
  86. 'checked': false,
  87. 'value': '2',
  88. 'name': '货车'
  89. }],
  90. 'hide':false,
  91. 'emptyHint':'请选择车类别',
  92. },
  93. {
  94. 'title': '座位数',
  95. 'type': 2,
  96. 'value': 'seats',
  97. 'required':true,
  98. 'star': true,
  99. 'inputType': 'number',
  100. 'maxlength': 20,
  101. 'divider': true,
  102. 'labelColor': '777777',
  103. 'hide':false,
  104. 'emptyHint':'请输入座位数',
  105. },
  106. {
  107. 'title': '总质量(kg)',
  108. 'type': 2,
  109. 'value': 'quality',
  110. 'required':true,
  111. 'star': true,
  112. 'inputType': 'number',
  113. 'maxlength': 20,
  114. 'divider': true,
  115. 'labelColor': '777777',
  116. 'hide':false,
  117. 'emptyHint':'请输入总质量',
  118. },
  119. {
  120. 'title': '制卡类型',
  121. 'type': 4,
  122. 'required': true,
  123. 'star': true,
  124. 'value': 'cardType',
  125. 'labelColor': '777777',
  126. 'divider': true,
  127. 'itemData': ['类型1', '类型12', '类型13', '类型14'],
  128. 'hide':false,
  129. 'emptyHint':'请选择制卡类型',
  130. },
  131. {
  132. 'title': '提交姓名',
  133. 'type': 2,
  134. 'value': 'name',
  135. 'required':true,
  136. 'star': true,
  137. 'maxlength': 20,
  138. 'divider': true,
  139. 'labelColor': '777777',
  140. 'emptyHint':'请输入提交姓名',
  141. 'hide':false,
  142. },
  143. {
  144. 'title': '设备领取方式',
  145. 'type': 7,
  146. 'value': 'receiveType',
  147. 'star': true,
  148. 'required':true,
  149. 'labelColor': '777777',
  150. 'divider': true,
  151. 'itemData': [{
  152. 'checked': false,
  153. 'value': 'mail',
  154. 'name': '邮寄'
  155. }, {
  156. 'checked': false,
  157. 'value': 'offline',
  158. 'name': '自取'
  159. }],
  160. 'hide':false,
  161. 'emptyHint':'请选择设备领取方式',
  162. },
  163. {
  164. 'title': '邮寄地址',
  165. 'type': 2,
  166. 'value':'addrInfo',
  167. 'disabled': true,
  168. 'labelColor': '000000',
  169. 'hide':false,
  170. 'btn':true,
  171. 'btnTitle':'获取微信地址',
  172. 'btnType':'address',
  173. 'hint': ' ',
  174. },
  175. {
  176. 'title': '姓名',
  177. 'type': 2,
  178. 'value': 'name',
  179. 'maxlength': 20,
  180. 'required':true,
  181. 'star': true,
  182. 'divider': true,
  183. 'labelColor': '777777',
  184. 'hide':false,
  185. 'emptyHint':'请输入收件人姓名',
  186. },
  187. {
  188. 'title': '电话',
  189. 'type': 2,
  190. 'value': 'phone',
  191. 'required':true,
  192. 'inputType': 'number',
  193. 'maxlength': 11,
  194. 'star': true,
  195. 'divider': true,
  196. 'labelColor': '777777',
  197. 'hide':false,
  198. 'emptyHint':'请输入收件人电话',
  199. },
  200. {
  201. 'title': '地区',
  202. 'type': 10,
  203. 'value': 'area',
  204. 'required':true,
  205. 'hint': '选择省/市/区',
  206. 'star': true,
  207. 'divider': true,
  208. 'labelColor': '777777',
  209. 'hide':false,
  210. 'emptyHint':'请选择收件人所在地区',
  211. },
  212. {
  213. 'title': '详细地址',
  214. 'type': 2,
  215. 'value': 'detailedAddress',
  216. 'maxlength': 100,
  217. 'required':true,
  218. 'hint': '街道门牌、楼层房间号等信息',
  219. 'star': true,
  220. 'divider': true,
  221. 'labelColor': '777777',
  222. 'hide':false,
  223. 'emptyHint':'请输入收件人详细地址',
  224. },
  225. {
  226. 'title': '邮政编码',
  227. 'type': 2,
  228. 'value': 'postalCode',
  229. 'inputType': 'number',
  230. 'maxlength': 20,
  231. 'hint': '请输入邮政编码',
  232. 'divider': true,
  233. 'labelColor': '777777',
  234. 'hide':false,
  235. 'emptyHint':'请输入邮政编码',
  236. },
  237. {
  238. 'title': '请上传车辆相关照片',
  239. 'type': 11,
  240. 'value': 'carImgs',
  241. 'required':true,
  242. 'star':true,
  243. 'labelColor': '777777',
  244. 'hide':false,
  245. 'vertical':2,
  246. 'emptyHint':'请上传车辆相关照片',
  247. 'imgList':[
  248. {'value':'img1','hint':'行驶证正副页复印件'},
  249. {'value':'img2','hint':'车辆照片复印件'},
  250. {'value':'img3','hint':'函文件'},
  251. ]
  252. },
  253. ],
  254. })
  255. //车牌颜色选择回调结果
  256. const numberplateResult = (colorItem:any) => {
  257. state.curNumberplateColor = colorItem;
  258. state.formData[2][state.formData[2].value] = colorItem.title;
  259. state.showPopup = false;
  260. }
  261. //地址改变
  262. const addressInfo = (content:any) => {
  263. state.formData[11][state.formData[11].value] = content.userName;
  264. state.formData[12][state.formData[12].value] = content.telNumber;
  265. state.formData[13][state.formData[13].value] = `${content.provinceName}/${content.cityName}/${content.countyName}`;
  266. state.formData[14][state.formData[14].value] = content.detailInfo;
  267. state.formData[15][state.formData[15].value] = content.postalCode;
  268. }
  269. //radio改变
  270. const radioChange = (e:any,item:any) => {
  271. if (item.value === "receiveType") {//切换领取方式
  272. state.receiveType = item.receiveType;
  273. state.formData[10].hide = state.receiveType === 'mail' ? false : true;
  274. state.formData[11].hide = state.receiveType === 'mail' ? false : true;
  275. state.formData[12].hide = state.receiveType === 'mail' ? false : true;
  276. state.formData[13].hide = state.receiveType === 'mail' ? false : true;
  277. state.formData[14].hide = state.receiveType === 'mail' ? false : true;
  278. state.formData[15].hide = state.receiveType === 'mail' ? false : true;
  279. }
  280. }
  281. //提交换货申请
  282. const submit = (e: any) => {
  283. confirm('是否确认提交?',()=>{
  284. msg('确认提交' );
  285. console.log('提交内容', e);
  286. // const code = "IF01001202209060883" //请求编码
  287. // const options = {
  288. // type: 2, //type: 2,JSON格式提交数据(默认表单形式提交)
  289. // data: e, //请求参数
  290. // method: 'POST|GET', //提交方式(默认POST)
  291. // showLoading: true, //是否显示加载中(默认显示)
  292. // }
  293. // request(code, options).then((res) => {
  294. // uni.showToast({
  295. // icon: 'none',
  296. // title: hint
  297. // })
  298. // })
  299. },'提交确认');
  300. }
  301. </script>
  302. <style lang="scss" scoped>
  303. .box {
  304. margin: 20rpx 0rpx;
  305. background-color: white;
  306. padding:0 20rpx 20rpx;
  307. }
  308. </style>