@@ -525,12 +525,10 @@ function onSuccess(response: any) { | |||
BaseService.postN('/invw/api/transfer/import', {fileUrl: response.data.ossFilePath}).then((res: any) => { | |||
if (res && res.code === 0) { | |||
let bizContent = res.data; | |||
let info = bizContent.transferDetails || ""; | |||
let data = bizContent.transferDetails | |||
let newarr: any = [] | |||
data.forEach((column, index) => { | |||
return newarr.push( | |||
newarr.push( | |||
{ | |||
startId: column.startId, | |||
endId: column.endId, | |||
@@ -538,16 +536,17 @@ function onSuccess(response: any) { | |||
isShowBtn: false | |||
} | |||
); | |||
nextTick(()=>{ | |||
handleApplyCount(column,index) | |||
}) | |||
return newarr | |||
}) | |||
addForm.value.detailList = newarr; | |||
ElMessage.success(info) | |||
ElMessage.success("导入成功") | |||
} else { | |||
ElMessage.error(res.message) | |||
} | |||
}) | |||
} | |||
// 初始化还原数据 | |||
@@ -585,14 +584,14 @@ function validHandle(row: IObject, index) { | |||
// successTotal: bizContent.successTotal, | |||
// total: bizContent.total, | |||
// } | |||
// summary.value = true; | |||
// addForm.value.detailList[index] = { | |||
// ...addForm.value.detailList[index], | |||
summary.value = true; | |||
addForm.value.detailList[index] = { | |||
...addForm.value.detailList[index], | |||
// isShowBtn: true, | |||
// failTotal: bizContent.failTotal, | |||
// successTotal: bizContent.successTotal, | |||
successTotal: row.count, | |||
// total: bizContent.total, | |||
// } | |||
} | |||
// let msg = `${bizContent.info}, 总数:${bizContent.total},成功:${bizContent.successTotal},失败:${bizContent.failTotal}` | |||
ElMessage.success(res.message); | |||
} else { | |||
@@ -646,7 +645,6 @@ function addMoreHandle(row: IObject) { | |||
addForm.value.detailList.push({ | |||
startId: "", | |||
endId: "", | |||
// warranty: "", | |||
count: 0, | |||
isShowBtn: false, | |||
failTotal: 0, | |||
@@ -835,8 +833,7 @@ function saveHandle() { | |||
// 确认入库 | |||
function sureHandle() { | |||
console.log(addForm.value, idex); | |||
// console.log(addForm.value, idex); | |||
if (idex) { | |||
let params = { | |||
id: idex | |||
@@ -849,22 +846,6 @@ function sureHandle() { | |||
emit("closeHandle"); | |||
ElMessage.success("确认入库成功"); | |||
clearData(); | |||
// let bizContent = res.data | |||
// let url = bizContent.url || ""; | |||
// let fileName = bizContent.fileName ? `${bizContent.fileName}` : '初始设备入库明细' | |||
// if (url) { | |||
// //window.open(url) | |||
// //处理下载有文件名 | |||
// BaseService.getDownloadFileName(import.meta.env.VITE_APP_UPLOAD_URL + url, fileName) | |||
// btnLoding.value = false; | |||
// clearData(); | |||
// emit("refreshDataList"); | |||
// emit("closeHandle"); | |||
// ElMessage.success("确认入库成功"); | |||
// } else { | |||
// ElMessage.error("入库成功文件未返回"); | |||
// } | |||
} else { | |||
btnLoding.value = false; | |||
ElMessage.error(res.message); | |||
@@ -875,24 +856,22 @@ function sureHandle() { | |||
// 计算conut | |||
function handleApplyCount(row: IObject, index) { | |||
let startId = row.startId; | |||
let endId = row.endId; | |||
let inventoryType = addForm.value.inventoryType; | |||
let num = 0; | |||
if (inventoryType === 'CARD' && startId && endId) { | |||
let start: any = startId.toString().slice(3); | |||
let end: any = endId.toString().slice(3); | |||
let tem = bigNumSub(end, start); | |||
num = bigNumAdd(tem, '1'); | |||
} else if (inventoryType === 'OBU' && startId && endId) { | |||
let tem = bigNumSub(endId, startId); | |||
num = bigNumAdd(tem, '1'); | |||
} | |||
//解决合计刷新 | |||
let receiveVoValue = cloneDeep(addForm.value.detailList); | |||
receiveVoValue[index].count = num; | |||
addForm.value.detailList = receiveVoValue; | |||
if(row.startId.length == row.endId.length && (row.startId.length == 20 || row.startId.length == 16)) { | |||
let startId = row.startId; | |||
let endId = row.endId; | |||
let num = 0; | |||
if (startId && endId) { | |||
let start: any = startId.toString(); | |||
let end: any = endId.toString(); | |||
let tem = bigNumSub(end, start); | |||
num = bigNumAdd(tem, '1'); | |||
} | |||
//解决合计刷新 | |||
let receiveVoValue = cloneDeep(addForm.value.detailList); | |||
receiveVoValue[index].count = num; | |||
addForm.value.detailList = receiveVoValue; | |||
} | |||
} | |||
// 合并合计行 | |||
@@ -912,6 +891,7 @@ function arraySpanMethod({row, column, rowIndex, columnIndex}) { | |||
// 合计行计算 | |||
function getSummaries(param) { | |||
//table自定义合计行方法summary-method | |||
// console.log("====>",param) | |||
const {columns, data} = param; | |||
const sums: any = []; | |||
columns.forEach((column, index) => { | |||
@@ -931,12 +911,16 @@ function getSummaries(param) { | |||
if (sums[1]) { | |||
str = `共${data.length}号段,${sums[1]}个设备`; | |||
if (summary.value) { | |||
console.log(data, '-----'); | |||
const successTotal = data.map((item) => Number(item.successTotal)); | |||
let totalNum = sums[1] = successTotal.reduce((prev, curr) => { | |||
return prev + curr | |||
}, 0) | |||
str = str + '已校验可入库数量' + totalNum | |||
// console.log(data, '-----'); | |||
// 计算 successTotal 总和(自动过滤无效值) | |||
const totalNum = data.reduce((sum, item) => { | |||
const num = Number(item.successTotal); | |||
return sum + (isNaN(num) ? 0 : num); | |||
}, 0); | |||
// 更新 sums 和字符串(避免直接修改外部变量) | |||
sums[1] = totalNum; | |||
str = str + ',已校验可入库数量' + totalNum | |||
} | |||
} | |||
sums[1] = str; |
@@ -193,7 +193,6 @@ const emit = defineEmits([ | |||
"refreshDataList" | |||
]) | |||
const handleChange = (value) => { | |||
console.log(value) | |||
} | |||
const uploadUrl = "/minIo/upload" | |||
@@ -292,7 +291,7 @@ const rules = reactive({ | |||
brand: [{required: true, message: "请选择设备厂商", trigger: "blur"}], | |||
}) | |||
const props2 = { | |||
value: "id", | |||
value: "code", | |||
label: "name", | |||
children: "subordinateModel", | |||
// multiple: true, | |||
@@ -314,7 +313,6 @@ function changeDeviceType() { | |||
// 初始化 | |||
function init(row: any) { | |||
console.log("测试:",row) | |||
getLowerList(); | |||
// getAgency(); | |||
clearData(); | |||
@@ -353,7 +351,6 @@ function getInfo(id: string) { | |||
if (res && res.code === 0) { | |||
let bizContent = res.data | |||
let data = bizContent.enterApply || {}; | |||
console.log("===data", data); | |||
let detailList = bizContent.applyDetailsList || []; | |||
let list: any = []; | |||
detailList.map((item) => { | |||
@@ -389,7 +386,7 @@ function onSuccess(response: any) { | |||
BaseService.postN('/invw/api/enterApply/parseExcel', {excelUrl: response.data.ossFilePath}).then((res: any) => { | |||
if (res && res.code === 0) { | |||
let bizContent = res.data; | |||
console.log(bizContent) | |||
// console.log(bizContent) | |||
let info = bizContent.modelList || ""; | |||
let data = bizContent.modelList | |||
let newarr: any = [] | |||
@@ -405,14 +402,25 @@ function onSuccess(response: any) { | |||
); | |||
}) | |||
addForm.value.detailList = newarr; | |||
ElMessage.success(info) | |||
//进行排序 | |||
startIdSort(); | |||
ElMessage.success(res.message) | |||
} else { | |||
ElMessage.error(res.message) | |||
} | |||
}) | |||
} | |||
//号段排序,空格排到最后 | |||
function startIdSort() { | |||
addForm.value.detailList = addForm.value.detailList.sort((a, b) => { | |||
const isAEmpty = a.startId === "" || a.startId === undefined || a.startId === null; | |||
const isBEmpty = b.startId === "" || b.startId === undefined || b.startId === null; | |||
if (isAEmpty && !isBEmpty) return 1; // a是空,b不是,a排在后面 | |||
if (!isAEmpty && isBEmpty) return -1; // a不是空,b是空,a排在前面 | |||
return a.startId - b.startId; // 正常比较startId | |||
}); | |||
} | |||
// 初始化还原数据 | |||
@@ -521,9 +529,12 @@ function addMoreHandle(row: IObject) { | |||
}); | |||
} | |||
// 校验结束编号 | |||
//编号规则。设备类型是卡的话,位数是20位 设备类型是OBU的话,位数的16位 | |||
function validateEndId(rule: any, value: string, callback: (e?: Error) => any) { | |||
// 校验起始编号 | |||
function validateStartId( | |||
rule: any, | |||
value: string, | |||
callback: (e?: Error) => any | |||
) { | |||
let inventoryType = addForm.value.inventoryType; | |||
let indexArr = rule.field.split("-"); | |||
let index = indexArr[1]; | |||
@@ -532,40 +543,35 @@ function validateEndId(rule: any, value: string, callback: (e?: Error) => any) { | |||
return callback(new Error("必须是数字!")); | |||
} | |||
let length = val.length; | |||
//长度校验 | |||
if (inventoryType === "CARD" && length !== 20) { | |||
return callback(new Error("卡编号位数是20!")); | |||
} else if (inventoryType === "OBU" && length !== 16) { | |||
return callback(new Error("OBU编号位数是16!")); | |||
} | |||
//进行排序 | |||
startIdSort(); | |||
// 开始编号不能大于结束编号校验 | |||
if ( | |||
val && | |||
addForm.value.detailList[index].startId && | |||
val < addForm.value.detailList[index].startId | |||
addForm.value.detailList[index].endId && | |||
BigInt(val) > BigInt(addForm.value.detailList[index].endId) | |||
) { | |||
return callback(new Error("结束编号不能小于开始编号")); | |||
return callback(new Error("开始编号不能大于结束编号")); | |||
} | |||
if ( | |||
val && addForm.value.detailList.length < index && | |||
addForm.value.detailList[index + 1].startId && | |||
val >= addForm.value.detailList[index + 1].startId | |||
val && index>0 && | |||
addForm.value.detailList[index-1].endId && | |||
BigInt(val) <= BigInt(addForm.value.detailList[index-1].endId) | |||
) { | |||
return callback(new Error("结束编号要小于下一段的开始编号")); | |||
} | |||
// 列表中不能重复校验 | |||
let endIds = addForm.value.detailList.filter((item) => item.endId === val); | |||
if (endIds.length > 1) { | |||
callback(new Error("请检查,结束编号有重复")); | |||
return callback(new Error("开始编号要大于上一段的结束编号")); | |||
} | |||
callback(); | |||
} | |||
// 校验开始编号 | |||
function validateStartId( | |||
rule: any, | |||
value: string, | |||
callback: (e?: Error) => any | |||
) { | |||
// 校验结束编号 | |||
//编号规则。设备类型是卡的话,位数是20位 设备类型是OBU的话,位数的16位 | |||
function validateEndId(rule: any, value: string, callback: (e?: Error) => any) { | |||
let inventoryType = addForm.value.inventoryType; | |||
let indexArr = rule.field.split("-"); | |||
let index = indexArr[1]; | |||
@@ -574,31 +580,18 @@ function validateStartId( | |||
return callback(new Error("必须是数字!")); | |||
} | |||
let length = val.length; | |||
//长度校验 | |||
if (inventoryType === "CARD" && length !== 20) { | |||
return callback(new Error("卡编号位数是20!")); | |||
} else if (inventoryType === "OBU" && length !== 16) { | |||
return callback(new Error("OBU编号位数是16!")); | |||
} | |||
// 开始编号不能大于结束编号校验 | |||
if ( | |||
val && | |||
addForm.value.detailList[index].endId && | |||
val > addForm.value.detailList[index].endId | |||
) { | |||
return callback(new Error("开始编号不能大于结束编号")); | |||
} | |||
if ( | |||
val && index > 0 && | |||
addForm.value.detailList[index - 1].endId && | |||
val <= addForm.value.detailList[index - 1].endId | |||
addForm.value.detailList[index].startId && | |||
BigInt(val) < (addForm.value.detailList[index].startId) | |||
) { | |||
return callback(new Error("开始编号要大于上一段的结束编号")); | |||
} | |||
// 列表中不能重复校验 | |||
let startIds = addForm.value.detailList.filter((item) => item.startId === val); | |||
if (startIds.length > 1) { | |||
callback(new Error("请检查,起始编号有重复")); | |||
return callback(new Error("结束编号不能小于开始编号")); | |||
} | |||
callback(); | |||
} | |||
@@ -674,7 +667,6 @@ function saveHandle() { | |||
} | |||
list.push(tem); | |||
}) | |||
console.log(params); | |||
let params2 = {} | |||
params2.enterApplyDetailModels = list; | |||
@@ -682,13 +674,12 @@ function saveHandle() { | |||
params2.inventoryType = params.inventoryType; | |||
params2.ownType = params.ownType; | |||
params2.storeCode = params.storeCode; | |||
params2.agencyId = interfaceLowerListArr.value.find(item => item.id === params.storeCode).agencyId; | |||
params2.agencyId = interfaceLowerListArr.value.find(item => item.code === params.storeCode).agencyId; | |||
params2.version = params.version; | |||
params2.cardType = params.cardType; | |||
params2.obuType = params.obuType; | |||
// let api = '/invw/inventory/addinventoryapply'; | |||
let api = '/invw/api/enterApply/apply'; | |||
console.log("typeOption.value", typeOption.value) | |||
if (typeOption.value === 'add') { | |||
delete params2.id | |||
} | |||
@@ -828,7 +819,6 @@ function getSummaries(param) { | |||
// 获取仓库状态 | |||
function getLowerList() { | |||
// console.log("获取仓库列表") | |||
let params = { | |||
allType: 0 | |||
} | |||
@@ -847,7 +837,6 @@ function getLowerList() { | |||
// 获取仓库状态 | |||
function getAgency() { | |||
// console.log("获取产权列表") | |||
BaseService.postN('/invw/agency/list').then((res: any) => { | |||
if (res && res.code === 0) { | |||
let bizContent = res.data |
@@ -4,7 +4,7 @@ | |||
<el-select clearable v-model="searchForm.inventoryType" style="width: 200px" placeholder="请选择设备类型"> | |||
<el-option v-for="item in inventoryTypeList" :key="item.value" :label="item.label" :value="item.value" /> | |||
</el-select> | |||
<el-select clearable v-model="searchForm.brand" style="width: 200px" placeholder="请选择设备厂商(先选设备类型)"> | |||
<el-select clearable v-model="searchForm.brand" style="width: 260px" placeholder="请选择设备厂商(先选设备类型)"> | |||
<template v-slot="scope"> | |||
<span v-if="searchForm.inventoryType == 'CARD'"> | |||
<el-option v-for="item in cardManufacturerList" :key="item.value" :label="item.label" :value="item.value" /> | |||
@@ -230,7 +230,8 @@ const manufacturerList = computed(() => { | |||
}) | |||
const cardManufacturerList = computed(() => { | |||
// return $storeinitData.state.dictData['CARD_EQUIPMENT_MANUFACTURER_TYPE'] || [] | |||
return $storeinitData.state.dictData['CARD_BRAND'] || [] | |||
var newVar = $storeinitData.state.dictData['CARD_BRAND'] || []; | |||
return newVar | |||
}) | |||
const typeList = computed(() => { | |||
// return $storeinitData.state.dictData['DEVICE_TYPE'] || [] | |||
@@ -266,7 +267,6 @@ function deleteHandleShow(row: any) { | |||
// 获取仓库状态 | |||
function getLowerList() { | |||
// console.log("获取仓库列表") | |||
let params = { | |||
allType: 0 | |||
} | |||
@@ -274,7 +274,6 @@ function getLowerList() { | |||
// console.log(res) | |||
if (res && res.code === 0) { | |||
let bizContent = res.data | |||
console.log(bizContent) | |||
let data = bizContent.idNames || []; | |||
interfaceLowerListArr.value = data | |||
} else { | |||
@@ -503,25 +502,10 @@ function sureMoreHandle() { | |||
return | |||
} | |||
let ids = list.map((item) => item.id) | |||
BaseService.postN('/invw/inventory/inventoryinstorage', { id: ids }).then( | |||
BaseService.postN('/invw/api/enterApply/batchConfirm', { ids: ids }).then( | |||
(res: any) => { | |||
if (res && res.code === 0) { | |||
ElMessage.success('入库成功') | |||
// let bizContent = res.data | |||
// let url = bizContent.url || '' | |||
// let fileName = bizContent.fileName | |||
// ? `${bizContent.fileName}.xls` | |||
// : '初始设备入库明细.xls' | |||
// if (url) { | |||
// //window.open(url) | |||
// BaseService.download(url, {}, fileName) | |||
// ElMessage.success('入库成功') | |||
// getList() | |||
// btnLoading.value = false | |||
// } else { | |||
// btnLoading.value = false | |||
// ElMessage.error('入库成功文件未返回') | |||
// } | |||
ElMessage.success(res.message) | |||
} else { | |||
ElMessage.error(res.message) | |||
} |