Commit 90269f09 by NitefllWind

新增代金券界面“向上”“向下”功能。

parent a605691c
......@@ -3,6 +3,7 @@
#include "fmcouponwidget.h"
#include "ui_fmviporder.h"
#include <QDebug>
#include <QScrollBar>
FMVipOrder::FMVipOrder(QDialog *parent) :
FMVipWnd(parent),
......@@ -20,6 +21,7 @@ FMVipOrder::FMVipOrder(QDialog *parent) :
double standard_amount = FMVipForward::instance()->sessionDataInt("standard_amount") / 100.0;
orderInfo = new FMVipOrder::OrderInfo(amount_str, score_str, needPay_str);
orderInfo->setCouponMap(FMVipForward::instance()->sessionCouponMap());
ui->operator_label->setText(operator_id);
ui->bd_label->setText(business_date);
......@@ -29,20 +31,7 @@ FMVipOrder::FMVipOrder(QDialog *parent) :
ui->price_label->setText(orderInfo->getNeedPayStr());
ui->name_label->setText(name);
orderInfo->couponMap = FMVipForward::instance()->sessionCouponMap();
for(Coupon coupon : orderInfo->couponMap.values())
{
auto item = new QListWidgetItem();
item->setData(Qt::UserRole, coupon.code);
ui->coupon_page->addItem(item);
ui->coupon_page->update();
FMCouponWidget *itemWidget = new FMCouponWidget(coupon);
ui->coupon_page->setItemWidget(item, itemWidget);
qDebug() << ui->coupon_page->itemWidget(item) << "=======";
//item大小
item->setSizeHint (itemWidget->size());
}
initCouponItems();
connect(ui->coupon_page, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(onItemClicked(QListWidgetItem*)));
ui->pay_chk->setText(QString("使用积分最多抵扣 %1 元").arg(orderInfo->getScoreAmount()));
......@@ -89,18 +78,43 @@ void FMVipOrder::onItemClicked(QListWidgetItem *item)
{
QString code = item->data(Qt::UserRole).toString();
// 选中代金券
if (item->isSelected()) {
// 如果代金券已被选中则取消,否则选中
if(orderInfo->selectCouponMap.contains(code)) {
ui->coupon_page->itemWidget(item)->setStyleSheet("#FMCouponWidget{background-color: rgb(255, 255, 255); border: none; border-left: 5 solid rgb(255, 170, 37);}");
orderInfo->selectCouponMap.remove(code);
}else{
ui->coupon_page->itemWidget(item)->setStyleSheet("#FMCouponWidget{background-color: rgb(255, 255, 255); border: none; border-image: url(:/coupon_select.png);}");
orderInfo->selectCouponMap[code] = orderInfo->couponMap[code];
orderInfo->selectCouponMap[code] = orderInfo->couponMap()[code];
if(orderInfo->enoughCoupon())
{
FMMsgWnd::WarningWnd("请注意代金券总额已超过待付金额!");
}
}
// 取消代金券
else {
ui->coupon_page->itemWidget(item)->setStyleSheet("#FMCouponWidget{background-color: rgb(255, 255, 255); border: none; border-left: 5 solid rgb(255, 170, 37);}");
orderInfo->selectCouponMap.remove(code);
}
void FMVipOrder::initCouponItems()
{
for(Coupon coupon : orderInfo->couponMap().values())
{
auto item = new QListWidgetItem();
item->setData(Qt::UserRole, coupon.code);
ui->coupon_page->addItem(item);
ui->coupon_page->update();
auto itemWidget = new FMCouponWidget(coupon);
ui->coupon_page->setItemWidget(item, itemWidget);
//item大小
item->setSizeHint (itemWidget->size());
}
}
void FMVipOrder::on_coupon_prev_btn_clicked()
{
int pos = ui->coupon_page->verticalScrollBar()->value();
ui->coupon_page->verticalScrollBar()->setValue(pos - 125);
}
void FMVipOrder::on_coupon_next_btn_clicked()
{
int pos = ui->coupon_page->verticalScrollBar()->value();
ui->coupon_page->verticalScrollBar()->setValue(pos + 125);
}
......@@ -25,6 +25,11 @@ public slots:
void onItemClicked(QListWidgetItem*);
private slots:
void on_coupon_prev_btn_clicked();
void on_coupon_next_btn_clicked();
private:
enum DataIndex
{
......@@ -84,19 +89,65 @@ private:
bool isEnough = (coupon_amount > _needPay);
return isEnough;
}
public:
QMap<QString, Coupon> couponMap;
QMap<QString, Coupon> selectCouponMap;
/// 代金券列表
void setCouponMap(QMap<QString, Coupon> couponMap)
{
this->_couponMap = couponMap;
_maxPage = (couponMap.count() - 1) / 6 + 1 ;
_nowPage = -1;
}
QMap<QString, Coupon> couponMap()
{
return _couponMap;
}
#if 0
// 取得一个coupon map。默认为下一页
QMap<QString, Coupon> getShowCouponMap(bool isNextPage = true)
{
if(isNextPage && _nowPage < _maxPage) {
_nowPage ++;
} else if(!isNextPage && _nowPage > 0) {
_nowPage --;
}
int begin = _nowPage * 6;
auto keys = _couponMap.keys();
keys = keys.mid(begin, 6);
QMap<QString, Coupon> showCouponMap;
for(auto key : keys)
{
showCouponMap[key] = _couponMap[key];
}
return showCouponMap;
}
int maxPage()
{
return _maxPage + 1;
}
int nowPage()
{
return _nowPage + 1;
}
#endif
QMap<QString, Coupon> selectCouponMap;
private:
QString _amountStr, _scoreStr, _needPayStr;
double _amount, _score, _needPay;
QMap<QString, Coupon> _couponMap;
int _maxPage, _nowPage;
};
private:
Ui::FMVipOrder *ui;
FMVipOrder::OrderInfo *orderInfo;
void initCouponItems();
};
#endif // FMVIPORDER_H
......@@ -102,7 +102,7 @@
max-height: 250px;
border: 1 solid silver;
border-top: 0 solid silver;
background: rgb(248,239,222);
background: rgb(223, 224, 223);
}
#coupon_desc_label {
background: white;
......@@ -113,7 +113,7 @@
}
#coupon_page{
background: rgb(246,246,246);
background: rgb(223, 224, 223);
border: 1 solid white;
border-right: 1 solid silver;
border-bottom: 1 solid silver;
......@@ -127,7 +127,7 @@
}
#position_label {
font: 400 16px &quot;Microsoft YaHei&quot;;
min-height: 80px;
min-height: 50px;
}
#coupon_prev_btn, #coupon_next_btn {
font: 400 16px &quot;Microsoft YaHei&quot;;
......@@ -141,6 +141,14 @@
background: rgb(154,200,50);
color: white;
}
#coupon_prev_btn
{
margin-top: 50px;
}
#coupon_next_btn
{
margin-bottom: 50px;
}
/*
* 支付
......@@ -533,14 +541,23 @@
<property name="lineWidth">
<number>0</number>
</property>
<property name="verticalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="autoScroll">
<bool>true</bool>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::MultiSelection</enum>
</property>
<property name="verticalScrollMode">
<enum>QAbstractItemView::ScrollPerPixel</enum>
<enum>QAbstractItemView::ScrollPerItem</enum>
</property>
<property name="horizontalScrollMode">
<enum>QAbstractItemView::ScrollPerPixel</enum>
<enum>QAbstractItemView::ScrollPerItem</enum>
</property>
<property name="movement">
<enum>QListView::Static</enum>
......@@ -563,6 +580,9 @@
<property name="uniformItemSizes">
<bool>true</bool>
</property>
<property name="currentRow">
<number>-1</number>
</property>
<property name="widgetResizable" stdset="0">
<bool>true</bool>
</property>
......@@ -570,6 +590,43 @@
</item>
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="pageCtrlLayLayout">
<item>
<widget class="QPushButton" name="coupon_prev_btn">
<property name="cursor">
<cursorShape>PointingHandCursor</cursorShape>
</property>
<property name="text">
<string>向上</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="position_label">
<property name="text">
<string/>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="coupon_next_btn">
<property name="cursor">
<cursorShape>PointingHandCursor</cursorShape>
</property>
<property name="mouseTracking">
<bool>false</bool>
</property>
<property name="text">
<string>向下</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
......
#include "fmviporder.h"
#include "fmvipfund.h"
#include "fmsockserver.h"
#include "fmvipdispatcher.h"
#include <QApplication>
#include <QFile>
#include <QTextStream>
#include <QtDebug>
#include <QDateTime>
bool checkOnly()
......
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