Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
M
mes-ui
Project
Project
Details
Activity
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
mes
mes-ui
Commits
fdfe300a
Commit
fdfe300a
authored
Sep 10, 2025
by
谭俊忻
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix: 完成报工统计分析表完成修改
parent
33bfff04
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
566 additions
and
485 deletions
+566
-485
statistAnaly.js
src/api/mes/proTable/statistAnaly.js
+70
-34
index.vue
src/views/mes/proTable/knifeMoldUsage/index.vue
+9
-9
index.vue
src/views/mes/proTable/statistAnaly/index.vue
+487
-442
No files found.
src/api/mes/proTable/statistAnaly.js
View file @
fdfe300a
...
...
@@ -26,15 +26,15 @@ export function getListByUser(query) {
method
:
"get"
,
params
:
query
});
}
// 生产报工记录:统计方式车间
}
// 生产报工记录:统计方式车间
export
function
getListByWorkshop
(
query
)
{
return
request
({
url
:
'/report/pro/feedback/getListByWorkshop'
,
method
:
"get"
,
params
:
query
});
}
}
// 生产报工记录:统计方式工单
export
function
getListByWorkOrder
(
query
)
{
...
...
@@ -43,25 +43,25 @@ export function getListByWorkOrder(query) {
method
:
"get"
,
params
:
query
});
}
}
// 生产报工记录:统计方式工作中心
// 生产报工记录:统计方式工作中心
export
function
getListByWorkstation
(
query
)
{
return
request
({
url
:
'/report/pro/feedback/getListByWorkstation'
,
method
:
"get"
,
params
:
query
});
}
}
// 生产报工记录:统计方式工作单元
// 生产报工记录:统计方式工作单元
export
function
getListByWorkunit
(
query
)
{
return
request
({
url
:
'/report/pro/feedback/getListByWorkunit'
,
method
:
"get"
,
params
:
query
});
}
}
// 生产报工记录:统计方式不合格原因
export
function
getListByDefect
(
query
)
{
...
...
@@ -71,3 +71,39 @@ export function getListByDefect(query) {
params
:
query
});
}
// 生产报工报表:计划达成率统计表
export
function
getAchievementRateApi
(
query
)
{
return
request
({
url
:
'/report/pro/feedback/getAchievementRate'
,
method
:
"get"
,
params
:
query
});
}
// 生产报工报表:效率统计表
export
function
getEfficiencyRateApi
(
query
)
{
return
request
({
url
:
'/report/pro/feedback/getEfficiencyRate'
,
method
:
"get"
,
params
:
query
});
}
// 生产报工报表:产品不良分析统计表
export
function
getFeedDefRateApi
(
query
)
{
return
request
({
url
:
'/report/pro/feedback/getFeedDefRate'
,
method
:
"get"
,
params
:
query
});
}
// 生产报工报表:生产力统计表
export
function
getProductivityRateApi
(
query
)
{
return
request
({
url
:
'/report/pro/feedback/getProductivityRate'
,
method
:
"get"
,
params
:
query
});
}
src/views/mes/proTable/knifeMoldUsage/index.vue
View file @
fdfe300a
...
...
@@ -36,7 +36,7 @@
</el-row>
<el-table
v-loading=
"loading"
:max-height=
"tableHeight"
:data=
"tbodys"
>
<el-table-column
:label=
"item.label"
align=
"center"
:prop=
"item.value"
:width=
"item.width"
v-for=
"(item, index) in theaders"
:key=
"index"
>
:min-width=
"item.minWidth"
v-for=
"(item, index) in theaders"
:key=
"index"
>
<template
slot-scope=
"scope"
>
<span
v-if=
"item.value == 'operationType'"
>
{{
operationTypeData
[
scope
.
row
[
item
.
value
]]
}}
</span>
<span
v-else
>
{{
scope
.
row
[
item
.
value
]
}}
</span>
...
...
@@ -60,8 +60,8 @@
</el-col> -->
</el-row>
<el-table
v-loading=
"loading"
:max-height=
"tableHeight"
:data=
"tbodys1"
>
<el-table-column
:label=
"item.label"
align=
"center"
:prop=
"item.value"
:width=
"item.width"
v-for=
"(item, index) in theaders1"
:key=
"index"
>
<el-table-column
:label=
"item.label"
align=
"center"
:prop=
"item.value"
:width=
"item.width"
:
min-width=
"item.minWidth"
v-for=
"(item, index) in theaders1"
:
key=
"index"
>
<
template
slot-scope=
"scope"
>
<span
v-if=
"item.value == 'warning10' || item.value == 'warning30'"
>
{{
scope
.
row
[
item
.
value
]
?
'是'
:
'否'
}}
</span>
...
...
@@ -189,23 +189,23 @@ export default {
let
api
=
getListApi
if
(
Number
(
this
.
tabIndex
)
===
0
)
{
this
.
theaders
=
[
{
label
:
'物料编码'
,
value
:
'sapItemCode'
,
w
idth
:
'200px'
},
{
label
:
'刀模SN'
,
value
:
'toolCode'
,
width
:
'15
0px'
},
{
label
:
'物料编码'
,
value
:
'sapItemCode'
,
minW
idth
:
'200px'
},
{
label
:
'刀模SN'
,
value
:
'toolCode'
,
minWidth
:
'12
0px'
},
{
label
:
'履历状态'
,
value
:
'operationType'
,
width
:
'120px'
},
{
label
:
'关联单据类型'
,
value
:
'orderType'
,
width
:
'120px'
},
{
label
:
'增减寿命值(次)'
,
value
:
'quantityDifference'
,
width
:
'140px'
},
{
label
:
'剩余次数'
,
value
:
'lifeTime'
,
width
:
'80px'
},
{
label
:
'所在位置'
,
value
:
'location'
,
width
:
'100px'
},
{
label
:
'操作人'
,
value
:
'createBy'
,
width
:
'120px'
},
{
label
:
'操作时间'
,
value
:
'createTime'
,
width
:
'1
6
0px'
},
{
label
:
'操作时间'
,
value
:
'createTime'
,
width
:
'1
8
0px'
},
]
}
if
(
Number
(
this
.
tabIndex
)
===
1
)
{
if
(
this
.
statisisType
===
'物料维保预警统计'
)
{
api
=
getMaterialMaintenanceListApi
this
.
theaders1
=
[
{
label
:
'物料编码'
,
value
:
'sapItemCode'
,
w
idth
:
'200px'
},
{
label
:
'物料名称'
,
value
:
'itemName'
,
w
idth
:
'200px'
},
{
label
:
'物料编码'
,
value
:
'sapItemCode'
,
minW
idth
:
'200px'
},
{
label
:
'物料名称'
,
value
:
'itemName'
,
minW
idth
:
'200px'
},
{
label
:
'SN数量'
,
value
:
'sum'
,
width
:
'100px'
},
{
label
:
'寿命低于30%数量'
,
value
:
'warning30Sum'
,
width
:
'140px'
},
{
label
:
'寿命低于30%占比'
,
value
:
'warning30Proportion'
,
width
:
'140px'
},
...
...
@@ -234,7 +234,7 @@ export default {
api
=
getSnMaintenanceListApi
}
else
if
(
this
.
statisisType
===
'SN生命周期统计'
)
{
this
.
theaders1
=
[
{
label
:
'刀模SN'
,
value
:
'toolCode'
,
width
:
'150px'
},
{
label
:
'刀模SN'
,
value
:
'toolCode'
},
{
label
:
'创建时间'
,
value
:
'createTime'
,
width
:
'140px'
},
{
label
:
'初始寿命'
,
value
:
'initialLifeTime'
,
width
:
'120px'
},
{
label
:
'累计使用次数'
,
value
:
'countSum'
,
width
:
'140px'
},
...
...
src/views/mes/proTable/statistAnaly/index.vue
View file @
fdfe300a
<
template
>
<div
class=
"app-container"
>
<el-form
:model=
"queryParams"
@
submit
.
native
.
prevent
ref=
"queryForm"
size=
"small"
:inline=
"true"
v-show=
"showSearch"
label-width=
"100px"
>
<el-form
:model=
"queryParams"
@
submit
.
native
.
prevent
ref=
"queryForm"
size=
"small"
:inline=
"true"
v-show=
"showSearch"
label-width=
"100px"
>
<el-form-item
:label=
"'工单类型'"
prop=
"workorderType"
>
<el-select
v-model=
"queryParams.workorderType"
clearable
:placeholder=
"'请选择状态'"
>
<el-option
v-for=
"dict in dict.type.mes_workorder_type"
:key=
"dict.value"
:label=
"dict.label"
<el-select
v-model=
"queryParams.workorderType"
clearable
:placeholder=
"'请选择状态'"
>
<el-option
v-for=
"dict in dict.type.mes_workorder_type"
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
>
</el-option>
</el-select>
...
...
@@ -20,47 +19,34 @@
<el-input
v-model=
"queryParams.productCode"
:placeholder=
"'请输入产品编码'"
/>
</el-form-item>
<el-form-item
:label=
"'产品名称'"
prop=
"productName"
>
<el-input
v-model=
"queryParams.productName"
>
<el-button
slot=
"append"
icon=
"el-icon-search"
@
click=
"$refs['ItemSelectRef'].showFlag = true"
></el-button>
<el-input
v-model=
"queryParams.productName"
>
<el-button
slot=
"append"
icon=
"el-icon-search"
@
click=
"$refs['ItemSelectRef'].showFlag = true"
></el-button>
</el-input>
</el-form-item>
<el-form-item
:label=
"'工序'"
prop=
"processName"
>
<el-input
v-model=
"queryParams.processName"
>
<el-input
v-model=
"queryParams.processName"
>
<el-button
slot=
"append"
@
click=
"$refs.brSelectpro.showFlag = true"
icon=
"el-icon-search"
></el-button>
</el-input>
</el-form-item>
<el-form-item
:label=
"'车间'"
prop=
"workshopName"
>
<el-input
v-model=
"queryParams.workshopName"
>
<el-input
v-model=
"queryParams.workshopName"
>
<el-button
slot=
"append"
@
click=
"$refs.workshopSelectRef.showFlag = true"
icon=
"el-icon-search"
></el-button>
</el-input>
</el-form-item>
<el-form-item
:label=
"'工作中心'"
prop=
"workstationName"
>
<el-input
v-model=
"queryParams.workstationName"
>
<el-button
slot=
"append"
icon=
"el-icon-search"
@
click=
"$refs['WorkstationSelect'].showFlag = true"
></el-button>
<el-input
v-model=
"queryParams.workstationName"
>
<el-button
slot=
"append"
icon=
"el-icon-search"
@
click=
"$refs['WorkstationSelect'].showFlag = true"
></el-button>
</el-input>
</el-form-item>
<el-form-item
:label=
"'工作单元'"
prop=
"workunitId"
>
<el-input
v-model=
"queryParams.workunitName"
>
<el-button
slot=
"append"
icon=
"el-icon-search"
@
click=
"$refs['WorkunitSelect'].showFlag = true"
></el-button>
<el-button
slot=
"append"
icon=
"el-icon-search"
@
click=
"$refs['WorkunitSelect'].showFlag = true"
></el-button>
</el-input>
</el-form-item>
<el-form-item
:label=
"'报工人员'"
prop=
"workunitId"
>
<el-input
v-model=
"queryParams.nickName"
>
<el-button
slot=
"append"
icon=
"el-icon-search"
@
click=
"$refs.userSelect.showFlag = true"
></el-button>
<el-button
slot=
"append"
icon=
"el-icon-search"
@
click=
"$refs.userSelect.showFlag = true"
></el-button>
</el-input>
</el-form-item>
<el-form-item
:label=
"'报工时间'"
>
...
...
@@ -68,103 +54,90 @@
:start-placeholder=
"'开始日期'"
:end-placeholder=
"'结束日期'"
></el-date-picker>
</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-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-tabs
type=
"border-card"
@
tab-click=
"tabClick"
>
<el-tab-pane
:label=
"'明细'"
>
<el-row
style=
"margin-bottom: 10px;"
>
<el-button
type=
"primary"
size=
"mini"
@
click=
"handleExport"
>
{{
'导出'
}}
</el-button>
<el-button
type=
"primary"
size=
"mini"
@
click=
"handleExport"
>
{{
'导出'
}}
</el-button>
</el-row>
<el-table
v-loading=
"loading"
:max-height=
"tableHeight"
:data=
"tbodys"
>
<el-table-column
:label=
"item.label"
align=
"center"
:prop=
"item.value"
:width=
"item.width"
v-for=
"(item, index) in theaders"
:key=
"index"
>
<el-table
v-loading=
"loading"
:max-height=
"tableHeight"
:data=
"tbodys"
>
<el-table-column
:label=
"item.label"
align=
"center"
:prop=
"item.value"
:width=
"item.width"
v-for=
"(item, index) in theaders"
:key=
"index"
>
<template
slot-scope=
"scope"
>
<dict-tag
:options=
"dict.type.mes_workorder_type"
:value=
"scope.row.workorderType"
v-if=
"item.value==='workorderType'"
/>
<div
v-else
>
{{
item
.
value
===
'machineTime'
?
scope
.
row
[
item
.
value
]
?
Number
(
scope
.
row
[
item
.
value
]).
toFixed
(
2
)
:
scope
.
row
[
item
.
value
]
:
scope
.
row
[
item
.
value
]
}}
</div>
<dict-tag
:options=
"dict.type.mes_workorder_type"
:value=
"scope.row.workorderType"
v-if=
"item.value === 'workorderType'"
/>
<div
v-else
>
{{
item
.
value
===
'machineTime'
?
scope
.
row
[
item
.
value
]
?
Number
(
scope
.
row
[
item
.
value
]).
toFixed
(
2
)
:
scope
.
row
[
item
.
value
]
:
scope
.
row
[
item
.
value
]
}}
</div>
</
template
>
</el-table-column>
</el-table>
<pagination
v-show=
"total>0"
:total=
"total"
:page
.
sync=
"queryParams.pageNum"
:limit
.
sync=
"queryParams.pageSize"
@
pagination=
"getList"
/>
<pagination
v-show=
"total > 0"
:total=
"total"
:page
.
sync=
"queryParams.pageNum"
:limit
.
sync=
"queryParams.pageSize"
@
pagination=
"getList"
/>
</el-tab-pane>
<el-tab-pane
:label=
"'统计'"
>
<el-row
align=
"center"
style=
"line-height: 40px;"
>
<el-col
:span=
"7"
>
{{'统计方式'}}
<el-select
v-model=
"statisisType"
clearable
:placeholder=
"'请选择统计方式'"
>
<el-option
v-for=
"item in statisisList"
:key=
"item"
:label=
"item"
:value=
"item"
>
<el-col
:span=
"7"
>
{{ '统计内容' }}
<el-select
v-model=
"tableType"
clearable
:placeholder=
"'请选择统计内容'"
>
<el-option
v-for=
"item in statisisOption"
:key=
"item"
:label=
"item"
:value=
"item"
>
</el-option>
</el-select>
</el-col>
<el-col
:span=
"3"
>
<el-button
type=
"primary"
icon=
"el-icon-search"
size=
"mini"
@
click=
"handleQuery"
>
{{'查询'}}
</el-button>
<el-button
type=
"primary"
size=
"mini"
@
click=
"handleExport"
>
{{'导出'}}
</el-button>
<el-col
:span=
"7"
>
{{ '范围样式' }}
<el-select
v-model=
"statisisType"
clearable
:placeholder=
"'请选择范围样式'"
>
<el-option
v-for=
"(item, index) in statisisList"
:key=
"index"
:label=
"item.label"
:value=
"item.value"
>
</el-option>
</el-select>
</el-col>
<el-col
:span=
"4"
>
<el-button
type=
"primary"
icon=
"el-icon-search"
size=
"mini"
@
click=
"handleQuery"
>
{{ '查询' }}
</el-button>
<el-button
type=
"primary"
size=
"mini"
@
click=
"handleExport"
>
{{ '导出' }}
</el-button>
</el-col>
</el-row>
<el-table
v-loading=
"loading"
:max-height=
"tableHeight"
:data=
"tbodys1"
>
<el-table-column
:label=
"item.label"
align=
"center"
:prop=
"item.value"
v-for=
"(item, index) in theaders1"
:key=
"index"
>
<el-table-column
:label=
"item.label"
align=
"center"
:prop=
"item.value"
v-for=
"(item, index) in theaders1"
:key=
"index"
>
<
template
slot-scope=
"scope"
>
<dict-tag
:options=
"dict.type.mes_workorder_type"
:value=
"scope.row.workorderType"
v-if=
"item.value==='workorderType'"
/>
<div
v-else
>
{{
item
.
value
===
'machineTime'
?
scope
.
row
[
item
.
value
]
?
Number
(
scope
.
row
[
item
.
value
]).
toFixed
(
2
)
:
scope
.
row
[
item
.
value
]
:
scope
.
row
[
item
.
value
]
}}
</div>
<dict-tag
:options=
"dict.type.mes_workorder_type"
:value=
"scope.row.workorderType"
v-if=
"item.value === 'workorderType'"
/>
<div
v-else
>
{{
item
.
value
===
'machineTime'
?
scope
.
row
[
item
.
value
]
?
Number
(
scope
.
row
[
item
.
value
]).
toFixed
(
2
)
:
scope
.
row
[
item
.
value
]
:
scope
.
row
[
item
.
value
]
}}
</div>
</
template
>
</el-table-column>
</el-table>
<pagination
v-show=
"total>0"
:total=
"total"
:page
.
sync=
"queryParams.pageNum"
:limit
.
sync=
"queryParams.pageSize"
@
pagination=
"getList"
/>
<pagination
v-show=
"total > 0"
:total=
"total"
:page
.
sync=
"queryParams.pageNum"
:limit
.
sync=
"queryParams.pageSize"
@
pagination=
"getList"
/>
</el-tab-pane>
</el-tabs>
<ItemSelect
ref=
"ItemSelectRef"
@
onSelected=
"onItemSelect"
/>
<workshopSelect
ref=
"workshopSelectRef"
showModal
@
onSelected=
"onworkshopSelect"
/>
<WorkuintSelect
ref=
"WorkunitSelect"
showModal
@
onSelected=
"onWorkunitSelect"
/>
<WorkstationSelect
ref=
"WorkstationSelect"
showModal
@
onSelected=
"onWorkstationSelect"
/>
<ProcessSelect
ref=
"brSelectpro"
showModal
@
onSelected=
"onBrandProcess"
></ProcessSelect>
<ItemSelect
ref=
"ItemSelectRef"
@
onSelected=
"onItemSelect"
/>
<workshopSelect
ref=
"workshopSelectRef"
showModal
@
onSelected=
"onworkshopSelect"
/>
<WorkuintSelect
ref=
"WorkunitSelect"
showModal
@
onSelected=
"onWorkunitSelect"
/>
<WorkstationSelect
ref=
"WorkstationSelect"
showModal
@
onSelected=
"onWorkstationSelect"
/>
<ProcessSelect
ref=
"brSelectpro"
showModal
@
onSelected=
"onBrandProcess"
></ProcessSelect>
<UserSingleSelect
ref=
"userSelect"
showModal
@
onSelected=
"onUserSelected"
></UserSingleSelect>
</div>
</template>
</template>
<
script
>
<
script
>
import
dayjs
from
'dayjs'
import
{
getList
,
getListByProcess
,
getListByUser
,
getListByWorkshop
,
getListByWorkOrder
,
getListByWorkstation
,
getListByWorkunit
}
from
"@/api/mes/proTable/statistAnaly"
;
import
ProcessSelect
from
"@/components/process/taskSelectSingle.vue"
;
import
ItemSelect
from
"@/components/itemSelect/single.vue"
;
import
workshopSelect
from
"@/components/workshopSelect/single.vue"
;
import
WorkuintSelect
from
"@/components/workunitSelect/single.vue"
;
import
WorkstationSelect
from
"@/components/workstationSelect/simpletableSingle.vue"
import
UserSingleSelect
from
"@/components/userSelect/single1.vue"
import
{
getList
,
getListByProcess
,
getListByUser
,
getListByWorkshop
,
getListByWorkOrder
,
getListByWorkstation
,
getListByWorkunit
,
getAchievementRateApi
,
getEfficiencyRateApi
,
getFeedDefRateApi
,
getProductivityRateApi
}
from
"@/api/mes/proTable/statistAnaly"
;
import
ProcessSelect
from
"@/components/process/taskSelectSingle.vue"
;
import
ItemSelect
from
"@/components/itemSelect/single.vue"
;
import
workshopSelect
from
"@/components/workshopSelect/single.vue"
;
import
WorkuintSelect
from
"@/components/workunitSelect/single.vue"
;
import
WorkstationSelect
from
"@/components/workstationSelect/simpletableSingle.vue"
import
UserSingleSelect
from
"@/components/userSelect/single1.vue"
export
default
{
export
default
{
name
:
"ScheduleSetupRule"
,
components
:
{
UserSingleSelect
,
ProcessSelect
,
ItemSelect
,
workshopSelect
,
WorkuintSelect
,
WorkstationSelect
},
components
:
{
UserSingleSelect
,
ProcessSelect
,
ItemSelect
,
workshopSelect
,
WorkuintSelect
,
WorkstationSelect
},
dicts
:
[
"mes_workorder_type"
,
],
...
...
@@ -194,8 +167,20 @@ import dayjs from 'dayjs'
theaders1
:
[],
// 弹出层标题
title
:
""
,
statisisType
:
null
,
statisisList
:
[
'工单'
,
'车间'
,
'工作中心'
,
'工作单元'
,
'工序'
,
'人员'
],
statisisType
:
1
,
// statisisList: ['工单', '车间', '工作中心', '工作单元', '工序', '人员'],
statisisList
:
[{
label
:
'工作单元'
,
value
:
1
},
{
label
:
'工作中心'
,
value
:
2
},
{
label
:
'车间'
,
value
:
3
}],
tableType
:
'计划达成统计表'
,
statisisOption
:
[
'计划达成统计表'
,
'效率统计表'
,
'生产力统计表'
,
'产品不良分析统计表'
],
// 是否显示弹出层
open
:
false
,
tableHeight
:
0
,
...
...
@@ -230,8 +215,8 @@ import dayjs from 'dayjs'
form
:
{},
};
},
mounted
()
{
this
.
$nextTick
(()
=>
{
mounted
()
{
this
.
$nextTick
(()
=>
{
this
.
_resizeHandler
()
})
this
.
_resizeHandler
=
()
=>
{
...
...
@@ -252,30 +237,30 @@ import dayjs from 'dayjs'
},
watch
:
{
tabIndex
:
{
handler
(
val
)
{
if
(
Number
(
val
)
===
0
)
{
handler
(
val
)
{
if
(
Number
(
val
)
===
0
)
{
this
.
theaders
=
[
{
label
:
'工单类型'
,
value
:
'workorderType'
,
width
:
'80px'
},
{
label
:
'生产工单'
,
value
:
'workorderCode'
,
width
:
'140px'
},
{
label
:
'产品编码'
,
value
:
'productCode'
,
width
:
'120px'
},
{
label
:
'产品名称'
,
value
:
'productName'
,
width
:
'240px'
},
{
label
:
'工序任务'
,
value
:
'taskCode'
,
width
:
'120px'
},
{
label
:
'工序名称'
,
value
:
'processName'
,
width
:
'80px'
},
{
label
:
'工作中心编码'
,
value
:
'workstationCode'
,
width
:
'100px'
},
{
label
:
'工作中心名称'
,
value
:
'workstationName'
,
width
:
'140px'
},
{
label
:
'工作单元编码'
,
value
:
'workunitCode'
,
width
:
'100px'
},
{
label
:
'工作单元名称'
,
value
:
'workunitName'
,
width
:
'280px'
},
{
label
:
'报工人员编码'
,
value
:
'userName'
,
width
:
'140px'
},
{
label
:
'报工人员名称'
,
value
:
'nickName'
,
width
:
'140px'
},
{
label
:
'派工数量'
,
value
:
'quantity'
,
width
:
'80px'
},
{
label
:
'报工数量'
,
value
:
'quantityFeedback'
,
width
:
'80px'
},
{
label
:
'合格数量'
,
value
:
'quantityQualify'
,
width
:
'80px'
},
{
label
:
'不合格数量'
,
value
:
'quantityUnqualify'
,
width
:
'90px'
},
{
label
:
'不合格原因'
,
value
:
'abnormalReason'
,
width
:
'90px'
},
{
label
:
'标准工时'
,
value
:
'stdWorkingTime'
,
width
:
'80px'
},
{
label
:
'实际工时'
,
value
:
'machineTime'
,
width
:
'80px'
},
{
label
:
'计划完成时间'
,
value
:
'scheduleEndDate'
,
width
:
'100px'
},
{
label
:
'报工时间'
,
value
:
'feedbackTime'
,
width
:
'100px'
}
{
label
:
'工单类型'
,
value
:
'workorderType'
,
width
:
'80px'
},
{
label
:
'生产工单'
,
value
:
'workorderCode'
,
width
:
'140px'
},
{
label
:
'产品编码'
,
value
:
'productCode'
,
width
:
'120px'
},
{
label
:
'产品名称'
,
value
:
'productName'
,
width
:
'240px'
},
{
label
:
'工序任务'
,
value
:
'taskCode'
,
width
:
'120px'
},
{
label
:
'工序名称'
,
value
:
'processName'
,
width
:
'80px'
},
{
label
:
'工作中心编码'
,
value
:
'workstationCode'
,
width
:
'100px'
},
{
label
:
'工作中心名称'
,
value
:
'workstationName'
,
width
:
'140px'
},
{
label
:
'工作单元编码'
,
value
:
'workunitCode'
,
width
:
'100px'
},
{
label
:
'工作单元名称'
,
value
:
'workunitName'
,
width
:
'280px'
},
{
label
:
'报工人员编码'
,
value
:
'userName'
,
width
:
'140px'
},
{
label
:
'报工人员名称'
,
value
:
'nickName'
,
width
:
'140px'
},
{
label
:
'派工数量'
,
value
:
'quantity'
,
width
:
'80px'
},
{
label
:
'报工数量'
,
value
:
'quantityFeedback'
,
width
:
'80px'
},
{
label
:
'合格数量'
,
value
:
'quantityQualify'
,
width
:
'80px'
},
{
label
:
'不合格数量'
,
value
:
'quantityUnqualify'
,
width
:
'90px'
},
{
label
:
'不合格原因'
,
value
:
'abnormalReason'
,
width
:
'90px'
},
{
label
:
'标准工时'
,
value
:
'stdWorkingTime'
,
width
:
'80px'
},
{
label
:
'实际工时'
,
value
:
'machineTime'
,
width
:
'80px'
},
{
label
:
'计划完成时间'
,
value
:
'scheduleEndDate'
,
width
:
'100px'
},
{
label
:
'报工时间'
,
value
:
'feedbackTime'
,
width
:
'100px'
}
]
this
.
handleQuery
()
}
...
...
@@ -284,7 +269,7 @@ import dayjs from 'dayjs'
}
},
methods
:
{
onUserSelected
(
row
)
{
onUserSelected
(
row
)
{
if
(
row
!=
undefined
)
{
console
.
log
(
'rrr'
,
row
)
this
.
queryParams
.
nickName
=
row
.
nickName
;
...
...
@@ -295,17 +280,17 @@ import dayjs from 'dayjs'
this
.
queryParams
.
workstationName
=
row
.
workstationName
;
}
},
onWorkunitSelect
(
row
)
{
onWorkunitSelect
(
row
)
{
if
(
row
!=
undefined
)
{
this
.
queryParams
.
workunitName
=
row
.
workunitName
;
}
},
onworkshopSelect
(
row
)
{
onworkshopSelect
(
row
)
{
if
(
row
!=
undefined
)
{
this
.
queryParams
.
workshopName
=
row
.
workshopName
;
}
},
tabClick
(
val
)
{
tabClick
(
val
)
{
console
.
log
(
'this.tabIndex'
,
this
.
tabIndex
,
val
)
this
.
tabIndex
=
val
.
index
this
.
$nextTick
(()
=>
{
...
...
@@ -329,70 +314,117 @@ import dayjs from 'dayjs'
}
let
api
=
getList
if
(
Number
(
this
.
tabIndex
)
===
1
)
{
if
(
this
.
statisisType
===
'工单'
)
{
api
=
getListByWorkOrder
if
(
this
.
tableType
===
'计划达成统计表'
)
{
api
=
getAchievementRateApi
this
.
theaders1
=
[
{
label
:
'工单编码'
,
value
:
'workorderCode'
},
{
label
:
'工单名称'
,
value
:
'workorderName'
},
{
label
:
'报工数量'
,
value
:
'quantityFeedback'
},
{
label
:
'合格数量'
,
value
:
'quantityQualify'
},
{
label
:
'不合格数量'
,
value
:
'quantityUnqualify'
},
{
label
:
'合格率'
,
value
:
'qualificationRate'
}
{
label
:
'任务条数'
,
value
:
'taskWorkunitCount'
},
{
label
:
'任务完工条数'
,
value
:
'taskWorkunitFinshed'
},
{
label
:
'达成任务率'
,
value
:
'taskWorkunitCountRate'
},
{
label
:
'任务计划数'
,
value
:
'quantitySum'
},
{
label
:
'实际报工数'
,
value
:
'feedQuantity'
},
{
label
:
'达成任务数率'
,
value
:
'feedQuantityRate'
}
]
}
else
if
(
this
.
statisisType
===
'车间'
){
}
else
if
(
this
.
tableType
===
'效率统计表'
)
{
api
=
getEfficiencyRateApi
this
.
theaders1
=
[
{
label
:
'车间编号'
,
value
:
'workshopCode'
},
{
label
:
'车间名称'
,
value
:
'workshopName'
},
{
label
:
'报工数量'
,
value
:
'quantityFeedback'
},
{
label
:
'合格数量'
,
value
:
'quantityQualify'
},
{
label
:
'不合格数量'
,
value
:
'quantityUnqualify'
},
{
label
:
'合格率'
,
value
:
'qualificationRate'
}
{
label
:
'计划工时(毫秒)'
,
value
:
'planWorkTime'
},
{
label
:
'延误工时(毫秒)'
,
value
:
'delayWorkTime'
},
{
label
:
'投入工时(毫秒)'
,
value
:
'workTime'
},
{
label
:
'产出工时(毫秒)'
,
value
:
'feedWorkTime'
},
{
label
:
'效率值'
,
value
:
'efficiencyRate'
}
]
api
=
getListByWorkshop
}
else
if
(
this
.
statisisType
===
'工作中心'
){
}
else
if
(
this
.
tableType
===
'生产力统计表'
)
{
api
=
getProductivityRateApi
this
.
theaders1
=
[
{
label
:
'工作中心编号'
,
value
:
'workstationCode'
},
{
label
:
'工作中心名称'
,
value
:
'workstationName'
},
{
label
:
'报工数量'
,
value
:
'quantityFeedback'
},
{
label
:
'合格数量'
,
value
:
'quantityQualify'
},
{
label
:
'不合格数量'
,
value
:
'quantityUnqualify'
},
{
label
:
'合格率'
,
value
:
'qualificationRate'
}
{
label
:
'计划工时(毫秒)'
,
value
:
'planWorkTime'
},
{
label
:
'延误工时(毫秒)'
,
value
:
'delayWorkTime'
},
{
label
:
'投入工时(毫秒)'
,
value
:
'workTime'
},
{
label
:
'产出工时(毫秒)'
,
value
:
'feedWorkTime'
},
{
label
:
'效率值'
,
value
:
'efficiencyRate'
}
]
api
=
getListByWorkstation
}
else
if
(
this
.
statisisType
===
'工作单元'
){
}
else
if
(
this
.
tableType
===
'产品不良分析统计表'
)
{
api
=
getFeedDefRateApi
this
.
theaders1
=
[
{
label
:
'工作单元编码'
,
value
:
'workunitCode'
},
{
label
:
'工作单元名称'
,
value
:
'workunitName'
},
{
label
:
'报工数量'
,
value
:
'quantityFeedback'
},
{
label
:
'合格数量'
,
value
:
'quantityQualify'
},
{
label
:
'不合格数量'
,
value
:
'quantityUnqualify'
},
{
label
:
'合格率'
,
value
:
'qualificationRate'
}
{
label
:
'不良名称与编码'
,
value
:
'defectCodes'
},
{
label
:
'任务条数'
,
value
:
'taskWorkunitCount'
},
{
label
:
'不良任务工单条数'
,
value
:
'taskWorkunitDefCount'
},
{
label
:
'任务不良发生率'
,
value
:
'taskWorkunitCountRate'
},
{
label
:
'不良条数'
,
value
:
'feedDefSum'
},
{
label
:
'任务数量'
,
value
:
'quantitySum'
},
{
label
:
'不良数量'
,
value
:
'quantityUnSum'
},
{
label
:
'数量不良率'
,
value
:
'quantityRate'
}
]
api
=
getListByWorkunit
}
else
if
(
this
.
statisisType
===
'工序'
){
this
.
theaders1
=
[
{
label
:
'工序编码'
,
value
:
'processCode'
},
{
label
:
'工序名称'
,
value
:
'processName'
},
{
label
:
'报工数量'
,
value
:
'quantityFeedback'
},
{
label
:
'合格数量'
,
value
:
'quantityQualify'
},
{
label
:
'不合格数量'
,
value
:
'quantityUnqualify'
},
{
label
:
'合格率'
,
value
:
'qualificationRate'
}
]
api
=
getListByProcess
}
else
if
(
this
.
statisisType
===
'人员'
){
this
.
theaders1
=
[
{
label
:
'报工人员编码'
,
value
:
'userName'
},
{
label
:
'报工人员名称'
,
value
:
'nickName'
},
{
label
:
'报工数量'
,
value
:
'quantityFeedback'
},
{
label
:
'合格数量'
,
value
:
'quantityQualify'
},
{
label
:
'不合格数量'
,
value
:
'quantityUnqualify'
},
{
label
:
'合格率'
,
value
:
'qualificationRate'
}
]
api
=
getListByUser
}
// if (this.statisisType === '工单') {
// api = getListByWorkOrder
// this.theaders1 = [
// { label: '工单编码', value: 'workorderCode' },
// { label: '工单名称', value: 'workorderName' },
// { label: '报工数量', value: 'quantityFeedback' },
// { label: '合格数量', value: 'quantityQualify' },
// { label: '不合格数量', value: 'quantityUnqualify' },
// { label: '合格率', value: 'qualificationRate' }
// ]
// } else if (this.statisisType === '车间') {
// this.theaders1 = [
// { label: '车间编号', value: 'workshopCode' },
// { label: '车间名称', value: 'workshopName' },
// { label: '报工数量', value: 'quantityFeedback' },
// { label: '合格数量', value: 'quantityQualify' },
// { label: '不合格数量', value: 'quantityUnqualify' },
// { label: '合格率', value: 'qualificationRate' }
// ]
// api = getListByWorkshop
// } else if (this.statisisType === '工作中心') {
// this.theaders1 = [
// { label: '工作中心编号', value: 'workstationCode' },
// { label: '工作中心名称', value: 'workstationName' },
// { label: '报工数量', value: 'quantityFeedback' },
// { label: '合格数量', value: 'quantityQualify' },
// { label: '不合格数量', value: 'quantityUnqualify' },
// { label: '合格率', value: 'qualificationRate' }
// ]
// api = getListByWorkstation
// } else if (this.statisisType === '工作单元') {
// this.theaders1 = [
// { label: '工作单元编码', value: 'workunitCode' },
// { label: '工作单元名称', value: 'workunitName' },
// { label: '报工数量', value: 'quantityFeedback' },
// { label: '合格数量', value: 'quantityQualify' },
// { label: '不合格数量', value: 'quantityUnqualify' },
// { label: '合格率', value: 'qualificationRate' }
// ]
// api = getListByWorkunit
// } else if (this.statisisType === '工序') {
// this.theaders1 = [
// { label: '工序编码', value: 'processCode' },
// { label: '工序名称', value: 'processName' },
// { label: '报工数量', value: 'quantityFeedback' },
// { label: '合格数量', value: 'quantityQualify' },
// { label: '不合格数量', value: 'quantityUnqualify' },
// { label: '合格率', value: 'qualificationRate' }
// ]
// api = getListByProcess
// } else if (this.statisisType === '人员') {
// this.theaders1 = [
// { label: '报工人员编码', value: 'userName' },
// { label: '报工人员名称', value: 'nickName' },
// { label: '报工数量', value: 'quantityFeedback' },
// { label: '合格数量', value: 'quantityQualify' },
// { label: '不合格数量', value: 'quantityUnqualify' },
// { label: '合格率', value: 'qualificationRate' }
// ]
// api = getListByUser
// }
}
let
params
=
this
.
queryParams
;
if
(
Number
(
this
.
tabIndex
)
===
1
)
{
params
=
{
...
this
.
queryParams
,
checkIndex
:
this
.
statisisType
}
}
api
(
this
.
queryP
arams
).
then
(
response
=>
{
api
(
p
arams
).
then
(
response
=>
{
if
(
Number
(
this
.
tabIndex
)
===
1
)
{
this
.
tbodys1
=
response
.
rows
}
...
...
@@ -409,13 +441,13 @@ import dayjs from 'dayjs'
this
.
queryParams
.
pageNum
=
1
;
this
.
getList
();
},
onBrandSelected
(
row
)
{
onBrandSelected
(
row
)
{
if
(
Object
.
values
(
row
).
length
>
0
)
{
this
.
queryParams
.
itemTypeId
=
row
.
itemTypeId
;
this
.
queryParams
.
itemTypeName
=
row
.
itemTypeName
;
}
},
onBrandProcess
(
row
)
{
onBrandProcess
(
row
)
{
if
(
Object
.
values
(
row
).
length
>
0
)
{
this
.
queryParams
.
processName
=
row
.
processName
;
}
...
...
@@ -429,35 +461,48 @@ import dayjs from 'dayjs'
handleSelectionChange
(
selection
)
{
this
.
selectedRows
=
selection
this
.
ids
=
selection
.
map
(
item
=>
item
.
ruleId
)
this
.
single
=
selection
.
length
!==
1
this
.
single
=
selection
.
length
!==
1
this
.
multiple
=
!
selection
.
length
},
handleExport
()
{
handleExport
()
{
let
apiName
=
''
if
(
Number
(
this
.
tabIndex
)
===
0
)
{
apiName
=
'report/pro/feedback/getList/export'
}
else
if
(
this
.
statisisType
===
'车间'
){
apiName
=
'report/pro/feedback/getListByWorkshop/export'
}
else
if
(
this
.
statisisType
===
'工作中心'
){
apiName
=
'report/pro/feedback/getListByWorkstation/export'
}
else
if
(
this
.
statisisType
===
'工作单元'
){
apiName
=
'report/pro/feedback/getListByWorkunit/export'
}
else
if
(
this
.
statisisType
===
'工序'
){
apiName
=
'report/pro/feedback/getListByProcess/export'
}
else
if
(
this
.
statisisType
===
'人员'
){
apiName
=
'report/pro/feedback/getListByUser/export'
}
else
if
(
this
.
statisisType
===
'工单'
)
{
apiName
=
'report/pro/feedback/getListByWorkOrder/export'
}
else
if
(
this
.
tableType
===
'计划达成统计表'
)
{
apiName
=
'report/pro/feedback/getAchievementRate/export'
}
else
if
(
this
.
tableType
===
'效率统计表'
)
{
apiName
=
'report/pro/feedback/getEfficiencyRate/export'
}
else
if
(
this
.
tableType
===
'生产力统计表'
)
{
apiName
=
'report/pro/feedback/getFeedDefRate/export'
}
else
if
(
this
.
tableType
===
'产品不良分析统计表'
)
{
apiName
=
'report/pro/feedback/getProductivityRate/export'
}
// else if (this.statisisType === '车间') {
// apiName = 'report/pro/feedback/getListByWorkshop/export'
// } else if (this.statisisType === '工作中心') {
// apiName = 'report/pro/feedback/getListByWorkstation/export'
// } else if (this.statisisType === '工作单元') {
// apiName = 'report/pro/feedback/getListByWorkunit/export'
// } else if (this.statisisType === '工序') {
// apiName = 'report/pro/feedback/getListByProcess/export'
// } else if (this.statisisType === '人员') {
// apiName = 'report/pro/feedback/getListByUser/export'
// } else if (this.statisisType === '工单') {
// apiName = 'report/pro/feedback/getListByWorkOrder/export'
// }
let
params
=
this
.
queryParams
;
if
(
Number
(
this
.
tabIndex
)
===
1
)
{
params
=
{
...
this
.
queryParams
,
checkIndex
:
this
.
statisisType
}
}
this
.
download
(
apiName
,
{
...
this
.
queryParams
,
},
params
,
`statistAnaly_
${
new
Date
().
getTime
()}
.xlsx`
);
}
}
};
</
script
>
\ No newline at end of file
};
</
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