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
137782ef
Commit
137782ef
authored
Jul 12, 2024
by
tangzhichun
Committed by
刘_震
Jul 15, 2024
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
增加材料明细模版、中间工资汇总
parent
7c77feb6
Changes
24
Show whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
15474 additions
and
660 deletions
+15474
-660
ruoyi-ui/src/Wages/conversLxk.js
ruoyi-ui/src/Wages/conversLxk.js
+34
-0
ruoyi-ui/src/api/conversion/power.js
ruoyi-ui/src/api/conversion/power.js
+14
-0
ruoyi-ui/src/api/power/power.js
ruoyi-ui/src/api/power/power.js
+54
-0
ruoyi-ui/src/api/ruoyi-myLuckyexcel/myluckyexcel.js
ruoyi-ui/src/api/ruoyi-myLuckyexcel/myluckyexcel.js
+16
-0
ruoyi-ui/src/assets/css/power/index.css
ruoyi-ui/src/assets/css/power/index.css
+31
-0
ruoyi-ui/src/assets/js/power/convers.js
ruoyi-ui/src/assets/js/power/convers.js
+392
-0
ruoyi-ui/src/conversion/MoneyMine.js
ruoyi-ui/src/conversion/MoneyMine.js
+1
-0
ruoyi-ui/src/conversion/TangshanMin.js
ruoyi-ui/src/conversion/TangshanMin.js
+3
-14
ruoyi-ui/src/conversion/TangshanMine copy.js
ruoyi-ui/src/conversion/TangshanMine copy.js
+0
-166
ruoyi-ui/src/conversion/TangshanMine.js
ruoyi-ui/src/conversion/TangshanMine.js
+0
-150
ruoyi-ui/src/mock.js
ruoyi-ui/src/mock.js
+12872
-0
ruoyi-ui/src/utils/MineProofConfig.js
ruoyi-ui/src/utils/MineProofConfig.js
+293
-0
ruoyi-ui/src/views/system/ActClassification/index.vue
ruoyi-ui/src/views/system/ActClassification/index.vue
+5
-1
ruoyi-ui/src/views/system/Wages/LinXiWages.vue
ruoyi-ui/src/views/system/Wages/LinXiWages.vue
+57
-0
ruoyi-ui/src/views/system/Wages/contrast.vue
ruoyi-ui/src/views/system/Wages/contrast.vue
+141
-0
ruoyi-ui/src/views/system/power/ass.js
ruoyi-ui/src/views/system/power/ass.js
+224
-0
ruoyi-ui/src/views/system/power/index.vue
ruoyi-ui/src/views/system/power/index.vue
+464
-0
ruoyi-ui/src/views/system/power/linxi.vue
ruoyi-ui/src/views/system/power/linxi.vue
+14
-0
ruoyi-ui/src/views/system/power/tangshan.vue
ruoyi-ui/src/views/system/power/tangshan.vue
+42
-0
ruoyi-ui/src/views/system/power/ylw.js
ruoyi-ui/src/views/system/power/ylw.js
+134
-0
ruoyi-ui/src/views/system/run_of_coal/index.vue
ruoyi-ui/src/views/system/run_of_coal/index.vue
+163
-0
ruoyi-ui/src/views/system/supplies/materialDetailTemplateTable/index.js
...iews/system/supplies/materialDetailTemplateTable/index.js
+14
-0
ruoyi-ui/src/views/system/supplies/materialDetailTemplateTable/index.vue
...ews/system/supplies/materialDetailTemplateTable/index.vue
+506
-0
ruoyi-ui/src/views/system/suppliesrole/index.vue.bak1
ruoyi-ui/src/views/system/suppliesrole/index.vue.bak1
+0
-329
No files found.
ruoyi-ui/src/Wages/conversLxk.js
0 → 100644
View file @
137782ef
import
{
setXRow
}
from
"
@/utils/tzc
"
;
/**
* @function 林西矿工资数据处理
* @description
* @param jsonData 导入的数据
* @return 处理后的luckysheet的一维数组
* @author cwl 2024年6月17日11:37:45
*/
export
function
machLxGzdata
(
list
,
jsonData
)
{
var
CompositeTable
=
jsonData
;
//后台返回数据
CompositeTable
[
0
].
data
=
luckysheet
.
transToData
(
CompositeTable
[
0
].
celldata
);
var
dList
=
setXRow
(
CompositeTable
[
0
].
data
);
//汇总表中单位集合包含行数
list
.
forEach
((
item
)
=>
{
let
dName
=
item
.
dep
;
var
r
=
dList
[
dName
];
item
.
r
=
r
;
item
.
v
=
item
.
value
;
});
// 对比 c 和 r 是否与 CompositeTable[0]["celldata"] 中相应对象相同
for
(
let
k
=
0
;
k
<
CompositeTable
[
0
][
"
celldata
"
].
length
;
k
++
)
{
for
(
let
i
=
0
;
i
<
list
.
length
;
i
++
)
{
if
(
list
[
i
].
r
==
CompositeTable
[
0
][
"
celldata
"
][
k
].
r
&&
list
[
i
].
c
==
CompositeTable
[
0
][
"
celldata
"
][
k
].
c
)
{
// 如果相同,则进行替换
CompositeTable
[
0
][
"
celldata
"
][
k
].
v
.
v
=
list
[
i
].
v
;
}
}
}
return
CompositeTable
;
}
ruoyi-ui/src/api/conversion/power.js
0 → 100644
View file @
137782ef
// 电力汇总和转凭证接口
import
request
from
"
@/utils/request
"
;
// 唐山电力数据文件导入
export
function
importTSExcel
(
data
)
{
return
request
({
url
:
"
/power/dExcel
"
,
method
:
"
post
"
,
headers
:
{
"
Content-Type
"
:
"
multipart/form-data
"
,
},
data
:
data
,
});
}
\ No newline at end of file
ruoyi-ui/src/api/power/power.js
0 → 100644
View file @
137782ef
import
request
from
'
@/utils/request
'
// 特殊表(填写数据)的导入接口
export
function
power
(
data
)
{
return
request
({
url
:
'
/power
'
,
method
:
'
post
'
,
data
:
data
})
}
export
function
powerall
(
data
)
{
return
request
({
url
:
'
/power/all
'
,
method
:
'
post
'
,
headers
:
{
"
Content-Type
"
:
"
application/json
"
,
},
data
:
data
})
}
//展示前端所需要数据的接口
export
function
powerdata
(
data
)
{
return
request
({
url
:
`/power?mineId=
${
data
.
mineId
}
&date=
${
data
.
date
}
`
,
method
:
'
get
'
,
// params: data
})
}
// 电力表的对照表的导入接口
export
function
cExcel
(
data
)
{
return
request
({
url
:
'
/power/cExcel
'
,
method
:
'
post
'
,
headers
:
{
"
Content-Type
"
:
"
multipart/form-data
"
,
},
data
:
data
})
}
// 电力表的详细数据的导入接口
export
function
dExcel
(
data
)
{
return
request
({
url
:
'
/power/dExcel
'
,
method
:
'
post
'
,
headers
:
{
"
Content-Type
"
:
"
multipart/form-data
"
,
},
data
:
data
})
}
ruoyi-ui/src/api/ruoyi-myLuckyexcel/myluckyexcel.js
View file @
137782ef
...
...
@@ -325,3 +325,19 @@ export function listMyluckyexcel(query) {
// params: query
// })
// }
export
function
asiccData
(
data
)
{
return
request
({
url
:
'
asicc/getData
'
,
method
:
"
post
"
,
data
,
});
}
export
function
asmInfoSave
(
data
)
{
return
request
({
url
:
'
asmInfo/save
'
,
method
:
"
post
"
,
data
,
});
}
ruoyi-ui/src/assets/css/power/index.css
0 → 100644
View file @
137782ef
.mask
{
position
:
fixed
;
top
:
0
;
left
:
0
;
width
:
100%
;
height
:
100%
;
background-color
:
rgba
(
0
,
0
,
0
,
0.5
);
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
}
.loading-spinner
{
/* 添加你的加载动画样式 */
width
:
40px
;
height
:
40px
;
border-radius
:
50%
;
border
:
4px
solid
#f3f3f3
;
border-top
:
4px
solid
#3498db
;
animation
:
spin
1s
linear
infinite
;
}
@keyframes
spin
{
0
%
{
transform
:
rotate
(
0deg
);
}
100
%
{
transform
:
rotate
(
360deg
);
}
}
\ No newline at end of file
ruoyi-ui/src/assets/js/power/convers.js
0 → 100644
View file @
137782ef
import
{
getSuppliesTemplate
,
listSuppliesTemplate
,
roleList
,
templateListid
}
from
"
@/api/ruoyi-myLuckyexcel/myluckyexcel
"
;
import
{
cExcel
,
dExcel
,
power
,
powerdata
}
from
"
@/api/power/power.js
"
;
import
{
importTSExcel
}
from
"
@/api/conversion/power
"
;
// import luckysheet from 'luckysheet'
import
LuckyExcel
from
"
luckyexcel
"
;
//导入库export.js 这个文件是es6的,不能在普通的HTML文件直接引入js文件(虽然都是js文件,但是有区别,具体请百度es6与es5)!需要把es6转es5才可以直接引入使用!
/*import {materialList} from "@/api/ruoyi-myLuckyexcel/myluckyexcel";*/
import
{
v4
as
uuidv4
}
from
"
uuid
"
;
import
{
exportExcel
}
from
"
../../../../public/exportExcel
"
;
import
{
jxdfxt
,
setTs
}
from
"
@/views/system/power/ass.js
"
;
import
{
machGzdata
}
from
"
@/Wages/conversTsk.js
"
;
import
{
machLxGzdata
}
from
"
@/Wages/conversLxk.js
"
;
// import { config } from "vue/types/umd";
var
fileName
=
"
新建XLSX工作表
"
;
//定义表名
var
rule
=
[];
var
tempId
;
var
uuid1
;
var
modify
=
false
;
var
that
;
export
default
{
name
:
"
Mymodule
"
,
data
()
{
return
{
wageMonth
:
""
,
//汇总表数据
luckyrule
:
''
,
//详细信息
phone
:
""
,
//未导入成本材料表模板所有数据
jsondata
:
""
,
//编码数据
showMask
:
false
,
uuid
:
""
,
selectedOption
:
""
,
luckysheetData
:
""
,
luckysheetDatas
:
""
,
depss
:
[],
fileList
:
[],
VoucherForm
:
""
,
all
:
""
,
sum
:
[],
//后端要的数据
param
:
''
,
// 查询参数
queryParams
:
{
status
:
0
,
},
mineId
:
''
,
//矿ID
};
},
created
()
{
that
=
this
;
//刷新页面时进行的操作
this
.
getList
();
},
mounted
()
{
this
.
init
();
fileName
=
"
新建XLSX工作表
"
;
},
methods
:
{
//查询材料编码
//手机号
open
()
{
this
.
$prompt
(
"
请输入用友系统的用户名
"
,
"
提示
"
,
{
confirmButtonText
:
"
确定
"
,
cancelButtonText
:
"
取消
"
,
inputPattern
:
/^
(?:\+?
86
)?
1
[
3-9
]\d{9}
$/
,
inputErrorMessage
:
"
手机号格式不正确
"
,
})
.
then
(({
value
})
=>
{
this
.
$message
({
type
:
"
success
"
,
message
:
"
你的用户名是:
"
+
value
,
});
this
.
phone
=
value
;
this
.
zhuan
();
})
.
catch
(()
=>
{
this
.
$message
({
type
:
"
info
"
,
message
:
"
取消输入
"
,
});
this
.
showMask
=
false
;
});
},
/** 页面刷新时展示的数据*/
getList
()
{
listSuppliesTemplate
(
this
.
queryParams
).
then
((
response
)
=>
{
response
.
rows
.
forEach
((
row
)
=>
{
if
(
row
.
templateName
.
includes
(
"
六矿
"
))
{
row
.
disabled
=
true
;
}
});
this
.
depss
=
response
.
rows
;
});
getSuppliesTemplate
(
1248
).
then
((
response
)
=>
{
const
sysSupplies
=
response
.
rows
;
this
.
luckysheetDatas
=
JSON
.
parse
(
sysSupplies
[
0
].
templateContent
);
});
},
open4
()
{
this
.
$message
.
error
(
"
请仔细检查所导入表
"
);
},
/** Luckyexcel文档 */
init
()
{
let
options
=
{
container
:
"
luckysheet
"
,
//luckysheet为容器id
title
:
""
,
lang
:
"
zh
"
,
showinfobar
:
false
,
data
:
[
{
name
:
"
sheet1
"
,
//工作表名称
color
:
""
,
//工作表颜色
index
:
0
,
//工作表索引
status
:
1
,
//激活状态
order
:
0
,
//工作表的下标
hide
:
0
,
//是否隐藏
row
:
50
,
//行数
column
:
20
,
//列数
defaultRowHeight
:
19
,
//自定义行高
defaultColWidth
:
73
,
//自定义列宽
celldata
:
[],
//初始化使用的单元格数据
config
:
{
merge
:
{},
//合并单元格
rowlen
:
{},
//表格行高
columnlen
:
{},
//表格列宽
rowhidden
:
{},
//隐藏行
colhidden
:
{},
//隐藏列
borderInfo
:
{},
//边框
authority
:
{},
//工作表保护
},
},
],
};
luckysheet
.
create
(
options
);
},
handleSuccess
(
response
,
file
,
fileList
)
{
},
//电力数据后台导入成功后,数据展示到前台
loadTableData
(
evt
)
{
this
.
sum
.
push
(
evt
);
if
(
modify
)
{
this
.
$confirm
(
"
再次导入将会清空表内数据,是否继续操作?
"
,
"
注意!!!
"
,
{
confirmButtonText
:
"
确定
"
,
cancelButtonText
:
"
取消
"
,
type
:
"
warning
"
,
}
)
.
then
(
async
()
=>
{
// 确认继续后刷新页面返回模板
getSuppliesTemplate
(
this
.
selectedOption
)
.
then
((
response
)
=>
{
const
sysSupplies
=
response
.
rows
;
this
.
luckysheetData
=
sysSupplies
[
0
].
templateContent
;
let
json_data
=
JSON
.
parse
(
sysSupplies
[
0
].
templateContent
);
luckysheet
.
destroy
();
luckysheet
.
create
({
container
:
"
luckysheet
"
,
// Luckysheet 的容器元素 ID
title
:
fileName
,
// Excel 文件名
data
:
json_data
,
// Excel 数据
allowEdit
:
false
,
//作用:是否允许前台编辑
showinfobar
:
false
,
//是否显示顶部名称栏
lang
:
"
zh
"
,
});
modify
=
false
;
this
.
open
(
this
.
sum
);
})
.
then
(
async
()
=>
{})
.
catch
(()
=>
{});
})
.
catch
(()
=>
{
// 用户点击了取消按钮
this
.
$message
({
type
:
"
info
"
,
message
:
"
操作已取消
"
,
});
});
}
else
{
this
.
open
(
evt
);
this
.
showMask
=
true
;
LuckyExcel
(
evt
,
(
exportJson
)
=>
{
//获取导入表格所有数据exportJson
this
.
open
(
exportJson
)
.
then
(
async
()
=>
{})
.
catch
((
error
)
=>
{
this
.
$message
({
message
:
error
.
message
,
type
:
"
error
"
,
});
})
.
finally
(()
=>
{
// 导入完成后关闭遮罩层
this
.
showMask
=
false
;
});
});
}
},
async
handleFileChange
(
evt
)
{
if
(
this
.
value
.
includes
(
"
凭证
"
))
{
this
.
loadTableData
(
evt
);
}
else
{
//组装后台接口数据
this
.
param
=
new
FormData
();
this
.
param
.
append
(
"
file
"
,
evt
);
this
.
param
.
append
(
"
date
"
,
this
.
wageMonth
);
this
.
param
.
append
(
"
mineId
"
,
this
.
mineId
);
}
//前台加载数据
},
handleOptionChange
(
value
,
mine_id
)
{
templateListid
(
value
).
then
((
response
)
=>
{
this
.
luckyrule
=
JSON
.
parse
(
response
.
rows
[
0
].
templateContent
);
this
.
luckyrule
.
forEach
(
item
=>
{
item
.
data
=
luckysheet
.
transToData
(
item
.
celldata
)
})
});
that
.
mineId
=
mine_id
.
id
let
lod
=
this
.
$loading
({
lock
:
true
,
text
:
"
加载中
"
,
background
:
"
rgba(0, 0, 0, 0.7)
"
,
});
//根据选中的下拉选项值获取相应的信息
getSuppliesTemplate
(
this
.
selectedOption
)
.
then
((
response
)
=>
{
lod
.
close
();
modify
=
false
;
tempId
=
this
.
selectedOption
;
uuid1
=
this
.
uuid
=
uuidv4
().
substring
(
0
,
8
);
const
sysSupplies
=
response
.
rows
;
this
.
luckysheetData
=
sysSupplies
[
0
].
templateContent
;
var
json_data
=
JSON
.
parse
(
sysSupplies
[
0
].
templateContent
);
this
.
jsondata
=
json_data
;
let
suffixArr
=
sysSupplies
[
0
].
templateName
.
split
(
"
.
"
);
fileName
=
suffixArr
[
0
];
//luckysheet.destroy()
luckysheet
.
create
({
container
:
"
luckysheet
"
,
// Luckysheet 的容器元素 ID
title
:
fileName
,
// Excel 文件名
data
:
json_data
,
// Excel 数据
showinfobar
:
false
,
allowEdit
:
false
,
//是否显示顶部名称栏
lang
:
"
zh
"
,
index
:
"
0
"
,
//工作表索引
status
:
"
1
"
,
//激活状态
});
this
.
value
=
fileName
;
})
.
catch
(()
=>
{
lod
.
close
();
// 处理错误逻辑,这里是一个空的错误处理函数
this
.
$message
.
error
(
"
查询失败,发生未知错误!
"
);
});
},
//电力数据后台汇总完后,回显到前台
setLuckysheetData
(
CompositeTable
,
myCompositeTable
){
CompositeTable
[
0
].
data
=
luckysheet
.
transToData
(
myCompositeTable
[
0
].
celldata
);
CompositeTable
[
0
].
calcChain
=
[];
let
as
=
CompositeTable
[
0
].
celldata
.
filter
(
(
item
)
=>
item
.
v
.
f
);
as
.
forEach
((
item
)
=>
{
let
sum
=
{
index
:
CompositeTable
[
0
].
index
,
r
:
item
.
r
,
c
:
item
.
c
,
};
CompositeTable
[
0
].
calcChain
.
push
(
sum
);
});
CompositeTable
[
0
].
celldata
[
0
].
status
=
1
;
luckysheet
.
create
({
forceCalculation
:
true
,
container
:
"
luckysheet
"
,
title
:
fileName
,
data
:
CompositeTable
,
showinfobar
:
false
,
lang
:
"
zh
"
,
});
let
obj
=
{
yearMonth
:
this
.
wageMonth
,
jsonData
:
JSON
.
stringify
(
CompositeTable
),
value
:
jsonString
,
mineId
:
that
.
mineId
};
modify
=
true
;
that
.
showMask
=
false
;
conversionSave
(
obj
).
then
((
response
)
=>
{});
},
//转换方法
zhuan
()
{
const
promises
=
this
.
sum
.
map
((
item
)
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
LuckyExcel
.
transformExcelToLucky
(
item
,
(
lucksheetfile
)
=>
{
resolve
(
lucksheetfile
);
});
});
});
Promise
.
all
(
promises
).
then
((
results
)
=>
{
let
min
=
{
date
:
this
.
wageMonth
,
mineId
:
this
.
mineId
}
//唐山矿规则
let
CConfig
=
{
'
加收管理费
'
:
[
'
电费-基本
'
],
'
照明电量
'
:
[
"
电量-峰
"
,
"
电量-平
"
,
"
电量-尖
"
,
"
电量-谷
"
,
'
电量-合计
'
],
//前四个有就不填,都没有填电量-合计
'
电光电费
'
:
[
"
电费-峰
"
,
"
电费-平
"
,
"
电费-尖
"
,
"
电费-谷
"
,
'
电费-合计
'
],
'
峰段电量
'
:
[
'
电量-峰
'
],
'
峰段金额
'
:
[
'
电费-峰
'
],
'
平段电量
'
:
[
'
电量-平
'
],
'
平段金额
'
:
[
'
电费-平
'
],
'
谷段电量
'
:
[
'
电量-谷
'
],
'
谷段金额
'
:
[
'
电费-谷
'
],
}
let
itemConfig
=
{
'
基本生产,原煤
'
:
[
'
原煤生产
'
],
'
基本生产,洗煤
'
:
[
'
洗煤厂(高压)
'
],
'
制造费用,原煤
'
:
[
'
矿井水净化
'
,
'
地面维修
'
,
'
联合建筑
'
,
'
厂区服务
'
,
'
供水供暖
'
],
//todo 缺少
'
管理用电
'
:
[
'
综合办
'
,
'
工会楼
'
,
'
小车房
'
,
'
绿化保洁
'
],
'
其他业务成本,住宿
'
:
[
'
住宿餐饮(集体宿舍)
'
],
'
其他业务成本,餐饮
'
:
[
'
住宿餐饮(东门食堂)
'
,
'
住宿餐饮(风井食堂)
'
],
'
其他业务成本,厂区服务,集团大院
'
:
[
'
集团公司大院
'
],
}
let
trans
=
jxdfxt
(
results
[
0
].
sheets
)
// 后端数据要的数据 trans, this.param
setTs
(
TSdL
,
this
.
luckyrule
,
CConfig
,
itemConfig
)
this
.
showMask
=
false
});
// .catch(error => {
// console.error("An error occurred while transforming Excel files:", error);
// // 处理错误情况
// });
},
//公式窗口关闭回调
handleExport
:
debounce
(
function
()
{
// handleExport
exportExcel
(
luckysheet
.
getAllSheets
(),
fileName
);
},
500
),
},
};
// 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
);
};
}
ruoyi-ui/src/conversion/MoneyMine.js
View file @
137782ef
...
...
@@ -10,6 +10,7 @@ export function MoneyMine(money, DepartmentColumns, name, materianame, c, Compos
k
++
;
}
}
// luckysheet.insertRow(5, { number: 6 });
//部门 因为部门再第0列 所以条件 obj.c不满足 需要单独写出来
let
Department
=
c
.
flat
().
filter
(
obj
=>
obj
.
c
!==
undefined
&&
obj
.
c
==
DepartmentColumns
&&
obj
.
r
>
headRow
)
...
...
ruoyi-ui/src/conversion/TangshanMin.js
View file @
137782ef
...
...
@@ -9,20 +9,6 @@ export function Tangshan(money, c, name, CompositeTable, headRow, researchs) {
k
++
;
}
}
// let insi = CompositeTable[0].celldata.filter(obj => obj.v.v == '6.研发支出')[0].r
// CompositeTable[0].celldata.forEach(item=>{
// if(item.r && item.r>insi){
// item.r=item.r+researchs.length
// }
// })
// for (let i = 0, k = 0; i < CompositeTable[0].celldata.length && k < researchs.length; i++) {
// if (CompositeTable[0].celldata[i] && CompositeTable[0].celldata[i].r && CompositeTable[0].celldata[i].r >= insi + 1 && CompositeTable[0].celldata[i].r < insert + 4 && CompositeTable[0].celldata[i].c == 0) {
// CompositeTable[0].celldata[i].v.v = researchs[k];
// CompositeTable[0].celldata[i].v.m = researchs[k];
// k++;
// }
// }
function
findValueInArray
(
arr
,
value
)
{
for
(
let
obj
of
arr
)
{
if
(
JSON
.
stringify
(
obj
).
includes
(
value
))
{
...
...
@@ -60,6 +46,9 @@ export function Tangshan(money, c, name, CompositeTable, headRow, researchs) {
if
(
obj
.
v
.
name
.
includes
(
'
洗煤
'
))
{
obj
.
v
.
name
=
'
基本生产-洗煤
'
}
if
(
obj
.
v
.
name
==
'
办公费用
'
)
{
obj
.
v
.
name
=
'
管理费用-
'
}
if
(
obj
.
v
.
name
==
'
其他业务成本
'
)
{
obj
.
v
.
name
+=
'
-厂区服务
'
}
...
...
ruoyi-ui/src/conversion/TangshanMine copy.js
deleted
100644 → 0
View file @
7c77feb6
export
function
Tangshan
(
money
,
c
,
name
,
CompositeTable
,
headRow
)
{
//money 总金额 c导入表所有数据,name 来源类别,CompositeTable 材料汇总表数据, headRow 数据行
let
results
=
[
'
金属厂
'
]
let
insert
=
CompositeTable
[
0
].
celldata
.
filter
(
obj
=>
obj
.
v
.
v
==
'
7.代付单位(XXX单位)
'
)[
0
].
r
for
(
let
i
=
0
,
k
=
0
;
i
<
CompositeTable
[
0
].
celldata
.
length
&&
k
<
results
.
length
;
i
++
)
{
if
(
CompositeTable
[
0
].
celldata
[
i
]
&&
CompositeTable
[
0
].
celldata
[
i
].
r
&&
CompositeTable
[
0
].
celldata
[
i
].
r
>=
insert
+
1
&&
CompositeTable
[
0
].
celldata
[
i
].
r
<
insert
+
4
&&
CompositeTable
[
0
].
celldata
[
i
].
c
==
0
)
{
CompositeTable
[
0
].
celldata
[
i
].
v
.
v
=
results
[
k
];
CompositeTable
[
0
].
celldata
[
i
].
v
.
m
=
results
[
k
];
k
++
;
}
}
function
findValueInArray
(
arr
,
value
)
{
for
(
let
obj
of
arr
)
{
if
(
JSON
.
stringify
(
obj
).
includes
(
value
))
{
return
obj
;
}
}
return
null
;
}
let
targetValue
=
"
器材大类
"
;
let
resultObject
=
findValueInArray
(
c
,
targetValue
);
let
material
=
c
.
flat
().
filter
(
obj
=>
obj
.
c
&&
obj
.
c
==
resultObject
.
c
&&
obj
.
r
>
headRow
)
money
.
forEach
(
entry
=>
{
entry
.
department
=
''
;
entry
.
v
.
name
=
''
;
entry
.
v
.
material
=
''
;
entry
.
index
=
entry
.
r
});
// 匹配赋值
for
(
let
i
=
0
;
i
<
money
.
length
;
i
++
)
{
if
(
money
[
i
].
r
==
name
[
i
].
r
)
{
money
[
i
].
v
.
name
=
name
[
i
].
v
.
v
;
}
if
(
money
[
i
].
r
==
material
[
i
].
r
)
{
money
[
i
].
v
.
material
=
material
[
i
].
v
.
v
;
}
}
//对费用来源列和材料分类列进行处理
money
.
forEach
(
obj
=>
{
if
(
!
obj
.
v
.
material
)
{
obj
.
v
.
material
=
'
其他材料
'
}
if
(
obj
.
v
.
name
==
'
基本生产
'
||
obj
.
v
.
name
==
'
制造费用
'
)
{
obj
.
v
.
name
+=
'
-原煤
'
}
if
(
obj
.
v
.
name
.
includes
(
'
洗煤
'
))
{
obj
.
v
.
name
=
'
基本生产-洗煤
'
}
if
(
obj
.
v
.
name
==
'
其他业务成本
'
)
{
obj
.
v
.
name
+=
'
-厂区服务
'
}
if
(
obj
.
v
.
name
==
'
其他费用
'
)
{
obj
.
v
.
name
=
'
代付单位(XXX单位)-金属厂
'
}
// 如果不包含连字符,就在末尾添加一个连字符
if
(
obj
.
v
.
name
.
indexOf
(
'
-
'
)
===
-
1
)
{
obj
.
v
.
name
+=
'
-
'
;
}
})
//材料分类列和汇总列数值一样的话,列数就一样
money
.
forEach
(
obj
=>
{
CompositeTable
[
0
].
celldata
.
forEach
(
cell
=>
{
if
(
obj
.
v
.
material
==
cell
.
v
.
v
)
{
obj
.
c
=
cell
.
c
}
})
})
money
.
forEach
(
item
=>
{
if
(
item
.
v
.
name
!==
undefined
)
{
let
index
=
item
.
v
.
name
.
indexOf
(
"
-
"
);
if
(
index
!==
-
1
)
{
let
substrBeforeDash
=
item
.
v
.
name
.
slice
(
0
,
index
);
let
DepartColumns
=
CompositeTable
[
0
][
"
celldata
"
].
flat
().
filter
(
obj
=>
{
if
(
obj
.
v
&&
obj
.
v
.
v
&&
typeof
obj
.
v
.
v
===
'
string
'
)
{
return
obj
.
v
.
v
.
includes
(
item
.
v
.
name
.
slice
(
0
,
index
));
}
return
false
;
})[
0
];
if
(
DepartColumns
&&
DepartColumns
.
r
)
{
let
index
=
item
.
v
.
name
.
indexOf
(
"
-
"
);
if
(
index
!==
-
1
)
{
let
substrAfterDash
=
item
.
v
.
name
.
slice
(
index
+
1
);
switch
(
substrAfterDash
)
{
case
''
:
item
.
r
=
DepartColumns
.
r
;
break
;
case
'
原煤
'
:
item
.
r
=
DepartColumns
.
r
+
1
;
break
;
case
'
洗煤
'
:
item
.
r
=
DepartColumns
.
r
+
2
;
break
;
case
'
选煤
'
:
item
.
r
=
DepartColumns
.
r
+
3
;
break
;
case
'
厂区服务
'
:
item
.
r
=
DepartColumns
.
r
+
1
;
break
;
case
'
加工修理
'
:
item
.
r
=
DepartColumns
.
r
+
4
;
break
;
case
'
金属厂
'
:
item
.
r
=
DepartColumns
.
r
+
1
default
:
// 默认情况
}
}
}
}
}
});
// 同一个单元格,金额相加
let
seen
=
new
Map
();
let
duplicateData
=
[]
money
.
forEach
((
obj
)
=>
{
let
key
=
obj
.
r
+
'
,
'
+
obj
.
c
;
if
(
seen
.
has
(
key
))
{
let
existingObj
=
seen
.
get
(
key
);
existingObj
.
v
.
v
=
Number
(
existingObj
.
v
.
v
)
+
Number
(
obj
.
v
.
v
);
existingObj
.
v
.
m
=
existingObj
.
v
.
v
.
toString
();
existingObj
.
index
.
push
(
obj
.
index
);
}
else
{
obj
.
index
=
[
obj
.
index
];
seen
.
set
(
key
,
obj
);
}
});
seen
.
forEach
(
obj
=>
{
if
(
obj
.
v
.
v
>
0
||
parseInt
(
obj
.
v
.
m
)
>
0
)
{
duplicateData
.
push
(
obj
);
}
});
duplicateData
=
duplicateData
.
map
(
item
=>
{
return
{
...
item
,
v
:
{
...
item
.
v
,
v
:
isNaN
(
item
.
v
.
v
)
?
item
.
v
.
v
:
Number
(
item
.
v
.
v
).
toFixed
(
2
),
m
:
Number
(
item
.
v
.
m
).
toFixed
(
2
)
}
};
});
for
(
let
i
=
0
;
i
<
duplicateData
.
length
;
i
++
)
{
// // 对比 c 和 r 是否与 CompositeTable[0]["celldata"] 中相应对象相同
for
(
let
k
=
0
;
k
<
CompositeTable
[
0
][
"
celldata
"
].
length
;
k
++
)
{
if
(
duplicateData
[
i
].
r
===
CompositeTable
[
0
][
"
celldata
"
][
k
].
r
&&
duplicateData
[
i
].
c
===
CompositeTable
[
0
][
"
celldata
"
][
k
].
c
)
{
// 如果相同,则进行替换
CompositeTable
[
0
][
"
celldata
"
][
k
]
=
duplicateData
[
i
];
}
}
}
duplicateData
.
forEach
(
obj
=>
{
if
(
obj
.
r
>
8
){
obj
.
c
=
10
}
})
let
duplicateDatas
=
{
duplicateData
:
duplicateData
,
CompositeTable
:
CompositeTable
}
return
duplicateDatas
}
\ No newline at end of file
ruoyi-ui/src/conversion/TangshanMine.js
deleted
100644 → 0
View file @
7c77feb6
export
function
Tangshan
(
money
,
code
,
codess
,
CompositeTable
,
Department
,
classify
,
headRow
)
{
let
newobj
=
[]
//把这三个数组push到newobj里
newobj
.
unshift
(
money
);
newobj
.
unshift
(
code
);
newobj
.
unshift
(
Department
);
//跟材料表的数据对比 如果编码一样 则把导入表的列数换成模板的列数
codess
.
forEach
(
c
=>
{
let
codeLength
=
String
(
c
.
code
).
length
;
let
codeToCompare
=
String
(
c
.
code
).
substring
(
0
,
codeLength
);
newobj
[
1
].
forEach
(
column
=>
{
let
columnIdString
=
String
(
column
.
v
.
v
);
let
idToMatch
=
columnIdString
.
substring
(
0
,
codeLength
);
if
(
idToMatch
===
codeToCompare
)
{
column
.
ccc
=
c
.
oneLevel
*
1
;
}
});
});
//按照部门划分,去找到他所在科室分类
newobj
=
newobj
.
map
(
subArr
=>
{
return
subArr
.
map
(
obj
=>
{
let
v
=
obj
.
v
.
v
;
for
(
let
key
in
classify
)
{
if
(
classify
[
key
].
includes
(
v
))
{
obj
.
v
.
m
=
key
;
obj
.
v
.
v
=
key
;
obj
.
v
.
name
=
key
obj
.
whether
=
true
return
obj
;
}
}
obj
.
whether
=
false
return
obj
;
});
});
newobj
[
2
].
forEach
((
item
,
i
)
=>
{
if
(
'
name
'
in
newobj
[
0
][
i
].
v
)
{
item
.
v
.
name
=
newobj
[
0
][
i
].
v
.
name
;
}
});
//直接luck表格初始化 替换数据
//找到所在的行数,按照 -的前后去找,前面是标题,后面是标题后的小分类,如选煤,洗煤等
CompositeTable
[
0
].
data
=
luckysheet
.
transToData
(
CompositeTable
[
0
][
"
celldata
"
])
newobj
[
0
].
forEach
((
item
)
=>
{
if
(
item
.
v
.
m
!==
undefined
)
{
let
index
=
item
.
v
.
m
.
indexOf
(
"
-
"
);
if
(
index
!==
-
1
)
{
let
substrBeforeDash
=
item
.
v
.
m
.
slice
(
0
,
index
);
let
DepartColumns
=
CompositeTable
[
0
][
"
celldata
"
].
flat
().
find
(
obj
=>
obj
.
v
&&
obj
.
v
.
v
&&
typeof
obj
.
v
.
v
===
'
string
'
&&
obj
.
v
.
v
.
includes
(
item
.
v
.
m
.
slice
(
0
,
index
))
);
if
(
DepartColumns
&&
DepartColumns
.
r
)
{
let
index
=
item
.
v
.
m
.
indexOf
(
"
-
"
)
if
(
index
!==
-
1
)
{
let
substrAfterDash
=
item
.
v
.
m
.
slice
(
index
+
1
);
switch
(
substrAfterDash
)
{
case
''
:
item
.
r
=
DepartColumns
.
r
;
break
;
case
'
原煤
'
:
item
.
r
=
DepartColumns
.
r
+
1
;
break
;
case
'
洗煤
'
:
item
.
r
=
DepartColumns
.
r
+
2
;
break
;
case
'
选煤
'
:
item
.
r
=
DepartColumns
.
r
+
3
;
break
;
case
'
厂区服务
'
:
item
.
r
=
DepartColumns
.
r
+
1
;
break
;
default
:
// 默认情况
}
}
}
}
}
});
//把原来分类找不到的放到其他数据类型中,最后一列其他列中
newobj
[
1
].
forEach
((
item
,
i
)
=>
{
if
(
item
.
ccc
&&
newobj
[
0
][
i
].
r
<
8
)
{
item
.
c
=
item
.
ccc
;
delete
item
.
ccc
;
}
else
{
item
.
c
=
10
;
}
});
//金额列和行是原先导入表的行列 要替换掉模板表的行列
newobj
[
0
].
forEach
((
item
,
i
)
=>
{
if
(
item
.
whether
)
{
newobj
[
2
][
i
].
r
=
item
.
r
;
newobj
[
2
][
i
].
c
=
newobj
[
1
][
i
].
c
;
newobj
[
2
][
i
].
v
.
v
=
Number
(
newobj
[
2
][
i
].
v
.
v
);
}
else
{
newobj
[
2
][
i
].
r
=
''
;
newobj
[
2
][
i
].
c
=
''
;
}
});
//同一个单元格的数据 金额相加。
let
i
=
headRow
-
1
let
duplicateData
=
[]
let
seen
=
new
Map
();
// 根据行列信息合并重复数据并记录索引
for
(
let
obj
of
newobj
[
2
])
{
i
+=
1
;
let
key
=
obj
.
r
+
'
,
'
+
obj
.
c
;
if
(
seen
.
has
(
key
))
{
let
existingObj
=
seen
.
get
(
key
);
existingObj
.
v
.
v
+=
obj
.
v
.
v
;
existingObj
.
v
.
m
=
(
parseInt
(
existingObj
.
v
.
m
)
+
parseInt
(
obj
.
v
.
m
)).
toString
();
existingObj
.
index
.
push
(
newobj
[
1
][
i
].
r
);
}
else
{
obj
.
index
=
[
newobj
[
1
][
i
].
r
];
seen
.
set
(
key
,
obj
);
}
}
// 将合并后的数据放入 duplicateData 数组
for
(
let
obj
of
seen
.
values
())
{
if
(
obj
.
v
.
v
>
0
||
parseInt
(
obj
.
v
.
m
)
>
0
)
{
duplicateData
.
push
(
obj
);
}
}
duplicateData
=
duplicateData
.
map
(
item
=>
{
return
{
...
item
,
v
:
{
...
item
.
v
,
v
:
isNaN
(
item
.
v
.
v
)
?
item
.
v
.
v
:
Number
(
item
.
v
.
v
).
toFixed
(
2
)
}
};
});
// 替换金额所在列和行相同的模板表中的数据
//金额所在列和行,去模板表中查找,如果行列一致则替换
for
(
let
i
=
0
;
i
<
duplicateData
.
length
;
i
++
)
{
// // 对比 c 和 r 是否与 CompositeTable[0]["celldata"] 中相应对象相同
for
(
let
k
=
0
;
k
<
CompositeTable
[
0
][
"
celldata
"
].
length
;
k
++
)
{
if
(
duplicateData
[
i
].
r
===
CompositeTable
[
0
][
"
celldata
"
][
k
].
r
&&
duplicateData
[
i
].
c
===
CompositeTable
[
0
][
"
celldata
"
][
k
].
c
)
{
// 如果相同,则进行替换
CompositeTable
[
0
][
"
celldata
"
][
k
]
=
duplicateData
[
i
];
}
}
}
let
duplicateDatas
=
{
duplicateData
:
duplicateData
,
CompositeTable
:
CompositeTable
}
return
duplicateDatas
}
\ No newline at end of file
ruoyi-ui/src/mock.js
0 → 100644
View file @
137782ef
This source diff could not be displayed because it is too large. You can
view the blob
instead.
ruoyi-ui/src/utils/MineProofConfig.js
0 → 100644
View file @
137782ef
//todo 各个矿需要那些凭证的配置
/*
todo 需要提取 {classary, money,name,}
{
classary: 凭证分录摘要 // todo 必须 用于classary
sheetsName: 在那个表里面取 //todo 必须
oldColumnName: 金额列是那一列 todo 用于开始行 金额列 必须 用于money
itemName: 项目名是那一列 todo 项目列 非必须 默认是项目 用于name
jishuhang:是number 代表第几个合计的,todo 用结束行 //非必需默认是0
isFilterStartsWith: 项目是否包含数字 // todo 默认过滤掉 布尔值 非必需
}
*/
const
tsk
=
[
{
"
classary
"
:
"
转电力分配
"
,
"
oldColumnName
"
:
"
合计金额
"
,
"
sheetsName
"
:
"
3月
"
},
{
classary
:
'
提取一孩补贴
'
,
oldColumnName
:
'
独生子女补贴
'
,
sheetsName
:
'
待分析工资明细表(也可作为提取一孩、班中餐等附件)
'
,
//从那个表里面取
jishuhang
:
2
,
//结束行是第几个合计
},
{
classary
:
'
提取班中餐
'
,
oldColumnName
:
'
班中餐
'
,
sheetsName
:
'
待分析工资明细表(也可作为提取一孩、班中餐等附件)
'
,
//从那个表里面取
jishuhang
:
2
,
//结束行是第几个合计
},
{
classary
:
'
提取基本养老保险
'
,
oldColumnName
:
'
金额
'
,
sheetsName
:
'
基本养老保险分配明细表
'
,
//从那个表里面取
},
{
classary
:
'
提取补充养老保险
'
,
oldColumnName
:
'
金额
'
,
sheetsName
:
'
补充养老保险分配明细表
'
,
//从那个表里面取
},
{
classary
:
'
提取包干工资
'
,
oldColumnName
:
'
金额
'
,
sheetsName
:
'
提取包干
'
,
//从那个表里面取
},
{
classary
:
'
提取工伤保险
'
,
oldColumnName
:
'
金额
'
,
sheetsName
:
'
工伤保险
'
,
//从那个表里面取
},
{
classary
:
'
提取补充医疗保险
'
,
oldColumnName
:
'
金额
'
,
sheetsName
:
'
补充医疗保险
'
,
//从那个表里面取
},
{
classary
:
'
提取基本医疗保险
'
,
oldColumnName
:
'
金额
'
,
sheetsName
:
'
基本医疗保险
'
,
//从那个表里面取
},
{
classary
:
'
提取工会经费
'
,
oldColumnName
:
'
工会经费
'
,
sheetsName
:
'
计提工会经费
'
,
//从那个表里面取
},
{
classary
:
'
提取住房公积金
'
,
oldColumnName
:
'
金额
'
,
sheetsName
:
'
住房公积金
'
,
//从那个表里面取
},
{
classary
:
'
提取职工教育经费
'
,
oldColumnName
:
'
职工教育经费
'
,
sheetsName
:
'
提职工教育经费
'
,
//从那个表里面取
},
{
classary
:
'
提取失业保险
'
,
oldColumnName
:
'
金额
'
,
sheetsName
:
'
失业保险
'
,
//从那个表里面取
},
]
const
lxk
=
[
{
"
classary
"
:
"
转电力分配
"
,
"
oldColumnName
"
:
"
电费
"
,
"
sheetsName
"
:
"
附件4-电力分配
"
,
isFilterStartsWith
:
false
},
{
"
classary
"
:
"
基本养老保险费用结转待分析
"
,
"
oldColumnName
"
:
"
金额
"
,
"
sheetsName
"
:
"
分配养老保险
"
},
{
"
classary
"
:
"
补充养老保险结转待分析
"
,
"
oldColumnName
"
:
"
金额
"
,
"
sheetsName
"
:
"
分配年金
"
},
{
"
classary
"
:
"
计提基本养老保险
"
,
"
oldColumnName
"
:
"
金额
"
,
"
sheetsName
"
:
"
分配养老保险
"
},
{
"
classary
"
:
"
计提补充养老保险
"
,
"
oldColumnName
"
:
"
金额
"
,
"
sheetsName
"
:
"
分配年金
"
},
{
"
classary
"
:
"
工伤保险结转待分析
"
,
"
oldColumnName
"
:
"
金额
"
,
"
sheetsName
"
:
"
分配工伤保险
"
},
{
"
classary
"
:
"
补充医疗保险结转待分析
"
,
"
oldColumnName
"
:
"
金额
"
,
"
sheetsName
"
:
"
分配补充医疗
"
},
{
"
classary
"
:
"
基本医疗保险结转待分析
"
,
"
oldColumnName
"
:
"
金额
"
,
"
sheetsName
"
:
"
分配基本医疗
"
},
{
"
classary
"
:
"
失业保险结转待分析
"
,
"
oldColumnName
"
:
"
金额
"
,
"
sheetsName
"
:
"
分配失业保险
"
},
{
"
classary
"
:
"
计提工伤保险
"
,
"
oldColumnName
"
:
"
金额
"
,
"
sheetsName
"
:
"
分配工伤保险
"
},
{
"
classary
"
:
"
计提补充医疗保险
"
,
"
oldColumnName
"
:
"
金额
"
,
"
sheetsName
"
:
"
分配补充医疗
"
},
{
"
classary
"
:
"
计提失业保险
"
,
"
oldColumnName
"
:
"
金额
"
,
"
sheetsName
"
:
"
分配失业保险
"
},
{
"
classary
"
:
"
计提基本医疗保险
"
,
"
oldColumnName
"
:
"
金额
"
,
"
sheetsName
"
:
"
分配基本医疗
"
},
{
"
classary
"
:
"
应付包干工资结转包干工资
"
,
isFilterStartsWith
:
false
,
"
oldColumnName
"
:
"
工资
"
,
"
sheetsName
"
:
"
工资-提取
"
},
{
"
classary
"
:
"
计提职工教育经费
"
,
"
oldColumnName
"
:
"
职工教育经费
"
,
"
sheetsName
"
:
"
计提职教费
"
},
{
"
classary
"
:
"
计提工会经费
"
,
"
oldColumnName
"
:
"
工会经费
"
,
"
sheetsName
"
:
"
计提工会经费
"
},
{
"
classary
"
:
"
营养餐
"
,
"
oldColumnName
"
:
"
营养餐
"
,
"
sheetsName
"
:
"
待分析工资明细表
"
},
{
"
classary
"
:
"
工资
"
,
"
oldColumnName
"
:
"
工资
"
,
"
sheetsName
"
:
"
待分析工资明细表
"
},
{
"
classary
"
:
"
月票
"
,
"
oldColumnName
"
:
"
月票
"
,
"
sheetsName
"
:
"
待分析工资明细表
"
},
{
"
classary
"
:
"
生日补贴
"
,
"
oldColumnName
"
:
"
生日补贴
"
,
"
sheetsName
"
:
"
待分析工资明细表
"
},
{
"
classary
"
:
"
班中餐
"
,
"
oldColumnName
"
:
"
班中餐
"
,
"
sheetsName
"
:
"
待分析工资明细表
"
},
{
"
classary
"
:
"
保健费
"
,
"
oldColumnName
"
:
"
保健费
"
,
"
sheetsName
"
:
"
待分析工资明细表
"
},
{
"
classary
"
:
"
独生子女补贴
"
,
"
oldColumnName
"
:
"
独生子女补贴
"
,
"
sheetsName
"
:
"
待分析工资明细表
"
},
{
"
classary
"
:
"
困补
"
,
"
oldColumnName
"
:
"
困补
"
,
"
sheetsName
"
:
"
待分析工资明细表
"
},
{
"
classary
"
:
"
司机出车补助
"
,
"
oldColumnName
"
:
"
司机出车补助
"
,
"
sheetsName
"
:
"
待分析工资明细表
"
},
{
"
classary
"
:
"
工资分配
"
,
"
oldColumnName
"
:
"
合计
"
,
"
sheetsName
"
:
"
工资分配明细表
"
,
jishuhang
:
1
,
//结束行是第几个合计
},
/* todo 特殊处理
{
"classary": "核销待分析工资明细",
"oldColumnName": "发放金额",
itemName:'发放项目',
"sheetsName": "核销劳保工资"
},
{ "classary": "计提补充养老保险(电厂转入人员)", "oldColumnName": "金额", "sheetsName": "没有不取" },
{
"classary": "伙食补贴",
"oldColumnName": "伙食补贴",
"sheetsName": "待分析工资明细表"
},
{
"classary": "2023年集团员工数学素养提升培训",
"sheetsName": "随资费用",
},
{
"classary": "自救器培训(安全)",
"oldColumnName": "金额",
"sheetsName": ""
},
{
"classary": "入矿新工培训教师讲课费(安全)",
"oldColumnName": "金额",
"sheetsName": ""
},
{
"classary": "基层区科班组群监员、急救员培训(安全)",
"oldColumnName": "金额",
"sheetsName": ""
},
{
"classary": "2023年安管人员培训(安全)",
"oldColumnName": "金额",
"sheetsName": ""
},
{
"classary": "2023年班组长培训(安全)",
"oldColumnName": "金额",
"sheetsName": ""
},
{
"classary": "2023年特种作业人员培训(安全)",
"oldColumnName": "金额",
"sheetsName": ""
},
{
"classary": "2023年12月女工协管员业务培训(安全)",
"oldColumnName": "金额",
"sheetsName": ""
},
{
"classary": "2023年度宣传报道先进单位、宣传报道积极分子、宣传报道先进个人表彰",
"oldColumnName": "金额",
"sheetsName": ""
},
{
"classary": "2023年岗位描述、手指口述比赛表彰",
"oldColumnName": "金额",
"sheetsName": ""
},
{
"classary": "警示教育中心讲解费",
"oldColumnName": "金额",
"sheetsName": ""
},
{
"classary": "2023年度安全文化建设、精神文明创建评委会成员及工作人员表彰",
"oldColumnName": "金额",
"sheetsName": ""
},
{
"classary": "《启明星》杂志第二十期稿费",
"oldColumnName": "金额",
"sheetsName": ""
},
{
"classary": "2023年四季度通讯稿、广播稿费",
"oldColumnName": "金额",
"sheetsName": ""
},
*/
]
const
tsdl
=
[
{
"
classary
"
:
"
转电力分配
"
,
"
oldColumnName
"
:
"
合计金额
"
,
"
sheetsName
"
:
"
3月
"
},
]
const
ALL
=
{
tsk
,
//唐山矿
lxk
,
//林西矿
tsdl
//唐山电力
}
let
kNameID
=
{
'
010101
'
:
'
tsk
'
,
'
011704
'
:
'
lxk
'
,
'
010102
'
:
'
tsdl
'
,
}
export
{
kNameID
}
export
function
getMineProofConfig
(
kName
=
'
tsk
'
)
{
return
ALL
[
kName
]
}
ruoyi-ui/src/views/system/ActClassification/index.vue
View file @
137782ef
...
...
@@ -164,7 +164,11 @@ export default {
{
name
:
'
宏丰
'
,
id
:
'
011502
'
}
},
{
name
:
'
云飞
'
,
id
:
'
011504
'
},
],
types
:
[
{
...
...
ruoyi-ui/src/views/system/Wages/LinXiWages.vue
0 → 100644
View file @
137782ef
<
template
>
<div
class=
"app-container"
>
<el-form
ref=
"queryForm"
size=
"small"
:inline=
"true"
label-width=
"68px"
>
<el-form-item
label=
"模板"
prop=
"name"
>
<el-select
v-model=
"selectedOption"
ref=
"mySelect"
size=
"mini"
filterable
placeholder=
"请选择您要查看的模板"
@
change=
"handleOptionChange($event,
{
name: '林西矿',
id: '011704'
})">
<el-option
v-for=
"item in depss.filter(item => [1248,1280].includes(item.id))"
:key=
"item.id"
:label=
"item.templateName"
:value=
"item.id"
:disabled=
"item.disabled"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"时间"
prop=
"wageMonth"
>
<el-date-picker
v-model=
"wageMonth"
value-format=
"yyyy-MM"
type=
"month"
placeholder=
"选择月"
>
</el-date-picker>
</el-form-item>
</el-form>
<el-row
:gutter=
"10"
class=
"mb8"
>
<el-col
:span=
"1.5"
>
<el-button
type=
"warning"
plain
icon=
"el-icon-upload2"
size=
"mini"
@
click=
"handleExport"
>
导出
</el-button>
</el-col>
<el-col
:span=
"1.5"
>
<el-upload
type=
"file"
name=
"file"
ref=
"upload"
:headers=
"
{ 'Content-Type': 'multipart/form-data' }"
:before-upload="handleFileChange" action='' accept='.xlsx' :limit="3" multiple :file-list="fileList"
:show-file-list="false" :on-success="handleSuccess">
<el-button
plain
:disabled=
"!wageMonth || !jsondata"
size=
"mini"
icon=
"el-icon-download"
type=
"primary"
>
导入
</el-button>
</el-upload>
<el-button
:plain=
"true"
style=
"display: none;"
@
click=
"open4"
>
错误
</el-button>
</el-col>
</el-row>
<el-dialog
title=
"取数规则"
:visible.sync=
"dialogTableVisible"
:close-on-click-modal=
"false"
:show-close=
"false"
>
<el-form
label-width=
"120px"
>
<el-form-item
v-for=
"(item, index) in jsonhead"
:key=
"index"
:label=
"`$
{item.label}`">
<el-input
v-model=
"item.value"
></el-input>
</el-form-item>
</el-form>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"handleClose()"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"initData()"
>
确 定
</el-button>
</span>
</el-dialog>
<!-- luckysheet容器 -->
<div
id=
"luckysheet"
style=
"margin: 0px; padding: 0px; position: absolute; width: 100%; height:80vh; z-index: 0"
>
</div>
<div
v-if=
"showMask"
class=
"mask"
>
<div
class=
"loading-spinner"
></div>
</div>
</div>
</
template
>
<
script
src=
"@/Wages/convers"
></
script
>
<
style
scoped
src=
"./Wages.css"
></
style
>
ruoyi-ui/src/views/system/Wages/contrast.vue
0 → 100644
View file @
137782ef
<
template
>
<div
class=
"app-container"
>
<el-form
ref=
"queryForm"
size=
"small"
:inline=
"true"
label-width=
"68px"
>
<el-form-item
label=
"单位"
prop=
"name"
>
<el-select
v-model=
"mineId"
size=
"mini"
filterable
placeholder=
"请选择单位"
>
<el-option
v-for=
"dict in deptOptions"
:key=
"dict.dictValue"
:label=
"dict.dictLabel"
:value=
"dict.dictValue"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"类型"
prop=
"name"
>
<el-select
v-model=
"type"
ref=
"mySelect"
size=
"mini"
filterable
placeholder=
"请选择单位"
>
<el-option
v-for=
"dict in typeOptions"
:key=
"dict.dictValue"
:label=
"dict.dictLabel"
:value=
"dict.dictValue"
></el-option>
</el-select>
</el-form-item>
</el-form>
<el-row
:gutter=
"10"
class=
"mb8"
>
<el-col
:span=
"1.5"
>
<el-upload
type=
"file"
name=
"file"
ref=
"upload"
:headers=
"
{ 'Content-Type': 'multipart/form-data' }"
:before-upload="handleFileChange" action='' accept='.xlsx' :limit="3" multiple :file-list="fileList"
:show-file-list="false" :on-success="handleSuccess">
<el-button
plain
size=
"mini"
icon=
"el-icon-download"
type=
"primary"
>
导入
</el-button>
</el-upload>
</el-col>
</el-row>
<div
v-if=
"showMask"
class=
"mask"
>
<div
class=
"loading-spinner"
></div>
</div>
<el-table
v-loading=
"loading"
:data=
"comList"
>
<el-table-column
type=
"selection"
width=
"55"
align=
"center"
/>
<el-table-column
label=
"单位"
prop=
"mineId"
:formatter=
"deptFormat"
width=
"150"
>
</el-table-column>
<el-table-column
label=
"类型"
prop=
"type"
:formatter=
"typeFormat"
width=
"120"
/>
<el-table-column
label=
"版本"
prop=
"versionId"
:show-overflow-tooltip=
"true"
width=
"100"
/>
<el-table-column
label=
"a1"
prop=
"a1"
:show-overflow-tooltip=
"true"
width=
"150"
/>
<el-table-column
label=
"a2"
prop=
"a2"
:show-overflow-tooltip=
"true"
width=
"150"
/>
<el-table-column
label=
"a3"
prop=
"a3"
:show-overflow-tooltip=
"true"
width=
"150"
/>
<el-table-column
label=
"a4"
prop=
"a4"
:show-overflow-tooltip=
"true"
width=
"150"
/>
<el-table-column
label=
"a5"
prop=
"a5"
:show-overflow-tooltip=
"true"
width=
"150"
/>
</el-table>
<pagination
v-show=
"total > 0"
:total=
"total"
:page.sync=
"queryParams.pageNum"
:limit.sync=
"queryParams.pageSize"
@
pagination=
"getList"
/>
</div>
</
template
>
<
script
>
import
{
compilationExcel
,
getWagesCompilationList
}
from
"
@/api/conversion/index
"
;
var
modify
=
false
;
var
that
;
export
default
{
name
:
"
Mymodule
"
,
data
()
{
return
{
// 遮罩层
loading
:
true
,
// 导出遮罩层
exportLoading
:
false
,
// 选中数组
ids
:
[],
// 非单个禁用
single
:
true
,
// 非多个禁用
multiple
:
true
,
// 显示搜索条件
showSearch
:
true
,
// 总条数
total
:
0
,
// 对照表数据
comList
:
[],
// 弹出层标题
title
:
""
,
// 是否显示弹出层
open
:
false
,
// 查询参数
queryParams
:
{
pageNum
:
1
,
pageSize
:
10
,
roleName
:
undefined
,
roleKey
:
undefined
,
status
:
undefined
},
// 表单参数
form
:
{},
comList
:
[],
mineId
:
'
010101
'
,
type
:
'
0
'
,
//单位数据字典
deptOptions
:
[{
dictLabel
:
'
唐山矿
'
,
dictValue
:
'
010101
'
},
{
dictLabel
:
'
林西矿
'
,
dictValue
:
'
011704
'
}],
//单位数据字典
typeOptions
:
[{
dictLabel
:
'
工资总表
'
,
dictValue
:
'
0
'
},
{
dictLabel
:
'
财务用表
'
,
dictValue
:
'
1
'
},
{
dictLabel
:
'
保险总表
'
,
dictValue
:
'
2
'
},
{
dictLabel
:
'
保险研发表
'
,
dictValue
:
'
3
'
}],
};
},
created
()
{
that
=
this
;
this
.
getList
();
},
methods
:
{
// 单位字典翻译
deptFormat
(
row
,
column
)
{
return
this
.
selectDictLabel
(
this
.
deptOptions
,
row
.
mineId
);
},
// 类型字典翻译
typeFormat
(
row
,
column
)
{
return
this
.
selectDictLabel
(
this
.
typeOptions
,
row
.
type
);
},
getList
()
{
this
.
loading
=
true
;
getWagesCompilationList
().
then
(
response
=>
{
this
.
comList
=
response
;
this
.
loading
=
false
;
}
);
},
handleFileChange
(
evt
)
{
//组装后台接口数据
var
param
=
new
FormData
();
param
.
append
(
"
file
"
,
evt
);
param
.
append
(
"
mineId
"
,
this
.
mineId
);
//矿id
param
.
append
(
"
type
"
,
this
.
type
);
//类型
compilationExcel
(
param
).
then
((
res
)
=>
{
//导入成功
if
(
res
.
code
==
200
)
{
that
.
getList
();
this
.
$message
.
success
(
"
导入成功!
"
);
}
else
{
this
.
$message
.
error
(
"
后台数据导入失败!
"
);
}
});
}
}
};
</
script
>
ruoyi-ui/src/views/system/power/ass.js
0 → 100644
View file @
137782ef
// 给唐山汇总表放数据
function
setDataV
(
itemName
,
CName
,
data
,
CConfig
,
itemConfig
)
{
let
getValue
=
(
arr
,
keys
)
=>
{
if
(
!
arr
||
!
keys
){
return
null
}
let
shu
=
arr
[
0
];
if
(
shu
[
'
类别
'
]
===
'
合计
'
){
shu
=
arr
.
find
((
item
)
=>
item
[
'
编码
'
]
===
'
50000
'
)
}
if
(
!
shu
){
return
null
}
let
key
=
''
if
(
keys
.
length
===
1
)
{
key
=
keys
[
0
]
}
else
if
(
keys
.
length
>
1
){
let
flag
=
keys
.
slice
(
0
,
keys
.
length
-
1
).
some
((
item
)
=>
shu
[
item
])
if
(
!
flag
&&
shu
[
keys
[
keys
.
length
-
1
]])
{
key
=
keys
[
keys
.
length
-
1
];
}
}
if
(
shu
&&
key
&&
shu
[
key
])
{
return
shu
[
key
]
}
else
{
return
null
}
}
if
(
!
CConfig
[
CName
])
{
return
null
}
let
lastName
=
itemName
.
split
(
'
,
'
)
lastName
=
lastName
[
lastName
.
length
-
1
]
// 特殊处理的 情况
if
(
itemConfig
[
itemName
])
{
let
sum
=
0
itemConfig
[
itemName
].
forEach
((
item
)
=>
{
let
funV
=
null
;
if
(
data
[
item
])
{
if
(
item
===
'
合计
'
){
console
.
log
(
data
[
item
],
1111
)
}
funV
=
getValue
(
data
[
item
],
CConfig
[
CName
])
}
else
{
let
obj
=
Object
.
entries
(
data
).
find
(([
key
])
=>
{
if
(
key
.
includes
(
item
))
{
return
true
}
})
if
(
obj
)
{
funV
=
getValue
(
obj
[
1
],
CConfig
[
CName
])
}
}
if
(
funV
)
{
sum
=
Number
(
sum
)
+
Number
(
funV
)
}
})
if
(
sum
>
0
)
{
return
sum
}
else
{
return
null
}
}
else
if
(
data
[
itemName
]
||
data
[
lastName
])
{
return
getValue
(
data
[
itemName
]
||
data
[
lastName
],
CConfig
[
CName
])
}
else
{
return
null
}
}
export
function
setTs
(
TSdL
,
luckyData
,
CConfig
,
itemConfig
)
{
//第一步先处理后端返回的数据
let
newData
=
{};
TSdL
.
data
.
forEach
((
item
)
=>
{
item
.
details
.
forEach
(
el
=>
{
let
obj
=
{}
Object
.
entries
(
el
).
forEach
(([
K
,
V
])
=>
{
if
(
V
)
{
if
(
K
.
startsWith
(
'
a
'
))
{
obj
[
item
.
datas
[
K
]
&&
item
.
datas
[
K
].
replace
(
'
,
'
,
'
-
'
).
replace
(
'
,
'
,
'
-
'
)]
=
V
;
}
else
{
obj
[
K
]
=
V
;
}
}
})
if
(
obj
[
'
类别
'
])
{
if
(
newData
[
obj
[
'
类别
'
]])
{
newData
[
obj
[
'
类别
'
]].
push
(
obj
)
}
else
{
newData
[
obj
[
'
类别
'
]]
=
[
obj
]
}
}
});
})
let
data
=
luckyData
[
0
].
data
for
(
let
i
=
2
;
i
<
data
.
length
;
i
++
)
{
let
itemName
=
data
[
i
][
0
]
&&
data
[
i
][
0
].
v
&&
data
[
i
][
0
].
v
.
replaceAll
(
/
\s
+/g
,
""
);
if
(
itemName
===
'
合计
'
){
break
}
let
row
=
data
[
i
];
row
.
forEach
((
item
,
index
)
=>
{
let
cName
=
data
[
1
]
&&
data
[
1
][
index
]
&&
data
[
1
][
index
].
v
;
if
(
cName
&&
itemName
)
{
let
v
=
setDataV
(
itemName
,
cName
,
newData
,
CConfig
,
itemConfig
)
if
(
v
)
{
data
[
i
][
index
].
bg
=
'
red
'
v
=
Number
(
Number
(
v
).
toFixed
(
2
))
data
[
i
][
index
].
v
=
v
data
[
i
][
index
].
m
=
v
}
}
})
}
luckysheet
.
destroy
();
luckyData
[
0
].
celldata
=
luckysheet
.
transToCellData
(
data
);
luckyData
[
0
].
calcChain
=
[];
let
as
=
luckyData
[
0
].
celldata
.
filter
(
(
item
)
=>
item
.
v
.
f
);
as
.
forEach
((
item
)
=>
{
let
sum
=
{
index
:
luckyData
[
0
].
index
,
r
:
item
.
r
,
c
:
item
.
c
,
};
luckyData
[
0
].
calcChain
.
push
(
sum
);
});
delete
luckyData
[
0
].
data
;
luckysheet
.
create
({
container
:
"
luckysheet
"
,
// Luckysheet 的容器元素 ID
lang
:
'
zh
'
,
data
:
luckyData
,
// Excel 数据
forceCalculation
:
true
});
// luckysheet.refreshFormula();
}
export
function
jxdfxt
(
luckysheets
)
{
let
data
=
luckysheets
.
find
(
item
=>
{
return
[
'
填写数据
'
].
includes
(
item
.
name
)
})
data
.
data
=
luckysheet
.
transToData
(
data
.
celldata
)
let
arr
=
[]
data
.
data
.
forEach
(
row
=>
{
let
obj
=
{}
row
.
forEach
((
ceil
,
i
)
=>
{
if
(
ceil
&&
ceil
.
v
)
{
obj
[
i
]
=
ceil
.
v
}
else
if
(
ceil
&&
ceil
.
ct
&&
ceil
.
ct
.
s
)
{
obj
[
i
]
=
ceil
.
ct
.
s
.
map
(
item
=>
item
.
v
).
join
(
''
)
}
})
if
(
Object
.
keys
(
obj
).
length
)
{
arr
.
push
(
obj
)
}
})
let
yiKey
=
{};
let
erKey
=
{};
let
newaasss
=
[]
let
shuju
=
[]
let
sj
=
(
old
,
yi
,
er
)
=>
{
if
(
!
old
[
1
])
{
old
[
1
]
=
newaasss
[
newaasss
.
length
-
1
][
'
原始数据
'
][
1
]
}
newaasss
.
push
({
'
原始数据
'
:
old
,
'
第一级数据
'
:
yi
,
'
第二级数据
'
:
er
})
let
obj
=
{}
Object
.
entries
(
old
).
forEach
(([
key
,
value
])
=>
{
let
yikey
=
yi
[
key
];
let
erkey
=
er
[
key
];
if
(
yikey
&&
erkey
)
{
let
objkey
=
`
${
yikey
}
-
${
erkey
}
`
objkey
=
objkey
.
replaceAll
(
'
"
'
,
''
).
replace
(
/
[\r\n]
/g
,
""
).
replaceAll
(
"
"
,
''
)
obj
[
objkey
]
=
value
;
}
else
if
(
yikey
&&
!
erkey
)
{
yikey
=
yikey
.
replaceAll
(
'
"
'
,
''
).
replaceAll
(
"
↵
"
,
''
).
replaceAll
(
"
"
,
''
)
obj
[
yikey
]
=
value
;
}
else
if
(
erkey
&&
!
yikey
)
{
let
xy
=
''
for
(
let
i
=
key
;
i
>
0
;
i
--
)
{
if
(
yi
[
i
])
{
xy
=
`
${
yi
[
i
]}
`
break
;
}
}
let
objkey
=
''
if
(
xy
)
{
objkey
=
`
${
xy
}
-
${
erkey
}
`
}
else
{
objkey
=
erkey
}
objkey
=
objkey
.
replaceAll
(
'
"
'
,
''
).
replace
(
/
[\r\n]
/g
,
""
).
replaceAll
(
"
"
,
''
)
obj
[
objkey
]
=
value
;
}
})
if
(
Object
.
keys
(
obj
).
length
)
{
shuju
.
push
(
obj
)
}
}
for
(
let
rowi
=
3
;
rowi
<
arr
.
length
;
rowi
++
)
{
let
RowObj
=
arr
[
rowi
];
if
(
RowObj
[
1
]
&&
RowObj
[
1
]
!==
'
项目
'
)
{
if
(
!
arr
[
rowi
-
2
][
0
]
||
arr
[
rowi
-
2
][
0
]
===
'
序号
'
)
{
yiKey
=
arr
[
rowi
-
2
];
}
erKey
=
arr
[
rowi
-
1
];
}
if
(
RowObj
[
0
]
!==
'
序号
'
&&
(
RowObj
[
0
]
||
RowObj
[
2
]))
{
sj
(
RowObj
,
yiKey
,
erKey
)
}
}
let
obj
=
{}
shuju
.
forEach
(
item
=>
{
Object
.
keys
(
item
).
forEach
(
key
=>
{
obj
[
key
]
=
null
})
});
let
zui
=
shuju
.
map
(
item
=>
{
return
Object
.
assign
(
JSON
.
parse
(
JSON
.
stringify
(
obj
)),
item
)
})
let
transformedJSON
=
{};
Object
.
keys
(
obj
).
forEach
((
key
,
index
)
=>
{
transformedJSON
[
key
]
=
`a
${
index
+
1
}
`
;
});
let
transformed
=
zui
.
map
(
el
=>
{
return
Object
.
fromEntries
(
Object
.
entries
(
el
).
map
(([
key
,
value
])
=>
{
return
[
transformedJSON
[
key
],
value
];
}))
})
let
swapped
=
{};
for
(
const
key
in
transformedJSON
)
{
swapped
[
transformedJSON
[
key
]]
=
key
;
}
let
trans
=
{
transformedJSON
:
swapped
,
transformed
:
transformed
}
return
trans
}
ruoyi-ui/src/views/system/power/index.vue
0 → 100644
View file @
137782ef
<
script
>
import
{
getSuppliesTemplate
,
getyy
,
listSuppliesTemplate
,
roleList
,
templateListid
}
from
'
@/api/ruoyi-myLuckyexcel/myluckyexcel
'
import
{
powerall
,
powerdata
}
from
"
@/api/power/power.js
"
;
import
{
importTSExcel
}
from
"
@/api/conversion/power
"
;
// import luckysheet from 'luckysheet'
import
LuckyExcel
from
"
luckyexcel
"
;
//导入库export.js 这个文件是es6的,不能在普通的HTML文件直接引入js文件(虽然都是js文件,但是有区别,具体请百度es6与es5)!需要把es6转es5才可以直接引入使用!
/*import {materialList} from "@/api/ruoyi-myLuckyexcel/myluckyexcel";*/
import
{
v4
as
uuidv4
}
from
"
uuid
"
;
import
{
exportExcel
}
from
"
../../../../public/exportExcel
"
;
import
{
jxdfxt
,
setTs
}
from
"
@/views/system/power/ass.js
"
;
import
{
machGzdata
}
from
"
@/Wages/conversTsk.js
"
;
import
{
machLxGzdata
}
from
"
@/Wages/conversLxk.js
"
;
import
{
getyyData
,
transformJson
,
tzcCreateData
}
from
'
@/utils/tzc
'
// import { config } from "vue/types/umd";
var
fileName
=
"
新建XLSX工作表
"
;
//定义表名
var
rule
=
[];
var
tempId
;
var
uuid1
;
var
modify
=
false
;
var
that
;
export
default
{
props
:
{
kobj
:
{
type
:
Object
,
},
depssfilter
:
{
type
:
Array
,
// 定义默认值
},
itemConfig
:
{
type
:
Object
,
},
CConfig
:{
type
:
Object
,
}
},
name
:
"
Mymodule
"
,
data
()
{
return
{
views
:
'
汇总
'
,
shuju
:
''
,
wageMonth
:
""
,
//汇总表数据 || 凭证数据
luckyrule
:
''
,
//详细信息
phone
:
""
,
//未导入成本材料表模板所有数据
jsondata
:
""
,
//编码数据
showMask
:
false
,
uuid
:
""
,
selectedOption
:
""
,
luckysheetData
:
""
,
luckysheetDatas
:
""
,
depss
:
[],
fileList
:
[],
VoucherForm
:
""
,
all
:
""
,
sum
:
[],
//后端要的数据
currfile
:
''
,
// 查询参数
queryParams
:
{
status
:
0
,
},
mineId
:
''
,
//矿ID
};
},
created
()
{
that
=
this
;
//刷新页面时进行的操作
this
.
getList
();
},
mounted
()
{
this
.
init
();
fileName
=
"
新建XLSX工作表
"
;
},
methods
:
{
huizi
(){
console
.
log
(
this
.
shuju
)
this
.
views
=
'
汇总
'
;
luckysheet
.
create
({
container
:
"
luckysheet
"
,
// Luckysheet 的容器元素 ID
title
:
'
汇总
'
,
// Excel 文件名
allowEdit
:
false
,
//作用:是否允许前台编辑
data
:
this
.
shuju
,
// Excel 数据
showinfobar
:
false
,
//是否显示顶部名称栏
lang
:
"
zh
"
,
});
this
.
shuju
=
null
;
},
//查询材料编码
//手机号
open
()
{
this
.
$prompt
(
"
请输入用友系统的用户名
"
,
"
提示
"
,
{
confirmButtonText
:
"
确定
"
,
cancelButtonText
:
"
取消
"
,
inputPattern
:
/^
(?:\+?
86
)?
1
[
3-9
]\d{9}
$/
,
inputErrorMessage
:
"
手机号格式不正确
"
,
})
.
then
(({
value
})
=>
{
this
.
$message
({
type
:
"
success
"
,
message
:
"
你的用户名是:
"
+
value
,
});
this
.
phone
=
value
;
this
.
zhuan
();
})
.
catch
(()
=>
{
this
.
$message
({
type
:
"
info
"
,
message
:
"
取消输入
"
,
});
this
.
showMask
=
false
;
});
},
/** 页面刷新时展示的数据*/
getList
()
{
listSuppliesTemplate
(
this
.
queryParams
).
then
((
response
)
=>
{
response
.
rows
.
forEach
((
row
)
=>
{
if
(
row
.
templateName
.
includes
(
"
六矿
"
))
{
row
.
disabled
=
true
;
}
});
this
.
depss
=
response
.
rows
;
});
getSuppliesTemplate
(
1248
).
then
((
response
)
=>
{
const
sysSupplies
=
response
.
rows
;
this
.
luckysheetDatas
=
JSON
.
parse
(
sysSupplies
[
0
].
templateContent
);
});
},
open4
()
{
this
.
$message
.
error
(
"
请仔细检查所导入表
"
);
},
/** Luckyexcel文档 */
init
()
{
let
options
=
{
container
:
"
luckysheet
"
,
//luckysheet为容器id
title
:
""
,
lang
:
"
zh
"
,
showinfobar
:
false
,
data
:
[
{
name
:
"
sheet1
"
,
//工作表名称
color
:
""
,
//工作表颜色
index
:
0
,
//工作表索引
status
:
1
,
//激活状态
order
:
0
,
//工作表的下标
hide
:
0
,
//是否隐藏
row
:
50
,
//行数
column
:
20
,
//列数
defaultRowHeight
:
19
,
//自定义行高
defaultColWidth
:
73
,
//自定义列宽
celldata
:
[],
//初始化使用的单元格数据
config
:
{
merge
:
{},
//合并单元格
rowlen
:
{},
//表格行高
columnlen
:
{},
//表格列宽
rowhidden
:
{},
//隐藏行
colhidden
:
{},
//隐藏列
borderInfo
:
{},
//边框
authority
:
{},
//工作表保护
},
},
],
};
luckysheet
.
create
(
options
);
},
handleSuccess
(
response
,
file
,
fileList
)
{
},
//电力数据后台导入成功后,数据展示到前台
loadTableData
(
evt
)
{
this
.
sum
.
push
(
evt
);
if
(
modify
)
{
this
.
$confirm
(
"
再次导入将会清空表内数据,是否继续操作?
"
,
"
注意!!!
"
,
{
confirmButtonText
:
"
确定
"
,
cancelButtonText
:
"
取消
"
,
type
:
"
warning
"
,
}
)
.
then
(
async
()
=>
{
// 确认继续后刷新页面返回模板
getSuppliesTemplate
(
this
.
selectedOption
)
.
then
((
response
)
=>
{
const
sysSupplies
=
response
.
rows
;
this
.
luckysheetData
=
sysSupplies
[
0
].
templateContent
;
let
json_data
=
JSON
.
parse
(
sysSupplies
[
0
].
templateContent
);
luckysheet
.
destroy
();
luckysheet
.
create
({
container
:
"
luckysheet
"
,
// Luckysheet 的容器元素 ID
title
:
fileName
,
// Excel 文件名
data
:
json_data
,
// Excel 数据
allowEdit
:
false
,
//作用:是否允许前台编辑
showinfobar
:
false
,
//是否显示顶部名称栏
lang
:
"
zh
"
,
});
modify
=
false
;
this
.
open
(
this
.
sum
);
})
.
then
(
async
()
=>
{
})
.
catch
(()
=>
{
});
})
.
catch
(()
=>
{
// 用户点击了取消按钮
this
.
$message
({
type
:
"
info
"
,
message
:
"
操作已取消
"
,
});
});
}
else
{
this
.
open
(
evt
);
this
.
showMask
=
true
;
LuckyExcel
(
evt
,
(
exportJson
)
=>
{
//获取导入表格所有数据exportJson
this
.
open
(
exportJson
)
.
then
(
async
()
=>
{
})
.
catch
((
error
)
=>
{
this
.
$message
({
message
:
error
.
message
,
type
:
"
error
"
,
});
})
.
finally
(()
=>
{
// 导入完成后关闭遮罩层
this
.
showMask
=
false
;
});
});
}
},
async
handleFileChange
(
evt
)
{
// if (!this.value.includes("凭证")) {
//组装后台接口数据
this
.
currfile
=
evt
// }
this
.
loadTableData
(
evt
);
//前台加载数据
},
handleOptionChange
(
value
,
mine_id
)
{
templateListid
(
value
).
then
((
response
)
=>
{
this
.
luckyrule
=
JSON
.
parse
(
response
.
rows
[
0
].
templateContent
);
this
.
luckyrule
.
forEach
(
item
=>
{
item
.
data
=
luckysheet
.
transToData
(
item
.
celldata
)
})
});
that
.
mineId
=
mine_id
.
id
let
lod
=
this
.
$loading
({
lock
:
true
,
text
:
"
加载中
"
,
background
:
"
rgba(0, 0, 0, 0.7)
"
,
});
//根据选中的下拉选项值获取相应的信息
getSuppliesTemplate
(
this
.
selectedOption
)
.
then
((
response
)
=>
{
lod
.
close
();
modify
=
false
;
tempId
=
this
.
selectedOption
;
uuid1
=
this
.
uuid
=
uuidv4
().
substring
(
0
,
8
);
const
sysSupplies
=
response
.
rows
;
this
.
luckysheetData
=
sysSupplies
[
0
].
templateContent
;
var
json_data
=
JSON
.
parse
(
sysSupplies
[
0
].
templateContent
);
this
.
jsondata
=
json_data
;
let
suffixArr
=
sysSupplies
[
0
].
templateName
.
split
(
"
.
"
);
fileName
=
suffixArr
[
0
];
//luckysheet.destroy()
luckysheet
.
create
({
container
:
"
luckysheet
"
,
// Luckysheet 的容器元素 ID
title
:
fileName
,
// Excel 文件名
data
:
json_data
,
// Excel 数据
showinfobar
:
false
,
allowEdit
:
false
,
//是否显示顶部名称栏
lang
:
"
zh
"
,
index
:
"
0
"
,
//工作表索引
status
:
"
1
"
,
//激活状态
});
this
.
value
=
fileName
;
})
.
catch
(()
=>
{
lod
.
close
();
// 处理错误逻辑,这里是一个空的错误处理函数
this
.
$message
.
error
(
"
查询失败,发生未知错误!
"
);
});
},
//转换方法
zhuan
()
{
const
promises
=
this
.
sum
.
map
((
item
)
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
LuckyExcel
.
transformExcelToLucky
(
item
,
(
lucksheetfile
)
=>
{
resolve
(
lucksheetfile
);
});
});
});
Promise
.
all
(
promises
).
then
((
results
)
=>
{
//唐山矿规则
let
powerDAO
=
JSON
.
stringify
({
mineId
:
that
.
mineId
,
importTime
:
that
.
wageMonth
,
type
:
0
,
powerDetails
:
[
jxdfxt
(
results
[
0
].
sheets
).
transformedJSON
]
})
let
powerAllDAO
=
JSON
.
stringify
({
mineId
:
that
.
mineId
,
importTime
:
that
.
wageMonth
,
type
:
0
,
powerDetails
:
jxdfxt
(
results
[
0
].
sheets
).
transformed
})
let
form1
=
new
FormData
()
form1
.
append
(
"
file
"
,
this
.
currfile
);
form1
.
append
(
"
powerDAO
"
,
powerDAO
);
form1
.
append
(
"
powerAllDAO
"
,
powerAllDAO
);
powerall
(
form1
).
then
(
res
=>
{
if
(
res
.
code
==
200
){
setTs
(
res
,
this
.
luckyrule
,
this
.
CConfig
,
this
.
itemConfig
)
}
})
this
.
showMask
=
false
});
},
handleExport
:
debounce
(
function
()
{
// handleExport
exportExcel
(
luckysheet
.
getAllSheets
(),
fileName
);
},
500
),
async
tsdlcrpz
()
{
this
.
views
=
'
凭证
'
;
this
.
shuju
=
luckysheet
.
getAllSheets
();
// 第一步取数
let
data
=
getyyData
(
luckysheet
.
getAllSheets
(),
'
010101
'
)
let
objJson
=
{
borrow
:
data
.
map
(
item
=>
{
return
{
...
item
,
is_debit
:
0
,
mining
:
'
010101
'
}
})
}
// 第二步调接口处理res
let
res
=
await
getyy
(
JSON
.
stringify
(
objJson
))
let
loan
=
[{
is_debit
:
1
,
money
:
0
,
name
:
'
其他贷方金额
'
,
account_code
:
'
2241005
'
,
classary
:
"
转电力分配
"
,
mining
:
"
010101
"
}]
res
.
data
.
borrow
.
forEach
(
item
=>
{
if
(
item
.
account_code
)
{
loan
[
0
].
money
=
(
Number
(
item
.
money
)
+
Number
(
loan
[
0
].
money
)).
toFixed
(
2
);
}
})
res
.
data
.
loan
=
loan
;
// 第三步 生成凭证
let
template
=
await
getSuppliesTemplate
(
1248
)
let
createData
=
tzcCreateData
(
JSON
.
parse
(
template
.
rows
[
0
].
templateContent
)[
0
],
transformJson
(
res
.
data
),
luckysheet
,
this
.
phone
,
this
.
wageMonth
);
luckysheet
.
create
({
container
:
"
luckysheet
"
,
// Luckysheet 的容器元素 ID
title
:
'
凭证
'
,
// Excel 文件名
allowEdit
:
false
,
//作用:是否允许前台编辑
data
:
createData
,
// Excel 数据
showinfobar
:
false
,
//是否显示顶部名称栏
lang
:
"
zh
"
,
});
},
},
};
// 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
>
<
template
>
<div
class=
"app-container"
>
<el-form
ref=
"queryForm"
size=
"small"
:inline=
"true"
label-width=
"68px"
>
<el-form-item
label=
"模板"
prop=
"name"
>
<el-select
v-model=
"selectedOption"
ref=
"mySelect"
size=
"mini"
filterable
placeholder=
"请选择您要查看的模板"
@
change=
"handleOptionChange($event, kobj, depssfilter[0])"
>
<el-option
v-for=
"item in depss.filter(item => depssfilter.includes(item.id))"
:key=
"item.id"
:label=
"item.templateName"
:value=
"item.id"
:disabled=
"item.disabled"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"时间"
prop=
"wageMonth"
>
<el-date-picker
v-model=
"wageMonth"
value-format=
"yyyy-MM"
type=
"month"
placeholder=
"选择月"
>
</el-date-picker>
</el-form-item>
</el-form>
<el-row
:gutter=
"10"
class=
"mb8"
>
<el-col
:span=
"1.5"
>
<el-button
type=
"warning"
plain
icon=
"el-icon-upload2"
size=
"mini"
@
click=
"handleExport"
>
导出
</el-button>
</el-col>
<el-col
:span=
"1.5"
v-if=
"views === '汇总'"
>
<el-upload
type=
"file"
name=
"file"
ref=
"upload"
:headers=
"
{ 'Content-Type': 'multipart/form-data' }"
:before-upload="handleFileChange" action='' accept='.xlsx' :limit="3" multiple :file-list="fileList"
:show-file-list="false" :on-success="handleSuccess">
<el-button
plain
:disabled=
"!wageMonth || !jsondata"
size=
"mini"
icon=
"el-icon-download"
type=
"primary"
>
导入
</el-button>
</el-upload>
<el-button
:plain=
"true"
style=
"display: none;"
@
click=
"open4"
>
错误
</el-button>
</el-col>
<el-col
:span=
"1.5"
v-if=
"views === '汇总'"
>
<el-button
size=
"mini"
@
click=
"tsdlcrpz"
>
生凭证
</el-button>
</el-col>
<el-col
:span=
"1.5"
v-else
>
<el-button
size=
"mini"
@
click=
"huizi"
>
返回汇总
</el-button>
</el-col>
</el-row>
<!-- luckysheet容器 -->
<div
id=
"luckysheet"
style=
"margin: 0px; padding: 0px; position: absolute; width: 100%; height:80vh; z-index: 0"
>
</div>
<div
v-if=
"showMask"
class=
"mask"
>
<div
class=
"loading-spinner"
></div>
</div>
</div>
</
template
>
<
style
scoped
src=
"@/assets/css/power/index.css"
></
style
>
ruoyi-ui/src/views/system/power/linxi.vue
0 → 100644
View file @
137782ef
<
template
>
<testComponent
:kobj =
'
{ name: "林西矿", id: "011704" }'
:depssfilter = '[1282]'
>
</testComponent>
</
template
>
<
script
>
//1.先使用import导入你要在该组件中使用的子组件
import
testComponent
from
'
./index.vue
'
export
default
{
//2.然后,在components中写入子组件
components
:
{
testComponent
},
}
</
script
>
ruoyi-ui/src/views/system/power/tangshan.vue
0 → 100644
View file @
137782ef
<
template
>
<testComponent
:kobj=
'
{ name: "唐山矿", id: "010101" }' :depssfilter='[1281]' :CConfig="CConfig" :itemConfig="itemConfig" >
</testComponent>
</
template
>
<
script
>
//1.先使用import导入你要在该组件中使用的子组件
import
testComponent
from
'
./index.vue
'
export
default
{
//2.然后,在components中写入子组件
components
:
{
testComponent
},
data
()
{
return
{
CConfig
:
{
'
加收管理费
'
:
[
'
电费-基本
'
],
'
照明电量
'
:
[
"
电量-峰
"
,
"
电量-平
"
,
"
电量-尖
"
,
"
电量-谷
"
,
'
电量-合计
'
],
//前四个有就不填,都没有填电量-合计
'
电光电费
'
:
[
"
电费-峰
"
,
"
电费-平
"
,
"
电费-尖
"
,
"
电费-谷
"
,
'
电费-合计
'
],
'
峰段电量
'
:
[
'
电量-峰
'
],
'
峰段金额
'
:
[
'
电费-峰
'
],
'
平段电量
'
:
[
'
电量-平
'
],
'
平段金额
'
:
[
'
电费-平
'
],
'
谷段电量
'
:
[
'
电量-谷
'
],
'
谷段金额
'
:
[
'
电费-谷
'
],
},
itemConfig
:
{
'
基本生产,原煤
'
:
[
'
原煤生产
'
],
'
基本生产,洗煤
'
:
[
'
洗煤厂(高压)
'
],
'
制造费用,原煤
'
:
[
'
矿井水净化
'
,
'
地面维修
'
,
'
联合建筑
'
,
'
厂区服务
'
,
'
供水供暖
'
],
//todo 缺少
'
管理用电
'
:
[
'
综合办
'
,
'
工会楼
'
,
'
小车房
'
,
'
绿化保洁
'
],
'
其他业务成本,住宿
'
:
[
'
住宿餐饮(集体宿舍)
'
],
'
其他业务成本,餐饮
'
:
[
'
住宿餐饮(东门食堂)
'
,
'
住宿餐饮(风井食堂)
'
],
'
其他业务成本,厂区服务,集团大院
'
:
[
'
集团公司大院
'
],
'
内部结算单位,开滦宾馆
'
:
[
'
开滦宾馆高压
'
],
'
金属加工厂
'
:
[
'
金属制修中心
'
],
'
内部结算单位,社区
'
:
[
'
社区小车房
'
,
'
离退科
'
,
'
开滦实业公司
'
],
'
内部结算单位,运输部
'
:
[
'
运输部
'
],
'
外界电费,鲸喜惠(唐山永芊企业管理服务有限公司原唐山飞佳轩便利店)
'
:
[
'
鲸喜惠(唐山永芊企业管理服务有限公司
'
],
'
劳服公司
'
:
[
'
合计
'
],
}
}
}
}
</
script
>
ruoyi-ui/src/views/system/power/ylw.js
0 → 100644
View file @
137782ef
import
{
powerdata
}
from
"
@/api/power/power.js
"
;
//celldata:表格的celldata的数据 electricity:后端返回的数据 expectedAttributes:需要的数据的中文名字 transform:哪些数据需要加起来
export
function
Summary
(
celldata
,
electricity
,
expectedAttributes
,
transform
){
let
obj
=
[]
let
newarray
=
[]
// 每个属性名代表的意思
let
keyobj
=
[
{
key
:
'
a11
'
,
value
:
'
加收管理费
'
},
{
key
:
'
a10
'
,
value
:
'
照明电量
'
},
{
key
:
'
a6
'
,
value
:
'
电光电费
'
},
{
key
:
'
a7
'
,
value
:
'
峰段电量
'
},
{
key
:
'
a13
'
,
value
:
'
峰段金额
'
},
{
key
:
'
a8
'
,
value
:
'
平段电量
'
},
{
key
:
'
a14
'
,
value
:
'
平段金额
'
},
{
key
:
'
a9
'
,
value
:
'
谷段电量
'
},
{
key
:
'
a15
'
,
value
:
'
谷段金额
'
},
]
electricity
.
data
.
forEach
(
es
=>
{
//第一步:把后端返回的数据的对照表的数据的-去除掉 并放入到 cleanedEsDatas中
let
foundAttributes
=
[];
let
cleanedEsDatas
=
{};
Object
.
entries
(
es
.
datas
).
forEach
(([
key
,
v
])
=>
{
cleanedEsDatas
[
key
]
=
v
&&
v
.
replace
&&
v
.
replace
(
/-/g
,
''
)
});
//第二步:根据后端返回的类别名称跟cleanedEsDatas这个对应上 看中文的数据 在英文里叫什么名字 比如a1=类别
expectedAttributes
.
forEach
((
attrName
,
index
)
=>
{
let
foundKey
=
Object
.
keys
(
cleanedEsDatas
).
find
(
key
=>
cleanedEsDatas
[
key
]
===
attrName
);
if
(
foundKey
)
{
foundAttributes
[
index
]
=
foundKey
;
}
else
{
foundAttributes
[
index
]
=
null
;
}
});
//根据对应上的关系 取详细表所有数据取数并放到一个新数组obj中
es
.
details
.
forEach
(
element
=>
{
let
funct
=
{
key
:
element
[
foundAttributes
[
0
]],
a11
:
element
[
foundAttributes
[
1
]],
a10
:
element
[
foundAttributes
[
2
]],
a16
:
element
[
foundAttributes
[
3
]],
a7
:
element
[
foundAttributes
[
4
]],
a13
:
element
[
foundAttributes
[
5
]],
a8
:
element
[
foundAttributes
[
6
]],
a14
:
element
[
foundAttributes
[
7
]],
a9
:
element
[
foundAttributes
[
8
]],
a15
:
element
[
foundAttributes
[
9
]],
r
:
''
,
}
//合并的单元格数据 这种格式 transform = [ {host: '管理部门', child: '综合办' }] key代表类别名称 如果他跟child一样 证明需要合并
transform
.
forEach
(
item
=>
{
if
(
funct
.
key
==
item
.
child
)
{
funct
.
key
=
item
.
host
;
}
});
obj
.
push
(
funct
)
});
})
//先根据类别名称跟汇总表的项目挂上钩 找到r行,然后根据每个属性名代表的意思循环obj找到对应的列 创建一个新的数据 只包含了 行列和金额
keyobj
.
forEach
(
keycell
=>
{
let
couloum
=
celldata
.
filter
(
item
=>
item
.
v
&&
item
.
v
.
v
&&
item
.
v
.
v
==
keycell
.
value
)[
0
].
c
obj
.
forEach
(
es
=>
{
es
.
r
=
celldata
.
filter
(
item
=>
item
.
v
&&
item
.
v
.
v
&&
item
.
v
.
v
==
es
.
key
)[
0
]?.
r
let
flag1
=
[
'
照明电量
'
,
'
电光电费
'
].
includes
(
keycell
.
value
)
&&
!
(
es
.
a7
&&
es
.
a8
&&
es
.
a9
)
if
(
flag1
||
!
[
'
照明电量
'
,
'
电光电费
'
].
includes
(
keycell
.
value
))
{
let
fun
=
{
r
:
es
.
r
,
c
:
couloum
,
value
:
es
[
keycell
.
key
]
}
if
(
fun
.
r
&&
fun
.
value
&&
fun
.
value
>
0
)
{
newarray
.
push
(
fun
)
}
}
})
})
//把行,列代表k值 如果有重复的就加起来
let
duplicateData
=
[];
let
seen
=
new
Map
();
// // 根据行列信息合并重复数据并记录索引
for
(
let
obj
of
newarray
)
{
let
key
=
obj
.
r
+
'
,
'
+
obj
.
c
;
if
(
seen
.
has
(
key
))
{
let
existingObj
=
seen
.
get
(
key
);
existingObj
.
value
=
parseFloat
(
existingObj
.
value
)
+
parseFloat
(
obj
.
value
);
existingObj
.
value
=
(
parseInt
(
existingObj
.
value
)
+
parseInt
(
obj
.
value
)).
toString
();
}
else
{
seen
.
set
(
key
,
obj
);
}
}
// 将合并后的数据放入 duplicateData 数组
for
(
let
obj
of
seen
.
values
())
{
if
(
Math
.
abs
(
obj
.
value
)
>
0
||
Math
.
abs
(
parseInt
(
obj
.
value
))
>
0
)
{
duplicateData
.
push
(
obj
);
}
}
//合并 把处理完的数据合并起来
celldata
.
forEach
(
item
=>
{
duplicateData
.
forEach
(
obj
=>
{
if
(
obj
.
r
==
item
.
r
&&
obj
.
c
==
item
.
c
){
item
.
v
.
v
=
obj
.
value
item
.
v
.
m
=
obj
.
value
}
})
})
return
celldata
}
\ No newline at end of file
ruoyi-ui/src/views/system/run_of_coal/index.vue
0 → 100644
View file @
137782ef
<
script
>
import
{
getSuppliesTemplate
,
}
from
"
@/api/ruoyi-myLuckyexcel/myluckyexcel
"
;
import
{
exportExcel
}
from
"
../../../../public/exportExcel
"
;
var
fileName
=
"
新建XLSX工作表
"
;
//定义表名
export
default
{
data
()
{
return
{
mine
:
''
,
date
:
''
,
selectedOption
:
[
{
name
:
'
东欢坨矿
'
,
id
:
'
010102
'
},
{
name
:
'
范各庄
'
,
id
:
'
011701
'
},
{
name
:
'
林西矿
'
,
id
:
'
011704
'
},
{
name
:
'
吕矿
'
,
id
:
'
011702
'
},
{
name
:
'
唐山矿
'
,
id
:
'
010101
'
},
{
name
:
'
单侯煤矿
'
,
id
:
'
011204
'
},
{
name
:
'
钱家营矿
'
,
id
:
'
010105
'
},
{
name
:
'
宏丰
'
,
id
:
'
011502
'
},
{
name
:
'
云飞
'
,
id
:
'
011504
'
},
{
name
:
'
中润
'
,
id
:
'
011706
'
},
],
};
},
created
()
{
//刷新页面时进行的操作
this
.
getList
();
},
mounted
()
{
this
.
init
();
fileName
=
"
新建XLSX工作表
"
;
},
methods
:
{
/** 页面刷新时展示的数据*/
getList
()
{
getSuppliesTemplate
(
'
1285
'
).
then
(
response
=>
{
luckysheet
.
create
({
container
:
"
luckysheet
"
,
// Luckysheet 的容器元素 ID
title
:
fileName
,
// Excel 文件名
data
:
JSON
.
parse
(
response
.
rows
[
0
].
templateContent
),
// Excel 数据
showinfobar
:
false
,
//是否显示顶部名称栏
lang
:
"
zh
"
,
});
})
},
/** Luckyexcel文档 */
init
()
{
let
options
=
{
container
:
"
luckysheet
"
,
//luckysheet为容器id
title
:
""
,
lang
:
"
zh
"
,
showinfobar
:
false
,
data
:
[
{
name
:
"
sheet1
"
,
//工作表名称
color
:
""
,
//工作表颜色
index
:
0
,
//工作表索引
status
:
1
,
//激活状态
order
:
0
,
//工作表的下标
hide
:
0
,
//是否隐藏
row
:
50
,
//行数
column
:
20
,
//列数
defaultRowHeight
:
19
,
//自定义行高
defaultColWidth
:
73
,
//自定义列宽
celldata
:
[],
//初始化使用的单元格数据
config
:
{
merge
:
{},
//合并单元格
rowlen
:
{},
//表格行高
columnlen
:
{},
//表格列宽
rowhidden
:
{},
//隐藏行
colhidden
:
{},
//隐藏列
borderInfo
:
{},
//边框
authority
:
{},
//工作表保护
},
},
],
};
luckysheet
.
create
(
options
);
},
handleSelectChange
()
{
console
.
log
(
this
.
date
,
this
.
mine
)
},
handleExport
:
debounce
(
function
()
{
// 导出
exportExcel
(
luckysheet
.
getAllSheets
(),
fileName
);
},
500
),
},
};
// 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
>
<
template
>
<div
class=
"app-container"
>
<el-form
ref=
"queryForm"
size=
"small"
:inline=
"true"
label-width=
"68px"
>
<el-form-item
label=
"所属矿"
>
<el-select
v-model=
"mine"
placeholder=
"请选择"
>
<el-option
v-for=
"item in selectedOption"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"时间"
prop=
"date"
>
<el-date-picker
v-model=
"date"
value-format=
"yyyy-MM"
type=
"month"
placeholder=
"选择月"
>
</el-date-picker>
</el-form-item>
<el-button
size=
"small"
@
click=
"handleSelectChange"
:disabled=
"!date || !mine"
>
确认
</el-button>
</el-form>
<el-row
:gutter=
"10"
class=
"mb8"
>
<el-col
:span=
"1.5"
>
<el-button
type=
"warning"
plain
icon=
"el-icon-upload2"
size=
"mini"
@
click=
"handleExport"
>
导出
</el-button>
</el-col>
</el-row>
<!-- luckysheet容器 -->
<div
id=
"luckysheet"
style=
"margin: 0px; padding: 0px; position: absolute; width: 100%; height:80vh; z-index: 0"
>
</div>
</div>
</
template
>
ruoyi-ui/src/views/system/supplies/materialDetailTemplateTable/index.js
0 → 100644
View file @
137782ef
export
function
ex
(
luckysheet
)
{
let
list
=
[]
for
(
let
index
=
1
;
index
<
luckysheet
.
length
;
index
++
)
{
let
funct
=
{}
luckysheet
[
index
].
forEach
((
item
,
e
)
=>
{
if
(
item
&&
item
.
v
&&
(
e
==
5
||
e
==
9
||
e
==
10
))
{
let
name
=
luckysheet
[
0
][
e
].
v
;
funct
[
name
]
=
item
.
v
;
}
});
list
.
push
(
funct
);
}
console
.
log
(
list
)
}
\ No newline at end of file
ruoyi-ui/src/views/system/supplies/materialDetailTemplateTable/index.vue
0 → 100644
View file @
137782ef
<
template
>
<div
class=
"box"
>
<div
style=
"display: flex;padding-bottom:20px;align-items: center;justify-content: space-between;width: 100%"
>
<div>
<el-select
v-model=
"rule"
@
change=
"handleChange"
placeholder=
"选择导入规则"
size=
"large"
style=
"width: 240px"
>
<el-option
v-for=
"item in rules"
:key=
"item.id"
:label=
"item.roleName"
:value=
"item.id"
/>
</el-select>
<el-date-picker
v-model=
"DateColumn"
size=
"large"
style=
"margin-left: 10px"
value-format=
"yyyy-MM"
type=
"month"
placeholder=
"选择月"
></el-date-picker>
</div>
<div
style=
"display: flex"
>
<el-button
size=
"mini"
@
click=
"creathz"
style=
"margin-right: 10px"
>
生成
{{
state
}}
</el-button>
<el-button
size=
"mini"
style=
"margin-right: 10px"
@
click=
"handleExport"
>
导出
</el-button>
<el-upload
type=
"file"
action=
"#"
:before-upload=
"uploadFile"
:show-file-list=
"false"
>
<el-button
size=
"mini"
:disabled=
"!rule || !DateColumn"
>
导入
</el-button>
</el-upload>
</div>
</div>
<div
style=
"flex:1;"
v-loading=
"loading"
>
<div
id=
"luckysheet"
style=
"height: 100%"
></div>
</div>
</div>
</
template
>
<
script
>
//todo 吕家坨 和 钱家营规则和其他不一样
import
{
setXColumn
}
from
'
@/utils/tzc
'
import
{
debounce
}
from
'
@/utils
'
import
{
ex
}
from
'
./index
'
const
Qjy
=
[
{
km
:
'
坑木
'
,
a24
:
'
支-生产-大型材料,支-生产-一般材料
'
,
'
费用来源
'
:
'
基本生产原煤
'
,
'
一级材料类别
'
:
'
木材
'
,
},
{
km
:
'
坑代
'
,
a24
:
'
支-生产-大型材料,支-生产-一般材料
'
,
'
费用来源
'
:
'
基本生产原煤
'
,
'
一级材料类别
'
:
'
支护用品
'
,
},
{
km
:
'
国配,综配
'
,
a24
:
'
支-生产-大型材料,支-生产-一般材料
'
,
'
费用来源
'
:
'
基本生产原煤
'
,
'
一级材料类别
'
:
'
配件
'
,
},
{
km
:
'
工具
'
,
a24
:
'
支-生产-大型材料,支-生产-一般材料
'
,
'
费用来源
'
:
'
基本生产原煤
'
,
'
一级材料类别
'
:
'
专用工具
'
,
},{
km
:
'
劳保
'
,
a24
:
'
支-生产-大型材料,支-生产-一般材料
'
,
'
费用来源
'
:
'
基本生产原煤
'
,
'
一级材料类别
'
:
'
劳保用品
'
,
},
{
km
:
'
建材
'
,
a24
:
'
支-生产-大型材料,支-生产-一般材料
'
,
'
费用来源
'
:
'
基本生产原煤
'
,
'
一级材料类别
'
:
'
建工材料
'
,
},
{
km
:
'
化工
'
,
a24
:
'
支-生产-大型材料,支-生产-一般材料
'
,
'
费用来源
'
:
'
基本生产原煤
'
,
'
一级材料类别
'
:
'
油脂及乳化液
'
,
},
{
a2
:
'
钢丝绳,钢轨,电缆,输送带,钢铁管
'
,
a24
:
'
支-生产-大型材料,支-生产-一般材料
'
,
'
费用来源
'
:
'
基本生产原煤
'
,
'
一级材料类别
'
:
'
大型材料
'
,
},
{
a23
:
'
机关
'
,
'
费用来源
'
:
'
管理费用
'
,
'
一级材料类别
'
:
'
其他材料
'
,
},
{
a23
:
'
洗煤厂
'
,
km
:
'
国配,综配,化工
'
,
in
:
false
,
'
费用来源
'
:
'
基本生产-洗煤
'
,
'
一级材料类别
'
:
'
其他材料
'
,
},
{
a23
:
'
洗煤厂
'
,
km
:
'
国配,综配
'
,
'
费用来源
'
:
'
基本生产-洗煤
'
,
'
一级材料类别
'
:
'
配件
'
,
},
{
a23
:
'
洗煤厂
'
,
km
:
'
化工
'
,
'
费用来源
'
:
'
基本生产-洗煤
'
,
'
一级材料类别
'
:
'
油脂及乳化液
'
,
},
{
a23
:
'
煤质科
'
,
a2
:
'
柴油,乙醇汽油
'
,
'
费用来源
'
:
'
其他业务成本-运输业务
'
,
'
一级材料类别
'
:
'
其他材料
'
,
},
{
a23
:
'
水暖科
'
,
a2
:
'
醇基锅炉燃料(变性甲醇)
'
,
'
费用来源
'
:
'
基本生产原煤
'
,
'
一级材料类别
'
:
'
燃料
'
,
},
{
a23
:
'
煤质科
'
,
'
费用来源
'
:
'
制造费用-原煤
'
,
'
一级材料类别
'
:
'
其他材料
'
,
},
{
a23
:
'
水暖科
'
,
'
费用来源
'
:
'
制造费用-原煤
'
,
'
一级材料类别
'
:
'
其他材料
'
,
},
]
let
getQjy
=
(
obj
)
=>
{
return
Qjy
.
find
(
item
=>
{
let
ina2
=
item
.
a2
&&
item
.
a2
.
includes
(
obj
.
a2
);
let
ina23
=
item
.
a23
&&
item
.
a23
.
includes
(
obj
.
a23
);
let
inkm
=
item
.
km
&&
item
.
km
.
includes
(
obj
.
km
);
let
ina24
=
item
.
a24
&&
item
.
a24
.
includes
(
obj
.
a24
);
if
(
item
.
a23
&&
item
.
a2
){
return
ina2
&&
ina23
;
}
else
if
(
item
.
a23
&&
item
.
km
&&
item
.
in
===
false
){
return
!
inkm
&&
ina23
}
else
if
(
item
.
a23
&&
item
.
km
){
return
ina23
&&
inkm
}
else
if
(
item
.
a24
&&
item
.
km
){
return
ina24
&&
inkm
}
else
if
(
item
.
a23
){
return
ina23
}
})
}
let
selectedOption
=
[
{
"
roleId
"
:
83
,
"
name
"
:
"
唐山矿
"
,
"
id
"
:
"
010101
"
},
{
"
roleId
"
:
84
,
"
name
"
:
"
林西矿
"
,
"
id
"
:
"
011704
"
},
{
"
roleId
"
:
85
,
"
name
"
:
"
吕家坨
"
,
"
id
"
:
"
011702
"
},
{
"
roleId
"
:
86
,
"
name
"
:
"
范各庄
"
,
"
id
"
:
"
011701
"
},
{
"
roleId
"
:
87
,
"
name
"
:
"
宏丰
"
,
"
id
"
:
"
011502
"
},
{
"
roleId
"
:
88
,
"
name
"
:
"
云飞
"
,
"
id
"
:
"
011504
"
},
{
"
roleId
"
:
89
,
"
name
"
:
"
单侯
"
,
"
id
"
:
"
011204
"
},
{
"
roleId
"
:
90
,
"
name
"
:
"
东欢坨
"
,
"
id
"
:
"
010102
"
},
{
"
roleId
"
:
91
,
"
name
"
:
"
钱家营
"
,
"
id
"
:
"
010105
"
}
]
import
{
asiccData
,
asmInfoSave
,
department
,
listSuppliesTemplateId
,
roleList
,
roleListid
}
from
'
@/api/ruoyi-myLuckyexcel/myluckyexcel
'
import
LuckyExcel
from
"
luckyexcel
"
;
import
{
exportExcel
}
from
'
../../../../../public/exportExcel
'
export
default
{
name
:
'
index
'
,
data
()
{
return
{
state
:
'
初始
'
,
DateColumn
:
''
,
loading
:
false
,
listId
:
1283
,
rules
:[],
rule
:
''
,
roleObj
:{},
// 根据部门确定来源
classification
:{},
// 当前选的规则
excelid
:
null
,
codeduiyi
:[],
transformJson
:[],
}
},
methods
:
{
creathz
(){
this
.
state
=
'
凭证
'
ex
(
luckysheet
.
getAllSheets
()[
0
].
data
)
},
getCodeRule
:
function
(
codes
,
guze
)
{
let
vm
=
this
;
let
obj
=
{
}
let
newgets
=
(
str
)
=>
{
let
code
=
String
(
str
)
if
([
'
011502
'
,
'
011504
'
].
includes
(
this
.
excelid
.
id
)
&&
code
.
startsWith
(
'
6601
'
)){
return
[
'
办公费用
'
,
''
]
}
for
(
let
item
of
guze
){
let
[
minCode
,
maxCode
]
=
item
;
if
(
minCode
===
maxCode
){
if
(
code
.
startsWith
(
minCode
)){
return
[
item
.
oneLevel
,
item
.
twoLevel
]
}
}
else
{
let
miml
=
String
(
minCode
).
length
let
maxl
=
String
(
maxCode
).
length
let
cumin
=
code
.
slice
(
0
,
miml
)
let
cumax
=
code
.
slice
(
0
,
maxl
)
if
(
minCode
>=
cumin
&&
cumax
<=
maxCode
){
if
(
minCode
[
0
]
===
'
0
'
||
maxCode
[
0
]
===
'
0
'
){
if
(
code
[
0
]
===
'
0
'
){
return
[
item
.
oneLevel
,
item
.
twoLevel
]
}
}
else
{
return
[
item
.
oneLevel
,
item
.
twoLevel
]
}
}
}
}
}
codes
.
forEach
(
code
=>
{
if
(
!
obj
[
code
]){
let
va
=
newgets
(
code
);
obj
[
code
]
=
va
||
[
''
,
''
]
}
})
return
obj
;
},
handleExport
:
debounce
(
function
()
{
// handleExport
exportExcel
(
luckysheet
.
getAllSheets
(),
'
asd
'
);
},
500
),
getqushuguze
(
data
){
let
vm
=
this
;
let
qushuguze
=
[]
if
(
vm
.
rule
*
1
===
85
){
for
(
let
i
=
vm
.
roleObj
.
NumberColumn
-
1
;
i
<
data
[
0
].
length
;
i
=
i
+
5
){
let
zhi
=
data
&&
data
[
0
]
&&
data
[
0
][
i
]
&&
data
[
0
][
i
].
v
if
(
zhi
){
qushuguze
.
push
({
...
vm
.
roleObj
,
sourceColoumn
:
zhi
&&
zhi
.
replace
&&
zhi
.
replace
(
'
--
'
,
"
-
"
)
||
zhi
,
NumberColumn
:
i
+
1
,
MoneyColumn
:
i
+
2
,
money
:
i
+
3
,
})
}
else
{
break
;
}
}
}
else
{
qushuguze
=
[
this
.
roleObj
]
}
return
qushuguze
},
handleChange
(
e
){
let
vm
=
this
;
if
(
e
){
roleListid
(
this
.
rule
).
then
(
res
=>
{
this
.
roleObj
=
JSON
.
parse
(
res
.
rows
[
0
].
detailContent
)[
0
]
})
let
excelid
=
selectedOption
.
find
(
item
=>
item
.
roleId
===
e
)
if
(
excelid
){
this
.
excelid
=
excelid
this
.
classification
=
{}
department
(
excelid
.
id
).
then
(
res
=>
{
if
(
Array
.
isArray
(
res
))
{
this
.
classification
=
Object
.
fromEntries
(
res
.
map
(
item
=>
[
item
.
name
,
item
.
nameType
]))
}
});
}
}
},
// 更改obj的来源
getsourceColoumn
(
obj
,
row
){
// 唐山矿
if
(
this
.
excelid
&&
this
.
excelid
.
id
===
'
010101
'
){
const
enumS
=
{
'
基本生产
'
:
'
基本生产-原煤
'
,
'
制造费用
'
:
'
制造费用-原煤
'
,
'
洗煤费用
'
:
'
基本生产-洗煤
'
,
'
其他费用
'
:
'
其他业务支出
'
,
}
enumS
[
obj
.
sourceColoumn
]
&&
(
obj
.
sourceColoumn
=
enumS
[
obj
.
sourceColoumn
])
}
// 林西矿
if
(
this
.
excelid
&&
this
.
excelid
.
id
===
'
011704
'
){
// 林西矿
// 类别名称 === ‘研发费用’ && 来源 = ‘研发费用’
// 类别名称 === ‘安全费用’ && 来源 = ‘安全费用’
// 其他的根据部门规则
let
lbName
=
row
&&
row
[
3
]
&&
row
[
3
].
v
if
(
lbName
===
'
研发费用
'
){
obj
.
sourceColoumn
=
'
研发费用
'
}
else
if
(
lbName
===
'
安全费用
'
){
obj
.
sourceColoumn
=
'
安全费用
'
}
else
{
obj
.
sourceColoumn
=
this
.
classification
[
obj
.
DepartmentColumn
]
}
}
// 单侯
if
(
this
.
excelid
&&
this
.
excelid
.
id
===
'
011204
'
){
// 费用来源是生产成本按照部门划分
// 反之直接取费用来源列
if
(
obj
.
sourceColoumn
===
'
生产成本
'
){
obj
.
sourceColoumn
=
this
.
classification
[
obj
.
DepartmentColumn
]
}
}
//宏丰\云飞
// 费用来源 === 成本费用的取部门
// 反之直接取费用来源列
if
(
this
.
excelid
&&
[
'
011502
'
,
'
011504
'
].
includes
(
this
.
excelid
.
id
)){
if
(
obj
.
sourceColoumn
===
'
成本费用
'
){
obj
.
sourceColoumn
=
this
.
classification
[
obj
.
DepartmentColumn
]
}
}
},
chuli
(
transformJson
,
olddata
,
obj
){
olddata
[
transformJson
.
length
]
=
[];
let
arr
=
[
{
c
:
0
,
label
:
'
物料名称
'
,
value
:
'
NameColumn
'
},
{
c
:
1
,
label
:
'
材料编码
'
,
value
:
'
CodeColumn
'
},
{
c
:
2
,
label
:
'
部门
'
,
value
:
'
DepartmentColumn
'
},
{
c
:
3
,
label
:
'
数量
'
,
value
:
'
NumberColumn
'
},
{
c
:
4
,
label
:
'
单价
'
,
value
:
'
MoneyColumn
'
},
{
c
:
5
,
label
:
'
总额
'
,
value
:
'
money
'
},
{
c
:
6
,
label
:
'
计量单位
'
,
value
:
'
unit
'
},
{
c
:
7
,
label
:
'
型号
'
,
value
:
'
model
'
},
{
c
:
8
,
label
:
'
所属矿
'
,
value
:
'
mineName
'
},
{
c
:
9
,
label
:
'
费用来源
'
,
value
:
'
sourceColoumn
'
},
{
c
:
10
,
label
:
'
一级材料类别
'
,
value
:
'
oneLevel
'
},
{
c
:
11
,
label
:
'
二级材料类别
'
,
value
:
'
twoLevel
'
},
{
c
:
12
,
label
:
'
日期
'
,
value
:
'
DateColumn
'
},
]
arr
.
forEach
((
item
)
=>
{
if
(
obj
[
item
.
value
]){
olddata
[
transformJson
.
length
][
item
.
c
]
=
{
ct
:
{
fa
:
'
@
'
,
t
:
'
s
'
},
fc
:
"
#000000
"
,
ff
:
"
宋体
"
,
v
:
obj
[
item
.
value
]}
}
});
},
uploadFile
(
file
)
{
let
vm
=
this
;
vm
.
loading
=
true
;
LuckyExcel
.
transformExcelToLucky
(
file
,
async
function
(
exportJson
)
{
let
celldata
=
exportJson
&&
exportJson
.
sheets
&&
exportJson
.
sheets
[
0
]
&&
exportJson
.
sheets
[
0
].
celldata
;
if
(
celldata
){
let
data
=
luckysheet
.
transToData
(
celldata
);
let
transformJson
=
[];
let
updataSheetdata
=
luckysheet
.
getAllSheets
();
let
olddata
=
updataSheetdata
[
0
].
data
;
let
codeObj
=
{};
// 钱家营的单独设置,来源和一级分类,没有二级分类
if
(
vm
.
excelid
.
id
!==
'
010105
'
){
let
codeIndex
=
vm
.
roleObj
&&
vm
.
roleObj
.
CodeColumn
&&
(
vm
.
roleObj
.
CodeColumn
-
1
)
let
codes
=
[]
if
(
codeIndex
>
-
1
){
codes
=
data
.
slice
(
vm
.
roleObj
.
HeaderRow
-
1
).
map
(
row
=>
{
let
codev
=
row
&&
row
[
codeIndex
]
&&
(
row
[
codeIndex
].
v
+
''
)
return
codev
||
''
;
}).
filter
(
item
=>
item
);
}
// codeObj = vm.getCodeRule(codes)
codes
=
Array
.
from
(
new
Set
(
codes
))
if
(
codes
.
length
){
let
rescodeObj
=
await
asiccData
({
codes
:
Array
.
from
(
new
Set
(
codes
)),
mineId
:
vm
.
excelid
.
id
})
if
(
rescodeObj
.
code
===
200
){
codeObj
=
rescodeObj
.
data
}
else
{
vm
.
loading
=
false
;
}
}
}
// 钱家营
let
headers
=
setXColumn
(
data
)
data
.
slice
(
vm
.
roleObj
.
HeaderRow
-
1
).
map
((
row
,
rowIndex
)
=>
{
vm
.
getqushuguze
(
data
).
forEach
(
item
=>
{
let
obj
=
{}
// 通用规则设置obj
obj
.
mineName
=
vm
.
excelid
.
name
;
obj
.
mineId
=
vm
.
excelid
.
id
;
Object
.
entries
(
item
).
forEach
(([
key
,
v
])
=>
{
if
(
vm
.
excelid
.
id
===
'
011702
'
&&
key
===
'
sourceColoumn
'
){
obj
[
key
]
=
v
}
else
if
(
v
&&
row
[
v
-
1
]
&&
row
[
v
-
1
].
v
&&
key
!==
'
HeaderRow
'
){
obj
[
key
]
=
row
[
v
-
1
].
v
}
})
obj
.
DateColumn
=
vm
.
DateColumn
;
// 钱家营单独修改来源和一级分类
if
(
vm
.
excelid
.
name
===
'
钱家营
'
){
let
etQ
=
getQjy
({
a23
:
row
[
headers
.
a23
].
v
,
a2
:
row
[
headers
.
a2
].
v
,
km
:
row
[
headers
.
km
].
v
,
a24
:
row
[
headers
.
a24
].
v
,
})
obj
.
oneLevel
=
etQ
&&
etQ
[
'
一级材料类别
'
]
||
'
其他材料
'
;
obj
.
sourceColoumn
=
etQ
&&
etQ
[
'
费用来源
'
]
||
'
基本生产原煤
'
;
}
else
if
(
codeObj
&&
codeObj
[
obj
.
CodeColumn
])
{
let
codess
=
codeObj
[
obj
.
CodeColumn
];
obj
.
oneLevel
=
(
codess
[
'
一级分类
'
]
&&
codess
[
'
一级分类
'
]
!==
'
null
'
)
?
codess
[
'
一级分类
'
]
:
''
obj
.
twoLevel
=
(
codess
[
'
二级分类
'
]
&&
codess
[
'
二级分类
'
]
!==
'
null
'
)
?
codess
[
'
二级分类
'
]
:
''
}
// 设置obj.sourceColoumn来源
vm
.
getsourceColoumn
(
obj
,
row
)
// 生成 transformJson、olddata
if
(
obj
&&
obj
.
CodeColumn
&&
Math
.
abs
(
obj
.
money
)
>
0
){
transformJson
.
push
(
obj
)
vm
.
chuli
(
transformJson
,
olddata
,
obj
)
}
})
})
vm
.
loading
=
false
;
luckysheet
.
destroy
();
luckysheet
.
create
({
container
:
"
luckysheet
"
,
// Luckysheet 的容器元素 ID
lang
:
'
zh
'
,
title
:
'
材料明细模版表
'
,
data
:
updataSheetdata
});
this
.
transformJson
=
transformJson
;
asmInfoSave
({
materials
:
transformJson
})
}
});
},
},
mounted
()
{
listSuppliesTemplateId
(
this
.
listId
).
then
(
res
=>
{
luckysheet
.
destroy
();
luckysheet
.
create
({
container
:
"
luckysheet
"
,
// Luckysheet 的容器元素 ID
lang
:
'
zh
'
,
title
:
'
材料明细模版表
'
,
data
:
JSON
.
parse
(
res
.
rows
[
0
].
templateContent
)
});
})
roleList
(
this
.
listId
).
then
(
res
=>
{
this
.
rules
=
res
.
rows
})
},
}
</
script
>
<
style
scoped
>
.box
{
box-sizing
:
border-box
;
padding
:
20px
;
position
:
absolute
;
width
:
100%
;
height
:
100%
;
left
:
0
;
top
:
0
;
display
:
flex
;
flex-direction
:
column
;
}
</
style
>
ruoyi-ui/src/views/system/suppliesrole/index.vue.bak1
deleted
100644 → 0
View file @
7c77feb6
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="模板ID" prop="tempId">
<el-input
v-model="queryParams.tempId"
placeholder="请输入模板ID"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="规则名称" prop="roleName">
<el-input
v-model="queryParams.roleName"
placeholder="请输入规则名称"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择状态" clearable size="small">
<el-option
v-for="dict in statusOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['system:suppliesrole:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['system:suppliesrole:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['system:suppliesrole:remove']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['system:suppliesrole:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="suppliesroleList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="ID" align="center" prop="id" />
<el-table-column label="模板ID" align="center" prop="tempId" />
<el-table-column label="规则名称" align="center" prop="roleName" />
<el-table-column label="状态" align="center" prop="status" :formatter="statusFormat" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['system:suppliesrole:edit']"
>修改</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['system:suppliesrole:remove']"
>删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改导入规则对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="模板ID" prop="tempId">
<el-select v-model="form.tempId" filterable placeholder="请选择关联项" >
<el-option
v-for="option in options"
:key="option.templateName"
:label="option.templateName"
:value="option.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="规则名称" prop="roleName">
<el-input v-model="form.roleName" placeholder="请输入规则名称" />
</el-form-item>
<el-form-item label="状态">
<el-radio-group v-model="form.status">
<el-radio
v-for="dict in statusOptions"
:key="dict.dictValue"
:label="parseInt(dict.dictValue)"
>{{dict.dictLabel}}</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listSuppliesrole, getSuppliesrole, delSuppliesrole, addSuppliesrole, updateSuppliesrole, exportSuppliesrole,saveSid } from "@/api/system/suppliesrole";
export default {
name: "Suppliesrole",
components: {
},
data() {
return {
// 遮罩层
loading: true,
// 选中数组
ids: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 导入规则表格数据
suppliesroleList: [],
options:[],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 状态数据字典
statusOptions: [],
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
tempId: null,
roleName: null,
status: null,
},
// 表单参数
form: {},
// 表单校验
rules: {
tempId: [
{ required: true, message: "关联id不能为空", trigger: "change" }
]
}
};
},
created() {
this.getList();
this.getnameid();
this.getDicts("sys_normal_disable").then(response => {
this.statusOptions = response.data;
});
},
methods: {
/** 查询上级id*/
getnameid(){
saveSid().then(response =>{
this.options = response.rows;
})
},
/** 查询导入规则列表 */
getList() {
this.loading = true;
listSuppliesrole(this.queryParams).then(response => {
this.suppliesroleList = response.rows;
this.total = response.total;
this.loading = false;
});
},
// 岗位状态字典翻译
statusFormat(row, column) {
return this.selectDictLabel(this.statusOptions, row.status);
},
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 表单重置
reset() {
this.form = {
id: null,
tempId: null,
roleName: null,
status: 0,
createBy: null,
createTime: null,
updateBy: null,
updateTime: null
};
this.resetForm("form");
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.getList();
},
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.handleQuery();
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.single = selection.length!==1
this.multiple = !selection.length
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加导入规则";
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const id = row.id || this.ids
getSuppliesrole(id).then(response => {
this.form = response.data;
this.open = true;
this.title = "修改导入规则";
});
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (valid) {
if (this.form.id != null) {
updateSuppliesrole(this.form).then(response => {
this.msgSuccess("修改成功");
this.open = false;
this.getList();
});
} else {
addSuppliesrole(this.form).then(response => {
this.msgSuccess("新增成功");
this.open = false;
this.getList();
});
}
}
});
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.id || this.ids;
this.$confirm('是否确认删除导入规则编号为"' + ids + '"的数据项?', "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function() {
return delSuppliesrole(ids);
}).then(() => {
this.getList();
this.msgSuccess("删除成功");
})
},
/** 导出按钮操作 */
handleExport() {
const queryParams = this.queryParams;
this.$confirm('是否确认导出所有导入规则数据项?', "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
}).then(function() {
return exportSuppliesrole(queryParams);
}).then(response => {
this.download(response.msg);
})
}
}
};
</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