128 lines
2.7 KiB
Vue
Raw Normal View History

2025-04-14 10:57:27 +08:00
<template>
<div>
<image class="img" src="/static/userui/scan/back.png" />
<div class="divBox">
<div class="divScan">
<div class="divScanTitle">请扫码车身的二维码进行解锁</div>
<div class="box">
<div class="corner-final tl"></div>
<div class="corner-final tr"></div>
<div class="corner-final bl"></div>
<div class="corner-final br"></div>
<camera mode="scanCode" device-position="back" style="width: 100%; height: 100%;"
@scancode="scanCode" :flash="openLight" :initdone="(isInitDone = true)">
</camera>
</div>
<div v-if="showWorn" style="text-align: center;margin-top: 10px;">
<label style="background-color: #61D246;border-radius: 15px;padding: 5px 10px;color: white;">
<uni-icons type="checkbox-filled" size="16" color="white" />
扫码成功
</label>
</div>
</div>
<div class="divBottom">
<div class="divBtn" @click="openCode">
<image src="/static/userui/scan/code.png" />
<div>输入车辆编号</div>
</div>
<div class="divBtn" @click="clickLight">
<image src="/static/userui/scan/light.png" />
<div>{{openLight=="off"?"打开":"关闭"}}手电筒</div>
</div>
</div>
</div>
</div>
<!-- -->
</template>
<script setup>
import {
ref
} from 'vue';
import {
onLoad
} from "@dcloudio/uni-app";
2025-04-14 16:59:56 +08:00
import {
showModelMessage,
getUrlParams
} from "@/utils/tools.js";
import {
callOrdereApi
} from "@/utils/api.js";
2025-04-14 10:57:27 +08:00
let bikeCode = null;
const openLight = ref("off");
const showWorn = ref(false);
const oUser = uni.getStorageSync("wechat_user");
let type = null;
2025-04-14 16:59:56 +08:00
onLoad((options) => {
2025-04-14 10:57:27 +08:00
type = options["type"];
});
2025-04-14 16:59:56 +08:00
function openCode() {
2025-04-14 10:57:27 +08:00
uni.navigateTo({
2025-04-14 16:59:56 +08:00
url: "/pages/user/scan/inputcode"
2025-04-14 10:57:27 +08:00
})
}
function scanCode(res) {
const {
result
} = res.detail;
if (!result || result.indexOf("number") == -1) {
showModelMessage("无效的车辆二维码");
return;
}
2025-04-14 16:59:56 +08:00
if(bikeCode) return;
2025-04-14 10:57:27 +08:00
const options = getUrlParams(result);
bikeCode = options["number"];
2025-04-14 16:59:56 +08:00
showModelMessage(bikeCode)
if (type == "ride") {
addRide()
2025-04-14 10:57:27 +08:00
}
}
2025-04-14 16:59:56 +08:00
2025-04-14 10:57:27 +08:00
//订单
2025-04-14 16:59:56 +08:00
function addRide() {
2025-04-14 10:57:27 +08:00
const {
userId
} = oUser;
const params = {
userId,
2025-04-14 16:59:56 +08:00
bikeCode
2025-04-14 10:57:27 +08:00
}
callOrdereApi("userOrders/saveRide", params, "post").then(res => {
const {
code,
message
} = res;
if (code != 200) {
showModelMessage(message);
setTimeout(()=>{
2025-04-14 16:59:56 +08:00
bikeCode=null;
},1000);
return;
}
showWorn.value = true;
setTimeout(() => {
uni.navigateTo({
url: "/pages/user/home/home"
})
}, 1000);
2025-04-14 10:57:27 +08:00
})
}
function clickLight() {
2025-04-14 16:59:56 +08:00
openLight.value = openLight.value === "off" ? "on" : "off";
uni.vibrateShort();
2025-04-14 10:57:27 +08:00
}
</script>
<style scoped>
@import url("scancode.css");
</style>