Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
M
mes-ui
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
周远喜
mes-ui
Commits
417d9426
Commit
417d9426
authored
Nov 06, 2020
by
仇晓婷
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
流水排产
parent
9d9aafa5
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
221 additions
and
181 deletions
+221
-181
api.js
pages/aps/stream/api.js
+8
-2
index.vue
pages/aps/stream/index.vue
+163
-143
set.vue
pages/aps/stream/set.vue
+50
-36
No files found.
pages/aps/stream/api.js
View file @
417d9426
import
Api
from
'@/plugins/request'
export
default
{
// getpooltypeorderlist(params) {
// return Api.get(`${PlanUrl}/messchedule/getpooltypeorderlist`, params); //排产池订单数据
// },
getpooltypeorderlist
(
params
)
{
return
Api
.
get
(
`
${
PlanUrl
}
/messchedule/getpooltypeorderlist`
,
params
);
//排产池订单数据
return
Api
.
get
(
`
${
PlanUrl
}
/messchedule/getpooltypeorderlist
_new
`
,
params
);
//排产池订单数据
},
// getroutingdetails(params) {
// return Api.get(`${PlanUrl}/messchedule/getroutingdetails`, params); //工序信息
// },
getroutingdetails
(
params
)
{
return
Api
.
get
(
`
${
PlanUrl
}
/messchedule/getroutingdetails`
,
params
);
//工序信息
return
Api
.
get
(
`
${
PlanUrl
}
/messchedule/getroutingdetails
_mutiroutinggroup
`
,
params
);
//工序信息
},
flonestepschedule
(
params
)
{
return
Api
.
post
(
`
${
PlanUrl
}
/messchedule/flonestepschedule`
,
params
);
//流水一级
...
...
pages/aps/stream/index.vue
View file @
417d9426
...
...
@@ -73,23 +73,33 @@
</Row>
<Row
class=
"right-body"
>
<Col
class=
"list"
span=
"24"
>
<Card
v-for=
"(li, i) in result"
:key=
"i"
>
<p
slot=
"title"
>
<Badge
:count=
"i + 1"
></Badge>
{{
li
.
routingCode
}}
/
{{
li
.
routingName
}}
</p>
<Timeline>
<TimelineItem
v-for=
"(item, index) in result"
:key=
"index"
>
<Badge
:count=
"item.seq"
slot=
"dot"
:type=
"type(index)"
></Badge>
<TimelineItem
v-for=
"(item, index) in li.list"
:key=
"index"
>
<Badge
:count=
"item.seq"
slot=
"dot"
:type=
"item.aps == 1 ? 'error' : 'success'"
></Badge>
<div
class=
"set-name"
>
<span
@
click=
"sets(
item, index)"
@
click=
"sets(i,
item, index)"
class=
"mr20"
:class=
"active == index ? 'gongTitle' : ''"
>
工序名称:
{{
item
.
name
}}
</span
>
<op
title=
"拆分工序"
@
click=
"split(
item, index)"
@
click=
"split(li, i,
item, index)"
type=
"icon"
icon=
"ios-cut"
v-if=
"item.quantity > 1 && !item.chai"
></op>
>
</op>
<op
title=
"移除"
@
click=
"remove(item, index)"
...
...
@@ -97,7 +107,8 @@
icon=
"ios-trash"
oprate=
"delete"
v-if=
"item.chai"
></op>
>
</op>
</div>
<div
class=
"content"
>
数量:
{{
item
.
quantity
}}
</div>
...
...
@@ -123,6 +134,7 @@
<!--
<div>
工序号:
{{
item
.
task_seq
}}
</div>
-->
</TimelineItem>
</Timeline>
</Card>
<div>
<Drawer
title=
"排产设置盘"
...
...
@@ -168,6 +180,7 @@
<
script
>
import
Set
from
"./set"
;
import
Api
from
"./api"
;
import
{
forEach
}
from
"lodash"
;
export
default
{
name
:
"set"
,
components
:
{
...
...
@@ -182,8 +195,9 @@ export default {
disabled
:
false
,
chaiLIst
:
[],
mode
:
1
,
itemList
:
[],
curIndex
:
-
1
,
liIndex
:
-
1
,
indexId
:
0
,
active
:
null
,
activeindex
:
1
,
...
...
@@ -232,11 +246,6 @@ export default {
u
.
demandStartDate
=
u
.
demandStartDate
.
substr
(
0
,
10
);
});
this
.
list
=
r
.
result
;
// if (r.result[0]) {
// this.tagTata(r.result[0].id);
// } else {
// this.result = [];
// }
}
else
{
this
.
$Message
.
info
(
"排产池数据请求失败"
);
}
...
...
@@ -259,20 +268,20 @@ export default {
tagTata
(
id
)
{
Api
.
getroutingdetails
({
id
:
id
}).
then
((
r
)
=>
{
if
(
r
.
success
)
{
r
.
result
.
map
((
u
)
=>
{
// console.log(r)
r
.
result
.
map
((
e
)
=>
{
e
.
list
.
map
((
u
)
=>
{
u
.
seq
=
u
.
task_seq
;
u
.
chaiCount
=
0
;
u
.
chai
=
false
;
u
.
aps
=
0
;
});
});
this
.
result
=
r
.
result
;
}
});
},
//工序排产过滤
// changeRodio(a) {
// console.log(a);
// },
//删除排产订单
close
(
id
)
{
let
ids
=
[];
...
...
@@ -295,36 +304,29 @@ export default {
},
});
},
//工序列表序列设置
type
(
i
)
{
// console.log(i);
if
(
i
<
this
.
result
.
length
)
{
return
"normal"
;
}
else
if
(
i
===
this
.
result
.
length
)
{
return
"success"
;
}
},
//设置工序
sets
(
item
,
index
)
{
sets
(
i
,
item
,
index
)
{
console
.
log
(
item
);
this
.
set
=
true
;
this
.
indexId
=
index
;
this
.
liIndex
=
i
;
this
.
detailId
=
item
.
detailId
;
this
.
active
=
index
;
this
.
$refs
.
setObj
.
formItem
=
{};
// this.group.orderId = item.orderId;
// this.group.routingHeaderId = item.routingHeaderId;
// this.$refs.setObj.formItem = {};
// this.$refs.setObj.formItem.radio = "0";
this
.
$refs
.
setObj
.
formItem
.
userIds
=
[];
},
//拆分工序
split
(
item
,
i
)
{
split
(
li
,
i
,
item
,
index
)
{
this
.
chaiModal
=
true
;
this
.
curIndex
=
i
;
this
.
maxnum
=
this
.
result
[
i
].
quantity
-
1
;
this
.
curIndex
=
index
;
this
.
itemList
=
[];
this
.
liIndex
=
i
;
this
.
itemList
=
li
.
list
;
this
.
maxnum
=
item
.
quantity
-
1
;
},
//拆分保存
okChai
()
{
let
items
=
this
.
$u
.
clone
(
this
.
resul
t
);
let
items
=
this
.
$u
.
clone
(
this
.
itemLis
t
);
let
curItem
=
items
[
this
.
curIndex
];
curItem
.
aps
=
this
.
mode
;
...
...
@@ -342,20 +344,25 @@ export default {
total
=
this
.
curIndex
;
}
items
.
splice
(
total
,
0
,
addItem
);
this
.
result
=
items
;
console
.
log
(
items
);
this
.
result
[
this
.
liIndex
].
list
=
items
;
},
//删除工序
remove
(
item
,
index
)
{
let
vroot
=
-
1
;
this
.
result
.
map
((
u
,
i
)
=>
{
let
liIndex
=
-
1
;
this
.
result
.
map
((
e
,
v
)
=>
{
e
.
list
.
map
((
u
,
i
)
=>
{
if
(
!
u
.
chai
&&
u
.
detailId
===
item
.
detailId
)
{
vroot
=
i
;
liIndex
=
v
;
}
u
.
chaiCount
=
u
.
chaiCount
-
1
;
});
this
.
result
[
vroot
].
quantity
+=
item
.
quantity
;
});
this
.
result
[
liIndex
].
list
[
vroot
].
quantity
+=
item
.
quantity
;
var
list
=
this
.
$u
.
clone
(
this
.
result
);
list
.
splice
(
index
,
1
);
list
[
liIndex
].
list
.
splice
(
index
,
1
);
this
.
result
=
list
;
},
//下发
...
...
@@ -364,20 +371,21 @@ export default {
var
items
=
[];
var
obj
=
{};
if
(
this
.
mode
==
1
)
{
for
(
let
i
=
0
;
i
<
this
.
result
.
length
;
i
++
)
{
this
.
result
.
forEach
((
element
)
=>
{
for
(
let
i
=
0
;
i
<
element
.
list
.
length
;
i
++
)
{
obj
=
{
detailId
:
this
.
resul
t
[
i
].
detailId
,
userIds
:
this
.
resul
t
[
i
].
userIds
,
quantity
:
this
.
resul
t
[
i
].
quantity
,
beginTime
:
this
.
resul
t
[
i
].
beginTime
,
endTime
:
this
.
resul
t
[
i
].
endTime
,
remark
:
this
.
resul
t
[
i
].
remark
,
detailId
:
element
.
lis
t
[
i
].
detailId
,
userIds
:
element
.
lis
t
[
i
].
userIds
,
quantity
:
element
.
lis
t
[
i
].
quantity
,
beginTime
:
element
.
lis
t
[
i
].
beginTime
,
endTime
:
element
.
lis
t
[
i
].
endTime
,
remark
:
element
.
lis
t
[
i
].
remark
,
};
items
.
push
(
obj
);
}
let
data
=
{
orderId
:
this
.
orderId
,
routingHeaderId
:
this
.
routingHeaderId
,
routingHeaderId
:
element
.
routingHeaderId
,
items
:
items
,
};
Api
.
flonestepschedule
(
data
).
then
((
r
)
=>
{
...
...
@@ -389,21 +397,23 @@ export default {
this
.
$Message
.
info
(
"下发失败"
);
}
});
});
}
else
if
(
this
.
mode
==
2
)
{
for
(
let
i
=
0
;
i
<
this
.
result
.
length
;
i
++
)
{
this
.
result
.
forEach
((
element
)
=>
{
for
(
let
i
=
0
;
i
<
element
.
list
.
length
;
i
++
)
{
obj
=
{
detailId
:
this
.
result
[
i
].
detailId
,
shopId
:
this
.
result
[
i
].
shopId
,
quantity
:
this
.
result
[
i
].
quantity
,
beginTime
:
this
.
result
[
i
].
beginTime
,
endTime
:
this
.
result
[
i
].
endTime
,
remark
:
this
.
result
[
i
].
remark
,
detailId
:
element
.
list
.
length
[
i
].
detailId
,
shopId
:
element
.
list
.
length
[
i
].
shopId
,
quantity
:
element
.
list
.
length
[
i
].
quantity
,
beginTime
:
element
.
list
.
length
[
i
].
beginTime
,
endTime
:
element
.
list
.
length
[
i
].
endTime
,
remark
:
element
.
list
.
length
[
i
].
remark
,
};
items
.
push
(
obj
);
}
let
data
=
{
orderId
:
this
.
orderId
,
routingHeaderId
:
this
.
routingHeaderId
,
routingHeaderId
:
element
.
routingHeaderId
,
items
:
items
,
};
Api
.
fltwostepschedule
(
data
).
then
((
r
)
=>
{
...
...
@@ -415,6 +425,7 @@ export default {
this
.
$Message
.
info
(
"下发失败"
);
}
});
});
}
}
else
{
this
.
$Message
.
info
(
"请先选择排产订单并设置工序"
);
...
...
@@ -422,22 +433,24 @@ export default {
},
closeOk
()
{
this
.
set
=
false
;
// this.active = null;
},
DetermineOk
(
val
,
index
)
{
let
item
=
Object
.
assign
(
this
.
result
[
index
],
val
);
let
item
=
Object
.
assign
(
this
.
result
[
this
.
liIndex
].
list
[
index
],
val
);
item
.
aps
=
this
.
mode
;
this
.
$set
(
this
.
result
,
index
,
item
);
this
.
$set
(
this
.
result
[
this
.
liIndex
].
list
,
index
,
item
);
this
.
set
=
false
;
},
},
computed
:
{
allow
()
{
let
mode
=
this
.
mode
;
var
flag
=
true
;
let
oks
=
this
.
result
.
filter
((
u
)
=>
{
return
u
.
aps
==
mode
;
u
.
list
.
map
((
e
)
=>
{
if
(
e
.
aps
!=
mode
)
flag
=
false
;
});
});
return
oks
.
length
==
this
.
result
.
length
;
return
flag
;
},
},
};
...
...
@@ -539,8 +552,8 @@ export default {
height: 82vh;
overflow: auto;
.list {
padding-left: 10px;
padding-top: 30
px;
//
padding-left: 10px;
// padding-top: 15
px;
.set-name {
font-weight: bold;
height: 30px;
...
...
@@ -568,6 +581,13 @@ export default {
.gong-list {
color: rgba(38, 128, 235, 0.7);
}
.ivu-card {
margin: 10px 0;
}
.ivu-timeline {
margin-left: 40px;
}
}
.xia-fa {
text-align: right;
...
...
pages/aps/stream/set.vue
View file @
417d9426
<
template
>
<div
class=
"set"
>
<Form
:model=
"formItem"
:label-width=
"100"
:rules=
"ruleValidate"
ref=
"formItem"
>
<Form
:model=
"formItem"
:label-width=
"100"
:rules=
"ruleValidate"
ref=
"formItem"
>
<FormItem
label=
"工时"
prop=
"time"
>
<DatePicker
type=
"datetimerange"
...
...
@@ -8,7 +13,7 @@
placeholder=
"请选择工时"
@
on-change=
"changeFormat"
v-model=
"formItem.time"
style=
"width:300px"
style=
"width:
300px"
></DatePicker>
</FormItem>
<!--
<FormItem
label=
"类型"
>
...
...
@@ -17,32 +22,41 @@
<Radio
label=
"1"
>
班组
</Radio>
</RadioGroup>
</FormItem>
-->
<FormItem
label=
"人员"
v-if=
"mode
==
1"
prop=
"userIds"
>
<FormItem
label=
"人员"
v-if=
"mode
==
1"
prop=
"userIds"
>
<!--
<UserSelect
ref=
"userSelected"
v-model=
"formItem.userIds"
style=
"width:300px"
:multiple=
"true"
/>
-->
<UserSelect
v-model=
"formItem.userIds"
:multiple=
"true"
:type=
"2"
/>
<UserSelect
v-model=
"formItem.userIds"
:multiple=
"true"
:type=
"2"
/>
</FormItem>
<FormItem
label=
"班组"
v-if=
"mode==2"
prop=
"shopId"
>
<Select
v-model=
"formItem.shopId"
placeholder=
"请选择"
style=
"width:300px"
>
<FormItem
label=
"班组"
v-if=
"mode == 2"
prop=
"shopId"
>
<Select
v-model=
"formItem.shopId"
placeholder=
"请选择"
style=
"width: 300px"
>
<Option
v-for=
"(item,index) in listClass"
v-for=
"(item,
index) in listClass"
:key=
"index"
:value=
"item.value"
:label=
"item.label"
style=
"display:none"
style=
"display:
none"
></Option>
<Tree
key=
"mytree"
:data=
"workShop"
ref=
"mytree"
:render=
"renderContent"
></Tree>
<Tree
key=
"mytree"
:data=
"workShop"
ref=
"mytree"
:render=
"renderContent"
></Tree>
</Select>
</FormItem>
<FormItem
label=
"备注"
>
<Input
v-model=
"formItem.remark"
type=
"textarea"
:autosize=
"
{
minRows: 2,maxRows: 5
}"
:autosize=
"
{
minRows: 2, maxRows: 5
}"
placeholder="请输入备注信息"
>
</Input>
</FormItem>
...
...
@@ -60,7 +74,7 @@ export default {
props
:
{
detailId
:
Number
,
indexId
:
Number
,
mode
:
Number
mode
:
Number
,
},
data
()
{
return
{
...
...
@@ -75,7 +89,7 @@ export default {
departmentTitle
:
""
,
shopId
:
""
,
shopName
:
""
,
userIds
:
[]
userIds
:
[]
,
},
workShop
:
[],
listClass
:
[],
...
...
@@ -88,26 +102,26 @@ export default {
trigger
:
"blur"
,
fields
:
{
0
:
{
type
:
"date"
,
required
:
true
,
message
:
"请选择工时时间段"
},
1
:
{
type
:
"date"
,
required
:
true
,
message
:
"请选择工时时间段"
}
}
}
1
:
{
type
:
"date"
,
required
:
true
,
message
:
"请选择工时时间段"
},
},
},
],
userIds
:
[
{
required
:
true
,
message
:
"请选择人员"
,
type
:
"array"
,
trigger
:
"change"
,
},
],
// user: [
// {
// required: true,
// message: "请选择人员",
// type: "array",
// trigger: "change"
// }
// ],
shopId
:
[
{
required
:
true
,
message
:
"请选择班组"
,
trigger
:
"change"
}
]
}
trigger
:
"change"
,
}
,
]
,
}
,
};
},
mounted
()
{
...
...
@@ -120,7 +134,7 @@ export default {
if
(
this
.
formItem
.
userIds
&&
this
.
formItem
.
userIds
.
length
==
0
)
{
this
.
$Message
.
error
(
"人员不能为空"
);
}
else
{
this
.
$refs
[
"formItem"
].
validate
(
valid
=>
{
this
.
$refs
[
"formItem"
].
validate
(
(
valid
)
=>
{
if
(
valid
)
{
this
.
formItem
.
detailId
=
this
.
detailId
;
this
.
$emit
(
"on-DetermineOk"
,
this
.
formItem
,
this
.
indexId
);
...
...
@@ -146,7 +160,7 @@ export default {
//部门(班组)
getWorkshop
()
{
let
url
=
`
${
systemUrl
}
/department/getdepartmentsbyproterty`
;
this
.
$api
.
get
(
url
,
{
Property
:
2
}).
then
(
r
=>
{
this
.
$api
.
get
(
url
,
{
Property
:
2
}).
then
((
r
)
=>
{
if
(
r
.
result
)
{
this
.
workShop
=
r
.
result
;
}
...
...
@@ -158,13 +172,13 @@ export default {
"span"
,
{
style
:
{
cursor
:
"pointer"
cursor
:
"pointer"
,
},
on
:
{
click
:
()
=>
{
this
.
handleSelect
(
data
);
//手动选择树节点
}
}
}
,
}
,
},
data
.
name
);
...
...
@@ -172,21 +186,21 @@ export default {
handleSelect
(
data
)
{
let
obj
=
{
label
:
data
.
name
,
value
:
data
.
id
value
:
data
.
id
,
};
this
.
listClass
=
[];
this
.
listClass
.
push
(
obj
);
this
.
formItem
.
shopId
=
this
.
listClass
[
0
].
value
;
this
.
formItem
.
shopName
=
this
.
listClass
[
0
].
label
;
}
}
,
},
watch
:
{
"formItem.radio"
(
v
)
{
if
(
v
==
1
)
{
this
.
getWorkshop
();
}
}
}
}
,
}
,
};
</
script
>
<
style
lang=
"less"
scoped
>
...
...
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