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

File diff suppressed because it is too large Load Diff

View File

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

View File

@ -1,280 +1,355 @@
<template>
<view class="container">
<view class="form-panel">
<uni-forms ref="ebikeInfoForm" :modelValue="ebikeInfo" labelWidth="100px">
<uni-section title="车辆" type="line">
<uni-forms-item label="车辆编号" required name="bikeCode"
:rules="[{ required: true, errorMessage: '请扫描或输入车辆编号' }]">
<bikeCodeScan @scan-change="bikeCodeScanChange" :codeValue="ebikeInfo.bikeCode"
ref="bikeCodeScanRef" />
</uni-forms-item>
<uni-forms-item label="车辆型号" required name="bikeModel"
:rules="[{ required: true, errorMessage: '请输入车辆型号' }]">
<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">
<uni-forms-item label="中控IMEI" required :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 label="中控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 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>
</uni-forms-item>
</uni-section>
<uni-section title="电池" type="line">
<uni-forms-item label="电池编号" required :name="['ebikeBatteryInfo','batteryCode']"
:rules="[{ required: true, errorMessage: '请扫描或输入电池编号' }]">
<scanCode @scan-change="batteryCodeScanChange"
:codeValue="ebikeInfo.ebikeBatteryInfo.batteryCode" ref="scanCode_dc" />
</uni-forms-item>
</uni-section>
<uni-section title="头盔" type="line">
<uni-forms-item label="头盔编号" :name="['ebikeHelmetInfo','helmetCode']">
<scanCode @scan-change="helmetCodeScanChange" :codeValue="ebikeInfo.ebikeHelmetInfo.helmetCode"
ref="scanCode_tk" />
</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>
<view class="container">
<view class="form-panel">
<uni-forms ref="ebikeInfoForm" :modelValue="ebikeInfo" labelWidth="100px">
<uni-section title="车辆" type="line">
<uni-forms-item
label="车辆编号"
required
name="bikeCode"
:rules="[{ required: true, errorMessage: '请扫描或输入车辆编号' }]"
>
<bikeCodeScan
@scan-change="bikeCodeScanChange"
:codeValue="ebikeInfo.bikeCode"
ref="bikeCodeScanRef"
/>
</uni-forms-item>
<uni-forms-item
label="车辆型号"
required
name="bikeModel"
:rules="[{ required: true, errorMessage: '请输入车辆型号' }]"
>
<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">
<uni-forms-item
label="中控IMEI"
required
: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
label="中控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
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>
</uni-forms-item>
</uni-section>
<uni-section title="电池" type="line">
<uni-forms-item
label="电池编号"
required
:name="['ebikeBatteryInfo', 'batteryCode']"
:rules="[{ required: true, errorMessage: '请扫描或输入电池编号' }]"
>
<scanCode
@scan-change="batteryCodeScanChange"
:codeValue="ebikeInfo.ebikeBatteryInfo.batteryCode"
ref="scanCode_dc"
/>
</uni-forms-item>
</uni-section>
<uni-section title="头盔" type="line">
<uni-forms-item
label="头盔编号"
:name="['ebikeHelmetInfo', 'helmetCode']"
>
<scanCode
@scan-change="helmetCodeScanChange"
:codeValue="ebikeInfo.ebikeHelmetInfo.helmetCode"
ref="scanCode_tk"
/>
</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>
import {
ref,
reactive
} from 'vue';
import * as api from '@/utils/api.js';
import {
showModelMessage
} from '@/utils/tools';
const ebikeInfoForm = ref(null);
const bikeCodeScanRef = ref(null);
const ecuCodeScan_zk = ref(null);
const scanCode_dc = ref(null);
const scanCode_tk = ref(null);
import { ref, reactive } from "vue";
import * as api from "@/utils/api.js";
import { showModelMessage } from "@/utils/tools";
const ebikeInfoForm = ref(null);
const bikeCodeScanRef = ref(null);
const ecuCodeScan_zk = ref(null);
const scanCode_dc = ref(null);
const scanCode_tk = ref(null);
const ebikeInfo = ref({
bikeCode: '',
bikeModel: '',
bikeNumber: '',
ebikeEcuInfo: {
ecuCode: '',
ecuSn: '',
ecuModel: ''
},
ebikeBatteryInfo: {
batteryCode: ''
},
ebikeHelmetInfo: {
helmetCode: ''
}
});
const ebikeInfo = ref({
bikeCode: "",
bikeModel: "",
bikeNumber: "",
ebikeEcuInfo: {
ecuCode: "",
ecuSn: "",
ecuModel: "",
},
ebikeBatteryInfo: {
batteryCode: "",
},
ebikeHelmetInfo: {
helmetCode: "",
},
});
const ecuModelRange = [{
value: "乐摇摇",
text: "乐摇摇"
},
{
value: "美团",
text: "美团"
}
]
const ecuModelRange = [
{
value: "乐摇摇",
text: "乐摇摇",
},
{
value: "美团",
text: "美团",
},
];
const navButtonGroup = reactive([{
text: '入库',
backgroundColor: '#0078D4',
color: '#fff',
disable: false
}]);
const navButtonGroup = reactive([
{
text: "入库",
backgroundColor: "#0078D4",
color: "#fff",
disable: false,
},
]);
const navButtonClick = (e) => {
const index = e.index;
//navButtonGroup[index].disable = true;
if (index == 0) {
if (ebikeInfoForm.value) { //
ebikeInfoForm.value.validate().then((res) => {
handleSubmit();
}).catch((err) => {
//console.log('err', err);
});
} else {
//console.error('Form element is not available'); //
}
}
}
const navButtonClick = (e) => {
const index = e.index;
//navButtonGroup[index].disable = true;
if (index == 0) {
if (ebikeInfoForm.value) {
//
ebikeInfoForm.value
.validate()
.then((res) => {
handleSubmit();
})
.catch((err) => {
//console.log('err', err);
});
} else {
//console.error('Form element is not available'); //
}
}
};
const ecuModelChange = (value) => {
ebikeInfo.value.ebikeEcuInfo.ecuModel = value;
};
const ecuModelChange = (value) => {
ebikeInfo.value.ebikeEcuInfo.ecuModel = value;
};
const handleSubmit = () => {
const params = ebikeInfo.value;
api.callEbikeInfo("saveEbikeInfo", params).then((res) => {
uni.showToast({
title: "入库成功",
icon: 'success',
duration: 5000,
success: (res) => {
setTimeout(function() {
uni.navigateBack();
}, 5000);
}
});
}).catch((err) => {
uni.showToast({
title: "入库失败",
icon: 'error',
duration: 5000
});
});
};
const handleSubmit = () => {
const params = ebikeInfo.value;
api
.callEbikeInfo("saveEbikeInfo", params)
.then((res) => {
uni.showToast({
title: "入库成功",
icon: "success",
duration: 5000,
success: (res) => {
setTimeout(function () {
uni.navigateBack();
}, 5000);
},
});
})
.catch((err) => {
uni.showToast({
title: "入库失败",
icon: "error",
duration: 5000,
});
});
};
let timer;
const bikeCodeScanChange = (data) => {
// clearTimeout(timer);
ebikeInfo.value.bikeCode = data;
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("");
showModelMessage("车辆编号二维码未生成,请重新扫码或输入!")
}
}
let timer;
const bikeCodeScanChange = (data) => {
// clearTimeout(timer);
ebikeInfo.value.bikeCode = data;
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("");
showModelMessage("车辆编号二维码未生成,请重新扫码或输入!");
}
}
});
}
})
.catch((err) => {
ebikeInfo.value.bikeCode = data;
});
// }, 1000);
};
const ecuCodeScanChange = (data) => {
console.log(data);
let code = data["imei"] || data["sn"];
// if (!data["sn"]) return;
})
}
}).catch((err) => {
ebikeInfo.value.bikeCode = data;
});
// }, 1000);
};
const ecuCodeScanChange = (data) => {
if (!data["sn"]) return;
const params = {
componentCode: code,
componentType: "262711452730008", //
};
console.log(params);
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"];
ebikeInfo.value.ebikeEcuInfo.ecuSn = data["sn"];
} else {
ebikeInfo.value.ebikeEcuInfo.ecuCode = "";
ebikeInfo.value.ebikeEcuInfo.ecuSn = "";
ecuCodeScan_zk.value.onSetValue("");
showModelMessage("中控不在仓库中,请重新扫码或输入!");
}
} else {
ebikeInfo.value.ebikeEcuInfo.ecuCode = "";
ebikeInfo.value.ebikeEcuInfo.ecuSn = "";
ecuCodeScan_zk.value.onSetValue("");
showModelMessage("操作失败!");
}
});
};
api.callOperateApi("ebikeComponent/validateComponentExistence", params).then(res => {
if (res.code == 200) {
if (res.data) {
ebikeInfo.value.ebikeEcuInfo.ecuCode = data["imei"];
ebikeInfo.value.ebikeEcuInfo.ecuSn = data["sn"];
} else {
ebikeInfo.value.ebikeEcuInfo.ecuCode = "";
ebikeInfo.value.ebikeEcuInfo.ecuSn = "";
ecuCodeScan_zk.value.onSetValue("");
showModelMessage("中控不在仓库中,请重新扫码或输入!");
}
} else {
ebikeInfo.value.ebikeEcuInfo.ecuCode = "";
ebikeInfo.value.ebikeEcuInfo.ecuSn = "";
ecuCodeScan_zk.value.onSetValue("");
showModelMessage("操作失败!");
}
const batteryCodeScanChange = (data) => {
if (!data) return;
const params = {
componentCode: data,
componentType: "262711452730000", //
};
api
.callOperateApi("ebikeComponent/validateComponentExistence", params)
.then((res) => {
if (res.code == 200) {
if (res.data) {
ebikeInfo.value.ebikeBatteryInfo.batteryCode = data;
} else {
ebikeInfo.value.ebikeBatteryInfo.batteryCode = "";
scanCode_dc.value.onSetValue("");
showModelMessage("电池不在仓库中,请重新扫码或输入!");
}
} else {
scanCode_dc.value.onSetValue("");
ebikeInfo.value.ebikeBatteryInfo.batteryCode = "";
showModelMessage("操作失败!");
}
});
};
})
};
const batteryCodeScanChange = (data) => {
if (!data) return;
const params = {
"componentCode": data,
"componentType": "262711452730000" //
}
api.callOperateApi("ebikeComponent/validateComponentExistence", params).then(res => {
if (res.code == 200) {
if (res.data) {
ebikeInfo.value.ebikeBatteryInfo.batteryCode = data;
} else {
ebikeInfo.value.ebikeBatteryInfo.batteryCode = "";
scanCode_dc.value.onSetValue("");
showModelMessage("电池不在仓库中,请重新扫码或输入!");
}
} else {
scanCode_dc.value.onSetValue("");
ebikeInfo.value.ebikeBatteryInfo.batteryCode = "";
showModelMessage("操作失败!");
}
})
};
const helmetCodeScanChange = (data) => {
if (!data) return;
const params = {
"componentCode": data,
"componentType": "262711452730001" //
}
api.callOperateApi("ebikeComponent/validateComponentExistence", params).then(res => {
if (res.code == 200) {
if (res.data > 0) {
ebikeInfo.value.ebikeHelmetInfo.helmetCode = data;
} else {
ebikeInfo.value.ebikeHelmetInfo.helmetCode = "";
scanCode_tk.value.onSetValue("");
// bikeCodeScanRef.value.onSetValue("");
showModelMessage("头盔不在仓库中,请重新扫码或输入!")
}
} else {
scanCode_tk.value.onSetValue("");
ebikeInfo.value.ebikeHelmetInfo.helmetCode = "";
showModelMessage("操作失败!");
}
})
};
const helmetCodeScanChange = (data) => {
if (!data) return;
const params = {
componentCode: data,
componentType: "262711452730001", //
};
api
.callOperateApi("ebikeComponent/validateComponentExistence", params)
.then((res) => {
if (res.code == 200) {
if (res.data > 0) {
ebikeInfo.value.ebikeHelmetInfo.helmetCode = data;
} else {
ebikeInfo.value.ebikeHelmetInfo.helmetCode = "";
scanCode_tk.value.onSetValue("");
// bikeCodeScanRef.value.onSetValue("");
showModelMessage("头盔不在仓库中,请重新扫码或输入!");
}
} else {
scanCode_tk.value.onSetValue("");
ebikeInfo.value.ebikeHelmetInfo.helmetCode = "";
showModelMessage("操作失败!");
}
});
};
</script>
<style>
.container {
padding: 15px;
background-color: #fff;
}
.container {
padding: 15px;
background-color: #fff;
}
/* 全局样式 */
/* .uni-forms .uni-forms-item__label {
/* 全局样式 */
/* .uni-forms .uni-forms-item__label {
width: 100px !important;
} */
.form-panel {
padding-bottom: 55px;
}
.form-panel {
padding-bottom: 55px;
}
.nav-panel {
position: fixed;
bottom: 0rpx;
width: 100%;
padding-bottom: 10px;
z-index: 999;
background-color: #fff;
}
.nav-panel {
position: fixed;
bottom: 0rpx;
width: 100%;
padding-bottom: 10px;
z-index: 999;
background-color: #fff;
}
</style>