Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
T
TF-MOM-WEB
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
TFMOM
TF-MOM-WEB
Commits
a2dcafcd
Commit
a2dcafcd
authored
Sep 18, 2023
by
jingnan
👀
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev' of
http://94.191.100.41/tfmom/tf-mom-web
into dev
parents
0a47789e
04c30ab9
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
607 additions
and
9 deletions
+607
-9
index.vue
...views/assemblyPlanManagement/inspectionDispatch/index.vue
+605
-0
index.vue
...ews/assemblyPlanManagement/instructionsDispatch/index.vue
+2
-9
No files found.
applications/dee-mes/src/views/assemblyPlanManagement/inspectionDispatch/index.vue
0 → 100644
View file @
a2dcafcd
<
template
>
<div
class=
"inspection-disptach"
>
<div
class=
"instructions-issued-top"
>
<el-form
:inline=
"true"
:model=
"searchFormData"
class=
"instructions-issued-search"
label-width=
"50px"
>
<el-col
:span=
"8"
>
<el-form-item
label=
"架次:"
>
<el-select
v-model=
"searchFormData.sorties"
placeholder=
"架次"
@
change=
"changeSorties"
>
<el-option
v-for=
"(item, i) in sortiesList"
:key=
"item.value + i"
:label=
"item.label"
:value=
"item.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"8"
>
<el-form-item
label=
"站位:"
>
<el-select
v-model=
"searchFormData.postion"
placeholder=
"站位"
@
change=
"changePostion"
>
<el-option
v-for=
"item in postionList"
:key=
"item.id"
:label=
"item.extcode"
:value=
"item.id"
/>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"8"
>
<el-form-item
label=
"班组:"
>
<el-select
v-model=
"searchFormData.group"
placeholder=
"班组"
@
change=
"changeGroup"
>
<el-option
v-for=
"(item, i) in groupList"
:key=
"item.value + i"
:label=
"item.label"
:value=
"item.value"
/>
</el-select>
</el-form-item>
</el-col>
</el-form>
</div>
<split-pane
:min-percent=
"18"
:default-percent=
"defaultPercent"
split=
"vertical"
class=
"detail-pane"
>
<template
slot=
"paneL"
>
<dee-tab
:tabs=
"tabItems"
@
tabClick=
"tabClick"
>
<div
slot=
"0"
style=
"height:100%;box-sizing:border-box"
>
<dee-up-table
selection-row
:index-row=
"indexRow"
:columns=
"columns"
:data=
"tableData"
:pagination=
"pagination"
@
pagination-current-change=
"paginationCurrentChange"
@
pagination-size-change=
"handleSizeChange"
@
selection-change=
"selectionChange"
>
<dee-tools
slot=
"header"
:tools=
"tools"
mode=
"normal"
/>
</dee-up-table>
</div>
<div
slot=
"1"
style=
"height:100%;box-sizing:border-box"
>
<dee-as-com
ref=
"detailComAlready"
:key=
"layConfigAlready.typeName"
:lay-config=
"layConfigAlready"
:form=
"searchFormData"
/>
</div>
</dee-tab>
</
template
>
<
template
slot=
"paneR"
>
<div
class=
"sub-title"
style=
"margin:0 10px"
>
执行派工
</div>
<div
class=
"group-list"
>
<div
v-for=
"(item, index) in groupUserList"
:key=
"index"
class=
"group-list-box"
:class=
"
{'active': item.isSelect}" @click="changeGroupUser(item)">
<div
class=
"message"
>
<el-tooltip
placement=
"top"
>
<div
slot=
"content"
>
<span>
未完成项/工时:
</span><span>
{{
item
.
notFinishCount
}}
/
{{
item
.
notFinishWork
}}
(h)
</span>
</div>
<div
class=
"right-text overfllowhind"
><span>
未完成项/工时:
</span><span>
{{
item
.
notFinishCount
}}
/
{{
item
.
notFinishWork
}}
(h)
</span></div>
</el-tooltip>
<el-tooltip
placement=
"top"
>
<div
slot=
"content"
>
<span>
当月完成项/工时:
</span><span>
{{
item
.
finishWork
}}
/
{{
item
.
finishWork
}}
(h)
</span>
</div>
<div
class=
"right-text overfllowhind"
><span>
当月完成项/工时:
</span><span>
{{
item
.
finishWork
}}
/
{{
item
.
finishWork
}}
(h)
</span></div>
</el-tooltip>
<el-tooltip
placement=
"top"
>
<div
slot=
"content"
>
<span>
上岗有效期:
</span><span>
{{
item
.
postValidity
}}
</span>
</div>
<div
class=
"right-text overfllowhind"
><span>
上岗有效期:
</span><span>
{{
item
.
postValidity
}}
</span></div>
</el-tooltip>
</div>
<div
class=
"author"
>
<el-image
v-if=
"item.router"
class=
"icon-author"
:src=
"getUrl()+'/file-download/' +item.router"
alt=
""
/>
<img
v-else
class=
"icon-author2"
src=
"/icons/author.png"
alt=
""
>
<div
class=
"name"
>
{{
item
.
dxUserInfo
.
name
}}
</div>
</div>
</div>
<div
class=
"more-bar"
>
<span
v-if=
"groupUserList.length
<
groupUserTotal
"
class=
"more"
@
click=
"getMoreData"
>
加载更多
</span>
<span
v-else-if=
"groupUserList.length===0"
>
暂无数据
</span>
<span
v-else
>
已全部加载!
</span>
</div>
</div>
</
template
>
</split-pane>
</div>
</template>
<
script
>
import
{
post
}
from
'@/utils/http'
export
default
{
data
()
{
return
{
searchFormData
:
{
group
:
''
,
postion
:
''
,
sorties
:
''
},
sortiesList
:
[],
postionList
:
[],
groupList
:
[],
groupUserList
:
[],
activeName
:
0
,
defaultPercent
:
78
,
indexRow
:
{
title
:
'序号'
,
align
:
'center'
,
width
:
'70'
},
columns
:
[
{
title
:
'机型'
,
key
:
'extProcessPlan.planeType'
,
align
:
'left'
},
{
title
:
'架次'
,
key
:
'extProcessPlan.sorties'
,
align
:
'left'
},
{
title
:
'站位'
,
key
:
'extProcessPlan.positionNumber'
,
align
:
'left'
},
{
title
:
'指令号'
,
key
:
'extProcessPlan.serialNumber'
,
align
:
'left'
},
{
title
:
'指令名称'
,
key
:
'extProcessPlan.name'
,
align
:
'left'
},
{
title
:
'工时定额'
,
key
:
'extProcessPlan.workHour'
,
align
:
'left'
},
{
title
:
'工艺员'
,
key
:
'extProcessPlan.noteName'
,
align
:
'left'
},
{
title
:
'计划开始'
,
key
:
'scheduledStart'
,
align
:
'left'
},
{
title
:
'计划结束'
,
key
:
'scheduledEnd'
,
align
:
'left'
}
],
tableData
:
[],
pagination
:
{
currentPage
:
1
,
pageSize
:
20
,
total
:
0
,
pageSizes
:
[
20
,
50
,
100
]
},
tools
:
[
{
type
:
'icon'
,
name
:
'派工'
,
icon
:
'/icons/o-Referencedoc.png'
,
handler
:
{
click
:
()
=>
{
this
.
$confirm
(
'您确认执行该操作吗?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(()
=>
{
const
arr
=
[]
const
user
=
[]
this
.
groupUserList
.
forEach
(
item
=>
{
if
(
item
.
isSelect
)
{
user
.
push
({
subTypeName
:
'CheckOut'
,
operator
:
'ADD'
,
extProcessSkillUserId
:
item
.
id
,
extProcessSkillUserIdType
:
item
.
subTypeName
,
isMasterOperator
:
false
,
taskState
:
'N'
,
extProcessSkillId
:
item
.
extProcessSkillId
,
extProcessSkillIdType
:
item
.
extProcessSkillIdType
})
}
})
this
.
selectionRow
.
map
(
item
=>
{
arr
.
push
(
{
id
:
item
.
id
,
operator
:
'MODIFY'
,
prodTask
:
user
}
)
})
post
(
'/ProdTask/prodTaskSave?dmirStatus=Y'
,
arr
)
.
then
((
res
)
=>
{
this
.
$message
({
type
:
'success'
,
message
:
'提交成功!'
})
this
.
getTableData
()
})
.
catch
((
err
)
=>
console
.
log
(
err
))
.
finally
(()
=>
{})
}).
catch
(()
=>
{
})
}
}
}
],
groupUserTotal
:
0
,
groupUserPage
:
1
}
},
computed
:
{
tabItems
()
{
return
[
{
name
:
'派工'
,
id
:
'0'
},
{
name
:
'已派工'
,
id
:
'1'
}
]
},
layConfigAlready
()
{
return
{
typeName
:
'JoExecutePlan'
,
layKey
:
'inspectionDisptachAlready'
}
}
},
created
()
{
this
.
getStories
()
},
methods
:
{
getStories
()
{
const
params
=
{
'searchItems'
:
{
'children'
:
[
{
'items'
:
[
{
'fieldName'
:
'extPosition.id'
,
'operator'
:
'NOTNULL'
}
],
'operator'
:
'AND'
}
],
'items'
:
[],
'operator'
:
'AND'
},
'openProps'
:
[],
'sortItem'
:
[
{
'fieldName'
:
'modifyTime'
,
'sortOrder'
:
'desc'
}
],
'toValidateKeys'
:
''
}
this
.
$api
.
searchApi
(
'AircraftSorties'
,
params
).
then
(
res
=>
{
this
.
sortiesList
=
res
.
items
.
content
.
map
(
row
=>
{
return
{
value
:
row
.
id
,
label
:
row
.
defName
}
})
this
.
$set
(
this
.
searchFormData
,
'sorties'
,
this
.
sortiesList
[
0
].
value
)
this
.
$set
(
this
.
searchFormData
,
'sortiesName'
,
this
.
sortiesList
[
0
].
label
)
this
.
getStation
()
})
},
getStation
()
{
this
.
$api
.
searchApi
(
'ExtStandPosition'
,
{}).
then
(
res
=>
{
this
.
postionList
=
res
.
items
.
content
this
.
$set
(
this
.
searchFormData
,
'postion'
,
this
.
postionList
[
0
].
id
)
this
.
$set
(
this
.
searchFormData
,
'postionName'
,
this
.
postionList
[
0
].
extcode
)
this
.
getGroup
()
this
.
getTableData
()
}).
catch
(
err
=>
console
.
log
(
err
)).
finally
(()
=>
{
})
},
changeSorties
()
{
const
sorties
=
this
.
sortiesList
.
find
(
r
=>
r
.
value
===
this
.
searchFormData
.
sorties
)
this
.
$set
(
this
.
searchFormData
,
'sortiesName'
,
sorties
&&
sorties
.
label
||
''
)
this
.
getTableData
()
},
changePostion
()
{
const
postion
=
this
.
postionList
.
find
(
r
=>
r
.
id
===
this
.
searchFormData
.
postion
)
this
.
$set
(
this
.
searchFormData
,
'postionName'
,
postion
&&
postion
.
extcode
||
''
)
this
.
getGroup
()
this
.
getTableData
()
},
getGroup
()
{
this
.
groupList
=
[]
this
.
$set
(
this
.
searchFormData
,
'group'
,
''
)
const
params
=
{
'searchItems'
:
{
'children'
:
[
{
'items'
:
[
{
'fieldName'
:
'extStandPositionId'
,
'operator'
:
'EQ'
,
'value'
:
this
.
searchFormData
.
postion
},
{
'fieldName'
:
'isValid'
,
'operator'
:
'EQ'
,
'value'
:
'Y'
},
{
'fieldName'
:
'skillType'
,
'operator'
:
'EQ'
,
'value'
:
'CheckOut'
}
],
'operator'
:
'AND'
}
],
'items'
:
[],
'operator'
:
'AND'
},
'openProps'
:
[],
'sortItem'
:
[
{
'fieldName'
:
'modifyTime'
,
'sortOrder'
:
'desc'
}
],
'toValidateKeys'
:
''
}
post
(
'/ExtProcessSkill/search'
,
params
).
then
(
res
=>
{
if
(
res
.
items
&&
res
.
items
.
content
)
{
this
.
groupList
=
res
.
items
.
content
.
map
(
row
=>
{
return
{
value
:
row
.
id
,
label
:
row
.
resName
}
})
if
(
this
.
groupList
.
length
>
0
)
{
this
.
$set
(
this
.
searchFormData
,
'group'
,
this
.
groupList
[
0
].
value
)
this
.
$set
(
this
.
searchFormData
,
'groupName'
,
this
.
groupList
[
0
].
label
)
this
.
getGroupUser
()
}
}
})
},
changeGroup
()
{
const
group
=
this
.
groupList
.
find
(
r
=>
r
.
value
===
this
.
searchFormData
.
group
)
this
.
$set
(
this
.
searchFormData
,
'groupName'
,
group
&&
group
.
label
||
''
)
this
.
$set
(
this
.
searchFormData
,
'group'
,
group
&&
group
.
value
||
''
)
this
.
getGroupUser
()
},
tabClick
(
tab
)
{
this
.
activeName
=
tab
.
index
if
(
this
.
activeName
===
'1'
)
{
this
.
defaultPercent
=
100
}
else
{
this
.
defaultPercent
=
80
}
this
.
getTableData
()
},
getTableData
()
{
this
.
tableData
=
[]
if
(
this
.
activeName
===
'1'
)
{
if
(
this
.
$refs
.
detailComAlready
)
{
this
.
$refs
.
detailComAlready
.
$children
[
0
].
getData
()
}
}
else
{
this
.
getInstructionsDispatchList
()
// this.getGroupUser()
}
},
getInstructionsDispatchList
()
{
const
params
=
{
'pageFrom'
:
this
.
pagination
.
currentPage
,
'pageSize'
:
this
.
pagination
.
pageSize
,
'searchItems'
:
{
'children'
:
[
{
'items'
:
[
{
'fieldName'
:
'extProcessPlan.sorties'
,
'operator'
:
'EQ'
,
'value'
:
this
.
searchFormData
.
sortiesName
},
{
'fieldName'
:
'extProcessPlan.positionNumber'
,
'operator'
:
'EQ'
,
'value'
:
this
.
searchFormData
.
postionName
},
{
'fieldName'
:
'planState'
,
'operator'
:
'EQ'
,
'value'
:
'Issued'
},
{
'fieldName'
:
'extProcessPlan.id'
,
'operator'
:
'NOTNULL'
},
{
'fieldName'
:
'dmirStatus'
,
'operator'
:
'EQ'
,
'value'
:
'Y'
}
],
'operator'
:
'AND'
}
],
'items'
:
[],
'operator'
:
'AND'
},
'openProps'
:
[
{
'name'
:
'extProcessPlan'
},
{
'name'
:
'extProcessSkill'
},
{
'name'
:
'prodTask'
,
'openProps'
:
[
{
'name'
:
'extProcessSkillUser'
}
]
}
],
'sortItem'
:
[
{
'fieldName'
:
'modifyTime'
,
'sortOrder'
:
'desc'
}
]
}
post
(
'/JoExecutePlan/search'
,
params
).
then
(
res
=>
{
if
(
res
.
items
&&
res
.
items
.
content
)
{
this
.
tableData
=
res
.
items
.
content
this
.
pagination
.
total
=
res
.
items
.
totalElements
}
})
},
paginationCurrentChange
(
currentPage
)
{
this
.
pagination
.
currentPage
=
currentPage
this
.
getInstructionsIssuedListTo
()
},
handleSizeChange
(
pageSize
)
{
this
.
pagination
.
pageSize
=
pageSize
this
.
pagination
.
currentPage
=
1
this
.
getInstructionsIssuedListTo
()
},
selectionChange
(
val
)
{
this
.
selectionRow
=
val
},
changeGroupUser
(
val
)
{
val
.
isSelect
=
!
val
.
isSelect
},
getGroupUser
()
{
const
params
=
{
'pageFrom'
:
this
.
groupUserPage
,
'pageSize'
:
10
,
'searchItems'
:
{
'children'
:
[
{
'items'
:
[
{
'fieldName'
:
'extProcessSkillId'
,
'operator'
:
'EQ'
,
'value'
:
this
.
searchFormData
.
group
}
],
'operator'
:
'AND'
}
],
'items'
:
[],
'operator'
:
'AND'
},
'openProps'
:
[
{
'name'
:
'extProcessSkill'
}
],
'sortItem'
:
[
{
'fieldName'
:
'modifyTime'
,
'sortOrder'
:
'desc'
}
],
'toValidateKeys'
:
''
}
post
(
'/ExtProcessSkillUser/getSkillUser'
,
params
).
then
(
res
=>
{
if
(
res
.
items
&&
res
.
items
.
content
)
{
res
.
items
.
content
.
forEach
(
item
=>
{
item
.
isSelect
=
false
this
.
groupUserList
.
push
(
item
)
})
this
.
groupUserTotal
=
res
.
items
.
totalElements
// this.groupUserList[0].isSelect = true
}
})
},
getMoreData
()
{
const
num
=
Math
.
ceil
(
this
.
groupUserTotal
/
10
)
if
(
this
.
groupUserPage
<=
num
)
{
this
.
groupUserPage
++
this
.
getGroupUser
()
}
}
}
}
</
script
>
<
style
lang=
"scss"
>
.inspection-disptach
{
background
:
#ffff
;
height
:
100%
;
.group-list
{
height
:
calc
(
100%
-
100px
);
overflow-y
:
scroll
;
margin-bottom
:
20px
;
.more-bar
{
margin
:
10px
auto
;
text-align
:
center
;
font-size
:
12px
;
color
:
#999
;
.more
{
margin
:
auto
;
margin-top
:
20px
;
height
:
26px
;
line-height
:
26px
;
padding
:
0
20px
;
background
:
rgba
(
64
,
87
,
141
,
1
);
border-radius
:
13px
;
display
:
inline-block
;
cursor
:
pointer
;
}
}
.group-list-box
{
box-sizing
:
border-box
;
background
:
url("/images/dispatching.png")
no-repeat
;
background-size
:
100%
100%
;
padding
:
10px
;
margin
:
10px
10px
;
box-shadow
:
0
4px
8px
0
rgba
(
0
,
0
,
0
,
0
.2
)
,
0
6px
20px
0
rgba
(
0
,
0
,
0
,
0
.19
);
border-radius
:
10px
;
font-size
:
14px
;
border
:
3px
solid
#fff
;
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
.author
{
display
:
flex
;
justify-content
:
center
;
align-items
:
flex-end
;
flex-direction
:
column
;
.icon-author
{
width
:
71px
;
height
:
94
.5px
;
}
.icon-author2
{
width
:
71px
;
}
.name
{
margin-top
:
10px
;
width
:
100%
;
text-align
:
center
}
}
.message
{
width
:
70%
;
.right-text
{
padding-top
:
8px
;
line-height
:
24px
;
}
.overfllowhind
{
max-width
:
100%
;
word-break
:keep-all
;
white-space
:nowrap
;
overflow
:hidden
;
text-overflow
:ellipsis
;
}
}
}
.active
{
color
:
rgb
(
64
,
87
,
141
);
font-weight
:
700
;
border
:
3px
solid
rgb
(
64
,
87
,
141
);
}
}
.instructions-issued-top
{
display
:
flex
;
align-items
:
center
;
.instructions-issued-search
{
padding
:
10px
8px
;
height
:
40px
;
width
:
65%
;
}
}
}
</
style
>
applications/dee-mes/src/views/assemblyPlanManagement/instructionsDispatch/index.vue
View file @
a2dcafcd
...
...
@@ -247,7 +247,7 @@ export default {
getGroup
()
{
this
.
groupList
=
[]
this
.
$set
(
this
.
searchFormData
,
'group'
,
''
)
//
const userId = localStorage.getItem('userId') || ''
const
userId
=
localStorage
.
getItem
(
'userId'
)
||
''
const
params
=
{
'searchItems'
:
{
'children'
:
[
...
...
@@ -256,7 +256,7 @@ export default {
{
'fieldName'
:
'extProcessSkillUsers.dxUserInfoId'
,
'operator'
:
'EQ'
,
'value'
:
1626781930036
'value'
:
userId
},
{
'fieldName'
:
'isValid'
,
...
...
@@ -545,13 +545,6 @@ export default {
height
:
40px
;
width
:
40%
;
}
.start-working
{
height
:
30px
;
cursor
:
pointer
;
img
{
height
:
100%
;
};
}
}
}
</
style
>
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