Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Z
zghywpc-vue
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
李苏
zghywpc-vue
Commits
e151f0f6
Commit
e151f0f6
authored
Oct 30, 2024
by
李苏
💬
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
中广核调整
parent
05a8623e
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
1270 additions
and
5 deletions
+1270
-5
index.js
src/router/index.js
+14
-0
dialog.vue
src/views/fmegl/fmekpigl/biao/dialog.vue
+44
-0
edit.vue
src/views/fmegl/fmekpigl/biao/edit.vue
+183
-0
index.vue
src/views/fmegl/fmekpigl/biao/index.vue
+181
-0
index.vue
src/views/fmegl/fmekpigl/index.vue
+59
-0
index.vue
src/views/fmegl/fmekpigl/tu/index.vue
+579
-0
dialog.vue
src/views/fmegl/fmezbpgl/biao/dialog.vue
+44
-0
index.vue
src/views/fmegl/fmezbpgl/tu/index.vue
+3
-3
addjxzyff.vue
src/views/sbjxgl/sbjxxx/addjxzyff.vue
+103
-0
edit.vue
src/views/sbjxgl/sbjxxx/edit.vue
+60
-2
No files found.
src/router/index.js
View file @
e151f0f6
...
...
@@ -309,6 +309,20 @@ export const powerRoutes = [
name
:
'fmezbpgl'
,
path
:
"fmezbpgl"
,
},
{
erpComponent
:
false
,
component
:
'fmegl/fmekpigl/index'
,
hidden
:
false
,
meta
:
{
"title"
:
"FME-KPI管理"
,
"icon"
:
""
,
"noCache"
:
false
,
"link"
:
null
,
"mkid"
:
'920050510'
,
},
name
:
'fmekpigl'
,
path
:
"fmekpigl"
,
},
{
erpComponent
:
false
,
component
:
'fmegl/glqwpdj/index'
,
...
...
src/views/fmegl/fmekpigl/biao/dialog.vue
0 → 100644
View file @
e151f0f6
<
template
>
<DefaultDialog
:app=
'app'
>
<div
slot=
"form"
style=
"display: flex;height: 70vh;"
>
</div>
<div
slot=
"reFooter"
class=
"refooter"
>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"app.showDialog=false"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"save()"
>
保 存
</el-button>
</span>
</div>
</DefaultDialog>
</
template
>
<
script
>
export
default
{
props
:
{
app
:
{
type
:
Object
,
default
:
()
=>
{
return
{}
}
}
},
async
mounted
()
{
},
data
()
{
return
{
}
},
methods
:
{
}
}
</
script
>
<
style
scoped
>
</
style
>
src/views/fmegl/fmekpigl/biao/edit.vue
0 → 100644
View file @
e151f0f6
<!--
* @Description:生成基础baseEdit组件,屏蔽不必要细节
* @Author: lisu lisu@gavelinfo.com
* @Date: 2024-09-19 10:47:46
* @LastEditors: lisu lisu@gavelinfo.com
* @LastEditTime: 2024-10-30 11:02:01
* @FilePath: /zghywpc-vue/src/views/fmegl/fmekpigl/biao/edit.vue
-->
<
template
>
<!-- prop 穿透赋值 -->
<BaseEdit
labelWidth=
'130px'
v-bind=
"$attrs"
:config=
'editConfig'
>
<template
#
dialog=
"ctx"
>
<!-- 嵌入默认页面额外弹框的插槽 ctx.editPage来操作默认页面 -->
</
template
>
<
template
#
toolbar=
"ctx"
>
<!-- 嵌入默认页面从表上方插槽 ctx.editPage来操作默认页面 -->
<!--
<el-button
@
click=
"demo(ctx.editPage)"
size=
'mini'
type=
"primary"
>
示例按钮
</el-button>
-->
<!--
<AuxButton
:dynamic=
'true'
:queryParams=
"
{
sbxxTreeId:that.form.sbxxTreeId,
zt:'N'
}" :component='Qxsj' rename='选择缺陷数据' code='dynamic' @save="saveQxsj" /> -->
</
template
>
</BaseEdit>
</template>
<
script
>
export
default
{
data
()
{
return
{
editConfig
:
{
/* 生成form表单 */
editColItemList
:
[
{
label
:
"机组名称"
,
prop
:
"jzmc"
,
span
:
12
,
type
:
"RelSelect"
,
required
:
true
,
typeConfig
:{
src
:
'fme/ufmekpi/init/jz/type'
}
},
{
label
:
"FME1级别"
,
prop
:
"fmeone"
,
span
:
12
,
type
:
"input"
},
{
label
:
"FME2级别"
,
prop
:
"fmetwo"
,
span
:
12
,
type
:
"input"
},
{
label
:
"FME3级别"
,
prop
:
"fmethree"
,
span
:
12
,
type
:
"input"
},
{
label
:
"FME4级别"
,
prop
:
"fmefour"
,
span
:
12
,
type
:
"input"
},
{
label
:
"kpi"
,
prop
:
"kpi"
,
span
:
12
,
type
:
"inputNumber"
},
{
label
:
"及格kpi"
,
prop
:
"jgkpi"
,
span
:
12
,
type
:
"inputNumber"
},
{
label
:
"优秀kpi"
,
prop
:
"yxkpi"
,
span
:
12
,
type
:
"inputNumber"
},
{
label
:
"m1"
,
prop
:
"mone"
,
span
:
12
,
type
:
"input"
},
{
label
:
"m2"
,
prop
:
"mtwo"
,
span
:
12
,
type
:
"input"
},
{
label
:
"m3"
,
prop
:
"mthree"
,
span
:
12
,
type
:
"input"
},
{
label
:
"年"
,
prop
:
"year"
,
span
:
12
,
type
:
"year"
,
required
:
true
,
},
{
label
:
"历史遗留"
,
prop
:
"lsyl"
,
span
:
12
,
// 注意这里的span为24,因为虽然未明确说明,但假设bz类型或其他特殊情况的span为24的规则适用于width较大的字段,或根据实际需求调整
type
:
"inputNumber"
// 假设未特殊说明的宽度较大字段默认为input类型,或根据实际业务需求调整
},
{
label
:
"设备缺陷"
,
prop
:
"sbqx"
,
span
:
12
,
type
:
"inputNumber"
},
{
label
:
"外部引入"
,
prop
:
"wbyr"
,
span
:
12
,
type
:
"inputNumber"
},
{
label
:
"腐蚀老化"
,
prop
:
"fslh"
,
span
:
12
,
type
:
"inputNumber"
},
{
label
:
"未取出异物"
,
prop
:
"wqcyw"
,
span
:
12
,
type
:
"inputNumber"
}
],
/* 生成主从表,为空数组默认不展示 */
editTableTitle
:
[
// {
// title: "序号",
// field: "xh",
// width: 50,
// align: "center"
// },
// {
// title: "点检部位",
// field: "bw",
// width: 180,
// },
// {
// title: "点检项目",
// field: "project",
// width: 160
// },
// {
// title: "点检标准",
// field: "standard",
// width: 140
// },
],
/* 子表名,可选 同editTableTitle一起用*/
detailTable
:
''
}
}
},
methods
:
{
/**
* @description:示例按钮
* @param {*} ctx操作edit实例内容
* @return {*}
* @author: lisu
*/
// demo(ctx){}
}
}
</
script
>
<
style
>
</
style
>
src/views/fmegl/fmekpigl/biao/index.vue
0 → 100644
View file @
e151f0f6
<!--
* @Description: 生成基础basePage组件,屏蔽不必要细节
* @Author: lisu lisu@gavelinfo.com
* @Date: 2024-09-19 10:55:27
* @LastEditors: lisu lisu@gavelinfo.com
* @LastEditTime: 2024-10-30 09:58:21
* @FilePath: /zghywpc-vue/src/views/fmegl/fmekpigl/biao/index.vue
-->
<
template
>
<BasePage
ref=
"basePage"
class=
"min_full"
:config=
"config"
>
<template
#
dialog=
"ctx"
>
<!-- 嵌入默认页面额外弹框的插槽 ctx.pagePage来操作默认页面 -->
</
template
>
<
template
#
toolbar=
"ctx"
>
<!-- 嵌入默认页面工具栏的插槽 ctx.pagePage来操作默认页面 -->
<!--
<el-button
@
click=
"demo(ctx.basePage)"
size=
'mini'
type=
"primary"
>
示例按钮
</el-button>
-->
</
template
>
</BasePage>
</template>
<
script
>
import
Edit
from
'./edit.vue'
export
default
{
name
:
'template'
,
data
()
{
let
nowYear
=
new
Date
().
getFullYear
()
let
lastYearKpi
=
`
${
nowYear
-
1
}
年kpi`
let
yearBeforeLastKpi
=
`
${
nowYear
-
2
}
年kpi`
return
{
config
:
{
/* 基本配置*/
url
:
'fme/ufmekpi'
,
tableTitle
:
[{
title
:
"机组名称"
,
field
:
"jzmc"
,
width
:
130
},
{
title
:
"FME1级别"
,
field
:
"fmeone"
,
width
:
130
},
{
title
:
"FME2级别"
,
field
:
"fmetwo"
,
width
:
100
},
{
title
:
"FME3级别"
,
field
:
"fmethree"
,
width
:
100
},
{
title
:
"FME4级别"
,
field
:
"fmefour"
,
width
:
100
},
{
title
:
yearBeforeLastKpi
,
field
:
"yearBeforeLastKpi"
,
width
:
140
},
{
title
:
lastYearKpi
,
field
:
"lastYearKpi"
,
width
:
140
},
{
title
:
"kpi"
,
field
:
"kpi"
,
width
:
100
},
{
title
:
"及格kpi"
,
field
:
"jgkpi"
,
width
:
100
},
{
title
:
"优秀kpi"
,
field
:
"yxkpi"
,
width
:
100
},
{
title
:
"m1"
,
field
:
"mone"
,
width
:
140
},
{
title
:
"m2"
,
field
:
"mtwo"
,
width
:
140
},
{
title
:
"m3"
,
field
:
"mthree"
,
width
:
140
},
{
title
:
"年"
,
field
:
"year"
,
width
:
140
},
{
title
:
"历史遗留"
,
field
:
"lsyl"
,
width
:
200
},
{
title
:
"设备缺陷"
,
field
:
"sbqx"
,
width
:
200
},
{
title
:
"外部引入"
,
field
:
"wbyr"
,
width
:
200
},
{
title
:
"腐蚀老化"
,
field
:
"fslh"
,
width
:
200
},
{
title
:
"未取出异物"
,
field
:
"wqcyw"
,
width
:
200
}
],
queryParams
:
[
[{
label
:
'年度'
,
prop
:
'year'
,
span
:
6
,
type
:
'year'
,
value
:
new
Date
().
getFullYear
(),
typeConfig
:
{
onChange
:
(
e
)
=>
{
let
nowYear
=
this
.
$refs
.
basePage
.
queryParams
.
year
let
lastYearKpi
=
`
${
nowYear
-
1
}
年kpi`
let
yearBeforeLastKpi
=
`
${
nowYear
-
2
}
年kpi`
let
list
=
this
.
$refs
.
basePage
.
$refs
.
TablePager
.
newGridList
list
.
forEach
(
item
=>
{
if
(
item
.
prop
==
'lastYearKpi'
){
item
.
label
=
lastYearKpi
}
if
(
item
.
prop
==
'yearBeforeLastKpi'
){
item
.
label
=
yearBeforeLastKpi
}
})
this
.
$refs
.
basePage
.
refresh
()
}
}
}
]
],
/* 默认启停用 */
}
}
},
methods
:
{
/**
* @description:示例按钮
* @param {*} ctx操作basePage实例内容
* @return {*}
* @author: lisu
*/
// demo(ctx){}
},
components
:
{
Edit
}
}
</
script
>
<
style
>
</
style
>
src/views/fmegl/fmekpigl/index.vue
0 → 100644
View file @
e151f0f6
<!--
* @Description: 生成基础basePage组件,屏蔽不必要细节
* @Author: lisu lisu@gavelinfo.com
* @Date: 2024-09-19 10:55:27
* @LastEditors: lisu lisu@gavelinfo.com
* @LastEditTime: 2024-10-30 10:15:06
* @FilePath: /zghywpc-vue/src/views/fmegl/fmekpigl/index.vue
-->
<
template
>
<div
class=
"fmezbpgl"
>
<!-- 切换-->
<div
class=
"qh"
>
<el-button
@
click=
"showPic=!showPic"
type=
"success"
icon=
"el-icon-refresh"
circle
></el-button>
</div>
<Tu
class=
"leftOpt animate__animated "
v-show=
"showPic"
:class=
"
{
'animate__fadeInLeft':showPic,
'animate__fadeOutLeft':!showPic
}" />
<Biao
class=
"leftOpt animate__animated "
v-show=
"!showPic"
:class=
"
{
'animate__fadeInRight':!showPic,
'animate__fadeOutRight':showPic
}" />
</div>
</
template
>
<
script
>
import
Biao
from
'./biao'
import
Tu
from
'./tu'
export
default
{
name
:
'fmekpigl'
,
components
:
{
Biao
,
Tu
},
data
()
{
return
{
showPic
:
true
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.fmezbpgl
{
position
:
relative
}
.qh
{
position
:
absolute
;
right
:
55px
;
bottom
:
55px
;
z-index
:
9999
;
font-size
:
18px
;
color
:
cornflowerblue
;
}
</
style
>
src/views/fmegl/fmekpigl/tu/index.vue
0 → 100644
View file @
e151f0f6
<
template
>
<div
class=
"min_full"
>
<div
class=
"search"
>
<!--
<SearchButton
:app=
'app'
></SearchButton>
-->
<el-row
:gutter=
"20"
class=
"search-row-1"
>
<el-col
:span=
"6"
class=
"search-col"
>
<div
class=
"search-item"
>
<span
class=
"search-span"
>
年度:
</span>
<RelYearSelect
@
change=
"initAll()"
v-model=
"queryParams.year"
size=
"small"
class=
"search-input"
>
</RelYearSelect>
</div>
</el-col>
</el-row>
</div>
<!-- 展示-->
<div
class=
"fmekpiglBody"
>
<div
class=
"bbItem"
>
<div
class=
"full"
>
<div
class=
"bbItemtTitle"
>
{{
`${queryParams.year
}
年度电厂KPI`
}}
<
/div
>
<
div
class
=
"bbItemtBody"
>
<!--
echarts
-->
<
div
ref
=
"dckpi"
class
=
"full"
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"bbItem"
>
<
div
class
=
"full"
>
<
div
class
=
"bbItemtTitle"
>
{{
`${queryParams.year
}
年度机组问题统计`
}}
<
/div
>
<
div
class
=
"bbItemtBody"
>
<
div
ref
=
"jzwttj"
class
=
"full"
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"bbItem"
>
<
div
class
=
"full"
>
<
div
class
=
"bbItemtTitle"
>
{{
`${queryParams.year
}
年度专业KPI`
}}
<
/div
>
<
div
class
=
"bbItemtBody"
>
<
div
ref
=
"zykpi"
class
=
"full"
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"bbItem"
>
<
div
class
=
"full"
>
<
div
class
=
"bbItemtTitle"
>
{{
`${queryParams.year
}
年度FME统计`
}}
<
/div
>
<
div
class
=
"bbItemtBody"
>
<
div
ref
=
"fmetj"
class
=
"full"
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/template
>
<
script
>
export
default
{
data
()
{
return
{
queryParams
:
{
year
:
new
Date
().
getFullYear
(),
}
,
timer
:
null
}
}
,
mounted
()
{
this
.
$nextTick
(()
=>
{
this
.
edckpi
=
this
.
$echarts
.
init
(
this
.
$refs
.
dckpi
)
this
.
ejzwttj
=
this
.
$echarts
.
init
(
this
.
$refs
.
jzwttj
)
this
.
ezykpi
=
this
.
$echarts
.
init
(
this
.
$refs
.
zykpi
)
this
.
efmetj
=
this
.
$echarts
.
init
(
this
.
$refs
.
fmetj
)
/* 生成图表*/
this
.
initAll
()
// this.timer = setInterval(() =>
{
// this.initAll()
//
}
,
1000
*
10
)
}
)
}
,
methods
:
{
initAll
()
{
this
.
$post
(
'fme/ufmekpi/query'
,
this
.
queryParams
).
then
(
res
=>
{
let
records
=
res
.
data
.
records
||
[]
this
.
initEdckpi
(
records
)
this
.
initEzykpi
(
records
)
this
.
initEjzwttj
(
records
)
this
.
initEfmetj
(
records
)
}
)
}
,
/* 年度机组kpi*/
initEdckpi
(
records
)
{
let
xData
=
[
'1号机组'
,
'2号机组'
,
'3号机组'
,
'4号机组'
,
'5号机组'
,
'6号机组'
,
'电厂'
]
/* 根据XDate 找数据*/
let
kpiList
=
xData
.
map
(
key
=>
{
let
value
=
0
records
.
forEach
(
item
=>
{
if
(
item
.
jzmc
==
key
)
{
value
=
item
.
kpi
}
}
)
return
value
}
)
let
jgkpiList
=
xData
.
map
(
key
=>
{
let
value
=
0
records
.
forEach
(
item
=>
{
if
(
item
.
jzmc
==
key
)
{
value
=
item
.
jgkpi
}
}
)
return
value
}
)
let
yxkpiList
=
xData
.
map
(
key
=>
{
let
value
=
0
records
.
forEach
(
item
=>
{
if
(
item
.
jzmc
==
key
)
{
value
=
item
.
yxkpi
}
}
)
return
value
}
)
let
option
=
{
tooltip
:
{
trigger
:
'axis'
,
// 触发类型为坐标轴触发
axisPointer
:
{
type
:
'line'
// 指示器类型为线
}
}
,
legend
:
{
data
:
[
'年度KPI'
,
'及格KPI'
,
'优秀KPI'
]
}
,
color
:
[
'#409EFF'
,
'#FF7474'
,
'#86ff65'
],
grid
:
{
top
:
'10%'
,
left
:
'3%'
,
right
:
'6%'
,
bottom
:
'10%'
,
containLabel
:
true
,
}
,
xAxis
:
{
type
:
'category'
,
data
:
xData
}
,
yAxis
:
{
type
:
'value'
}
,
series
:
[{
name
:
'年度KPI'
,
type
:
'bar'
,
data
:
kpiList
,
}
,
{
name
:
'及格KPI'
,
type
:
'bar'
,
data
:
jgkpiList
,
}
,
{
name
:
'优秀KPI'
,
type
:
'bar'
,
data
:
yxkpiList
,
}
,
]
}
;
this
.
edckpi
.
setOption
(
option
);
}
,
/* 问题统计*/
initEjzwttj
(
records
){
let
xData
=
[
'1号机组'
,
'2号机组'
,
'3号机组'
,
'4号机组'
,
'5号机组'
,
'6号机组'
]
/* 根据XDate 找数据*/
let
lsylList
=
xData
.
map
(
key
=>
{
let
value
=
0
records
.
forEach
(
item
=>
{
if
(
item
.
jzmc
==
key
)
{
value
=
item
.
lsyl
}
}
)
return
value
}
)
let
alllsyl
=
records
.
reduce
((
a
,
c
)
=>
{
return
a
+
parseFloat
(
c
.
lsyl
)
}
,
0
)
lsylList
.
push
(
alllsyl
)
let
sbqxList
=
xData
.
map
(
key
=>
{
let
value
=
0
records
.
forEach
(
item
=>
{
if
(
item
.
jzmc
==
key
)
{
value
=
item
.
sbqx
}
}
)
return
value
}
)
/* 累计数据*/
let
allsbqx
=
records
.
reduce
((
a
,
c
)
=>
{
return
a
+
parseFloat
(
c
.
sbqx
)
}
,
0
)
sbqxList
.
push
(
allsbqx
)
let
wbyrList
=
xData
.
map
(
key
=>
{
let
value
=
0
records
.
forEach
(
item
=>
{
if
(
item
.
jzmc
==
key
)
{
value
=
item
.
wbyr
}
}
)
return
value
}
)
let
allwbyr
=
records
.
reduce
((
a
,
c
)
=>
{
return
a
+
parseFloat
(
c
.
wbyr
)
}
,
0
)
wbyrList
.
push
(
allwbyr
)
let
fslhList
=
xData
.
map
(
key
=>
{
let
value
=
0
records
.
forEach
(
item
=>
{
if
(
item
.
jzmc
==
key
)
{
value
=
item
.
fslh
}
}
)
return
value
}
)
let
allfslh
=
records
.
reduce
((
a
,
c
)
=>
{
return
a
+
parseFloat
(
c
.
fslh
)
}
,
0
)
fslhList
.
push
(
allfslh
)
let
wqcywList
=
xData
.
map
(
key
=>
{
let
value
=
0
records
.
forEach
(
item
=>
{
if
(
item
.
jzmc
==
key
)
{
value
=
item
.
wqcyw
}
}
)
return
value
}
)
let
allwqcyw
=
records
.
reduce
((
a
,
c
)
=>
{
return
a
+
parseFloat
(
c
.
wqcyw
)
}
,
0
)
wqcywList
.
push
(
allwqcyw
)
xData
.
push
(
'合计'
)
let
option
=
{
tooltip
:
{
trigger
:
'axis'
,
// 触发类型为坐标轴触发
axisPointer
:
{
type
:
'line'
// 指示器类型为线
}
}
,
legend
:
{
data
:
[
'历史遗留'
,
'设备缺陷'
,
'外部引入'
,
'腐蚀老化'
,
'未取出异物'
]
}
,
color
:
[
'#409EFF'
,
'#FF7474'
,
'#a6bbff'
,
'#ffde79'
,
'#7be1ff'
],
grid
:
{
top
:
'10%'
,
left
:
'3%'
,
right
:
'6%'
,
bottom
:
'10%'
,
containLabel
:
true
,
}
,
xAxis
:
{
type
:
'category'
,
data
:
xData
}
,
yAxis
:
{
type
:
'value'
}
,
series
:
[{
name
:
'历史遗留'
,
type
:
'bar'
,
data
:
lsylList
,
}
,
{
name
:
'设备缺陷'
,
type
:
'bar'
,
data
:
sbqxList
,
}
,
{
name
:
'外部引入'
,
type
:
'bar'
,
data
:
wbyrList
,
}
,
{
name
:
'腐蚀老化'
,
type
:
'bar'
,
data
:
fslhList
,
}
,
{
name
:
'未取出异物'
,
type
:
'bar'
,
data
:
wqcywList
,
}
,
]
}
;
this
.
ejzwttj
.
setOption
(
option
);
}
,
/* 年度专业kpi*/
initEzykpi
(
records
)
{
let
xData
=
[
"MMV"
,
"MMC"
,
"MMU"
,
"MMD"
,
"MMM"
,
"YME"
,
"YMI"
,
"YGS"
,
"YTS"
,
"YEN"
,
"YSE"
,
"YSP"
,
"YCP"
,
"YPC"
,
"YTC"
]
/* 根据XDate 找数据*/
let
kpiList
=
xData
.
map
(
key
=>
{
let
value
=
0
records
.
forEach
(
item
=>
{
if
(
item
.
jzmc
==
key
)
{
value
=
item
.
kpi
}
}
)
return
value
}
)
let
jgkpiList
=
xData
.
map
(
key
=>
{
let
value
=
0
records
.
forEach
(
item
=>
{
if
(
item
.
jzmc
==
key
)
{
value
=
item
.
jgkpi
}
}
)
return
value
}
)
let
yxkpiList
=
xData
.
map
(
key
=>
{
let
value
=
0
records
.
forEach
(
item
=>
{
if
(
item
.
jzmc
==
key
)
{
value
=
item
.
yxkpi
}
}
)
return
value
}
)
let
option
=
{
tooltip
:
{
trigger
:
'axis'
,
// 触发类型为坐标轴触发
axisPointer
:
{
type
:
'line'
// 指示器类型为线
}
}
,
legend
:
{
data
:
[
'年度KPI'
,
'及格KPI'
,
'优秀KPI'
]
}
,
color
:
[
'#409EFF'
,
'#FF7474'
,
'#86ff65'
],
grid
:
{
top
:
'10%'
,
left
:
'3%'
,
right
:
'6%'
,
bottom
:
'10%'
,
containLabel
:
true
,
}
,
xAxis
:
{
type
:
'category'
,
data
:
xData
}
,
yAxis
:
{
type
:
'value'
}
,
series
:
[{
name
:
'年度KPI'
,
type
:
'bar'
,
data
:
kpiList
,
}
,
{
name
:
'及格KPI'
,
type
:
'bar'
,
data
:
jgkpiList
,
}
,
{
name
:
'优秀KPI'
,
type
:
'bar'
,
data
:
yxkpiList
,
}
,
]
}
;
this
.
ezykpi
.
setOption
(
option
);
}
,
initEfmetj
(
records
){
let
xData
=
[
'1号机组'
,
'2号机组'
,
'3号机组'
,
'4号机组'
,
'5号机组'
,
'6号机组'
,
'电厂'
]
/* 根据XDate 找数据*/
let
fmeoneList
=
xData
.
map
(
key
=>
{
let
value
=
0
records
.
forEach
(
item
=>
{
if
(
item
.
jzmc
==
key
)
{
value
=
item
.
fmeone
}
}
)
return
value
}
)
let
fmetwoList
=
xData
.
map
(
key
=>
{
let
value
=
0
records
.
forEach
(
item
=>
{
if
(
item
.
jzmc
==
key
)
{
value
=
item
.
fmetwo
}
}
)
return
value
}
)
let
fmethreeList
=
xData
.
map
(
key
=>
{
let
value
=
0
records
.
forEach
(
item
=>
{
if
(
item
.
jzmc
==
key
)
{
value
=
item
.
fmethree
}
}
)
return
value
}
)
let
fmefourList
=
xData
.
map
(
key
=>
{
let
value
=
0
records
.
forEach
(
item
=>
{
if
(
item
.
jzmc
==
key
)
{
value
=
item
.
fmefour
}
}
)
return
value
}
)
let
option
=
{
tooltip
:
{
trigger
:
'axis'
,
// 触发类型为坐标轴触发
axisPointer
:
{
type
:
'line'
// 指示器类型为线
}
}
,
legend
:
{
data
:
[
'年度KPI'
,
'及格KPI'
,
'优秀KPI'
]
}
,
color
:
[
'#409EFF'
,
'#FF7474'
,
'#86ff65'
],
grid
:
{
top
:
'10%'
,
left
:
'3%'
,
right
:
'6%'
,
bottom
:
'10%'
,
containLabel
:
true
,
}
,
xAxis
:
{
type
:
'category'
,
data
:
xData
}
,
yAxis
:
{
type
:
'value'
}
,
series
:
[{
name
:
'FME1级'
,
type
:
'bar'
,
data
:
fmeoneList
,
}
,
{
name
:
'FME2级'
,
type
:
'bar'
,
data
:
fmetwoList
,
}
,
{
name
:
'FME3级'
,
type
:
'bar'
,
data
:
fmethreeList
,
}
,
{
name
:
'FME4级'
,
type
:
'bar'
,
data
:
fmefourList
,
}
,
]
}
;
this
.
efmetj
.
setOption
(
option
);
}
}
}
<
/script
>
<
style
lang
=
"scss"
scoped
>
.
fmekpiglBody
{
width
:
100
%
;
height
:
calc
(
100
%
-
50
px
);
display
:
grid
;
grid
-
template
-
columns
:
repeat
(
2
,
1
fr
);
grid
-
template
-
rows
:
repeat
(
2
,
1
fr
);
// background-color: #eee;
.
bbItem
{
padding
:
6
px
;
&>
div
{
background
-
color
:
#
fff
;
/* 标题*/
.
bbItemtTitle
{
line
-
height
:
40
px
;
font
-
size
:
16
px
;
color
:
#
666
;
border
-
bottom
:
1
px
solid
#
eee
;
width
:
100
%
;
padding
-
left
:
10
px
;
font
-
weight
:
700
;
}
/* echarts*/
.
bbItemtBody
{
height
:
calc
(
100
%
-
41
px
);
width
:
100
%
;
}
}
}
.
bbItem
:
nth
-
child
(
1
)
{
padding
-
right
:
3
px
;
padding
-
bottom
:
3
px
;
}
.
bbItem
:
nth
-
child
(
2
)
{
padding
-
left
:
3
px
;
padding
-
bottom
:
3
px
;
}
.
bbItem
:
nth
-
child
(
3
)
{
padding
-
right
:
3
px
;
padding
-
top
:
3
px
;
}
.
bbItem
:
nth
-
child
(
4
)
{
padding
-
left
:
3
px
;
padding
-
top
:
3
px
;
}
}
<
/style
>
src/views/fmegl/fmezbpgl/biao/dialog.vue
0 → 100644
View file @
e151f0f6
<
template
>
<DefaultDialog
:app=
'app'
>
<div
slot=
"form"
style=
"display: flex;height: 70vh;"
>
</div>
<div
slot=
"reFooter"
class=
"refooter"
>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"app.showDialog=false"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"save()"
>
保 存
</el-button>
</span>
</div>
</DefaultDialog>
</
template
>
<
script
>
export
default
{
props
:
{
app
:
{
type
:
Object
,
default
:
()
=>
{
return
{}
}
}
},
async
mounted
()
{
},
data
()
{
return
{
}
},
methods
:
{
}
}
</
script
>
<
style
scoped
>
</
style
>
src/views/fmegl/fmezbpgl/tu/index.vue
View file @
e151f0f6
...
...
@@ -42,7 +42,7 @@
</div>
<div
class=
"showYearBodyItem flex1"
:class=
"
{
'bg-green':yearItem.twoywsj
<4
,
'
bg-yellow
'
:yearItem
.
twoywsj
>
=4,
'
bg-yellow
'
:yearItem
.
twoywsj
>
=4
&&
yearItem.twoywsj
<
=
6
,
'
bg-red
'
:yearItem
.
twoywsj
>
6,
}">
<div
class=
"showYearBodyItemTitle"
>
...
...
@@ -70,7 +70,7 @@
</div>
<div
class=
"showYearBodyItem flex1"
:class=
"
{
'bg-yellow':yearItem.wbyrywsj
<
=
12
,
'bg-yellow':yearItem.wbyrywsj
<
=
12
&&
yearItem
.
wbyrywsj
>
=6
,
'bg-green':yearItem.wbyrywsj
<6
,
'
bg-red
'
:yearItem
.
wbyrywsj
>
12,
}">
...
...
@@ -126,7 +126,7 @@
</div>
<div
class=
"showYearBodyItem flex1"
:class=
"
{
'bg-green':monthItem.wbyrywsj
<3
,
'
bg-yellow
'
:monthItem
.
wbyrywsj
>
=3,
'
bg-yellow
'
:monthItem
.
wbyrywsj
>
=3
&&
monthItem.wbyrywsj
<
=
6
,
'
bg-red
'
:monthItem
.
wbyrywsj
>
6,
...
...
src/views/sbjxgl/sbjxxx/addjxzyff.vue
0 → 100644
View file @
e151f0f6
<
template
>
<DefaultDialog
:app=
'app'
>
<el-form
slot=
"form"
ref=
"form"
:model=
"form"
label-width=
"100px"
:rules=
"rules"
>
<!-- 辅助编码-->
<el-row
:gutter=
"20"
:app=
"this"
>
<EditColItem
:required=
"item.required||false"
:readonly=
"item.readonly?true:false "
v-for=
"(item,index) in editColItemList "
:value=
"item.value"
:span=
"item.span"
:label=
"item.label"
:prop=
'item.prop'
:key=
"item.prop"
:type=
"item.type"
:typeConfig=
'item.typeConfig'
:rule=
"item.rule"
/>
</el-row>
</el-form>
<div
slot=
"reFooter"
class=
"refooter"
>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"app.showDialog=false"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"save()"
>
保 存
</el-button>
</span>
</div>
</DefaultDialog>
</
template
>
<
script
>
import
{
editMixin
}
from
'common'
import
sbxx
from
'@/views/auxinput/sbxx'
export
default
{
props
:
{
app
:
{
type
:
Object
,
default
:
()
=>
{
return
{}
}
}
},
mixins
:
[
editMixin
],
async
mounted
()
{
},
data
()
{
return
{
readonly
:
false
,
editColItemList
:
[{
label
:
'设备名称'
,
prop
:
'sbxxName'
,
span
:
12
,
required
:
true
,
type
:
'AuxInput'
,
typeConfig
:
{
isRequest
:
false
,
dynamic
:
true
,
code
:
true
,
component
:
sbxx
,
label
:
'sbxxName'
,
transform
:
{
value
:
'id'
,
label
:
'name'
},
give
(
res
)
{
this
.
form
.
sbxxCode
=
res
.
code
}
}
},
{
label
:
'设备编码'
,
prop
:
'sbxxCode'
,
span
:
12
,
type
:
'input'
,
required
:
true
,
readonly
:
true
},
{
label
:
'检修作业方法'
,
prop
:
'name'
,
span
:
24
,
type
:
'input'
,
required
:
true
,
},
{
label
:
'检修作业编码'
,
prop
:
'code'
,
span
:
24
,
type
:
'input'
,
required
:
true
,
},
]
}
},
methods
:
{
save
()
{
this
.
$refs
[
'form'
].
validate
((
valid
)
=>
{
if
(
valid
)
{
this
.
$emit
(
'save'
,
this
.
form
)
}
})
}
}
}
</
script
>
<
style
scoped
>
</
style
>
src/views/sbjxgl/sbjxxx/edit.vue
View file @
e151f0f6
...
...
@@ -6,6 +6,7 @@
<addgjmx
@
save=
'addgjmxbc'
v-if=
"showDialog&&DialogTitle=='新增工具'"
:app=
"this"
></addgjmx>
<addbpbjmx
@
save=
'savebpbj'
v-if=
"showDialog&&DialogTitle=='新增备品备件'"
:app=
"this"
></addbpbjmx>
<addhcmx
@
save=
'savehc'
v-if=
"showDialog&&DialogTitle=='新增耗材'"
:app=
"this"
></addhcmx>
<addjxzyff
@
save=
'savejxzyff'
v-if=
"showDialog&&DialogTitle=='新增检修作业方法'"
:app=
"this"
/>
<el-row
:gutter=
"20"
:app=
"this"
>
<EditColItem
:required=
"item.required||false"
:readonly=
"item.readonly?true:false "
v-for=
"(item,index) in editColItemList "
:value=
"item.value"
:span=
"item.span"
:label=
"item.label"
...
...
@@ -43,6 +44,18 @@
</editTableForEdit>
</div>
</el-tab-pane>
<!-- 检修作业方法-->
<el-tab-pane
label=
"检修作业方法"
name=
"5"
>
<div
style=
"height: 300px;"
>
<editTableForEdit
:phsxTitle=
'false'
:expandTitle=
'false'
code=
'false'
:AuxButton=
'false'
:indexApp=
'app'
:type=
'type'
ref=
"editTableForEdit1"
:editTableTitle=
'editTableTitle4'
:editTableData=
"editTableData4"
>
<
template
v-if=
"type!='view'"
#
toolbar=
"ctx"
>
<el-button
@
click=
"addjxzyff"
size=
'mini'
type=
"primary"
>
新增检修作业
</el-button>
</
template
>
</editTableForEdit>
</div>
</el-tab-pane>
<el-tab-pane
label=
"完工附件"
name=
"4"
>
<!-- 上传div-->
...
...
@@ -120,6 +133,7 @@
import
addgjmx
from
'./addgjmx.vue'
import
addbpbjmx
from
'./addbpbjmx.vue'
import
addhcmx
from
'./addhcmx.vue'
import
addjxzyff
from
'./addjxzyff.vue'
import
{
autoAttachDownload
,
}
from
"common/src/api/system/dmgSystem.js"
;
...
...
@@ -134,7 +148,8 @@
components
:
{
addgjmx
,
addbpbjmx
,
addhcmx
addhcmx
,
addjxzyff
},
computed
:
{
sfsybpbj
()
{
...
...
@@ -236,10 +251,33 @@
label
:
'型号'
,
prop
:
'xh'
,
}
],
editTableTitle4
:[{
label
:
'设备名称'
,
prop
:
'sbxxName'
,
width
:
'260'
},
{
label
:
'设备编码'
,
prop
:
'sbxxCode'
,
width
:
'260'
},
{
label
:
'检修作业方法'
,
prop
:
'name'
,
width
:
'260'
},
{
label
:
'检修作业方法编码'
,
prop
:
'code'
,
width
:
'260'
}
],
editTableData1
:
[],
editTableData2
:
[],
editTableData3
:
[],
editTableData4
:
[],
/* 调整*/
activeName
:
'1'
,
editColItemList
:
[{
...
...
@@ -411,6 +449,14 @@
})
})
this
.
$post
(
'jxgl/ujxzyff/query'
,
{
mid
:
form
.
id
}).
then
(
res
=>
{
res
.
data
.
records
.
forEach
(
item
=>
{
this
.
editTableData4
.
push
(
item
)
})
})
},
save
()
{
...
...
@@ -436,6 +482,10 @@
{
id
:
'U_BPBJ'
,
records
:
[...
this
.
editTableData2
]
||
[]
},
{
id
:
'U_JXZYFF'
,
records
:
[...
this
.
editTableData4
]
||
[]
}
],
master
:
this
.
form
...
...
@@ -515,7 +565,11 @@
}
})
},
savejxzyff
(
data
){
let
ndata
=
_
.
cloneDeep
(
data
)
this
.
editTableData4
.
push
(
ndata
)
this
.
showDialog
=
false
},
savehc
(
data
)
{
let
ndata
=
_
.
cloneDeep
(
data
)
this
.
editTableData3
.
push
(
ndata
)
...
...
@@ -542,6 +596,10 @@
addhcmx
()
{
this
.
DialogTitle
=
'新增耗材'
this
.
showDialog
=
true
},
addjxzyff
(){
this
.
DialogTitle
=
'新增检修作业方法'
this
.
showDialog
=
true
}
}
}
...
...
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