Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
T
TF-MOM-WEB
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
TFMOM
TF-MOM-WEB
Commits
3b5f532b
Commit
3b5f532b
authored
Oct 12, 2023
by
“lixuyan”
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
胶漆申领页面
parent
b53051ef
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
844 additions
and
3 deletions
+844
-3
footer.vue
...s/src/views/taskExecution/components/LacClaims/footer.vue
+351
-0
header.vue
...s/src/views/taskExecution/components/LacClaims/header.vue
+444
-0
index.vue
...es/src/views/taskExecution/components/LacClaims/index.vue
+45
-0
index.vue
applications/dee-mes/src/views/taskExecution/index.vue
+4
-3
No files found.
applications/dee-mes/src/views/taskExecution/components/LacClaims/footer.vue
0 → 100644
View file @
3b5f532b
<
template
>
<section
class=
"lacclaims-footer"
>
<div
class=
"lacclaims-footer-title"
>
<span
class=
"title"
>
胶漆材料记实
</span>
<div
class=
"right"
>
<el-popover
v-model=
"popoverVisible"
placement=
"left"
width=
"200"
trigger=
"manual"
>
<div>
<el-input
ref=
"scanCode"
v-model=
"scanId"
placeholder=
"请使用扫码枪录入"
@
change=
"getQRcodeBar"
/>
</div>
<span
slot=
"reference"
class=
"qiang"
title=
"扫码枪录入"
@
click=
"codeScanBar"
/>
</el-popover>
<scan
class=
"qrcode"
title=
"扫码录入"
@
getQrCode=
"getQRcode"
>
<span
class=
"scan"
/></scan>
</div>
</div>
<!-- 表格 -->
<div>
<div>
<el-table
ref=
"table"
v-loading=
"loading"
height=
"20vh"
:data=
"tableData"
border
size=
"mini"
>
<el-table-column
type=
"index"
:width=
"80"
label=
"序号"
align=
"center"
/>
<el-table-column
prop=
"allocateNo"
align=
"center"
label=
"胶漆料调配号"
:min-width=
"200"
show-overflow-tooltip
/>
<el-table-column
prop=
"allocateDate"
align=
"center"
label=
"调配时间"
:min-width=
"180"
/>
<el-table-column
prop=
"loseEfficacyDate"
align=
"center"
label=
"失效时间"
:min-width=
"180"
/>
<el-table-column
prop=
"useDate"
align=
"center"
label=
"记实时间"
:min-width=
"180"
/>
<el-table-column
prop=
"dxProcessMaterial.unit.unitCode"
align=
"center"
label=
"备注"
:min-width=
"240"
show-overflow-tooltip
/>
<el-table-column
align=
"center"
label=
"操作"
:width=
"80"
>
<template
slot-scope=
"scope"
>
<el-button
size=
"mini"
type=
"danger"
@
click=
"handleClick(scope.row)"
>
删除
</el-button>
</
template
>
</el-table-column>
</el-table>
</div>
<el-pagination
:current-page=
"tablePagination.currentPage"
:page-sizes=
"tablePagination.pageSizes"
:page-size=
"tablePagination.pageSize"
layout=
"total, sizes, prev, pager, next, jumper"
:total=
"tablePagination.total"
@
size-change=
"setPage"
@
current-change=
"setPage($event, true)"
/>
</div>
</section>
</template>
<
script
>
import
{
post
}
from
'@/utils/http'
import
'@/api/jq-signature'
import
scan
from
'@/components/scanCode/scanCode'
export
default
{
components
:
{
scan
},
data
()
{
return
{
// 加载中
loading
:
false
,
// 分页
tablePagination
:
{
currentPage
:
1
,
pageSize
:
5
,
total
:
0
,
pageSizes
:
[
5
,
10
,
20
,
50
]
},
// 表格数据
tableData
:
[],
tableId
:
null
,
popoverVisible
:
false
,
scanId
:
null
}
},
created
()
{},
mounted
()
{},
methods
:
{
// 初始化数据
getTableData
(
id
)
{
// 设置数据
this
.
loading
=
true
this
.
tableData
=
[]
if
(
id
)
this
.
tableId
=
id
const
params
=
{
pageFrom
:
this
.
tablePagination
.
currentPage
,
pageSize
:
this
.
tablePagination
.
pageSize
,
indices
:
[
'ScanCodeRecord'
],
searchItems
:
{
items
:
[
{
fieldName
:
'keyID'
,
operator
:
'EQ'
,
value
:
this
.
tableId
}
],
operator
:
'AND'
}
}
// 发送请求
post
(
'/ScanCodeRecord/listByKeyId'
,
params
)
.
then
((
res
)
=>
{
this
.
tableData
=
res
.
items
.
content
||
[]
this
.
tablePagination
.
total
=
res
.
items
.
totalElements
})
.
catch
((
err
)
=>
console
.
log
(
err
))
.
finally
(()
=>
{
this
.
loading
=
false
})
},
/**
* 页码触发
*/
setPage
(
$event
,
state
)
{
if
(
state
)
{
this
.
tablePagination
.
currentPage
=
$event
}
else
{
this
.
tablePagination
.
currentPage
=
1
this
.
tablePagination
.
pageSize
=
$event
}
this
.
getTableData
()
},
/**
* **扫描胶漆合格证二维码记实**
*/
getQRcode
(
info
)
{
// 发送请求
post
(
'/ScanCodeRecord/scanCode'
,
{
allocateNo
:
info
,
// 记录卡号
keyID
:
this
.
tableId
}
)
.
then
((
res
)
=>
{
if
(
res
.
message
.
includes
(
'成功'
))
{
this
.
$parent
.
$parent
.
$parent
.
$refs
.
header
.
getTableData
()
this
.
$message
({
showClose
:
true
,
message
:
'添加成功!'
,
type
:
'success'
})
}
else
{
this
.
$message
({
showClose
:
true
,
message
:
'添加失败'
,
type
:
'error'
})
}
})
.
catch
((
err
)
=>
console
.
log
(
err
))
.
finally
(()
=>
{})
},
/**
* 删除
*/
handleClick
(
row
)
{
this
.
$confirm
(
'你是否确定删除选中的数据项?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
// customClass: 'lacclaims-footer-message'
}).
then
(()
=>
{
const
params
=
{
id
:
row
.
id
,
// 记实id
operator
:
'REMOVE'
}
// 发送请求
post
(
'/ScanCodeRecord/recursion'
,
params
)
.
then
((
res
)
=>
{
if
(
res
.
message
.
includes
(
'成功'
))
{
this
.
$parent
.
$parent
.
$parent
.
$refs
.
header
.
getTableData
()
this
.
$message
({
type
:
'success'
,
message
:
'删除成功!'
})
}
else
{
this
.
$message
({
type
:
'error'
,
message
:
'删除失败!'
})
}
})
.
catch
((
err
)
=>
console
.
log
(
err
))
.
finally
(()
=>
{
this
.
loading
=
false
})
})
},
codeScanBar
()
{
this
.
popoverVisible
=
true
this
.
$nextTick
(()
=>
{
this
.
$refs
.
scanCode
.
focus
()
})
},
/**
* 扫码枪录入
*/
getQRcodeBar
(
$event
)
{
this
.
popoverVisible
=
false
this
.
getQRcode
(
$event
)
this
.
scanId
=
null
}
}
}
</
script
>
<
style
lang=
"scss"
>
.lacclaims-footer
{
.lacclaims-footer-title
{
display
:
flex
;
justify-content
:
space-between
;
margin-bottom
:
10px
;
align-items
:
center
;
.title
{
border-left
:
6px
solid
#4099f7
;
padding
:
10px
0
10px
5px
;
background-color
:
#e4e1e1
;
// margin-bottom: 10px;
width
:
300px
;
}
main
{
color
:
#1497f5
;
cursor
:
pointer
;
&
:hover
{
color
:
#85c5f3
;
}
}
}
.el-table
thead
th
{
color
:
#2e2e2e
;
font-weight
:
700
;
font-size
:
14px
;
padding
:
0
;
background-color
:
#f3f6f7
;
line-height
:
46px
!
important
;
}
.el-table
.highlight
{
border
:
1px
solid
#1497f5
;
padding
:
0
;
.cell
{
padding
:
0
;
.el-select
{
width
:
100%
;
}
input
{
border
:
0
;
height
:
35px
;
background-color
:
transparent
;
text-align
:
center
;
padding-right
:
0
;
}
}
}
.el-table
.cell
i
.el-icon-loading
{
font-size
:
16px
;
color
:
#ff0c00
;
font-weight
:
bold
;
position
:
absolute
;
right
:
10px
;
top
:
10px
;
}
.el-pagination
{
text-align
:
right
;
padding
:
10px
0
;
}
.el-loading-spinner
{
width
:
100%
;
}
.el-message-box
{
z-index
:
9999999
;
}
.right
{
display
:
flex
;
align-items
:
center
;
.qiang
{
background-repeat
:
no-repeat
;
margin-top
:
3px
;
cursor
:
pointer
;
background-size
:
100%
100%
;
display
:
inline-block
;
width
:
26px
;
margin-right
:
10px
;
height
:
26px
;
background-image
:
url("../../../../icons/扫码枪.png")
;
}
.scan
{
margin-top
:
3px
;
cursor
:
pointer
;
background-repeat
:
no-repeat
;
background-size
:
100%
100%
;
display
:
inline-block
;
width
:
26px
;
height
:
26px
;
background-image
:
url("../../../../icons/saoma.png")
;
}
}
}
</
style
>
applications/dee-mes/src/views/taskExecution/components/LacClaims/header.vue
0 → 100644
View file @
3b5f532b
<
template
>
<section
class=
"lacclaims-header"
>
<p
class=
"lacclaims-header-title"
>
<span
class=
"title"
>
胶漆材料
</span>
<span
class=
"button"
>
<span>
提示:双击可编辑时间
</span>
<el-button
size=
"mini"
:disabled=
"
rowData.applyStatus && rowData.applyStatus !== 'notApplied' ||$parent.$parent.$parent.$refs.footer&& $parent.$parent.$parent.$refs.footer.tableData.length > 0
"
style=
"width: 100px"
@
click=
"applyStorageReqItem"
>
胶漆使用申请
</el-button>
<el-button
size=
"mini"
:disabled=
"rowData.applyStatus !== 'applied'"
@
click=
"cancelApplyStorageReqItem"
>
撤销申请
</el-button>
</span>
</p>
<!-- 表格 -->
<div>
<div>
<el-table
ref=
"table"
v-loading=
"loading"
height=
"20vh"
:data=
"tableData"
border
size=
"mini"
highlight-current-row
:cell-class-name=
"deeTableCellStyle"
@
row-click=
"rowClick"
@
cell-dblclick=
"deeTableEdit"
>
<el-table-column
type=
"index"
:width=
"80"
label=
"序号"
align=
"center"
/>
<el-table-column
prop=
"dxProcessMaterial.resCode"
align=
"center"
label=
"物料编码"
:width=
"120"
sortable
show-overflow-tooltip
/>
<el-table-column
prop=
"dxProcessMaterial.modelNo"
align=
"center"
label=
"牌号/规格/GPM号"
:width=
"200"
sortable
show-overflow-tooltip
/>
<el-table-column
prop=
"dxProcessMaterial.resName"
align=
"center"
label=
"材料名称"
:min-width=
"120"
sortable
show-overflow-tooltip
/>
<el-table-column
prop=
"dxProcessMaterial.resType2.typeName"
align=
"center"
label=
"类型"
:width=
"90"
sortable
/>
<el-table-column
prop=
"dxProcessMaterial.unit.unitCode"
align=
"center"
label=
"单位"
:width=
"90"
sortable
/>
<el-table-column
prop=
"reqAmount"
align=
"center"
label=
"数量"
:width=
"90"
sortable
/>
<el-table-column
prop=
"needTime"
align=
"center"
label=
"需求时间"
:width=
"180"
>
<template
slot=
"header"
>
<span>
需求时间
</span>
<i
class=
"el-icon-edit-outline"
/>
</
template
>
<
template
slot-scope=
"scope"
>
<el-input
v-if=
"scope.row.needTimeSelect"
v-model=
"scope.row.needTime"
@
focus=
"tableInputFocus"
@
blur=
"deeTableBlur(scope.row, false)"
/>
<span
v-else
>
{{
scope
.
row
[
scope
.
column
.
property
]
}}
</span>
<i
v-if=
"scope.row.needTimeLoading"
class=
"el-icon-loading"
/>
</
template
></el-table-column>
<el-table-column
prop=
"applyStatus"
align=
"center"
label=
"申领状态"
:width=
"120"
sortable
:formatter=
"applyStatusFormatter"
/>
<el-table-column
prop=
"cardNo"
align=
"center"
label=
"胶漆料调配号"
:min-width=
"200"
sortable
show-overflow-tooltip
/>
</el-table>
</div>
<el-pagination
:current-page=
"tablePagination.currentPage"
:page-sizes=
"tablePagination.pageSizes"
:page-size=
"tablePagination.pageSize"
layout=
"total, sizes, prev, pager, next, jumper"
:total=
"tablePagination.total"
@
size-change=
"setPage"
@
current-change=
"setPage($event, true)"
/>
</div>
</section>
</template>
<
script
>
import
{
post
}
from
'@/utils/http'
export
default
{
components
:
{},
data
()
{
return
{
// 加载中
loading
:
false
,
// 分页
tablePagination
:
{
currentPage
:
1
,
pageSize
:
5
,
total
:
0
,
pageSizes
:
[
5
,
10
,
20
,
50
]
},
// 表格数据
tableData
:
[],
timer
:
null
,
needTimeRow
:
null
,
rowData
:
{},
defultRow
:
null
}
},
created
()
{},
mounted
()
{
// this.getTableData()
},
methods
:
{
// 初始化数据
getTableData
()
{
// 设置数据
this
.
loading
=
true
this
.
tableData
=
[]
const
params
=
{
pageFrom
:
this
.
tablePagination
.
currentPage
,
pageSize
:
this
.
tablePagination
.
pageSize
,
indices
:
[
'StorageRequestItem'
],
searchItems
:
{
items
:
[
{
fieldName
:
'aoId'
,
operator
:
'EQ'
,
value
:
this
.
$parent
.
$parent
.
$parent
.
$parent
.
headerData
.
aoId
}
],
operator
:
'AND'
}
}
// 发送请求
post
(
'/StorageRequestItem/getStorageReqItemByAoId'
,
params
)
.
then
((
res
)
=>
{
this
.
tableData
=
res
.
items
.
content
.
map
((
p
)
=>
{
return
{
...
p
,
needTimeLoading
:
false
,
needTimeSelect
:
false
}
})
this
.
tablePagination
.
total
=
res
.
items
.
totalElements
this
.
tableData
.
length
&&
this
.
$nextTick
(()
=>
{
if
(
!
this
.
defultRow
)
{
this
.
defultRow
=
this
.
tableData
[
0
]
this
.
$refs
.
table
.
setCurrentRow
(
this
.
defultRow
)
}
this
.
rowClick
(
this
.
defultRow
)
})
})
.
catch
((
err
)
=>
console
.
log
(
err
))
.
finally
(()
=>
{
this
.
loading
=
false
})
},
deeTableCellStyle
({
row
,
column
,
rowIndex
,
columnIndex
})
{
if
(
column
.
property
===
'needTime'
&&
row
.
needTimeSelect
)
{
return
'highlight'
}
},
applyStatusFormatter
(
row
,
column
,
cellValue
,
index
)
{
var
label
=
''
switch
(
cellValue
)
{
case
'notApplied'
:
label
=
'未申请'
break
case
'applied'
:
label
=
'已申请'
break
case
'checking'
:
label
=
'审核中'
break
case
'deployed'
:
label
=
'已调配'
break
case
' invalid'
:
label
=
'已失效'
break
default
:
label
=
''
}
return
label
},
rowClick
(
row
)
{
this
.
rowData
=
row
this
.
$parent
.
$parent
.
$parent
.
$refs
.
footer
.
getTableData
(
this
.
rowData
.
id
)
},
/**
* 胶漆使用申请
*/
applyStorageReqItem
(
row
)
{
var
that
=
this
post
(
'/StorageRequestItem/applyStorageReqItem'
,
{
id
:
that
.
rowData
.
id
// 问题id
}
)
.
then
((
res
)
=>
{
if
(
res
.
message
.
includes
(
'成功'
))
{
this
.
getTableData
()
that
.
$message
({
showClose
:
true
,
message
:
'申请成功!'
,
type
:
'success'
})
}
else
{
that
.
$message
({
showClose
:
true
,
message
:
'保存失败'
,
type
:
'error'
})
}
})
.
catch
((
err
)
=>
console
.
error
(
err
))
.
finally
(()
=>
{})
},
/**
* 撤销胶漆使用申请
*/
cancelApplyStorageReqItem
()
{
var
that
=
this
post
(
'/StorageRequestItem/cancelApplyStorageReqItem'
,
{
id
:
that
.
rowData
.
id
// 问题id
}
)
.
then
((
res
)
=>
{
if
(
res
.
message
.
includes
(
'成功'
))
{
this
.
getTableData
()
that
.
$message
({
showClose
:
true
,
message
:
'撤销申请成功!'
,
type
:
'success'
})
}
else
{
that
.
$message
({
showClose
:
true
,
message
:
'保存失败'
,
type
:
'error'
})
}
})
.
catch
((
err
)
=>
console
.
error
(
err
))
.
finally
(()
=>
{})
},
deeTableBlur
(
row
)
{
var
that
=
this
const
param
=
{
id
:
row
.
id
,
dxClassname
:
'com.tf.mes.vo.storage.StorageRequestItemVo'
,
subTypeName
:
'StorageRequestItemMatch'
,
operator
:
'MODIFY'
,
needTime
:
row
.
needTime
}
row
.
needTimeSelect
=
false
row
.
needTimeLoading
=
true
if
(
this
.
needTimeRow
===
row
.
needTime
)
{
row
.
needTimeLoading
=
false
return
}
post
(
'/StorageRequestItem/recursion'
,
param
)
.
then
((
res
)
=>
{
if
(
res
.
message
.
includes
(
'成功'
))
{
that
.
$message
({
showClose
:
true
,
message
:
'保存成功'
,
type
:
'success'
})
}
else
{
that
.
$message
({
showClose
:
true
,
message
:
'保存失败'
,
type
:
'error'
})
}
})
.
catch
((
err
)
=>
console
.
error
(
err
))
.
finally
(()
=>
{
row
.
needTimeLoading
=
false
})
},
tableInputFocus
()
{
clearTimeout
(
this
.
timer
)
this
.
timer
=
null
},
deeTableEdit
(
row
,
column
,
cell
,
event
)
{
var
that
=
this
if
(
column
.
property
===
'needTime'
)
{
row
.
needTimeSelect
=
true
this
.
needTimeRow
=
row
.
needTime
}
else
{
return
}
this
.
timer
=
setTimeout
(
function
()
{
if
(
column
.
property
===
'needTime'
)
{
row
.
needTimeSelect
=
false
}
clearTimeout
(
this
.
timer
)
that
.
timer
=
null
},
2000
)
},
/**
* 页码触发
*/
setPage
(
$event
,
state
)
{
if
(
state
)
{
this
.
tablePagination
.
currentPage
=
$event
}
else
{
this
.
tablePagination
.
currentPage
=
1
this
.
tablePagination
.
pageSize
=
$event
}
this
.
getTableData
()
}
}
}
</
script
>
<
style
lang=
"scss"
>
.lacclaims-header
{
.lacclaims-header-title
{
display
:
flex
;
justify-content
:
space-between
;
margin-bottom
:
10px
;
.title
{
border-left
:
6px
solid
#4099f7
;
padding
:
10px
0
10px
5px
;
background-color
:
#e4e1e1
;
// margin-bottom: 10px;
width
:
300px
;
}
>
.button
{
margin-top
:
5px
;
>
span
{
margin-right
:
15px
;
color
:red
;
font-size
:
12px
;
}
}
}
.el-table
thead
th
{
color
:
#2e2e2e
;
font-weight
:
700
;
font-size
:
14px
;
padding
:
0
;
background-color
:
#f3f6f7
;
line-height
:
46px
!
important
;
}
.el-table
.highlight
{
border
:
1px
solid
#1497f5
;
padding
:
0
;
.cell
{
padding
:
0
;
.el-select
{
width
:
100%
;
}
input
{
border
:
0
;
height
:
35px
;
background-color
:
transparent
;
text-align
:
center
;
padding-right
:
0
;
}
}
}
.el-table
.cell
i
.el-icon-loading
{
font-size
:
16px
;
color
:
#ff0c00
;
font-weight
:
bold
;
position
:
absolute
;
right
:
10px
;
top
:
10px
;
}
.el-pagination
{
text-align
:
right
;
padding
:
10px
0
;
}
.el-loading-spinner
{
width
:
100%
;
}
}
</
style
>
applications/dee-mes/src/views/taskExecution/components/LacClaims/index.vue
0 → 100644
View file @
3b5f532b
<
template
>
<dee-dialog
id=
"dee-dialog"
title=
"胶漆申领"
custom-class=
"mobile-dialog"
:dialog-visible
.
sync=
"visible"
width=
"90%"
:before-close=
"handleClose"
close-on-click-modal
>
<Header
ref=
"header"
/>
<Footer
ref=
"footer"
/>
</dee-dialog>
</
template
>
<
script
>
import
Header
from
'./header'
import
Footer
from
'./footer'
export
default
{
components
:
{
Header
,
Footer
},
data
()
{
return
{
visible
:
false
}
},
created
()
{
},
methods
:
{
// 打开弹出框
open
()
{
this
.
visible
=
true
this
.
$nextTick
(()
=>
{
this
.
$refs
.
header
.
getTableData
()
})
},
handleClose
()
{}
}
}
</
script
>
<
style
lang=
"scss"
>
</
style
>
applications/dee-mes/src/views/taskExecution/index.vue
View file @
3b5f532b
...
@@ -511,7 +511,7 @@
...
@@ -511,7 +511,7 @@
<!-- 物料确认 -->
<!-- 物料确认 -->
<ConfirmMaterial
ref=
"ConfirmMaterial"
/>
<ConfirmMaterial
ref=
"ConfirmMaterial"
/>
<!--胶漆申领 -->
<!--胶漆申领 -->
<
!--
<LacClaims
ref=
"LacClaims"
/>
--
>
<
LacClaims
ref=
"LacClaims"
/
>
<!-- 技术要求 -->
<!-- 技术要求 -->
<TechnicalRequirements
ref=
"TechnicalRequirements"
/>
<TechnicalRequirements
ref=
"TechnicalRequirements"
/>
<!-- 装配流程 -->
<!-- 装配流程 -->
...
@@ -536,7 +536,7 @@ import '@/icons/app/iconfont'
...
@@ -536,7 +536,7 @@ import '@/icons/app/iconfont'
import
{
post
,
get
}
from
'@/utils/http'
import
{
post
,
get
}
from
'@/utils/http'
// import Table from './components/table'
// import Table from './components/table'
import
ConfirmMaterial
from
'./components/ConfirmMaterial/index'
import
ConfirmMaterial
from
'./components/ConfirmMaterial/index'
//
import LacClaims from './components/LacClaims/index'
import
LacClaims
from
'./components/LacClaims/index'
import
TechnicalRequirements
from
'./components/TechnicalRequirements/index'
import
TechnicalRequirements
from
'./components/TechnicalRequirements/index'
import
AssemblyProcess
from
'./components/AssemblyProcess/index'
import
AssemblyProcess
from
'./components/AssemblyProcess/index'
import
InspectionRejected
from
'./components/chatBox/index'
import
InspectionRejected
from
'./components/chatBox/index'
...
@@ -554,7 +554,8 @@ export default {
...
@@ -554,7 +554,8 @@ export default {
AssemblyProcess
,
AssemblyProcess
,
RecordMaintenance
,
RecordMaintenance
,
ConfirmMaterial
,
ConfirmMaterial
,
ProblemDeclare
ProblemDeclare
,
LacClaims
},
},
data
()
{
data
()
{
return
{
return
{
...
...
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