fix:修改部分功能

This commit is contained in:
5g0Wp7Zy 2025-07-10 14:43:10 +08:00
parent e24b20bd06
commit 1b9aa5d30d
4 changed files with 1381 additions and 1061 deletions

View File

@ -1,61 +1,56 @@
<template> <template>
<view> <view>
<uni-easyinput class="uni-mt-5" @blur="onInput" v-model="inputCodeValue" placeholder="请扫描或输入车辆编号" <uni-easyinput
suffixIcon="scan" @iconClick="onScan"> class="uni-mt-5"
@blur="onInput"
v-model="inputCodeValue"
placeholder="请扫描或输入车辆编号"
suffixIcon="scan"
@iconClick="onScan"
>
</uni-easyinput> </uni-easyinput>
</view> </view>
</template> </template>
<script setup> <script setup>
import { import { ref, onMounted } from "vue";
ref, import { showModelMessage, getUrlParams } from "@/utils/tools.js";
onMounted
} from 'vue';
import {
showModelMessage,
getUrlParams
} from '@/utils/tools.js';
const inputCodeValue = ref(''); const inputCodeValue = ref("");
const { const { codeValue } = defineProps(["codeValue"]);
codeValue
} = defineProps(["codeValue"]);
inputCodeValue.value = codeValue; inputCodeValue.value = codeValue;
const emit = defineEmits(['scan-change']); const emit = defineEmits(["scan-change"]);
const onScan = () => { const onScan = () => {
uni.scanCode({ uni.scanCode({
onlyFromCamera: true, // onlyFromCamera: true, //
scanType: ["qrCode"], scanType: ["qrCode"],
success: function (res) { success: function (res) {
const { const { result } = res;
result
} = res;
if (!result || result.indexOf("number") == -1) { if (!result || result.indexOf("number") == -1) {
showModelMessage("无效的车辆二维码"); showModelMessage("无效的车辆二维码");
inputCodeValue.value = ""; inputCodeValue.value = "";
emit('scan-change', ""); emit("scan-change", "");
} else { } else {
const params = getUrlParams(result); const params = getUrlParams(result);
inputCodeValue.value = params["number"]; inputCodeValue.value = params["number"];
emit('scan-change', params["number"]); emit("scan-change", params["number"]);
} }
} },
}) });
}; };
const onInput = (value) => { const onInput = (value) => {
console.log(value, "onInput");
if (value.detail.value == "") return; if (value.detail.value == "") return;
inputCodeValue.value = value.detail.value; inputCodeValue.value = value.detail.value;
emit('scan-change', value.detail.value); emit("scan-change", value.detail.value);
} };
const onSetValue = (value) => { const onSetValue = (value) => {
inputCodeValue.value = value; inputCodeValue.value = value;
} };
defineExpose({ defineExpose({
onSetValue onSetValue,
}); });
</script> </script>
<style> <style></style>
</style>

View File

@ -6,9 +6,12 @@
:default-page-no="1" :default-page-no="1"
:default-page-size="5" :default-page-size="5"
:auto-show-back-to-top="true" :auto-show-back-to-top="true"
:paging-style="{
'background-color': ' #f3f4f6',
}"
> >
<template #top> <template #top>
<view class="flex"> <view class="flex" style="background-color: white">
<view class="search"> <view class="search">
<uni-search-bar <uni-search-bar
radius="5" radius="5"
@ -245,7 +248,7 @@ const sjztlist = ref([
const paging = ref(null); const paging = ref(null);
const status = ref("more"); //,more,loadingnoMore const status = ref("more"); //,more,loadingnoMore
const selectedItems = ref([]); const selectedItems = ref(["12123123"]);
const usableHeight = ref(0); const usableHeight = ref(0);
onMounted(() => { onMounted(() => {
// //
@ -480,7 +483,7 @@ const navButtonClick = (res) => {
<style scoped> <style scoped>
.container { .container {
padding: 10px 0px 0px 0px; padding: 10px 0px 0px 0px;
background-color: #f3f4f6; /* background-color: #f3f4f6; */
} }
.list-title { .list-title {

View File

@ -3,65 +3,117 @@
<view class="form-panel"> <view class="form-panel">
<uni-forms ref="ebikeInfoForm" :modelValue="ebikeInfo" labelWidth="100px"> <uni-forms ref="ebikeInfoForm" :modelValue="ebikeInfo" labelWidth="100px">
<uni-section title="车辆" type="line"> <uni-section title="车辆" type="line">
<uni-forms-item label="车辆编号" required name="bikeCode" <uni-forms-item
:rules="[{ required: true, errorMessage: '请扫描或输入车辆编号' }]"> label="车辆编号"
<bikeCodeScan @scan-change="bikeCodeScanChange" :codeValue="ebikeInfo.bikeCode" required
ref="bikeCodeScanRef" /> name="bikeCode"
:rules="[{ required: true, errorMessage: '请扫描或输入车辆编号' }]"
>
<bikeCodeScan
@scan-change="bikeCodeScanChange"
:codeValue="ebikeInfo.bikeCode"
ref="bikeCodeScanRef"
/>
</uni-forms-item> </uni-forms-item>
<uni-forms-item label="车辆型号" required name="bikeModel" <uni-forms-item
:rules="[{ required: true, errorMessage: '请输入车辆型号' }]"> label="车辆型号"
<uni-easyinput v-model="ebikeInfo.bikeModel" placeholder="请输入车辆型号" /> required
name="bikeModel"
:rules="[{ required: true, errorMessage: '请输入车辆型号' }]"
>
<uni-easyinput
v-model="ebikeInfo.bikeModel"
placeholder="请输入车辆型号"
/>
</uni-forms-item> </uni-forms-item>
<uni-forms-item label="车牌号" name="bikeNumber"> <uni-forms-item label="车牌号" name="bikeNumber">
<uni-easyinput v-model="ebikeInfo.bikeNumber" placeholder="请输入车牌号" /> <uni-easyinput
v-model="ebikeInfo.bikeNumber"
placeholder="请输入车牌号"
/>
</uni-forms-item> </uni-forms-item>
</uni-section> </uni-section>
<uni-section title="中控" type="line"> <uni-section title="中控" type="line">
<uni-forms-item label="中控IMEI" required :name="['ebikeEcuInfo','ecuCode']" <uni-forms-item
:rules="[{ required: true, errorMessage: '请扫描或输入中控IMEI' }]"> label="中控IMEI"
<ecuCodeScan @scan-change="ecuCodeScanChange" :codeValue="ebikeInfo.ebikeEcuInfo.ecuCode" required
ref="ecuCodeScan_zk" /> :name="['ebikeEcuInfo', 'ecuCode']"
:rules="[{ required: true, errorMessage: '请扫描或输入中控IMEI' }]"
>
<ecuCodeScan
@scan-change="ecuCodeScanChange"
:codeValue="ebikeInfo.ebikeEcuInfo.ecuCode"
ref="ecuCodeScan_zk"
/>
</uni-forms-item> </uni-forms-item>
<uni-forms-item label="中控SN" required :name="['ebikeEcuInfo','ecuSn']" <uni-forms-item
:rules="[{ required: true, errorMessage: '请输入中控SN' }]"> label="中控SN"
<uni-easyinput v-model="ebikeInfo.ebikeEcuInfo.ecuSn" placeholder="请输入中控SN" /> required
:name="['ebikeEcuInfo', 'ecuSn']"
:rules="[{ required: true, errorMessage: '请输入中控SN' }]"
>
<uni-easyinput
v-model="ebikeInfo.ebikeEcuInfo.ecuSn"
placeholder="请输入中控SN"
/>
</uni-forms-item> </uni-forms-item>
<uni-forms-item label="中控品牌" required :name="['ebikeEcuInfo','ecuModel']" <uni-forms-item
:rules="[{ required: true, errorMessage: '请选择中控品牌' }]"> label="中控品牌"
<uni-data-select v-model="ebikeInfo.ebikeEcuInfo.ecuModel" :localdata="ecuModelRange" required
@change="ecuModelChange" placeholder="请选择中控品牌"></uni-data-select> :name="['ebikeEcuInfo', 'ecuModel']"
:rules="[{ required: true, errorMessage: '请选择中控品牌' }]"
>
<uni-data-select
v-model="ebikeInfo.ebikeEcuInfo.ecuModel"
:localdata="ecuModelRange"
@change="ecuModelChange"
placeholder="请选择中控品牌"
></uni-data-select>
</uni-forms-item> </uni-forms-item>
</uni-section> </uni-section>
<uni-section title="电池" type="line"> <uni-section title="电池" type="line">
<uni-forms-item label="电池编号" required :name="['ebikeBatteryInfo','batteryCode']" <uni-forms-item
:rules="[{ required: true, errorMessage: '请扫描或输入电池编号' }]"> label="电池编号"
<scanCode @scan-change="batteryCodeScanChange" required
:codeValue="ebikeInfo.ebikeBatteryInfo.batteryCode" ref="scanCode_dc" /> :name="['ebikeBatteryInfo', 'batteryCode']"
:rules="[{ required: true, errorMessage: '请扫描或输入电池编号' }]"
>
<scanCode
@scan-change="batteryCodeScanChange"
:codeValue="ebikeInfo.ebikeBatteryInfo.batteryCode"
ref="scanCode_dc"
/>
</uni-forms-item> </uni-forms-item>
</uni-section> </uni-section>
<uni-section title="头盔" type="line"> <uni-section title="头盔" type="line">
<uni-forms-item label="头盔编号" :name="['ebikeHelmetInfo','helmetCode']"> <uni-forms-item
<scanCode @scan-change="helmetCodeScanChange" :codeValue="ebikeInfo.ebikeHelmetInfo.helmetCode" label="头盔编号"
ref="scanCode_tk" /> :name="['ebikeHelmetInfo', 'helmetCode']"
>
<scanCode
@scan-change="helmetCodeScanChange"
:codeValue="ebikeInfo.ebikeHelmetInfo.helmetCode"
ref="scanCode_tk"
/>
</uni-forms-item> </uni-forms-item>
</uni-section> </uni-section>
</uni-forms> </uni-forms>
</view> </view>
</view> </view>
<view class="nav-panel"> <view class="nav-panel">
<c-uni-goods-nav :fill="true" :options="[]" :buttonGroup="navButtonGroup" @buttonClick="navButtonClick" /> <c-uni-goods-nav
:fill="true"
:options="[]"
:buttonGroup="navButtonGroup"
@buttonClick="navButtonClick"
/>
</view> </view>
</template> </template>
<script setup> <script setup>
import { import { ref, reactive } from "vue";
ref, import * as api from "@/utils/api.js";
reactive import { showModelMessage } from "@/utils/tools";
} from 'vue';
import * as api from '@/utils/api.js';
import {
showModelMessage
} from '@/utils/tools';
const ebikeInfoForm = ref(null); const ebikeInfoForm = ref(null);
const bikeCodeScanRef = ref(null); const bikeCodeScanRef = ref(null);
const ecuCodeScan_zk = ref(null); const ecuCodeScan_zk = ref(null);
@ -69,54 +121,61 @@
const scanCode_tk = ref(null); const scanCode_tk = ref(null);
const ebikeInfo = ref({ const ebikeInfo = ref({
bikeCode: '', bikeCode: "",
bikeModel: '', bikeModel: "",
bikeNumber: '', bikeNumber: "",
ebikeEcuInfo: { ebikeEcuInfo: {
ecuCode: '', ecuCode: "",
ecuSn: '', ecuSn: "",
ecuModel: '' ecuModel: "",
}, },
ebikeBatteryInfo: { ebikeBatteryInfo: {
batteryCode: '' batteryCode: "",
}, },
ebikeHelmetInfo: { ebikeHelmetInfo: {
helmetCode: '' helmetCode: "",
} },
}); });
const ecuModelRange = [{ const ecuModelRange = [
{
value: "乐摇摇", value: "乐摇摇",
text: "乐摇摇" text: "乐摇摇",
}, },
{ {
value: "美团", value: "美团",
text: "美团" text: "美团",
} },
] ];
const navButtonGroup = reactive([{ const navButtonGroup = reactive([
text: '入库', {
backgroundColor: '#0078D4', text: "入库",
color: '#fff', backgroundColor: "#0078D4",
disable: false color: "#fff",
}]); disable: false,
},
]);
const navButtonClick = (e) => { const navButtonClick = (e) => {
const index = e.index; const index = e.index;
//navButtonGroup[index].disable = true; //navButtonGroup[index].disable = true;
if (index == 0) { if (index == 0) {
if (ebikeInfoForm.value) { // if (ebikeInfoForm.value) {
ebikeInfoForm.value.validate().then((res) => { //
ebikeInfoForm.value
.validate()
.then((res) => {
handleSubmit(); handleSubmit();
}).catch((err) => { })
.catch((err) => {
//console.log('err', err); //console.log('err', err);
}); });
} else { } else {
//console.error('Form element is not available'); // //console.error('Form element is not available'); //
} }
} }
} };
const ecuModelChange = (value) => { const ecuModelChange = (value) => {
ebikeInfo.value.ebikeEcuInfo.ecuModel = value; ebikeInfo.value.ebikeEcuInfo.ecuModel = value;
@ -124,22 +183,25 @@
const handleSubmit = () => { const handleSubmit = () => {
const params = ebikeInfo.value; const params = ebikeInfo.value;
api.callEbikeInfo("saveEbikeInfo", params).then((res) => { api
.callEbikeInfo("saveEbikeInfo", params)
.then((res) => {
uni.showToast({ uni.showToast({
title: "入库成功", title: "入库成功",
icon: 'success', icon: "success",
duration: 5000, duration: 5000,
success: (res) => { success: (res) => {
setTimeout(function () { setTimeout(function () {
uni.navigateBack(); uni.navigateBack();
}, 5000); }, 5000);
} },
}); });
}).catch((err) => { })
.catch((err) => {
uni.showToast({ uni.showToast({
title: "入库失败", title: "入库失败",
icon: 'error', icon: "error",
duration: 5000 duration: 5000,
}); });
}); });
}; };
@ -150,40 +212,52 @@
ebikeInfo.value.bikeCode = data; ebikeInfo.value.bikeCode = data;
if (!data) return; if (!data) return;
// timer = setTimeout(function() { // timer = setTimeout(function() {
api.callEbikeInfo("getBikeINfoData?bikeCode=" + data).then((res) => { api
.callEbikeInfo("getBikeINfoData?bikeCode=" + data)
.then((res) => {
if (res.code == 200 && res.data && res.data.bikeId) { if (res.code == 200 && res.data && res.data.bikeId) {
showModelMessage("车辆信息已存在!") showModelMessage("车辆信息已存在!");
ebikeInfo.value.bikeCode = ""; ebikeInfo.value.bikeCode = "";
bikeCodeScanRef.value.onSetValue(""); bikeCodeScanRef.value.onSetValue("");
} else { } else {
api.callOperateApi("ebikeBikeQrcode/checkBikeCodeExistence?bikeCode=" + data, {}, api
"get").then(res => { .callOperateApi(
"ebikeBikeQrcode/checkBikeCodeExistence?bikeCode=" + data,
{},
"get"
)
.then((res) => {
if (res.code == 200) { if (res.code == 200) {
if (res.data > 0) { if (res.data > 0) {
ebikeInfo.value.bikeCode = data; ebikeInfo.value.bikeCode = data;
} else { } else {
ebikeInfo.value.bikeCode = ""; ebikeInfo.value.bikeCode = "";
bikeCodeScanRef.value.onSetValue(""); bikeCodeScanRef.value.onSetValue("");
showModelMessage("车辆编号二维码未生成,请重新扫码或输入!") showModelMessage("车辆编号二维码未生成,请重新扫码或输入!");
} }
} }
});
}
}) })
} .catch((err) => {
}).catch((err) => {
ebikeInfo.value.bikeCode = data; ebikeInfo.value.bikeCode = data;
}); });
// }, 1000); // }, 1000);
}; };
const ecuCodeScanChange = (data) => { const ecuCodeScanChange = (data) => {
if (!data["sn"]) return; console.log(data);
let code = data["imei"] || data["sn"];
// if (!data["sn"]) return;
const params = { const params = {
"componentCode": data["sn"], componentCode: code,
"componentType": "262711452730008" // componentType: "262711452730008", //
} };
console.log(params);
api.callOperateApi("ebikeComponent/validateComponentExistence", params).then(res => { api
.callOperateApi("ebikeComponent/validateComponentExistence", params)
.then((res) => {
if (res.code == 200) { if (res.code == 200) {
if (res.data) { if (res.data) {
ebikeInfo.value.ebikeEcuInfo.ecuCode = data["imei"]; ebikeInfo.value.ebikeEcuInfo.ecuCode = data["imei"];
@ -200,17 +274,18 @@
ecuCodeScan_zk.value.onSetValue(""); ecuCodeScan_zk.value.onSetValue("");
showModelMessage("操作失败!"); showModelMessage("操作失败!");
} }
});
})
}; };
const batteryCodeScanChange = (data) => { const batteryCodeScanChange = (data) => {
if (!data) return; if (!data) return;
const params = { const params = {
"componentCode": data, componentCode: data,
"componentType": "262711452730000" // componentType: "262711452730000", //
} };
api.callOperateApi("ebikeComponent/validateComponentExistence", params).then(res => { api
.callOperateApi("ebikeComponent/validateComponentExistence", params)
.then((res) => {
if (res.code == 200) { if (res.code == 200) {
if (res.data) { if (res.data) {
ebikeInfo.value.ebikeBatteryInfo.batteryCode = data; ebikeInfo.value.ebikeBatteryInfo.batteryCode = data;
@ -224,17 +299,18 @@
ebikeInfo.value.ebikeBatteryInfo.batteryCode = ""; ebikeInfo.value.ebikeBatteryInfo.batteryCode = "";
showModelMessage("操作失败!"); showModelMessage("操作失败!");
} }
});
})
}; };
const helmetCodeScanChange = (data) => { const helmetCodeScanChange = (data) => {
if (!data) return; if (!data) return;
const params = { const params = {
"componentCode": data, componentCode: data,
"componentType": "262711452730001" // componentType: "262711452730001", //
} };
api.callOperateApi("ebikeComponent/validateComponentExistence", params).then(res => { api
.callOperateApi("ebikeComponent/validateComponentExistence", params)
.then((res) => {
if (res.code == 200) { if (res.code == 200) {
if (res.data > 0) { if (res.data > 0) {
ebikeInfo.value.ebikeHelmetInfo.helmetCode = data; ebikeInfo.value.ebikeHelmetInfo.helmetCode = data;
@ -242,15 +318,14 @@
ebikeInfo.value.ebikeHelmetInfo.helmetCode = ""; ebikeInfo.value.ebikeHelmetInfo.helmetCode = "";
scanCode_tk.value.onSetValue(""); scanCode_tk.value.onSetValue("");
// bikeCodeScanRef.value.onSetValue(""); // bikeCodeScanRef.value.onSetValue("");
showModelMessage("头盔不在仓库中,请重新扫码或输入!") showModelMessage("头盔不在仓库中,请重新扫码或输入!");
} }
} else { } else {
scanCode_tk.value.onSetValue(""); scanCode_tk.value.onSetValue("");
ebikeInfo.value.ebikeHelmetInfo.helmetCode = ""; ebikeInfo.value.ebikeHelmetInfo.helmetCode = "";
showModelMessage("操作失败!"); showModelMessage("操作失败!");
} }
});
})
}; };
</script> </script>