Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
T
takeout_sbk
Overview
Overview
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
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
yunpeng.song
takeout_sbk
Commits
aa14bae1
Commit
aa14bae1
authored
Jun 27, 2018
by
wuyang.zou
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix bug: 更新代码接口注释,便于更加理解,更加专业
parent
acccaa85
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
73 additions
and
58 deletions
+73
-58
fmTakeout/Control/flowControl.cpp
+16
-16
fmTakeout/DTools/simProcOrderDB.cpp
+0
-0
fmTakeout/DTools/simProcOrderDB.h
+49
-34
fmTakeout/Model/orderObject.h
+4
-4
fmTakeout/fmTakeout.pro
+4
-4
No files found.
fmTakeout/Control/flowControl.cpp
View file @
aa14bae1
...
@@ -16,7 +16,7 @@
...
@@ -16,7 +16,7 @@
#include <QMultiMap>
#include <QMultiMap>
#include <QMap>
#include <QMap>
#include <QFile>
#include <QFile>
#include <DTools/
orderstatus
.h>
#include <DTools/
simProcOrderDB
.h>
#include <QHostInfo>
#include <QHostInfo>
...
@@ -106,7 +106,7 @@ FlowControl::FlowControl()
...
@@ -106,7 +106,7 @@ FlowControl::FlowControl()
{
{
QLOG_INFO
()
<<
QString
(
"bind failed!"
);
QLOG_INFO
()
<<
QString
(
"bind failed!"
);
}
}
Orderstatus
::
getInstance
();
SimProcOrderDB
::
getInstance
();
_ClickOMSAssignArea
();
_ClickOMSAssignArea
();
m_loginTimer
->
start
(
20
*
1000
);
m_loginTimer
->
start
(
20
*
1000
);
}
}
...
@@ -178,9 +178,9 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
...
@@ -178,9 +178,9 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
m_ordersMap
.
insert
(
orderObject
->
id
,
orderObject
);
m_ordersMap
.
insert
(
orderObject
->
id
,
orderObject
);
QLOG_INFO
()
<<
QString
(
"new order[%1:%2].[data:]"
)
QLOG_INFO
()
<<
QString
(
"new order[%1:%2].[data:]"
)
.
arg
(
orderObject
->
id
,
orderObject
->
getOrderStatusDec
())
<<
jsonObject
;
.
arg
(
orderObject
->
id
,
orderObject
->
getOrderStatusDec
())
<<
jsonObject
;
if
(
!
Orderstatus
::
getInstance
().
isordere
xit
(
orderObject
->
id
))
if
(
!
SimProcOrderDB
::
getInstance
().
isOrderE
xit
(
orderObject
->
id
))
{
{
Orderstatus
::
getInstance
().
statusinsert
(
orderObject
->
id
,
QDate
::
currentDate
().
toString
(
"yyyy-MM-dd"
));
SimProcOrderDB
::
getInstance
().
insertSimProcOrder
(
orderObject
->
id
,
QDate
::
currentDate
().
toString
(
"yyyy-MM-dd"
));
if
((
OrderObject
::
NewOrder
==
orderObject
->
orderStatus
||
OrderObject
::
Confirmed
==
orderObject
->
orderStatus
))
if
((
OrderObject
::
NewOrder
==
orderObject
->
orderStatus
||
OrderObject
::
Confirmed
==
orderObject
->
orderStatus
))
{
{
...
@@ -206,20 +206,20 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
...
@@ -206,20 +206,20 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
{
{
emit
startRemind
(
1
);
emit
startRemind
(
1
);
}
}
if
(
Orderstatus
::
getInstance
().
isput
(
orderObject
->
id
))
if
(
SimProcOrderDB
::
getInstance
().
isPushedOrder
(
orderObject
->
id
))
{
{
orderObject
->
isPut
=
true
;
orderObject
->
isPut
=
true
;
}
}
if
(
Orderstatus
::
getInstance
().
isrefund
(
orderObject
->
id
))
if
(
SimProcOrderDB
::
getInstance
().
isRefundOrder
(
orderObject
->
id
))
{
{
orderObject
->
isCancle
=
true
;
orderObject
->
isCancle
=
true
;
}
}
QString
pos
SaledId
=
m_orderIdToPosSalesIdMap
.
value
(
orderObject
->
id
);
QString
pos
OrderCheckNo
=
m_orderIdToPosSalesIdMap
.
value
(
orderObject
->
id
);
if
(
pos
SaledId
.
isEmpty
())
if
(
pos
OrderCheckNo
.
isEmpty
())
{
{
Orderstatus
::
getInstance
().
getPosSalesId
(
orderObject
->
id
,
posSaledId
);
SimProcOrderDB
::
getInstance
().
getPosOrderCheckNo
(
orderObject
->
id
,
posOrderCheckNo
);
}
}
orderObject
->
pos
saleId
=
posSaledId
;
orderObject
->
pos
CheckNo
=
posOrderCheckNo
;
switch
(
orderObject
->
orderStatus
){
switch
(
orderObject
->
orderStatus
){
case
OrderObject
:
:
NewOrder
:
case
OrderObject
:
:
NewOrder
:
case
OrderObject
:
:
Confirmed
:
case
OrderObject
:
:
Confirmed
:
...
@@ -252,7 +252,7 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
...
@@ -252,7 +252,7 @@ void FlowControl::_OrderAnalysis(const QJsonObject& jsonObject)
m_OrderEntryMutex
.
unlock
();
m_OrderEntryMutex
.
unlock
();
}
}
else
{
else
{
if
(
!
pos
SaledId
.
isEmpty
())
if
(
!
pos
OrderCheckNo
.
isEmpty
())
{
{
orderObject
->
putType
=
0
;
orderObject
->
putType
=
0
;
orderObject
->
putTimes
=
0
;
orderObject
->
putTimes
=
0
;
...
@@ -1047,7 +1047,7 @@ void FlowControl::_ClearOrder()
...
@@ -1047,7 +1047,7 @@ void FlowControl::_ClearOrder()
}
}
}
}
m_OrderEntryMutex
.
unlock
();
m_OrderEntryMutex
.
unlock
();
Orderstatus
::
getInstance
().
delete
Record
(
QDate
::
currentDate
().
addMonths
(
-
1
).
toString
(
"yyyyMMdd"
));
SimProcOrderDB
::
getInstance
().
deleteOrder
Record
(
QDate
::
currentDate
().
addMonths
(
-
1
).
toString
(
"yyyyMMdd"
));
}
}
bool
FlowControl
::
_GetReplyJson
(
const
QJsonObject
&
content
,
QJsonObject
&
data
,
QString
&
error
)
bool
FlowControl
::
_GetReplyJson
(
const
QJsonObject
&
content
,
QJsonObject
&
data
,
QString
&
error
)
...
@@ -1222,12 +1222,12 @@ bool FlowControl::_Get04ReplyJson(const QJsonObject &content, QJsonObject &data,
...
@@ -1222,12 +1222,12 @@ bool FlowControl::_Get04ReplyJson(const QJsonObject &content, QJsonObject &data,
if
(
order_p
->
putType
==
1
)
if
(
order_p
->
putType
==
1
)
{
{
Orderstatus
::
getInstance
().
putupdate
(
orderId
,
1
);
SimProcOrderDB
::
getInstance
().
updatePushOrderStatus
(
orderId
,
1
);
Orderstatus
::
getInstance
().
PosSalesIdupdate
(
orderId
,
posSaleId
);
SimProcOrderDB
::
getInstance
().
updatePosOrderCheckNo
(
orderId
,
posSaleId
);
}
}
else
else
{
{
Orderstatus
::
getInstance
().
refundupdate
(
orderId
,
1
);
SimProcOrderDB
::
getInstance
().
updateRefundOrderStatus
(
orderId
,
1
);
}
}
m_OrderEntryMutex
.
lock
();
m_OrderEntryMutex
.
lock
();
m_ordersEntryList
.
removeOne
(
orderId
);
m_ordersEntryList
.
removeOne
(
orderId
);
...
@@ -1351,7 +1351,7 @@ bool FlowControl::_GetQueryReplyJson(QJsonObject &data, QString &error, const QS
...
@@ -1351,7 +1351,7 @@ bool FlowControl::_GetQueryReplyJson(QJsonObject &data, QString &error, const QS
rObj
.
insert
(
"fm_ver"
,
"1.0"
);
rObj
.
insert
(
"fm_ver"
,
"1.0"
);
cObj
.
insert
(
"pay_id"
,
"002"
);
cObj
.
insert
(
"pay_id"
,
"002"
);
cObj
.
insert
(
"pay_str"
,
QString
::
fromLocal8Bit
(
"非码外卖"
));
cObj
.
insert
(
"pay_str"
,
QString
::
fromLocal8Bit
(
"非码外卖"
));
cObj
.
insert
(
"pos_sale_id"
,
orderObject
->
pos
saleId
);
cObj
.
insert
(
"pos_sale_id"
,
orderObject
->
pos
CheckNo
);
cObj
.
insert
(
"order_status"
,
orderObject
->
orderStatus
);
//订单的状态
cObj
.
insert
(
"order_status"
,
orderObject
->
orderStatus
);
//订单的状态
cObj
.
insert
(
"pay_ebcode"
,
orderObject
->
channel
);
cObj
.
insert
(
"pay_ebcode"
,
orderObject
->
channel
);
cObj
.
insert
(
"order_index"
,
orderObject
->
orderIndex
);
cObj
.
insert
(
"order_index"
,
orderObject
->
orderIndex
);
...
...
fmTakeout/DTools/
orderstatus
.cpp
→
fmTakeout/DTools/
simProcOrderDB
.cpp
View file @
aa14bae1
This diff is collapsed.
Click to expand it.
fmTakeout/DTools/
orderstatus
.h
→
fmTakeout/DTools/
simProcOrderDB
.h
View file @
aa14bae1
/******************
/******************
*进行sqlite操作
*进行sqlite操作
******************/
******************/
#ifndef
ORDERSTATUS
_H
#ifndef
SIMPROCORDERDB
_H
#define
ORDERSTATUS
_H
#define
SIMPROCORDERDB
_H
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlQuery>
#include <QtSql/QSqlQuery>
#include <QtSql/QSqlError>
#include <QtSql/QSqlError>
#include <QObject>
#include <QObject>
#include <QMutex>
#include <QMutex>
class
Orderstatus
:
public
QObject
class
SimProcOrderDB
:
public
QObject
{
{
Q_OBJECT
Q_OBJECT
public
:
public
:
// explicit
Orderstatus
(QObject *parent = 0);
// explicit
SimProcOrderDB
(QObject *parent = 0);
static
Orderstatus
&
getInstance
();
static
SimProcOrderDB
&
getInstance
();
/**
/**
*功能:插入一条新数据
*功能:插入一条
Simphony返回小票号的订单
新数据
*参数:[1]订单号
*参数:[1]订单号
[2]创建时间
*返回:true操作成功,false失败
*返回:true操作成功,false失败
**/
**/
bool
statusinsert
(
const
QString
&
orderId
,
const
QString
&
creatTime
);
bool
insertSimProcOrder
(
const
QString
&
orderId
,
const
QString
&
creatTime
);
/**
/**
*功能:更新
入账状态
*功能:更新
推单的入账状态[POS录单状态:订单录销售单的意思;同时也用来标记POS是否打印过录单小票]
*参数:[1]订单号[2]入账状态
*参数:[1]订单号[2]入账状态
(目前情况都是"1")
*返回:true操作成功,false失败
*返回:true操作成功,false失败
**/
**/
bool
putupdate
(
const
QString
&
orderId
,
const
int
&
puts
tatus
);
bool
updatePushOrderStatus
(
const
QString
&
orderId
,
const
int
&
pushOrderS
tatus
);
/**
/**
*功能:查询是否入账
*功能:查询是否入账
[POS新单录单:即模拟Simphony点单是否成功:成功:TRUE;未成功:FALSE]
*参数:[1]订单号
*参数:[1]订单号
*返回:true是,false否
*返回:true是,false否
**/
**/
bool
is
put
(
const
QString
&
orderId
);
bool
is
PushedOrder
(
const
QString
&
orderId
);
/**
/**
*功能:更新退款入账状态
*功能:更新退款入账状态
[POS退款录单状态:订单录退款单的意思;同时也用来标记POS是否打印过退款单小票]
*参数:[1]订单号[2]退款入账状态
*参数:[1]订单号[2]退款入账状态
*返回:true操作成功,false失败
*返回:true操作成功,false失败
**/
**/
bool
refundupdate
(
const
QString
&
orderId
,
const
int
&
refunds
tatus
);
bool
updateRefundOrderStatus
(
const
QString
&
orderId
,
const
int
&
refundOrderS
tatus
);
/**
/**
*功能:查询是否退款入账
*功能:查询是否退款入账
[POS退款录单:即模拟Simphony退单是否成功:成功:TRUE;未成功:FALSE]
*参数:[1]订单号
*参数:[1]订单号
*返回:true是,false否
*返回:true是,false否
**/
**/
bool
is
refund
(
const
QString
&
orderId
);
bool
is
RefundOrder
(
const
QString
&
orderId
);
/**
/**
*功能:更新汇报入账状态
*功能:更新汇报入账状态
[POS汇报入账状态:录订单汇报的意思;同时也用来标记POS是否?????????]
*参数:[1]订单号[2]汇报入账状态
*参数:[1]订单号[2]汇报入账状态
*返回:true操作成功,false失败
*返回:true操作成功,false失败
**/
**/
bool
reportupdate
(
const
QString
&
orderId
,
const
int
&
reports
tatus
);
bool
updateReportOrderStatus
(
const
QString
&
orderId
,
const
int
&
reportOrderS
tatus
);
/**
/**
*功能:查询是否汇报入账
*功能:查询是否汇报入账
[POS订单是否汇报入账:判断Simphony 汇报入单是否成功:成功:TRUE;未成功:FALSE]
*参数:[1]订单号
*参数:[1]订单号
*返回:true是,false否
*返回:true是,false否
**/
**/
bool
is
report
(
const
QString
&
orderId
);
bool
is
ReportOrder
(
const
QString
&
orderId
);
/**
/**
*功能:更新
汇报入账状态
*功能:更新
back汇报入账状态[POS汇报入账状态:录订单汇报的意思;同时也用来标记POS是否?????????]
*参数:[1]订单号[2]汇报入账状态
*参数:[1]订单号[2]汇报入账状态
*返回:true操作成功,false失败
*返回:true操作成功,false失败
**/
**/
bool
backreportupdate
(
const
QString
&
orderId
,
const
int
&
backreports
tatus
);
bool
updateBackReportOrderStatus
(
const
QString
&
orderId
,
const
int
&
backReportOrderS
tatus
);
/**
/**
*功能:查询是否
汇报入账
*功能:查询是否
back汇报入账 [POS订单是否汇报入账:判断Simphony 汇报入单是否成功:成功:TRUE;未成功:FALSE]
*参数:[1]订单号
*参数:[1]订单号
*返回:true是,false否
*返回:true是,false否
**/
**/
bool
is
backreport
(
const
QString
&
orderId
);
bool
is
BackReportOrder
(
const
QString
&
orderId
);
/**
/**
*功能:查询订单是否存在
*功能:查询订单是否存在
*参数:[1]订单号
*参数:[1]订单号
*返回:true是,false否
*返回:true是,false否
**/
**/
bool
isorderexit
(
const
QString
&
orderId
);
bool
isOrderExit
(
const
QString
&
orderId
);
bool
PosSalesIdupdate
(
const
QString
&
orderId
,
const
QString
&
posSalesId
);
bool
getPosSalesId
(
const
QString
&
orderId
,
QString
&
posSalesId
);
/**
*功能:更新订单的pos小票号;
*参数:[1]订单号
*返回:true是,false否
**/
bool
updatePosOrderCheckNo
(
const
QString
&
orderId
,
const
QString
&
posOrderCheckNo
);
/**
*功能:获取订单的pos小票号;
*参数:[1]订单号 [2]带出参数:用来存放参数1对应的小票号的值;
*返回:true是,false否
**/
bool
getPosOrderCheckNo
(
const
QString
&
orderId
,
QString
&
posOrderCheckNo
);
bool
queryValue
(
const
QString
&
orderId
,
const
QString
&
key
,
QString
&
error
,
QVariant
&
value
);
bool
queryValue
(
const
QString
&
orderId
,
const
QString
&
key
,
QString
&
error
,
QVariant
&
value
);
...
@@ -86,13 +97,17 @@ public:
...
@@ -86,13 +97,17 @@ public:
bool
queryIsNull
(
const
QString
&
orderId
,
const
QString
&
key
,
QString
&
error
,
bool
&
result
);
bool
queryIsNull
(
const
QString
&
orderId
,
const
QString
&
key
,
QString
&
error
,
bool
&
result
);
/**
bool
deleteRecord
(
QString
creatTime
);
*功能:删除指定时间的订单记录
*参数:[1]订单号
*返回:true是,false否
**/
bool
deleteOrderRecord
(
QString
creatTime
);
private
:
private
:
QMutex
m_mutex
;
QMutex
m_mutex
;
Orderstatus
();
SimProcOrderDB
();
Orderstatus
(
Orderstatus
const
&
);
SimProcOrderDB
(
SimProcOrderDB
const
&
);
Orderstatus
&
operator
=
(
Orderstatus
const
&
);
SimProcOrderDB
&
operator
=
(
SimProcOrderDB
const
&
);
QSqlDatabase
db
;
QSqlDatabase
db
;
signals
:
signals
:
...
@@ -100,4 +115,4 @@ signals:
...
@@ -100,4 +115,4 @@ signals:
public
slots
:
public
slots
:
};
};
#endif //
ORDERSTATUS
_H
#endif //
SIMPROCORDERDB
_H
fmTakeout/Model/orderObject.h
View file @
aa14bae1
...
@@ -43,7 +43,7 @@ class OrderObject : public QObject
...
@@ -43,7 +43,7 @@ class OrderObject : public QObject
Q_PROPERTY
(
QString
latitude
READ
getLatitude
WRITE
setLatitude
)
Q_PROPERTY
(
QString
latitude
READ
getLatitude
WRITE
setLatitude
)
Q_PROPERTY
(
QString
street
READ
getStreet
WRITE
setStreet
)
Q_PROPERTY
(
QString
street
READ
getStreet
WRITE
setStreet
)
Q_PROPERTY
(
QString
addressDetail
READ
getAddressDetail
WRITE
setAddressDetail
)
Q_PROPERTY
(
QString
addressDetail
READ
getAddressDetail
WRITE
setAddressDetail
)
Q_PROPERTY
(
QString
pos
saleId
READ
getPossaleId
WRITE
setPossaleId
)
Q_PROPERTY
(
QString
pos
CheckNo
READ
getPosCheckNo
WRITE
setPosCheckNo
)
Q_PROPERTY
(
int
updateTime
READ
getUpdateTime
WRITE
setUpdateTime
)
Q_PROPERTY
(
int
updateTime
READ
getUpdateTime
WRITE
setUpdateTime
)
Q_PROPERTY
(
int
needInvoice
READ
getNeedInvoice
WRITE
setNeedInvoice
)
Q_PROPERTY
(
int
needInvoice
READ
getNeedInvoice
WRITE
setNeedInvoice
)
Q_PROPERTY
(
int
deliveryPrice
READ
getDeliveryPrice
WRITE
setDeliveryPrice
)
Q_PROPERTY
(
int
deliveryPrice
READ
getDeliveryPrice
WRITE
setDeliveryPrice
)
...
@@ -86,7 +86,7 @@ public:
...
@@ -86,7 +86,7 @@ public:
QString
watercourseId
;
//流水号(取餐号)
QString
watercourseId
;
//流水号(取餐号)
QString
customerId
;
//用户编号
QString
customerId
;
//用户编号
QString
customerName
;
//用户名称
QString
customerName
;
//用户名称
QString
pos
saleId
;
QString
pos
CheckNo
;
QString
phone
;
QString
phone
;
QString
msr_no
;
QString
msr_no
;
QString
storeId
;
QString
storeId
;
...
@@ -229,8 +229,8 @@ public:
...
@@ -229,8 +229,8 @@ public:
inline
QString
getAddressDetail
()
const
{
return
addressDetail
;}
inline
QString
getAddressDetail
()
const
{
return
addressDetail
;}
inline
void
setAddressDetail
(
const
QString
&
v
){
addressDetail
=
v
;}
inline
void
setAddressDetail
(
const
QString
&
v
){
addressDetail
=
v
;}
inline
QString
getPos
saleId
()
const
{
return
possaleId
;}
inline
QString
getPos
CheckNo
()
const
{
return
posCheckNo
;}
inline
void
setPos
saleId
(
const
QString
&
v
){
possaleId
=
v
;}
inline
void
setPos
CheckNo
(
const
QString
&
v
){
posCheckNo
=
v
;}
inline
int
getOrderIndex
()
const
{
return
orderIndex
;}
inline
int
getOrderIndex
()
const
{
return
orderIndex
;}
inline
void
setOrderIndex
(
const
int
&
v
){
orderIndex
=
v
;}
inline
void
setOrderIndex
(
const
int
&
v
){
orderIndex
=
v
;}
...
...
fmTakeout/fmTakeout.pro
View file @
aa14bae1
...
@@ -44,7 +44,6 @@ SOURCES += main.cpp\
...
@@ -44,7 +44,6 @@ SOURCES += main.cpp\
DTools
/
clickedLineEdit
.
cpp
\
DTools
/
clickedLineEdit
.
cpp
\
RejectForm
.
cpp
\
RejectForm
.
cpp
\
DTools
/
headframe
.
cpp
\
DTools
/
headframe
.
cpp
\
DTools
/
orderstatus
.
cpp
\
bstatusForm
.
cpp
\
bstatusForm
.
cpp
\
bstatusItem
.
cpp
\
bstatusItem
.
cpp
\
dishesForm
.
cpp
\
dishesForm
.
cpp
\
...
@@ -53,7 +52,8 @@ SOURCES += main.cpp\
...
@@ -53,7 +52,8 @@ SOURCES += main.cpp\
refdishesForm
.
cpp
\
refdishesForm
.
cpp
\
refuseForm
.
cpp
\
refuseForm
.
cpp
\
dailyreportForm
.
cpp
\
dailyreportForm
.
cpp
\
Model
/
dailyObject
.
cpp
Model
/
dailyObject
.
cpp
\
DTools
/
simProcOrderDB
.
cpp
HEADERS
+=
\
HEADERS
+=
\
mainForm
.
h
\
mainForm
.
h
\
...
@@ -75,7 +75,6 @@ HEADERS += \
...
@@ -75,7 +75,6 @@ HEADERS += \
DTools
/
clickedLineEdit
.
h
\
DTools
/
clickedLineEdit
.
h
\
RejectForm
.
h
\
RejectForm
.
h
\
DTools
/
headframe
.
h
\
DTools
/
headframe
.
h
\
DTools
/
orderstatus
.
h
\
bstatusForm
.
h
\
bstatusForm
.
h
\
bstatusItem
.
h
\
bstatusItem
.
h
\
dishesForm
.
h
\
dishesForm
.
h
\
...
@@ -85,7 +84,8 @@ HEADERS += \
...
@@ -85,7 +84,8 @@ HEADERS += \
refuseForm
.
h
\
refuseForm
.
h
\
dailyreportForm
.
h
\
dailyreportForm
.
h
\
Model
/
dailyObject
.
h
\
Model
/
dailyObject
.
h
\
DTools
/
dump
.
h
DTools
/
dump
.
h
\
DTools
/
simProcOrderDB
.
h
FORMS
+=
mainForm
.
ui
\
FORMS
+=
mainForm
.
ui
\
alertForm
.
ui
\
alertForm
.
ui
\
...
...
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