Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

vehicle-change-chepai.vue 8.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293
  1. <template>
  2. <view class="bg">
  3. <view class="title_wrap"><text class="title">基本信息</text></view>
  4. <u-form label-width="230" :model="state.form" ref="uForm" :label-style='labelStyle'>
  5. <u-form-item label="车牌号码" :left-icon='`${$imgUrl}issuance/point-form.png`' :left-icon-style='leftIcon'
  6. borderBottom>
  7. <u-input v-model="state.form.vehiclePlate" input-align='right' disabled/>
  8. </u-form-item>
  9. <u-form-item label="车牌颜色" :left-icon='`${$imgUrl}issuance/point-form.png`' :left-icon-style='leftIcon'
  10. borderBottom>
  11. <view class="showworld">{{getCodeName('VEHICLE_COLOR_TYPE',state.form.vehiclePlateColor)}}</view>
  12. </u-form-item>
  13. <u-form-item label="ETC卡状态" :left-icon='`${$imgUrl}issuance/point-form.png`' :left-icon-style='leftIcon'
  14. borderBottom>
  15. <view class="showworld">{{getCodeName('CARD_STATE_TYPE',state.form.cardStatus)}}</view>
  16. </u-form-item>
  17. <u-form-item label="OBU卡状态" :left-icon='`${$imgUrl}issuance/point-form.png`' :left-icon-style='leftIcon'
  18. borderBottom>
  19. <view class="showworld">{{getCodeName('CARD_STATE_TYPE',state.form.obuStatus)}}</view>
  20. </u-form-item>
  21. <u-form-item label="ETC卡状态" :left-icon='`${$imgUrl}issuance/point-form.png`' :left-icon-style='leftIcon'
  22. borderBottom>
  23. </u-form-item>
  24. <view class="card">
  25. <image :src='`${$imgUrl}issuance/cardPicture.png`' mode=""></image>
  26. <view class="details">
  27. <view>储蓄卡</view>
  28. <view>卡号:{{state.form.cardId}}</view>
  29. </view>
  30. </view>
  31. <u-form-item label="OBU卡状态" :left-icon='`${$imgUrl}issuance/point-form.png`' :left-icon-style='leftIcon'
  32. borderBottom>
  33. </u-form-item>
  34. <view class="card">
  35. <image :src='`${$imgUrl}issuance/obuPicture.png`' mode=""></image>
  36. <view class="details">
  37. <view>OBU信息</view>
  38. <view>序列号:{{state.form.obuId}}</view>
  39. </view>
  40. </view>
  41. </u-form>
  42. </view>
  43. <view class="bg">
  44. <view class="title" style="margin-bottom: 30rpx;">请输入需要变更ETC车牌号码</view>
  45. <car-number-input :defaultStr="state.form.vehiclePlateNew" @numberInputResult="carNumber"></car-number-input>
  46. <u-form label-width="230" :model="state.form" ref="uForm" :label-style='labelStyle' borderBottom>
  47. <u-form-item label="车牌颜色" :left-icon='`${$imgUrl}issuance/point-form.png`' :left-icon-style='leftIcon'
  48. borderBottom>
  49. <u-input v-model="state.form.vehiclePlateColorNewStr" type="select" @click="show1 = true" input-align='right'/>
  50. </u-form-item>
  51. <u-form-item label="车牌类型" :left-icon='`${$imgUrl}issuance/point-form.png`' :left-icon-style='leftIcon'
  52. borderBottom>
  53. <u-input v-model="state.form.vehicleTypeStr" type="select" @click="show2 = true" input-align='right'/>
  54. </u-form-item>
  55. </u-form>
  56. </view>
  57. <view class="tips">
  58. <view class="hint">
  59. <image :src="`${$imgUrl}common/icon-hint.png`" class="icon"></image>
  60. <view>注意事项</view>
  61. </view>
  62. <view class="item">1、非蓝牙设备不支持该功能。</view>
  63. <view class="item">2、单位用户请到线下网点进行办理。</view>
  64. <view class="item">3、车牌变更成功后需重新绑定票根信息工行。</view>
  65. <view class="item">4、工行、建行渠道的储值卡不支持该功能。</view>
  66. </view>
  67. <view class="action">
  68. <button type="default" class="ui-btn" @click="savaHandle()">
  69. 提交
  70. </button>
  71. </view>
  72. <!-- 选择车牌颜色 -->
  73. <u-select v-model="show1" :list="state.colorRange" @confirm="changeColor"></u-select>
  74. <u-select v-model="show2" :list="state.vehicleTypeRange" @confirm="changeVehicleType"></u-select>
  75. </template>
  76. <script setup lang="ts">
  77. import { navTo,uploadFile,strReplace,msg} from "@/utils/utils";
  78. import { reactive,ref } from "vue";
  79. import carNumberInput from "@/components/car-number-input/car-number-input.vue";
  80. import { onLoad } from "@dcloudio/uni-app";
  81. import { getItem } from "@/utils/storage.ts"
  82. import {selfServiceView,selfServiceUserUpload,cardObuQuery,plateCheck} from "@/utils/network/api.js";
  83. import {requestNew} from "@/utils/network/request.js";
  84. import {
  85. getCodeName
  86. } from "@/datas/queryKey.js";
  87. const labelStyle = {
  88. color: "#004576",
  89. fontSize: "28rpx",
  90. }
  91. const leftIcon = {
  92. height: '100%',
  93. width: '8rpx',
  94. display: 'flex',
  95. 'align-items': 'center',
  96. 'margin-right': '4rpx',
  97. }
  98. const show1 = ref(false)
  99. const show2 = ref(false)
  100. const state = reactive({
  101. form: {
  102. vehicleId:"",
  103. vehiclePlate: "",
  104. vehiclePlateColor: "",
  105. cardId:"",
  106. obuId:"",
  107. cardStatus:"",
  108. obuStatus:"",
  109. vehiclePlateNew:"",
  110. vehiclePlateColorNew:"",
  111. vehiclePlateColorNewStr:"",//车牌颜色中文
  112. vehicleType:"",
  113. vehicleTypeStr:"",
  114. isVehiclePlateChange:""
  115. },
  116. colorRange: [],
  117. vehicleTypeRange:[
  118. {value: 1, label: "客车"},
  119. {value: 2, label: "货车"},
  120. {value: 3, label: "作业车"},
  121. ],
  122. })
  123. onLoad((option : any) => {
  124. let getColor = getItem('key')['VEHICLE_COLOR_TYPE'];
  125. for (var k = 0; k < getColor.length; k++) {
  126. let obj = {};
  127. obj['value'] = getColor[k]['code']
  128. obj['label'] = getColor[k]['name']
  129. state.colorRange.push(obj)
  130. }
  131. state.form.vehicleId=option.vehicleId
  132. state.form.vehiclePlate=option.vehicleId.split("_")[0]
  133. state.form.vehiclePlateColor=option.vehicleId.split("_")[1]
  134. state.form.cardId=option.cardId
  135. state.form.obuId=option.obuId
  136. state.form.isVehiclePlateChange=option.isVehiclePlateChange
  137. getObuList()
  138. console.log("state.colorRange",state.colorRange,option)
  139. });
  140. //车牌号输入
  141. const carNumber = (val : any) => {
  142. state.form.vehiclePlateNew = val.trim();
  143. };
  144. const savaHandle = () => {
  145. if(!state.form.vehiclePlateNew){
  146. msg("请输入新车牌");
  147. return;
  148. }
  149. if(!state.form.vehiclePlateColorNew){
  150. msg("请输入新车牌颜色");
  151. return;
  152. }
  153. if(!state.form.vehicleType){
  154. msg("请选择车牌类型");
  155. return;
  156. }
  157. const options = {
  158. type: 2,
  159. data: {
  160. vehiclePlate: state.form.vehiclePlateNew,
  161. vehiclePlateColor: state.form.vehiclePlateColorNew,
  162. },
  163. method: "POST",
  164. showLoading: true,
  165. };
  166. // 车牌校验有问题 还没改好
  167. requestNew(plateCheck, options).then((res) => {
  168. console.log("车牌校验", res)
  169. const paramsAll={
  170. vehicleId:state.form.vehicleId,
  171. isVehiclePlateChange:state.form.isVehiclePlateChange,
  172. cardId:state.form.cardId,
  173. obuId:state.form.obuId,
  174. vehiclePlateNew:state.form.vehiclePlateNew,
  175. vehiclePlateColorNew:state.form.vehiclePlateColorNew,
  176. vanType:state.form.vehicleType,
  177. }
  178. const params = encodeURIComponent(JSON.stringify(paramsAll))
  179. navTo(`/subpackage/personal-center/vehicle-change/vehicle-change-chepai-write?params=${params}`)
  180. });
  181. }
  182. const changeColor = (item) => {
  183. state.form.vehiclePlateColorNew = item[0].value
  184. state.form.vehiclePlateColorNewStr = item[0].label
  185. console.log(item)
  186. }
  187. const changeVehicleType = (item) => {
  188. state.form.vehicleType = item[0].value
  189. state.form.vehicleTypeStr = item[0].label
  190. console.log(item)
  191. }
  192. const getObuList = () => {
  193. var data = {
  194. obuId: state.form.obuId,
  195. cardId:state.form.cardId,
  196. };
  197. const options = {
  198. type: 2,
  199. data: data,
  200. method: "POST",
  201. showLoading: true,
  202. };
  203. requestNew(cardObuQuery, options).then((res) => {
  204. let result = res;
  205. state.form.obuStatus = result.obuStatus?result.obuStatus:""
  206. state.form.cardStatus = result.cardStatus
  207. })
  208. }
  209. </script>
  210. <style lang="scss" scoped>
  211. .bg {
  212. background-color: white;
  213. width: 90%;
  214. margin: 0 auto;
  215. margin-top: 20rpx;
  216. border-radius: 12px;
  217. border: 1px solid #FFFFFF;
  218. padding: 30rpx 20rpx;
  219. overflow: hidden;
  220. box-sizing: border-box;
  221. .title_wrap {
  222. display: flex;
  223. font-weight: 400;
  224. justify-content: space-between;
  225. .title {
  226. font-size: 30rpx;
  227. color: #01243A;
  228. }
  229. }
  230. .des {
  231. font-weight: 400;
  232. font-size: 28rpx;
  233. color: #01243A;
  234. line-height: 56rpx;
  235. margin-top: 10rpx;
  236. text-indent: 1rem;
  237. }
  238. }
  239. .action {
  240. position: absolute;
  241. left: 0;
  242. height: 160rpx;
  243. background-color: #fff;
  244. border-radius: 30rpx 30rpx 0 0;
  245. width: 100vw;
  246. display: flex;
  247. align-items: center;
  248. justify-content: center;
  249. flex-direction: column;
  250. margin-top: 20rpx;
  251. }
  252. .card{
  253. display: flex;
  254. align-items: center;
  255. image{
  256. width: 120rpx;
  257. height: 120rpx;
  258. margin-right: 20rpx;
  259. }
  260. .details view:first-child{
  261. margin-bottom: 10rpx;
  262. }
  263. }
  264. .tips{
  265. width: 90%;
  266. padding: 20rpx 0;
  267. box-sizing: border-box;
  268. margin: 20rpx auto;
  269. .hint{
  270. display: flex;
  271. align-items: center;
  272. .icon{
  273. width: 30rpx;
  274. height: 30rpx;
  275. margin-right: 10rpx;
  276. }
  277. }
  278. .item{
  279. margin: 10rpx 0;
  280. text-indent: 1rem;
  281. }
  282. }
  283. .showworld{
  284. display: flex;
  285. justify-content: flex-end;
  286. }
  287. </style>