Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
K
klck
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
位宇华
klck
Commits
4081e0b3
Commit
4081e0b3
authored
Aug 21, 2023
by
xiangjiaojunxp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
物料转换页面修改,导入对比页面修改,批量对比修改
parent
24fa7fd9
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
711 additions
and
130 deletions
+711
-130
ruoyi-ui/src/views/system/supplies/index.vue
ruoyi-ui/src/views/system/supplies/index.vue
+84
-53
ruoyi-ui/src/views/system/supplies/indexupload.vue
ruoyi-ui/src/views/system/supplies/indexupload.vue
+80
-75
ruoyi-ui/src/views/system/supplies/upload.vue
ruoyi-ui/src/views/system/supplies/upload.vue
+0
-2
ruoyi-ui/src/views/system/supplies/viewuploads.vue
ruoyi-ui/src/views/system/supplies/viewuploads.vue
+547
-0
No files found.
ruoyi-ui/src/views/system/supplies/index.vue
View file @
4081e0b3
...
...
@@ -262,9 +262,7 @@ export default {
const
exportJson
=
await
cons
;
await
this
.
summary
(
exportJson
);
console
.
log
(
'
summary 执行完毕
'
);
// 导入完成后关闭遮罩层
this
.
showMask
=
false
;
this
.
submit
(
exportJson
);
//this.submit(exportJson);
}
catch
(
Error
)
{
this
.
$message
({
...
...
@@ -272,6 +270,9 @@ export default {
type
:
"
error
"
});
console
.
log
(
Error
.
message
);
console
.
log
(
"
这里是最外面的地方
"
);
}
finally
{
// 导入完成后关闭遮罩层
this
.
showMask
=
false
;
}
},
/** 物料转换汇总到页面*/
...
...
@@ -588,6 +589,7 @@ export default {
case
1
:
{
let
map
=
new
Map
();
let
smallMat
=
[];
try
{
for
(
let
i
=
parseInt
(
sysRulez
[
0
].
re
)
+
1
;
i
<
data
.
length
;
i
++
)
{
if
(
data
[
i
][
key_i
]
!=
null
)
{
let
num
=
data
[
i
][
key_i
].
m
;
...
...
@@ -604,6 +606,9 @@ export default {
smallMat
.
push
(
null
);
}
}
}
catch
(
err
){
throw
new
Error
(
"
导入失败,导入文件与模板规则不匹
"
);
}
//console.log(smallMat);
asyncTasks
.
push
(
new
Promise
((
innerResolve
,
innerReject
)
=>
{
...
...
@@ -653,10 +658,20 @@ export default {
let
row
;
let
con
;
let
warn
=
0
;
console
.
log
(
map
);
//console.log(map);
map
.
forEach
((
value
,
key
)
=>
{
let
searchResult
;
searchResult
=
luckysheet
.
find
(
key
);
if
(
searchResult
==
undefined
||
searchResult
.
length
===
0
||
key
===
null
){
warn
++
;
}
})
if
(
warn
===
map
.
size
)
{
throw
new
Error
(
"
导入文件与所选模板规则不匹配
"
);
}
for
(
let
i
=
0
;
i
<
sysRules
.
length
;
i
++
)
{
map
.
forEach
((
value
,
key
)
=>
{
let
matchingCells
=
[];
let
name
=
data
[
sysRules
[
i
].
re
][
sysRules
[
i
].
ce
].
m
if
(
name
.
includes
(
"
洗煤
"
))
{
...
...
@@ -669,7 +684,6 @@ export default {
for
(;
row
<=
con
;
row
++
)
{
let
cellValue
=
luckysheet
.
getCellValue
(
row
,
parseInt
(
sysRulez
[
0
].
ct
));
if
(
cellValue
===
null
)
{
warn
++
}
else
{
if
(
cellValue
.
includes
(
key
))
{
luckysheet
.
setCellValue
(
row
,
sysRules
[
i
].
ct
,
value
[
i
]);
...
...
@@ -724,17 +738,33 @@ export default {
if
(
map2
.
size
===
0
)
{
throw
new
Error
(
"
导入失败,导入文件错误
"
);
}
//console.log(map2);
map2
.
forEach
((
value
,
key
)
=>
{
let
searchResult
;
searchResult
=
luckysheet
.
find
(
key
);
if
(
searchResult
!==
undefined
&&
searchResult
.
length
!==
0
||
key
!==
null
){
for
(
let
i
=
0
;
i
<
value
.
length
;
i
++
)
{
luckysheet
.
setCellValue
(
sysConver
[
i
].
rt
,
sysConver
[
i
].
ct
,
value
[
i
]);
luckysheet
.
setCellValue
(
sysConver
[
i
].
rt
,
sysConver
[
i
].
ct
,
{
luckysheet
.
setCellValue
(
searchResult
[
0
].
row
,
sysConver
[
i
].
ct
,
value
[
i
]);
luckysheet
.
setCellValue
(
searchResult
[
0
].
row
,
sysConver
[
i
].
ct
,
{
"
ct
"
:
{
"
fa
"
:
"
General
"
,
"
t
"
:
"
n
"
}
});
}
}
else
{
warn
++
;
}
})
if
(
warn
===
map
.
size
+
map2
.
size
)
{
throw
new
Error
(
"
导入文件与所选模板规则不匹配
"
);
}
else
if
(
warn
>
0
)
{
this
.
$message
({
message
:
"
还有
"
+
warn
+
"
条大类未能匹配到
"
,
type
:
"
warning
"
});
}
resolve
(
response
.
rows
);
innerResolve
();
// 标记当前异步任务完成
}).
catch
(
Error
=>
{
console
.
log
(
"
这里是单个异步请求出错处
"
);
//必须加,不能删除
...
...
@@ -747,23 +777,21 @@ export default {
let
map
=
new
Map
();
let
smallMat
=
[];
let
deps
=
[];
try
{
for
(
let
i
=
parseFloat
(
sysRulez
[
0
].
re
)
+
1
;
i
<
data
.
length
;
i
++
)
{
if
(
data
[
i
][
sysRulez
[
1
].
ce
]
!=
null
&&
data
[
i
][
key_i
]
!=
null
)
{
if
(
data
[
i
][
sysRulez
[
1
].
ce
]
!=
null
&&
data
[
i
][
key_i
]
!=
null
)
{
let
num
=
data
[
i
][
key_i
].
m
;
let
dep
=
data
[
i
][
sysRulez
[
1
].
ce
].
m
;
if
(
dep
){
smallMat
.
push
(
null
);
deps
.
push
(
null
);
}
else
{
smallMat
.
push
(
num
);
deps
.
push
(
dep
);
}
}
else
{
smallMat
.
push
(
null
);
deps
.
push
(
null
);
}
}
console
.
log
(
deps
);
}
catch
(
err
){
throw
new
Error
(
"
导入失败,导入文件与模板规则不匹
"
);
}
asyncTasks
.
push
(
new
Promise
((
innerResolve
,
innerReject
)
=>
{
const
allNull
=
smallMat
.
every
(
item
=>
item
===
null
);
...
...
@@ -809,11 +837,7 @@ export default {
//循环得到汇总结果
console
.
log
(
map
);
if
(
map
.
size
===
0
)
{
this
.
$message
({
message
:
"
导入失败,导入文件错误
"
,
type
:
"
error
"
});
innerReject
(
error
);
// 异步请求出错
throw
new
Error
(
"
导入失败,导入文件错误
"
);
}
//返回单元格第二行的数据
//let celn=luckysheet.getcellvalue(1);
...
...
@@ -839,8 +863,8 @@ export default {
const
suffixArr
=
key
.
split
(
'
/
'
),
mat
=
suffixArr
[
0
],
depp
=
suffixArr
[
1
];
//console.log(mat);console.log(depp);
let
searchResult
=
luckysheet
.
find
(
mat
);
rowws
=
searchResult
[
0
].
row
;
if
(
searchResult
.
length
!=
0
&&
key
!=
null
)
{
rowws
=
searchResult
[
0
].
row
;
luckysheet
.
insertRow
(
rowws
+
1
);
//输出部门数量金额
luckysheet
.
setCellValue
(
rowws
+
1
,
sysRulez
[
1
].
ct
,
depp
);
...
...
@@ -863,20 +887,27 @@ export default {
"t": "n"
}
});*/
}
else
{
warn
++
;
}
config
=
luckysheet
.
getConfig
(
0
);
bord
.
range
[
0
].
row
=
[
rowws
+
1
,
rowws
+
1
];
bord
.
range
[
0
].
column
=
[
0
,
sysRules
[
sysRules
.
length
-
1
].
ct
];
config
.
borderInfo
.
push
(
bord
);
luckysheet
.
setConfig
(
config
);
}
else
{
warn
++
;
}
});
console
.
log
(
warn
);
if
(
warn
===
map
.
size
)
{
throw
new
Error
(
"
导入文件与所选模板规则不匹配
"
);
}
else
if
(
warn
>
0
)
{
this
.
$message
({
message
:
"
还有
"
+
warn
+
"
条大类未能匹配到
"
,
type
:
"
warning
"
});
}
resolve
(
response
.
rows
);
innerResolve
();
// 标记当前异步任务完成
/*let find1 = luckysheet.find("合计");
let number = parseInt(find1[0].row)-1;
luckysheet.setCellValue(find1[0].row, sysRules[sysRules.length-1].ct, "=SUM(F2:F"+number+")")*/
}).
catch
(
Error
=>
{
console
.
log
(
"
这里是单个异步请求出错处
"
);
//必须加,不能删除
...
...
@@ -950,7 +981,7 @@ export default {
map
.
forEach
((
value
,
key
)
=>
{
let
searchResult
;
searchResult
=
luckysheet
.
find
(
key
);
if
(
searchResult
&&
searchResult
.
length
!==
0
&&
key
!=
null
)
{
if
(
searchResult
!==
undefined
&&
searchResult
.
length
!==
0
&&
key
!=
null
)
{
rowws
=
searchResult
[
0
].
row
;
luckysheet
.
setCellValue
(
rowws
,
sysRules
[
i
].
ct
,
value
[
i
]);
luckysheet
.
setCellValue
(
rowws
,
sysRules
[
i
].
ct
,
{
...
...
ruoyi-ui/src/views/system/supplies/indexupload.vue
View file @
4081e0b3
...
...
@@ -349,6 +349,7 @@ export default {
let
cell
=
(
c1
<=
c2
)?
c1
:
c2
;
let
array
=
[];
let
r
=
this
.
row
-
1
;
try
{
for
(
let
i
=
r
;
i
<
row
;
i
++
)
{
for
(
let
j
=
0
;
j
<
cell
;
j
++
)
{
//第一个表的单元格为null直接跳出
...
...
@@ -436,7 +437,11 @@ export default {
message
:
"
导入完成,本次导入未发现不同数据
"
,
type
:
"
success
"
});
}
}
catch
(
err
){
this
.
$message
({
message
:
"
导入失败,导入文件与对比文件有所不匹
"
,
type
:
"
error
"
});
}
})
},
...
...
ruoyi-ui/src/views/system/supplies/upload.vue
View file @
4081e0b3
...
...
@@ -337,8 +337,6 @@ export default {
type
:
"
error
"
});
}
}
)
},
...
...
ruoyi-ui/src/views/system/supplies/viewuploads.vue
0 → 100644
View file @
4081e0b3
<
template
>
<div
class=
"app-container"
>
<el-form
ref=
"queryForm"
size=
"small"
:inline=
"true"
>
<el-form-item>
<el-checkbox
v-model=
"numm"
>
是否只比较数值
</el-checkbox>
</el-form-item>
</el-form>
<el-row
:gutter=
"10"
class=
"mb8"
>
<el-col
:span=
"1.5"
>
<el-button
v-if=
"isluckysheet"
type=
"warning"
plain
icon=
"el-icon-upload2"
size=
"mini"
@
click=
"handleExport"
>
导出
</el-button>
</el-col>
<el-col
:span=
"1.5"
>
<el-button
v-if=
"isluckysheet"
icon=
"el-icon-s-opportunity"
size=
"mini"
@
click=
"addToMap"
>
生成
</el-button>
</el-col>
<el-button
type=
"primary"
v-if=
"isDivVisible"
@
click=
"uploadFolder"
>
上传旗舰文件夹
</el-button>
<input
ref=
"folderInput"
type=
"file"
style=
"display: none;"
multiple
@
change=
"handleFolderSelect"
>
<el-button
type=
"primary"
v-if=
"isDivVisible"
@
click=
"uploadFolder2"
>
上传浪潮文件夹
</el-button>
<input
ref=
"folderInput2"
type=
"file"
style=
"display: none;"
multiple
@
change=
"handleFolderSelect2"
>
<el-button
type=
"primary"
@
click=
"testdb"
>
开始对比
</el-button>
<el-button
icon=
"el-icon-refresh"
size=
"mini"
@
click=
"resetQuery"
class=
"right-float"
>
重置
</el-button>
</el-row>
<!-- luckysheet容器 -->
<div
id=
"luckysheet"
v-if=
"isluckysheet"
style=
"margin: 0px; padding: 0px; position: absolute; width: 100%;left: 0px; top: 105px; height: 75vh; z-index: 0"
></div>
<div
v-if=
"isDivVisible"
style=
"display: flex;"
>
<el-table
:data=
"fileName1"
style=
"flex-basis: 50%;"
>
<el-table-column
prop=
"name"
label=
"旗舰版文件名称"
width=
"300"
>
<template
slot-scope=
"scope"
>
<div>
{{
scope
.
row
.
name
}}
</div>
<div>
<el-button
type=
"text"
@
click=
"moveUp(scope.$index)"
:disabled=
"scope.$index === 0"
>
上移
</el-button>
<el-button
type=
"text"
@
click=
"moveDown(scope.$index)"
:disabled=
"scope.$index === fileName1.length - 1"
>
下移
</el-button>
<el-button
type=
"text"
@
click=
"duplicate(scope.$index)"
>
复制
</el-button>
<el-button
type=
"text"
@
click=
"deleteFile(scope.$index)"
>
删除
</el-button>
</div>
</
template
>
</el-table-column>
</el-table>
<el-table
:data=
"fileName2"
style=
"flex-basis: 50%;"
>
<el-table-column
prop=
"name"
label=
"旗舰版文件名称"
width=
"300"
>
<
template
slot-scope=
"scope"
>
<div>
{{
scope
.
row
.
name
}}
</div>
<div>
<el-button
type=
"text"
@
click=
"moveUp2(scope.$index)"
:disabled=
"scope.$index === 0"
>
上移
</el-button>
<el-button
type=
"text"
@
click=
"moveDown2(scope.$index)"
:disabled=
"scope.$index === fileName2.length - 1"
>
下移
</el-button>
<el-button
type=
"text"
@
click=
"duplicate2(scope.$index)"
>
复制
</el-button>
<el-button
type=
"text"
@
click=
"deleteFile2(scope.$index)"
>
删除
</el-button>
</div>
</
template
>
</el-table-column>
</el-table>
</div>
</div>
</template>
<
style
>
.right-float
{
float
:
right
;
}
</
style
>
<
script
>
/*import luckysheet from 'luckysheet'*/
import
LuckyExcel
from
'
luckyexcel
'
//导入库export.js 这个文件是es6的,不能在普通的HTML文件直接引入js文件(虽然都是js文件,但是有区别,具体请百度es6与es5)!需要把es6转es5才可以直接引入使用!
import
{
exportExcel
}
from
'
../../../../public/exportExcel
'
;
import
{
vueScript
}
from
"
@/utils/generator/html
"
;
var
fileName
=
"
新建XLSX工作表
"
;
//定义表名
var
data1
;
var
name1
;
var
datast
;
var
namest
;
var
map
=
new
Map
();
var
maper
=
new
Map
();
export
default
{
name
:
"
Mymodule
"
,
data
()
{
return
{
fileName1
:[],
fileName2
:[],
isDivVisible
:
true
,
isluckysheet
:
false
,
row
:
1
,
numm
:
false
,
//弹出页面的表名
// 是否显示弹出层
fileList
:[],
disableNextButton
:
true
,
// 查询参数
queryParams
:
{
status
:
0
},
};
},
created
()
{
},
mounted
()
{
fileName
=
"
新建XLSX工作表
"
;
},
methods
:{
uploadFolder
()
{
this
.
$refs
.
folderInput
.
click
();
},
handleFolderSelect
(
event
)
{
const
files
=
event
.
target
.
files
;
for
(
let
i
=
0
;
i
<
files
.
length
;
i
++
){
this
.
fileName1
.
push
({
name
:
files
[
i
].
name
,
data
:
files
[
i
]});
}
},
moveUp
(
index
)
{
if
(
index
>
0
)
{
const
temp
=
this
.
fileName1
[
index
];
this
.
fileName1
.
splice
(
index
,
1
);
this
.
fileName1
.
splice
(
index
-
1
,
0
,
temp
);
}
},
moveDown
(
index
)
{
if
(
index
<
this
.
fileName1
.
length
-
1
)
{
const
temp
=
this
.
fileName1
[
index
];
this
.
fileName1
.
splice
(
index
,
1
);
this
.
fileName1
.
splice
(
index
+
1
,
0
,
temp
);
}
},
deleteFile
(
index
)
{
this
.
fileName1
.
splice
(
index
,
1
);
},
isFileNameExists
(
name
)
{
return
this
.
fileName1
.
some
(
item
=>
item
.
name
===
name
);
},
// 复制
duplicate
(
index
)
{
const
item
=
Object
.
assign
({},
this
.
fileName1
[
index
]);
const
originalName
=
item
.
name
;
let
newName
=
originalName
;
let
count
=
1
;
// 检查是否存在同名文件,如果存在则进行递增命名
while
(
this
.
isFileNameExists
(
newName
))
{
const
dotIndex
=
originalName
.
lastIndexOf
(
'
.
'
);
if
(
dotIndex
!==
-
1
)
{
newName
=
originalName
.
slice
(
0
,
dotIndex
)
+
` (
${
count
}
)`
+
originalName
.
slice
(
dotIndex
);
}
else
{
newName
=
originalName
+
` (
${
count
}
)`
;
}
count
++
;
}
item
.
name
=
newName
;
this
.
fileName1
.
splice
(
index
+
1
,
0
,
item
);
},
uploadFolder2
()
{
this
.
$refs
.
folderInput2
.
click
();
},
handleFolderSelect2
(
event
)
{
const
files
=
event
.
target
.
files
;
for
(
let
i
=
0
;
i
<
files
.
length
;
i
++
){
this
.
fileName2
.
push
({
name
:
files
[
i
].
name
,
data
:
files
[
i
]});
}
},
moveUp2
(
index
)
{
if
(
index
>
0
)
{
const
temp
=
this
.
fileName2
[
index
];
this
.
fileName2
.
splice
(
index
,
1
);
this
.
fileName2
.
splice
(
index
-
1
,
0
,
temp
);
}
},
moveDown2
(
index
)
{
if
(
index
<
this
.
fileName2
.
length
-
1
)
{
const
temp
=
this
.
fileName2
[
index
];
this
.
fileName2
.
splice
(
index
,
1
);
this
.
fileName2
.
splice
(
index
+
1
,
0
,
temp
);
}
},
deleteFile2
(
index
)
{
this
.
fileName2
.
splice
(
index
,
1
);
},
isFileNameExists2
(
name
)
{
return
this
.
fileName2
.
some
(
item
=>
item
.
name
===
name
);
},
duplicate2
(
index
)
{
const
item
=
Object
.
assign
({},
this
.
fileName2
[
index
]);
const
originalName
=
item
.
name
;
let
newName
=
originalName
;
let
count
=
1
;
// 检查是否存在同名文件,如果存在则进行递增命名
while
(
this
.
isFileNameExists2
(
newName
))
{
const
dotIndex
=
originalName
.
lastIndexOf
(
'
.
'
);
if
(
dotIndex
!==
-
1
)
{
newName
=
originalName
.
slice
(
0
,
dotIndex
)
+
` (
${
count
}
)`
+
originalName
.
slice
(
dotIndex
);
}
else
{
newName
=
originalName
+
` (
${
count
}
)`
;
}
count
++
;
}
item
.
name
=
newName
;
this
.
fileName2
.
splice
(
index
+
1
,
0
,
item
);
},
/** 回车事件和保存提交绑定 */
handleEnter
(
event
)
{
if
(
event
.
keyCode
===
13
)
{
event
.
preventDefault
();
// 阻止默认的回车事件
// 触发确定操作
this
.
testdb
();
}
},
/** 重置按钮操作 */
resetQuery
()
{
this
.
isDivVisible
=
true
;
luckysheet
.
destroy
();
this
.
isluckysheet
=
false
;
fileName
=
"
新建XLSX工作表
"
;
this
.
disableNextButton
=
''
;
this
.
fileName1
=
[];
this
.
fileName2
=
[];
this
.
row
=
1
;
datast
=
''
;
namest
=
''
;
map
.
clear
();
maper
.
clear
();
this
.
numm
=
false
;
},
/** 生成标签*/
addToMap
(){
map
.
forEach
((
value
,
key
)
=>
{
for
(
let
i
=
0
;
i
<
value
.
length
;
i
++
){
let
row
=
parseInt
(
value
[
i
][
0
])
-
1
;
let
cell
=
this
.
stringTonum
(
value
[
i
][
1
])
-
1
;
//let row=value[i][0]-1,cell=value[i][1]-1;
let
sd
=
luckysheet
.
getCellValue
(
row
,
cell
,{
type
:
"
bg
"
});
//用批注进行比较的时候把下面的!==判断去掉
//let sd=luckysheet.getCellValue(row,cell,{type:"ps"});
if
(
sd
===
null
||
sd
!==
"
#e85f61
"
){
luckysheet
.
setCellValue
(
row
,
cell
,
{
bg
:
"
#e85f61
"
})
luckysheet
.
setCellValue
(
row
,
cell
,
{
bg
:
"
#e85f61
"
})
/* luckysheet.setCellValue(row, cell, {
ps: { //批注
"left": 92, //批注框左边距
"top": 10, //批注框上边距
"width": 91, //批注框宽度
"height": 48, //批注框高度
"value": key+"表有误", //批准内容
"isshow": false //批注框为显示状态
}
})*/
maper
.
set
(
"
(
"
+
(
row
+
1
)
+
"
,
"
+
value
[
i
][
1
]
+
"
)
"
,
1
);
}
else
{
//let sd=luckysheet.getCellValue(row,cell,{type:"ps"}).value;
/*luckysheet.setCellValue(row, cell, {
ps: { //批注
"left": 92, //批注框左边距
"top": 10, //批注框上边距
"width": 91, //批注框宽度
"height": 48, //批注框高度
"value": sd+'\n;'+key+"表有误", //批准内容
"isshow": false //批注框为显示状态
}
})*/
maper
.
set
(
"
(
"
+
(
row
+
1
)
+
"
,
"
+
value
[
i
][
1
]
+
"
)
"
,
maper
.
get
(
"
(
"
+
(
row
+
1
)
+
"
,
"
+
value
[
i
][
1
]
+
"
)
"
)
+
1
);
}
}
})
let
row
;
let
num
=
luckysheet
.
getSheet
().
data
.
length
;
let
data
=
luckysheet
.
getSheet
().
data
;
for
(
let
i
=
0
;
i
<
num
;
i
++
){
if
(
data
[
i
][
0
]
===
null
){
row
=
i
;
break
;
}
}
if
(
row
===
undefined
){
row
=
num
;
}
//生成多少条数据添加多少行
let
asd
=
maper
.
size
+
map
.
size
;
if
(
row
+
asd
>=
num
){
for
(
let
i
=
0
;
i
<=
row
+
asd
-
num
;
i
++
){
luckysheet
.
insertRow
(
row
+
1
);
}
luckysheet
.
insertRow
(
row
+
1
);
}
row
=
row
+
1
;
let
k
=
0
;
for
(
let
[
key
,
value
]
of
map
.
entries
())
{
let
a
=
"
(
"
+
value
.
join
(
"
),(
"
)
+
"
)
"
;
luckysheet
.
setCellValue
(
row
+
k
,
0
,
key
);
luckysheet
.
setCellValue
(
row
+
k
,
1
,
a
);
k
++
}
let
froms
=
Array
.
from
(
maper
);
froms
.
sort
((
a
,
b
)
=>
{
return
b
[
1
]
-
a
[
1
];
});
for
(
let
i
=
0
;
i
<
froms
.
length
;
i
++
){
luckysheet
.
setCellValue
(
row
+
k
,
0
,
froms
[
i
][
0
]);
luckysheet
.
setCellValue
(
row
+
k
,
1
,
froms
[
i
][
1
]);
k
++
;
}
},
/** 开始对比功能 */
async
testdb
(){
if
(
this
.
fileName1
.
length
!==
0
&&
this
.
fileName2
.
length
!==
0
){
if
(
this
.
fileName1
.
length
===
this
.
fileName2
.
length
){
this
.
isDivVisible
=
false
;
this
.
isluckysheet
=
true
;
for
(
let
i
=
0
;
i
<
this
.
fileName1
.
length
;
i
++
){
await
this
.
handleFileChange
(
this
.
fileName1
[
i
].
data
);
await
this
.
handleFileChange1
(
this
.
fileName2
[
i
].
data
);
}
luckysheet
.
create
({
container
:
'
luckysheet
'
,
//luckysheet is the container id
title
:
namest
,
lang
:
'
zh
'
,
// 设定表格语言
showinfobar
:
false
,
data
:
datast
,
});
}
else
{
this
.
msgError
(
"
旗舰版文件与浪潮文件数量不匹配,请检查后在对比
"
);
}
}
else
{
this
.
msgError
(
"
请先上传对比文件!!!
"
);
return
;
}
},
/** 导入事件*/
handleFileChange
(
evt
)
{
this
.
disableNextButton
=
false
;
let
name
=
evt
.
name
let
suffixArr
=
name
.
split
(
'
.
'
),
suffix
=
suffixArr
[
suffixArr
.
length
-
1
]
if
(
suffix
!==
'
xlsx
'
)
{
this
.
$message
({
message
:
"
上传格式不正确,请上传xlsx格式文件
"
,
type
:
"
warning
"
});
return
}
let
exx
;
return
new
Promise
((
resolve
,
reject
)
=>
{
LuckyExcel
.
transformExcelToLucky
(
evt
,
(
exportJson
)
=>
{
if
(
exportJson
.
sheets
===
null
||
exportJson
.
sheets
.
length
===
0
)
{
this
.
$message
({
message
:
"
导入失败,请检查上传的文件是否正确
"
,
type
:
"
warning
"
});
return
}
data1
=
exportJson
.
sheets
[
0
];
name1
=
exportJson
.
sheets
[
0
].
name
;
datast
=
exportJson
.
sheets
;
namest
=
exportJson
.
info
.
name
;
let
suffixArr
=
exportJson
.
info
.
name
.
split
(
'
.
'
);
fileName
=
suffixArr
[
0
];
exx
=
exportJson
.
sheets
;
resolve
(
exx
);
})
});
},
handleFileChange1
(
evt
)
{
let
name
=
evt
.
name
let
suffixArr
=
name
.
split
(
'
.
'
),
suffix
=
suffixArr
[
suffixArr
.
length
-
1
];
name
=
suffixArr
[
0
]
if
(
suffix
!==
'
xlsx
'
)
{
this
.
$message
({
message
:
"
上传格式不正确,请上传xlsx格式文件
"
,
type
:
"
warning
"
});
return
}
return
new
Promise
((
resolve
,
reject
)
=>
{
LuckyExcel
.
transformExcelToLucky
(
evt
,
(
exportJson
)
=>
{
if
(
exportJson
.
sheets
===
null
||
exportJson
.
sheets
.
length
===
0
)
{
this
.
$message
({
message
:
"
导入失败,请检查上传的文件是否正确
"
,
type
:
"
warning
"
});
return
}
let
ddd
=
data1
;
let
as
=
0
;
let
d1
=
window
.
luckysheet
.
transToData
(
ddd
.
celldata
);
let
d2
=
window
.
luckysheet
.
transToData
(
exportJson
.
sheets
[
0
].
celldata
);
let
r1
=
d1
.
length
,
r2
=
d2
.
length
,
c1
=
d1
[
0
].
length
,
c2
=
d2
[
0
].
length
;
let
row
=
(
r1
<=
r2
)
?
r1
:
r2
;
let
cell
=
(
c1
<=
c2
)
?
c1
:
c2
;
let
array
=
[];
let
r
=
this
.
row
-
1
;
for
(
let
i
=
r
;
i
<
row
;
i
++
)
{
for
(
let
j
=
0
;
j
<
cell
;
j
++
)
{
//第一个表的单元格为null直接跳出
if
(
d1
[
i
][
j
]
==
null
)
{
continue
}
//第二个表的单元格为null直接跳出
if
(
d2
[
i
][
j
]
==
null
)
{
continue
}
//第一个表内数据为0 且 第二个表只有样式内部为空
if
(
d2
[
i
][
j
].
v
==
0
&&
d1
[
i
][
j
].
v
==
undefined
)
{
continue
}
//第一个表内数据为0 且 第二个表只有样式内部为空
if
(
d1
[
i
][
j
].
v
==
0
&&
d2
[
i
][
j
].
v
==
undefined
)
{
continue
}
// 第一个表内数据为string型 且 第二个表只有样式内部为空
/*if((typeof(d1[i][j].v)=="string" && d2[i][j].v==undefined)){
continue
}*/
//第一个表为合并单元格 且第二个内没有值
if
(
d1
[
i
][
j
].
mc
!=
undefined
&&
d2
[
i
][
j
].
v
==
undefined
)
{
continue
}
//第二个表为合并单元格 且第一个内没有值
if
(
d2
[
i
][
j
].
mc
!=
undefined
&&
d1
[
i
][
j
].
v
==
undefined
)
{
continue
}
if
((
isNaN
(
d1
[
i
][
j
].
v
)
&&
d2
[
i
][
j
].
v
==
undefined
))
{
}
// 第二个表内数据为string型 且 第一个表只有样式内部为空
if
(
isNaN
(
d2
[
i
][
j
].
v
)
&&
d1
[
i
][
j
].
v
==
undefined
)
{
}
// 没有选只比较数值 且 第一个表内数据为string型 且 第二个表内数据位string型
if
(
this
.
numm
!=
false
&&
(
isNaN
(
d1
[
i
][
j
].
v
)
&&
isNaN
(
d2
[
i
][
j
].
v
)))
{
continue
;
}
// 两个表的值都是0
if
(
d1
[
i
][
j
].
v
==
0
&&
d2
[
i
][
j
].
v
==
0
)
{
continue
}
// 两个表都是只有样式没有数据
if
(
d1
[
i
][
j
].
v
==
undefined
&&
d2
[
i
][
j
].
v
==
undefined
)
{
}
else
if
(
d1
[
i
][
j
].
v
==
undefined
||
d2
[
i
][
j
].
v
==
undefined
)
{
as
++
let
s
=
this
.
numToString
(
j
+
1
);
array
.
push
([
i
+
1
,
s
]);
//array.push([i+1,j+1]);
}
else
{
if
(
d1
[
i
][
j
].
v
!=
d2
[
i
][
j
].
v
)
{
as
++
let
s
=
this
.
numToString
(
j
+
1
);
array
.
push
([
i
+
1
,
s
]);
}
}
}
}
map
.
set
(
name1
,
array
);
if
(
as
>
0
)
{
this
.
$message
({
message
:
"
导入完成,本次导入共发现
"
+
as
+
"
条不同数据
"
,
type
:
"
warning
"
});
}
else
{
this
.
$message
({
message
:
"
导入完成,本次导入未发现不同数据
"
,
type
:
"
success
"
});
}
data1
=
''
;
ddd
=
''
;
resolve
(
data1
);
})
});
},
/** 导出设置 */
handleExport
:
debounce
(
function
()
{
// 处理点击事件
exportExcel
(
luckysheet
.
getSheet
(),
fileName
+
"
(对比后数据)
"
)
},
500
),
// 设置延迟时间,单位为毫秒
numToString
(
numm
){
let
char
=
[];
char
.
length
=
0
;
let
numToStringAction
=
function
(
nnum
){
let
num
=
nnum
-
1
;
let
a
=
parseInt
(
num
/
26
);
let
b
=
num
%
26
;
char
.
push
(
String
.
fromCharCode
(
64
+
parseInt
(
b
+
1
)));
if
(
a
>
0
){
numToStringAction
(
a
);
}
}
numToStringAction
(
numm
);
return
char
.
reverse
().
join
(
""
);
},
stringTonum
(
a
)
{
var
str
=
a
.
toLowerCase
().
split
(
""
);
var
num
=
0
;
var
al
=
str
.
length
;
var
getCharNumber
=
function
(
charx
)
{
return
charx
.
charCodeAt
()
-
96
;
};
var
numout
=
0
;
var
charnum
=
0
;
for
(
var
i
=
0
;
i
<
al
;
i
++
)
{
charnum
=
getCharNumber
(
str
[
i
]);
numout
+=
charnum
*
Math
.
pow
(
26
,
al
-
i
-
1
);
}
;
return
numout
;
},
}
// 配置项111
};
// debounce函数定义
function
debounce
(
func
,
delay
)
{
let
timer
;
return
function
()
{
const
context
=
this
;
const
args
=
arguments
;
clearTimeout
(
timer
);
timer
=
setTimeout
(
function
()
{
func
.
apply
(
context
,
args
);
},
delay
);
};
}
</
script
>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment