Commit 8ecd043e by ss.dai

增加人员选择窗口, 完成订单的 接单、送出、完成等状态操作, 完成收银员的选取检测

parent d75fdea8
......@@ -61,3 +61,30 @@ bool FmPlugin::GetStoreInfo(QString &storeId, QString &posId, QString &cashierId
return true;
}
bool FmPlugin::GetOnDutyCashiers(QList<CashierObject> &cashiersList, QString &error)
{
// 获取在班收银员信息
QSqlQuery query = QSqlQuery(m_db);
QString queryCashiers("select * from v_km_cashshift");
query.prepare(queryCashiers);
if (!query.exec())
{
error = query.lastError().text();
return false;
}else
{
while(query.next())
{
CashierObject cashierObj;
cashierObj.id = query.value(0).toString();
cashierObj.name = query.value(1).toString();
cashierObj.shiftId = query.value(2).toString();
cashierObj.shiftName = query.value(3).toString();
cashiersList.append(cashierObj);
}
}
error = QString("success");
return true;
}
......@@ -2,6 +2,7 @@
#define FMPLUGIN_H
#include "fmplugin_global.h"
#include "../fmTakeaway/Model/cashierObject.h"
#include <QtSql/QSqlDatabase>
#include <QDateTime>
......@@ -26,6 +27,12 @@ public:
bool GetStoreInfo(QString& storeId, QString& posId, QString& cashierId,
QDateTime& dateTime, QString& error);
/* 功能:获取在班收银员信息
* 参数:[1]收银员列表[2]错误信息
* 返回:是否成功
* */
bool GetOnDutyCashiers(QList<CashierObject>& cashiersList, QString& error);
private:
FmPlugin(){}
FmPlugin(FmPlugin const&);
......
......@@ -4,6 +4,8 @@
#include <QObject>
#include "Network/billSocket.h"
#include "Model/orderObject.h"
#include "Model/deliverObject.h"
#include "Model/cashierObject.h"
#include "alertForm.h"
#include <QMap>
......@@ -27,10 +29,13 @@ private:
// 网络通信
BillSocket *m_loginSocket;
BillSocket *m_pullOrderSocket;
// 时间戳
BillSocket *m_procOrderSocket;
// 拉取订单的时间戳
QString m_timestamp;
// 订单容器
QMap<QString, OrderObject*> m_ordersMap;
// 当前收银员
CashierObject m_cashierObject;
signals:
/* 功能:连接数据库完成
......@@ -68,6 +73,16 @@ signals:
* 返回:NULL
* */
void changeOrderStatus(OrderObject* orderObject, int oldStatus=-100);
/* 功能:显示配送员选择窗
* 参数:[1]订单编号[2]配送员信息
* 返回:NULL
* */
void showDeliverPickForm(const QString& orderId, const QList<DeliverObject>& delivers);
/* 功能:显示收银员选择窗
* 参数:[1]收银员信息
* 返回:NULL
* */
void showCashierPickForm(const QList<CashierObject>& cashiers);
private slots:
/* 功能:获取门店信息
......@@ -84,7 +99,52 @@ private slots:
* 参数:NULL
* 返回:是否成功
* */
bool _pullOrder();
bool _PullOrder();
/* 功能:获取配送员
* 参数:[1]订单编号
* 返回:是否成功
* */
bool _GetDelivers(const QString& orderId);
/* 功能:确认订单
* 参数:[1]订单编号[2]配送员信息
* 返回:是否成功
* */
bool _ConfirmOrder(const QString& orderId, const DeliverObject& deliverObj);
/* 功能:拒绝订单
* 参数:[1]订单编号[2]拒单原因
* 返回:是否成功
* */
bool _RefuseOrder(const QString& orderId, int refuseCode);
/* 功能:送出订单
* 参数:[1]订单编号
* 返回:是否成功
* */
bool _SendOrder(const QString& orderId);
/* 功能:完成订单
* 参数:NULL
* 返回:是否成功
* */
bool _CompleteOrder(const QString& orderId);
/* 功能:同意退单
* 参数:NULL
* 返回:是否成功
* */
bool _RefundOrder();
/* 功能:拒绝退单
* 参数:NULL
* 返回:是否成功
* */
bool _RefuseRefund(const QString& orderId);
/* 功能:获取收银员
* 参数:[1]收银员列表
* 返回:成功true失败false
* */
bool _GetCashiers(QList<CashierObject>& cashiersList);
/* 功能:检测收银员合法性
* 参数:NULL
* 返回:合法true不合法false
* */
bool _CheckCashiers();
/* 功能:获取Json对象的字符
* 参数:NULL
* 返回:Json字符串
......@@ -103,6 +163,24 @@ public slots:
* */
void onConnectDb(const QString& host, const QString& username,
const QString& password, const QString& dbname);
/* 功能:处理订单
* 参数:[1]操作动作名[2]订单编号[3]配送员姓名
* 返回:NULL
* */
void onProcessOrder(const QString& operation, const QString& orderId, const DeliverObject& deliverObj);
/* 功能:获取在班收银员信息
* 参数:NULL
* 返回:NULL
* */
void onGetOnDutyCashiers();
/* 功能:更新收银员信息
* 参数:NULL
* 返回:NULL
* */
void onUpdateCashier(const CashierObject& cashier);
};
#endif // FLOWCONTROL_H
......@@ -14,7 +14,6 @@ ConfigManger::ConfigManger()
QString appDir = QApplication::applicationDirPath();
QString config = QString("%1/%2").arg(appDir).arg(CONFIG_NAME);
QString userConfig = QString("%1/%2").arg(appDir).arg(USERCONFIG_NAME);
m_config = new QSettings(config, QSettings::IniFormat);
m_userConfig = new QSettings(userConfig, QSettings::IniFormat);
}
......
#include "dataManger.h"
#include "preDefine.h"
// 请求类型
enum
{
LOGIN = 10, PULL_ORDER, CONFIRM_ORDER,
REFUSE_ORDER,COMPLETE_ORDER = 16,
REFUSE_REFUND = 18,SEND_ORDER = 19,
REFUND_ORDER = 20, GET_DELIVER=21,
UPDATE_STOCK=80
};
DataManger &DataManger::GetInstance()
{
static DataManger dm;
......@@ -15,9 +25,9 @@ void DataManger::SetToken(const QString &token)
QJsonObject DataManger::GetLoginData(const QString &storeId, const QString &password, const QString &stationId, const QString &cashierId)
{
QJsonObject rObj, cObj;
cObj.insert(JSON_USERNAME, storeId);
cObj.insert(JSON_PASSWORD, password);
rObj.insert(JSON_REQTYPE, LOGIN);
cObj.insert(JSON_USERNAME, storeId);
cObj.insert(JSON_PASSWORD, password);
rObj.insert(JSON_CURRENTUSER, cObj);
rObj.insert(JSON_STATIONID, stationId);
rObj.insert(JSON_OPERATORID, cashierId);
......@@ -29,8 +39,84 @@ QJsonObject DataManger::GetPullOrderData(const QString &timestamp)
QJsonObject rObj;
rObj.insert(JSON_REQTYPE, PULL_ORDER);
rObj.insert(JSON_TIMESTAMPS, timestamp);
rObj.insert(JSON_AUTOCONFIRM, 0);
rObj.insert(JSON_AUTOCONFIRM, "0");
rObj.insert(JSON_TOKEN, m_token);
rObj.insert(JSON_POSVERSION, APP_VERSION);
return rObj;
}
QJsonObject DataManger::GetPullDeliverData(const QString &storeId, const QString &channelCode)
{
QJsonObject rObj;
rObj.insert(JSON_REQTYPE, GET_DELIVER);
rObj.insert(JSON_STOREID, storeId);
rObj.insert(JSON_CHANNEL, channelCode);
rObj.insert(JSON_TOKEN, m_token);
return rObj;
}
QJsonObject DataManger::GetConfirmOrderData(const QString &orderId, const QString &deliverId, const QString &deliverName, const QString &deliverPhone)
{
QJsonObject rObj, cObj;
rObj.insert(JSON_REQTYPE, CONFIRM_ORDER);
cObj.insert(JSON_ORDERID, orderId);
cObj.insert(JSON_DELIVERYID, deliverId);
cObj.insert(JSON_DELIVERYNAME, deliverName);
cObj.insert(JSON_DELIVERYPHONE, deliverPhone);
rObj.insert(JSON_ORDER, cObj);
rObj.insert(JSON_TOKEN, m_token);
return rObj;
}
QJsonObject DataManger::GetRefuseOrderData(int refuseCode, const QString &orderId)
{
QJsonObject rObj, cObj;
rObj.insert(JSON_REQTYPE, REFUSE_ORDER);
cObj.insert(JSON_ORDERID, orderId);
cObj.insert(JSON_REASONCODE, refuseCode);
rObj.insert(JSON_ORDER, cObj);
rObj.insert(JSON_TOKEN, m_token);
return rObj;
}
QJsonObject DataManger::GetSendOrderData(const QString &orderId)
{
QJsonObject rObj, cObj;
rObj.insert(JSON_REQTYPE, SEND_ORDER);
cObj.insert(JSON_ORDERID, orderId);
rObj.insert(JSON_ORDER, cObj);
rObj.insert(JSON_TOKEN, m_token);
return rObj;
}
QJsonObject DataManger::GetCompleteOrderData(const QString &orderId)
{
QJsonObject rObj, cObj;
rObj.insert(JSON_REQTYPE, COMPLETE_ORDER);
cObj.insert(JSON_ORDERID, orderId);
rObj.insert(JSON_ORDER, cObj);
rObj.insert(JSON_TOKEN, m_token);
return rObj;
}
QJsonObject DataManger::GetRefundOrderData(const QString &reason, const QString &orderId)
{
QJsonObject rObj, cObj;
rObj.insert(JSON_REQTYPE, REFUND_ORDER);
cObj.insert(JSON_ORDERID, orderId);
cObj.insert(JSON_REASON, reason);
rObj.insert(JSON_ORDER, cObj);
rObj.insert(JSON_TOKEN, m_token);
return rObj;
}
QJsonObject DataManger::GetRefuseRefundData(const QString &reason, const QString &orderId)
{
QJsonObject rObj, cObj;
rObj.insert(JSON_REQTYPE, REFUSE_REFUND);
cObj.insert(JSON_ORDERID, orderId);
cObj.insert(JSON_REASON, reason);
rObj.insert(JSON_ORDER, cObj);
rObj.insert(JSON_TOKEN, m_token);
return rObj;
}
......@@ -23,20 +23,48 @@ public:
* 参数:[1]时间戳
* 返回:登录数据
* */
QJsonObject GetPullOrderData(const QString &timestamp);
QJsonObject GetPullOrderData(const QString& timestamp);
/* 功能:获取拉取配送员数据
* 参数:[1]门店号[2]渠道代码
* 返回:登录数据
* */
QJsonObject GetPullDeliverData(const QString& storeId, const QString& channelCode);
/* 功能:获取确认订单数据
* 参数:[1]订单编号[2]配送员编号[3]配送员姓名[4]配送员电话
* 返回:登录数据
* */
QJsonObject GetConfirmOrderData(const QString& orderId, const QString& deliverId,
const QString& deliverName, const QString& deliverPhone);
/* 功能:获取拒绝订单数据
* 参数:[1]拒单原因[2]订单编号
* 返回:登录数据
* */
QJsonObject GetRefuseOrderData(int refuseCode, const QString& orderId);
/* 功能:获取送出订单数据
* 参数:[1]订单编号
* 返回:登录数据
* */
QJsonObject GetSendOrderData(const QString& orderId);
/* 功能:获取完成订单数据
* 参数:[1]订单编号
* 返回:登录数据
* */
QJsonObject GetCompleteOrderData(const QString& orderId);
/* 功能:获取同意退单数据
* 参数:[1]时间戳
* 返回:登录数据
* */
QJsonObject GetRefundOrderData(const QString& reason, const QString& orderId);
/* 功能:获取拒绝退单数据
* 参数:[1]时间戳
* 返回:登录数据
* */
QJsonObject GetRefuseRefundData(const QString& reason, const QString& orderId);
private:
DataManger(){}
DataManger(DataManger const&);
DataManger& operator=(DataManger const&);
// 请求类型
enum
{
LOGIN = 10, PULL_ORDER, CONFIRM_ORDER,
REFUSE_ORDER, BIND_POS_ORDER, SEND_ORDER,
GET_DELIVER=21, UPDATE_STOCK=80
};
// token
QString m_token;
};
......
......@@ -2,6 +2,32 @@
#include <QStringList>
#include <QVariant>
BaseObject::BaseObject(const BaseObject &p)
{
const QMetaObject *m = p.metaObject();
for( int i=m->propertyOffset(); i<m->propertyCount(); i++)
{
QMetaProperty qmp = m->property(i);
QString key = QString::fromLatin1(qmp.name());
QVariant value = p.property(key.toUtf8());
this->setProperty(key.toUtf8(), value);
}
}
BaseObject &BaseObject::operator =(const BaseObject &p)
{
const QMetaObject *m = p.metaObject();
BaseObject np;
for( int i=m->propertyOffset(); i<m->propertyCount(); i++)
{
QMetaProperty qmp = m->property(i);
QString key = QString::fromLatin1(qmp.name());
QVariant value = p.property(key.toUtf8());
np.setProperty(key.toUtf8(), value);
}
return np;
}
void BaseObject::FetchDataFromJson(const QJsonObject &json)
{
QStringList keys = json.keys();
......
......@@ -3,6 +3,8 @@
#include <QObject>
#include <QJsonObject>
#include <QVariant>
#include <QMetaProperty>
class BaseObject : public QObject
{
......@@ -11,6 +13,9 @@ public:
BaseObject(QObject *parent=0)
:QObject(parent){}
BaseObject(BaseObject const&);
BaseObject &operator = (BaseObject const&);
/* 功能:从Json对象初始化属性值
* 参数:[1]JSon对象
* 返回:NULL
......
#include "cashierObject.h"
#ifndef CASHIEROBJECT_H
#define CASHIEROBJECT_H
#include <QString>
class CashierObject
{
public:
CashierObject(){}
QString id; //人员编号
QString name; //人员名称
QString shiftId; //班次编号
QString shiftName; //班次名称
};
#endif // CASHIEROBJECT_H
#include "deliverObject.h"
DeliverObject::DeliverObject()
QString DeliverObject::getId() const
{
return id;
}
void DeliverObject::setId(const QString &v)
{
id = v;
}
QString DeliverObject::getName() const
{
return name;
}
void DeliverObject::setName(const QString &v)
{
name = v;
}
QString DeliverObject::getPhone() const
{
return phone;
}
void DeliverObject::setPhone(const QString &v)
{
phone = v;
}
#ifndef DELIVEROBJECT_H
#define DELIVEROBJECT_H
#include "baseObject.h"
class DeliverObject
class DeliverObject : public BaseObject
{
Q_OBJECT
public:
DeliverObject();
DeliverObject(QObject *parent = 0)
:BaseObject(parent){}
Q_PROPERTY (QString id READ getId WRITE setId)
Q_PROPERTY (QString name READ getName WRITE setName)
Q_PROPERTY (QString phone READ getPhone WRITE setPhone)
protected:
QString getId() const ;
void setId(const QString& v);
QString getName() const ;
void setName(const QString& v);
QString getPhone() const ;
void setPhone(const QString& v);
public:
QString id;
QString name;
QString phone;
};
#endif // DELIVEROBJECT_H
\ No newline at end of file
#endif // DELIVEROBJECT_H
......@@ -4,7 +4,6 @@
void OrderObject::FromJson(const QJsonObject &json)
{
qDeleteAll(proList);
proList.clear();
FetchDataFromJson(json);
QJsonArray products = json[JSON_PRODUCTS].toArray();
......@@ -319,3 +318,33 @@ void OrderObject::setstatus_desc(const QString &v)
{
status_desc = v;
}
QString OrderObject::getdelivery_time() const
{
return delivery_time;
}
void OrderObject::setdelivery_time(const QString &v)
{
delivery_time = v;
}
QString OrderObject::getfm_id() const
{
return fm_id;
}
void OrderObject::setfm_id(const QString &v)
{
fm_id = v;
}
int OrderObject::getdelivery_status() const
{
return delivery_status;
}
void OrderObject::setdelivery_status(const int &v)
{
delivery_status = v;
}
......@@ -48,39 +48,45 @@ public:
Q_PROPERTY (QString courier_name READ getcourier_name WRITE setcourier_name)
Q_PROPERTY (QString courier_phone READ getcourier_phone WRITE setcourier_phone)
Q_PROPERTY (QString status_desc READ getstatus_desc WRITE setstatus_desc)
Q_PROPERTY (QString delivery_time READ getdelivery_time WRITE setdelivery_time)
Q_PROPERTY (int delivery_status READ getdelivery_status WRITE setdelivery_status)
Q_PROPERTY (QString fm_id READ getfm_id WRITE setfm_id)
int status; //订单状态
QString address; //地址
QString channel; //渠道
QString channelName; //渠道名称
QString customer; //用户姓名
QString coupon; //码
QString courier_name; //配送员信息
QString courier_phone; //配送员电话
int channelNum; //渠道当天序号
int create_time; //订单时间
QString delivery_party; //派送方式
QString delivery_time; //期望送达时间
int delivery_status; //配送状态
int discount_fee; //商品优惠
int expire_time; //订单倒计时
QString fm_id; //非码订单编号
bool has_invoiced; //是否需要发票
QString invoice_title; //发票抬头
QString order_id; //订单号
int order_index; //渠道当天序号
QString pay_type; //支付方式
QString phone; //电话
QString address; //地址
QString customer; //用户姓名
QString delivery_party; //派送方式
QString posorder_id; //pos订单号
QString printcfg; //打印联
QList<ProductObject> proList; //商品明细
int paid_fee; //已付金额
QString remark; //备注
int rest_fee; //未付
int user_fee; //应付金额
QString status_desc; //订单状态描述
int status; //订单状态
int shop_fee; //应收金额(商家和骑士看到的)
QString order_id; //订单号
QString posorder_id; //pos订单号
QString remark; //备注
int create_time; //订单时间
QString coupon; //码
QString timestamp; //时间戳
int expire_time; //订单倒计时
QString printcfg; //打印联
QString pay_type; //支付方式
int total_fee; //商品金额
int discount_fee; //商品优惠
int send_fee; //运费金额
QString timestamp; //时间戳
int total_fee; //商品金额
int total_amount; //总件数
bool has_invoiced; //是否需要发票
QString invoice_title; //发票抬头
QString courier_name; //配送员信息
QString courier_phone; //配送员电话
QString status_desc; //订单状态描述
QList<ProductObject *> proList; //商品明细
int user_fee; //应付金额
protected:
int getstatus() const ;
......@@ -145,6 +151,12 @@ protected:
void setcourier_phone(const QString& v);
QString getstatus_desc() const;
void setstatus_desc(const QString& v);
QString getdelivery_time() const;
void setdelivery_time(const QString& v);
QString getfm_id() const;
void setfm_id(const QString& v);
int getdelivery_status() const ;
void setdelivery_status(const int& v);
};
#endif // ORDEROBJECT_H
......@@ -7,8 +7,6 @@ AlertForm::AlertForm(QWidget *parent) :
{
ui->setupUi(this);
qRegisterMetaType<AlertForm::Type>("AlertForm::Type");
_Init();
}
......
......@@ -23,11 +23,18 @@ public:
LOADING
}Type;
/* 功能:设置显示内容
* 参数:[1]窗体类型[2]信息内容
* 返回:NULL
* */
void SetContent(AlertForm::Type type, const QString& msg);
private:
Ui::AlertForm *ui;
/* 功能:初始化
* 参数:NULL
* 返回:NULL
* */
void _Init();
private slots:
......
......@@ -27,7 +27,9 @@ SOURCES += main.cpp\
Model/baseObject.cpp \
Model/deliverObject.cpp \
Model/productObject.cpp \
DTools/util.cpp
DTools/util.cpp \
Model/cashierObject.cpp \
pickForm.cpp
HEADERS += \
mainForm.h \
......@@ -42,11 +44,14 @@ HEADERS += \
Model/baseObject.h \
Model/deliverObject.h \
Model/productObject.h \
DTools/util.h
DTools/util.h \
Model/cashierObject.h \
pickForm.h
FORMS += mainForm.ui \
alertForm.ui \
dbsetForm.ui
dbsetForm.ui \
pickForm.ui
RC_FILE += fmTakeaway.rc
......
......@@ -5,9 +5,10 @@
#include "Control/flowControl.h"
#include "QsLog.h"
#include "DTools/util.h"
#include <QList>
MainForm::MainForm(QWidget *parent) :
QDialog(parent),
QWidget(parent),
ui(new Ui::MainForm)
{
ui->setupUi(this);
......@@ -15,7 +16,6 @@ MainForm::MainForm(QWidget *parent) :
// 初始化成员变量
m_prevBtn = NULL;
m_prevTable = NULL;
m_alertForm = new AlertForm(this);
m_tableList.append(ui->mainTableNew);
m_tableList.append(ui->mainTableMake);
m_tableList.append(ui->mainTableSend);
......@@ -23,14 +23,25 @@ MainForm::MainForm(QWidget *parent) :
m_tableList.append(ui->mainTableFinsh);
m_tableList.append(ui->mainTableOther);
// 注册信号槽参数
qRegisterMetaType<CashierObject>("CashierObject");
qRegisterMetaType< QList<CashierObject> >("QList<CashierObject>");
qRegisterMetaType<DeliverObject>("DeliverObject");
qRegisterMetaType< QList<DeliverObject> >("QList<DeliverObject>");
qRegisterMetaType<AlertForm::Type>("AlertForm::Type");
// 连接信号槽
connect(this, &MainForm::flowStart, &FlowControl::GetInstance(), &FlowControl::onFlowStart);
connect(this, &MainForm::processOrder, &FlowControl::GetInstance(), &FlowControl::onProcessOrder);
connect(this, &MainForm::getOnDutyCashiers, &FlowControl::GetInstance(), &FlowControl::onGetOnDutyCashiers);
connect(&FlowControl::GetInstance(), &FlowControl::hideAlert, this, &MainForm::onHideAlert);
connect(&FlowControl::GetInstance(), &FlowControl::showAlert, this, &MainForm::onShowAlert);
connect(&FlowControl::GetInstance(), &FlowControl::setOpeStatus, this, &MainForm::onSetOpeStatus);
connect(&FlowControl::GetInstance(), &FlowControl::setNetStatus, this, &MainForm::onSetNetStatus);
connect(&FlowControl::GetInstance(), &FlowControl::setStoreInfo, this, &MainForm::onSetStoreInfo);
connect(&FlowControl::GetInstance(), &FlowControl::changeOrderStatus, this, &MainForm::onChangeOrderStatus);
connect(&FlowControl::GetInstance(), &FlowControl::showDeliverPickForm, this, &MainForm::onShowDeliverPickForm);
connect(&FlowControl::GetInstance(), &FlowControl::showCashierPickForm, this, &MainForm::onShowCashierPickForm);
// 初始化界面
_Init();
......@@ -44,6 +55,13 @@ MainForm::~MainForm()
void MainForm::MyShow()
{
this->show();
// 考虑到坐标问题放到这里构建
m_alertForm = new AlertForm(this);
m_pickForm = new PickForm(this);
connect(m_pickForm, &PickForm::updateCashier, this, &MainForm::onUpdateCashier);
emit flowStart();
return;
}
......@@ -102,6 +120,22 @@ void MainForm::onMainTabBtnClicked()
m_prevTable = table;
}
void MainForm::onMainProcBtnClicked()
{
QPushButton *pBtn = (QPushButton*)sender();
emit processOrder(pBtn->property("operation").toString(), pBtn->property("orderId").toString(), DeliverObject());
}
void MainForm::on_mainBtnCashier_clicked()
{
emit getOnDutyCashiers();
}
void MainForm::onUpdateCashier(const CashierObject &cashier)
{
ui->mainLabCashier->setText(cashier.name);
}
void MainForm::_RevertBtnTable()
{
m_prevBtn->setChecked(false);
......@@ -194,7 +228,7 @@ void MainForm::onChangeOrderStatus(OrderObject *orderObject, int oldStatus)
}
}
}
// 将数据插入到表中
tabBtn = _GetTabBtnByOrderStatus(orderObject->status);
table = findChild<QTableWidget*>(tabBtn->property("tableName").toString());
table->insertRow(0);
......@@ -222,16 +256,32 @@ void MainForm::onChangeOrderStatus(OrderObject *orderObject, int oldStatus)
QHBoxLayout *hLayout = new QHBoxLayout(pWdg);
QPushButton * pBtn = new QPushButton(pWdg);
pBtn->setFocusPolicy(Qt::NoFocus);
pBtn->setObjectName("mainOperaBtnInTable");
pBtn->setText(tabBtn->property("operationName").toString());
pBtn->setObjectName("mainProcBtn");
pBtn->setProperty("orderId", orderObject->order_id);
pBtn->setProperty("operation", table->property("operation").toString());
pBtn->setText(table->property("operationName").toString());
hLayout->addWidget(pBtn);
hLayout->setMargin(0);
pWdg->setLayout(hLayout);
table->setCellWidget(0, 6, pWdg);
} // 操作
table->setCellWidget(0, 6, pWdg); // 操作按钮
connect(pBtn, &QPushButton::clicked, this, &MainForm::onMainProcBtnClicked);
}
QString btnText = QString("%1(%2)").arg(tabBtn->property("name").toString()).arg(table->rowCount());
tabBtn->setText(btnText);
_SetTablesSortEnable(true);
}
void MainForm::onShowDeliverPickForm(const QString &orderId, const QList<DeliverObject> &delivers)
{
m_pickForm->SetDeliversInfo(orderId, delivers);
m_pickForm->show();
}
void MainForm::onShowCashierPickForm(const QList<CashierObject> &cashiers)
{
m_pickForm->SetCashiersInfo(cashiers);
m_pickForm->show();
}
......@@ -5,12 +5,14 @@
#include <QTableWidget>
#include "alertForm.h"
#include "Model/orderObject.h"
#include "Model/deliverObject.h"
#include "pickForm.h"
namespace Ui {
class MainForm;
}
class MainForm : public QDialog
class MainForm : public QWidget
{
Q_OBJECT
......@@ -30,11 +32,14 @@ private:
// 记录上一次选中的表单和按钮
QPushButton *m_prevBtn;
QTableWidget *m_prevTable;
// 所有的表
QList<QTableWidget*> m_tableList;
// 通知窗口
AlertForm *m_alertForm;
// 人员选择窗口
PickForm *m_pickForm;
/* 功能:还原按钮和表
* 参数:NULL
......@@ -58,6 +63,16 @@ signals:
* 返回:NULL
* */
void flowStart();
/* 功能:处理订单
* 参数:[1]操作动作名[2]订单编号[3]配送员信息
* 返回:NULL
* */
void processOrder(const QString& operation, const QString& orderId, const DeliverObject& deliverObj);
/* 功能:获取在班收银员
* 参数:NULL
* 返回:NULL
* */
void getOnDutyCashiers();
private slots:
/* 功能:初始化
......@@ -70,6 +85,16 @@ private slots:
* 返回:NULL
* */
void onMainTabBtnClicked();
/* 功能:Tab页按钮点击对应动作
* 参数:NULL
* 返回:NULL
* */
void onMainProcBtnClicked();
/* 功能:选择收银员按钮对应动作
* 参数:NULL
* 返回:NULL
* */
void on_mainBtnCashier_clicked();
public slots:
/* 功能:隐藏通知窗口
......@@ -102,6 +127,21 @@ public slots:
* 返回:NULL
* */
void onChangeOrderStatus(OrderObject *orderObject, int oldStatus);
/* 功能:显示配送员选择窗口
* 参数:[1]订单编号[2]配送员信息
* 返回:NULL
* */
void onShowDeliverPickForm(const QString& orderId, const QList<DeliverObject>& delivers);
/* 功能:显示收银员选择窗口
* 参数:[1]收银员信息
* 返回:NULL
* */
void onShowCashierPickForm(const QList<CashierObject>& cashiers);
/* 功能:更新收银员信息
* 参数:NULL
* 返回:NULL
* */
void onUpdateCashier(const CashierObject& cashier);
};
#endif // MAINFORM_H
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainForm</class>
<widget class="QDialog" name="MainForm">
<widget class="QWidget" name="MainForm">
<property name="geometry">
<rect>
<x>0</x>
......@@ -83,9 +83,6 @@
<property name="name" stdset="0">
<string>新订单</string>
</property>
<property name="operationName" stdset="0">
<string>接单</string>
</property>
</widget>
<widget class="QPushButton" name="mainBtnMake">
<property name="geometry">
......@@ -111,9 +108,6 @@
<property name="name" stdset="0">
<string>制作中</string>
</property>
<property name="operationName" stdset="0">
<string>送出</string>
</property>
</widget>
<widget class="QPushButton" name="mainBtnSend">
<property name="geometry">
......@@ -139,9 +133,6 @@
<property name="name" stdset="0">
<string>配送中</string>
</property>
<property name="operationName" stdset="0">
<string>完成</string>
</property>
</widget>
<widget class="QPushButton" name="mainBtnFinsh">
<property name="geometry">
......@@ -167,9 +158,6 @@
<property name="name" stdset="0">
<string>已完成</string>
</property>
<property name="operationName" stdset="0">
<string>NULL</string>
</property>
</widget>
<widget class="QPushButton" name="mainBtnRefund">
<property name="geometry">
......@@ -195,9 +183,6 @@
<property name="name" stdset="0">
<string>需退单</string>
</property>
<property name="operationName" stdset="0">
<string>退单</string>
</property>
</widget>
<widget class="QPushButton" name="mainBtnOther">
<property name="geometry">
......@@ -223,9 +208,6 @@
<property name="name" stdset="0">
<string>其他</string>
</property>
<property name="operationName" stdset="0">
<string>NULL</string>
</property>
</widget>
<widget class="QLabel" name="mainSlabLogo">
<property name="geometry">
......@@ -302,6 +284,12 @@
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="operationName" stdset="0">
<string>接单</string>
</property>
<property name="operation" stdset="0">
<string>getDelivers</string>
</property>
<attribute name="horizontalHeaderStretchLastSection">
<bool>true</bool>
</attribute>
......@@ -350,6 +338,12 @@
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="operationName" stdset="0">
<string>送出</string>
</property>
<property name="operation" stdset="0">
<string>sendOut</string>
</property>
<attribute name="horizontalHeaderStretchLastSection">
<bool>true</bool>
</attribute>
......@@ -398,6 +392,12 @@
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="operationName" stdset="0">
<string>完成</string>
</property>
<property name="operation" stdset="0">
<string>complete</string>
</property>
<attribute name="horizontalHeaderStretchLastSection">
<bool>true</bool>
</attribute>
......@@ -446,6 +446,12 @@
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="operationName" stdset="0">
<string>NULL</string>
</property>
<property name="operation" stdset="0">
<string>NULL</string>
</property>
<attribute name="horizontalHeaderStretchLastSection">
<bool>true</bool>
</attribute>
......@@ -489,6 +495,12 @@
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="operationName" stdset="0">
<string>退单</string>
</property>
<property name="operation" stdset="0">
<string>refuseRefund</string>
</property>
<attribute name="horizontalHeaderStretchLastSection">
<bool>true</bool>
</attribute>
......@@ -537,6 +549,12 @@
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="operationName" stdset="0">
<string>NULL</string>
</property>
<property name="operation" stdset="0">
<string>NULL</string>
</property>
<attribute name="horizontalHeaderStretchLastSection">
<bool>true</bool>
</attribute>
......
#include "pickForm.h"
#include "ui_pickForm.h"
#include "preDefine.h"
#include "Control/flowControl.h"
PickForm::PickForm(QWidget *parent) :
QDialog(parent),
ui(new Ui::PickForm)
{
ui->setupUi(this);
m_prevBtn = NULL;
for(int i=0; i<10; i++)
{
QPushButton* btn = findChild<QPushButton*>(QString("pickBtn%1").arg(i));
m_numBtnList.append(btn);
connect(btn, &QPushButton::toggled, this, &PickForm::onNumBtnToggled);
}
connect(this, &PickForm::processOrder, &FlowControl::GetInstance(), &FlowControl::onProcessOrder);
connect(this, &PickForm::updateCashier, &FlowControl::GetInstance(), &FlowControl::onUpdateCashier);
_Init();
}
PickForm::~PickForm()
{
delete ui;
}
void PickForm::SetDeliversInfo(const QString &orderId, const QList<DeliverObject> &delivers)
{
m_orderId = orderId;
_InitBtn();
int count = delivers.count()>10?10:delivers.count();
for(int i=0; i<count; i++)
{
m_numBtnList[i]->setText(delivers[i].name);
m_numBtnList[i]->setProperty(PROPERTY_ID, delivers[i].id);
m_numBtnList[i]->setProperty(PROPERTY_NAME, delivers[i].name);
m_numBtnList[i]->setProperty(PROPERTY_PHONE, delivers[i].phone);
m_numBtnList[i]->setEnabled(true);
}
m_formType = 0;
}
void PickForm::SetCashiersInfo(const QList<CashierObject> &cashiers)
{
_InitBtn();
int count = cashiers.count()>10?10:cashiers.count();
for(int i=0; i<count; i++)
{
m_numBtnList[i]->setText(cashiers[i].name);
m_numBtnList[i]->setProperty(PROPERTY_ID, cashiers[i].id);
m_numBtnList[i]->setProperty(PROPERTY_NAME, cashiers[i].name);
m_numBtnList[i]->setProperty(PROPERTY_SHIFTID, cashiers[i].shiftId);
m_numBtnList[i]->setProperty(PROPERTY_SHIFTNAME, cashiers[i].shiftName);
m_numBtnList[i]->setEnabled(true);
}
m_formType = 1;
}
void PickForm::_Init()
{
setWindowFlags(windowFlags()|Qt::FramelessWindowHint);
setGeometry(((QWidget*)parent())->geometry());
setModal(true);
}
void PickForm::_InitBtn()
{
foreach(QPushButton* btn, m_numBtnList)
{
btn->setText("");
btn->setChecked(false);
btn->setEnabled(false);
}
ui->pickBtnOk->setEnabled(false);
}
void PickForm::onNumBtnToggled(bool bChecked)
{
QPushButton *btn = (QPushButton*)sender();
if(bChecked)
{
if(m_prevBtn != NULL && m_prevBtn != btn)
{
m_prevBtn->setChecked(false);
}
m_prevBtn = btn;
if(m_formType == 0)
{
m_deliverObj.id = btn->property(PROPERTY_ID).toString();
m_deliverObj.name = btn->property(PROPERTY_NAME).toString();
m_deliverObj.phone = btn->property(PROPERTY_PHONE).toString();
}else if(m_formType == 1)
{
m_cashierObj.id = btn->property(PROPERTY_ID).toString();
m_cashierObj.name = btn->property(PROPERTY_NAME).toString();
m_cashierObj.shiftId = btn->property(PROPERTY_SHIFTID).toString();
m_cashierObj.shiftName = btn->property(PROPERTY_SHIFTNAME).toString();
}
ui->pickBtnOk->setEnabled(true);
}else
{
ui->pickBtnOk->setEnabled(false);
}
}
void PickForm::on_pickBtnOk_clicked()
{
if(m_formType == 0)
{
emit processOrder(OPERATION_CONFRIM, m_orderId, m_deliverObj);
}else if(m_formType == 1)
{
emit updateCashier(m_cashierObj);
}
hide();
}
#ifndef PICKFORM_H
#define PICKFORM_H
#include <QDialog>
#include "Model/deliverObject.h"
#include "Model/cashierObject.h"
namespace Ui {
class PickForm;
}
class PickForm : public QDialog
{
Q_OBJECT
public:
explicit PickForm(QWidget *parent = 0);
~PickForm();
/* 功能:设置配送员信息
* 参数:[1]订单编号[2]配送员信息
* 返回:NULL
* */
void SetDeliversInfo(const QString& orderId, const QList<DeliverObject>& delivers);
/* 功能:设置收银员信息
* 参数:[1]收银员信息
* 返回:NULL
* */
void SetCashiersInfo(const QList<CashierObject>& cashiers);
private:
Ui::PickForm *ui;
// 对应的订单编号
QString m_orderId;
// 记录该窗口的类型[0配送员选取][1收银员选取]
int m_formType;
// 记录窗口的按钮指针
QList<QPushButton*> m_numBtnList;
// 记录选取的配送员信息
DeliverObject m_deliverObj;
// 记录选取的收银员信息
CashierObject m_cashierObj;
// 记录上次选中的按钮
QPushButton *m_prevBtn;
/* 功能:初始化
* 参数:NULL
* 返回:NULL
* */
void _Init();
/* 功能:初始化按钮
* 参数:NULL
* 返回:NULL
* */
void _InitBtn();
private slots:
/* 功能:处理数字按钮点击
* 参数:NULL
* 返回:NULL
* */
void onNumBtnToggled(bool bChecked);
/* 功能:处理确定点击
* 参数:NULL
* 返回:NULL
* */
void on_pickBtnOk_clicked();
signals:
/* 功能:处理订单
* 参数:[1]操作动作名[2]订单编号[3]配送员信息
* 返回:NULL
* */
void processOrder(const QString& operation, const QString& orderId, const DeliverObject& deliverObj);
/* 功能:更新收银员信息
* 参数:[1]收银员信息
* 返回:NULL
* */
void updateCashier(const CashierObject& cashierObj);
};
#endif // PICKFORM_H
#ifndef PREDEFINE_H
#define PREDEFINE_H
#include <QDebug>
#define APP_THEME "deaufult"
#define APP_VERSION "1.20160802.01"
......@@ -25,6 +27,8 @@
#define JSON_STATIONID "station_id"
#define JSON_OPERATORID "operator_id"
#define JSON_STATUSCODE "statusCode"
#define JSON_STATUS "status"
#define JSON_STATUSDESC "status_desc"
#define JSON_MESSAGE "msg"
#define JSON_TIMESTAMPS "timestamp"
#define JSON_AUTOCONFIRM "autoconfirm"
......@@ -33,8 +37,34 @@
#define JSON_ORDERS "orders"
#define JSON_PRODUCTS "products"
#define JSON_ORDERID "order_id"
#define JSON_REASON "reason"
#define JSON_REASONCODE "reason_code"
#define JSON_SYNCTIME "sync_time"
#define JSON_STOREID "store_id"
#define JSON_CHANNEL "channel"
#define JSON_DELIVERS "deliverymans"
#define JSON_DELIVERYID "deliveryman_id"
#define JSON_DELIVERYNAME "deliveryman_name"
#define JSON_DELIVERYPHONE "deliveryman_phone"
#define JSON_ORDER "order"
// 订单的操作名称
#define OPERATION_GETDELIVERS "getDelivers"
#define OPERATION_CONFRIM "confirm"
#define OPERATION_REFUSE "refuse"
#define OPERATION_SENDOUT "sendOut"
#define OPERATION_COMPLETE "complete"
#define OPERATION_REFUND "refund"
#define OPERATION_REFUSEREFUND "refuseRefund"
// 属性名称
#define PROPERTY_ID "id" // 人员编号
#define PROPERTY_NAME "name" // 人员姓名
#define PROPERTY_PHONE "phone" // 人员电话
#define PROPERTY_SHIFTID "shiftId" // 班次编号
#define PROPERTY_SHIFTNAME "shiftName" // 班次名称
// 服务器返回正确值
#define JSON_STATUSCODE_OK 100
// 默认拉取订单的间隔时间
#define VALUE_PULLSYNCTIME 10000
......@@ -42,5 +72,7 @@
#define VALUE_NETTIMEOUT 10000
// 默认重新尝试登录的时间
#define VALUE_RELOGINTIME 20000
// 拒绝退款理由
#define VALUE_REFUSEREFUND_REASON "拒绝退款"
#endif // PREDEFINE_H
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment