Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
lxyl-vue
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
李苏
lxyl-vue
Commits
8f68344f
Commit
8f68344f
authored
May 16, 2024
by
李苏
💬
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
库存重检新增重写
parent
aaafd6c8
Changes
11
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
796 additions
and
171 deletions
+796
-171
index.vue
src/views/ccgl/cxfx/sfhzcx/index.vue
+1
-1
detail.vue
src/views/ccgl/dpkb/lkkb/detail.vue
+159
-0
index.vue
src/views/ccgl/dpkb/lkkb/index.vue
+17
-8
mx1.vue
src/views/ccgl/dpkb/lkkb/mx/mx1.vue
+10
-10
mx11.vue
src/views/ccgl/dpkb/lkkb/mx/mx11.vue
+299
-63
mx.vue
src/views/ccgl/rkgl/rkd/mx.vue
+15
-5
index.vue
src/views/ccgl/rkgl/rkd/top/index.vue
+20
-20
add.vue
src/views/ccgl/zlgl/kccjd/top/add.vue
+37
-63
addAll.vue
src/views/ccgl/zlgl/kccjd/top/addAll.vue
+104
-0
index.vue
src/views/ccgl/zlgl/kccjd/top/index.vue
+1
-1
wlxx.vue
src/views/ccgl/zlgl/kccjd/top/wlxx.vue
+133
-0
No files found.
src/views/ccgl/cxfx/sfhzcx/index.vue
View file @
8f68344f
...
...
@@ -220,7 +220,7 @@
{
"label"
:
"物料批号"
,
"prop"
:
"
wlph
"
,
"prop"
:
"
phxx
"
,
"span"
:
4
,
"type"
:
"input"
,
"value"
:
""
,
...
...
src/views/ccgl/dpkb/lkkb/detail.vue
0 → 100644
View file @
8f68344f
<
template
>
<DefaultDialog
:appendToBody=
'false'
:app=
'app'
>
<div
slot=
"form"
style=
"display: flex;height: 70vh;"
>
<BasePage
:showPagination=
'false'
:setFirstCurrent=
'false'
@
basePageMounted=
'basePageMounted'
:power=
'power'
class=
"min_full"
style=
"height: 100%;"
:config=
"config"
>
</BasePage>
</div>
<!--
<div
slot=
"reFooter"
class=
"refooter"
>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"app.showDialog=false"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"save()"
>
保 存
</el-button>
</span>
</div>
-->
</DefaultDialog>
</
template
>
<
script
>
export
default
{
props
:
{
app
:
{
type
:
Object
,
default
:
()
=>
{
return
{}
}
}
},
async
mounted
()
{
},
data
()
{
return
{
power
:
{
add
:
false
,
copy
:
false
,
/* 手动控制删除 */
delButton
:
false
,
/* 手动控制编辑按钮权限 */
editButton
:
false
,
/* 是否渲染右侧操作按钮 */
operateButtons
:
false
,
/* 是否开启工作流按钮 */
workFlow
:
false
,
/* 表格开启选择,以及记住选择 */
showSelection
:
false
,
saveSelected
:
false
},
config
:
{
/* 基本配置*/
url
:
'wms/cxfx/kwmx'
,
queryUrl
:
'wms/jcsj/kw/queryKwmx'
,
tableTitle
:
[
{
title
:
"容器编码"
,
field
:
"rqCode"
,
width
:
140
},
{
title
:
"唯一码"
,
field
:
"packCode"
,
width
:
140
},
{
title
:
"物料编码"
,
field
:
"wlxxCode"
,
width
:
140
},
{
title
:
"物料名称"
,
field
:
"wlxxName"
,
width
:
140
},
{
title
:
"规格"
,
field
:
"wlxxGg"
,
width
:
140
},
{
title
:
"物料批号"
,
field
:
"wlph"
,
width
:
140
},
{
title
:
"制令号"
,
field
:
"zlh"
,
width
:
140
},
{
title
:
"库存数量"
,
field
:
"kcsl"
,
width
:
140
}
],
queryParams
:
[
],
/* 默认启停用 */
showqt
:
false
,
}
}
},
methods
:
{
basePageMounted
(
ctx
){
ctx
.
queryParams
.
kwid
=
this
.
app
.
nowSelect
.
id
}
}
}
</
script
>
<
style
scoped
>
/
deep
/
.el-dialog
{
border
:
2px
solid
#032d60
;
-webkit-box-shadow
:
#07417a
0px
0px
10px
;
-moz-box-shadow
:
#07417a
0px
0px
10px
;
box-shadow
:
inset
0
0
30px
#07417a
;
background
:
url(./dimage/data08.png)
;
background-size
:
100%
100%
;
opacity
:
1
;
}
/
deep
/
.toolButton
{
display
:
none
;
}
/
deep
/
.el-dialog__title
{
color
:
#fff
;
}
.search-span
{
color
:
#fff
!important
;
}
.min_full
{
border
:
0px
solid
!important
;
}
.search
{
border
:
0px
solid
!important
;
}
/
deep
/
.el-table
th
.el-table__cell
{
background-color
:
rgba
(
0
,
0
,
0
,
.2
)
!important
;
color
:
#25c2da
!important
;
font-size
:
13px
!important
;
font-weight
:
500
!important
;
}
/
deep
/
.el-table
tr
{
background-color
:
rgba
(
0
,
0
,
0
,
.2
)
!important
;
color
:
#25c2da
!important
;
font-size
:
13px
!important
;
font-weight
:
500
!important
;
}
/
deep
/
.el-table
{
background-color
:
rgba
(
0
,
0
,
0
,
.2
)
!important
;
}
</
style
>
src/views/ccgl/dpkb/lkkb/index.vue
View file @
8f68344f
<
template
>
<div
ref=
'lkkb'
class=
"min_full dbAllBody "
>
<Detail
:app=
'this'
v-if=
"showDialog"
/>
<!-- 绝对定位展示框-->
<div
ref=
"infoBox"
class=
"infoCar"
>
</div>
...
...
@@ -107,7 +107,7 @@
<b
class=
"data-title-right"
>
]
</b>
</div>
<div
class=
"kwMain full "
>
<component
ref=
"dynamic"
class=
"full"
:is=
"dynamicComponent"
>
<component
@
eclick=
'eclick'
ref=
"dynamic"
class=
"full"
:is=
"dynamicComponent"
>
</component>
</div>
...
...
@@ -120,6 +120,7 @@
</
template
>
<
script
>
import
Detail
from
'./detail.vue'
/* mx集合*/
import
mx1
from
'./mx/mx1.vue'
;
import
mx2
from
'./mx/mx2.vue'
;
...
...
@@ -159,12 +160,9 @@
this
.
$nextTick
(()
=>
{
$
(
this
.
$refs
.
lkkb
).
dblclick
(()
=>
{
fullScreen
(
this
.
$refs
.
lkkb
);
})
})
},
computed
:
{
...
...
@@ -172,6 +170,10 @@
},
data
()
{
return
{
showDialog
:
false
,
DialogTitle
:
'详情'
,
DialogWidth
:
'75vw'
,
nowSelect
:{},
dynamicComponent
:
'mx1'
,
/* 排列*/
xdList1
:
[
1
,
2
,
3
,
4
],
...
...
@@ -193,9 +195,16 @@
clearInterval
(
this
.
timer
)
},
methods
:
{
eclick
(
item
){
this
.
nowSelect
=
item
this
.
DialogTitle
=
item
.
code
this
.
$nextTick
(()
=>
{
this
.
showDialog
=
true
})
}
},
components
:
{
Detail
,
mx1
,
mx2
,
mx3
,
mx11
}
...
...
@@ -225,11 +234,11 @@
}
::v-deep
.sdkccj
{
background-size
:
100%
100%
;
background-image
:
url(./lkdp/
sd
.svg)
;
background-image
:
url(./lkdp/
jy
.svg)
;
}
::v-deep
.djkccj
{
background-size
:
100%
100%
;
background-image
:
url(./lkdp/
dj
.svg)
;
background-image
:
url(./lkdp/
jy
.svg)
;
}
.kwMain
{
...
...
src/views/ccgl/dpkb/lkkb/mx/mx1.vue
View file @
8f68344f
...
...
@@ -3,8 +3,8 @@
<div
ref=
"infoBox"
class=
"infoCar"
>
</div>
<div
class=
"full container"
>
<div
ref=
"mx1"
v-for=
"(item,index) in boxList"
:key=
"item.code"
class=
"box"
:class=
"
{
yh:item.kczt=='U', wh:item.kczt=='E', dj:item.zt=='F', sd:item.zt=='L', kccj:item.cjzt=='Y'
<div
@
click=
'eclick(item)'
:code=
'item.code'
:item=
'JSON.stringify(item)'
ref=
"mx1"
v-for=
"(item,index) in boxList"
:key=
"item.code"
class=
"box"
:class=
"
{
yh:item.kczt=='U', wh:item.kczt=='E', dj:item.zt=='F', sd:item.zt=='L', kccj:item.cjzt=='Y'
,sdkccj:item.cjzt=='Y'
&&
item.zt=='L',sdkccj:item.cjzt=='Y'
&&
item.zt=='F'
}" >
<!--
{{
item
.
code
}}
-->
</div>
...
...
@@ -22,6 +22,9 @@
}
},
methods
:{
eclick
(
item
){
this
.
$emit
(
'eclick'
,
item
)
},
getBoxList
(){
this
.
$post
(
'lxyl/cxfx/kw/query'
,{
hjCode
:
'HJ1'
,
...
...
@@ -34,19 +37,16 @@
var
infoBox
=
this
.
$refs
.
infoBox
$
(
this
.
$refs
.
mx1
).
each
((
index
,
element
)
=>
{
element
.
addEventListener
(
'mouseover'
,
(
event
)
=>
{
console
.
log
(
event
)
let
info
=
this
.
boxList
[
index
]
let
content
=
`
<br />
名称:
${
info
.
code
}
<br />
状态:正常
仓库编码:
${
info
.
ckCode
}
<br />
数量:100
库区编码:
${
info
.
kqCode
}
<br />
物料:测试code
<br />
`
库位编码:
${
info
.
code
}
`
$
(
infoBox
).
empty
()
$
(
infoBox
).
append
(
content
)
infoBox
.
style
.
top
=
(
event
.
layerY
+
25
)
+
'px'
;
// 信息框距离顶部10像素
...
...
@@ -105,6 +105,6 @@
top
:
10px
;
line-height
:
16px
;
height
:
106px
;
width
:
1
3
0px
width
:
1
5
0px
}
</
style
>
src/views/ccgl/dpkb/lkkb/mx/mx11.vue
View file @
8f68344f
<
template
>
<div
ref=
'mx11'
class=
"full"
style=
"position: relative;"
>
<div
ref=
'mx11'
class=
"full"
style=
"position: relative;"
>
<div
class=
"full flex containerAll"
>
<div
class=
"full flex1 container1"
>
<div
ref=
"mx1"
v-for=
"(item,index) in boxList1"
:key=
"item.code"
class=
"box"
>
<div
ref=
"infoBox1"
class=
"infoCar"
>
</div>
<div
@
click=
'eclick(item)'
:code=
'item.code'
:item=
'JSON.stringify(item)'
ref=
"mx1"
v-for=
"(item,index) in boxList1"
:key=
"item.code"
class=
"box"
:class=
"
{
yh:item.kczt=='U', wh:item.kczt=='E', dj:item.zt=='F', sd:item.zt=='L', kccj:item.cjzt=='Y',sdkccj:item.cjzt=='Y'
&&
item.zt=='L',sdkccj:item.cjzt=='Y'
&&
item.zt=='F'
}" >
</div>
</div>
<div
class=
"full flex1 container2"
>
<div
ref=
"mx2"
v-for=
"(item,index) in boxList2"
:key=
"item.code"
class=
"box"
>
<div
ref=
"infoBox2"
class=
"infoCar"
>
</div>
<div
@
click=
'eclick(item)'
:code=
'item.code'
:item=
'JSON.stringify(item)'
ref=
"mx2"
v-for=
"(item,index) in boxList2"
:key=
"item.code"
class=
"box"
:class=
"
{
yh:item.kczt=='U', wh:item.kczt=='E', dj:item.zt=='F', sd:item.zt=='L', kccj:item.cjzt=='Y',sdkccj:item.cjzt=='Y'
&&
item.zt=='L',sdkccj:item.cjzt=='Y'
&&
item.zt=='F'
}" >
</div>
</div>
<div
class=
"full flex1 container3"
>
<div
ref=
"mx3"
v-for=
"(item,index) in boxList3"
:key=
"item.code"
class=
"box"
>
<div
ref=
"infoBox3"
class=
"infoCar"
>
</div>
<div
@
click=
'eclick(item)'
:code=
'item.code'
:item=
'JSON.stringify(item)'
ref=
"mx3"
v-for=
"(item,index) in boxList3"
:key=
"item.code"
class=
"box"
:class=
"
{
yh:item.kczt=='U', wh:item.kczt=='E', dj:item.zt=='F', sd:item.zt=='L', kccj:item.cjzt=='Y',sdkccj:item.cjzt=='Y'
&&
item.zt=='L',sdkccj:item.cjzt=='Y'
&&
item.zt=='F'
}" >
</div>
</div>
<div
class=
"full flex1 container4"
>
<el-tooltip
v-for=
"(item,index) in boxList4"
placement=
"right"
>
<div
slot=
"content"
>
仓库编码
<br/>
库区编码
<br/>
库区编码
<br/>
库区编码
<br/>
库区编码
<br/>
库区编码
<br/>
库区编码
<br/>
<div
ref=
"infoBox4"
class=
"infoCar"
>
</div>
<div
ref=
"mx4"
:key=
"item.code"
class=
"box"
>
<div
@
click=
'eclick(item)'
:code=
'item.code'
:item=
'JSON.stringify(item)'
ref=
"mx4"
v-for=
"(item,index) in boxList4"
:key=
"item.code"
class=
"box"
:class=
"
{
yh:item.kczt=='U', wh:item.kczt=='E', dj:item.zt=='F', sd:item.zt=='L', kccj:item.cjzt=='Y',sdkccj:item.cjzt=='Y'
&&
item.zt=='L',sdkccj:item.cjzt=='Y'
&&
item.zt=='F'
}" >
</div>
</el-tooltip>
</div>
<div
class=
"full flex1 container5"
>
<div
ref=
"mx5"
v-for=
"(item,index) in boxList5"
:key=
"item.code"
class=
"box"
>
<div
ref=
"infoBox5"
class=
"infoCar"
>
</div>
<div
@
click=
'eclick(item)'
:code=
'item.code'
:item=
'JSON.stringify(item)'
ref=
"mx5"
v-for=
"(item,index) in boxList5"
:key=
"item.code"
class=
"box"
:class=
"
{
yh:item.kczt=='U', wh:item.kczt=='E', dj:item.zt=='F', sd:item.zt=='L', kccj:item.cjzt=='Y',sdkccj:item.cjzt=='Y'
&&
item.zt=='L',sdkccj:item.cjzt=='Y'
&&
item.zt=='F'
}" >
</div>
</div>
<div
class=
"full flex1 container6"
>
<div
ref=
"mx6"
v-for=
"(item,index) in boxList6"
:key=
"item.code"
class=
"box"
>
<div
ref=
"infoBox6"
class=
"infoCar"
>
</div>
<div
@
click=
'eclick(item)'
:code=
'item.code'
:item=
'JSON.stringify(item)'
ref=
"mx6"
v-for=
"(item,index) in boxList6"
:key=
"item.code"
class=
"box"
:class=
"
{
yh:item.kczt=='U', wh:item.kczt=='E', dj:item.zt=='F', sd:item.zt=='L', kccj:item.cjzt=='Y',sdkccj:item.cjzt=='Y'
&&
item.zt=='L',sdkccj:item.cjzt=='Y'
&&
item.zt=='F'
}" >
</div>
</div>
<div
class=
"full flex1 container7"
>
<div
ref=
"mx7"
v-for=
"(item,index) in boxList7"
:key=
"item.code"
class=
"box"
>
<div
ref=
"infoBox7"
class=
"infoCar"
>
</div>
<div
@
click=
'eclick(item)'
:code=
'item.code'
:item=
'JSON.stringify(item)'
ref=
"mx7"
v-for=
"(item,index) in boxList7"
:key=
"item.code"
class=
"box"
:class=
"
{
yh:item.kczt=='U', wh:item.kczt=='E', dj:item.zt=='F', sd:item.zt=='L', kccj:item.cjzt=='Y',sdkccj:item.cjzt=='Y'
&&
item.zt=='L',sdkccj:item.cjzt=='Y'
&&
item.zt=='F'
}" >
</div>
</div>
<div
class=
"full flex1 container8"
>
<div
ref=
"mx8"
v-for=
"(item,index) in boxList8"
:key=
"item.code"
class=
"box"
>
<div
ref=
"infoBox8"
class=
"infoCar"
>
</div>
<div
@
click=
'eclick(item)'
:code=
'item.code'
:item=
'JSON.stringify(item)'
ref=
"mx8"
v-for=
"(item,index) in boxList8"
:key=
"item.code"
class=
"box"
:class=
"
{
yh:item.kczt=='U', wh:item.kczt=='E', dj:item.zt=='F', sd:item.zt=='L', kccj:item.cjzt=='Y',sdkccj:item.cjzt=='Y'
&&
item.zt=='L',sdkccj:item.cjzt=='Y'
&&
item.zt=='F'
}" >
</div>
</div>
</div>
...
...
@@ -56,37 +75,37 @@
}
export
default
{
beforeDestroy
()
{
$
(
this
.
$refs
.
mx1
).
each
((
index
,
item
)
=>
{
$
(
this
.
$refs
.
mx1
).
each
((
index
,
item
)
=>
{
item
.
removeEventListener
(
'mouseover'
);
})
$
(
this
.
$refs
.
mx2
).
each
((
index
,
item
)
=>
{
$
(
this
.
$refs
.
mx2
).
each
((
index
,
item
)
=>
{
item
.
removeEventListener
(
'mouseover'
);
})
$
(
this
.
$refs
.
mx3
).
each
((
index
,
item
)
=>
{
$
(
this
.
$refs
.
mx3
).
each
((
index
,
item
)
=>
{
item
.
removeEventListener
(
'mouseover'
);
})
$
(
this
.
$refs
.
mx4
).
each
((
index
,
item
)
=>
{
$
(
this
.
$refs
.
mx4
).
each
((
index
,
item
)
=>
{
item
.
removeEventListener
(
'mouseover'
);
})
$
(
this
.
$refs
.
mx5
).
each
((
index
,
item
)
=>
{
$
(
this
.
$refs
.
mx5
).
each
((
index
,
item
)
=>
{
item
.
removeEventListener
(
'mouseover'
);
})
$
(
this
.
$refs
.
mx6
).
each
((
index
,
item
)
=>
{
$
(
this
.
$refs
.
mx6
).
each
((
index
,
item
)
=>
{
item
.
removeEventListener
(
'mouseover'
);
})
$
(
this
.
$refs
.
mx7
).
each
((
index
,
item
)
=>
{
$
(
this
.
$refs
.
mx7
).
each
((
index
,
item
)
=>
{
item
.
removeEventListener
(
'mouseover'
);
})
$
(
this
.
$refs
.
mx8
).
each
((
index
,
item
)
=>
{
$
(
this
.
$refs
.
mx8
).
each
((
index
,
item
)
=>
{
item
.
removeEventListener
(
'mouseover'
);
})
},
mounted
()
{
this
.
$post
(
'lxyl/cxfx/kw/query'
,{
hjCode
:
'HJ11'
,
kwx
:
'11'
}).
then
(
res
=>
{
let
list
=
res
.
data
.
records
this
.
$post
(
'lxyl/cxfx/kw/query'
,
{
hjCode
:
'HJ11'
,
kwx
:
'11'
}).
then
(
res
=>
{
let
list
=
res
.
data
.
records
this
.
getBoxList1
(
list
)
this
.
getBoxList2
(
list
)
this
.
getBoxList3
(
list
)
...
...
@@ -113,8 +132,8 @@
},
methods
:
{
getEvent
(
mx
,
list
)
{
eclick
(
item
)
{
this
.
$emit
(
'eclick'
,
item
)
},
getBoxList1
(
list
)
{
/* 开始造数据*/
...
...
@@ -123,12 +142,37 @@
for
(
let
yi
=
9
;
yi
>=
1
;
yi
--
)
{
for
(
let
xi
=
1
;
xi
<=
x
;
xi
++
)
{
let
code
=
`11-
${
padZero
(
xi
,
3
)}
-
${
padZero
(
yi
,
3
)}
`
let
item
=
list
.
filter
(
item
=>
item
.
code
==
code
)
let
item
=
list
.
filter
(
item
=>
item
.
code
==
code
)
this
.
boxList1
.
push
(
item
[
0
])
}
}
this
.
$nextTick
(()
=>
{
this
.
getEvent
(
this
.
$refs
.
mx1
,
this
.
boxList1
)
var
infoBox
=
this
.
$refs
.
infoBox1
$
(
this
.
$refs
.
mx1
).
each
((
index
,
element
)
=>
{
element
.
addEventListener
(
'mouseover'
,
(
event
)
=>
{
let
info
=
this
.
boxList1
[
index
]
let
content
=
`
<br />
仓库编码:
${
info
.
ckCode
}
<br />
库区编码:
${
info
.
kqCode
}
<br />
库位编码:
${
info
.
code
}
`
$
(
infoBox
).
empty
()
$
(
infoBox
).
append
(
content
)
infoBox
.
style
.
top
=
(
event
.
layerY
+
25
)
+
'px'
;
// 信息框距离顶部10像素
infoBox
.
style
.
left
=
(
event
.
layerX
+
25
)
+
'px'
;
// 信息框距离左侧10像素
infoBox
.
style
.
display
=
'block'
;
});
element
.
addEventListener
(
'mouseout'
,
function
(
event
)
{
infoBox
.
style
.
display
=
'none'
;
});
});
})
},
getBoxList2
(
list
)
{
...
...
@@ -138,12 +182,36 @@
for
(
let
yi
=
9
;
yi
>=
1
;
yi
--
)
{
for
(
let
xi
=
5
;
xi
<=
x
;
xi
++
)
{
let
code
=
`11-
${
padZero
(
xi
,
3
)}
-
${
padZero
(
yi
,
3
)}
`
let
item
=
list
.
filter
(
item
=>
item
.
code
==
code
)
let
item
=
list
.
filter
(
item
=>
item
.
code
==
code
)
this
.
boxList2
.
push
(
item
[
0
])
}
}
this
.
$nextTick
(()
=>
{
this
.
getEvent
(
this
.
$refs
.
mx2
,
this
.
boxList2
)
var
infoBox
=
this
.
$refs
.
infoBox2
$
(
this
.
$refs
.
mx2
).
each
((
index
,
element
)
=>
{
element
.
addEventListener
(
'mouseover'
,
(
event
)
=>
{
let
info
=
this
.
boxList2
[
index
]
let
content
=
`
<br />
仓库编码:
${
info
.
ckCode
}
<br />
库区编码:
${
info
.
kqCode
}
<br />
库位编码:
${
info
.
code
}
`
$
(
infoBox
).
empty
()
$
(
infoBox
).
append
(
content
)
infoBox
.
style
.
top
=
(
event
.
layerY
+
25
)
+
'px'
;
// 信息框距离顶部10像素
infoBox
.
style
.
left
=
(
event
.
layerX
+
25
)
+
'px'
;
// 信息框距离左侧10像素
infoBox
.
style
.
display
=
'block'
;
});
element
.
addEventListener
(
'mouseout'
,
function
(
event
)
{
infoBox
.
style
.
display
=
'none'
;
});
});
})
},
getBoxList3
(
list
)
{
...
...
@@ -153,12 +221,36 @@
for
(
let
yi
=
9
;
yi
>=
1
;
yi
--
)
{
for
(
let
xi
=
9
;
xi
<=
x
;
xi
++
)
{
let
code
=
`11-
${
padZero
(
xi
,
3
)}
-
${
padZero
(
yi
,
3
)}
`
let
item
=
list
.
filter
(
item
=>
item
.
code
==
code
)
let
item
=
list
.
filter
(
item
=>
item
.
code
==
code
)
this
.
boxList3
.
push
(
item
[
0
])
}
}
this
.
$nextTick
(()
=>
{
this
.
getEvent
(
this
.
$refs
.
mx3
,
this
.
boxList3
)
var
infoBox
=
this
.
$refs
.
infoBox3
$
(
this
.
$refs
.
mx3
).
each
((
index
,
element
)
=>
{
element
.
addEventListener
(
'mouseover'
,
(
event
)
=>
{
let
info
=
this
.
boxList3
[
index
]
let
content
=
`
<br />
仓库编码:
${
info
.
ckCode
}
<br />
库区编码:
${
info
.
kqCode
}
<br />
库位编码:
${
info
.
code
}
`
$
(
infoBox
).
empty
()
$
(
infoBox
).
append
(
content
)
infoBox
.
style
.
top
=
(
event
.
layerY
+
25
)
+
'px'
;
// 信息框距离顶部10像素
infoBox
.
style
.
left
=
(
event
.
layerX
+
25
)
+
'px'
;
// 信息框距离左侧10像素
infoBox
.
style
.
display
=
'block'
;
});
element
.
addEventListener
(
'mouseout'
,
function
(
event
)
{
infoBox
.
style
.
display
=
'none'
;
});
});
})
},
getBoxList4
(
list
)
{
...
...
@@ -168,12 +260,37 @@
for
(
let
yi
=
9
;
yi
>=
1
;
yi
--
)
{
for
(
let
xi
=
12
;
xi
<=
x
;
xi
++
)
{
let
code
=
`11-
${
padZero
(
xi
,
3
)}
-
${
padZero
(
yi
,
3
)}
`
let
item
=
list
.
filter
(
item
=>
item
.
code
==
code
)
let
item
=
list
.
filter
(
item
=>
item
.
code
==
code
)
this
.
boxList4
.
push
(
item
[
0
])
}
}
this
.
$nextTick
(()
=>
{
this
.
getEvent
(
this
.
$refs
.
mx4
,
this
.
boxList4
)
var
infoBox
=
this
.
$refs
.
infoBox4
$
(
this
.
$refs
.
mx4
).
each
((
index
,
element
)
=>
{
element
.
addEventListener
(
'mouseover'
,
(
event
)
=>
{
let
info
=
this
.
boxList4
[
index
]
let
content
=
`
<br />
仓库编码:
${
info
.
ckCode
}
<br />
库区编码:
${
info
.
kqCode
}
<br />
库位编码:
${
info
.
code
}
`
$
(
infoBox
).
empty
()
$
(
infoBox
).
append
(
content
)
infoBox
.
style
.
top
=
(
event
.
layerY
+
25
)
+
'px'
;
// 信息框距离顶部10像素
infoBox
.
style
.
left
=
(
event
.
layerX
+
25
)
+
'px'
;
// 信息框距离左侧10像素
infoBox
.
style
.
display
=
'block'
;
});
element
.
addEventListener
(
'mouseout'
,
function
(
event
)
{
infoBox
.
style
.
display
=
'none'
;
});
});
})
},
getBoxList5
(
list
)
{
...
...
@@ -183,12 +300,37 @@
for
(
let
yi
=
9
;
yi
>=
1
;
yi
--
)
{
for
(
let
xi
=
17
;
xi
<=
x
;
xi
++
)
{
let
code
=
`11-
${
padZero
(
xi
,
3
)}
-
${
padZero
(
yi
,
3
)}
`
let
item
=
list
.
filter
(
item
=>
item
.
code
==
code
)
let
item
=
list
.
filter
(
item
=>
item
.
code
==
code
)
this
.
boxList5
.
push
(
item
[
0
])
}
}
this
.
$nextTick
(()
=>
{
this
.
getEvent
(
this
.
$refs
.
mx5
,
this
.
boxList5
)
var
infoBox
=
this
.
$refs
.
infoBox5
$
(
this
.
$refs
.
mx5
).
each
((
index
,
element
)
=>
{
element
.
addEventListener
(
'mouseover'
,
(
event
)
=>
{
let
info
=
this
.
boxList5
[
index
]
let
content
=
`
<br />
仓库编码:
${
info
.
ckCode
}
<br />
库区编码:
${
info
.
kqCode
}
<br />
库位编码:
${
info
.
code
}
`
$
(
infoBox
).
empty
()
$
(
infoBox
).
append
(
content
)
infoBox
.
style
.
top
=
(
event
.
layerY
+
25
)
+
'px'
;
// 信息框距离顶部10像素
infoBox
.
style
.
left
=
(
event
.
layerX
+
25
)
+
'px'
;
// 信息框距离左侧10像素
infoBox
.
style
.
display
=
'block'
;
});
element
.
addEventListener
(
'mouseout'
,
function
(
event
)
{
infoBox
.
style
.
display
=
'none'
;
});
});
})
},
getBoxList6
(
list
)
{
...
...
@@ -198,12 +340,37 @@
for
(
let
yi
=
9
;
yi
>=
1
;
yi
--
)
{
for
(
let
xi
=
21
;
xi
<=
x
;
xi
++
)
{
let
code
=
`11-
${
padZero
(
xi
,
3
)}
-
${
padZero
(
yi
,
3
)}
`
let
item
=
list
.
filter
(
item
=>
item
.
code
==
code
)
let
item
=
list
.
filter
(
item
=>
item
.
code
==
code
)
this
.
boxList6
.
push
(
item
[
0
])
}
}
this
.
$nextTick
(()
=>
{
this
.
getEvent
(
this
.
$refs
.
mx6
,
this
.
boxList6
)
var
infoBox
=
this
.
$refs
.
infoBox6
$
(
this
.
$refs
.
mx6
).
each
((
index
,
element
)
=>
{
element
.
addEventListener
(
'mouseover'
,
(
event
)
=>
{
let
info
=
this
.
boxList6
[
index
]
let
content
=
`
<br />
仓库编码:
${
info
.
ckCode
}
<br />
库区编码:
${
info
.
kqCode
}
<br />
库位编码:
${
info
.
code
}
`
$
(
infoBox
).
empty
()
$
(
infoBox
).
append
(
content
)
infoBox
.
style
.
top
=
(
event
.
layerY
+
25
)
+
'px'
;
// 信息框距离顶部10像素
infoBox
.
style
.
left
=
(
event
.
layerX
+
25
)
+
'px'
;
// 信息框距离左侧10像素
infoBox
.
style
.
display
=
'block'
;
});
element
.
addEventListener
(
'mouseout'
,
function
(
event
)
{
infoBox
.
style
.
display
=
'none'
;
});
});
})
},
getBoxList7
(
list
)
{
...
...
@@ -213,12 +380,37 @@
for
(
let
yi
=
9
;
yi
>=
1
;
yi
--
)
{
for
(
let
xi
=
25
;
xi
<=
x
;
xi
++
)
{
let
code
=
`11-
${
padZero
(
xi
,
3
)}
-
${
padZero
(
yi
,
3
)}
`
let
item
=
list
.
filter
(
item
=>
item
.
code
==
code
)
let
item
=
list
.
filter
(
item
=>
item
.
code
==
code
)
this
.
boxList7
.
push
(
item
[
0
])
}
}
this
.
$nextTick
(()
=>
{
this
.
getEvent
(
this
.
$refs
.
mx7
,
this
.
boxList7
)
var
infoBox
=
this
.
$refs
.
infoBox7
$
(
this
.
$refs
.
mx7
).
each
((
index
,
element
)
=>
{
element
.
addEventListener
(
'mouseover'
,
(
event
)
=>
{
let
info
=
this
.
boxList7
[
index
]
let
content
=
`
<br />
仓库编码:
${
info
.
ckCode
}
<br />
库区编码:
${
info
.
kqCode
}
<br />
库位编码:
${
info
.
code
}
`
$
(
infoBox
).
empty
()
$
(
infoBox
).
append
(
content
)
infoBox
.
style
.
top
=
(
event
.
layerY
+
25
)
+
'px'
;
// 信息框距离顶部10像素
infoBox
.
style
.
left
=
(
event
.
layerX
+
25
)
+
'px'
;
// 信息框距离左侧10像素
infoBox
.
style
.
display
=
'block'
;
});
element
.
addEventListener
(
'mouseout'
,
function
(
event
)
{
infoBox
.
style
.
display
=
'none'
;
});
});
})
},
getBoxList8
(
list
)
{
...
...
@@ -228,12 +420,37 @@
for
(
let
yi
=
9
;
yi
>=
1
;
yi
--
)
{
for
(
let
xi
=
29
;
xi
<=
x
;
xi
++
)
{
let
code
=
`11-
${
padZero
(
xi
,
3
)}
-
${
padZero
(
yi
,
3
)}
`
let
item
=
list
.
filter
(
item
=>
item
.
code
==
code
)
let
item
=
list
.
filter
(
item
=>
item
.
code
==
code
)
this
.
boxList8
.
push
(
item
[
0
])
}
}
this
.
$nextTick
(()
=>
{
this
.
getEvent
(
this
.
$refs
.
mx8
,
this
.
boxList8
)
var
infoBox
=
this
.
$refs
.
infoBox8
$
(
this
.
$refs
.
mx8
).
each
((
index
,
element
)
=>
{
element
.
addEventListener
(
'mouseover'
,
(
event
)
=>
{
let
info
=
this
.
boxList8
[
index
]
let
content
=
`
<br />
仓库编码:
${
info
.
ckCode
}
<br />
库区编码:
${
info
.
kqCode
}
<br />
库位编码:
${
info
.
code
}
`
$
(
infoBox
).
empty
()
$
(
infoBox
).
append
(
content
)
infoBox
.
style
.
top
=
(
event
.
layerY
+
25
)
+
'px'
;
// 信息框距离顶部10像素
infoBox
.
style
.
left
=
(
event
.
layerX
+
25
)
+
'px'
;
// 信息框距离左侧10像素
infoBox
.
style
.
display
=
'block'
;
});
element
.
addEventListener
(
'mouseout'
,
function
(
event
)
{
infoBox
.
style
.
display
=
'none'
;
});
});
})
}
}
...
...
@@ -241,15 +458,34 @@
</
script
>
<
style
scoped
>
.containerAll
{}
.infoCar
{
border
:
2px
solid
#032d60
;
-webkit-box-shadow
:
#07417a
0px
0px
10px
;
-moz-box-shadow
:
#07417a
0px
0px
10px
;
box-shadow
:
inset
0
0
30px
#07417a
;
display
:
none
;
position
:
absolute
;
z-index
:
9999
;
background-color
:
#01172a
;
color
:
#009ae7
;
font-size
:
13px
;
padding
:
10px
;
right
:
10px
;
top
:
10px
;
line-height
:
16px
;
height
:
106px
;
width
:
150px
}
.containerAll
{}
.container1
{
position
:
relative
;
display
:
grid
;
grid-template-columns
:
repeat
(
4
,
30px
);
grid-template-rows
:
repeat
(
9
,
8%
);
gap
:
6px
;
overflow
:
hidden
;
}
...
...
@@ -259,7 +495,7 @@
grid-template-columns
:
repeat
(
4
,
30px
);
grid-template-rows
:
repeat
(
9
,
8%
);
gap
:
6px
;
overflow
:
hidden
;
/* overflow: hidden; */
}
...
...
@@ -269,7 +505,7 @@
grid-template-columns
:
repeat
(
3
,
30px
);
grid-template-rows
:
repeat
(
9
,
8%
);
gap
:
6px
;
overflow
:
hidden
;
}
...
...
@@ -279,7 +515,7 @@
grid-template-columns
:
repeat
(
5
,
30px
);
grid-template-rows
:
repeat
(
9
,
8%
);
gap
:
6px
;
overflow
:
hidden
;
}
...
...
@@ -289,7 +525,7 @@
grid-template-columns
:
repeat
(
4
,
30px
);
grid-template-rows
:
repeat
(
9
,
8%
);
gap
:
6px
;
overflow
:
hidden
;
}
...
...
@@ -299,7 +535,7 @@
grid-template-columns
:
repeat
(
4
,
30px
);
grid-template-rows
:
repeat
(
9
,
8%
);
gap
:
6px
;
overflow
:
hidden
;
}
...
...
@@ -309,7 +545,7 @@
grid-template-columns
:
repeat
(
4
,
30px
);
grid-template-rows
:
repeat
(
9
,
8%
);
gap
:
6px
;
overflow
:
hidden
;
}
...
...
@@ -319,7 +555,7 @@
grid-template-columns
:
repeat
(
3
,
30px
);
grid-template-rows
:
repeat
(
9
,
8%
);
gap
:
6px
;
overflow
:
hidden
;
}
...
...
src/views/ccgl/rkgl/rkd/mx.vue
View file @
8f68344f
...
...
@@ -96,11 +96,21 @@
field
:
"rksl"
,
width
:
100
,
},
// {
// title: "过账数量",
// field: "gzsl",
// width: 120,
// },
{
title
:
"检验数量"
,
field
:
"jysl"
,
width
:
100
,
},
{
title
:
"包装状态"
,
field
:
"bzzt"
,
width
:
120
,
"transform"
:
{
"url"
:
"lxyl/rkgl/rktz/init/bzzt"
,
"label"
:
"name"
,
"value"
:
"id"
}
},
{
title
:
"制令号"
,
field
:
"zlh"
,
...
...
src/views/ccgl/rkgl/rkd/top/index.vue
View file @
8f68344f
...
...
@@ -97,26 +97,26 @@
field
:
"ckName"
,
width
:
140
},
{
title
:
"码盘状态"
,
field
:
"mpzt"
,
width
:
100
,
"transform"
:
{
"url"
:
"wms/rkgl/rktz/init/mpzt"
,
"label"
:
"name"
,
"value"
:
"id"
}
},
{
title
:
"包装状态"
,
field
:
"bzzt"
,
width
:
100
,
"transform"
:
{
"url"
:
"wms/rkgl/rktz/init/bzzt"
,
"label"
:
"name"
,
"value"
:
"id"
}
},
//
{
//
title: "码盘状态",
//
field: "mpzt",
//
width: 100,
//
"transform": {
//
"url": "wms/rkgl/rktz/init/mpzt",
//
"label": "name",
//
"value": "id"
//
}
//
},
//
{
//
title: "包装状态",
//
field: "bzzt",
//
width: 100,
//
"transform": {
//
"url": "wms/rkgl/rktz/init/bzzt",
//
"label": "name",
//
"value": "id"
//
}
//
},
// {
// title: "过账状态",
// field: "gzzt",
...
...
src/views/ccgl/zlgl/kccjd/top/add.vue
View file @
8f68344f
<
template
>
<DefaultDialog
:app=
'app'
>
<div
slot=
"form"
style=
"display: flex;height: 70vh;"
>
<BasePage
ref=
"basePage"
:toolButton=
'false'
:power=
'power'
class=
"min_full"
style=
"height: 100%;"
<BasePage
:autoQuery=
'false'
ref=
"basePage"
:showPagination=
'false'
:toolButton=
'false'
:power=
'power'
class=
"min_full"
style=
"height: 100%;"
:config=
"config"
/>
</div>
<div
slot=
"reFooter"
class=
"refooter"
>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"app.showDialog=false"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"save()"
>
保 存
</el-button>
</span>
</div>
</DefaultDialog>
</
template
>
<
script
>
import
wlsx
from
'common/src/mixin/wlphsx.js'
...
...
@@ -43,8 +35,8 @@
/* 是否开启工作流按钮 */
workFlow
:
false
,
/* 表格开启选择,以及记住选择 */
showSelection
:
tru
e
,
saveSelected
:
tru
e
showSelection
:
fals
e
,
saveSelected
:
fals
e
},
config
:
{
...
...
@@ -120,39 +112,39 @@
}
],
queryParams
:
[
[{
label
:
'物料信息'
,
prop
:
'wlxxInfo'
,
span
:
4
,
type
:
'input'
,
value
:
''
},
{
label
:
'物料批号'
,
prop
:
'wlphInfo'
,
span
:
4
,
type
:
'input'
,
value
:
''
},
{
label
:
'检验日期'
,
startProp
:
"jyrqStart"
,
endProp
:
"jyrqEnd"
,
span
:
8
,
type
:
'RelDaterangeV2'
,
startValue
:
''
,
endValue
:
''
,
},
{
label
:
'过期日期'
,
startProp
:
"gqrqStart"
,
endProp
:
"gqrqEnd"
,
span
:
8
,
type
:
'RelDaterangeV2'
,
startValue
:
''
,
endValue
:
''
,
}
]
//
[{
//
label: '物料信息',
//
prop: 'wlxxInfo',
//
span: 4,
//
type: 'input',
//
value: ''
//
},
//
{
//
label: '物料批号',
//
prop: 'wlphInfo',
//
span: 4,
//
type: 'input',
//
value: ''
//
},
//
{
//
label: '检验日期',
//
startProp: "jyrqStart",
//
endProp: "jyrqEnd",
//
span: 8,
//
type: 'RelDaterangeV2',
//
startValue: '',
//
endValue: '',
//
},
//
{
//
label: '过期日期',
//
startProp: "gqrqStart",
//
endProp: "gqrqEnd",
//
span: 8,
//
type: 'RelDaterangeV2',
//
startValue: '',
//
endValue: '',
//
}
//
]
],
/* 默认启停用 */
...
...
@@ -163,25 +155,7 @@
},
methods
:
{
save
()
{
let
list
=
this
.
$refs
.
basePage
.
$refs
.
TablePager
.
selectedList
||
[]
if
(
list
.
length
!=
0
)
{
let
ckList
=
list
.
map
(
item
=>
item
.
ckid
)
ckList
=
[...
new
Set
(
ckList
)]
if
(
ckList
.
length
==
1
)
{
this
.
$post
(
'lxyl/zlgl/kccj/doGenerate'
,
list
).
then
(
res
=>
{
if
(
res
.
success
)
{
this
.
app
.
showDialog
=
false
this
.
app
.
refresh
()
}
})
}
else
{
this
.
$warning
(
'只能勾选相同仓库的数据进行操作'
)
}
}
else
{
this
.
$warning
(
'请至少勾选一条数据'
)
}
}
}
}
...
...
src/views/ccgl/zlgl/kccjd/top/addAll.vue
0 → 100644
View file @
8f68344f
<
template
>
</
template
>
<
script
>
</
script
>
<
template
>
<DefaultDialog
:app=
'app'
>
<div
slot=
"form"
style=
"display: flex;height: 70vh;"
>
<div
class=
"full"
>
<el-tabs
class=
"full"
v-model=
"activeName"
>
<el-tab-pane
class=
"full"
label=
"汇总"
name=
"first"
>
<Wlxx
@
getRow=
'getRow'
/>
</el-tab-pane>
<el-tab-pane
class=
"full"
label=
"明细"
name=
"second"
>
<Add
ref=
"add"
/>
</el-tab-pane>
</el-tabs>
</div>
</div>
<div
slot=
"reFooter"
class=
"refooter"
>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"app.showDialog=false"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"save()"
>
保 存
</el-button>
</span>
</div>
</DefaultDialog>
</
template
>
<
script
>
import
Wlxx
from
'./wlxx.vue'
import
Add
from
'./add.vue'
export
default
{
components
:
{
Wlxx
,
Add
},
props
:
{
app
:
{
type
:
Object
,
default
:
()
=>
{
return
{}
}
}
},
async
mounted
()
{
},
data
()
{
return
{
row
:{},
activeName
:
'first'
}
},
methods
:
{
save
()
{
let
list
=
this
.
$refs
.
add
.
$refs
.
basePage
.
tabData
||
[]
if
(
list
.
length
!=
0
)
{
let
ckList
=
list
.
map
(
item
=>
item
.
ckid
)
ckList
=
[...
new
Set
(
ckList
)]
if
(
ckList
.
length
==
1
)
{
this
.
$post
(
'lxyl/zlgl/kccj/doGenerate'
,
list
).
then
(
res
=>
{
if
(
res
.
success
)
{
this
.
$success
(
'操作成功'
)
this
.
app
.
showDialog
=
false
this
.
app
.
refresh
()
}
})
}
else
{
this
.
$warning
(
'只能勾选相同仓库的数据进行操作'
)
}
}
else
{
this
.
$warning
(
'请至少勾选一条数据'
)
}
// if()
},
getRow
(
val
)
{
this
.
row
=
val
this
.
$refs
.
add
.
$refs
.
basePage
.
queryParams
.
ckid
=
val
.
ckid
this
.
$refs
.
add
.
$refs
.
basePage
.
queryParams
.
wild
=
val
.
wild
this
.
$refs
.
add
.
$refs
.
basePage
.
queryParams
.
wlph
=
val
.
wlph
this
.
$refs
.
add
.
$refs
.
basePage
.
$refs
[
'TablePager'
].
pageQuery
({
// setFirstCurrent: true
})
this
.
activeName
=
'second'
}
}
}
</
script
>
<
style
scoped
>
::v-deep
.el-tabs__content
{
height
:
calc
(
100%
-
50px
);
}
::v-deep
.el-tabs__nav-scroll
{
padding-left
:
10px
;
}
</
style
>
<
style
>
</
style
>
src/views/ccgl/zlgl/kccjd/top/index.vue
View file @
8f68344f
...
...
@@ -16,7 +16,7 @@
<
script
>
// import Edit from './edit.vue'
import
Add
from
'./add.vue'
import
Add
from
'./add
All
.vue'
export
default
{
data
()
{
return
{
...
...
src/views/ccgl/zlgl/kccjd/top/wlxx.vue
0 → 100644
View file @
8f68344f
<
template
>
<BasePage
:setFirstCurrent=
'false'
:power=
'power'
@
getRow=
'getRow'
class=
"min_full"
style=
"height: 100%;"
:config=
"config"
>
<template
#
dialog=
"ctx"
>
<!-- 嵌入默认页面额外弹框的插槽 ctx.pagePage来操作默认页面 -->
</
template
>
<
template
#
toolbar=
"ctx"
>
<!--
<el-button
@
click=
"demo(ctx.basePage)"
size=
'mini'
type=
"primary"
>
直接入库
</el-button>
-->
</
template
>
</BasePage>
</template>
<
script
>
// import Edit from './edit.vue'
export
default
{
data
()
{
return
{
power
:{
add
:
false
,
copy
:
false
,
delButton
:
false
,
editButton
:
false
,
operateButtons
:
false
,
workFlow
:
false
,
/* 表格 */
showSelection
:
false
,
saveSelected
:
false
},
config
:
{
queryDetail
:
true
,
/* 基本配置*/
url
:
'lxyl/zlgl/kccj/queryKccjKchz'
,
queryUrl
:
'lxyl/zlgl/kccj/queryKccjKchz'
,
tableTitle
:
[
{
title
:
"仓库编码"
,
field
:
"ckCode"
,
width
:
140
},
{
title
:
"仓库"
,
field
:
"ckName"
,
width
:
140
},
{
title
:
"物料编码"
,
field
:
"wlCode"
,
width
:
140
},
{
title
:
"物料名称"
,
field
:
"wlName"
,
width
:
140
},
{
title
:
"物料批号"
,
field
:
"wlph"
,
width
:
140
},
{
title
:
"生产日期"
,
field
:
"scrq"
,
fieldType
:
'ftDate'
},
{
title
:
"过期日期"
,
field
:
"gqrq"
,
fieldType
:
'ftDate'
},
{
title
:
"检验日期"
,
field
:
"jyrq"
,
fieldType
:
'ftDate'
},
{
title
:
"物料描述"
,
field
:
"wlms"
,
width
:
240
}
],
queryParams
:
[
[{
label
:
'日期'
,
startProp
:
"begin"
,
endProp
:
"end"
,
span
:
8
,
type
:
'RelDaterangeV2'
,
startValue
:
new
Date
().
getTime
()
-
1000
*
60
*
60
*
24
*
30
,
endValue
:
new
Date
().
getTime
(),
},
{
label
:
'物料批号'
,
prop
:
'wlph'
,
span
:
6
,
type
:
'input'
,
value
:
''
},
{
label
:
'物料编码'
,
prop
:
'wlcode'
,
span
:
6
,
type
:
'input'
,
value
:
''
}
]
],
/* 默认启停用 */
}
}
},
methods
:
{
getRow
(
val
){
this
.
$emit
(
'getRow'
,
val
)
}
},
components
:
{
// Edit
}
}
</
script
>
<
style
>
</
style
>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment