BaseService.postN('/invw/api/transfer/import', {fileUrl: response.data.ossFilePath}).then((res: any) => { | BaseService.postN('/invw/api/transfer/import', {fileUrl: response.data.ossFilePath}).then((res: any) => { | ||||
if (res && res.code === 0) { | if (res && res.code === 0) { | ||||
let bizContent = res.data; | let bizContent = res.data; | ||||
let info = bizContent.transferDetails || ""; | |||||
let data = bizContent.transferDetails | let data = bizContent.transferDetails | ||||
let newarr: any = [] | let newarr: any = [] | ||||
data.forEach((column, index) => { | data.forEach((column, index) => { | ||||
return newarr.push( | |||||
newarr.push( | |||||
{ | { | ||||
startId: column.startId, | startId: column.startId, | ||||
endId: column.endId, | endId: column.endId, | ||||
isShowBtn: false | isShowBtn: false | ||||
} | } | ||||
); | ); | ||||
nextTick(()=>{ | |||||
handleApplyCount(column,index) | |||||
}) | |||||
return newarr | |||||
}) | }) | ||||
addForm.value.detailList = newarr; | addForm.value.detailList = newarr; | ||||
ElMessage.success(info) | |||||
ElMessage.success("导入成功") | |||||
} else { | } else { | ||||
ElMessage.error(res.message) | ElMessage.error(res.message) | ||||
} | } | ||||
}) | }) | ||||
} | } | ||||
// 初始化还原数据 | // 初始化还原数据 | ||||
// successTotal: bizContent.successTotal, | // successTotal: bizContent.successTotal, | ||||
// total: bizContent.total, | // 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, | // isShowBtn: true, | ||||
// failTotal: bizContent.failTotal, | // failTotal: bizContent.failTotal, | ||||
// successTotal: bizContent.successTotal, | |||||
successTotal: row.count, | |||||
// total: bizContent.total, | // total: bizContent.total, | ||||
// } | |||||
} | |||||
// let msg = `${bizContent.info}, 总数:${bizContent.total},成功:${bizContent.successTotal},失败:${bizContent.failTotal}` | // let msg = `${bizContent.info}, 总数:${bizContent.total},成功:${bizContent.successTotal},失败:${bizContent.failTotal}` | ||||
ElMessage.success(res.message); | ElMessage.success(res.message); | ||||
} else { | } else { | ||||
addForm.value.detailList.push({ | addForm.value.detailList.push({ | ||||
startId: "", | startId: "", | ||||
endId: "", | endId: "", | ||||
// warranty: "", | |||||
count: 0, | count: 0, | ||||
isShowBtn: false, | isShowBtn: false, | ||||
failTotal: 0, | failTotal: 0, | ||||
// 确认入库 | // 确认入库 | ||||
function sureHandle() { | function sureHandle() { | ||||
console.log(addForm.value, idex); | |||||
// console.log(addForm.value, idex); | |||||
if (idex) { | if (idex) { | ||||
let params = { | let params = { | ||||
id: idex | id: idex | ||||
emit("closeHandle"); | emit("closeHandle"); | ||||
ElMessage.success("确认入库成功"); | ElMessage.success("确认入库成功"); | ||||
clearData(); | 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 { | } else { | ||||
btnLoding.value = false; | btnLoding.value = false; | ||||
ElMessage.error(res.message); | ElMessage.error(res.message); | ||||
// 计算conut | // 计算conut | ||||
function handleApplyCount(row: IObject, index) { | 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; | |||||
} | |||||
} | } | ||||
// 合并合计行 | // 合并合计行 | ||||
// 合计行计算 | // 合计行计算 | ||||
function getSummaries(param) { | function getSummaries(param) { | ||||
//table自定义合计行方法summary-method | //table自定义合计行方法summary-method | ||||
// console.log("====>",param) | |||||
const {columns, data} = param; | const {columns, data} = param; | ||||
const sums: any = []; | const sums: any = []; | ||||
columns.forEach((column, index) => { | columns.forEach((column, index) => { | ||||
if (sums[1]) { | if (sums[1]) { | ||||
str = `共${data.length}号段,${sums[1]}个设备`; | str = `共${data.length}号段,${sums[1]}个设备`; | ||||
if (summary.value) { | 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; | sums[1] = str; |
"refreshDataList" | "refreshDataList" | ||||
]) | ]) | ||||
const handleChange = (value) => { | const handleChange = (value) => { | ||||
console.log(value) | |||||
} | } | ||||
const uploadUrl = "/minIo/upload" | const uploadUrl = "/minIo/upload" | ||||
brand: [{required: true, message: "请选择设备厂商", trigger: "blur"}], | brand: [{required: true, message: "请选择设备厂商", trigger: "blur"}], | ||||
}) | }) | ||||
const props2 = { | const props2 = { | ||||
value: "id", | |||||
value: "code", | |||||
label: "name", | label: "name", | ||||
children: "subordinateModel", | children: "subordinateModel", | ||||
// multiple: true, | // multiple: true, | ||||
// 初始化 | // 初始化 | ||||
function init(row: any) { | function init(row: any) { | ||||
console.log("测试:",row) | |||||
getLowerList(); | getLowerList(); | ||||
// getAgency(); | // getAgency(); | ||||
clearData(); | clearData(); | ||||
if (res && res.code === 0) { | if (res && res.code === 0) { | ||||
let bizContent = res.data | let bizContent = res.data | ||||
let data = bizContent.enterApply || {}; | let data = bizContent.enterApply || {}; | ||||
console.log("===data", data); | |||||
let detailList = bizContent.applyDetailsList || []; | let detailList = bizContent.applyDetailsList || []; | ||||
let list: any = []; | let list: any = []; | ||||
detailList.map((item) => { | detailList.map((item) => { | ||||
BaseService.postN('/invw/api/enterApply/parseExcel', {excelUrl: response.data.ossFilePath}).then((res: any) => { | BaseService.postN('/invw/api/enterApply/parseExcel', {excelUrl: response.data.ossFilePath}).then((res: any) => { | ||||
if (res && res.code === 0) { | if (res && res.code === 0) { | ||||
let bizContent = res.data; | let bizContent = res.data; | ||||
console.log(bizContent) | |||||
// console.log(bizContent) | |||||
let info = bizContent.modelList || ""; | let info = bizContent.modelList || ""; | ||||
let data = bizContent.modelList | let data = bizContent.modelList | ||||
let newarr: any = [] | let newarr: any = [] | ||||
); | ); | ||||
}) | }) | ||||
addForm.value.detailList = newarr; | addForm.value.detailList = newarr; | ||||
ElMessage.success(info) | |||||
//进行排序 | |||||
startIdSort(); | |||||
ElMessage.success(res.message) | |||||
} else { | } else { | ||||
ElMessage.error(res.message) | 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 | |||||
}); | |||||
} | } | ||||
// 初始化还原数据 | // 初始化还原数据 | ||||
}); | }); | ||||
} | } | ||||
// 校验结束编号 | |||||
//编号规则。设备类型是卡的话,位数是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 inventoryType = addForm.value.inventoryType; | ||||
let indexArr = rule.field.split("-"); | let indexArr = rule.field.split("-"); | ||||
let index = indexArr[1]; | let index = indexArr[1]; | ||||
return callback(new Error("必须是数字!")); | return callback(new Error("必须是数字!")); | ||||
} | } | ||||
let length = val.length; | let length = val.length; | ||||
//长度校验 | |||||
if (inventoryType === "CARD" && length !== 20) { | if (inventoryType === "CARD" && length !== 20) { | ||||
return callback(new Error("卡编号位数是20!")); | return callback(new Error("卡编号位数是20!")); | ||||
} else if (inventoryType === "OBU" && length !== 16) { | } else if (inventoryType === "OBU" && length !== 16) { | ||||
return callback(new Error("OBU编号位数是16!")); | return callback(new Error("OBU编号位数是16!")); | ||||
} | } | ||||
//进行排序 | |||||
startIdSort(); | |||||
// 开始编号不能大于结束编号校验 | |||||
if ( | if ( | ||||
val && | 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 ( | 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(); | 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 inventoryType = addForm.value.inventoryType; | ||||
let indexArr = rule.field.split("-"); | let indexArr = rule.field.split("-"); | ||||
let index = indexArr[1]; | let index = indexArr[1]; | ||||
return callback(new Error("必须是数字!")); | return callback(new Error("必须是数字!")); | ||||
} | } | ||||
let length = val.length; | let length = val.length; | ||||
//长度校验 | |||||
if (inventoryType === "CARD" && length !== 20) { | if (inventoryType === "CARD" && length !== 20) { | ||||
return callback(new Error("卡编号位数是20!")); | return callback(new Error("卡编号位数是20!")); | ||||
} else if (inventoryType === "OBU" && length !== 16) { | } else if (inventoryType === "OBU" && length !== 16) { | ||||
return callback(new Error("OBU编号位数是16!")); | return callback(new Error("OBU编号位数是16!")); | ||||
} | } | ||||
// 开始编号不能大于结束编号校验 | |||||
if ( | if ( | ||||
val && | 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(); | callback(); | ||||
} | } | ||||
} | } | ||||
list.push(tem); | list.push(tem); | ||||
}) | }) | ||||
console.log(params); | |||||
let params2 = {} | let params2 = {} | ||||
params2.enterApplyDetailModels = list; | params2.enterApplyDetailModels = list; | ||||
params2.inventoryType = params.inventoryType; | params2.inventoryType = params.inventoryType; | ||||
params2.ownType = params.ownType; | params2.ownType = params.ownType; | ||||
params2.storeCode = params.storeCode; | 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.version = params.version; | ||||
params2.cardType = params.cardType; | params2.cardType = params.cardType; | ||||
params2.obuType = params.obuType; | params2.obuType = params.obuType; | ||||
// let api = '/invw/inventory/addinventoryapply'; | // let api = '/invw/inventory/addinventoryapply'; | ||||
let api = '/invw/api/enterApply/apply'; | let api = '/invw/api/enterApply/apply'; | ||||
console.log("typeOption.value", typeOption.value) | |||||
if (typeOption.value === 'add') { | if (typeOption.value === 'add') { | ||||
delete params2.id | delete params2.id | ||||
} | } | ||||
// 获取仓库状态 | // 获取仓库状态 | ||||
function getLowerList() { | function getLowerList() { | ||||
// console.log("获取仓库列表") | |||||
let params = { | let params = { | ||||
allType: 0 | allType: 0 | ||||
} | } | ||||
// 获取仓库状态 | // 获取仓库状态 | ||||
function getAgency() { | function getAgency() { | ||||
// console.log("获取产权列表") | |||||
BaseService.postN('/invw/agency/list').then((res: any) => { | BaseService.postN('/invw/agency/list').then((res: any) => { | ||||
if (res && res.code === 0) { | if (res && res.code === 0) { | ||||
let bizContent = res.data | let bizContent = res.data |
<el-select clearable v-model="searchForm.inventoryType" style="width: 200px" placeholder="请选择设备类型"> | <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-option v-for="item in inventoryTypeList" :key="item.value" :label="item.label" :value="item.value" /> | ||||
</el-select> | </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"> | <template v-slot="scope"> | ||||
<span v-if="searchForm.inventoryType == 'CARD'"> | <span v-if="searchForm.inventoryType == 'CARD'"> | ||||
<el-option v-for="item in cardManufacturerList" :key="item.value" :label="item.label" :value="item.value" /> | <el-option v-for="item in cardManufacturerList" :key="item.value" :label="item.label" :value="item.value" /> | ||||
}) | }) | ||||
const cardManufacturerList = computed(() => { | const cardManufacturerList = computed(() => { | ||||
// return $storeinitData.state.dictData['CARD_EQUIPMENT_MANUFACTURER_TYPE'] || [] | // 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(() => { | const typeList = computed(() => { | ||||
// return $storeinitData.state.dictData['DEVICE_TYPE'] || [] | // return $storeinitData.state.dictData['DEVICE_TYPE'] || [] | ||||
// 获取仓库状态 | // 获取仓库状态 | ||||
function getLowerList() { | function getLowerList() { | ||||
// console.log("获取仓库列表") | |||||
let params = { | let params = { | ||||
allType: 0 | allType: 0 | ||||
} | } | ||||
// console.log(res) | // console.log(res) | ||||
if (res && res.code === 0) { | if (res && res.code === 0) { | ||||
let bizContent = res.data | let bizContent = res.data | ||||
console.log(bizContent) | |||||
let data = bizContent.idNames || []; | let data = bizContent.idNames || []; | ||||
interfaceLowerListArr.value = data | interfaceLowerListArr.value = data | ||||
} else { | } else { | ||||
return | return | ||||
} | } | ||||
let ids = list.map((item) => item.id) | 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) => { | (res: any) => { | ||||
if (res && res.code === 0) { | 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 { | } else { | ||||
ElMessage.error(res.message) | ElMessage.error(res.message) | ||||
} | } |