Commit c0558ebaea4b385716d52333efe4fc4a3c2336a4
1 parent
3d60bab7
下拉框箭头
Showing
2 changed files
with
414 additions
and
416 deletions
pages/inputCarNumber/inputCarNumber.vue
| 1 | 1 | <template> |
| 2 | 2 | |
| 3 | - <view class="so-mask"> | |
| 3 | + <view class="so-mask"> | |
| 4 | 4 | |
| 5 | - <view class="bg-icon" :class="set"> | |
| 6 | - <image :src="carBg" mode="" class="bac" /> | |
| 7 | - <view class="bg-text"> | |
| 8 | - <view class="bg-text-top">输 入 车 牌 号</view> | |
| 9 | - <view class="bg-text-bottom">输入完整车牌号,查询停车信息</view> | |
| 10 | - </view> | |
| 11 | - </view> | |
| 5 | + <view class="bg-icon" :class="set"> | |
| 6 | + <image :src="carBg" mode="" class="bac"/> | |
| 7 | + <view class="bg-text"> | |
| 8 | + <view class="bg-text-top">输 入 车 牌 号</view> | |
| 9 | + <view class="bg-text-bottom">输入完整车牌号,查询停车信息</view> | |
| 10 | + </view> | |
| 11 | + </view> | |
| 12 | 12 | |
| 13 | - <view class="so-plate animation-scale-up"> | |
| 14 | - <view class="so-plate-head"> | |
| 15 | - <view class="so-plate-type"> | |
| 16 | - <radio-group @change="typeChange"> | |
| 17 | - <label> | |
| 18 | - <radio value="1" :checked="type===1" /> | |
| 19 | - 普通车牌 | |
| 20 | - </label> | |
| 21 | - <label> | |
| 22 | - <radio value="2" :checked="type===2" /> | |
| 23 | - 新能源车牌 | |
| 24 | - </label> | |
| 25 | - </radio-group> | |
| 26 | - </view> | |
| 27 | - </view> | |
| 28 | - <view class="so-plate-body" @click="plateShowOrHide = true"> | |
| 29 | - <view class="so-plate-word" :class="{ active: currentInputIndex == 0 }" @tap="inputSwitch" | |
| 30 | - data-index="0"> | |
| 31 | - <text>{{ currentInputValue[0] }}</text> | |
| 32 | - </view> | |
| 33 | - <view class="so-plate-word" :class="{ active: currentInputIndex == 1 }" @tap="inputSwitch" | |
| 34 | - data-index="1"> | |
| 35 | - <text>{{ currentInputValue[1] }}</text> | |
| 36 | - </view> | |
| 37 | - <view class="so-plate-dot"></view> | |
| 38 | - <view class="so-plate-word" :class="{ active: currentInputIndex == 2 }" @tap="inputSwitch" | |
| 39 | - data-index="2"> | |
| 40 | - <text>{{ currentInputValue[2] }}</text> | |
| 41 | - </view> | |
| 42 | - <view class="so-plate-word" :class="{ active: currentInputIndex == 3 }" @tap="inputSwitch" | |
| 43 | - data-index="3"> | |
| 44 | - <text>{{ currentInputValue[3] }}</text> | |
| 45 | - </view> | |
| 46 | - <view class="so-plate-word" :class="{ active: currentInputIndex == 4 }" @tap="inputSwitch" | |
| 47 | - data-index="4"> | |
| 48 | - <text>{{ currentInputValue[4] }}</text> | |
| 49 | - </view> | |
| 50 | - <view class="so-plate-word" :class="{ active: currentInputIndex == 5 }" @tap="inputSwitch" | |
| 51 | - data-index="5"> | |
| 52 | - <text>{{ currentInputValue[5] }}</text> | |
| 53 | - </view> | |
| 54 | - <view class="so-plate-word" :class="{ active: currentInputIndex == 6 }" @tap="inputSwitch" | |
| 55 | - data-index="6"> | |
| 56 | - <text>{{ currentInputValue[6] }}</text> | |
| 57 | - </view> | |
| 58 | - <view class="so-plate-word" :class="{ active: currentInputIndex == 7 }" @tap="inputSwitch" | |
| 59 | - v-if="type == 2" data-index="7"> | |
| 60 | - <text>{{ currentInputValue[7] }}</text> | |
| 61 | - </view> | |
| 62 | - </view> | |
| 13 | + <view class="so-plate animation-scale-up"> | |
| 14 | + <view class="so-plate-head"> | |
| 15 | + <view class="so-plate-type"> | |
| 16 | + <radio-group @change="typeChange"> | |
| 17 | + <label> | |
| 18 | + <radio value="1" :checked="type===1"/> | |
| 19 | + 普通车牌 | |
| 20 | + </label> | |
| 21 | + <label> | |
| 22 | + <radio value="2" :checked="type===2"/> | |
| 23 | + 新能源车牌 | |
| 24 | + </label> | |
| 25 | + </radio-group> | |
| 26 | + </view> | |
| 27 | + </view> | |
| 28 | + <view class="so-plate-body" @click="plateShowOrHide = true"> | |
| 29 | + <view class="so-plate-word" :class="{ active: currentInputIndex == 0 }" @tap="inputSwitch" | |
| 30 | + data-index="0"> | |
| 31 | + <text>{{ currentInputValue[0] }}</text> | |
| 32 | + </view> | |
| 33 | + <view class="so-plate-word" :class="{ active: currentInputIndex == 1 }" @tap="inputSwitch" | |
| 34 | + data-index="1"> | |
| 35 | + <text>{{ currentInputValue[1] }}</text> | |
| 36 | + </view> | |
| 37 | + <view class="so-plate-dot"></view> | |
| 38 | + <view class="so-plate-word" :class="{ active: currentInputIndex == 2 }" @tap="inputSwitch" | |
| 39 | + data-index="2"> | |
| 40 | + <text>{{ currentInputValue[2] }}</text> | |
| 41 | + </view> | |
| 42 | + <view class="so-plate-word" :class="{ active: currentInputIndex == 3 }" @tap="inputSwitch" | |
| 43 | + data-index="3"> | |
| 44 | + <text>{{ currentInputValue[3] }}</text> | |
| 45 | + </view> | |
| 46 | + <view class="so-plate-word" :class="{ active: currentInputIndex == 4 }" @tap="inputSwitch" | |
| 47 | + data-index="4"> | |
| 48 | + <text>{{ currentInputValue[4] }}</text> | |
| 49 | + </view> | |
| 50 | + <view class="so-plate-word" :class="{ active: currentInputIndex == 5 }" @tap="inputSwitch" | |
| 51 | + data-index="5"> | |
| 52 | + <text>{{ currentInputValue[5] }}</text> | |
| 53 | + </view> | |
| 54 | + <view class="so-plate-word" :class="{ active: currentInputIndex == 6 }" @tap="inputSwitch" | |
| 55 | + data-index="6"> | |
| 56 | + <text>{{ currentInputValue[6] }}</text> | |
| 57 | + </view> | |
| 58 | + <view class="so-plate-word" :class="{ active: currentInputIndex == 7 }" @tap="inputSwitch" | |
| 59 | + v-if="type == 2" data-index="7"> | |
| 60 | + <text>{{ currentInputValue[7] }}</text> | |
| 61 | + </view> | |
| 62 | + </view> | |
| 63 | 63 | |
| 64 | 64 | |
| 65 | - </view> | |
| 65 | + </view> | |
| 66 | 66 | |
| 67 | - <view style="padding: 0 10px;position: fixed;bottom: 0;left:0"> | |
| 68 | - <view class="so-plate-foot" v-show="plateShowOrHide"> | |
| 69 | - <view class="so-plate-keyboard" :style="{height:keyboardHeight}"> | |
| 70 | - <view id="keyboard"> | |
| 71 | - <block v-if="inputType == 1"> | |
| 72 | - <view hover-class="hover" class="so-plate-key" v-for="el of provinceText" :key="el" | |
| 73 | - :data-value="el" @tap="chooseKey">{{ el }}</view> | |
| 74 | - </block> | |
| 75 | - <block v-if="inputType == 1"> | |
| 76 | - <text class="so-plate-key fill-block"></text> | |
| 77 | - <text class="so-plate-key fill-block"></text> | |
| 78 | - </block> | |
| 79 | - <block v-if="inputType >= 3"> | |
| 80 | - <view hover-class="hover" class="so-plate-key" v-for="el of numberText" :key="el" | |
| 81 | - :data-value="el" @tap="chooseKey">{{ el }}</view> | |
| 82 | - </block> | |
| 83 | - <block v-if="inputType >= 2"> | |
| 84 | - <view hover-class="hover" class="so-plate-key" v-for="el of wordText" :key="el" | |
| 85 | - :data-value="el" @tap="chooseKey">{{ el }}</view> | |
| 86 | - </block> | |
| 87 | - <block v-if="inputType == 3"> | |
| 88 | - <text v-for="el of fillBlock" :key="el.num" class="so-plate-key fill-block"></text> | |
| 89 | - </block> | |
| 90 | - <block v-if="inputType == 4"> | |
| 91 | - <view hover-class="hover" class="so-plate-key" v-for="el of lastWordText" :key="el" | |
| 92 | - :data-value="el" @tap="chooseKey">{{ el }}</view> | |
| 93 | - </block> | |
| 94 | - <text v-if="inputType == 4" class="so-plate-key fill-block"></text> | |
| 95 | - </view> | |
| 96 | - </view> | |
| 97 | - <view class="so-plate-btn-group"> | |
| 98 | - <view> | |
| 99 | - <button class="so-plate-btn so-plate-btn--cancel" @tap="plateShowOrHide = false">取消</button> | |
| 100 | - </view> | |
| 101 | - <view> | |
| 102 | - <button class="so-plate-btn so-plate-btn--delete" @tap="deleteKey">删除</button> | |
| 103 | - <button class="so-plate-btn so-plate-btn--submit" @tap="exportPlate">完成</button> | |
| 67 | + <view style="padding: 0 10px;position: fixed;bottom: 0;left:0"> | |
| 68 | + <view class="so-plate-foot" v-show="plateShowOrHide"> | |
| 69 | + <view class="so-plate-keyboard" :style="{height:keyboardHeight}"> | |
| 70 | + <view id="keyboard"> | |
| 71 | + <block v-if="inputType == 1"> | |
| 72 | + <view hover-class="hover" class="so-plate-key" v-for="el of provinceText" :key="el" | |
| 73 | + :data-value="el" @tap="chooseKey">{{ el }} | |
| 74 | + </view> | |
| 75 | + </block> | |
| 76 | + <block v-if="inputType == 1"> | |
| 77 | + <text class="so-plate-key fill-block"></text> | |
| 78 | + <text class="so-plate-key fill-block"></text> | |
| 79 | + </block> | |
| 80 | + <block v-if="inputType >= 3"> | |
| 81 | + <view hover-class="hover" class="so-plate-key" v-for="el of numberText" :key="el" | |
| 82 | + :data-value="el" @tap="chooseKey">{{ el }} | |
| 83 | + </view> | |
| 84 | + </block> | |
| 85 | + <block v-if="inputType >= 2"> | |
| 86 | + <view hover-class="hover" class="so-plate-key" v-for="el of wordText" :key="el" | |
| 87 | + :data-value="el" @tap="chooseKey">{{ el }} | |
| 88 | + </view> | |
| 89 | + </block> | |
| 90 | + <block v-if="inputType == 3"> | |
| 91 | + <text v-for="el of fillBlock" :key="el.num" class="so-plate-key fill-block"></text> | |
| 92 | + </block> | |
| 93 | + <block v-if="inputType == 4"> | |
| 94 | + <view hover-class="hover" class="so-plate-key" v-for="el of lastWordText" :key="el" | |
| 95 | + :data-value="el" @tap="chooseKey">{{ el }} | |
| 96 | + </view> | |
| 97 | + </block> | |
| 98 | + <text v-if="inputType == 4" class="so-plate-key fill-block"></text> | |
| 99 | + </view> | |
| 100 | + </view> | |
| 101 | + <view class="so-plate-btn-group"> | |
| 102 | + <view> | |
| 103 | + <button class="so-plate-btn so-plate-btn--cancel" @tap="plateShowOrHide = false">取消</button> | |
| 104 | + </view> | |
| 105 | + <view> | |
| 106 | + <button class="so-plate-btn so-plate-btn--delete" @tap="deleteKey">删除</button> | |
| 107 | + <button class="so-plate-btn so-plate-btn--submit" @tap="exportPlate">完成</button> | |
| 104 | 108 | |
| 105 | - </view> | |
| 109 | + </view> | |
| 106 | 110 | |
| 107 | - </view> | |
| 108 | - </view> | |
| 109 | - </view> | |
| 110 | - </view> | |
| 111 | + </view> | |
| 112 | + </view> | |
| 113 | + </view> | |
| 114 | + </view> | |
| 111 | 115 | </template> |
| 112 | 116 | <script> |
| 113 | - import carBg from 'static/inputCarNumber_pic/carBg.png' | |
| 117 | +import carBg from 'static/inputCarNumber_pic/carBg.png' | |
| 118 | +export default { | |
| 119 | + name: 'uni-plate-input', | |
| 120 | + data() { | |
| 121 | + return { | |
| 122 | + plateShowOrHide: false, | |
| 123 | + type: 1, //车牌类型 | |
| 124 | + currentInputIndex: 2, //当前编辑的输入框 | |
| 125 | + currentInputValue: ['苏', 'B', '', '', '', '', ''], | |
| 126 | + fillBlock: [{ | |
| 127 | + num: 11 | |
| 128 | + }, { | |
| 129 | + num: 12 | |
| 130 | + }, { | |
| 131 | + num: 13 | |
| 132 | + }, { | |
| 133 | + num: 14 | |
| 134 | + }, { | |
| 135 | + num: 15 | |
| 136 | + }, { | |
| 137 | + num: 16 | |
| 138 | + }], //避免:key报错 | |
| 139 | + keyboardHeightInit: false, | |
| 140 | + keyboardHeight: 'auto', | |
| 141 | + carBg: '', | |
| 142 | + provinceText: [ | |
| 143 | + '粤', | |
| 144 | + '京', | |
| 145 | + '冀', | |
| 146 | + '沪', | |
| 147 | + '津', | |
| 148 | + '晋', | |
| 149 | + '蒙', | |
| 150 | + '辽', | |
| 151 | + '吉', | |
| 152 | + '黑', | |
| 153 | + '苏', | |
| 154 | + '浙', | |
| 155 | + '皖', | |
| 156 | + '闽', | |
| 157 | + '赣', | |
| 158 | + '鲁', | |
| 159 | + '豫', | |
| 160 | + '鄂', | |
| 161 | + '湘', | |
| 162 | + '桂', | |
| 163 | + '琼', | |
| 164 | + '渝', | |
| 165 | + '川', | |
| 166 | + '贵', | |
| 167 | + '云', | |
| 168 | + '藏', | |
| 169 | + '陕', | |
| 170 | + '甘', | |
| 171 | + '青', | |
| 172 | + '宁', | |
| 173 | + '新' | |
| 174 | + ], | |
| 175 | + numberText: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'], | |
| 176 | + wordText: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', | |
| 177 | + 'V', 'W', 'X', 'Y', 'Z' | |
| 178 | + ], | |
| 179 | + lastWordText: ['港', '澳', '学', '领', '警'], | |
| 180 | + businessId: '' | |
| 181 | + }; | |
| 182 | + }, | |
| 183 | + props: { | |
| 184 | + // plate: { | |
| 185 | + // type: String | |
| 186 | + // } | |
| 187 | + }, | |
| 188 | + onLoad() { | |
| 189 | + this.type = 1; | |
| 190 | + this.currentInputValue = ['苏', 'B', '', '', '', '', '']; | |
| 191 | + this.currentInputIndex = 2; | |
| 192 | + let indexInfo = uni.getStorageSync("indexInfo"); | |
| 193 | + this.businessId = indexInfo.businessId; | |
| 194 | + }, | |
| 195 | + onShow() { | |
| 196 | + this.carBg = carBg | |
| 197 | + }, | |
| 198 | + computed: { | |
| 199 | + //输入框类型 | |
| 200 | + inputType() { | |
| 201 | + switch (this.currentInputIndex) { | |
| 202 | + case 0: | |
| 203 | + return 1; | |
| 204 | + break; | |
| 205 | + case 1: | |
| 206 | + return 2; | |
| 207 | + break; | |
| 208 | + case 2: | |
| 209 | + return 3; | |
| 210 | + break; | |
| 211 | + case 3: | |
| 212 | + return 3; | |
| 213 | + break; | |
| 214 | + case 4: | |
| 215 | + return 3; | |
| 216 | + break; | |
| 217 | + case 5: | |
| 218 | + return 3; | |
| 219 | + break; | |
| 220 | + case 6: | |
| 221 | + return this.type == 2 ? 3 : 4; | |
| 222 | + break; | |
| 223 | + case 7: | |
| 224 | + return 4; | |
| 225 | + break; | |
| 226 | + default: | |
| 227 | + return 1; | |
| 228 | + break; | |
| 229 | + } | |
| 230 | + } | |
| 231 | + }, | |
| 232 | + watch: { | |
| 233 | + // currentInputIndex:function(n,o){ | |
| 234 | + // if(!this.keyboardHeightInit) return | |
| 235 | + // this.$nextTick(()=>{ | |
| 236 | + // this.changeKeyboardHeight() | |
| 237 | + // }) | |
| 238 | + // } | |
| 239 | + }, | |
| 240 | + methods: { | |
| 241 | + //车牌类型切换 | |
| 242 | + typeChange(e) { | |
| 243 | + const { | |
| 244 | + value | |
| 245 | + } = e.detail; | |
| 246 | + this.type = parseInt(value) | |
| 247 | + this.currentInputIndex = 0 | |
| 248 | + if (value == 1) { | |
| 249 | + this.currentInputValue = ['苏', 'B', '', '', '', '', ''] | |
| 250 | + } else { | |
| 251 | + this.currentInputValue = ['苏', 'B', '', '', '', '', '', ''] | |
| 252 | + } | |
| 253 | + }, | |
| 254 | + inputSwitch(e) { | |
| 255 | + const { | |
| 256 | + index | |
| 257 | + } = e.currentTarget.dataset; | |
| 258 | + this.currentInputIndex = parseInt(index); | |
| 259 | + }, | |
| 260 | + chooseKey(e) { | |
| 261 | + const { | |
| 262 | + value | |
| 263 | + } = e.currentTarget.dataset; | |
| 264 | + this.$set(this.currentInputValue, this.currentInputIndex, value); | |
| 265 | + if (this.type == 1 && this.currentInputIndex < 6) { | |
| 266 | + this.currentInputIndex++ | |
| 267 | + } | |
| 268 | + if (this.type == 2 && this.currentInputIndex < 7) { | |
| 269 | + this.currentInputIndex++ | |
| 270 | + } | |
| 271 | + }, | |
| 272 | + deleteKey() { | |
| 273 | + this.$set(this.currentInputValue, this.currentInputIndex, '') | |
| 274 | + if (this.currentInputIndex != 0) this.currentInputIndex-- | |
| 275 | + }, | |
| 276 | + exportPlate() { | |
| 277 | + const plate = this.currentInputValue.join('') | |
| 278 | + let err = false | |
| 279 | + if (this.type === 1 && plate.length != 7) { | |
| 280 | + err = true | |
| 281 | + } else if (this.type === 2 && plate.length != 8) { | |
| 282 | + err = true | |
| 283 | + } | |
| 284 | + if (err) return uni.showToast({ | |
| 285 | + title: '请输入完整的车牌号码', | |
| 286 | + icon: 'error' | |
| 287 | + }) | |
| 288 | + console.log(plate) | |
| 289 | + this.getbBillQueryInfo(plate); | |
| 290 | + }, | |
| 291 | + getbBillQueryInfo(plate) { | |
| 292 | + let that = this | |
| 293 | + let paramsData = { | |
| 294 | + carNumber: plate, | |
| 295 | + pageNum: '1', | |
| 296 | + pageSize: '10', | |
| 297 | + businessId: that.businessId, | |
| 298 | + parkState: '10', | |
| 299 | + } | |
| 300 | + // 获取 接口 | |
| 301 | + that.$myRequest({ | |
| 302 | + url: that.$common.queryParkingRecordByCarNumbers, | |
| 303 | + method: 'POST', | |
| 304 | + data: that.$common.requestSign(paramsData) | |
| 305 | + }).then(res => { | |
| 306 | + console.log(res) | |
| 307 | + console.log(res.data.dataList[0]) | |
| 308 | + if(res.code == '0'){ | |
| 309 | + let data = res.data.dataList[0] | |
| 310 | + // that.parkName = data.parkName; | |
| 311 | + // that.parkInTime = data.parkInTime; | |
| 312 | + // that.staytime = data.parkDuration; | |
| 313 | + // that.due = data.totalFee; | |
| 314 | + // that.orderFee = data.unPayFee; | |
| 315 | + // that.orderId = data.orderId; | |
| 316 | + uni.navigateTo({ | |
| 317 | + url: '../parkPay/parkPay?optionData=' + JSON.stringify(data) | |
| 318 | + }) | |
| 319 | + } | |
| 114 | 320 | |
| 115 | - export default { | |
| 116 | - name: 'uni-plate-input', | |
| 117 | - data() { | |
| 118 | - return { | |
| 119 | - plateShowOrHide: false, | |
| 120 | - type: 1, //车牌类型 | |
| 121 | - currentInputIndex: 2, //当前编辑的输入框 | |
| 122 | - currentInputValue: ['苏', 'B', '', '', '', '', ''], | |
| 123 | - fillBlock: [{ | |
| 124 | - num: 11 | |
| 125 | - }, { | |
| 126 | - num: 12 | |
| 127 | - }, { | |
| 128 | - num: 13 | |
| 129 | - }, { | |
| 130 | - num: 14 | |
| 131 | - }, { | |
| 132 | - num: 15 | |
| 133 | - }, { | |
| 134 | - num: 16 | |
| 135 | - }], //避免:key报错 | |
| 136 | - keyboardHeightInit: false, | |
| 137 | - keyboardHeight: 'auto', | |
| 138 | - carBg: '', | |
| 139 | - provinceText: [ | |
| 140 | - '粤', | |
| 141 | - '京', | |
| 142 | - '冀', | |
| 143 | - '沪', | |
| 144 | - '津', | |
| 145 | - '晋', | |
| 146 | - '蒙', | |
| 147 | - '辽', | |
| 148 | - '吉', | |
| 149 | - '黑', | |
| 150 | - '苏', | |
| 151 | - '浙', | |
| 152 | - '皖', | |
| 153 | - '闽', | |
| 154 | - '赣', | |
| 155 | - '鲁', | |
| 156 | - '豫', | |
| 157 | - '鄂', | |
| 158 | - '湘', | |
| 159 | - '桂', | |
| 160 | - '琼', | |
| 161 | - '渝', | |
| 162 | - '川', | |
| 163 | - '贵', | |
| 164 | - '云', | |
| 165 | - '藏', | |
| 166 | - '陕', | |
| 167 | - '甘', | |
| 168 | - '青', | |
| 169 | - '宁', | |
| 170 | - '新' | |
| 171 | - ], | |
| 172 | - numberText: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'], | |
| 173 | - wordText: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', | |
| 174 | - 'V', 'W', 'X', 'Y', 'Z' | |
| 175 | - ], | |
| 176 | - lastWordText: ['港', '澳', '学', '领', '警'] | |
| 177 | - }; | |
| 178 | - }, | |
| 179 | - props: { | |
| 180 | - // plate: { | |
| 181 | - // type: String | |
| 182 | - // } | |
| 183 | - }, | |
| 184 | - onLoad() { | |
| 185 | - this.type = 1; | |
| 186 | - this.currentInputValue = ['苏', 'B', '', '', '', '', '']; | |
| 187 | - this.currentInputIndex = 2; | |
| 188 | - }, | |
| 189 | - onShow() { | |
| 190 | - this.carBg = carBg | |
| 191 | - }, | |
| 192 | - computed: { | |
| 193 | - //输入框类型 | |
| 194 | - inputType() { | |
| 195 | - switch (this.currentInputIndex) { | |
| 196 | - case 0: | |
| 197 | - return 1; | |
| 198 | - break; | |
| 199 | - case 1: | |
| 200 | - return 2; | |
| 201 | - break; | |
| 202 | - case 2: | |
| 203 | - return 3; | |
| 204 | - break; | |
| 205 | - case 3: | |
| 206 | - return 3; | |
| 207 | - break; | |
| 208 | - case 4: | |
| 209 | - return 3; | |
| 210 | - break; | |
| 211 | - case 5: | |
| 212 | - return 3; | |
| 213 | - break; | |
| 214 | - case 6: | |
| 215 | - return this.type == 2 ? 3 : 4; | |
| 216 | - break; | |
| 217 | - case 7: | |
| 218 | - return 4; | |
| 219 | - break; | |
| 220 | - default: | |
| 221 | - return 1; | |
| 222 | - break; | |
| 223 | - } | |
| 224 | - } | |
| 225 | - }, | |
| 226 | - watch: { | |
| 227 | - // currentInputIndex:function(n,o){ | |
| 228 | - // if(!this.keyboardHeightInit) return | |
| 229 | - // this.$nextTick(()=>{ | |
| 230 | - // this.changeKeyboardHeight() | |
| 231 | - // }) | |
| 232 | - // } | |
| 233 | - }, | |
| 234 | - methods: { | |
| 235 | - //车牌类型切换 | |
| 236 | - typeChange(e) { | |
| 237 | - const { | |
| 238 | - value | |
| 239 | - } = e.detail; | |
| 240 | - this.type = parseInt(value) | |
| 241 | - this.currentInputIndex = 0 | |
| 242 | - if (value == 1) { | |
| 243 | - this.currentInputValue = ['苏', 'B', '', '', '', '', ''] | |
| 244 | - } else { | |
| 245 | - this.currentInputValue = ['苏', 'B','', '', '', '', '', ''] | |
| 246 | - } | |
| 247 | - }, | |
| 248 | - inputSwitch(e) { | |
| 249 | - const { | |
| 250 | - index | |
| 251 | - } = e.currentTarget.dataset; | |
| 252 | - this.currentInputIndex = parseInt(index); | |
| 253 | - }, | |
| 254 | - chooseKey(e) { | |
| 255 | - const { | |
| 256 | - value | |
| 257 | - } = e.currentTarget.dataset; | |
| 258 | - this.$set(this.currentInputValue, this.currentInputIndex, value); | |
| 259 | - if (this.type == 1 && this.currentInputIndex < 6) { | |
| 260 | - this.currentInputIndex++ | |
| 261 | - } | |
| 262 | - if (this.type == 2 && this.currentInputIndex < 7) { | |
| 263 | - this.currentInputIndex++ | |
| 264 | - } | |
| 265 | - }, | |
| 266 | - deleteKey() { | |
| 267 | - this.$set(this.currentInputValue, this.currentInputIndex, '') | |
| 268 | - if (this.currentInputIndex != 0) this.currentInputIndex-- | |
| 269 | - }, | |
| 270 | - exportPlate() { | |
| 271 | - const plate = this.currentInputValue.join('') | |
| 272 | - let err = false | |
| 273 | - if (this.type === 1 && plate.length != 7) { | |
| 274 | - err = true | |
| 275 | - } else if (this.type === 2 && plate.length != 8) { | |
| 276 | - err = true | |
| 277 | - } | |
| 278 | - if (err) return uni.showToast({ | |
| 279 | - title: '请输入完整的车牌号码', | |
| 280 | - icon: 'error' | |
| 281 | - }) | |
| 282 | - | |
| 283 | - console.log(plate) | |
| 284 | - | |
| 285 | - uni.navigateTo({ | |
| 286 | - url: '../parkPay/parkPay?carNumber=' + plate | |
| 287 | - }) | |
| 288 | - }, | |
| 289 | - changeKeyboardHeight() { | |
| 290 | - const that = this | |
| 291 | - const query = uni.createSelectorQuery().in(this); | |
| 292 | - query.select('#keyboard').boundingClientRect(); | |
| 293 | - query.exec(function(res) { | |
| 294 | - if (res && res[0]) { | |
| 295 | - that.keyboardHeight = res[0].height + uni.upx2px(30) + 'px' | |
| 296 | - that.keyboardHeightInit = true | |
| 297 | - } | |
| 298 | - }); | |
| 299 | - } | |
| 300 | - }, | |
| 301 | - mounted() { | |
| 302 | - console.log(this.plate); | |
| 303 | - const plateKey = this.plate.split('') | |
| 304 | - if (plateKey.length === 7) { | |
| 305 | - this.type = 1 | |
| 306 | - } else if (plateKey.length === 8) { | |
| 307 | - this.type = 2 | |
| 308 | - } | |
| 309 | - if (plateKey.length === 7 || plateKey.length === 8) { | |
| 310 | - this.currentInputValue = plateKey | |
| 311 | - this.currentInputIndex = plateKey.length - 1 | |
| 312 | - } | |
| 313 | - | |
| 314 | - setTimeout(() => { //在动画结束之后才开始获取 | |
| 315 | - this.$nextTick(() => { | |
| 316 | - this.changeKeyboardHeight() | |
| 317 | - }) | |
| 318 | - }, 500); | |
| 319 | - } | |
| 320 | - }; | |
| 321 | + }) | |
| 322 | + }, | |
| 323 | + changeKeyboardHeight() { | |
| 324 | + const that = this | |
| 325 | + const query = uni.createSelectorQuery().in(this); | |
| 326 | + query.select('#keyboard').boundingClientRect(); | |
| 327 | + query.exec(function (res) { | |
| 328 | + if (res && res[0]) { | |
| 329 | + that.keyboardHeight = res[0].height + uni.upx2px(30) + 'px' | |
| 330 | + that.keyboardHeightInit = true | |
| 331 | + } | |
| 332 | + }); | |
| 333 | + } | |
| 334 | + }, | |
| 335 | + mounted() { | |
| 336 | + console.log(this.plate); | |
| 337 | + const plateKey = this.plate.split('') | |
| 338 | + if (plateKey.length === 7) { | |
| 339 | + this.type = 1 | |
| 340 | + } else if (plateKey.length === 8) { | |
| 341 | + this.type = 2 | |
| 342 | + } | |
| 343 | + if (plateKey.length === 7 || plateKey.length === 8) { | |
| 344 | + this.currentInputValue = plateKey | |
| 345 | + this.currentInputIndex = plateKey.length - 1 | |
| 346 | + } | |
| 347 | + setTimeout(() => { //在动画结束之后才开始获取 | |
| 348 | + this.$nextTick(() => { | |
| 349 | + this.changeKeyboardHeight() | |
| 350 | + }) | |
| 351 | + }, 500); | |
| 352 | + } | |
| 353 | +}; | |
| 321 | 354 | </script> |
| 322 | 355 | <style scoped lang="less"> |
| 323 | - @import 'uni-plate-input'; | |
| 356 | + @import 'uni-plate-input'; | |
| 324 | 357 | |
| 325 | - .bg-icon { | |
| 326 | - /*padding: 10px 0;*/ | |
| 327 | - height: 60px; | |
| 328 | - /*background: url("../../static/inputCarNumber_pic/carBg.png") no-repeat;*/ | |
| 329 | - /*background-size: 100% 100%;*/ | |
| 330 | - color: #FFF; | |
| 331 | - } | |
| 358 | + .bg-icon { | |
| 359 | + /*padding: 10px 0;*/ | |
| 360 | + height: 60px; | |
| 361 | + /*background: url("../../static/inputCarNumber_pic/carBg.png") no-repeat;*/ | |
| 362 | + /*background-size: 100% 100%;*/ | |
| 363 | + color: #FFF; | |
| 364 | + } | |
| 332 | 365 | |
| 333 | - .bac { | |
| 334 | - position: absolute; | |
| 335 | - width: 100%; | |
| 336 | - height: 60px; | |
| 337 | - } | |
| 366 | + .bac { | |
| 367 | + position: absolute; | |
| 368 | + width: 100%; | |
| 369 | + height: 60px; | |
| 370 | + } | |
| 338 | 371 | |
| 339 | - .bg-text { | |
| 340 | - width: 100%; | |
| 341 | - position: absolute; | |
| 342 | - top: 10px; | |
| 343 | - text-align: center; | |
| 372 | + .bg-text { | |
| 373 | + width: 100%; | |
| 374 | + position: absolute; | |
| 375 | + top: 10px; | |
| 376 | + text-align: center; | |
| 344 | 377 | |
| 345 | - } | |
| 378 | + } | |
| 346 | 379 | </style> | ... | ... |
pages/parkPay/parkPay.vue
| 1 | 1 | <template> |
| 2 | 2 | <view> |
| 3 | - <view v-show="showFlag" style="padding: 20px; text-align: center"> | |
| 4 | - 该车没有停放在该车场 | |
| 5 | - </view> | |
| 6 | - <view v-else> | |
| 7 | - <!-- <view class="order-time"> | |
| 3 | + | |
| 4 | + <!-- <view class="order-time"> | |
| 8 | 5 | 剩余支付时间: {{appOrderTimeout}} |
| 9 | 6 | </view> --> |
| 10 | 7 | |
| 11 | - <view class="order-title"> | |
| 12 | - 订单详情 | |
| 13 | - </view> | |
| 14 | - <view class="order-info"> | |
| 15 | - 车牌号:{{mycarNumber | tranNull}} | |
| 16 | - </view> | |
| 17 | - <view class="order-line"></view> | |
| 18 | - <view class="order-info"> | |
| 19 | - 停车场:{{parkName | tranNull}} | |
| 20 | - </view> | |
| 21 | - <view class="order-line"></view> | |
| 22 | - <view class="order-info"> | |
| 23 | - 进场时间:{{parkInTime | tranNull}} | |
| 24 | - </view> | |
| 25 | - <view class="order-line"></view> | |
| 26 | - <view class="order-info"> | |
| 27 | - 停车时间:{{staytime | timeFormatter}} | |
| 28 | - </view> | |
| 29 | - <view class="order-line"></view> | |
| 8 | + <view class="order-title"> | |
| 9 | + 订单详情 | |
| 10 | + </view> | |
| 11 | + <view class="order-info"> | |
| 12 | + 车牌号:{{mycarNumber | tranNull}} | |
| 13 | + </view> | |
| 14 | + <view class="order-line"></view> | |
| 15 | + <view class="order-info"> | |
| 16 | + 停车场:{{parkName | tranNull}} | |
| 17 | + </view> | |
| 18 | + <view class="order-line"></view> | |
| 19 | + <view class="order-info"> | |
| 20 | + 进场时间:{{parkInTime | tranNull}} | |
| 21 | + </view> | |
| 22 | + <view class="order-line"></view> | |
| 23 | + <view class="order-info"> | |
| 24 | + 停车时间:{{staytime | timeFormatter}} | |
| 25 | + </view> | |
| 26 | + <view class="order-line"></view> | |
| 27 | + <view class="order-info"> | |
| 28 | + 总计费用:{{due |toFixed2}}元 | |
| 29 | + </view> | |
| 30 | + <view class="order-line"></view> | |
| 31 | + | |
| 32 | + <view class="flex-row-justify-between"> | |
| 30 | 33 | <view class="order-info"> |
| 31 | - 总计费用:{{due |toFixed2}}元 | |
| 34 | + 支付金额 | |
| 32 | 35 | </view> |
| 33 | - <view class="order-line"></view> | |
| 34 | - | |
| 35 | - <view class="flex-row-justify-between"> | |
| 36 | - <view class="order-info"> | |
| 37 | - 支付金额 | |
| 36 | + <view class="flex-row-justify-end"> | |
| 37 | + <view class="order-info" style="font-weight:bold;font-size:17px ;"> | |
| 38 | + {{orderFee | toFixed2}} | |
| 38 | 39 | </view> |
| 39 | - <view class="flex-row-justify-end"> | |
| 40 | - <view class="order-info" style="font-weight:bold;font-size:17px ;"> | |
| 41 | - {{orderFee | toFixed2}} | |
| 42 | - </view> | |
| 43 | - <view class="order-info" style="margin-right: 50upx;margin-left: 0px;"> | |
| 44 | - 元 | |
| 45 | - </view> | |
| 40 | + <view class="order-info" style="margin-right: 50upx;margin-left: 0px;"> | |
| 41 | + 元 | |
| 46 | 42 | </view> |
| 47 | 43 | </view> |
| 44 | + </view> | |
| 48 | 45 | |
| 49 | - <view class="order-line-bold"></view> | |
| 46 | + <view class="order-line-bold"></view> | |
| 50 | 47 | |
| 51 | - <view class="order-title"> | |
| 52 | - 支付方法 | |
| 53 | - </view> | |
| 54 | - <view class="order-line"></view> | |
| 55 | - | |
| 56 | - <view class="orderwaysview"> | |
| 57 | - <!--<image src="../../static/orderInfo/orderinfo-wechat.png" class="orderways"></image>--> | |
| 58 | - <view class="order-info" style="margin-left: 15px;"> | |
| 59 | - 商户余额 | |
| 60 | - </view> | |
| 61 | - <image src="../../static/orderInfo/orderinfo-sel.png" class="orderwaysSel"></image> | |
| 48 | + <view class="order-title"> | |
| 49 | + 支付方法 | |
| 50 | + </view> | |
| 51 | + <view class="order-line"></view> | |
| 62 | 52 | |
| 53 | + <view class="orderwaysview"> | |
| 54 | + <!--<image src="../../static/orderInfo/orderinfo-wechat.png" class="orderways"></image>--> | |
| 55 | + <view class="order-info" style="margin-left: 15px;"> | |
| 56 | + 商户余额 | |
| 63 | 57 | </view> |
| 58 | + <image src="../../static/orderInfo/orderinfo-sel.png" class="orderwaysSel"></image> | |
| 64 | 59 | |
| 65 | - <view class="order-line"></view> | |
| 66 | - <button @click="payClick" class="button-sp-area" type="primary" plain="true">确认支付</button> | |
| 67 | 60 | </view> |
| 68 | 61 | |
| 69 | - | |
| 62 | + <view class="order-line"></view> | |
| 63 | + <button @click="payClick" class="button-sp-area" type="primary" plain="true">确认支付</button> | |
| 70 | 64 | |
| 71 | 65 | </view> |
| 72 | 66 | </template> |
| ... | ... | @@ -85,21 +79,22 @@ export default { |
| 85 | 79 | orderFee: '', |
| 86 | 80 | // appOrderTimeout:'0', |
| 87 | 81 | totalFee: '', //应收 |
| 88 | - showFlag: false, | |
| 89 | 82 | } |
| 90 | 83 | }, |
| 91 | 84 | onLoad(params) { |
| 92 | 85 | wx.showShareMenu({ |
| 93 | 86 | withShareTicket: true |
| 94 | 87 | }) |
| 95 | - this.mycarNumber = params.carNumber; | |
| 96 | - let indexInfo = uni.getStorageSync("indexInfo"); | |
| 97 | - this.businessId = indexInfo.businessId; | |
| 98 | - console.log(this.mycarNumber, this.businessId) | |
| 99 | - this.getbBillQueryInfo(); | |
| 88 | + let data = JSON.parse(params.optionData) | |
| 89 | + this.mycarNumber = data.carNumber | |
| 90 | + this.parkName = data.parkName; | |
| 91 | + this.parkInTime = data.parkInTime; | |
| 92 | + this.staytime = data.parkDuration; | |
| 93 | + this.due = data.totalFee; | |
| 94 | + this.orderFee = data.unPayFee; | |
| 95 | + this.orderId = data.orderId; | |
| 100 | 96 | }, |
| 101 | 97 | onShow() { |
| 102 | - | |
| 103 | 98 | }, |
| 104 | 99 | methods: { |
| 105 | 100 | payClick() { |
| ... | ... | @@ -133,36 +128,6 @@ export default { |
| 133 | 128 | }, 2000); |
| 134 | 129 | }) |
| 135 | 130 | }, |
| 136 | - getbBillQueryInfo() { | |
| 137 | - let that = this | |
| 138 | - let paramsData = { | |
| 139 | - carNumber: that.mycarNumber, | |
| 140 | - pageNum: '1', | |
| 141 | - pageSize: '10', | |
| 142 | - businessId: that.businessId, | |
| 143 | - parkState: '10', | |
| 144 | - } | |
| 145 | - // 获取 接口 | |
| 146 | - that.$myRequest({ | |
| 147 | - url: that.$common.queryParkingRecordByCarNumbers, | |
| 148 | - method: 'POST', | |
| 149 | - data: that.$common.requestSign(paramsData) | |
| 150 | - }).then(res => { | |
| 151 | - console.log(res.data.dataList[0]) | |
| 152 | - if (res.data.dataList.length > 0) { | |
| 153 | - let data = res.data.dataList[0] | |
| 154 | - that.parkName = data.parkName; | |
| 155 | - that.parkInTime = data.parkInTime; | |
| 156 | - that.staytime = data.parkDuration; | |
| 157 | - that.due = data.totalFee; | |
| 158 | - that.orderFee = data.unPayFee; | |
| 159 | - that.orderId = data.orderId; | |
| 160 | - that.showFlag = false | |
| 161 | - } else { | |
| 162 | - that.showFlag = true | |
| 163 | - } | |
| 164 | - }) | |
| 165 | - }, | |
| 166 | 131 | } |
| 167 | 132 | } |
| 168 | 133 | </script> | ... | ... |