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
77b1cf7c
Commit
77b1cf7c
authored
Oct 12, 2020
by
仇晓婷
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'product' of
http://git.mes123.com/zhouyx/mes-ui
into product
parents
440e1f1f
1b066382
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
1872 additions
and
1873 deletions
+1872
-1873
default.vue
layouts/default.vue
+1
-3
excute.vue
pages/aps/aps/components/excute.vue
+483
-490
index.vue
pages/aps/plan/index.vue
+736
-773
index.vue
pages/mesPlan/index.vue
+18
-18
orderlist.vue
pages/produce/orderlist.vue
+4
-4
index.vue
pages/workflow/flow/index.vue
+522
-483
design.vue
pages/workflow/process/design.vue
+108
-102
No files found.
layouts/default.vue
View file @
77b1cf7c
...
@@ -85,9 +85,7 @@ export default {
...
@@ -85,9 +85,7 @@ export default {
// const openNames = getSiderSubmenu(path, menuSider);
// const openNames = getSiderSubmenu(path, menuSider);
// this.$store.commit("admin/menu/setOpenNames", openNames);
// this.$store.commit("admin/menu/setOpenNames", openNames);
}
else
{
}
this
.
$Message
.
error
(
"加载产品树失败!"
);
}
});
});
},
},
toMenu
(
list
)
{
toMenu
(
list
)
{
...
...
pages/aps/aps/components/excute.vue
View file @
77b1cf7c
<
template
>
<
template
>
<div
style=
"padding: 0;"
class=
"excute"
>
<div
style=
"padding: 0;"
class=
"excute"
>
<DataGrid
<DataGrid
style=
"margin-top:2px; margin-bottom: -5px;"
:columns=
"columns"
ref=
"grid"
:easy=
"false"
:high=
"false"
:set=
"false"
:border=
"false"
:data=
"data1"
:height=
"gridHeight"
:page=
"false"
:size=
"size"
></DataGrid>
style=
"margin-top:2px; margin-bottom: -5px;"
<Modal
v-model=
"editModal"
title=
"编辑"
footer-hide
width=
"1000"
>
:columns=
"columns"
<Edit
:row=
"rowData"
@
on-close=
"cancel"
@
on-option-ok=
"addOk"
/>
ref=
"grid"
:easy=
"false"
:high=
"false"
:set=
"false"
:border=
"false"
:data=
"data1"
:height=
"gridHeight"
:page=
"false"
:size=
"size"
></DataGrid>
<Modal
v-model=
"editModal"
title=
"编辑"
footer-hide
width=
"800"
>
<Edit
:row=
"rowData"
@
on-close=
"cancel"
@
on-option-ok=
"addOk"
/>
</Modal>
</Modal>
<Modal
v-model=
"insertlModal"
:title=
"insertTItle"
@
on-ok=
"insertOk"
@
on-cancel=
"cancel"
>
<Modal
v-model=
"insertlModal"
:title=
"insertTItle"
@
on-ok=
"insertOk"
@
on-cancel=
"cancel"
>
<p>
确定进行
{{
insertTItle
}}
操作?
</p>
<p>
确定进行
{{
insertTItle
}}
操作?
</p>
</Modal>
</Modal>
<Modal
v-model=
"setParsModal"
title=
"工序参数设置"
footer-hide
width=
"1000"
>
<Modal
v-model=
"setParsModal"
title=
"工序参数设置"
footer-hide
width=
"1000"
>
<Add
<Add
@
on-parameter-ok=
"addOk"
@
on-close=
"cancel"
:opTaskPk=
"setParams.opTaskPk"
:partTaskPk=
"setParams.partTaskPk"
:taskSeq=
"setParams.taskSeq"
:count=
"setParams.count"
:row=
"rowData"
/>
@
on-parameter-ok=
"addOk"
@
on-close=
"cancel"
:opTaskPk=
"setParams.opTaskPk"
:partTaskPk=
"setParams.partTaskPk"
:taskSeq=
"setParams.taskSeq"
:count=
"setParams.count"
:row=
"rowData"
/>
</Modal>
</Modal>
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
import
Api
from
"../api"
;
import
Api
from
"../api"
;
import
Edit
from
"./edit"
;
import
Edit
from
"./edit"
;
import
Add
from
"../options"
;
import
Add
from
"../options"
;
export
default
{
export
default
{
name
:
"list"
,
name
:
"list"
,
components
:
{
components
:
{
Edit
,
Edit
,
Add
Add
},
},
props
:
{
props
:
{
rowId
:
{
type
:
Number
}
rowId
:
{
},
type
:
Number
data
()
{
return
{
action
:
Api
.
index
,
easySearch
:
{
keys
:
{
op
:
"task_seq"
,
value
:
null
}
},
setParsModal
:
false
,
editModal
:
false
,
detailModal
:
false
,
insertlModal
:
false
,
rowIndex
:
null
,
curId
:
0
,
gridHeight
:
150
,
size
:
"small"
,
columns
:
[
{
title
:
" "
,
width
:
130
},
{
key
:
"insert_flag"
,
title
:
this
.
l
(
"insert_flag"
),
align
:
"center"
,
high
:
true
,
width
:
60
,
render
:
(
h
,
params
)
=>
{
return
h
(
"Tooltip"
,
{
props
:
{
content
:
params
.
row
.
insert_flag
==
1
?
"取消插单"
:
"进行插单"
,
placement
:
"top"
},
class
:
"ico"
},
[
h
(
"Icon"
,
{
attrs
:
{
type
:
params
.
row
.
insert_flag
==
1
?
"ios-flag"
:
"ios-flag-outline"
,
size
:
20
,
color
:
params
.
row
.
insert_flag
==
1
?
"#2680EB"
:
"#aaa"
},
on
:
{
click
:
()
=>
this
.
changeFlag
(
params
.
row
.
op_task_pk
,
params
.
index
)
}
})
]
);
}
},
{
key
:
"task_seq"
,
title
:
this
.
l
(
"task_seq"
),
align
:
"left"
,
easy
:
true
,
high
:
true
},
{
key
:
"op_task_pk"
,
title
:
this
.
l
(
"op_task_pk"
),
align
:
"left"
,
high
:
true
,
hide
:
true
},
{
key
:
"task_name"
,
title
:
this
.
l
(
"task_name"
),
align
:
"left"
,
easy
:
true
,
high
:
true
,
hide
:
true
},
{
key
:
"taskseq_des"
,
title
:
this
.
l
(
"task_name"
),
align
:
"left"
,
easy
:
true
,
high
:
true
},
{
key
:
"part_task_pk"
,
title
:
this
.
l
(
"part_task_pk"
),
align
:
"left"
,
high
:
true
,
hide
:
true
},
{
key
:
"put_into_qty"
,
title
:
this
.
l
(
"put_into_qty"
),
align
:
"left"
,
high
:
true
,
hide
:
true
},
{
key
:
"plan_start"
,
title
:
this
.
l
(
"plan_start"
),
align
:
"center"
,
high
:
true
,
width
:
140
,
hide
:
true
},
{
key
:
"plan_finish"
,
title
:
this
.
l
(
"plan_finish"
),
align
:
"center"
,
high
:
true
,
width
:
140
,
hide
:
true
},
{
key
:
"first_equip"
,
title
:
this
.
l
(
"first_equip"
),
align
:
"left"
,
easy
:
true
,
high
:
true
},
{
key
:
"setup_time"
,
title
:
this
.
l
(
"setup_time"
),
align
:
"right"
,
high
:
true
,
type
:
"outputTime"
},
{
key
:
"run_time"
,
title
:
this
.
l
(
"run_time"
),
align
:
"right"
,
high
:
true
,
type
:
"outputTime"
},
{
key
:
"outside_time"
,
title
:
this
.
l
(
"outside_time"
),
align
:
"right"
,
high
:
true
,
type
:
"outputTime"
},
{
key
:
"transport_time"
,
title
:
this
.
l
(
"transport_time"
),
align
:
"right"
,
high
:
true
,
hide
:
true
,
type
:
"outputTime"
},
{
key
:
"check_time"
,
title
:
this
.
l
(
"check_time"
),
align
:
"right"
,
high
:
true
,
hide
:
true
,
type
:
"outputTime"
},
{
key
:
"efficiency_value"
,
title
:
this
.
l
(
"efficiency_value"
),
align
:
"right"
,
high
:
true
},
{
key
:
"machine_rule"
,
title
:
this
.
l
(
"machine_rule"
),
align
:
"center"
,
easy
:
true
,
high
:
true
,
width
:
140
},
{
key
:
"singleout"
,
title
:
this
.
l
(
"singleout"
),
align
:
"left"
,
high
:
true
,
hide
:
true
},
{
key
:
"equip_type"
,
title
:
this
.
l
(
"equip_type"
),
align
:
"left"
,
easy
:
true
,
high
:
true
,
hide
:
true
},
{
key
:
"first_equip"
,
title
:
this
.
l
(
"first_equip"
),
align
:
"left"
,
easy
:
true
,
high
:
true
,
hide
:
true
},
{
key
:
"cal_id"
,
title
:
this
.
l
(
"cal_id"
),
align
:
"left"
,
easy
:
true
,
high
:
true
},
{
key
:
"plan_method"
,
title
:
this
.
l
(
"plan_method"
),
align
:
"left"
,
easy
:
true
,
high
:
true
},
{
key
:
"over_time"
,
title
:
this
.
l
(
"over_time"
),
align
:
"left"
,
easy
:
true
,
high
:
true
},
{
key
:
"isdiscrete"
,
title
:
this
.
l
(
"isdiscrete"
),
align
:
"center"
,
easy
:
true
,
high
:
true
},
{
key
:
"discrete_value"
,
title
:
this
.
l
(
"discrete_value"
),
align
:
"right"
,
high
:
true
},
{
key
:
"multi_machine"
,
title
:
this
.
l
(
"multi_machine"
),
align
:
"center"
,
easy
:
true
,
high
:
true
},
{
key
:
"notes"
,
title
:
this
.
l
(
"notes"
),
align
:
"left"
,
easy
:
true
,
high
:
true
,
hide
:
true
},
{
key
:
"workshopcode"
,
title
:
this
.
l
(
"workshopcode"
),
align
:
"left"
,
easy
:
true
,
high
:
true
,
hide
:
true
},
{
key
:
"routing_detail_id"
,
title
:
this
.
l
(
"routing_detail_id"
),
align
:
"left"
,
high
:
true
,
hide
:
true
},
{
key
:
"routing_header_id"
,
title
:
this
.
l
(
"routing_header_id"
),
align
:
"left"
,
high
:
true
,
hide
:
true
},
{
key
:
"comb_param"
,
title
:
this
.
l
(
"comb_param"
),
align
:
"left"
,
easy
:
true
,
high
:
true
,
hide
:
true
},
{
key
:
"rule_qty"
,
title
:
this
.
l
(
"rule_qty"
),
align
:
"left"
,
high
:
true
,
hide
:
true
},
{
title
:
"操作"
,
key
:
"action"
,
width
:
140
,
align
:
"center"
,
render
:
(
h
,
params
)
=>
{
return
h
(
"div"
,
{
class
:
"action"
},
[
h
(
"op"
,
{
attrs
:
{
icon
:
"md-options"
,
type
:
"icon"
,
oprate
:
"detail"
,
title
:
"工序参数设置"
},
on
:
{
click
:
()
=>
this
.
openParms
(
params
.
row
)
}
}),
h
(
"op"
,
{
attrs
:
{
icon
:
"md-create"
,
type
:
"icon"
,
title
:
"編輯工序"
,
oprate
:
"edit"
},
on
:
{
click
:
()
=>
this
.
edit
(
params
.
row
)
}
}),
h
(
"op"
,
{
attrs
:
{
icon
:
"ios-trash"
,
type
:
"icon"
,
title
:
"删除工序"
,
oprate
:
"delete"
,
msg
:
"确认要刪除工序吗?"
},
on
:
{
click
:
()
=>
this
.
remove
(
params
.
row
,
params
.
index
)
}
})
]);
}
}
],
data1
:
[],
insertTItle
:
"插单"
,
selectRoutingDetail
:
{},
//需那种工序
//设置参数开始
setParams
:
{
opTaskPk
:
0
,
//工单ID
partTaskPk
:
0
,
//生产计划ID
taskSeq
:
""
,
//工序编号
count
:
0
//生产计划数量
},
//设置参数结束
rowData
:
{}
//编辑时传入行数据
};
},
mounted
()
{
this
.
loadData
(
this
.
rowId
);
},
async
fetch
({
store
,
params
})
{
await
store
.
dispatch
(
"loadDictionary"
);
// 加载数据字典
},
methods
:
{
//根据点击副组件传过来id进行加载数据
loadData
(
expendId
)
{
let
params
=
{
id
:
expendId
};
Api
.
getbyorderid
(
params
).
then
(
res
=>
{
if
(
res
.
success
)
{
this
.
gridHeight
=
50
;
this
.
gridHeight
=
(
res
.
result
.
length
+
1
)
*
47
;
this
.
data1
=
res
.
result
;
}
}
});
},
},
data
()
{
return
{
action
:
Api
.
index
,
easySearch
:
{
keys
:
{
op
:
"task_seq"
,
value
:
null
}
},
setParsModal
:
false
,
editModal
:
false
,
detailModal
:
false
,
insertlModal
:
false
,
rowIndex
:
null
,
curId
:
0
,
gridHeight
:
150
,
size
:
"small"
,
columns
:
[{
title
:
" "
,
width
:
130
},
{
key
:
"insert_flag"
,
title
:
this
.
l
(
"insert_flag"
),
align
:
"center"
,
high
:
true
,
width
:
60
,
render
:
(
h
,
params
)
=>
{
return
h
(
"Tooltip"
,
{
props
:
{
content
:
params
.
row
.
insert_flag
==
1
?
"取消插单"
:
"进行插单"
,
placement
:
"top"
},
class
:
"ico"
},
[
h
(
"Icon"
,
{
attrs
:
{
type
:
params
.
row
.
insert_flag
==
1
?
"ios-flag"
:
"ios-flag-outline"
,
size
:
20
,
color
:
params
.
row
.
insert_flag
==
1
?
"#2680EB"
:
"#aaa"
},
on
:
{
click
:
()
=>
this
.
changeFlag
(
params
.
row
.
op_task_pk
,
params
.
index
)
}
})
]
);
}
},
{
key
:
"task_seq"
,
title
:
this
.
l
(
"task_seq"
),
align
:
"left"
,
easy
:
true
,
high
:
true
},
{
key
:
"op_task_pk"
,
title
:
this
.
l
(
"op_task_pk"
),
align
:
"left"
,
high
:
true
,
hide
:
true
},
{
key
:
"task_name"
,
title
:
this
.
l
(
"task_name"
),
align
:
"left"
,
easy
:
true
,
high
:
true
,
hide
:
true
},
{
key
:
"taskseq_des"
,
title
:
this
.
l
(
"task_name"
),
align
:
"left"
,
easy
:
true
,
high
:
true
},
{
key
:
"part_task_pk"
,
title
:
this
.
l
(
"part_task_pk"
),
align
:
"left"
,
high
:
true
,
hide
:
true
},
{
key
:
"put_into_qty"
,
title
:
this
.
l
(
"put_into_qty"
),
align
:
"left"
,
high
:
true
,
hide
:
true
},
{
key
:
"plan_start"
,
title
:
this
.
l
(
"plan_start"
),
align
:
"center"
,
high
:
true
,
width
:
140
,
hide
:
true
},
{
key
:
"plan_finish"
,
title
:
this
.
l
(
"plan_finish"
),
align
:
"center"
,
high
:
true
,
width
:
140
,
hide
:
true
},
{
key
:
"first_equip"
,
title
:
this
.
l
(
"first_equip"
),
align
:
"left"
,
easy
:
true
,
high
:
true
},
{
key
:
"setup_time"
,
title
:
this
.
l
(
"setup_time"
),
align
:
"right"
,
high
:
true
,
type
:
"outputTime"
},
{
key
:
"run_time"
,
title
:
this
.
l
(
"run_time"
),
align
:
"right"
,
high
:
true
,
type
:
"outputTime"
},
{
key
:
"outside_time"
,
title
:
this
.
l
(
"outside_time"
),
align
:
"right"
,
high
:
true
,
type
:
"outputTime"
},
{
key
:
"transport_time"
,
title
:
this
.
l
(
"transport_time"
),
align
:
"right"
,
high
:
true
,
hide
:
true
,
type
:
"outputTime"
},
{
key
:
"check_time"
,
title
:
this
.
l
(
"check_time"
),
align
:
"right"
,
high
:
true
,
hide
:
true
,
type
:
"outputTime"
},
{
key
:
"efficiency_value"
,
title
:
this
.
l
(
"efficiency_value"
),
align
:
"right"
,
high
:
true
},
{
key
:
"machine_rule"
,
title
:
this
.
l
(
"machine_rule"
),
align
:
"center"
,
easy
:
true
,
high
:
true
,
width
:
140
},
{
key
:
"singleout"
,
title
:
this
.
l
(
"singleout"
),
align
:
"left"
,
high
:
true
,
hide
:
true
},
{
key
:
"equip_type"
,
title
:
this
.
l
(
"equip_type"
),
align
:
"left"
,
easy
:
true
,
high
:
true
,
hide
:
true
},
{
key
:
"first_equip"
,
title
:
this
.
l
(
"first_equip"
),
align
:
"left"
,
easy
:
true
,
high
:
true
,
hide
:
true
},
{
key
:
"cal_id"
,
title
:
this
.
l
(
"cal_id"
),
align
:
"left"
,
easy
:
true
,
high
:
true
},
{
key
:
"plan_method"
,
title
:
this
.
l
(
"plan_method"
),
align
:
"left"
,
easy
:
true
,
high
:
true
},
{
key
:
"over_time"
,
title
:
this
.
l
(
"over_time"
),
align
:
"left"
,
easy
:
true
,
high
:
true
},
{
key
:
"isdiscrete"
,
title
:
this
.
l
(
"isdiscrete"
),
align
:
"center"
,
easy
:
true
,
high
:
true
},
{
key
:
"discrete_value"
,
title
:
this
.
l
(
"discrete_value"
),
align
:
"right"
,
high
:
true
},
{
key
:
"multi_machine"
,
title
:
this
.
l
(
"multi_machine"
),
align
:
"center"
,
easy
:
true
,
high
:
true
},
{
key
:
"notes"
,
title
:
this
.
l
(
"notes"
),
align
:
"left"
,
easy
:
true
,
high
:
true
,
hide
:
true
},
//插单事件start----
{
changeFlag
(
id
,
index
)
{
key
:
"workshopcode"
,
this
.
rowIndex
=
index
;
title
:
this
.
l
(
"workshopcode"
),
if
(
this
.
data1
[
this
.
rowIndex
].
insert_flag
==
1
)
{
align
:
"left"
,
this
.
insertTItle
=
"取消插单"
;
easy
:
true
,
}
else
{
high
:
true
,
this
.
insertTItle
=
"插单"
;
hide
:
true
}
},
this
.
insertlModal
=
true
;
{
},
key
:
"routing_detail_id"
,
insertOk
()
{
title
:
this
.
l
(
"routing_detail_id"
),
//this.loadData(this.row)
align
:
"left"
,
if
(
this
.
data1
[
this
.
rowIndex
].
insert_flag
==
1
)
{
high
:
true
,
//根据插单数据状态进行插单或取消插单操作
hide
:
true
let
params1
=
{
},
partTaskPks
:
[],
{
opTaskPks
:
[
this
.
data1
[
this
.
rowIndex
].
op_task_pk
]
key
:
"routing_header_id"
,
title
:
this
.
l
(
"routing_header_id"
),
align
:
"left"
,
high
:
true
,
hide
:
true
},
{
key
:
"comb_param"
,
title
:
this
.
l
(
"comb_param"
),
align
:
"left"
,
easy
:
true
,
high
:
true
,
hide
:
true
},
{
key
:
"rule_qty"
,
title
:
this
.
l
(
"rule_qty"
),
align
:
"left"
,
high
:
true
,
hide
:
true
},
{
title
:
"操作"
,
key
:
"action"
,
width
:
140
,
align
:
"center"
,
render
:
(
h
,
params
)
=>
{
return
h
(
"div"
,
{
class
:
"action"
},
[
h
(
"op"
,
{
attrs
:
{
icon
:
"md-options"
,
type
:
"icon"
,
oprate
:
"detail"
,
title
:
"工序参数设置"
},
on
:
{
click
:
()
=>
this
.
openParms
(
params
.
row
)
}
}),
h
(
"op"
,
{
attrs
:
{
icon
:
"md-create"
,
type
:
"icon"
,
title
:
"編輯工序"
,
oprate
:
"edit"
},
on
:
{
click
:
()
=>
this
.
edit
(
params
.
row
)
}
}),
h
(
"op"
,
{
attrs
:
{
icon
:
"ios-trash"
,
type
:
"icon"
,
title
:
"删除工序"
,
oprate
:
"delete"
,
msg
:
"确认要刪除工序吗?"
},
on
:
{
click
:
()
=>
this
.
remove
(
params
.
row
,
params
.
index
)
}
})
]);
}
}
],
data1
:
[],
insertTItle
:
"插单"
,
selectRoutingDetail
:
{},
//需那种工序
//设置参数开始
setParams
:
{
opTaskPk
:
0
,
//工单ID
partTaskPk
:
0
,
//生产计划ID
taskSeq
:
""
,
//工序编号
count
:
0
//生产计划数量
},
//设置参数结束
rowData
:
{}
//编辑时传入行数据
};
};
Api
.
cancelinsertorder
(
params1
)
},
.
then
(
res
=>
{
mounted
()
{
if
(
res
.
success
)
{
this
.
loadData
(
this
.
rowId
);
this
.
$Message
.
success
(
"取消插单成功!"
);
},
this
.
data1
[
this
.
rowIndex
].
insert_flag
=
0
;
async
fetch
({
store
,
params
})
{
await
store
.
dispatch
(
"loadDictionary"
);
// 加载数据字典
},
methods
:
{
//根据点击副组件传过来id进行加载数据
loadData
(
expendId
)
{
let
params
=
{
id
:
expendId
};
Api
.
getbyorderid
(
params
).
then
(
res
=>
{
if
(
res
.
success
)
{
this
.
gridHeight
=
50
;
this
.
gridHeight
=
(
res
.
result
.
length
+
1
)
*
47
;
this
.
data1
=
res
.
result
;
}
});
},
//插单事件start----
changeFlag
(
id
,
index
)
{
this
.
rowIndex
=
index
;
if
(
this
.
data1
[
this
.
rowIndex
].
insert_flag
==
1
)
{
this
.
insertTItle
=
"取消插单"
;
}
else
{
}
else
{
this
.
$Message
.
error
(
"取消插单失败!"
)
;
this
.
insertTItle
=
"插单"
;
}
}
})
this
.
insertlModal
=
true
;
.
catch
(
err
=>
{
},
this
.
$Message
.
error
(
"数据异常!"
);
insertOk
()
{
});
//this.loadData(this.row)
}
else
{
if
(
this
.
data1
[
this
.
rowIndex
].
insert_flag
==
1
)
{
let
params
=
{
//根据插单数据状态进行插单或取消插单操作
partTaskPks
:
[],
let
params1
=
{
opTaskPks
:
[
this
.
data1
[
this
.
rowIndex
].
op_task_pk
]
partTaskPks
:
[],
};
opTaskPks
:
[
this
.
data1
[
this
.
rowIndex
].
op_task_pk
]
Api
.
saveinsertorder
(
params
)
};
.
then
(
res
=>
{
Api
.
cancelinsertorder
(
params1
)
if
(
res
.
success
)
{
.
then
(
res
=>
{
this
.
$Message
.
success
(
"插单成功!"
);
if
(
res
.
success
)
{
this
.
data1
[
this
.
rowIndex
].
insert_flag
=
1
;
this
.
$Message
.
success
(
"取消插单成功!"
);
this
.
data1
[
this
.
rowIndex
].
insert_flag
=
0
;
}
else
{
this
.
$Message
.
error
(
"取消插单失败!"
);
}
})
.
catch
(
err
=>
{
this
.
$Message
.
error
(
"数据异常!"
);
});
}
else
{
}
else
{
this
.
$Message
.
error
(
"插单失败!"
);
let
params
=
{
partTaskPks
:
[],
opTaskPks
:
[
this
.
data1
[
this
.
rowIndex
].
op_task_pk
]
};
Api
.
saveinsertorder
(
params
)
.
then
(
res
=>
{
if
(
res
.
success
)
{
this
.
$Message
.
success
(
"插单成功!"
);
this
.
data1
[
this
.
rowIndex
].
insert_flag
=
1
;
}
else
{
this
.
$Message
.
error
(
"插单失败!"
);
}
})
.
catch
(
err
=>
{
this
.
$Message
.
error
(
"数据异常!"
);
});
}
}
})
this
.
setParsModal
=
false
;
.
catch
(
err
=>
{
this
.
detailModal
=
false
;
this
.
$Message
.
error
(
"数据异常!"
);
this
.
editModal
=
false
;
});
this
.
insertlModal
=
false
;
}
},
this
.
setParsModal
=
false
;
//插单事件end----
this
.
detailModal
=
false
;
this
.
editModal
=
false
;
this
.
insertlModal
=
false
;
},
//插单事件end----
//单个工序进行参设置start----
//单个工序进行参设置start----
openParms
(
row
)
{
openParms
(
row
)
{
this
.
setParams
=
{
this
.
setParams
=
{
opTaskPk
:
row
.
op_task_pk
,
opTaskPk
:
row
.
op_task_pk
,
partTaskPk
:
row
.
part_task_pk
,
partTaskPk
:
row
.
part_task_pk
,
taskSeq
:
row
.
task_seq
,
taskSeq
:
row
.
task_seq
,
count
:
row
.
put_into_qty
count
:
row
.
put_into_qty
};
};
this
.
rowData
=
row
;
this
.
rowData
=
row
;
this
.
setParsModal
=
true
;
this
.
setParsModal
=
true
;
},
},
//单个工序进行参数设置end----
//单个工序进行参数设置end----
//编辑工序start----
//编辑工序start----
edit
(
row
)
{
edit
(
row
)
{
this
.
editModal
=
true
;
this
.
editModal
=
true
;
this
.
rowData
=
row
;
this
.
rowData
=
row
;
},
},
//编辑工序end----
//编辑工序end----
//删除工序事件start-----
//删除工序事件start-----
remove
(
row
,
index
)
{
remove
(
row
,
index
)
{
//this.curId = Number(id);
//this.curId = Number(id);
this
.
rowIndex
=
index
;
this
.
rowIndex
=
index
;
this
.
selectRoutingDetail
=
row
;
this
.
selectRoutingDetail
=
row
;
let
params
=
{
let
params
=
{
partPk
:
this
.
selectRoutingDetail
.
part_task_pk
,
partPk
:
this
.
selectRoutingDetail
.
part_task_pk
,
detailIdstr
:
this
.
selectRoutingDetail
.
routing_detail_id
detailIdstr
:
this
.
selectRoutingDetail
.
routing_detail_id
};
};
Api
.
removeoptasksimluate
(
params
).
then
(
r
=>
{
Api
.
removeoptasksimluate
(
params
).
then
(
r
=>
{
if
(
r
.
success
)
{
if
(
r
.
success
)
{
this
.
$Message
.
success
(
"删除成功"
);
this
.
$Message
.
success
(
"删除成功"
);
this
.
data1
.
splice
(
this
.
rowIndex
,
1
);
this
.
data1
.
splice
(
this
.
rowIndex
,
1
);
}
});
},
addOk
()
{
this
.
data1
=
[];
this
.
loadData
(
this
.
rowId
);
this
.
setParsModal
=
false
;
this
.
editModal
=
false
;
},
//删除工序时间end-----
cancel
()
{
this
.
curId
=
0
;
this
.
setParsModal
=
false
;
this
.
detailModal
=
false
;
this
.
editModal
=
false
;
this
.
deletedlModal
=
false
;
this
.
insertlModal
=
false
;
},
l
(
key
)
{
let
vkey
=
"mes_op_task_plan_simulate"
+
"."
+
key
;
return
this
.
$t
(
vkey
)
||
key
;
}
}
});
},
addOk
()
{
this
.
data1
=
[];
this
.
loadData
(
this
.
rowId
);
this
.
setParsModal
=
false
;
this
.
editModal
=
false
;
},
//删除工序时间end-----
cancel
()
{
this
.
curId
=
0
;
this
.
setParsModal
=
false
;
this
.
detailModal
=
false
;
this
.
editModal
=
false
;
this
.
deletedlModal
=
false
;
this
.
insertlModal
=
false
;
},
l
(
key
)
{
let
vkey
=
"mes_op_task_plan_simulate"
+
"."
+
key
;
return
this
.
$t
(
vkey
)
||
key
;
}
}
}
};
};
</
script
>
</
script
>
<
style
lang=
"less"
>
<
style
lang=
"less"
>
.excute table tr th span,
.excute table tr th span,
.excute table tr td {
.excute table tr td {
font-size: 10px;
font-size: 10px;
}
}
</
style
>
</
style
>
pages/aps/plan/index.vue
View file @
77b1cf7c
<
template
>
<
template
>
<div
class=
"h100"
>
<div
class=
"h100"
>
<DataGrid
<DataGrid
:columns=
"columns"
ref=
"grid"
:action=
"action"
@
on-selection-change=
"selectInfo"
:batch=
"false"
>
:columns=
"columns"
<template
slot=
"easySearch"
>
ref=
"grid"
<Form
ref=
"formInline"
:model=
"easySearch"
inline
>
:action=
"action"
<FormItem
prop=
"keys"
>
@
on-selection-change=
"selectInfo"
<Input
search
enter-button
placeholder=
"请输入关键字订单编号/项目名称"
v-model=
"easySearch.keys.value"
v-width=
"300"
@
on-search=
"search"
/>
:batch=
"false"
</FormItem>
>
</Form>
<template
slot=
"easySearch"
>
</
template
>
<Form
ref=
"formInline"
:model=
"easySearch"
inline
>
<
template
slot=
"searchBack"
>
<FormItem
prop=
"keys"
>
<Badge
:count=
"this.$store.state.countAps"
overflow-count=
"99"
style=
"margin-right:15px;"
type=
"info"
v-if=
"showAps"
>
<Input
<a
href=
"javascript:;"
@
click=
"goAps"
>
APS排产
</a>
search
</Badge>
enter-button
<Badge
:count=
"this.$store.state.countAi"
overflow-count=
"99"
style=
"margin-right:15px;"
type=
"info"
v-if=
"showAi"
>
placeholder=
"请输入关键字订单编号/项目名称"
<a
href=
"javascript:;"
@
click=
"goAi"
>
智能排产
</a>
v-model=
"easySearch.keys.value"
</Badge>
v-width=
"300"
<Badge
:count=
"this.$store.state.countAll"
overflow-count=
"99"
style=
"margin-right:15px;"
type=
"info"
v-if=
"showAll"
>
@
on-search=
"search"
<a
@
click=
"goCemplate"
>
整机排产
</a>
/>
</Badge>
</FormItem>
<Badge
:count=
"this.$store.state.countRun"
overflow-count=
"99"
type=
"info"
v-if=
"showRun"
>
</Form>
<a
@
click=
"goStream"
>
流水排产
</a>
</
template
>
</Badge>
<
template
slot=
"searchBack"
>
</
template
>
<Badge
<
template
slot=
"searchForm"
>
:count=
"this.$store.state.countAps"
<Search
/>
overflow-count=
"99"
</
template
>
style=
"margin-right:15px;"
<
template
slot=
"buttons"
></
template
>
type=
"info"
v-if=
"showAps"
>
<a
href=
"javascript:;"
@
click=
"goAps"
>
APS排产
</a>
</Badge>
<Badge
:count=
"this.$store.state.countAi"
overflow-count=
"99"
style=
"margin-right:15px;"
type=
"info"
v-if=
"showAi"
>
<a
href=
"javascript:;"
@
click=
"goAi"
>
智能排产
</a>
</Badge>
<Badge
:count=
"this.$store.state.countAll"
overflow-count=
"99"
style=
"margin-right:15px;"
type=
"info"
v-if=
"showAll"
>
<a
@
click=
"goCemplate"
>
整机排产
</a>
</Badge>
<Badge
:count=
"this.$store.state.countRun"
overflow-count=
"99"
type=
"info"
v-if=
"showRun"
>
<a
@
click=
"goStream"
>
流水排产
</a>
</Badge>
</
template
>
<
template
slot=
"searchForm"
>
<Search
/>
</
template
>
<
template
slot=
"buttons"
></
template
>
</DataGrid>
</DataGrid>
<FooterToolbar
extra
v-if=
"footerBar"
class=
"ftball"
>
<FooterToolbar
extra
v-if=
"footerBar"
class=
"ftball"
>
<Row>
<Row>
<Checkbox
@
on-change=
"handleSelectAll(single)"
v-model=
"single"
>
全选
</Checkbox>
<Checkbox
@
on-change=
"handleSelectAll(single)"
v-model=
"single"
>
全选
</Checkbox>
<span
class=
"footerSpan"
>
已选 {{selectCount}} 项
</span>
<span
class=
"footerSpan"
>
已选 {{selectCount}} 项
</span>
<Button
type=
"primary"
@
click=
"modalDispatch"
>
工艺派发
</Button>
<Button
type=
"primary"
@
click=
"modalDispatch"
>
工艺派发
</Button>
<Button
type=
"primary"
@
click=
"modalSchedule"
>
移入排产
</Button>
<Button
type=
"primary"
@
click=
"modalSchedule"
>
移入排产
</Button>
<Button
@
click=
"canselFooter"
>
取消
</Button>
<Button
@
click=
"canselFooter"
>
取消
</Button>
</Row>
</Row>
</FooterToolbar>
</FooterToolbar>
<Modal
v-model=
"addModal"
title=
"新增"
footer-hide
>
<Modal
v-model=
"addModal"
title=
"新增"
footer-hide
>
<Add
@
on-close=
"cancel"
@
on-ok=
"addOk"
/>
<Add
@
on-close=
"cancel"
@
on-ok=
"addOk"
/>
</Modal>
</Modal>
<Modal
v-model=
"editModal"
title=
"编辑"
footer-hide
>
<Modal
v-model=
"editModal"
title=
"编辑"
footer-hide
>
<Edit
:eid=
"curId"
@
on-close=
"cancel"
@
on-ok=
"addOk"
/>
<Edit
:eid=
"curId"
@
on-close=
"cancel"
@
on-ok=
"addOk"
/>
</Modal>
</Modal>
<Modal
v-model=
"detailModal"
title=
"详情"
>
<Modal
v-model=
"detailModal"
title=
"详情"
>
<Detail
:eid=
"curId"
/>
<Detail
:eid=
"curId"
/>
</Modal>
</Modal>
<Modal
v-model=
"deletelModal"
title=
"删除"
@
on-ok=
"removeOk"
@
on-cancel=
"cancel"
>
<Modal
v-model=
"deletelModal"
title=
"删除"
@
on-ok=
"removeOk"
@
on-cancel=
"cancel"
>
<p>
确定删除?
</p>
<p>
确定删除?
</p>
</Modal>
</Modal>
<Modal
v-model=
"dispatchModal"
title=
"工艺派发"
footer-hide
width=
"800"
>
<Modal
v-model=
"dispatchModal"
title=
"工艺派发"
footer-hide
width=
"800"
>
<Dispatch
@
on-close=
"cancel"
:ids=
"listBatchIds"
@
on-ok=
"addOk"
/>
<Dispatch
@
on-close=
"cancel"
:ids=
"listBatchIds"
@
on-ok=
"addOk"
/>
</Modal>
</Modal>
<Modal
v-model=
"scheduleModal"
title=
"移入排产"
width=
"800"
>
<Modal
v-model=
"scheduleModal"
title=
"移入排产"
width=
"800"
>
<p>
</p>
<p>
</p>
<h4>
请选择排产模型:
</h4>
<h4>
请选择排产模型:
</h4>
<!--
<!--
<Dictionary
<Dictionary
code="aps.plan.scheduleType"
code="aps.plan.scheduleType"
v-model="scheduleType"
v-model="scheduleType"
...
@@ -96,49 +65,41 @@
...
@@ -96,49 +65,41 @@
@on-change="onchangeScheduleType"
@on-change="onchangeScheduleType"
></Dictionary>
></Dictionary>
-->
-->
<RadioGroup
v-model=
"scheduleType"
class=
"radioList"
@
on-change=
"onchangeScheduleType"
>
<RadioGroup
v-model=
"scheduleType"
class=
"radioList"
@
on-change=
"onchangeScheduleType"
>
<Radio
:label=
"1"
border
:disabled=
"this.$store.state.countAi>0"
>
<Radio
:label=
"1"
border
:disabled=
"this.$store.state.countAi>0"
>
<span>
Aps排产
</span>
<span>
Aps排产
</span>
</Radio>
</Radio>
<Radio
:label=
"4"
border
:disabled=
"this.$store.state.countAps>0"
>
<Radio
:label=
"4"
border
:disabled=
"this.$store.state.countAps>0"
>
<span>
智能排产
</span>
<span>
智能排产
</span>
</Radio>
</Radio>
<Radio
:label=
"2"
border
>
<Radio
:label=
"2"
border
>
<span>
整机排产
</span>
<span>
整机排产
</span>
</Radio>
</Radio>
<Radio
:label=
"3"
border
>
<Radio
:label=
"3"
border
>
<span>
流水排产
</span>
<span>
流水排产
</span>
</Radio>
</Radio>
</RadioGroup>
</RadioGroup>
<p
class=
"pl30 pt10"
v-show=
"scheduleType!=null"
>
<p
class=
"pl30 pt10"
v-show=
"scheduleType!=null"
>
确定将订单
确定将订单
<span
class=
"fwBold"
>
{{resultsOrderList}}
</span>
移入
<span
class=
"fwBold"
>
{{resultsOrderList}}
</span>
移入
<span
class=
"red fwBold"
>
{{scheduleTypeName}}
</span>
?
<span
class=
"red fwBold"
>
{{scheduleTypeName}}
</span>
?
</p>
</p>
<p>
</p>
<p>
</p>
<p>
</p>
<p>
</p>
<div
slot=
"footer"
>
<div
slot=
"footer"
>
<Button
@
click=
"cancel"
>
取消
</Button>
<Button
@
click=
"cancel"
>
取消
</Button>
<Button
type=
"primary"
@
click=
"scheduleOk"
>
确定
</Button>
<Button
type=
"primary"
@
click=
"scheduleOk"
>
确定
</Button>
</div>
</div>
</Modal>
</Modal>
<Modal
v-model=
"orderSupportModal"
title=
"配套下发"
footer-hide
width=
"1300"
>
<Modal
v-model=
"orderSupportModal"
title=
"配套下发"
footer-hide
width=
"1300"
>
<orderSupport
ref=
"orderSupport"
></orderSupport>
<orderSupport
ref=
"orderSupport"
></orderSupport>
</Modal>
</Modal>
<Modal
v-model=
"modalAccessory"
:title=
"title"
fullscreen
footer-hide
>
<Modal
v-model=
"modalAccessory"
:title=
"title"
fullscreen
footer-hide
>
<component
<component
:is=
"details"
:eid=
"orderId"
:mesCode=
"mesCode"
:productName=
"productName"
:drawnNumber=
"drawnNumber"
:count=
"count"
@
on-close=
"cancel"
@
on-ok=
"addOk"
/>
:is=
"details"
:eid=
"orderId"
:mesCode=
"mesCode"
:productName=
"productName"
:drawnNumber=
"drawnNumber"
:count=
"count"
@
on-close=
"cancel"
@
on-ok=
"addOk"
/>
</Modal>
</Modal>
</div>
</div>
</template>
</template>
<
script
>
<
script
>
import
Api
from
"./api"
;
import
Api
from
"./api"
;
import
Add
from
"./add"
;
import
Add
from
"./add"
;
...
@@ -148,704 +109,706 @@ import Search from "./search";
...
@@ -148,704 +109,706 @@ import Search from "./search";
import
Dispatch
from
"./dispatch"
;
import
Dispatch
from
"./dispatch"
;
import
orderSupport
from
"../../produce/orderSupport"
;
import
orderSupport
from
"../../produce/orderSupport"
;
export
default
{
export
default
{
name
:
"list"
,
name
:
"list"
,
components
:
{
components
:
{
Add
,
Add
,
Edit
,
Edit
,
Detail
,
Detail
,
Search
,
Search
,
Dispatch
,
Dispatch
,
orderSupport
,
orderSupport
,
},
},
data
()
{
data
()
{
return
{
return
{
action
:
Api
.
index
,
action
:
Api
.
index
,
easySearch
:
{
easySearch
:
{
keys
:
{
keys
:
{
op
:
"mesCode,projectNumber"
,
op
:
"mesCode,projectNumber"
,
value
:
null
,
value
:
null
,
},
},
addModal
:
false
,
editModal
:
false
,
detailModal
:
false
,
deletelModal
:
false
,
dispatchModal
:
false
,
scheduleModal
:
false
,
orderSupportModal
:
false
,
curId
:
0
,
statuList
:
this
.
$store
.
getters
.
dictionaryByKey
(
"aps.plan.supportingStatus"
)
||
[],
name
:
""
,
items
:
null
,
title
:
""
,
details
:
null
,
uId
:
""
,
hid
:
0
,
orderId
:
0
,
mesCode
:
""
,
productName
:
""
,
drawnNumber
:
""
,
count
:
0
,
modalAccessory
:
false
,
columns
:
[{
key
:
"selection"
,
title
:
"#"
,
type
:
"selection"
,
width
:
70
,
align
:
"center"
,
},
{
title
:
this
.
l
(
"mesCode"
),
key
:
"mesCode"
,
width
:
240
,
align
:
"left"
,
},
{
key
:
"productName"
,
title
:
this
.
l
(
"productName"
),
align
:
"left"
,
easy
:
true
,
width
:
160
,
high
:
true
,
tooltip
:
true
,
},
{
key
:
"status"
,
title
:
this
.
l
(
"status"
),
align
:
"center"
,
high
:
true
,
code
:
"plan.order.status"
,
},
{
key
:
"mainRoutingSetStatus"
,
title
:
this
.
l
(
"mainRoutingSetStatus"
),
align
:
"center"
,
high
:
true
,
code
:
"aps.plan.mainRoutingStatus"
,
},
{
key
:
"isSupportingFinish"
,
title
:
this
.
l
(
"isSupportingFinish"
),
align
:
"center"
,
render
:
(
h
,
params
)
=>
{
return
h
(
"op"
,
{
attrs
:
{
oprate
:
"detail"
,
},
style
:
{
color
:
this
.
setName
(
params
.
row
.
isSupportingFinish
).
color
,
},
on
:
{
click
:
()
=>
this
.
openAccessory
(
params
.
row
),
},
},
this
.
setName
(
params
.
row
.
isSupportingFinish
).
name
);
},
},
{
key
:
"projectNumber"
,
title
:
this
.
l
(
"projectNumber"
),
align
:
"left"
,
easy
:
true
,
high
:
true
,
},
{
key
:
"batchNumber"
,
title
:
this
.
l
(
"batchNumber"
),
align
:
"left"
,
easy
:
true
,
high
:
true
,
},
{
key
:
"urgencyLevel"
,
title
:
this
.
l
(
"urgencyLevel"
),
align
:
"left"
,
easy
:
true
,
high
:
true
,
code
:
"plan.order.urgencyLevel"
,
},
{
key
:
"taskType"
,
title
:
this
.
l
(
"taskType"
),
align
:
"left"
,
easy
:
true
,
high
:
true
,
hide
:
true
,
code
:
"plan.order.taskType"
,
},
{
key
:
"drawnNumber"
,
title
:
this
.
l
(
"drawnNumber"
),
align
:
"left"
,
easy
:
true
,
high
:
true
,
},
{
key
:
"stage"
,
title
:
this
.
l
(
"stage"
),
align
:
"left"
,
easy
:
true
,
high
:
true
,
code
:
"plan.order.stage"
,
},
{
key
:
"materialName"
,
title
:
this
.
l
(
"materialName"
),
align
:
"left"
,
easy
:
true
,
high
:
true
,
},
{
key
:
"quantity"
,
title
:
this
.
l
(
"quantity"
),
align
:
"right"
,
high
:
true
,
},
{
key
:
"routingMethod"
,
title
:
this
.
l
(
"routingMethod"
),
align
:
"left"
,
easy
:
true
,
high
:
true
,
code
:
"plan.order.routingMethod"
,
},
{
key
:
"materialWeight"
,
title
:
this
.
l
(
"materialWeight"
),
align
:
"left"
,
high
:
true
,
hide
:
true
,
},
{
key
:
"productCode"
,
title
:
this
.
l
(
"productCode"
),
align
:
"left"
,
easy
:
true
,
high
:
true
,
hide
:
true
,
},
{
key
:
"isPreschedule"
,
title
:
this
.
l
(
"isPreschedule"
),
align
:
"left"
,
high
:
true
,
code
:
"mes_xingchi_plan.mes_order.is_preschedule"
,
hide
:
true
,
},
{
key
:
"spareQty"
,
title
:
this
.
l
(
"spareQty"
),
align
:
"left"
,
high
:
true
,
hide
:
true
,
},
{
key
:
"demandStart"
,
title
:
this
.
l
(
"demandStart"
),
align
:
"left"
,
high
:
true
,
hide
:
true
,
},
{
key
:
"demandFinish"
,
title
:
this
.
l
(
"demandFinish"
),
align
:
"left"
,
high
:
true
,
hide
:
true
,
},
{
key
:
"partNamePro"
,
title
:
this
.
l
(
"partNamePro"
),
align
:
"left"
,
easy
:
true
,
high
:
true
,
hide
:
true
,
},
{
title
:
"操作"
,
key
:
"action"
,
width
:
140
,
align
:
"center"
,
render
:
(
h
,
params
)
=>
{
return
h
(
"div"
,
{
class
:
"action"
},
[
h
(
"op"
,
{
attrs
:
{
oprate
:
"detail"
,
title
:
params
.
row
.
mainRoutingSetStatus
==
0
?
"工艺派发"
:
"移入排产"
,
},
style
:
{
color
:
params
.
row
.
mainRoutingSetStatus
==
0
?
"red"
:
""
,
},
on
:
{
click
:
()
=>
params
.
row
.
mainRoutingSetStatus
==
0
||
params
.
row
.
mainRoutingSetStatus
==
1
?
this
.
goMethod
(
params
.
row
)
:
null
,
},
},
params
.
row
.
mainRoutingSetStatus
==
0
?
"工艺派发"
:
params
.
row
.
mainRoutingSetStatus
==
1
?
"移入排产"
:
""
),
h
(
"op"
,
{
attrs
:
{
oprate
:
"detail"
,
title
:
params
.
row
.
isSupportingFinish
==
2
||
params
.
row
.
isSupportingFinish
==
3
?
"配套派发"
:
""
,
},
style
:
{
color
:
params
.
row
.
mainRoutingSetStatus
==
0
?
"red"
:
""
,
},
on
:
{
click
:
()
=>
params
.
row
.
isSupportingFinish
==
2
||
params
.
row
.
isSupportingFinish
==
3
?
this
.
supportDis
(
params
.
row
)
:
null
,
},
},
params
.
row
.
isSupportingFinish
==
2
||
params
.
row
.
isSupportingFinish
==
3
?
"配套派发"
:
""
),
]);
},
},
],
selectCount
:
0
,
selectList
:
[],
footerBar
:
false
,
results
:
[],
listBatchIds
:
[],
listBatchIds1
:
[],
//临时存储选择的ids
single
:
false
,
resultsStatusArr
:
[],
resultsStatus
:
0
,
dispatchStatus
:
0
,
//派发标识
scheduleStatus
:
0
,
//排产标识
resultsOrderList
:
""
,
scheduleType
:
null
,
scheduleTypeName
:
""
,
showAps
:
false
,
showAi
:
false
,
showAll
:
false
,
showRun
:
false
,
};
},
mounted
()
{
this
.
loadInitCount
();
},
async
fetch
({
store
,
params
})
{
await
store
.
dispatch
(
"loadDictionary"
);
// 加载数据字典
},
methods
:
{
handleSelectAll
(
status
)
{
//选择列表数据
this
.
$refs
.
grid
.
selectAll
(
status
);
},
},
},
selectInfo
(
value
)
{
addModal
:
false
,
if
(
value
.
length
>
0
)
{
editModal
:
false
,
this
.
footerBar
=
true
;
detailModal
:
false
,
}
else
{
deletelModal
:
false
,
this
.
footerBar
=
false
;
dispatchModal
:
false
,
}
scheduleModal
:
false
,
this
.
selectList
=
[];
orderSupportModal
:
false
,
this
.
selectList
=
value
;
curId
:
0
,
statuList
:
this
.
selectCount
=
this
.
selectList
.
length
;
this
.
$store
.
getters
.
dictionaryByKey
(
"aps.plan.supportingStatus"
)
||
[],
let
statueArry
=
[];
name
:
""
,
let
tempmesCodeList
=
[];
items
:
null
,
this
.
resultsStatusArr
=
[];
title
:
""
,
value
.
forEach
((
data
)
=>
{
details
:
null
,
var
that
=
this
;
uId
:
""
,
statueArry
.
push
(
data
.
id
);
hid
:
0
,
this
.
resultsStatusArr
.
push
(
data
.
mainRoutingSetStatus
);
orderId
:
0
,
tempmesCodeList
.
push
(
data
.
mesCode
);
mesCode
:
""
,
});
productName
:
""
,
drawnNumber
:
""
,
let
mainRS
=
this
.
uniq
(
this
.
resultsStatusArr
);
//数组去重
count
:
0
,
if
(
mainRS
.
length
==
1
)
{
modalAccessory
:
false
,
this
.
results
=
[];
columns
:
[
this
.
results
=
statueArry
;
{
this
.
getListId
(
statueArry
);
key
:
"selection"
,
this
.
resultsOrderList
=
JSON
.
stringify
(
tempmesCodeList
)
//提示mesCode
title
:
"#"
,
.
replace
(
"["
,
""
)
type
:
"selection"
,
.
replace
(
"]"
,
""
)
width
:
70
,
.
replace
(
/
\"
/g
,
""
);
align
:
"center"
,
if
(
mainRS
[
0
]
==
0
)
{
//未派发
this
.
dispatchStatus
=
1
;
this
.
scheduleStatus
=
0
;
}
else
if
(
mainRS
[
0
]
==
1
)
{
//已派发
this
.
dispatchStatus
=
0
;
this
.
scheduleStatus
=
1
;
}
else
{
//派发中
this
.
dispatchStatus
=
0
;
this
.
scheduleStatus
=
0
;
}
}
else
{
this
.
dispatchStatus
=
0
;
this
.
scheduleStatus
=
0
;
}
},
},
{
//得到需要批量操作的ids
title
:
this
.
l
(
"mesCode"
),
getListId
(
value
)
{
key
:
"mesCode"
,
this
.
listBatchIds1
=
value
;
width
:
240
,
if
(
this
.
listBatchIds1
.
length
>
0
)
{
align
:
"left"
,
this
.
footerBar
=
true
;
}
else
{
this
.
footerBar
=
false
;
}
},
},
{
canselFooter
()
{
key
:
"productName"
,
this
.
footerBar
=
false
;
title
:
this
.
l
(
"productName"
),
this
.
handleSelectAll
(
false
);
align
:
"left"
,
easy
:
true
,
width
:
160
,
high
:
true
,
tooltip
:
true
,
},
},
{
modalDispatch
()
{
key
:
"status"
,
//打开工艺派发
title
:
this
.
l
(
"status"
),
this
.
listBatchIds
=
this
.
listBatchIds1
;
//用于列表操作时和多选时的listBatchId的冲突
align
:
"center"
,
if
(
this
.
dispatchStatus
==
1
)
{
high
:
true
,
this
.
dispatchModal
=
true
;
code
:
"plan.order.status"
,
}
else
{
this
.
$Message
.
error
(
"所选订单里存在已派发订单!"
);
}
},
},
{
modalSchedule
()
{
key
:
"mainRoutingSetStatus"
,
//移入排产
title
:
this
.
l
(
"mainRoutingSetStatus"
),
this
.
scheduleType
=
null
;
align
:
"center"
,
this
.
scheduleTypeName
=
""
;
high
:
true
,
this
.
listBatchIds
=
this
.
listBatchIds1
;
code
:
"aps.plan.mainRoutingStatus"
,
if
(
this
.
scheduleStatus
==
1
)
{
this
.
scheduleModal
=
true
;
}
else
{
this
.
$Message
.
error
(
"所选订单里存在未派发订单!"
);
}
},
},
{
goMethod
(
value
)
{
key
:
"isSupportingFinish"
,
//行内点击后面按钮
title
:
this
.
l
(
"isSupportingFinish"
),
this
.
canselFooter
();
align
:
"center"
,
this
.
resultsOrderList
=
value
.
mesCode
;
render
:
(
h
,
params
)
=>
{
this
.
listBatchIds
=
[
value
.
id
];
return
h
(
this
.
scheduleType
=
null
;
"op"
,
this
.
scheduleTypeName
=
""
;
{
if
(
value
.
mainRoutingSetStatus
==
0
)
{
attrs
:
{
//this.dispatchStatus = 1
oprate
:
"detail"
,
//this.scheduleStatus = 0
},
this
.
dispatchModal
=
true
;
style
:
{
}
else
if
(
value
.
mainRoutingSetStatus
==
1
)
{
color
:
this
.
setName
(
params
.
row
.
isSupportingFinish
).
color
,
//this.dispatchStatus = 0
},
//this.scheduleStatus = 1
on
:
{
this
.
scheduleModal
=
true
;
click
:
()
=>
this
.
openAccessory
(
params
.
row
),
}
},
},
this
.
setName
(
params
.
row
.
isSupportingFinish
).
name
);
},
},
},
{
supportDis
(
value
)
{
key
:
"projectNumber"
,
(
this
.
orderSupportModal
=
true
),
title
:
this
.
l
(
"projectNumber"
),
this
.
$refs
.
orderSupport
.
loaddata
(
value
.
id
);
align
:
"left"
,
easy
:
true
,
high
:
true
,
},
},
{
scheduleOk
()
{
key
:
"batchNumber"
,
if
(
this
.
scheduleType
==
null
)
{
title
:
this
.
l
(
"batchNumber"
),
this
.
$Message
.
error
(
"请选择排产模型"
);
align
:
"left"
,
}
else
{
easy
:
true
,
let
params
=
{
high
:
true
,
ids
:
this
.
listBatchIds
,
poolType
:
this
.
scheduleType
,
};
Api
.
moveinbatch
(
params
)
.
then
((
r
)
=>
{
if
(
r
.
success
&&
r
.
result
==
true
)
{
this
.
$Message
.
success
(
"移入排产成功"
);
this
.
$refs
.
grid
.
reload
(
this
.
easySearch
);
this
.
changeCountOut
(
this
.
scheduleType
,
this
.
listBatchIds
.
length
);
}
else
{
if
(
!
r
.
result
.
res
)
{
this
.
$Message
.
error
(
r
.
result
.
msg
);
}
else
{
this
.
$Message
.
error
(
"移入排产失败"
);
}
}
})
.
catch
((
err
)
=>
{
this
.
$Message
.
error
(
"移入排产失败"
);
});
this
.
canselFooter
();
this
.
cancel
();
}
},
},
{
//跳转到aps排产池(有判断)
key
:
"urgencyLevel"
,
goAps
()
{
title
:
this
.
l
(
"urgencyLevel"
),
Api
.
moveintoaps
().
then
((
res
)
=>
{
align
:
"left"
,
if
(
res
.
success
)
{
easy
:
true
,
if
(
res
.
result
.
res
)
{
high
:
true
,
this
.
$router
.
push
({
code
:
"plan.order.urgencyLevel"
,
name
:
"aps-aps"
,
// params: { customerId: id }
});
}
else
{
this
.
$Message
.
error
(
res
.
result
.
msg
);
}
}
});
},
},
//跳转到智能排产池(有判断)
{
goAi
()
{
key
:
"taskType"
,
Api
.
moveintoai
().
then
((
res
)
=>
{
title
:
this
.
l
(
"taskType"
),
if
(
res
.
success
)
{
align
:
"left"
,
if
(
res
.
result
.
res
)
{
easy
:
true
,
//test
high
:
true
,
this
.
$router
.
push
({
hide
:
true
,
name
:
"aps-ai"
,
code
:
"plan.order.taskType"
,
// params: { customerId: id }
});
}
else
{
this
.
$Message
.
error
(
res
.
result
.
msg
);
}
}
});
},
},
goCemplate
()
{
{
this
.
$router
.
push
({
key
:
"drawnNumber"
,
name
:
"aps-complete"
,
title
:
this
.
l
(
"drawnNumber"
),
});
align
:
"left"
,
easy
:
true
,
high
:
true
,
},
},
{
goStream
()
{
key
:
"stage"
,
this
.
$router
.
push
({
title
:
this
.
l
(
"stage"
),
name
:
"aps-stream"
,
align
:
"left"
,
});
easy
:
true
,
high
:
true
,
code
:
"plan.order.stage"
,
},
},
{
add
()
{
key
:
"materialName"
,
this
.
addModal
=
true
;
title
:
this
.
l
(
"materialName"
),
align
:
"left"
,
easy
:
true
,
high
:
true
,
},
},
{
addOk
()
{
key
:
"quantity"
,
this
.
$refs
.
grid
.
load
();
title
:
this
.
l
(
"quantity"
),
this
.
addModal
=
false
;
align
:
"right"
,
this
.
detailModal
=
false
;
high
:
true
,
this
.
editModal
=
false
;
this
.
curId
=
0
;
//aps
this
.
dispatchModal
=
false
;
this
.
scheduleModal
=
false
;
this
.
listBatchIds
=
[];
this
.
listBatchIds1
=
[];
this
.
canselFooter
();
this
.
modalAccessory
=
false
;
},
},
{
search
()
{
key
:
"routingMethod"
,
this
.
$refs
.
grid
.
reload
(
this
.
easySearch
);
title
:
this
.
l
(
"routingMethod"
),
align
:
"left"
,
easy
:
true
,
high
:
true
,
code
:
"plan.order.routingMethod"
,
},
},
{
detail
(
id
)
{
key
:
"materialWeight"
,
this
.
detailModal
=
true
;
title
:
this
.
l
(
"materialWeight"
),
this
.
curId
=
id
;
align
:
"left"
,
high
:
true
,
hide
:
true
,
},
},
edit
(
id
)
{
{
this
.
editModal
=
true
;
key
:
"productCode"
,
this
.
curId
=
id
;
title
:
this
.
l
(
"productCode"
),
align
:
"left"
,
easy
:
true
,
high
:
true
,
hide
:
true
,
},
},
remove
(
id
)
{
{
this
.
deletelModal
=
true
;
key
:
"isPreschedule"
,
this
.
curId
=
id
;
title
:
this
.
l
(
"isPreschedule"
),
align
:
"left"
,
high
:
true
,
code
:
"mes_xingchi_plan.mes_order.is_preschedule"
,
hide
:
true
,
},
},
{
removeOk
()
{
key
:
"spareQty"
,
Api
.
delete
({
title
:
this
.
l
(
"spareQty"
),
id
:
this
.
curId
align
:
"left"
,
}).
then
((
r
)
=>
{
high
:
true
,
if
(
r
.
success
)
{
hide
:
true
,
this
.
$refs
.
grid
.
load
();
this
.
deletelModal
=
false
;
this
.
$Message
.
success
(
"删除成功"
);
}
});
},
},
{
removeCancel
()
{
key
:
"demandStart"
,
this
.
deletelModal
=
false
;
title
:
this
.
l
(
"demandStart"
),
align
:
"left"
,
high
:
true
,
hide
:
true
,
},
},
{
cancel
()
{
key
:
"demandFinish"
,
this
.
curId
=
0
;
title
:
this
.
l
(
"demandFinish"
),
this
.
addModal
=
false
;
align
:
"left"
,
this
.
detailModal
=
false
;
high
:
true
,
this
.
editModal
=
false
;
hide
:
true
,
this
.
deletedlModal
=
false
;
//aps
this
.
dispatchModal
=
false
;
this
.
scheduleModal
=
false
;
this
.
modalAccessory
=
false
;
// this.listBatchIds = []
// this.listBatchIds1 = []
// this.canselFooter()
},
},
{
l
(
key
)
{
key
:
"partNamePro"
,
let
vkey
=
"mes_order"
+
"."
+
key
;
title
:
this
.
l
(
"partNamePro"
),
return
this
.
$t
(
vkey
)
||
key
;
align
:
"left"
,
easy
:
true
,
high
:
true
,
hide
:
true
,
},
},
{
uniq
(
array
)
{
title
:
"操作"
,
//数组去重
key
:
"action"
,
array
.
sort
();
width
:
140
,
var
temp
=
[];
align
:
"center"
,
temp
=
[
array
[
0
]];
render
:
(
h
,
params
)
=>
{
for
(
var
i
=
1
;
i
<
array
.
length
;
i
++
)
{
return
h
(
"div"
,
{
class
:
"action"
},
[
if
(
array
[
i
]
!==
temp
[
temp
.
length
-
1
])
{
h
(
temp
.
push
(
array
[
i
]);
"op"
,
}
{
}
attrs
:
{
return
temp
;
oprate
:
"detail"
,
title
:
params
.
row
.
mainRoutingSetStatus
==
0
?
"工艺派发"
:
"移入排产"
,
},
style
:
{
color
:
params
.
row
.
mainRoutingSetStatus
==
0
?
"red"
:
""
,
},
on
:
{
click
:
()
=>
params
.
row
.
mainRoutingSetStatus
==
0
||
params
.
row
.
mainRoutingSetStatus
==
1
?
this
.
goMethod
(
params
.
row
)
:
null
,
},
},
params
.
row
.
mainRoutingSetStatus
==
0
?
"工艺派发"
:
params
.
row
.
mainRoutingSetStatus
==
1
?
"移入排产"
:
""
),
h
(
"op"
,
{
attrs
:
{
oprate
:
"detail"
,
title
:
params
.
row
.
isSupportingFinish
==
2
||
params
.
row
.
isSupportingFinish
==
3
?
"配套派发"
:
""
,
},
style
:
{
color
:
params
.
row
.
mainRoutingSetStatus
==
0
?
"red"
:
""
,
},
on
:
{
click
:
()
=>
params
.
row
.
isSupportingFinish
==
2
||
params
.
row
.
isSupportingFinish
==
3
?
this
.
supportDis
(
params
.
row
)
:
null
,
},
},
params
.
row
.
isSupportingFinish
==
2
||
params
.
row
.
isSupportingFinish
==
3
?
"配套派发"
:
""
),
]);
},
},
},
],
//移入排产前选择排产模型
selectCount
:
0
,
onchangeScheduleType
(
val
)
{
selectList
:
[],
switch
(
Number
(
val
))
{
footerBar
:
false
,
case
4
:
results
:
[],
this
.
scheduleTypeName
=
"智能排产"
;
listBatchIds
:
[],
break
;
listBatchIds1
:
[],
//临时存储选择的ids
case
2
:
single
:
false
,
this
.
scheduleTypeName
=
"整机排产"
;
resultsStatusArr
:
[],
break
;
resultsStatus
:
0
,
case
3
:
dispatchStatus
:
0
,
//派发标识
this
.
scheduleTypeName
=
"流水排产"
;
scheduleStatus
:
0
,
//排产标识
break
;
resultsOrderList
:
""
,
default
:
scheduleType
:
null
,
this
.
scheduleTypeName
=
"APS排产"
;
scheduleTypeName
:
""
,
showAps
:
false
,
showAi
:
false
,
showAll
:
false
,
showRun
:
false
,
};
},
mounted
()
{
this
.
loadInitCount
();
},
async
fetch
({
store
,
params
})
{
await
store
.
dispatch
(
"loadDictionary"
);
// 加载数据字典
},
methods
:
{
handleSelectAll
(
status
)
{
//选择列表数据
this
.
$refs
.
grid
.
selectAll
(
status
);
},
selectInfo
(
value
)
{
if
(
value
.
length
>
0
)
{
this
.
footerBar
=
true
;
}
else
{
this
.
footerBar
=
false
;
}
this
.
selectList
=
[];
this
.
selectList
=
value
;
this
.
selectCount
=
this
.
selectList
.
length
;
let
statueArry
=
[];
let
tempmesCodeList
=
[];
this
.
resultsStatusArr
=
[];
value
.
forEach
((
data
)
=>
{
var
that
=
this
;
statueArry
.
push
(
data
.
id
);
this
.
resultsStatusArr
.
push
(
data
.
mainRoutingSetStatus
);
tempmesCodeList
.
push
(
data
.
mesCode
);
});
let
mainRS
=
this
.
uniq
(
this
.
resultsStatusArr
);
//数组去重
if
(
mainRS
.
length
==
1
)
{
this
.
results
=
[];
this
.
results
=
statueArry
;
this
.
getListId
(
statueArry
);
this
.
resultsOrderList
=
JSON
.
stringify
(
tempmesCodeList
)
//提示mesCode
.
replace
(
"["
,
""
)
.
replace
(
"]"
,
""
)
.
replace
(
/
\"
/g
,
""
);
if
(
mainRS
[
0
]
==
0
)
{
//未派发
this
.
dispatchStatus
=
1
;
this
.
scheduleStatus
=
0
;
}
else
if
(
mainRS
[
0
]
==
1
)
{
//已派发
this
.
dispatchStatus
=
0
;
this
.
scheduleStatus
=
1
;
}
else
{
//派发中
this
.
dispatchStatus
=
0
;
this
.
scheduleStatus
=
0
;
}
}
else
{
this
.
dispatchStatus
=
0
;
this
.
scheduleStatus
=
0
;
}
},
//得到需要批量操作的ids
getListId
(
value
)
{
this
.
listBatchIds1
=
value
;
if
(
this
.
listBatchIds1
.
length
>
0
)
{
this
.
footerBar
=
true
;
}
else
{
this
.
footerBar
=
false
;
}
},
canselFooter
()
{
this
.
footerBar
=
false
;
this
.
handleSelectAll
(
false
);
},
modalDispatch
()
{
//打开工艺派发
this
.
listBatchIds
=
this
.
listBatchIds1
;
//用于列表操作时和多选时的listBatchId的冲突
if
(
this
.
dispatchStatus
==
1
)
{
this
.
dispatchModal
=
true
;
}
else
{
this
.
$Message
.
error
(
"所选订单里存在已派发订单!"
);
}
},
modalSchedule
()
{
//移入排产
this
.
scheduleType
=
null
;
this
.
scheduleTypeName
=
""
;
this
.
listBatchIds
=
this
.
listBatchIds1
;
if
(
this
.
scheduleStatus
==
1
)
{
this
.
scheduleModal
=
true
;
}
else
{
this
.
$Message
.
error
(
"所选订单里存在未派发订单!"
);
}
},
goMethod
(
value
)
{
//行内点击后面按钮
this
.
canselFooter
();
this
.
resultsOrderList
=
value
.
mesCode
;
this
.
listBatchIds
=
[
value
.
id
];
this
.
scheduleType
=
null
;
this
.
scheduleTypeName
=
""
;
if
(
value
.
mainRoutingSetStatus
==
0
)
{
//this.dispatchStatus = 1
//this.scheduleStatus = 0
this
.
dispatchModal
=
true
;
}
else
if
(
value
.
mainRoutingSetStatus
==
1
)
{
//this.dispatchStatus = 0
//this.scheduleStatus = 1
this
.
scheduleModal
=
true
;
}
},
supportDis
(
value
)
{
(
this
.
orderSupportModal
=
true
),
this
.
$refs
.
orderSupport
.
loaddata
(
value
.
id
);
},
scheduleOk
()
{
if
(
this
.
scheduleType
==
null
)
{
this
.
$Message
.
error
(
"请选择排产模型"
);
}
else
{
let
params
=
{
ids
:
this
.
listBatchIds
,
poolType
:
this
.
scheduleType
,
};
Api
.
moveinbatch
(
params
)
.
then
((
r
)
=>
{
if
(
r
.
success
&&
r
.
result
==
true
)
{
this
.
$Message
.
success
(
"移入排产成功"
);
this
.
$refs
.
grid
.
reload
(
this
.
easySearch
);
this
.
changeCountOut
(
this
.
scheduleType
,
this
.
listBatchIds
.
length
);
}
else
{
if
(
!
r
.
result
.
res
)
{
this
.
$Message
.
error
(
r
.
result
.
msg
);
}
else
{
this
.
$Message
.
error
(
"移入排产失败"
);
}
}
}
})
},
.
catch
((
err
)
=>
{
//移入排产成功后给标题增加数量
this
.
$Message
.
error
(
"移入排产失败"
);
changeCountOut
(
type
,
count
)
{
});
switch
(
type
)
{
this
.
canselFooter
();
case
4
:
//智能排产池排产订单数量
this
.
cancel
();
this
.
$store
.
commit
(
"setCountAi"
,
this
.
$store
.
state
.
countAi
+
count
);
}
break
;
},
case
2
:
//整机排产池排产订单数量
//跳转到aps排产池(有判断)
this
.
$store
.
commit
(
"setCountAll"
,
this
.
$store
.
state
.
countAll
+
count
);
goAps
()
{
break
;
Api
.
moveintoaps
().
then
((
res
)
=>
{
case
3
:
//流水排产池排产订单数量
if
(
res
.
success
)
{
this
.
$store
.
commit
(
"setCountRun"
,
this
.
$store
.
state
.
countRun
+
count
);
if
(
res
.
result
.
res
)
{
break
;
this
.
$router
.
push
({
default
:
name
:
"aps-aps"
,
//APS排产池排产订单数量
// params: { customerId: id }
this
.
$store
.
commit
(
"setCountAps"
,
this
.
$store
.
state
.
countAps
+
count
);
});
}
else
{
this
.
$Message
.
error
(
res
.
result
.
msg
);
}
}
});
},
//跳转到智能排产池(有判断)
goAi
()
{
Api
.
moveintoai
().
then
((
res
)
=>
{
if
(
res
.
success
)
{
if
(
res
.
result
.
res
)
{
//test
this
.
$router
.
push
({
name
:
"aps-ai"
,
// params: { customerId: id }
});
}
else
{
this
.
$Message
.
error
(
res
.
result
.
msg
);
}
}
});
},
goCemplate
()
{
this
.
$router
.
push
({
name
:
"aps-complete"
,
});
},
goStream
()
{
this
.
$router
.
push
({
name
:
"aps-stream"
,
});
},
add
()
{
this
.
addModal
=
true
;
},
addOk
()
{
this
.
$refs
.
grid
.
load
();
this
.
addModal
=
false
;
this
.
detailModal
=
false
;
this
.
editModal
=
false
;
this
.
curId
=
0
;
//aps
this
.
dispatchModal
=
false
;
this
.
scheduleModal
=
false
;
this
.
listBatchIds
=
[];
this
.
listBatchIds1
=
[];
this
.
canselFooter
();
this
.
modalAccessory
=
false
;
},
search
()
{
this
.
$refs
.
grid
.
reload
(
this
.
easySearch
);
},
detail
(
id
)
{
this
.
detailModal
=
true
;
this
.
curId
=
id
;
},
edit
(
id
)
{
this
.
editModal
=
true
;
this
.
curId
=
id
;
},
remove
(
id
)
{
this
.
deletelModal
=
true
;
this
.
curId
=
id
;
},
removeOk
()
{
Api
.
delete
({
id
:
this
.
curId
}).
then
((
r
)
=>
{
if
(
r
.
success
)
{
this
.
$refs
.
grid
.
load
();
this
.
deletelModal
=
false
;
this
.
$Message
.
success
(
"删除成功"
);
}
});
},
removeCancel
()
{
this
.
deletelModal
=
false
;
},
cancel
()
{
this
.
curId
=
0
;
this
.
addModal
=
false
;
this
.
detailModal
=
false
;
this
.
editModal
=
false
;
this
.
deletedlModal
=
false
;
//aps
this
.
dispatchModal
=
false
;
this
.
scheduleModal
=
false
;
this
.
modalAccessory
=
false
;
// this.listBatchIds = []
// this.listBatchIds1 = []
// this.canselFooter()
},
l
(
key
)
{
let
vkey
=
"mes_order"
+
"."
+
key
;
return
this
.
$t
(
vkey
)
||
key
;
},
uniq
(
array
)
{
//数组去重
array
.
sort
();
var
temp
=
[];
temp
=
[
array
[
0
]];
for
(
var
i
=
1
;
i
<
array
.
length
;
i
++
)
{
if
(
array
[
i
]
!==
temp
[
temp
.
length
-
1
])
{
temp
.
push
(
array
[
i
]);
}
}
return
temp
;
},
//移入排产前选择排产模型
onchangeScheduleType
(
val
)
{
switch
(
Number
(
val
))
{
case
4
:
this
.
scheduleTypeName
=
"智能排产"
;
break
;
case
2
:
this
.
scheduleTypeName
=
"整机排产"
;
break
;
case
3
:
this
.
scheduleTypeName
=
"流水排产"
;
break
;
default
:
this
.
scheduleTypeName
=
"APS排产"
;
}
},
//移入排产成功后给标题增加数量
changeCountOut
(
type
,
count
)
{
switch
(
type
)
{
case
4
:
//智能排产池排产订单数量
this
.
$store
.
commit
(
"setCountAi"
,
this
.
$store
.
state
.
countAi
+
count
);
break
;
case
2
:
//整机排产池排产订单数量
this
.
$store
.
commit
(
"setCountAll"
,
this
.
$store
.
state
.
countAll
+
count
);
break
;
case
3
:
//流水排产池排产订单数量
this
.
$store
.
commit
(
"setCountRun"
,
this
.
$store
.
state
.
countRun
+
count
);
break
;
default
:
//APS排产池排产订单数量
this
.
$store
.
commit
(
"setCountAps"
,
this
.
$store
.
state
.
countAps
+
count
);
}
},
//进入页面加载排产count-----
loadInitCount
()
{
let
currentUserId
=
this
.
$store
.
state
.
userInfo
.
userId
;
let
para
=
{
id
:
currentUserId
};
Api
.
listbyuser
(
para
).
then
((
datas
)
=>
{
if
(
datas
.
success
&&
datas
.
result
&&
datas
.
result
.
length
>
0
)
{
datas
.
result
.
forEach
((
dateScheduleId
)
=>
{
switch
(
dateScheduleId
.
apsScheduleId
)
{
case
1
:
this
.
showAps
=
true
;
break
;
case
2
:
this
.
showAll
=
true
;
break
;
case
3
:
this
.
showRun
=
true
;
break
;
default
:
this
.
showAi
=
true
;
}
}
});
},
}
//进入页面加载排产count-----
});
loadInitCount
()
{
let
currentUserId
=
this
.
$store
.
state
.
userInfo
.
userId
;
this
.
$store
.
commit
(
"setCountAps"
,
0
);
let
para
=
{
this
.
$store
.
commit
(
"setCountAi"
,
0
);
id
:
currentUserId
this
.
$store
.
commit
(
"setCountAll"
,
0
);
};
this
.
$store
.
commit
(
"setCountRun"
,
0
);
Api
.
listbyuser
(
para
).
then
((
datas
)
=>
{
Api
.
getpoolordercount
()
if
(
datas
.
success
&&
datas
.
result
&&
datas
.
result
.
length
>
0
)
{
.
then
((
res
)
=>
{
datas
.
result
.
forEach
((
dateScheduleId
)
=>
{
if
(
res
.
success
&&
res
.
result
.
length
>
1
)
{
switch
(
dateScheduleId
.
apsScheduleId
)
{
res
.
result
.
forEach
((
data
)
=>
{
case
1
:
this
.
changeCountOut
(
data
.
poolType
,
data
.
count
);
this
.
showAps
=
true
;
break
;
case
2
:
this
.
showAll
=
true
;
break
;
case
3
:
this
.
showRun
=
true
;
break
;
default
:
this
.
showAi
=
true
;
}
});
}
});
});
}
})
this
.
$store
.
commit
(
"setCountAps"
,
0
);
.
catch
((
err
)
=>
{
this
.
$store
.
commit
(
"setCountAi"
,
0
);
this
.
$Message
.
error
(
"获取排产模型数量失败"
);
this
.
$store
.
commit
(
"setCountAll"
,
0
);
});
this
.
$store
.
commit
(
"setCountRun"
,
0
);
},
Api
.
getpoolordercount
()
//配套申请
.
then
((
res
)
=>
{
setName
(
v
)
{
if
(
res
.
success
&&
res
.
result
&&
res
.
result
.
length
>
0
)
{
let
outPar
=
{
res
.
result
.
forEach
((
data
)
=>
{
name
:
""
,
this
.
changeCountOut
(
data
.
poolType
,
data
.
count
);
color
:
""
,
});
};
}
if
((
v
+
""
).
indexOf
(
","
)
==
-
1
)
{
})
var
item
;
.
catch
((
err
)
=>
{
this
.
statuList
.
map
((
u
)
=>
{
this
.
$Message
.
error
(
"获取排产池排产数量失败"
);
if
(
u
.
code
==
v
)
{
});
item
=
u
;
},
}
//配套申请
});
setName
(
v
)
{
if
(
item
)
{
let
outPar
=
{
//this.items = item;
name
:
""
,
outPar
=
{
color
:
""
,
name
:
item
.
name
,
};
color
:
item
.
color
,
if
((
v
+
""
).
indexOf
(
","
)
==
-
1
)
{
};
var
item
;
}
this
.
statuList
.
map
((
u
)
=>
{
}
if
(
u
.
code
==
v
)
{
return
outPar
;
item
=
u
;
},
}
openAccessory
(
row
)
{
});
if
(
row
.
mainRoutingSetStatus
!=
1
)
{
if
(
item
)
{
this
.
$Message
.
error
(
"请设置订单工艺!"
);
//this.items = item;
return
;
outPar
=
{
}
else
{
name
:
item
.
name
,
this
.
orderId
=
row
.
id
;
color
:
item
.
color
,
this
.
mesCode
=
row
.
mesCode
;
};
this
.
productName
=
row
.
productName
;
}
this
.
drawnNumber
=
row
.
drawnNumber
;
}
this
.
count
=
row
.
quantity
;
return
outPar
;
if
(
row
.
mainRoutingSetStatus
==
1
&&
row
.
isSupportingFinish
==
0
)
{
},
this
.
$Message
.
error
(
"请去工艺设置生成料单!"
);
openAccessory
(
row
)
{
// this.title = "申请配套";
if
(
row
.
mainRoutingSetStatus
!=
1
)
{
// this.details = () => import("./addAccessory");
this
.
$Message
.
error
(
"请设置订单工艺!"
);
}
else
{
return
;
this
.
title
=
"配套清单"
;
}
else
{
this
.
details
=
()
=>
import
(
"./editAccessory"
);
this
.
orderId
=
row
.
id
;
this
.
modalAccessory
=
true
;
this
.
mesCode
=
row
.
mesCode
;
}
this
.
productName
=
row
.
productName
;
}
this
.
drawnNumber
=
row
.
drawnNumber
;
},
this
.
count
=
row
.
quantity
;
ok
()
{
if
(
row
.
mainRoutingSetStatus
==
1
&&
row
.
isSupportingFinish
==
0
)
{
this
.
modalAccessory
=
false
;
this
.
$Message
.
error
(
"请去工艺设置生成料单!"
);
this
.
curId
=
0
;
// this.title = "申请配套";
// this.details = () => import("./addAccessory");
}
else
{
this
.
title
=
"配套清单"
;
this
.
details
=
()
=>
import
(
"./editAccessory"
);
this
.
modalAccessory
=
true
;
}
}
},
ok
()
{
this
.
modalAccessory
=
false
;
this
.
curId
=
0
;
},
},
},
},
};
};
</
script
>
</
script
>
<
style
lang=
"less"
>
<
style
lang=
"less"
>
.footerSpan {
.footerSpan {
width: 120px;
width: 120px;
}
}
.demo-badge-alone {
.demo-badge-alone {
background: #5cb85c !important;
background: #5cb85c !important;
}
}
.radioList {
.radioList {
margin: 10px 30px;
margin: 10px 30px;
}
}
.radioList label {
.radioList label {
margin-top: 5px;
margin-top: 5px;
}
}
</
style
>
</
style
>
\ No newline at end of file
pages/mesPlan/index.vue
View file @
77b1cf7c
...
@@ -297,11 +297,11 @@ export default {
...
@@ -297,11 +297,11 @@ export default {
type
:
"date"
type
:
"date"
},
},
{
{
key
:
"creator
UserId
"
,
key
:
"creator"
,
title
:
this
.
$t
(
"creatorUserId"
),
title
:
this
.
$t
(
"creatorUserId"
),
align
:
"left"
,
align
:
"left"
,
high
:
true
,
high
:
true
,
type
:
"user"
//
type: "user"
},
},
{
{
key
:
"creationTime"
,
key
:
"creationTime"
,
...
@@ -310,22 +310,22 @@ export default {
...
@@ -310,22 +310,22 @@ export default {
high
:
true
,
high
:
true
,
width
:
180
width
:
180
},
},
{
//
{
key
:
"lastModifierUserId"
,
//
key: "lastModifierUserId",
title
:
this
.
$t
(
"lastModifierUserId"
),
//
title: this.$t("lastModifierUserId"),
hide
:
true
,
//
hide: true,
align
:
"left"
,
//
align: "left",
high
:
true
,
//
high: true,
type
:
"user"
//
type: "user"
},
//
},
{
//
{
key
:
"lastModificationTime"
,
//
key: "lastModificationTime",
title
:
this
.
$t
(
"lastModificationTime"
),
//
title: this.$t("lastModificationTime"),
hide
:
true
,
//
hide: true,
align
:
"center"
,
//
align: "center",
high
:
true
,
//
high: true,
width
:
180
//
width: 180
},
//
},
{
{
title
:
"操作"
,
title
:
"操作"
,
key
:
"action"
,
key
:
"action"
,
...
...
pages/produce/orderlist.vue
View file @
77b1cf7c
...
@@ -366,10 +366,10 @@ export default {
...
@@ -366,10 +366,10 @@ export default {
overflow: hidden;
overflow: hidden;
border: #cacbd0 dashed 1px;
border: #cacbd0 dashed 1px;
img {
//
img {
// width: 90px;
// width: 90px;
// height: 90px;
// height: 90px;
}
//
}
}
}
.row {
.row {
...
...
pages/workflow/flow/index.vue
View file @
77b1cf7c
<
template
>
<
template
>
<div
id=
"flow"
>
<div
id=
"flow"
>
<div
id=
"myDiagramDiv"
class=
"flex fd"
>
<div
id=
"myDiagramDiv"
class=
"flex fd"
>
<div
v-height=
"100"
class=
"flex"
>
<div
v-height=
"100"
class=
"flex"
>
<div
id=
"palette"
class=
"fg"
></div>
<div
id=
"palette"
class=
"fg"
></div>
<div
v-width=
"200"
class=
"tr lh50"
>
<div
v-width=
"200"
class=
"tr lh50"
>
<Button
type=
"primary"
class=
"mr10"
@
click=
"save"
v-noClick
>
保存
</Button>
<Button
type=
"primary"
class=
"mr10"
@
click=
"save"
v-noClick
>
保存
</Button>
</div>
</div>
</div>
</div>
<div
id=
"draw"
class=
"fg"
></div>
<div
id=
"draw"
class=
"fg"
></div>
</div>
</div>
<Modal
v-model=
"detailModal"
title=
"节点属性设置"
:width=
"800"
footer-hide
>
<Modal
v-model=
"detailModal"
title=
"节点属性设置"
:width=
"800"
footer-hide
>
<component
:is=
"detail"
:eid=
"curId"
:data=
"node"
@
on-ok=
"ok
"
/>
<component
:is=
"detail"
:eid=
"curId"
:data=
"node"
@
on-ok=
"ok"
@
on-close=
"close
"
/>
</Modal>
</Modal>
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
...
@@ -20,500 +20,539 @@ import Api from "@/plugins/request";
...
@@ -20,500 +20,539 @@ import Api from "@/plugins/request";
import
go
from
"gojs"
;
import
go
from
"gojs"
;
let
$
=
go
.
GraphObject
.
make
;
let
$
=
go
.
GraphObject
.
make
;
export
default
{
export
default
{
name
:
""
,
name
:
""
,
data
()
{
data
()
{
return
{
return
{
detailModal
:
false
,
detailModal
:
false
,
detail
:
null
,
detail
:
null
,
curId
:
-
1
,
curId
:
-
1
,
node
:
null
,
node
:
null
,
myDiagram
:
null
myDiagram
:
null
};
};
},
},
props
:
{
props
:
{
eid
:
String
,
eid
:
String
,
default
:
null
default
:
null
},
},
mounted
()
{
mounted
()
{
this
.
init
();
this
.
init
();
this
.
load
();
this
.
load
();
},
},
methods
:
{
methods
:
{
init
()
{
init
()
{
// let theme = "black";
// let theme = "black";
let
theme
=
"#2d8cf0"
;
let
theme
=
"#2d8cf0"
;
// fill: "#D1DEDC",
// fill: "#D1DEDC",
// stroke: "#DC3C00",
// stroke: "#DC3C00",
let
select
=
$
(
let
select
=
$
(
go
.
Adornment
,
go
.
Adornment
,
go
.
Panel
.
Auto
,
go
.
Panel
.
Auto
,
// [2]
// [2]
$
(
go
.
Shape
,
{
$
(
go
.
Shape
,
{
fill
:
null
,
fill
:
null
,
stroke
:
"black"
,
stroke
:
"black"
,
strokeWidth
:
2
,
strokeWidth
:
2
,
strokeDashArray
:
[
8
,
2
,
8
,
2
],
strokeDashArray
:
[
8
,
2
,
8
,
2
],
margin
:
0
margin
:
0
// padding:4
// padding:4
}),
}),
// [3]
// [3]
// { width: 500, height: 200 }
// { width: 500, height: 200 }
$
(
go
.
Placeholder
)
$
(
go
.
Placeholder
)
);
);
this
.
myDiagram
=
$
(
this
.
myDiagram
=
$
(
go
.
Diagram
,
go
.
Diagram
,
"draw"
,
// must name or refer to the DIV HTML element
"draw"
,
// must name or refer to the DIV HTML element
{
{
LinkDrawn
:
showLinkLabel
,
// this DiagramEvent listener is defined below
LinkDrawn
:
showLinkLabel
,
// this DiagramEvent listener is defined below
LinkRelinked
:
showLinkLabel
,
LinkRelinked
:
showLinkLabel
,
"undoManager.isEnabled"
:
true
,
// enable undo & redo,
"undoManager.isEnabled"
:
true
,
// enable undo & redo,
nodeSelectionAdornmentTemplate
:
select
nodeSelectionAdornmentTemplate
:
select
}
}
);
);
function
nodeStyle
()
{
function
nodeStyle
()
{
return
[
return
[
// The Node.location comes from the "loc" property of the node data,
// The Node.location comes from the "loc" property of the node data,
// converted by the Point.parse static method.
// converted by the Point.parse static method.
// If the Node.location is changed, it updates the "loc" property of the node data,
// If the Node.location is changed, it updates the "loc" property of the node data,
// converting back using the Point.stringify static method.
// converting back using the Point.stringify static method.
new
go
.
Binding
(
"location"
,
"loc"
,
go
.
Point
.
parse
).
makeTwoWay
(
new
go
.
Binding
(
"location"
,
"loc"
,
go
.
Point
.
parse
).
makeTwoWay
(
go
.
Point
.
stringify
go
.
Point
.
stringify
),
),
{
{
// the Node.location is at the center of each node
// the Node.location is at the center of each node
locationSpot
:
go
.
Spot
.
Center
locationSpot
:
go
.
Spot
.
Center
}
}
];
];
}
}
// Define a function for creating a "port" that is normally transparent.
// Define a function for creating a "port" that is normally transparent.
// The "name" is used as the GraphObject.portId,
// The "name" is used as the GraphObject.portId,
// the "align" is used to determine where to position the port relative to the body of the node,
// the "align" is used to determine where to position the port relative to the body of the node,
// the "spot" is used to control how links connect with the port and whether the port
// the "spot" is used to control how links connect with the port and whether the port
// stretches along the side of the node,
// stretches along the side of the node,
// and the boolean "output" and "input" arguments control whether the user can draw links from or to the port.
// and the boolean "output" and "input" arguments control whether the user can draw links from or to the port.
function
makePort
(
name
,
align
,
spot
,
output
,
input
)
{
function
makePort
(
name
,
align
,
spot
,
output
,
input
)
{
var
horizontal
=
var
horizontal
=
align
.
equals
(
go
.
Spot
.
Top
)
||
align
.
equals
(
go
.
Spot
.
Bottom
);
align
.
equals
(
go
.
Spot
.
Top
)
||
align
.
equals
(
go
.
Spot
.
Bottom
);
// the port is basically just a transparent rectangle that stretches along the side of the node,
// the port is basically just a transparent rectangle that stretches along the side of the node,
// and becomes colored when the mouse passes over it
// and becomes colored when the mouse passes over it
return
$
(
go
.
Shape
,
{
return
$
(
go
.
Shape
,
{
fill
:
"transparent"
,
// changed to a color in the mouseEnter event handler
fill
:
"transparent"
,
// changed to a color in the mouseEnter event handler
strokeWidth
:
0
,
// no stroke
strokeWidth
:
0
,
// no stroke
width
:
horizontal
?
NaN
:
8
,
// if not stretching horizontally, just 8 wide
width
:
horizontal
?
NaN
:
8
,
// if not stretching horizontally, just 8 wide
height
:
!
horizontal
?
NaN
:
8
,
// if not stretching vertically, just 8 tall
height
:
!
horizontal
?
NaN
:
8
,
// if not stretching vertically, just 8 tall
alignment
:
align
,
// align the port on the main Shape
alignment
:
align
,
// align the port on the main Shape
stretch
:
horizontal
stretch
:
horizontal
?
?
go
.
GraphObject
.
Horizontal
go
.
GraphObject
.
Horizontal
:
go
.
GraphObject
.
Vertical
,
:
go
.
GraphObject
.
Vertical
,
portId
:
name
,
// declare this object to be a "port"
portId
:
name
,
// declare this object to be a "port"
fromSpot
:
spot
,
// declare where links may connect at this port
fromSpot
:
spot
,
// declare where links may connect at this port
fromLinkable
:
output
,
// declare whether the user may draw links from here
fromLinkable
:
output
,
// declare whether the user may draw links from here
toSpot
:
spot
,
// declare where links may connect at this port
toSpot
:
spot
,
// declare where links may connect at this port
toLinkable
:
input
,
// declare whether the user may draw links to here
toLinkable
:
input
,
// declare whether the user may draw links to here
cursor
:
"pointer"
,
// show a different cursor to indicate potential link point
cursor
:
"pointer"
,
// show a different cursor to indicate potential link point
mouseEnter
:
function
(
e
,
port
)
{
mouseEnter
:
function
(
e
,
port
)
{
// the PORT argument will be this Shape
// the PORT argument will be this Shape
if
(
!
e
.
diagram
.
isReadOnly
)
port
.
fill
=
"rgba(15,0,25,0.5)"
;
if
(
!
e
.
diagram
.
isReadOnly
)
port
.
fill
=
"rgba(15,0,25,0.5)"
;
},
},
mouseLeave
:
function
(
e
,
port
)
{
mouseLeave
:
function
(
e
,
port
)
{
port
.
fill
=
"transparent"
;
port
.
fill
=
"transparent"
;
// port.fill = "white";
// port.fill = "white";
}
}
});
});
}
}
function
textStyle
(
c
)
{
function
textStyle
(
c
)
{
let
color
=
c
||
"#f8f8f8"
;
let
color
=
c
||
"#f8f8f8"
;
return
{
return
{
font
:
"14px Microsoft YaHei"
,
font
:
"14px Microsoft YaHei"
,
stroke
:
color
stroke
:
color
};
};
}
}
/*添加模版*/
/*添加模版*/
this
.
myDiagram
.
nodeTemplateMap
.
add
(
this
.
myDiagram
.
nodeTemplateMap
.
add
(
""
,
// the default category
""
,
// the default category
$
(
$
(
go
.
Node
,
go
.
Node
,
"Table"
,
"Table"
,
nodeStyle
(),
nodeStyle
(),
// the main object is a Panel that surrounds a TextBlock with a rectangular Shape
// the main object is a Panel that surrounds a TextBlock with a rectangular Shape
$
(
$
(
go
.
Panel
,
go
.
Panel
,
"Auto"
,
"Auto"
,
{
{
// resizable: true,
// resizable: true,
doubleClick
:
(
e
,
obj
)
=>
{
doubleClick
:
(
e
,
obj
)
=>
{
this
.
show
(
obj
.
part
.
data
);
this
.
show
(
obj
.
part
.
data
);
}
}
},
},
$
(
$
(
go
.
Shape
,
go
.
Shape
,
"Rectangle"
,
{
"Rectangle"
,
fill
:
"white"
,
{
stroke
:
theme
,
fill
:
"white"
,
strokeWidth
:
2
,
stroke
:
theme
,
minSize
:
new
go
.
Size
(
80
,
50
)
strokeWidth
:
2
,
},
minSize
:
new
go
.
Size
(
80
,
50
)
new
go
.
Binding
(
"figure"
,
"figure"
),
},
new
go
.
Binding
(
"data"
)
new
go
.
Binding
(
"figure"
,
"figure"
),
),
new
go
.
Binding
(
"data"
)
$
(
),
go
.
TextBlock
,
$
(
textStyle
(
theme
),
{
go
.
TextBlock
,
margin
:
8
,
textStyle
(
theme
),
maxSize
:
new
go
.
Size
(
300
,
NaN
),
{
wrap
:
go
.
TextBlock
.
WrapFit
,
margin
:
8
,
editable
:
false
maxSize
:
new
go
.
Size
(
300
,
NaN
),
},
wrap
:
go
.
TextBlock
.
WrapFit
,
new
go
.
Binding
(
"text"
).
makeTwoWay
()
editable
:
false
)
},
),
new
go
.
Binding
(
"text"
).
makeTwoWay
()
// four named ports, one on each side:
)
makePort
(
"T"
,
go
.
Spot
.
Top
,
go
.
Spot
.
TopSide
,
false
,
true
),
),
makePort
(
"L"
,
go
.
Spot
.
Left
,
go
.
Spot
.
LeftSide
,
true
,
true
),
// four named ports, one on each side:
makePort
(
"R"
,
go
.
Spot
.
Right
,
go
.
Spot
.
RightSide
,
true
,
true
),
makePort
(
"T"
,
go
.
Spot
.
Top
,
go
.
Spot
.
TopSide
,
false
,
true
),
makePort
(
"B"
,
go
.
Spot
.
Bottom
,
go
.
Spot
.
BottomSide
,
true
,
false
)
makePort
(
"L"
,
go
.
Spot
.
Left
,
go
.
Spot
.
LeftSide
,
true
,
true
),
)
makePort
(
"R"
,
go
.
Spot
.
Right
,
go
.
Spot
.
RightSide
,
true
,
true
),
);
makePort
(
"B"
,
go
.
Spot
.
Bottom
,
go
.
Spot
.
BottomSide
,
true
,
false
)
)
);
this
.
myDiagram
.
nodeTemplateMap
.
add
(
this
.
myDiagram
.
nodeTemplateMap
.
add
(
"Conditional"
,
"Conditional"
,
$
(
$
(
go
.
Node
,
go
.
Node
,
"Table"
,
"Table"
,
nodeStyle
(),
nodeStyle
(),
// the main object is a Panel that surrounds a TextBlock with a rectangular Shape
// the main object is a Panel that surrounds a TextBlock with a rectangular Shape
$
(
$
(
go
.
Panel
,
go
.
Panel
,
"Auto"
,
"Auto"
,
$
(
$
(
go
.
Shape
,
go
.
Shape
,
"Diamond"
,
"Diamond"
,
{
{
fill
:
"#fff"
,
stroke
:
theme
,
strokeWidth
:
2
},
fill
:
"#fff"
,
new
go
.
Binding
(
"figure"
,
"figure"
)
stroke
:
theme
,
),
strokeWidth
:
2
$
(
},
go
.
TextBlock
,
new
go
.
Binding
(
"figure"
,
"figure"
)
textStyle
(
theme
),
),
{
$
(
margin
:
8
,
go
.
TextBlock
,
maxSize
:
new
go
.
Size
(
60
,
NaN
),
textStyle
(
theme
),
{
wrap
:
go
.
TextBlock
.
WrapFit
,
margin
:
8
,
editable
:
false
maxSize
:
new
go
.
Size
(
60
,
NaN
),
},
wrap
:
go
.
TextBlock
.
WrapFit
,
new
go
.
Binding
(
"text"
).
makeTwoWay
()
editable
:
false
)
},
),
new
go
.
Binding
(
"text"
).
makeTwoWay
()
// four named ports, one on each side:
)
makePort
(
"T"
,
go
.
Spot
.
Top
,
go
.
Spot
.
Top
,
false
,
true
),
),
makePort
(
"L"
,
go
.
Spot
.
Left
,
go
.
Spot
.
Left
,
true
,
true
),
// four named ports, one on each side:
makePort
(
"R"
,
go
.
Spot
.
Right
,
go
.
Spot
.
Right
,
true
,
true
),
makePort
(
"T"
,
go
.
Spot
.
Top
,
go
.
Spot
.
Top
,
false
,
true
),
makePort
(
"B"
,
go
.
Spot
.
Bottom
,
go
.
Spot
.
Bottom
,
true
,
false
)
makePort
(
"L"
,
go
.
Spot
.
Left
,
go
.
Spot
.
Left
,
true
,
true
),
)
makePort
(
"R"
,
go
.
Spot
.
Right
,
go
.
Spot
.
Right
,
true
,
true
),
);
makePort
(
"B"
,
go
.
Spot
.
Bottom
,
go
.
Spot
.
Bottom
,
true
,
false
)
)
);
this
.
myDiagram
.
nodeTemplateMap
.
add
(
this
.
myDiagram
.
nodeTemplateMap
.
add
(
"Start"
,
"Start"
,
$
(
$
(
go
.
Node
,
go
.
Node
,
"Table"
,
"Table"
,
nodeStyle
(),
nodeStyle
(),
$
(
$
(
go
.
Panel
,
go
.
Panel
,
"Spot"
,
"Spot"
,
$
(
go
.
Shape
,
"Circle"
,
{
$
(
go
.
Shape
,
"Circle"
,
{
desiredSize
:
new
go
.
Size
(
60
,
60
),
desiredSize
:
new
go
.
Size
(
60
,
60
),
fill
:
theme
,
fill
:
theme
,
stroke
:
"#09d3ac"
,
stroke
:
"#09d3ac"
,
strokeWidth
:
0
strokeWidth
:
0
}),
}),
$
(
go
.
TextBlock
,
"开始"
,
textStyle
())
$
(
go
.
TextBlock
,
"开始"
,
textStyle
())
),
),
// three named ports, one on each side except the top, all output only:
// three named ports, one on each side except the top, all output only:
makePort
(
"L"
,
go
.
Spot
.
Left
,
go
.
Spot
.
Left
,
true
,
false
),
makePort
(
"L"
,
go
.
Spot
.
Left
,
go
.
Spot
.
Left
,
true
,
false
),
makePort
(
"R"
,
go
.
Spot
.
Right
,
go
.
Spot
.
Right
,
true
,
false
),
makePort
(
"R"
,
go
.
Spot
.
Right
,
go
.
Spot
.
Right
,
true
,
false
),
makePort
(
"B"
,
go
.
Spot
.
Bottom
,
go
.
Spot
.
Bottom
,
true
,
false
)
makePort
(
"B"
,
go
.
Spot
.
Bottom
,
go
.
Spot
.
Bottom
,
true
,
false
)
)
)
);
);
this
.
myDiagram
.
nodeTemplateMap
.
add
(
this
.
myDiagram
.
nodeTemplateMap
.
add
(
"End"
,
"End"
,
$
(
$
(
go
.
Node
,
go
.
Node
,
"Table"
,
"Table"
,
nodeStyle
(),
nodeStyle
(),
$
(
$
(
go
.
Panel
,
go
.
Panel
,
"Spot"
,
"Spot"
,
$
(
go
.
Shape
,
"Circle"
,
{
$
(
go
.
Shape
,
"Circle"
,
{
desiredSize
:
new
go
.
Size
(
60
,
60
),
desiredSize
:
new
go
.
Size
(
60
,
60
),
fill
:
"#D1DEDC"
,
fill
:
"#D1DEDC"
,
stroke
:
"#DC3C00"
,
stroke
:
"#DC3C00"
,
strokeWidth
:
0
strokeWidth
:
0
}),
}),
$
(
go
.
TextBlock
,
"结束"
,
textStyle
(
"#909B9A"
))
$
(
go
.
TextBlock
,
"结束"
,
textStyle
(
"#909B9A"
))
),
),
// three named ports, one on each side except the bottom, all input only:
// three named ports, one on each side except the bottom, all input only:
makePort
(
"T"
,
go
.
Spot
.
Top
,
go
.
Spot
.
Top
,
false
,
true
),
makePort
(
"T"
,
go
.
Spot
.
Top
,
go
.
Spot
.
Top
,
false
,
true
),
makePort
(
"L"
,
go
.
Spot
.
Left
,
go
.
Spot
.
Left
,
false
,
true
),
makePort
(
"L"
,
go
.
Spot
.
Left
,
go
.
Spot
.
Left
,
false
,
true
),
makePort
(
"R"
,
go
.
Spot
.
Right
,
go
.
Spot
.
Right
,
false
,
true
)
makePort
(
"R"
,
go
.
Spot
.
Right
,
go
.
Spot
.
Right
,
false
,
true
)
)
)
);
);
go
.
Shape
.
defineFigureGenerator
(
"File"
,
function
(
shape
,
w
,
h
)
{
go
.
Shape
.
defineFigureGenerator
(
"File"
,
function
(
shape
,
w
,
h
)
{
var
geo
=
new
go
.
Geometry
();
var
geo
=
new
go
.
Geometry
();
var
fig
=
new
go
.
PathFigure
(
0
,
0
,
true
);
// starting point
var
fig
=
new
go
.
PathFigure
(
0
,
0
,
true
);
// starting point
geo
.
add
(
fig
);
geo
.
add
(
fig
);
fig
.
add
(
new
go
.
PathSegment
(
go
.
PathSegment
.
Line
,
0.75
*
w
,
0
));
fig
.
add
(
new
go
.
PathSegment
(
go
.
PathSegment
.
Line
,
0.75
*
w
,
0
));
fig
.
add
(
new
go
.
PathSegment
(
go
.
PathSegment
.
Line
,
w
,
0.25
*
h
));
fig
.
add
(
new
go
.
PathSegment
(
go
.
PathSegment
.
Line
,
w
,
0.25
*
h
));
fig
.
add
(
new
go
.
PathSegment
(
go
.
PathSegment
.
Line
,
w
,
h
));
fig
.
add
(
new
go
.
PathSegment
(
go
.
PathSegment
.
Line
,
w
,
h
));
fig
.
add
(
new
go
.
PathSegment
(
go
.
PathSegment
.
Line
,
0
,
h
).
close
());
fig
.
add
(
new
go
.
PathSegment
(
go
.
PathSegment
.
Line
,
0
,
h
).
close
());
var
fig2
=
new
go
.
PathFigure
(
0.75
*
w
,
0
,
false
);
var
fig2
=
new
go
.
PathFigure
(
0.75
*
w
,
0
,
false
);
geo
.
add
(
fig2
);
geo
.
add
(
fig2
);
// The Fold
// The Fold
fig2
.
add
(
new
go
.
PathSegment
(
go
.
PathSegment
.
Line
,
0.75
*
w
,
0.25
*
h
));
fig2
.
add
(
new
go
.
PathSegment
(
go
.
PathSegment
.
Line
,
0.75
*
w
,
0.25
*
h
));
fig2
.
add
(
new
go
.
PathSegment
(
go
.
PathSegment
.
Line
,
w
,
0.25
*
h
));
fig2
.
add
(
new
go
.
PathSegment
(
go
.
PathSegment
.
Line
,
w
,
0.25
*
h
));
geo
.
spot1
=
new
go
.
Spot
(
0
,
0.25
);
geo
.
spot1
=
new
go
.
Spot
(
0
,
0.25
);
geo
.
spot2
=
go
.
Spot
.
BottomRight
;
geo
.
spot2
=
go
.
Spot
.
BottomRight
;
return
geo
;
return
geo
;
});
});
this
.
myDiagram
.
nodeTemplateMap
.
add
(
this
.
myDiagram
.
nodeTemplateMap
.
add
(
"Comment"
,
"Comment"
,
$
(
$
(
go
.
Node
,
go
.
Node
,
"Auto"
,
"Auto"
,
nodeStyle
(),
nodeStyle
(),
$
(
go
.
Shape
,
"File"
,
{
$
(
go
.
Shape
,
"File"
,
{
fill
:
"#fff"
,
fill
:
"#fff"
,
stroke
:
theme
,
stroke
:
theme
,
strokeWidth
:
2
strokeWidth
:
2
}),
}),
$
(
$
(
go
.
TextBlock
,
go
.
TextBlock
,
textStyle
(
theme
),
textStyle
(
theme
),
{
{
margin
:
8
,
margin
:
8
,
maxSize
:
new
go
.
Size
(
200
,
NaN
),
maxSize
:
new
go
.
Size
(
200
,
NaN
),
wrap
:
go
.
TextBlock
.
WrapFit
,
wrap
:
go
.
TextBlock
.
WrapFit
,
textAlign
:
"center"
,
textAlign
:
"center"
,
editable
:
false
editable
:
false
},
},
new
go
.
Binding
(
"text"
).
makeTwoWay
()
new
go
.
Binding
(
"text"
).
makeTwoWay
()
)
)
// no ports, because no links are allowed to connect with a comment
// no ports, because no links are allowed to connect with a comment
)
)
);
);
// replace the default Link template in the linkTemplateMap
// replace the default Link template in the linkTemplateMap
this
.
myDiagram
.
linkTemplate
=
$
(
this
.
myDiagram
.
linkTemplate
=
$
(
go
.
Link
,
// the whole link panel
go
.
Link
,
// the whole link panel
{
{
routing
:
go
.
Link
.
AvoidsNodes
,
routing
:
go
.
Link
.
AvoidsNodes
,
curve
:
go
.
Link
.
JumpOver
,
curve
:
go
.
Link
.
JumpOver
,
corner
:
5
,
corner
:
5
,
toShortLength
:
4
,
toShortLength
:
4
,
relinkableFrom
:
true
,
relinkableFrom
:
true
,
relinkableTo
:
true
,
relinkableTo
:
true
,
reshapable
:
true
,
reshapable
:
true
,
resegmentable
:
true
,
resegmentable
:
true
,
// mouse-overs subtly highlight links:
// mouse-overs subtly highlight links:
mouseEnter
:
function
(
e
,
link
)
{
mouseEnter
:
function
(
e
,
link
)
{
link
.
findObject
(
"HIGHLIGHT"
).
stroke
=
"rgba(30,144,255,0.2)"
;
link
.
findObject
(
"HIGHLIGHT"
).
stroke
=
"rgba(30,144,255,0.2)"
;
},
},
mouseLeave
:
function
(
e
,
link
)
{
mouseLeave
:
function
(
e
,
link
)
{
link
.
findObject
(
"HIGHLIGHT"
).
stroke
=
"transparent"
;
link
.
findObject
(
"HIGHLIGHT"
).
stroke
=
"transparent"
;
},
},
selectionAdorned
:
false
selectionAdorned
:
false
},
},
new
go
.
Binding
(
"points"
).
makeTwoWay
(),
new
go
.
Binding
(
"points"
).
makeTwoWay
(),
$
(
$
(
go
.
Shape
,
// the highlight shape, normally transparent
go
.
Shape
,
// the highlight shape, normally transparent
{
{
isPanelMain
:
true
,
isPanelMain
:
true
,
strokeWidth
:
8
,
strokeWidth
:
8
,
stroke
:
"transparent"
,
stroke
:
"transparent"
,
fill
:
theme
,
fill
:
theme
,
name
:
"HIGHLIGHT"
name
:
"HIGHLIGHT"
}
}
),
),
$
(
$
(
go
.
Shape
,
// the link path shape
go
.
Shape
,
// the link path shape
{
isPanelMain
:
true
,
stroke
:
theme
,
strokeWidth
:
2
},
{
new
go
.
Binding
(
"stroke"
,
"isSelected"
,
function
(
sel
)
{
isPanelMain
:
true
,
return
sel
?
"dodgerblue"
:
theme
;
stroke
:
theme
,
}).
ofObject
()
strokeWidth
:
2
),
},
$
(
new
go
.
Binding
(
"stroke"
,
"isSelected"
,
function
(
sel
)
{
go
.
Shape
,
// the "from" end arrowhead
return
sel
?
"dodgerblue"
:
theme
;
{
fromArrow
:
"Circle"
,
fill
:
"#fff"
,
strokeWidth
:
2
,
stroke
:
theme
}
}).
ofObject
()
),
),
$
(
$
(
go
.
Shape
,
// the arrowhead
go
.
Shape
,
// the "from" end arrowhead
{
toArrow
:
"standard"
,
strokeWidth
:
2
,
fill
:
theme
,
stroke
:
theme
}
{
),
fromArrow
:
"Circle"
,
$
(
fill
:
"#fff"
,
go
.
Panel
,
strokeWidth
:
2
,
"Auto"
,
// the link label, normally not visible
stroke
:
theme
{
}
visible
:
false
,
),
name
:
"LABEL"
,
$
(
segmentIndex
:
2
,
go
.
Shape
,
// the arrowhead
segmentFraction
:
0.5
{
},
toArrow
:
"standard"
,
new
go
.
Binding
(
"visible"
,
"visible"
).
makeTwoWay
(),
strokeWidth
:
2
,
$
(
fill
:
theme
,
go
.
Shape
,
stroke
:
theme
"RoundedRectangle"
,
// the label shape
}
{
fill
:
"#F8F8F8"
,
strokeWidth
:
0
}
),
),
$
(
$
(
go
.
Panel
,
go
.
TextBlock
,
"Auto"
,
// the link label, normally not visible
"Yes"
,
// the label
{
{
visible
:
false
,
textAlign
:
"center"
,
name
:
"LABEL"
,
font
:
"10pt helvetica, arial, sans-serif"
,
segmentIndex
:
2
,
stroke
:
"#333333"
,
segmentFraction
:
0.5
editable
:
false
},
},
new
go
.
Binding
(
"visible"
,
"visible"
).
makeTwoWay
(),
new
go
.
Binding
(
"text"
).
makeTwoWay
()
$
(
)
go
.
Shape
,
)
"RoundedRectangle"
,
// the label shape
);
{
function
showLinkLabel
(
e
)
{
fill
:
"#F8F8F8"
,
var
label
=
e
.
subject
.
findObject
(
"LABEL"
);
strokeWidth
:
0
if
(
label
!==
null
)
}
label
.
visible
=
e
.
subject
.
fromNode
.
data
.
category
===
"Conditional"
;
),
}
$
(
this
.
myDiagram
.
toolManager
.
linkingTool
.
temporaryLink
.
routing
=
go
.
TextBlock
,
go
.
Link
.
Orthogonal
;
"Yes"
,
// the label
this
.
myDiagram
.
toolManager
.
relinkingTool
.
temporaryLink
.
routing
=
{
go
.
Link
.
Orthogonal
;
textAlign
:
"center"
,
this
.
myPalette
=
$
(
font
:
"10pt helvetica, arial, sans-serif"
,
go
.
Palette
,
stroke
:
"#333333"
,
"palette"
,
// must name or refer to the DIV HTML element
editable
:
false
{
},
// Instead of the default animation, use a custom fade-down
new
go
.
Binding
(
"text"
).
makeTwoWay
()
"animationManager.initialAnimationStyle"
:
go
.
AnimationManager
.
None
,
)
InitialAnimationStarting
:
animateFadeDown
,
// Instead, animate with this function
)
);
nodeTemplateMap
:
this
.
myDiagram
.
nodeTemplateMap
,
// share the templates used by myDiagram
function
showLinkLabel
(
e
)
{
nodeSelectionAdornmentTemplate
:
select
,
var
label
=
e
.
subject
.
findObject
(
"LABEL"
);
model
:
new
go
.
GraphLinksModel
([
if
(
label
!==
null
)
// specify the contents of the Palette
label
.
visible
=
e
.
subject
.
fromNode
.
data
.
category
===
"Conditional"
;
{
category
:
"Start"
,
text
:
"开始"
},
}
{
text
:
"节点"
},
this
.
myDiagram
.
toolManager
.
linkingTool
.
temporaryLink
.
routing
=
{
category
:
"Conditional"
,
text
:
"条件"
},
go
.
Link
.
Orthogonal
;
{
category
:
"End"
,
text
:
"结束"
},
this
.
myDiagram
.
toolManager
.
relinkingTool
.
temporaryLink
.
routing
=
{
category
:
"Comment"
,
text
:
"备注"
}
go
.
Link
.
Orthogonal
;
])
this
.
myPalette
=
$
(
}
go
.
Palette
,
);
"palette"
,
// must name or refer to the DIV HTML element
{
// Instead of the default animation, use a custom fade-down
"animationManager.initialAnimationStyle"
:
go
.
AnimationManager
.
None
,
InitialAnimationStarting
:
animateFadeDown
,
// Instead, animate with this function
this
.
myDiagram
.
addModelChangedListener
(
evt
=>
{
nodeTemplateMap
:
this
.
myDiagram
.
nodeTemplateMap
,
// share the templates used by myDiagram
if
(
!
evt
.
isTransactionFinished
)
return
;
nodeSelectionAdornmentTemplate
:
select
,
var
txn
=
evt
.
object
;
// a Transaction
model
:
new
go
.
GraphLinksModel
([
if
(
txn
===
null
)
return
;
// specify the contents of the Palette
// iterate over all of the actual ChangedEvents of the Transaction
{
txn
.
changes
.
each
(
function
(
e
)
{
category
:
"Start"
,
// ignore any kind of change other than adding/removing a node
text
:
"开始"
if
(
e
.
modelChange
!==
"nodeDataArray"
)
return
;
},
// record node insertions and removals
{
if
(
e
.
change
===
go
.
ChangedEvent
.
Insert
)
{
text
:
"节点"
console
.
log
(
},
evt
.
propertyName
+
" added node with key: "
+
e
.
newValue
.
key
{
);
category
:
"Conditional"
,
}
else
if
(
e
.
change
===
go
.
ChangedEvent
.
Remove
)
{
text
:
"条件"
console
.
log
(
},
evt
.
propertyName
+
" removed node with key: "
+
e
.
oldValue
.
key
{
category
:
"End"
,
text
:
"结束"
},
{
category
:
"Comment"
,
text
:
"备注"
}
])
}
);
);
}
});
this
.
myDiagram
.
addModelChangedListener
(
evt
=>
{
});
if
(
!
evt
.
isTransactionFinished
)
return
;
function
animateFadeDown
(
e
)
{
var
txn
=
evt
.
object
;
// a Transaction
var
diagram
=
e
.
diagram
;
if
(
txn
===
null
)
return
;
var
animation
=
new
go
.
Animation
();
// iterate over all of the actual ChangedEvents of the Transaction
animation
.
isViewportUnconstrained
=
true
;
// So Diagram positioning rules let the animation start off-screen
txn
.
changes
.
each
(
function
(
e
)
{
animation
.
easing
=
go
.
Animation
.
EaseOutExpo
;
// ignore any kind of change other than adding/removing a node
animation
.
duration
=
900
;
if
(
e
.
modelChange
!==
"nodeDataArray"
)
return
;
// Fade "down", in other words, fade in from above
// record node insertions and removals
animation
.
add
(
if
(
e
.
change
===
go
.
ChangedEvent
.
Insert
)
{
diagram
,
console
.
log
(
"position"
,
evt
.
propertyName
+
" added node with key: "
+
e
.
newValue
.
key
diagram
.
position
.
copy
().
offset
(
0
,
200
),
);
diagram
.
position
}
else
if
(
e
.
change
===
go
.
ChangedEvent
.
Remove
)
{
);
console
.
log
(
animation
.
add
(
diagram
,
"opacity"
,
0
,
1
);
evt
.
propertyName
+
" removed node with key: "
+
e
.
oldValue
.
key
animation
.
start
();
);
}
}
// this.load();
});
},
});
load
()
{
Api
.
get
(
`
${
workflowUrl
}
/schema/get`
,
{
id
:
this
.
eid
}).
then
(
r
=>
{
function
animateFadeDown
(
e
)
{
console
.
warn
(
r
);
var
diagram
=
e
.
diagram
;
// this.myDiagram.model=go.Model.fromJson(r.content);
var
animation
=
new
go
.
Animation
();
var
data
=
r
.
result
.
content
||
`{}`
;
animation
.
isViewportUnconstrained
=
true
;
// So Diagram positioning rules let the animation start off-screen
// this.init(data)
animation
.
easing
=
go
.
Animation
.
EaseOutExpo
;
// this.init(data)
animation
.
duration
=
900
;
this
.
myDiagram
.
model
=
go
.
Model
.
fromJson
(
data
);
// Fade "down", in other words, fade in from above
});
animation
.
add
(
},
diagram
,
save
()
{
"position"
,
let
content
=
this
.
myDiagram
.
model
.
toJson
();
diagram
.
position
.
copy
().
offset
(
0
,
200
),
Api
.
post
(
`
${
workflowUrl
}
/schema/design`
,
{
diagram
.
position
id
:
this
.
eid
,
);
name
:
""
,
animation
.
add
(
diagram
,
"opacity"
,
0
,
1
);
content
animation
.
start
();
}).
then
(
r
=>
{
}
if
(
r
.
success
)
{
// this.load();
this
.
$Message
.
success
(
"保存成功!"
);
},
this
.
load
();
load
()
{
Api
.
get
(
`
${
workflowUrl
}
/schema/get`
,
{
id
:
this
.
eid
}).
then
(
r
=>
{
console
.
warn
(
r
);
// this.myDiagram.model=go.Model.fromJson(r.content);
var
data
=
r
.
result
.
content
||
`{}`
;
// this.init(data)
// this.init(data)
this
.
myDiagram
.
model
=
go
.
Model
.
fromJson
(
data
);
});
},
save
()
{
let
content
=
this
.
myDiagram
.
model
.
toJson
();
Api
.
post
(
`
${
workflowUrl
}
/schema/design`
,
{
id
:
this
.
eid
,
name
:
""
,
content
}).
then
(
r
=>
{
if
(
r
.
success
)
{
this
.
$Message
.
success
(
"保存成功!"
);
this
.
load
();
}
});
},
show
(
data
)
{
if
(
data
.
id
)
{
this
.
detailModal
=
true
;
this
.
node
=
data
;
this
.
curId
=
data
.
id
;
this
.
detail
=
()
=>
import
(
"./edit"
);
}
else
{
this
.
$Message
.
warning
(
"请先保存流程设计!"
);
}
},
ok
(
node
)
{
if
(
node
.
name
!=
this
.
node
.
text
)
{
this
.
node
.
text
=
node
.
name
;
var
nodeData
=
this
.
myDiagram
.
model
.
findNodeDataForKey
(
this
.
node
.
key
);
nodeData
.
text
=
node
.
name
;
this
.
myDiagram
.
model
.
updateTargetBindings
(
nodeData
);
}
this
.
detailModal
=
false
;
this
.
detail
=
null
;
this
.
curId
=
-
1
;
},
close
()
{
this
.
detailModal
=
false
;
this
.
detail
=
null
;
this
.
curId
=
-
1
;
}
}
});
},
show
(
data
)
{
if
(
data
.
id
)
{
this
.
detailModal
=
true
;
this
.
node
=
data
;
this
.
curId
=
data
.
id
;
this
.
detail
=
()
=>
import
(
"./edit"
);
}
else
{
this
.
$Message
.
warning
(
"请先保存流程设计!"
);
}
},
ok
(
node
)
{
if
(
node
.
name
!=
this
.
node
.
text
)
{
this
.
node
.
text
=
node
.
name
;
var
nodeData
=
this
.
myDiagram
.
model
.
findNodeDataForKey
(
this
.
node
.
key
);
nodeData
.
text
=
node
.
name
;
this
.
myDiagram
.
model
.
updateTargetBindings
(
nodeData
);
}
this
.
detailModal
=
false
;
this
.
detail
=
null
;
this
.
curId
=
-
1
;
}
}
}
};
};
</
script
>
</
script
>
<
style
lang=
"less"
>
<
style
lang=
"less"
>
#flow {
#flow {
// background:#a7a7a7;
// background:#a7a7a7;
margin: -16px;
margin: -16px;
padding: 0 10px;
padding: 0 10px;
canvas:focus {
outline: 0;
canvas:focus {
}
outline: 0;
#myDiagramDiv {
}
height: calc(100vh - 51px);
display: flex;
#myDiagramDiv {
}
height: calc(100vh - 51px);
display: flex;
}
}
}
</
style
>
</
style
>
\ No newline at end of file
pages/workflow/process/design.vue
View file @
77b1cf7c
<
template
>
<
template
>
<div
class=
"Design"
>
<div
class=
"Design"
>
<Timeline>
<Timeline>
<TimelineItem
v-for=
"(node,i) in nodes"
:key=
"node.id"
>
<TimelineItem
v-for=
"(node,i) in nodes"
:key=
"node.id"
>
<Badge
:count=
"i+1"
type=
"primary"
slot=
"dot"
></Badge>
<Badge
:count=
"i+1"
type=
"primary"
slot=
"dot"
></Badge>
<div
class=
"node"
@
click=
"edit(node.id,i)"
>
<div
class=
"node"
@
click=
"edit(node.id,i)"
>
<div
class=
"title"
>
<div
class=
"title"
>
<a>
<a>
{{
node
.
name
}}
{{
node
.
name
}}
(
(
<state
code=
"workflow.form.audit.type"
:value=
"node.operation"
/>
)
<state
code=
"workflow.form.audit.type"
:value=
"node.operation"
/>
)
<Icon
type=
"md-build"
/>
<Icon
type=
"md-build"
/>
<Icon
v-if=
"node.isFixed"
type=
"ios-lock"
color=
"orange"
title=
"人员固定"
/>
<Icon
v-if=
"node.isFixed"
type=
"ios-lock"
color=
"orange"
title=
"人员固定"
/>
</a>
</a>
</div>
</div>
<div
v-if=
"node.userIds&&node.userIds.length>0"
>
<div
v-if=
"node.userIds&&node.userIds.length>0"
>
审批人:
审批人:
<User
v-for=
"(item,j) in node.userIds"
:value=
"item"
class=
"ml10"
:key=
"j"
/>
<User
v-for=
"(item,j) in node.userIds"
:value=
"item"
class=
"ml10"
:key=
"j"
/>
</div>
</div>
<div
v-if=
"node.roleList&&node.roleList.length>0"
>
<div
v-if=
"node.roleList&&node.roleList.length>0"
>
审批角色:
审批角色:
<span
<span
v-for=
"(role,k) in node.roleList"
class=
"mr10"
>
{{
role
.
name
}}
(
{{
role
.
userIdList
.
length
}}
)
</span>
v-for=
"(role,k) in node.roleList"
</div>
class=
"mr10"
</div>
>
{{
role
.
name
}}
(
{{
role
.
userIdList
.
length
}}
)
</span>
</TimelineItem>
</div>
</div>
</TimelineItem>
</Timeline>
</Timeline>
<Modal
v-model=
"editModal"
title=
"编辑"
footer-hide
width=
"800"
>
<Modal
v-model=
"editModal"
title=
"编辑"
footer-hide
width=
"800"
>
<Edit
:eid=
"curId"
@
on-close=
"cancel"
@
on-ok=
"addOk"
/>
<Edit
:eid=
"curId"
@
on-close=
"cancel"
@
on-ok=
"addOk"
/>
</Modal>
</Modal>
<Modal
v-model=
"startModal"
title=
"开始节点编辑"
footer-hide
width=
"800"
>
<Modal
v-model=
"startModal"
title=
"开始节点编辑"
footer-hide
width=
"800"
>
<StartEdit
:eid=
"startId"
@
on-close=
"cancel"
@
on-ok=
"addOk"
/>
<StartEdit
:eid=
"startId"
@
on-close=
"cancel"
@
on-ok=
"addOk"
/>
</Modal>
</Modal>
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
import
Api
from
'./api'
import
Api
from
'./api'
import
Edit
from
'./node'
import
Edit
from
'./node'
import
StartEdit
from
'./node/start'
import
StartEdit
from
'./node/start'
export
default
{
export
default
{
name
:
'Design'
,
name
:
'Design'
,
data
()
{
data
()
{
return
{
return
{
editModal
:
false
,
editModal
:
false
,
entity
:
{},
entity
:
{},
nodes
:
[],
nodes
:
[],
curId
:
0
,
curId
:
0
,
startId
:
0
,
startId
:
0
,
startModal
:
false
startModal
:
false
}
}
},
components
:
{
Edit
,
StartEdit
},
props
:
{
eid
:
String
},
async
fetch
({
store
,
params
})
{
await
store
.
dispatch
(
'loadDictionary'
)
// 加载数据字典
},
mounted
(){
this
.
load
(
this
.
eid
)
},
methods
:
{
load
(
v
)
{
alert
(
v
)
Api
.
detail
({
id
:
v
}).
then
((
r
)
=>
{
this
.
nodes
=
r
.
result
.
nodes
// this.$emit('on-load')
})
},
},
edit
(
id
,
i
)
{
components
:
{
if
(
i
==
0
)
{
Edit
,
this
.
startModal
=
true
StartEdit
this
.
startId
=
id
;
}
else
{
this
.
editModal
=
true
this
.
curId
=
id
}
},
},
handleClose
()
{
props
:
{
this
.
$emit
(
'on-close'
)
eid
:
String
},
},
cancel
()
{
async
fetch
({
this
.
editModal
=
false
store
,
this
.
startModal
=
false
params
})
{
await
store
.
dispatch
(
'loadDictionary'
)
// 加载数据字典
},
},
addOk
()
{
mounted
()
{
this
.
curId
=
0
this
.
load
(
this
.
eid
)
this
.
editModal
=
false
this
.
startId
=
0
this
.
startModal
=
false
this
.
load
(
this
.
eid
)
},
},
l
(
key
)
{
methods
:
{
key
=
'instance'
+
'.'
+
key
load
(
v
)
{
return
this
.
$t
(
key
)
//alert(v)
}
Api
.
detail
({
},
id
:
v
watch
:
{
}).
then
((
r
)
=>
{
eid
(
v
)
{
this
.
nodes
=
r
.
result
.
nodes
if
(
v
!=
0
)
{
// this.$emit('on-load')
this
.
load
(
v
)
})
}
},
edit
(
id
,
i
)
{
if
(
i
==
0
)
{
this
.
startModal
=
true
this
.
startId
=
id
;
}
else
{
this
.
editModal
=
true
this
.
curId
=
id
}
},
handleClose
()
{
this
.
$emit
(
'on-close'
)
},
cancel
()
{
this
.
editModal
=
false
this
.
startModal
=
false
},
addOk
()
{
this
.
curId
=
0
this
.
editModal
=
false
this
.
startId
=
0
this
.
startModal
=
false
this
.
load
(
this
.
eid
)
},
l
(
key
)
{
key
=
'instance'
+
'.'
+
key
return
this
.
$t
(
key
)
}
},
watch
:
{
eid
(
v
)
{
if
(
v
!=
0
)
{
this
.
load
(
v
)
}
}
}
}
}
}
}
</
script
>
</
script
>
<
style
lang=
"less"
>
<
style
lang=
"less"
>
.Design {
.Design {
background: white;
background: white;
padding: 20px 50px;
padding: 20px 50px;
.node {
.title {
.node {
font-size: 14px;
.title {
font-weight: bold;
font-size: 14px;
.auditedTime {
font-weight: bold;
font-size: 12px;
color: #ddd;
.auditedTime {
}
font-size: 12px;
color: #ddd;
}
}
}
}
}
}
}
</
style
>
</
style
>
\ No newline at end of file
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