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
cabffdc0
Commit
cabffdc0
authored
Aug 05, 2023
by
xiangjiaojunxp
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
导出权限修改
parent
4799ccd8
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
918 additions
and
444 deletions
+918
-444
ruoyi-ui/src/views/system/supplies/index.vue
ruoyi-ui/src/views/system/supplies/index.vue
+918
-443
ruoyi-ui/src/views/system/supplies/indexupload.vue
ruoyi-ui/src/views/system/supplies/indexupload.vue
+0
-1
No files found.
ruoyi-ui/src/views/system/supplies/index.vue
View file @
cabffdc0
...
...
@@ -29,7 +29,6 @@
icon=
"el-icon-upload2"
size=
"mini"
@
click=
"handleExport"
v-hasPermi=
"['ruoyi-myexcel:myexcel:export']"
>
导出
</el-button>
</el-col>
<el-col
:span=
"1.5"
>
...
...
@@ -111,7 +110,6 @@ export default {
this
.
depss
=
response
.
rows
;
});
},
/** 下拉选和页面luckysheet绑定 */
handleOptionChange
()
{
...
...
@@ -235,91 +233,346 @@ export default {
luckysheet
.
create
(
options
);
},
/** 导入事件*/
handleFileChange
(
evt
)
{
if
(
this
.
disableNextButton
)
{
this
.
$message
.
warning
(
"
请先选择模板再进行导入!
"
);
return
false
;
// 如果按钮被禁用,提前返回,避免执行下一步操作
}
let
name
=
evt
.
name
let
suffixArr
=
name
.
split
(
'
.
'
),
suffix
=
suffixArr
[
suffixArr
.
length
-
1
]
if
(
suffix
!==
'
xlsx
'
)
{
this
.
$message
({
message
:
"
上传格式不正确,请上传xlsx格式文件
"
,
type
:
"
warning
"
});
return
}
LuckyExcel
.
transformExcelToLucky
(
evt
,
function
(
exportJson
)
{
if
(
exportJson
.
sheets
===
null
||
exportJson
.
sheets
.
length
===
0
)
{
this
.
$message
({
message
:
"
导入失败,请检查上传的文件是否正确
"
,
type
:
"
warning
"
async
handleFileChange
(
evt
)
{
let
exx
;
const
cons
=
new
Promise
((
resolve
,
reject
)
=>
{
LuckyExcel
.
transformExcelToLucky
(
evt
,
exportJson
=>
{
exx
=
exportJson
;
resolve
(
exx
);
});
return
});
try
{
const
exportJson
=
await
cons
;
await
this
.
summary
(
exportJson
);
console
.
log
(
'
summary 执行完毕
'
);
this
.
submit
(
exportJson
);
}
catch
(
Error
)
{
this
.
$message
({
message
:
Error
.
message
,
type
:
"
error
"
});
console
.
log
(
Error
.
message
);
console
.
log
(
"
这里是最外面的地方
"
);
}
},
/** 物料转换汇总到页面*/
summary
(
exportJson
){
let
sysRulez
;
let
sysRules
;
let
sysConver
;
let
value
=
[];
let
map
=
new
Map
();
//获取物料转换的规则
//
let
data
;
//获取规则 sysRulez是物料转换 sysRules是数据汇总规则 13
for
(
let
i
=
0
;
i
<
rule
.
length
;
i
++
){
if
(
rule
[
i
].
convertStatus
=
==
1
){
if
(
rule
[
i
].
convertStatus
==
1
){
sysRulez
=
JSON
.
parse
(
rule
[
i
].
detailContent
);
}
if
(
rule
[
i
].
convertStatus
===
2
){
if
(
rule
[
i
].
convertStatus
==
2
){
if
(
parseInt
(
rule
[
i
].
detailYS
)
===
1
){
sysConver
=
JSON
.
parse
(
rule
[
i
].
detailContent
)
}
else
{
sysRules
=
JSON
.
parse
(
rule
[
i
].
detailContent
);
}
}
}
try
{
//获取物料转换的sheet表
let
data
=
window
.
luckysheet
.
transToData
(
exportJson
.
sheets
[
sysRulez
[
0
].
se
].
celldata
);
window
.
luckysheet
.
set
let
key_i
=
sysRulez
[
0
].
ce
;
data
=
window
.
luckysheet
.
transToData
(
exportJson
.
sheets
[
sysRulez
[
0
].
se
].
celldata
);
}
catch
(
err
){
throw
new
Error
(
"
导入失败,所选文件或规则有误
"
);
}
//获取物料转换中导入表的列,用来获取物料名
let
key_i
=
parseInt
(
sysRulez
[
0
].
ce
);
//获取物料转换的数据
for
(
let
i
=
0
;
i
<
sysRules
.
length
;
i
++
){
//value.push(data[sysRules[i].re][sysRules[i].ce].m);
value
.
push
(
sysRules
[
i
].
ce
);
}
//console.log("value的值为:"+value);
return
new
Promise
((
resolve
,
reject
)
=>
{
const
asyncTasks
=
[];
switch
(
tempId
)
{
case
2
:
{
let
departmentMap
=
new
Map
();
let
departments
=
[];
departmentMap
.
set
(
'
原煤
'
,
[
'
综一队
'
,
'
综二队
'
,
'
综三队
'
,
'
开一区
'
,
'
开二区
'
,
'
准备一区
'
,
'
准备二区
'
,
'
掘进一区
'
,
'
掘进二区
'
,
'
掘进三区
'
,
'
开拓项目部
'
,
'
巷修区
'
,
'
井运区
'
,
'
通风区
'
,
'
机电运转中心
'
,
'
皮带运输中心
'
]);
departmentMap
.
set
(
'
风选煤
'
,
'
洗煤厂
'
);
departmentMap
.
set
(
'
制造费用
'
,
[
'
机电检修中心
'
,
'
地测科
'
,
'
设备管理科
'
,
'
旧品利用中心
'
,
'
机修加工中心
'
,
'
网络安全与信息通讯中心
'
,
'
保卫科
'
,
'
煤质管理科
'
,
'
迁建科
'
,
'
综合服务中心
'
]);
departmentMap
.
set
(
'
管理费用
'
,
[
'
财务部
'
,
'
综合办公室
'
,
'
纪委监察科
'
,
'
工会
'
,
'
团委
'
,
'
安全管理部
'
,
'
经营管理部
'
,
'
党委组织部(人力资源部)
'
,
'
党委宣传部
'
,
'
生产技术部
'
,
'
机电运输部
'
,
'
科协
'
,
'
节能环保法律办公室
'
,
'
党委组织部
'
,
'
人力资源部
'
]);
for
(
let
i
=
parseFloat
(
sysRulez
[
0
].
re
)
+
1
;
i
<
data
.
length
;
i
++
)
{
let
n
=
parseInt
(
sysRules
[
0
].
ce
)
+
2
;
if
(
data
[
i
][
key_i
]
!=
null
&&
data
[
i
][
n
]
!=
null
)
{
let
num
=
data
[
i
][
n
].
m
;
//根据得到的num,找到对应的key
let
keyy
=
getKeyByValue
(
departmentMap
,
num
);
departments
.
push
(
keyy
);
}
else
{
departments
.
push
(
null
);
}
}
for
(
let
key
of
departmentMap
.
keys
())
{
let
map
=
new
Map
();
let
smallMat
=
[];
//console.log(departments);
for
(
let
i
=
parseFloat
(
sysRulez
[
0
].
re
)
+
1
;
i
<
data
.
length
;
i
++
)
{
if
(
data
[
i
][
key_i
]
!=
null
&&
departments
[
i
-
1
]
===
key
)
{
let
num
=
data
[
i
][
key_i
].
m
;
smallMat
.
push
(
num
);
}
else
{
smallMat
.
push
(
null
);
}
}
//console.log(smallMat);
asyncTasks
.
push
(
new
Promise
((
innerResolve
,
innerReject
)
=>
{
const
allNull
=
smallMat
.
every
(
item
=>
item
===
null
);
if
(
allNull
)
{
throw
new
Error
(
"
导入失败,导入文件错误,所选文件与模板规则不匹
"
);
}
materialConvert
(
smallMat
)
.
then
(
response
=>
{
let
array
=
response
.
rows
;
//console.log(array);
//luckysheet.setCellValue(12, 1, {bg:"#FF0000"})
for
(
let
i
=
parseFloat
(
sysRulez
[
0
].
re
)
+
1
;
i
<
data
.
length
;
i
++
)
{
let
values
=
[];
if
(
data
[
i
][
13
]
!=
null
&&
departments
[
i
-
1
]
===
key
&&
data
[
i
][
key_i
]
!=
null
)
{
for
(
let
j
=
0
;
j
<
value
.
length
;
j
++
)
{
let
a
=
parseFloat
(
data
[
i
][
value
[
j
]].
v
);
values
.
push
(
a
);
}
//插入多个value的值
let
index
=
smallMat
.
indexOf
(
data
[
i
][
key_i
].
m
);
let
key
=
array
[
index
];
if
(
map
.
has
(
key
))
{
let
oldValues
=
map
.
get
(
key
);
for
(
let
i
=
0
;
i
<
values
.
length
;
i
++
)
{
values
[
i
]
=
parseFloat
(
parseFloat
(
values
[
i
]
+
oldValues
[
i
]).
toFixed
(
2
));
}
map
.
set
(
key
,
values
);
}
else
{
map
.
set
(
key
,
values
);
}
}
let
smallMat
=
[];
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
;
}
//循环得到汇总结果
//console.log(map);
let
cells
;
let
rowss
=
luckysheet
.
find
(
key
);
if
(
rowss
.
length
!=
0
)
{
for
(
let
i
=
0
;
i
<
sysRules
.
length
;
i
++
)
{
map
.
forEach
((
value
,
key
)
=>
{
let
searchResult
=
luckysheet
.
find
(
key
);
if
(
searchResult
.
length
!=
0
&&
key
!=
null
)
{
cells
=
searchResult
[
0
].
column
;
luckysheet
.
setCellValue
(
rowss
[
0
].
row
,
cells
,
value
[
i
]);
luckysheet
.
setCellValue
(
rowss
[
0
].
row
,
cells
,
{
"
ct
"
:
{
"
fa
"
:
"
General
"
,
"
t
"
:
"
n
"
}
});
}
});
}
}
}).
catch
(
Error
=>
{
console
.
log
(
"
这里是单个异步请求出错处
"
);
//必须加,不能删除
innerReject
(
Error
);
// 异步请求出错
});
}));
}
}
break
;
case
6
:
{
let
deps
=
[];
let
exps
=
[];
let
map
=
new
Map
();
let
smallMat
=
[];
for
(
let
i
=
parseFloat
(
sysRulez
[
0
].
re
)
+
1
;
i
<
data
.
length
;
i
++
)
{
if
(
data
[
i
][
key_i
]
!=
null
)
{
let
num
=
data
[
i
][
key_i
].
m
;
let
dep
=
data
[
i
][
1
].
m
;
let
exp
=
data
[
i
][
14
].
m
;
smallMat
.
push
(
num
);
}
else
{
deps
.
push
(
dep
);
exps
.
push
(
exp
);
}
else
{
smallMat
.
push
(
null
);
deps
.
push
(
null
);
exps
.
push
(
null
);
}
}
materialConvert
(
smallMat
).
then
(
response
=>
{
debugger
//console.log(smallMat);
asyncTasks
.
push
(
new
Promise
((
innerResolve
,
innerReject
)
=>
{
const
allNull
=
smallMat
.
every
(
item
=>
item
===
null
);
const
allNull1
=
deps
.
every
(
item
=>
item
===
null
);
const
allNull2
=
exps
.
every
(
item
=>
item
===
null
);
if
(
allNull
||
allNull1
||
allNull2
)
{
throw
new
Error
(
"
导入失败,导入文件错误,所选文件与模板规则不匹
"
);
}
materialConvert
(
smallMat
)
.
then
(
response
=>
{
let
array
=
response
.
rows
;
//console.log(array);
//luckysheet.setCellValue(12, 1, {bg:"#FF0000"})
for
(
let
i
=
parseFloat
(
sysRulez
[
0
].
re
)
+
1
,
k
=
0
;
i
<
data
.
length
;
i
++
,
k
++
)
{
let
values
=
[];
if
(
data
[
i
][
key_i
]
!=
null
)
{
for
(
let
j
=
0
;
j
<
value
.
length
;
j
++
)
{
try
{
let
a
=
parseFloat
(
data
[
i
][
value
[
j
]].
v
);
values
.
push
(
a
);
}
catch
(
err
){
throw
new
Error
(
"
导入失败,导入文件不匹
"
);
}
}
//插入多个value的值
let
key
=
exps
[
k
]
+
'
/
'
+
deps
[
k
]
+
'
/
'
+
array
[
k
];
if
(
map
.
has
(
key
))
{
let
oldValues
=
map
.
get
(
key
);
for
(
let
i
=
0
;
i
<
values
.
length
;
i
++
)
{
values
[
i
]
=
parseFloat
(
parseFloat
(
values
[
i
]
+
oldValues
[
i
]).
toFixed
(
2
));
}
map
.
set
(
key
,
values
);
}
else
{
map
.
set
(
key
,
values
);
}
}
}
//循环得到汇总结果
console
.
log
(
map
);
if
(
map
.
size
===
0
)
{
throw
new
Error
(
"
导入失败,导入文件错误
"
);
}
//循环得到汇总结果
let
cells
;
let
rowws
;
let
con
=
0
;
let
warn
;
for
(
let
i
=
0
;
i
<
sysRules
.
length
;
i
++
)
{
map
.
forEach
((
value
,
key
)
=>
{
const
suffixArr
=
key
.
split
(
'
/
'
),
mat
=
suffixArr
[
2
],
depp
=
suffixArr
[
1
],
expp
=
suffixArr
[
0
];
//console.log(expp);console.log(depp);console.log(mat);
let
searchResult
=
luckysheet
.
find
(
expp
);
if
(
searchResult
.
length
===
0
&&
expp
==
null
)
{
warn
++
;
return
}
rowws
=
searchResult
[
0
].
row
;
for
(
let
i
=
1
;
i
<
10000000000000000000000000
;
i
++
)
{
let
n
=
rowws
+
i
;
let
gg
=
luckysheet
.
getCellValue
(
n
,
0
);
if
(
gg
!==
null
)
{
con
=
rowws
+
i
;
break
;
}
}
searchResult
=
luckysheet
.
find
(
depp
);
let
k
=
0
;
let
r
;
for
(
let
i
=
0
;
i
<
searchResult
.
length
;
i
++
){
r
=
searchResult
[
i
].
row
;
if
(
r
<
con
&&
r
>=
rowws
){
k
=
1
;
break
;
}
}
if
(
k
===
1
){
let
matResult
=
luckysheet
.
find
(
mat
);
if
(
matResult
.
length
!==
0
&&
mat
!=
null
)
{
cells
=
matResult
[
0
].
column
;
luckysheet
.
setCellValue
(
r
,
cells
,
value
[
i
]);
luckysheet
.
setCellValue
(
r
,
cells
,
{
"
ct
"
:
{
"
fa
"
:
"
General
"
,
"
t
"
:
"
n
"
}
});
}
}
});
}
}).
catch
(
Error
=>
{
console
.
log
(
"
这里是单个异步请求出错处
"
);
//必须加,不能删除
innerReject
(
Error
);
// 异步请求出错
});
}));
}
break
;
case
1
:
{
let
map
=
new
Map
();
let
smallMat
=
[];
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
;
smallMat
.
push
(
num
);
}
else
{
smallMat
.
push
(
null
);
}
}
for
(
let
j
=
0
;
j
<
value
.
length
;
j
++
)
{
if
(
data
[
sysRulez
[
0
].
re
][
value
[
j
]]
!=
null
)
{
let
num
=
data
[
sysRulez
[
0
].
re
][
value
[
j
]].
m
;
smallMat
.
push
(
num
);
}
else
{
smallMat
.
push
(
null
);
}
}
//console.log(smallMat);
asyncTasks
.
push
(
new
Promise
((
innerResolve
,
innerReject
)
=>
{
const
allNull
=
smallMat
.
every
(
item
=>
item
===
null
);
if
(
allNull
)
{
throw
new
Error
(
"
导入失败,导入文件错误,所选文件与模板规则不匹
"
);
}
materialConvert
(
smallMat
)
.
then
(
response
=>
{
let
array
=
response
.
rows
;
//console.log(array);
//luckysheet.setCellValue(12, 1, {bg:"#FF0000"})
for
(
let
i
=
parseInt
(
sysRulez
[
0
].
re
)
+
1
;
i
<
data
.
length
;
i
++
)
{
for
(
let
i
=
parseInt
(
sysRulez
[
0
].
re
)
+
1
;
i
<
data
.
length
;
i
++
)
{
let
values
=
[];
if
(
data
[
i
][
key_i
]
!=
null
){
for
(
let
j
=
0
;
j
<
value
.
length
;
j
++
)
{
if
(
data
[
i
][
key_i
]
!=
null
)
{
for
(
let
j
=
0
;
j
<
value
.
length
;
j
++
)
{
try
{
let
a
=
parseFloat
(
data
[
i
][
value
[
j
]].
v
);
if
(
isNaN
(
a
))
{
a
=
0
;
if
(
isNaN
(
a
))
{
a
=
0
;
}
values
.
push
(
a
);
}
catch
(
err
){
throw
new
Error
(
"
导入失败,导入文件不匹
"
);
}
}
else
{
}
}
else
{
break
;
}
//插入多个value的值
let
index
=
smallMat
.
indexOf
(
data
[
i
][
key_i
].
m
);
let
key
=
array
[
index
];
key
=
key
+
"
-
"
+
data
[
i
][
sysRulez
[
1
].
ce
].
m
if
(
map
.
has
(
key
))
{
let
oldValues
=
map
.
get
(
key
);
for
(
let
i
=
0
;
i
<
values
.
length
;
i
++
)
{
for
(
let
i
=
0
;
i
<
values
.
length
;
i
++
)
{
values
[
i
]
=
parseFloat
(
parseFloat
(
parseFloat
(
values
[
i
])
+
parseFloat
(
oldValues
[
i
])).
toFixed
(
2
));
}
map
.
set
(
key
,
values
);
...
...
@@ -327,54 +580,182 @@ export default {
map
.
set
(
key
,
values
);
}
}
if
(
map
.
size
===
0
)
{
throw
new
Error
(
"
导入失败,导入文件错误
"
);
}
//循环得到汇总结果
let
row
;
let
con
;
let
warn
=
0
;
console
.
log
(
map
);
for
(
let
i
=
0
;
i
<
sysRules
.
length
;
i
++
)
{
map
.
forEach
((
value
,
key
)
=>
{
let
splitElement
=
key
.
split
(
"
-
"
);
row
=
luckysheet
.
find
(
splitElement
[
0
])[
0
].
row
if
(
splitElement
[
1
]
!==
'
undefined
'
)
{
let
find
=
luckysheet
.
find
(
splitElement
[
1
])[
0
];
if
(
find
!=
null
&&
luckysheet
.
getCellValue
(
find
.
row
,
0
)
===
0
)
{
// 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, {
// "ct": {
// "fa": "General",
// "t": "n"
// }
// });
// }
let
matchingCells
=
[];
let
name
=
data
[
sysRules
[
i
].
re
][
sysRules
[
i
].
ce
].
m
if
(
name
.
includes
(
"
洗煤
"
))
{
row
=
sysRules
[
i
].
rt
;
con
=
parseInt
(
sysRules
[
i
].
rt
)
+
10
;
}
else
{
row
=
sysRules
[
i
].
rt
;
con
=
54
;
}
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
]);
luckysheet
.
setCellValue
(
row
,
sysRules
[
i
].
ct
,
{
"
ct
"
:
{
"
fa
"
:
"
General
"
,
"
t
"
:
"
n
"
}
});
break
;
}
else
{
}
}
}
});
}
let
value2
=
[];
let
map2
=
new
Map
;
for
(
let
i
=
0
;
i
<
sysConver
.
length
;
i
++
)
{
//value.push(data[sysRules[i].re][sysRules[i].ce].m);
value2
.
push
(
sysConver
[
i
].
ce
);
}
for
(
let
i
=
parseInt
(
sysRulez
[
0
].
re
)
+
1
;
i
<
data
.
length
;
i
++
)
{
let
values2
=
[];
if
(
data
[
i
][
key_i
]
!=
null
)
{
for
(
let
j
=
0
;
j
<
value2
.
length
;
j
++
)
{
try
{
let
a
=
parseFloat
(
data
[
i
][
value2
[
j
]].
v
);
if
(
isNaN
(
a
))
{
a
=
0
;
}
values2
.
push
(
a
);
}
catch
(
err
){
throw
new
Error
(
"
导入失败,导入文件不匹
"
);
}
}
}
else
{
break
;
}
//插入多个value的值
let
key
=
data
[
sysConver
[
0
].
re
][
sysConver
[
0
].
ce
].
v
;
if
(
map2
.
has
(
key
))
{
let
oldValues
=
map2
.
get
(
key
);
for
(
let
i
=
0
;
i
<
values2
.
length
;
i
++
)
{
values2
[
i
]
=
parseFloat
(
parseFloat
(
parseFloat
(
values2
[
i
])
+
parseFloat
(
oldValues
[
i
])).
toFixed
(
2
));
}
map2
.
set
(
key
,
values2
);
}
else
{
map2
.
set
(
key
,
values2
);
}
}
if
(
map2
.
size
===
0
)
{
throw
new
Error
(
"
导入失败,导入文件错误
"
);
}
map2
.
forEach
((
value
,
key
)
=>
{
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
,
{
"
ct
"
:
{
"
fa
"
:
"
General
"
,
"
t
"
:
"
n
"
}
});
}
})
}).
catch
(
Error
=>
{
console
.
log
(
"
这里是单个异步请求出错处
"
);
//必须加,不能删除
innerReject
(
Error
);
// 异步请求出错
});
}));
}
break
;
case
7
:
{
let
map
=
new
Map
();
let
smallMat
=
[];
let
deps
=
[];
for
(
let
i
=
parseFloat
(
sysRulez
[
0
].
re
)
+
1
;
i
<
data
.
length
;
i
++
)
{
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
);
}
}
debugger
console
.
log
(
deps
);
asyncTasks
.
push
(
new
Promise
((
innerResolve
,
innerReject
)
=>
{
const
allNull
=
smallMat
.
every
(
item
=>
item
===
null
);
if
(
allNull
)
{
throw
new
Error
(
"
导入失败,导入文件错误,所选文件与模板规则不匹
"
);
}
materialConvert
(
smallMat
)
.
then
(
response
=>
{
let
array
=
response
.
rows
;
for
(
let
i
=
parseFloat
(
sysRulez
[
0
].
re
)
+
1
,
k
=
0
;
i
<
data
.
length
;
i
++
,
k
++
)
{
let
values
=
[];
if
(
data
[
i
][
key_i
]
!=
null
)
{
for
(
let
j
=
0
;
j
<
value
.
length
;
j
++
)
{
try
{
let
a
=
parseFloat
(
data
[
i
][
value
[
j
]].
v
);
values
.
push
(
a
);
}
catch
(
err
){
this
.
$message
({
message
:
"
导入失败,导入文件不匹
"
,
type
:
"
error
"
});
innerReject
(
error
);
// 异步请求出错
}
let
rowindex
;
let
colindex
;
let
config
;
// let bord={
// "rangeType": "cell",
// "value": {
// "row_index": 0,
// "col_index": 0,
// "l": {
// "style": 1,
// "color": "#000000"
// },
// "r": {
// "style": 1,
// "color": "#000000"
// },
// "t": {
// "style": 1,
// "color": "#000000"
// },
// "b": {
// "style": 1,
// "color": "#000000"
// }
// }
// };
}
//插入多个value的值
//此方法只适用于一对一唯一值
/*let index = smallMat.indexOf(data[i][key_i].m);
let key = array[index];*/
let
key
=
array
[
k
]
+
'
/
'
+
deps
[
k
];
if
(
map
.
has
(
key
))
{
let
oldValues
=
map
.
get
(
key
);
for
(
let
i
=
0
;
i
<
values
.
length
;
i
++
)
{
values
[
i
]
=
parseFloat
(
parseFloat
(
values
[
i
]
+
oldValues
[
i
]).
toFixed
(
2
));
}
map
.
set
(
key
,
values
);
}
else
{
map
.
set
(
key
,
values
);
}
}
}
//循环得到汇总结果
console
.
log
(
map
);
if
(
map
.
size
===
0
)
{
this
.
$message
({
message
:
"
导入失败,导入文件错误
"
,
type
:
"
error
"
});
innerReject
(
error
);
// 异步请求出错
}
//返回单元格第二行的数据
//let celn=luckysheet.getcellvalue(1);
//返回当前工作表第1列数据
//let cown=luckysheet.getcellvalue(null,0);
let
rowws
;
let
config
;
let
bord
=
{
"
rangeType
"
:
"
range
"
,
"
borderType
"
:
"
border-all
"
,
...
...
@@ -385,102 +766,186 @@ export default {
"
column
"
:
[
0
,
0
]
}]
}
let
cellValue
=
luckysheet
.
getcellvalue
(
row
);
luckysheet
.
insertRow
(
row
+
1
)
luckysheet
.
setCellValue
(
row
+
1
,
sysRulez
[
0
].
ct
,
splitElement
[
0
]);
luckysheet
.
setCellValue
(
row
+
1
,
sysRulez
[
0
].
ct
,
cellValue
[
0
]);
// config = luckysheet.getConfig(0);
// bord.value.row_index = row+1;
// bord.value.col_index = parseInt(sysRulez[0].ct);
// config.borderInfo.push(bord);
// luckysheet.setConfig(config);
//
// config = luckysheet.getConfig(0);
// bord.value.row_index = row+1;
// bord.value.col_index = parseInt(sysRulez[0].ct)+1;
// config.borderInfo.push(bord);
// luckysheet.setConfig(config);
luckysheet
.
setCellValue
(
row
+
1
,
sysRulez
[
1
].
ct
,
splitElement
[
1
]);
luckysheet
.
setCellValue
(
row
+
1
,
sysRulez
[
1
].
ct
,
cellValue
[
2
]);
// config = luckysheet.getConfig(0);
// bord.value.row_index = row+1;
// bord.value.col_index = parseInt(sysRulez[1].ct);
// config.borderInfo.push(bord);
// luckysheet.setConfig(config);
if
(
value
[
0
]
===
0
){
luckysheet
.
setCellValue
(
row
+
1
,
parseInt
(
sysRules
[
0
].
ct
)
+
1
,
0
);
luckysheet
.
setCellValue
(
row
+
1
,
parseInt
(
sysRules
[
0
].
ct
)
+
1
,
cellValue
[
4
]);
}
else
{
luckysheet
.
setCellValue
(
row
+
1
,
parseInt
(
sysRules
[
0
].
ct
)
+
1
,
value
[
1
]
/
value
[
0
]);
luckysheet
.
setCellValue
(
row
+
1
,
parseInt
(
sysRules
[
0
].
ct
)
+
1
,
cellValue
[
4
]);
}
// config = luckysheet.getConfig(0);
// bord.value.row_index = row+1;
// bord.value.col_index = parseInt(sysRules[0].ct)+1;
// config.borderInfo.push(bord);
// luckysheet.setConfig(config);
for
(
let
i
=
0
;
i
<
value
.
length
;
i
++
)
{
luckysheet
.
setCellValue
(
row
+
1
,
sysRules
[
i
].
ct
,
value
[
i
]);
luckysheet
.
setCellValue
(
row
+
1
,
sysRules
[
i
].
ct
,
{
let
warn
=
0
;
map
.
forEach
((
value
,
key
)
=>
{
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
)
{
luckysheet
.
insertRow
(
rowws
+
1
);
//输出部门数量金额
luckysheet
.
setCellValue
(
rowws
+
1
,
sysRulez
[
1
].
ct
,
depp
);
for
(
let
i
=
0
;
i
<
sysRules
.
length
;
i
++
)
{
luckysheet
.
setCellValue
(
rowws
+
1
,
sysRules
[
i
].
ct
,
value
[
i
]);
//修改单元格样式
/*luckysheet.setCellValue(rowws+g, sysRules[i].ct, {
"ct": {
"fa": "General",
"t": "n"
}
});
luckysheet
.
setCellValue
(
row
+
1
,
sysRules
[
i
].
ct
,
cellValue
[
3
]);
// config = luckysheet.getConfig(0);
// bord.value.row_index = row+1;
// bord.value.col_index = parseInt(sysRules[i].ct);
// config.borderInfo.push(bord);
// luckysheet.setConfig(config);
});*/
}
//输出单价
luckysheet
.
setCellValue
(
rowws
+
1
,
parseInt
(
sysRules
[
0
].
ct
)
+
1
,
value
[
1
]
/
value
[
0
]);
//修改单价样式
/*luckysheet.setCellValue(rowws+g,parseInt(sysRules[0].ct)+1,{
"ct": {
"fa": "0.0000",
"t": "n"
}
});*/
}
else
{
warn
++
;
}
config
=
luckysheet
.
getConfig
(
0
);
bord
.
range
[
0
].
row
=
[
row
+
1
,
row
+
1
];
bord
.
range
[
0
].
column
=
[
sysRulez
[
0
].
ct
,
sysRules
[
sysRules
.
length
-
1
].
ct
];
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
);
});
console
.
log
(
warn
);
/*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
(
"
这里是单个异步请求出错处
"
);
//必须加,不能删除
innerReject
(
Error
);
// 异步请求出错
});
}));
}
}
else
{
luckysheet
.
setCellValue
(
row
,
parseInt
(
sysRulez
[
1
].
ct
),
"
无
"
);
if
(
value
[
0
]
===
0
){
luckysheet
.
setCellValue
(
row
,
parseInt
(
sysRules
[
0
].
ct
)
+
1
,
0
);
}
else
{
luckysheet
.
setCellValue
(
row
,
parseInt
(
sysRules
[
0
].
ct
)
+
1
,
value
[
1
]
/
value
[
0
]);
break
;
default
:
{
let
map
=
new
Map
();
let
smallMat
=
[];
for
(
let
i
=
parseFloat
(
sysRulez
[
0
].
re
)
+
1
;
i
<
data
.
length
;
i
++
)
{
if
(
data
[
i
][
key_i
]
!=
null
)
{
let
num
=
data
[
i
][
key_i
].
m
;
smallMat
.
push
(
num
);
}
else
{
smallMat
.
push
(
null
);
}
for
(
let
i
=
0
;
i
<
value
.
length
;
i
++
)
{
luckysheet
.
setCellValue
(
row
,
sysRules
[
i
].
ct
,
value
[
i
]);
// config = luckysheet.getConfig(0);
// bord.value.row_index = row+1;
// bord.value.col_index = parseInt(sysRules[i].ct);
// config.borderInfo.push(bord);
// luckysheet.setConfig(config);
}
asyncTasks
.
push
(
new
Promise
((
innerResolve
,
innerReject
)
=>
{
const
allNull
=
smallMat
.
every
(
item
=>
item
===
null
);
if
(
allNull
)
{
throw
new
Error
(
"
导入失败,导入文件错误,所选文件与模板规则不匹
"
);
}
materialConvert
(
smallMat
)
.
then
(
response
=>
{
let
array
=
response
.
rows
;
for
(
let
i
=
parseFloat
(
sysRulez
[
0
].
re
)
+
1
;
i
<
data
.
length
;
i
++
)
{
let
values
=
[];
let
index
;
if
(
data
[
i
][
key_i
]
!=
null
)
{
for
(
let
j
=
0
;
j
<
value
.
length
;
j
++
)
{
try
{
let
a
=
parseFloat
(
data
[
i
][
value
[
j
]].
v
);
values
.
push
(
a
);
}
catch
(
err
){
throw
new
Error
(
"
导入失败,导入文件不匹
"
);
}
});
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
(()
=>
{
// 处理错误逻辑,这里是一个空的错误处理函数
console
.
log
(
"
走到这了,物料转换后续处理出问题了!!
"
);
}
//插入多个value的值
index
=
smallMat
.
indexOf
(
data
[
i
][
key_i
].
m
);
let
key
=
array
[
index
];
if
(
map
.
has
(
key
))
{
let
oldValues
=
map
.
get
(
key
);
for
(
let
i
=
0
;
i
<
values
.
length
;
i
++
)
{
values
[
i
]
=
parseFloat
(
parseFloat
(
values
[
i
]
+
oldValues
[
i
]).
toFixed
(
2
));
}
map
.
set
(
key
,
values
);
}
else
{
map
.
set
(
key
,
values
);
}
}
}
//循环得到汇总结果
console
.
log
(
map
);
if
(
map
.
size
===
0
)
{
throw
new
Error
(
"
导入失败,导入文件错误
"
);
}
let
rowws
;
let
warn
=
0
;
for
(
let
i
=
0
;
i
<
sysRules
.
length
;
i
++
)
{
map
.
forEach
((
value
,
key
)
=>
{
let
searchResult
;
searchResult
=
luckysheet
.
find
(
key
);
if
(
searchResult
&&
searchResult
.
length
!==
0
&&
key
!=
null
)
{
rowws
=
searchResult
[
0
].
row
;
luckysheet
.
setCellValue
(
rowws
,
sysRules
[
i
].
ct
,
value
[
i
]);
luckysheet
.
setCellValue
(
rowws
,
sysRules
[
i
].
ct
,
{
"
ct
"
:
{
"
fa
"
:
"
General
"
,
"
t
"
:
"
n
"
}
});
}
else
{
warn
++
;
}
});
}
if
(
warn
/
sysRules
.
length
===
map
.
size
)
{
throw
new
Error
(
"
导入文件与所选模板规则不匹配
"
);
}
else
if
(
warn
>
0
)
{
this
.
$message
({
message
:
"
还有
"
+
warn
/
sysRules
.
length
+
"
条大类未能匹配到
"
,
type
:
"
warning
"
});
}
resolve
(
response
.
rows
);
innerResolve
();
// 标记当前异步任务完成
}).
catch
(
Error
=>
{
console
.
log
(
"
这里是单个异步请求出错处
"
);
//必须加,不能删除
innerReject
(
Error
);
// 异步请求出错
});
}));
}
break
;
}
//切换到想要的sheet
luckysheet
.
setSheetActive
(
0
);
Promise
.
all
(
asyncTasks
)
.
then
(()
=>
{
resolve
();
// 所有异步请求执行完成
})
.
catch
(
Error
=>
{
console
.
log
(
"
这里是所有的异步请求出错处
"
);
reject
(
Error
);
// 异步请求出错
});
});
},
/** 保存导入文件和生成文件 */
submit
(
contents
){
debugger
console
.
log
(
"
还是执行了保存方法
"
);
const
name
=
contents
.
info
.
name
;
let
objsheet
=
luckysheet
.
getAllSheets
()
// 得到表的数据
//LuckyExcel = objsheet // 将表的数据保存本地
let
strsheet
=
JSON
.
stringify
(
objsheet
)
// 对象转化为字符串
const
data
=
{
name
:
name
,
jsons
:
strsheet
};
/*addMyluckyexcel(data).then(response => {
if(response.code==200){
this.$message({
message: '保存成功', type: 'success'
});
this.dialogVisible=false;
//this.$router.replace({ path: '/' }); //刷新整个页面会出错
//window.location.reload();//也是全局刷新,不合适
this.$router.go(-1);
}else{
this.$message.error('保存失败');
}
});*/
},
/** 导出设置 */
handleExport
:
debounce
(
function
()
{
// 处理点击事件
...
...
@@ -501,5 +966,15 @@ function debounce(func, delay) {
},
delay
);
};
}
function
getKeyByValue
(
map
,
value
)
{
for
(
let
[
key
,
val
]
of
map
)
{
if
(
val
===
value
)
{
return
key
;
}
if
(
Array
.
isArray
(
val
)
&&
val
.
includes
(
value
))
{
return
key
;
}
}
}
</
script
>
ruoyi-ui/src/views/system/supplies/indexupload.vue
View file @
cabffdc0
...
...
@@ -48,7 +48,6 @@
icon=
"el-icon-upload2"
size=
"mini"
@
click=
"handleExport"
v-hasPermi=
"['ruoyi-myexcel:myexcel:export']"
>
导出
</el-button>
</el-col>
<el-col
:span=
"1.5"
>
...
...
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