2025-04-14 10:57:27 +08:00
|
|
|
<template>
|
|
|
|
|
<view class="container">
|
|
|
|
|
<view class="form-panel">
|
|
|
|
|
<uni-forms ref="ebikeInfoForm" :modelValue="ebikeInfo" labelWidth="100px">
|
|
|
|
|
<uni-section title="车辆" type="line">
|
2025-05-20 14:30:55 +08:00
|
|
|
<uni-forms-item label="车辆编号" required name="bikeCode"
|
|
|
|
|
:rules="[{ required: true, errorMessage: '请扫描或输入车辆编号' }]">
|
|
|
|
|
<bikeCodeScan @scan-change="bikeCodeScanChange" :codeValue="ebikeInfo.bikeCode"
|
|
|
|
|
ref="bikeCodeScanRef" />
|
2025-04-14 10:57:27 +08:00
|
|
|
</uni-forms-item>
|
2025-05-20 14:30:55 +08:00
|
|
|
<uni-forms-item label="车辆型号" required name="bikeModel"
|
|
|
|
|
:rules="[{ required: true, errorMessage: '请输入车辆型号' }]">
|
2025-04-14 10:57:27 +08:00
|
|
|
<uni-easyinput v-model="ebikeInfo.bikeModel" placeholder="请输入车辆型号" />
|
|
|
|
|
</uni-forms-item>
|
|
|
|
|
<uni-forms-item label="车牌号" name="bikeNumber">
|
|
|
|
|
<uni-easyinput v-model="ebikeInfo.bikeNumber" placeholder="请输入车牌号" />
|
|
|
|
|
</uni-forms-item>
|
|
|
|
|
</uni-section>
|
|
|
|
|
<uni-section title="中控" type="line">
|
2025-05-29 17:08:26 +08:00
|
|
|
<uni-forms-item label="中控IMEI" required :name="['ebikeEcuInfo','ecuCode']"
|
|
|
|
|
:rules="[{ required: true, errorMessage: '请扫描或输入中控IMEI' }]">
|
2025-05-28 11:24:25 +08:00
|
|
|
<ecuCodeScan @scan-change="ecuCodeScanChange" :codeValue="ebikeInfo.ebikeEcuInfo.ecuCode"
|
|
|
|
|
ref="ecuCodeScan_zk" />
|
2025-04-14 10:57:27 +08:00
|
|
|
</uni-forms-item>
|
2025-05-29 17:08:26 +08:00
|
|
|
<uni-forms-item label="中控SN" required :name="['ebikeEcuInfo','ecuSn']"
|
|
|
|
|
:rules="[{ required: true, errorMessage: '请输入中控SN' }]">
|
|
|
|
|
<uni-easyinput v-model="ebikeInfo.ebikeEcuInfo.ecuSn" placeholder="请输入中控SN" />
|
2025-04-14 10:57:27 +08:00
|
|
|
</uni-forms-item>
|
2025-05-20 14:30:55 +08:00
|
|
|
<uni-forms-item label="中控品牌" required :name="['ebikeEcuInfo','ecuModel']"
|
|
|
|
|
:rules="[{ required: true, errorMessage: '请选择中控品牌' }]">
|
|
|
|
|
<uni-data-select v-model="ebikeInfo.ebikeEcuInfo.ecuModel" :localdata="ecuModelRange"
|
|
|
|
|
@change="ecuModelChange" placeholder="请选择中控品牌"></uni-data-select>
|
2025-04-14 10:57:27 +08:00
|
|
|
</uni-forms-item>
|
|
|
|
|
</uni-section>
|
|
|
|
|
<uni-section title="电池" type="line">
|
2025-05-20 14:30:55 +08:00
|
|
|
<uni-forms-item label="电池编号" required :name="['ebikeBatteryInfo','batteryCode']"
|
|
|
|
|
:rules="[{ required: true, errorMessage: '请扫描或输入电池编号' }]">
|
2025-05-27 18:22:45 +08:00
|
|
|
<scanCode @scan-change="batteryCodeScanChange"
|
2025-05-28 11:24:25 +08:00
|
|
|
:codeValue="ebikeInfo.ebikeBatteryInfo.batteryCode" ref="scanCode_dc" />
|
2025-04-14 10:57:27 +08:00
|
|
|
</uni-forms-item>
|
|
|
|
|
</uni-section>
|
|
|
|
|
<uni-section title="头盔" type="line">
|
|
|
|
|
<uni-forms-item label="头盔编号" :name="['ebikeHelmetInfo','helmetCode']">
|
2025-05-28 11:24:25 +08:00
|
|
|
<scanCode @scan-change="helmetCodeScanChange" :codeValue="ebikeInfo.ebikeHelmetInfo.helmetCode"
|
|
|
|
|
ref="scanCode_tk" />
|
2025-04-14 10:57:27 +08:00
|
|
|
</uni-forms-item>
|
|
|
|
|
</uni-section>
|
|
|
|
|
</uni-forms>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="nav-panel">
|
|
|
|
|
<c-uni-goods-nav :fill="true" :options="[]" :buttonGroup="navButtonGroup" @buttonClick="navButtonClick" />
|
|
|
|
|
</view>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script setup>
|
2025-05-20 14:30:55 +08:00
|
|
|
import {
|
|
|
|
|
ref,
|
|
|
|
|
reactive
|
|
|
|
|
} from 'vue';
|
2025-04-14 10:57:27 +08:00
|
|
|
import * as api from '@/utils/api.js';
|
2025-05-20 14:30:55 +08:00
|
|
|
import {
|
|
|
|
|
showModelMessage
|
|
|
|
|
} from '@/utils/tools';
|
2025-04-14 10:57:27 +08:00
|
|
|
const ebikeInfoForm = ref(null);
|
|
|
|
|
const bikeCodeScanRef = ref(null);
|
2025-05-28 11:24:25 +08:00
|
|
|
const ecuCodeScan_zk = ref(null);
|
|
|
|
|
const scanCode_dc = ref(null);
|
|
|
|
|
const scanCode_tk = ref(null);
|
2025-05-20 14:30:55 +08:00
|
|
|
|
2025-04-14 10:57:27 +08:00
|
|
|
const ebikeInfo = ref({
|
|
|
|
|
bikeCode: '',
|
|
|
|
|
bikeModel: '',
|
2025-05-20 14:30:55 +08:00
|
|
|
bikeNumber: '',
|
2025-04-14 10:57:27 +08:00
|
|
|
ebikeEcuInfo: {
|
|
|
|
|
ecuCode: '',
|
2025-05-29 17:08:26 +08:00
|
|
|
ecuSn: '',
|
2025-04-14 10:57:27 +08:00
|
|
|
ecuModel: ''
|
|
|
|
|
},
|
|
|
|
|
ebikeBatteryInfo: {
|
|
|
|
|
batteryCode: ''
|
|
|
|
|
},
|
|
|
|
|
ebikeHelmetInfo: {
|
|
|
|
|
helmetCode: ''
|
|
|
|
|
}
|
|
|
|
|
});
|
2025-05-20 14:30:55 +08:00
|
|
|
|
|
|
|
|
const ecuModelRange = [{
|
|
|
|
|
value: "乐摇摇",
|
|
|
|
|
text: "乐摇摇"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
value: "美团",
|
|
|
|
|
text: "美团"
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
|
2025-04-14 10:57:27 +08:00
|
|
|
const navButtonGroup = reactive([{
|
|
|
|
|
text: '入库',
|
|
|
|
|
backgroundColor: '#0078D4',
|
|
|
|
|
color: '#fff',
|
|
|
|
|
disable: false
|
2025-05-20 14:30:55 +08:00
|
|
|
}]);
|
|
|
|
|
|
|
|
|
|
const navButtonClick = (e) => {
|
2025-04-14 10:57:27 +08:00
|
|
|
const index = e.index;
|
|
|
|
|
//navButtonGroup[index].disable = true;
|
2025-05-20 14:30:55 +08:00
|
|
|
if (index == 0) {
|
2025-04-14 10:57:27 +08:00
|
|
|
if (ebikeInfoForm.value) { // 确保表单元素已挂载
|
|
|
|
|
ebikeInfoForm.value.validate().then((res) => {
|
|
|
|
|
handleSubmit();
|
|
|
|
|
}).catch((err) => {
|
|
|
|
|
//console.log('err', err);
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
//console.error('Form element is not available'); // 调试信息,以防万一
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-05-20 14:30:55 +08:00
|
|
|
|
|
|
|
|
const ecuModelChange = (value) => {
|
2025-04-14 10:57:27 +08:00
|
|
|
ebikeInfo.value.ebikeEcuInfo.ecuModel = value;
|
|
|
|
|
};
|
2025-05-20 14:30:55 +08:00
|
|
|
|
2025-04-14 10:57:27 +08:00
|
|
|
const handleSubmit = () => {
|
2025-05-20 14:30:55 +08:00
|
|
|
const params = ebikeInfo.value;
|
|
|
|
|
api.callEbikeInfo("saveEbikeInfo", params).then((res) => {
|
2025-04-14 10:57:27 +08:00
|
|
|
uni.showToast({
|
|
|
|
|
title: "入库成功",
|
|
|
|
|
icon: 'success',
|
|
|
|
|
duration: 5000,
|
|
|
|
|
success: (res) => {
|
2025-05-20 14:30:55 +08:00
|
|
|
setTimeout(function() {
|
|
|
|
|
uni.navigateBack();
|
2025-04-14 10:57:27 +08:00
|
|
|
}, 5000);
|
|
|
|
|
}
|
|
|
|
|
});
|
2025-05-20 14:30:55 +08:00
|
|
|
}).catch((err) => {
|
|
|
|
|
uni.showToast({
|
|
|
|
|
title: "入库失败",
|
|
|
|
|
icon: 'error',
|
|
|
|
|
duration: 5000
|
|
|
|
|
});
|
|
|
|
|
});
|
2025-04-14 10:57:27 +08:00
|
|
|
};
|
2025-05-20 14:30:55 +08:00
|
|
|
|
2025-04-14 10:57:27 +08:00
|
|
|
let timer;
|
|
|
|
|
const bikeCodeScanChange = (data) => {
|
2025-05-20 14:30:55 +08:00
|
|
|
// clearTimeout(timer);
|
2025-04-14 10:57:27 +08:00
|
|
|
ebikeInfo.value.bikeCode = data;
|
2025-05-20 14:30:55 +08:00
|
|
|
if (!data) return;
|
|
|
|
|
// timer = setTimeout(function() {
|
|
|
|
|
api.callEbikeInfo("getBikeINfoData?bikeCode=" + data).then((res) => {
|
|
|
|
|
if (res.code == 200 && res.data && res.data.bikeId) {
|
|
|
|
|
showModelMessage("车辆信息已存在!")
|
|
|
|
|
ebikeInfo.value.bikeCode = "";
|
|
|
|
|
bikeCodeScanRef.value.onSetValue("");
|
|
|
|
|
} else {
|
|
|
|
|
api.callOperateApi("ebikeBikeQrcode/checkBikeCodeExistence?bikeCode=" + data, {},
|
|
|
|
|
"get").then(res => {
|
|
|
|
|
if (res.code == 200) {
|
|
|
|
|
if (res.data > 0) {
|
|
|
|
|
ebikeInfo.value.bikeCode = data;
|
|
|
|
|
} else {
|
|
|
|
|
ebikeInfo.value.bikeCode = "";
|
|
|
|
|
bikeCodeScanRef.value.onSetValue("");
|
2025-05-22 17:37:49 +08:00
|
|
|
showModelMessage("车辆编号二维码未生成,请重新扫码或输入!")
|
2025-05-20 14:30:55 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}).catch((err) => {
|
|
|
|
|
ebikeInfo.value.bikeCode = data;
|
|
|
|
|
});
|
|
|
|
|
// }, 1000);
|
2025-04-14 10:57:27 +08:00
|
|
|
};
|
|
|
|
|
const ecuCodeScanChange = (data) => {
|
2025-05-28 11:24:25 +08:00
|
|
|
if (!data["sn"]) return;
|
|
|
|
|
|
|
|
|
|
const params = {
|
|
|
|
|
"componentCode": data["sn"],
|
|
|
|
|
"componentType": "262711452730008" //中控
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
api.callOperateApi("ebikeComponent/validateComponentExistence", params).then(res => {
|
|
|
|
|
if (res.code == 200) {
|
|
|
|
|
if (res.data) {
|
|
|
|
|
ebikeInfo.value.ebikeEcuInfo.ecuCode = data["imei"];
|
2025-05-29 17:08:26 +08:00
|
|
|
ebikeInfo.value.ebikeEcuInfo.ecuSn = data["sn"];
|
2025-05-28 11:24:25 +08:00
|
|
|
} else {
|
|
|
|
|
ebikeInfo.value.ebikeEcuInfo.ecuCode = "";
|
2025-05-29 17:08:26 +08:00
|
|
|
ebikeInfo.value.ebikeEcuInfo.ecuSn = "";
|
2025-05-28 11:24:25 +08:00
|
|
|
ecuCodeScan_zk.value.onSetValue("");
|
|
|
|
|
showModelMessage("中控不在仓库中,请重新扫码或输入!");
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
ebikeInfo.value.ebikeEcuInfo.ecuCode = "";
|
2025-05-29 17:08:26 +08:00
|
|
|
ebikeInfo.value.ebikeEcuInfo.ecuSn = "";
|
2025-05-28 11:24:25 +08:00
|
|
|
ecuCodeScan_zk.value.onSetValue("");
|
|
|
|
|
showModelMessage("操作失败!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
})
|
2025-04-14 10:57:27 +08:00
|
|
|
};
|
2025-05-20 14:30:55 +08:00
|
|
|
|
2025-04-14 10:57:27 +08:00
|
|
|
const batteryCodeScanChange = (data) => {
|
2025-05-22 17:37:49 +08:00
|
|
|
if (!data) return;
|
2025-05-28 11:24:25 +08:00
|
|
|
const params = {
|
|
|
|
|
"componentCode": data,
|
|
|
|
|
"componentType": "262711452730000" //电池
|
|
|
|
|
}
|
|
|
|
|
api.callOperateApi("ebikeComponent/validateComponentExistence", params).then(res => {
|
2025-05-22 17:37:49 +08:00
|
|
|
if (res.code == 200) {
|
2025-05-28 11:24:25 +08:00
|
|
|
if (res.data) {
|
2025-05-22 17:37:49 +08:00
|
|
|
ebikeInfo.value.ebikeBatteryInfo.batteryCode = data;
|
|
|
|
|
} else {
|
|
|
|
|
ebikeInfo.value.ebikeBatteryInfo.batteryCode = "";
|
2025-05-28 11:24:25 +08:00
|
|
|
scanCode_dc.value.onSetValue("");
|
|
|
|
|
showModelMessage("电池不在仓库中,请重新扫码或输入!");
|
2025-05-22 17:37:49 +08:00
|
|
|
}
|
2025-05-28 11:24:25 +08:00
|
|
|
} else {
|
|
|
|
|
scanCode_dc.value.onSetValue("");
|
|
|
|
|
ebikeInfo.value.ebikeBatteryInfo.batteryCode = "";
|
|
|
|
|
showModelMessage("操作失败!");
|
2025-05-22 17:37:49 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
})
|
2025-04-14 10:57:27 +08:00
|
|
|
};
|
2025-05-20 14:30:55 +08:00
|
|
|
|
2025-04-14 10:57:27 +08:00
|
|
|
const helmetCodeScanChange = (data) => {
|
2025-05-22 17:37:49 +08:00
|
|
|
if (!data) return;
|
2025-05-28 11:24:25 +08:00
|
|
|
const params = {
|
|
|
|
|
"componentCode": data,
|
|
|
|
|
"componentType": "262711452730001" //头盔
|
|
|
|
|
}
|
|
|
|
|
api.callOperateApi("ebikeComponent/validateComponentExistence", params).then(res => {
|
2025-05-20 14:30:55 +08:00
|
|
|
if (res.code == 200) {
|
|
|
|
|
if (res.data > 0) {
|
|
|
|
|
ebikeInfo.value.ebikeHelmetInfo.helmetCode = data;
|
|
|
|
|
} else {
|
|
|
|
|
ebikeInfo.value.ebikeHelmetInfo.helmetCode = "";
|
2025-05-28 11:24:25 +08:00
|
|
|
scanCode_tk.value.onSetValue("");
|
2025-05-20 14:30:55 +08:00
|
|
|
// bikeCodeScanRef.value.onSetValue("");
|
2025-05-28 11:24:25 +08:00
|
|
|
showModelMessage("头盔不在仓库中,请重新扫码或输入!")
|
2025-05-20 14:30:55 +08:00
|
|
|
}
|
2025-05-28 11:24:25 +08:00
|
|
|
} else {
|
|
|
|
|
scanCode_tk.value.onSetValue("");
|
|
|
|
|
ebikeInfo.value.ebikeHelmetInfo.helmetCode = "";
|
|
|
|
|
showModelMessage("操作失败!");
|
2025-05-20 14:30:55 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
})
|
2025-04-14 10:57:27 +08:00
|
|
|
};
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style>
|
|
|
|
|
.container {
|
|
|
|
|
padding: 15px;
|
|
|
|
|
background-color: #fff;
|
|
|
|
|
}
|
2025-05-20 14:30:55 +08:00
|
|
|
|
2025-04-14 10:57:27 +08:00
|
|
|
/* 全局样式 */
|
2025-05-20 14:30:55 +08:00
|
|
|
/* .uni-forms .uni-forms-item__label {
|
2025-04-14 10:57:27 +08:00
|
|
|
width: 100px !important;
|
|
|
|
|
} */
|
2025-05-20 14:30:55 +08:00
|
|
|
|
|
|
|
|
.form-panel {
|
2025-04-14 10:57:27 +08:00
|
|
|
padding-bottom: 55px;
|
|
|
|
|
}
|
2025-05-20 14:30:55 +08:00
|
|
|
|
|
|
|
|
.nav-panel {
|
2025-04-14 10:57:27 +08:00
|
|
|
position: fixed;
|
|
|
|
|
bottom: 0rpx;
|
|
|
|
|
width: 100%;
|
|
|
|
|
padding-bottom: 10px;
|
|
|
|
|
z-index: 999;
|
2025-05-20 14:30:55 +08:00
|
|
|
background-color: #fff;
|
2025-04-14 10:57:27 +08:00
|
|
|
}
|
2025-05-20 14:30:55 +08:00
|
|
|
</style>
|