mirror of
https://gitee.com/js-yhsec/energy_storage.git
synced 2026-05-28 03:09:24 +08:00
实现系统管理表格操作接口、分页操作
This commit is contained in:
@@ -4,9 +4,9 @@
|
||||
|
||||
static int CreatePanel(PARAM* p, int parentId, int x, int y, int w, int h, std::string title)
|
||||
{
|
||||
int id = PvApp::label(p, parentId, x, y, w, h, "", QSS_LABEL_BKG_2);
|
||||
PvApp::label(p, id, 10, 10, w, 20, title, STYLE_TITLE_ICON);
|
||||
PvApp::label(p, id, 20, 30, w, 2, "", QSS_UNDERLINE);
|
||||
int id = PvApp::label(p, parentId, x, y, w, h, "", qss::LABEL_BKG_2);
|
||||
PvApp::label(p, id, 10, 10, w, 20, title, qss::STYLE_TITLE_ICON);
|
||||
PvApp::label(p, id, 20, 30, w, 2, "", qss::QSS_UNDERLINE);
|
||||
return id;
|
||||
}
|
||||
|
||||
|
||||
@@ -8,23 +8,23 @@
|
||||
|
||||
static int CreatePanel(PARAM* p, int parent, int x, int y, int w, int h, std::string title)
|
||||
{
|
||||
int panelId = PvApp::label(p, parent, x, y, w, h, "", QSS_LABEL_BKG_1);
|
||||
int titleId = PvApp::label(p, panelId, 10, 8, w, 22, title, STYLE_TITLE_ICON);
|
||||
PvApp::label(p, panelId, 20, 28, w, 2, "", QSS_UNDERLINE);
|
||||
int panelId = PvApp::label(p, parent, x, y, w, h, "", qss::LABEL_BKG_1);
|
||||
int titleId = PvApp::label(p, panelId, 10, 8, w, 22, title, qss::STYLE_TITLE_ICON);
|
||||
PvApp::label(p, panelId, 20, 28, w, 2, "", qss::QSS_UNDERLINE);
|
||||
return panelId;
|
||||
}
|
||||
|
||||
static int CreatePanel1(PARAM* p, int parent, int x, int y, int w, int h, std::string title)
|
||||
{
|
||||
int panelId = PvApp::label(p, parent, x, y, w, h, "", "border: none; background-color: transparent;");
|
||||
int panelId = PvApp::label(p, parent, x, y, w, h, "");
|
||||
PvApp::image(p, panelId, 0, 13, 500, 17, "bkgBox.png");
|
||||
PvApp::label(p, panelId, 20, 0, w-20, 30, title, "background-color: transparent; font: bold 18px;");
|
||||
PvApp::label(p, panelId, 20, 0, w-20, 30, title);
|
||||
return panelId;
|
||||
}
|
||||
|
||||
static int CreateCard1(PARAM* p, int parentId, int x, int y, int w, int h, std::string title, std::string val)
|
||||
{
|
||||
int id = PvApp::label(p, parentId, x, y, w, h, "", QSS_LABEL_BKG_1);
|
||||
int id = PvApp::label(p, parentId, x, y, w, h, "", qss::LABEL_BKG_1);
|
||||
int idTitle = PvApp::label(p, id, 0, h*0.5, w, h*0.5, title, "background:transparent; font: bold 28px;");
|
||||
int idVal = PvApp::label(p, id, 0, 0, w, h*0.5, val, "background:transparent; font: bold 28px; color:rgb(77,215,240);");
|
||||
pvSetAlignment(p, idTitle, AlignCenter);
|
||||
@@ -34,9 +34,9 @@ static int CreateCard1(PARAM* p, int parentId, int x, int y, int w, int h, std::
|
||||
|
||||
static int CreateCard2(PARAM* p, int parent, int x, int y, int w, int h, std::string title, std::string val)
|
||||
{
|
||||
int id = PvApp::label(p, parent, x, y, w, h, "", QSS_LABEL_BKG_1);
|
||||
int id = PvApp::label(p, parent, x, y, w, h, "", qss::LABEL_BKG_1);
|
||||
|
||||
int idTitle = PvApp::label(p, id, 0, 0, w, h*0.5, title, "background:transparent; font: bold 16px;");
|
||||
int idTitle = PvApp::label(p, id, 0, 0, w, h*0.5, title);
|
||||
int idVal = PvApp::label(p, id, 0, h*0.5, w, h*0.5, val, "background:transparent; font: bold 16px; color:rgb(77,215,240);");
|
||||
pvSetAlignment(p, idTitle, AlignCenter);
|
||||
pvSetAlignment(p, idVal, AlignCenter);
|
||||
@@ -54,8 +54,9 @@ static int CreateBox(PARAM* p, int parent, int x, int y, int w, int h, std::stri
|
||||
PvApp::label(p, id, w-len, h-len, len, len, "", qss + "border-width: 0 2px 2px 0");
|
||||
PvApp::label(p, id, 0, h-len, len, len, "", qss + "border-width: 0 0 2px 2px");
|
||||
}
|
||||
int titleId = PvApp::label(p, id, 0, 0, w, h*0.5, k, "border:none; background-color: transparent; font: bold 14px; padding-bottom: 0px;");
|
||||
int valId = PvApp::label(p, id, 0, h*0.5, w, h*0.5, val, "border:none; background-color: transparent; font: bold 16px; color:rgb(77, 215, 240);");
|
||||
// "border:none; background-color: transparent; font: bold 14px; padding-bottom: 0px;"
|
||||
int titleId = PvApp::label(p, id, 0, 0, w, h*0.5-2, k);
|
||||
int valId = PvApp::label(p, id, 0, h*0.5+2, w, h*0.5-2, val, qss::label(16, "rgb(77, 215, 240)"));
|
||||
pvSetAlignment(p, titleId, AlignHCenter | AlignBottom);
|
||||
pvSetAlignment(p, valId, AlignHCenter | AlignTop);
|
||||
return valId;
|
||||
@@ -167,7 +168,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
void setTitle(std::string title)
|
||||
void setStatus(std::string title)
|
||||
{
|
||||
pvSetText(p, labelTitle, title.c_str());
|
||||
}
|
||||
@@ -265,7 +266,7 @@ int MaskPageHome::initUI(EPvCode pvcode)
|
||||
|
||||
// 中间区域
|
||||
{
|
||||
int panel = PvApp::label(p, 0, x = 10+500+10, y, w = 880, h1+h2+h3+20, "", QSS_LABEL_BKG_1);
|
||||
int panel = PvApp::label(p, 0, x = 10+500+10, y, w = 880, h1+h2+h3+20, "", qss::LABEL_BKG_1);
|
||||
|
||||
////// 饼图
|
||||
//int left = PvApp::widget(p, panel, 100, 100, 100, 100);
|
||||
@@ -287,9 +288,9 @@ int MaskPageHome::initUI(EPvCode pvcode)
|
||||
|
||||
auto popStation = new PopStation(p);
|
||||
popStation->show(0);
|
||||
int btn = PvApp::button(p, panel, 10, 20, 100, 30, "场站一", STYLE_BTN);
|
||||
int btn = PvApp::button(p, panel, 10, 20, 100, 30, "场站一", qss::BTN);
|
||||
PvApp::bind(p, PvEvent::BUTTON_EVENT, btn, [=](std::string) {
|
||||
popStation->setTitle("场站一");
|
||||
popStation->setStatus("场站一");
|
||||
pvShow(p, popStation->widget);
|
||||
});
|
||||
|
||||
@@ -301,12 +302,16 @@ int MaskPageHome::initUI(EPvCode pvcode)
|
||||
}
|
||||
|
||||
this->updateUI();
|
||||
|
||||
|
||||
auto pagination = new PvPagination(p, 0, 600, 160, 20);
|
||||
pagination->setPage(5, 10);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void MaskPageHome::updateUI()
|
||||
{
|
||||
auto& appdata = Application::instance().getAppData();
|
||||
auto& appdata = Application::data();
|
||||
|
||||
int stationNum = appdata.mapStation.size(); // 场站数量
|
||||
double energyCapacity {}; // 储能容量
|
||||
|
||||
@@ -1,18 +1,11 @@
|
||||
#include "MaskPageRunning.h"
|
||||
#include "app/Application.h"
|
||||
|
||||
static std::string QSS_CARD_DEVICE =
|
||||
"QLabel { background-color:rgb(8, 54, 91); border:0px solid rgb(120, 120, 120); border-radius:5px; font:bold 14px; color:white; }"
|
||||
"QLabel:hover {border: 2px solid rgb(79, 129, 255); border-radius:2px;}"
|
||||
"QLabel:disabled { color:rgb(150,150,150);}";
|
||||
|
||||
static std::string QSS_PARAM_K = "border:none; background-color: transparent; color: rgb(180,180,180); font: bold 13px;";
|
||||
static std::string QSS_PARAM_V = "border:none; background-color: transparent; color: white; font: bold 14px;";
|
||||
|
||||
static int CreateParamLabel(PARAM* p, int parent, int x, int y, std::string k, std::string v)
|
||||
{
|
||||
PvApp::label(p, parent, x, y, 70, 30, k, QSS_PARAM_K);
|
||||
return PvApp::label(p, parent, x += 70, y, 120, 30, v, QSS_PARAM_V);
|
||||
PvApp::label(p, parent, x, y, 70, 30, k, qss::LABEL_KEY);
|
||||
return PvApp::label(p, parent, x += 70, y, 120, 30, v, qss::LABEL_VAL);
|
||||
}
|
||||
|
||||
class BoxCard : PvObject
|
||||
@@ -25,25 +18,25 @@ public:
|
||||
|
||||
BoxCard(PARAM* p, int parent, int x, int y) : PvObject(p)
|
||||
{
|
||||
card_ = PvApp::label(p, parent, x, y, 400, 250, "", QSS_CARD_DEVICE);
|
||||
card_ = PvApp::label(p, parent, x, y, 400, 250, "", qss::QSS_CARD_DEVICE);
|
||||
|
||||
PvApp::label(p, card_, 10, 10, 60, 60, "", "border:none; background-color: rgb(39, 158, 145);");
|
||||
ui.code = PvApp::label(p, card_, 80, 10, 100, 20, "", "border:none; background-color: transparent;");
|
||||
ui.name = PvApp::label(p, card_, 80, 30, 100, 20, "", "border:none; background-color: transparent;");
|
||||
ui.type = PvApp::label(p, card_, 80, 50, 100, 20, "", "border:none; background-color: transparent; color: rgb(8, 161, 249);");
|
||||
ui.code = PvApp::label(p, card_, 80, 10, 100, 20, "");
|
||||
ui.name = PvApp::label(p, card_, 80, 30, 100, 20, "");
|
||||
ui.type = PvApp::label(p, card_, 80, 50, 100, 20, "", qss::label(14, "rgb(8, 161, 249)"));
|
||||
|
||||
int x1 = 190;
|
||||
ui.online = PvApp::labelAlignCenter(p, card_, x1, 10, 70, 30, "在线", QSS_PARAM_V);
|
||||
ui.running = PvApp::labelAlignCenter(p, card_, x1 += 70, 10, 70, 30, "空闲", QSS_PARAM_V);
|
||||
ui.err = PvApp::labelAlignCenter(p, card_, x1 += 70, 10, 70, 30, "正常", QSS_PARAM_V);
|
||||
ui.online = PvApp::labelAlignCenter(p, card_, x1, 10, 70, 30, "在线", qss::LABEL_VAL);
|
||||
ui.running = PvApp::labelAlignCenter(p, card_, x1 += 70, 10, 70, 30, "空闲", qss::LABEL_VAL);
|
||||
ui.err = PvApp::labelAlignCenter(p, card_, x1 += 70, 10, 70, 30, "正常", qss::LABEL_VAL);
|
||||
|
||||
PvApp::labelAlignCenter(p, card_, x1 = 190, 40, 70, 30, "在线状态", QSS_PARAM_K);
|
||||
PvApp::labelAlignCenter(p, card_, x1 += 70, 40, 70, 30, "工作状态", QSS_PARAM_K);
|
||||
PvApp::labelAlignCenter(p, card_, x1 += 70, 40, 70, 30, "故障状态", QSS_PARAM_K);
|
||||
PvApp::labelAlignCenter(p, card_, x1 = 190, 40, 70, 30, "在线状态", qss::LABEL_KEY);
|
||||
PvApp::labelAlignCenter(p, card_, x1 += 70, 40, 70, 30, "工作状态", qss::LABEL_KEY);
|
||||
PvApp::labelAlignCenter(p, card_, x1 += 70, 40, 70, 30, "故障状态", qss::LABEL_KEY);
|
||||
|
||||
|
||||
PvApp::label(p, card_, 10, 80, 80, 30, "运行分析:", QSS_PARAM_K);
|
||||
PvApp::button(p, card_, 80, 83, 60, 24, "查看", "border:none; border-radius: 5px; background-color: rgb(28, 145, 138); color:white; font: bold 14px;");
|
||||
PvApp::label(p, card_, 10, 80, 80, 30, "运行分析:", qss::LABEL_KEY);
|
||||
PvApp::button(p, card_, 80, 83, 60, 24, "查看");
|
||||
|
||||
// 默认创建 10 个参数标签:
|
||||
int n = 10;
|
||||
@@ -53,8 +46,8 @@ public:
|
||||
int row = i/2;
|
||||
int col = i%2;
|
||||
int h = 25;
|
||||
vecParamLabel_[i].first = PvApp::label(p, card_, 10 + 200*col, 115 + h*row, 70, h, "参数"+std::to_string(i) + ":", QSS_PARAM_K);
|
||||
vecParamLabel_[i].second = PvApp::label(p, card_, 10 + 200*col + 70, 115 + h*row, 120, h, "---", QSS_PARAM_V);
|
||||
vecParamLabel_[i].first = PvApp::label(p, card_, 10 + 200*col, 115 + h*row, 70, h, "参数"+std::to_string(i) + ":", qss::LABEL_KEY);
|
||||
vecParamLabel_[i].second = PvApp::label(p, card_, 10 + 200*col + 70, 115 + h*row, 120, h, "---", qss::LABEL_VAL);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -117,13 +110,12 @@ int MaskPageRunning::initUI(EPvCode pvcode)
|
||||
PvApp::label(p, 0, 10, 150, 220, 790, "", "background-color: rgb(8, 54, 91); border-radius: 10px;");
|
||||
int workspace = PvApp::label(p, 0, 240, 150, 1670, 790, "", "background-color: rgba(8, 54, 91, 0); border-radius: 10px;");
|
||||
|
||||
std::vector<std::string> vecStationNames;
|
||||
Application::instance().getAppData().getStationNames(vecStationNames);
|
||||
std::vector<std::string> vecStationNames = Application::data().getStationNames();
|
||||
PvApp::label(p, 0, 20, 110, 80, 30, "场站切换", "color:white; font: bold 16px;");
|
||||
PvApp::combox(p, 0, 100, 110, 150, 30, vecStationNames);
|
||||
if (vecStationNames.size() > 0)
|
||||
{
|
||||
station_ = Application::instance().getAppData().getStationByName(vecStationNames[0]);
|
||||
station_ = Application::data().getStationByName(vecStationNames[0]);
|
||||
}
|
||||
|
||||
PvApp::label(p, 0, 320, 110, 80, 30, "运行模式", "color:white; font: bold 16px;");
|
||||
@@ -136,8 +128,8 @@ int MaskPageRunning::initUI(EPvCode pvcode)
|
||||
// 储能设备
|
||||
{
|
||||
ui.storage.name = "储能设备";
|
||||
int pid = ui.storage.box = PvApp::label(p, 0, x, y, w, h, "", QSS_BOX);
|
||||
PvApp::label(p, pid, 10, 0, w-10, 30, ui.storage.name, QSS_TITLE);
|
||||
int pid = ui.storage.box = PvApp::label(p, 0, x, y, w, h, "", qss::LABEL_BOX);
|
||||
PvApp::label(p, pid, 10, 0, w-10, 30, ui.storage.name, qss::LABEL_TITLE);
|
||||
|
||||
ui.storage.btn = PvApp::button(p, pid, 0, 0, w, h, "", "background-color: transparent;");
|
||||
ui.storage.workspace = PvApp::widget(p, workspace, 0, 0, 1670, 790);
|
||||
@@ -156,8 +148,8 @@ int MaskPageRunning::initUI(EPvCode pvcode)
|
||||
// 光伏设备
|
||||
{
|
||||
ui.solar.name = "光伏设备";
|
||||
int pid = ui.solar.box = PvApp::label(p, 0, x, y += (h+10), w, h, "", QSS_BOX);
|
||||
PvApp::label(p, pid, 10, 0, w-10, 30, ui.solar.name, QSS_TITLE);
|
||||
int pid = ui.solar.box = PvApp::label(p, 0, x, y += (h+10), w, h, "", qss::LABEL_BOX);
|
||||
PvApp::label(p, pid, 10, 0, w-10, 30, ui.solar.name, qss::LABEL_TITLE);
|
||||
|
||||
ui.solar.btn = PvApp::button(p, pid, 0, 0, w, h, "", "background-color: transparent;");
|
||||
ui.solar.workspace = ui.storage.workspace;
|
||||
@@ -166,8 +158,8 @@ int MaskPageRunning::initUI(EPvCode pvcode)
|
||||
// 充电设备
|
||||
{
|
||||
ui.charge.name = "充电设备";
|
||||
int pid = ui.charge.box = PvApp::label(p, 0, x, y += (h+10), w, h, "", QSS_BOX);
|
||||
PvApp::label(p, pid, 10, 0, w-10, 30, ui.solar.name, QSS_TITLE);
|
||||
int pid = ui.charge.box = PvApp::label(p, 0, x, y += (h+10), w, h, "", qss::LABEL_BOX);
|
||||
PvApp::label(p, pid, 10, 0, w-10, 30, ui.solar.name, qss::LABEL_TITLE);
|
||||
|
||||
ui.charge.btn = PvApp::button(p, pid, 0, 0, w, h, "", "background-color: transparent;");
|
||||
ui.charge.workspace = ui.storage.workspace;
|
||||
@@ -176,8 +168,8 @@ int MaskPageRunning::initUI(EPvCode pvcode)
|
||||
// 环境与安防设备
|
||||
{
|
||||
ui.security.name = "环境与安防设备";
|
||||
int pid = ui.security.box = PvApp::label(p, 0, x, y += (h+10), w, h, "", QSS_BOX);
|
||||
PvApp::label(p, pid, 10, 0, w-10, 30, ui.security.name, QSS_TITLE);
|
||||
int pid = ui.security.box = PvApp::label(p, 0, x, y += (h+10), w, h, "", qss::LABEL_BOX);
|
||||
PvApp::label(p, pid, 10, 0, w-10, 30, ui.security.name, qss::LABEL_TITLE);
|
||||
|
||||
ui.security.btn = PvApp::button(p, pid, 0, 0, w, h, "", "background-color: transparent;");
|
||||
ui.security.workspace = PvApp::widget(p, workspace, 0, 0, 1670, 790);
|
||||
@@ -222,8 +214,8 @@ void MaskPageRunning::activeBoxPanel(BoxPanel& panel)
|
||||
{
|
||||
static int activeBox = PV_ID_NUL;
|
||||
static int activeWorkspace = PV_ID_NUL;
|
||||
if (activeBox != PV_ID_NUL) { pvSetStyleSheet(p, activeBox, QSS_BOX.c_str()); }
|
||||
if (activeBox = panel.box) { pvSetStyleSheet(p, activeBox, QSS_BOX_ACTIVE.c_str()); }
|
||||
if (activeBox != PV_ID_NUL) { pvSetStyleSheet(p, activeBox, qss::LABEL_BOX.c_str()); }
|
||||
if (activeBox = panel.box) { pvSetStyleSheet(p, activeBox, qss::QSS_BOX_ACTIVE.c_str()); }
|
||||
|
||||
if (activeWorkspace != PV_ID_NUL) { pvHide(p, activeWorkspace); }
|
||||
if (activeWorkspace = panel.workspace) { pvShow(p, activeWorkspace); }
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
|
||||
static int CreatePanel(PARAM* p, int parentId, int x, int y, int w, int h, std::string title)
|
||||
{
|
||||
int id = PvApp::label(p, parentId, x, y, w, h, "", QSS_LABEL_BKG_2);
|
||||
PvApp::label(p, id, 10, 10, w, 20, title, STYLE_TITLE_ICON);
|
||||
PvApp::label(p, id, 20, 30, w, 2, "", QSS_UNDERLINE);
|
||||
int id = PvApp::label(p, parentId, x, y, w, h, "", qss::LABEL_BKG_2);
|
||||
PvApp::label(p, id, 10, 10, w, 20, title, qss::STYLE_TITLE_ICON);
|
||||
PvApp::label(p, id, 20, 30, w, 2, "", qss::QSS_UNDERLINE);
|
||||
return id;
|
||||
}
|
||||
|
||||
@@ -52,7 +52,7 @@ static VecStatDef statDef = {
|
||||
|
||||
int MaskPageStat::initUI(EPvCode pvcode)
|
||||
{
|
||||
PvApp::label(p, PV_ID_MAIN, 10, 100, 1900, 850, "", QSS_LABEL_BKG_1);
|
||||
PvApp::label(p, PV_ID_MAIN, 10, 100, 1900, 850, "", qss::LABEL_BKG_1);
|
||||
|
||||
if (pvcode == EPvCode::MASK_STAT) { pvcode = EPvCode::MASK_STAT_STORAGE; }
|
||||
std::string curModuleName;
|
||||
@@ -63,7 +63,7 @@ int MaskPageStat::initUI(EPvCode pvcode)
|
||||
std::string moduleName = statDef[i].first;
|
||||
// 创建按钮
|
||||
bool isActive = (PvApp::getPvCode(moduleName) == pvcode);
|
||||
int pageBtn = PvApp::button(p, PV_ID_MAIN, 10+(i*190), 110, 180, 40, moduleName, isActive ? QSS_BTN_MGR_ACTIVE : QSS_BTN_MGR);
|
||||
int pageBtn = PvApp::button(p, PV_ID_MAIN, 10+(i*190), 110, 180, 40, moduleName, isActive ? qss::QSS_BTN_MGR_ACTIVE : qss::QSS_BTN_MGR);
|
||||
mapSubpage_[pageBtn] = moduleName;
|
||||
if (isActive)
|
||||
{
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
#include "MaskPageSysmgr.h"
|
||||
#include "pv/PvTable.h"
|
||||
|
||||
#include <thread>
|
||||
#include "database/Dao.h"
|
||||
#include "common/Snowflake.h"
|
||||
#include "pv/PvTable.h"
|
||||
#include "pv/PvPopWidget.h"
|
||||
#include "database/Dao.h"
|
||||
#include "app/Application.h"
|
||||
#include "PageSysmgrPop.h"
|
||||
|
||||
static void createPvTable(PARAM* p)
|
||||
{
|
||||
@@ -69,236 +73,13 @@ static void createPvTable(PARAM* p)
|
||||
}
|
||||
|
||||
|
||||
class PageTable : public PvMask
|
||||
{
|
||||
public:
|
||||
PageTable(PARAM* p) : PvMask(p)
|
||||
{
|
||||
table = std::make_shared<PvTable>(p, 0, 10, 160, 1900, 20, option);
|
||||
table->setOperateCallback([=](int row, int col, std::string text) { this->onCallbackOperate(row, col, text); });
|
||||
};
|
||||
|
||||
void setPage(int pageIndex, int pageSize, int count) {}
|
||||
|
||||
void updateDataFromDB()
|
||||
{
|
||||
std::vector<DataFields> result;
|
||||
PageInfo pageInfo;
|
||||
this->queryTable(pageInfo, result);
|
||||
for (int i = 0; i<table->rows(); ++i)
|
||||
{
|
||||
if (i<result.size())
|
||||
{
|
||||
auto& fields = result[i];
|
||||
table->setRowData(i, result[i]);
|
||||
}
|
||||
else
|
||||
{
|
||||
table->setRowVisible(i, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
virtual void queryTable(PageInfo& pageInfo, std::vector<DataFields>& result) {}
|
||||
virtual void onCallbackOperate(int row, int col, std::string text) {};
|
||||
|
||||
int pageIndex {0};
|
||||
PvTable::Options option;
|
||||
std::shared_ptr<PvTable> table;
|
||||
std::shared_ptr<PvPopWidget> pop;
|
||||
};
|
||||
|
||||
class PageUser : public PageTable
|
||||
{
|
||||
public:
|
||||
PageUser(PARAM* p, EPvCode pvcode) :PageTable(p)
|
||||
{
|
||||
table->addHead(DMUser::USER_ID, "用户编号", 180, {});
|
||||
table->addHead(DMUser::ACCOUNT, "用户名", 180, {});
|
||||
table->addHead(DMUser::NAME, "姓名", 180, {});
|
||||
table->addHead(DMUser::GENDER, "性别", 180, {{"1", "男"}, {"0","女"}});
|
||||
table->addHead(DMUser::AGE, "年龄", 180, {});
|
||||
table->addHead(DMUser::PHONE, "手机号", 180, {});
|
||||
table->addHead(DMUser::EMAIL, "邮箱", 180, {});
|
||||
table->addHead("role_id", "角色", 180, {});
|
||||
table->addHead(DMUser::LOGINTIME, "上次登录时间", 200, {});
|
||||
table->addOperate({"编辑"});
|
||||
|
||||
pop = std::make_shared<PvPopWidget>(p, 700, 500);
|
||||
pop->show(0);
|
||||
pop->setCallbackConfirm([=]() {
|
||||
auto fields = pop->getData();
|
||||
XLOGD() << fields.toStr();
|
||||
// 保存数据:
|
||||
DAO::updateUserById(fields);
|
||||
});
|
||||
|
||||
int x = 50, y = 100, w=350, h=60;
|
||||
pop->addParamLineEdit(DMUser::USER_ID, "用户编号", x, y, false);
|
||||
pop->addParamCombox(DMRole::ROLE_ID, "角 色", x+w, y, {"系统管理员", "运营管理员", "运营人员"});
|
||||
pop->addParamLineEdit(DMUser::ACCOUNT, "用 户 名", x, y+=h);
|
||||
pop->addParamLineEdit(DMUser::NAME, "姓 名", x+w, y);
|
||||
pop->addParamLineEdit(DMUser::GENDER, "性 别", x, y+=h);
|
||||
pop->addParamLineEdit(DMUser::AGE, "年 龄", x+w, y);
|
||||
pop->addParamLineEdit(DMUser::PHONE, "手 机 号", x, y += h);
|
||||
pop->addParamLineEdit(DMUser::EMAIL, "邮 箱", x+w, y);
|
||||
}
|
||||
void queryTable(PageInfo& pageInfo, std::vector<DataFields>& result)
|
||||
{
|
||||
DAO::queryUserList(pageInfo, result);
|
||||
}
|
||||
void onCallbackOperate(int row, int col, std::string text)
|
||||
{
|
||||
if (text == "编辑")
|
||||
{
|
||||
pop->show(1);
|
||||
pop->setTitle("编辑用户信息");
|
||||
DataFields fields = table->getRowdata(row);
|
||||
pop->setData(fields);
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
class PageRole : public PageTable
|
||||
{
|
||||
public:
|
||||
PageRole(PARAM* p, EPvCode pvcode) : PageTable(p)
|
||||
{
|
||||
table->addHead(DMRole::ROLE_ID, "角色编号", 200, {});
|
||||
table->addHead(DMRole::NAME, "角色名称", 200, {});
|
||||
table->addHead(DMRole::DESCRIBE, "角色描述", 900, {});
|
||||
table->addHead(DMRole::IS_OPEN, "是否启用", 200, {{"1", "是"}, {"0", "否"}});
|
||||
table->addOperate({"编辑", "设置权限"});
|
||||
}
|
||||
void queryTable(PageInfo& pageInfo, std::vector<DataFields>& result)
|
||||
{
|
||||
DAO::queryRoleList(pageInfo, result);
|
||||
}
|
||||
};
|
||||
|
||||
class PagePermission : public PageTable
|
||||
{
|
||||
public:
|
||||
PagePermission(PARAM* p, EPvCode pvcode) : PageTable(p)
|
||||
{
|
||||
table->addHead(DMPermission::PERMISSION_ID,"权限编号", 200, {});
|
||||
table->addHead(DMPermission::NAME, "权限名称", 200, {});
|
||||
table->addHead(DMPermission::DESCRIBE, "权限描述", 900, {});
|
||||
table->addHead(DMPermission::IS_OPEN, "是否启用", 200, {{"1", "是"}, {"0", "否"}});
|
||||
table->addOperate({"查看"});
|
||||
}
|
||||
void queryTable(PageInfo& pageInfo, std::vector<DataFields>& result)
|
||||
{
|
||||
DAO::queryPermissionList(pageInfo, result);
|
||||
}
|
||||
};
|
||||
|
||||
class PageStation : public PageTable
|
||||
{
|
||||
public:
|
||||
PageStation(PARAM* p, EPvCode pvcode) : PageTable(p)
|
||||
{
|
||||
table->addHead(DMStation::STATION_ID, "场站编号", 200, {});
|
||||
table->addHead(DMStation::NAME, "场站名称", 200, {});
|
||||
table->addHead(DMStation::ADDRESS, "地址", 200, {});
|
||||
table->addHead(DMStation::LONGITUDE, "经度", 200, {});
|
||||
table->addHead(DMStation::LATITUDE, "维度", 200, {});
|
||||
table->addHead(DMStation::TEL, "电话", 200, {});
|
||||
table->addHead(DMStation::STATUS, "状态", 200, {{"0","未启用"}, {"1", "启用"}});
|
||||
table->addOperate({"查看", "编辑"});
|
||||
}
|
||||
void queryTable(PageInfo& pageInfo, std::vector<DataFields>& result)
|
||||
{
|
||||
DAO::queryStationList(pageInfo, result);
|
||||
}
|
||||
};
|
||||
|
||||
class PageDevice: public PageTable
|
||||
{
|
||||
public:
|
||||
PageDevice(PARAM* p, EPvCode pvcode) : PageTable(p)
|
||||
{
|
||||
table->addHead(DMDevice::DEVICE_ID, "设备编号", 120, {});
|
||||
table->addHead(DMDevice::TYPE, "设备类型", 120, {});
|
||||
table->addHead(DMDevice::NAME, "设备名称", 180, {});
|
||||
table->addHead(DMDevice::CODE, "设备编码", 160, {});
|
||||
table->addHead(DMDevice::MODEL, "设备型号", 160, {});
|
||||
table->addHead(DMDevice::FACTORY, "厂家", 160, {});
|
||||
table->addHead(DMDevice::TEL, "厂家电话", 160, {});
|
||||
table->addHead(DMDevice::ATTRS, "设备参数", 460, {});
|
||||
table->addHead(DMDevice::IS_OPEN, "是否启用", 120, {{"1", "是"}, {"0", "否"}});
|
||||
table->addOperate({"查看", "编辑"});
|
||||
}
|
||||
void queryTable(PageInfo& pageInfo, std::vector<DataFields>& result)
|
||||
{
|
||||
DAO::queryDeviceList(pageInfo, result);
|
||||
}
|
||||
};
|
||||
|
||||
class PagePolicy : public PageTable
|
||||
{
|
||||
public:
|
||||
PagePolicy(PARAM* p, EPvCode pvcode) : PageTable(p)
|
||||
{
|
||||
table->addHead(DMPolicy::POLICY_ID, "策略编号", 200, {});
|
||||
table->addHead(DMPolicy::TYPE, "策略类型", 200, {});
|
||||
table->addHead(DMPolicy::NAME, "策略名称", 200, {});
|
||||
table->addHead(DMPolicy::DESCRIBE, "策略描述", 400, {});
|
||||
table->addHead(DMPolicy::VALUE, "策略参数", 400, {});
|
||||
table->addHead(DMPolicy::IS_OPEN, "是否启用", 200, {{"1", "是"}, {"0", "否"}});
|
||||
table->addOperate({"查看", "编辑"});
|
||||
}
|
||||
void queryTable(PageInfo& pageInfo, std::vector<DataFields>& result)
|
||||
{
|
||||
DAO::queryPolicyList(pageInfo, result);
|
||||
}
|
||||
};
|
||||
|
||||
class PageSyslog : public PageTable
|
||||
{
|
||||
public:
|
||||
PageSyslog(PARAM* p, EPvCode pvcode) : PageTable(p)
|
||||
{
|
||||
table->addHead(DMSystemLog::LOG_ID, "日志编号", 160, {});
|
||||
table->addHead(DMSystemLog::TYPE, "日志类型", 160, {});
|
||||
table->addHead(DMSystemLog::USER_ACCOUNT, "用户", 160, {});
|
||||
table->addHead(DMSystemLog::CONTENT, "日志详情", 800, {});
|
||||
table->addHead(DMSystemLog::STATUS, "状态", 160, {});
|
||||
table->addHead(DMSystemLog::CREATE_TIME, "记录时间", 200, {});
|
||||
table->addOperate({"查看"});
|
||||
}
|
||||
void queryTable(PageInfo& pageInfo, std::vector<DataFields>& result)
|
||||
{
|
||||
DAO::querySystemLogList(pageInfo, result);
|
||||
}
|
||||
};
|
||||
|
||||
class PageAlertlog : public PageTable
|
||||
{
|
||||
public:
|
||||
PageAlertlog(PARAM* p, EPvCode pvcode) : PageTable(p)
|
||||
{
|
||||
table->addHead(DMAlertLog::LOG_ID, "日志编号", 160, {});
|
||||
table->addHead(DMAlertLog::TYPE, "日志类型", 160, {});
|
||||
table->addHead(DMAlertLog::DEVICE_ID, "设备ID", 160, {});
|
||||
table->addHead(DMAlertLog::CONTENT, "日志详情", 800, {});
|
||||
table->addHead(DMAlertLog::STATUS, "状态", 160, {});
|
||||
table->addHead(DMAlertLog::CREATE_TIME, "记录时间", 200, {});
|
||||
table->addOperate({"查看"});
|
||||
}
|
||||
void queryTable(PageInfo& pageInfo, std::vector<DataFields>& result)
|
||||
{
|
||||
//DAO::queryAlertLogList(pageInfo, result);
|
||||
}
|
||||
};
|
||||
|
||||
MaskPageSysmgr::MaskPageSysmgr(PARAM* p) : PvMask(p)
|
||||
{
|
||||
}
|
||||
|
||||
int MaskPageSysmgr::initUI(EPvCode pvcode)
|
||||
{
|
||||
PvApp::label(p, PV_ID_MAIN, 10, 100, 1900, 850, "", QSS_LABEL_BKG_1);
|
||||
PvApp::label(p, PV_ID_MAIN, 10, 150, 1900, 790, "", qss::LABEL_BKG_1);
|
||||
|
||||
if (pvcode == EPvCode::MASK_SYSMGR) { pvcode = EPvCode::MASK_MGR_USER; }
|
||||
|
||||
@@ -307,7 +88,7 @@ int MaskPageSysmgr::initUI(EPvCode pvcode)
|
||||
{
|
||||
std::string& title = vecPageNames[i];
|
||||
bool isActive = (PvApp::getPvCode(title) == pvcode);
|
||||
int idPageBtn = PvApp::button(p, PV_ID_MAIN, 10+(i*110), 110, 100, 40, title, isActive ? QSS_BTN_MGR_ACTIVE : QSS_BTN_MGR);
|
||||
int idPageBtn = PvApp::button(p, PV_ID_MAIN, 10+(i*110), 100, 100, 40, title, isActive ? qss::QSS_BTN_MGR_ACTIVE : qss::QSS_BTN_MGR);
|
||||
mapSubpage_[idPageBtn] = title;
|
||||
}
|
||||
|
||||
|
||||
518
src/pv/pages/PageSysmgrPop.cpp
Normal file
518
src/pv/pages/PageSysmgrPop.cpp
Normal file
@@ -0,0 +1,518 @@
|
||||
#include "PageSysmgrPop.h"
|
||||
|
||||
|
||||
#include "app/Application.h"
|
||||
#include "database/Dao.h"
|
||||
#include "database/DataModelDef.h"
|
||||
#include "common/Snowflake.h"
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// === PageTable ===
|
||||
PageTable::PageTable(PARAM* p) : PvMask(p)
|
||||
{
|
||||
table = std::make_shared<PvTable>(p, 0, 20, 210, 1880, pageSize, option);
|
||||
table->setOperateCallback([=](int row, int col, std::string text) { this->onOperate(row, col, text); });
|
||||
|
||||
pagination = std::make_shared<PvPagination>(p, 0, 20, 780, 20);
|
||||
pagination->setCallback([=](int index)
|
||||
{
|
||||
pageIndex = index;
|
||||
this->updateDataFromDB();
|
||||
});
|
||||
}
|
||||
std::shared_ptr<PvPopWidget> PageTable::addPop(int w, int h, int w0, std::string name, std::vector<std::string> primaryKeys)
|
||||
{
|
||||
std::shared_ptr<PvPopWidget> pop = std::make_shared<PvPopWidget>(p, w, h, name);
|
||||
pop->lineValWidth = w0;
|
||||
pop->setPrimaryKeys(primaryKeys);
|
||||
pop->setCallbackConfirm([=]()
|
||||
{
|
||||
auto fields = pop->getData();
|
||||
std::string err = this->onValidation(pop, fields);
|
||||
pop->setMsg(err);
|
||||
|
||||
if (err.empty())
|
||||
{
|
||||
XLOGD() << "POP get: data=" << fields.toStr();
|
||||
if (pop->status == POP_OPER_EDIT) { pop->checkChangedData(fields); }
|
||||
XLOGD() << "POP get: data=" << fields.toStr();
|
||||
table->mappingData(fields);
|
||||
XLOGD() << "POP get: data=" << fields.toStr();
|
||||
err = this->onPopConfirm(pop, fields);
|
||||
pop->setMsg(err);
|
||||
if (err.empty())
|
||||
{
|
||||
this->hidePop(0);
|
||||
this->updateDataFromDB();
|
||||
};
|
||||
}
|
||||
});
|
||||
pop->show(0);
|
||||
vecPop.push_back(pop);
|
||||
return pop;
|
||||
}
|
||||
void PageTable::showPop(int index, std::string oper, Fields& fields)
|
||||
{
|
||||
XLOGD() << "POP set: data=" << fields.toStr();
|
||||
table->mappingData(fields);
|
||||
XLOGD() << "POP set: data=" << fields.toStr();
|
||||
if (index < vecPop.size())
|
||||
{
|
||||
auto& pop = vecPop[index];
|
||||
pop->show(true);
|
||||
pop->setStatus(oper);
|
||||
pop->setData(fields);
|
||||
pop->setMsg("");
|
||||
}
|
||||
}
|
||||
void PageTable::hidePop(int index)
|
||||
{
|
||||
if (index < vecPop.size())
|
||||
{
|
||||
vecPop[index]->show(false);
|
||||
}
|
||||
}
|
||||
void PageTable::updateDataFromDB()
|
||||
{
|
||||
std::vector<Fields> result;
|
||||
PageInfo pageInfo;
|
||||
pageInfo.size = pageSize;
|
||||
pageInfo.index = pageIndex;
|
||||
this->onQueryTable(pageInfo, result);
|
||||
for (int i = 0; i<table->rows(); ++i)
|
||||
{
|
||||
if (i<result.size())
|
||||
{
|
||||
auto& fields = result[i];
|
||||
table->setRowData(i, result[i]);
|
||||
}
|
||||
else
|
||||
{
|
||||
table->setRowVisible(i, false);
|
||||
}
|
||||
}
|
||||
pagination->setPage(pageInfo.index, pageInfo.total/pageInfo.size + int(pageInfo.total%pageInfo.size != 0));
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// === PageUser ===
|
||||
PageUser::PageUser(PARAM* p, EPvCode pvcode) :PageTable(p)
|
||||
{
|
||||
auto& appdata = Application::data();
|
||||
table->addHead(DMUser::USER_ID, "用户编号", 180, {});
|
||||
table->addHead(DMUser::ACCOUNT, "用户名", 180, {});
|
||||
table->addHead(DMUser::NAME, "姓名", 180, {});
|
||||
table->addHead(DMUser::GENDER, "性别", 180, appdata.mapping.gender);
|
||||
table->addHead(DMUser::AGE, "年龄", 180, {});
|
||||
table->addHead(DMUser::PHONE, "手机号", 180, {});
|
||||
table->addHead(DMUser::EMAIL, "邮箱", 180, {});
|
||||
table->addHead(DMRole::ROLE_ID, "角色", 180, appdata.mapping.role);
|
||||
table->addHead(DMUser::LOGINTIME, "上次登录时间", 200, {});
|
||||
table->addOperate({"编辑"});
|
||||
|
||||
int btnNew = PvApp::button(p, PV_ID_MAIN, 20, 160, 80, 35, POP_OPER_NEW);
|
||||
PvApp::bind(p, PvEvent::BUTTON_EVENT, btnNew, [=](std::string) { this->onOperate(-1, -1, POP_OPER_NEW); });
|
||||
|
||||
int x = 50, y = 80, w = 350, h = 60;
|
||||
auto pop = this->addPop(700, 500, 180, "用户信息", {DMUser::USER_ID});
|
||||
pop->addParamLineEdit(DMUser::USER_ID, "编号", x, y, false);
|
||||
pop->addParamCombox(DMRole::ROLE_ID, "角色", x+w, y, appdata.getRoleNames());
|
||||
pop->addParamLineEdit(DMUser::ACCOUNT, "用户名", x, y += h);
|
||||
pop->addParamLineEdit(DMUser::NAME, "姓名", x+w, y);
|
||||
pop->addParamCombox(DMUser::GENDER, "性别", x, y += h, {"女", "男"});
|
||||
pop->addParamLineEdit(DMUser::AGE, "年龄", x+w, y);
|
||||
pop->addParamLineEdit(DMUser::PHONE, "手机号", x, y += h);
|
||||
pop->addParamLineEdit(DMUser::EMAIL, "邮箱", x+w, y);
|
||||
}
|
||||
|
||||
void PageUser::onQueryTable(PageInfo& pageInfo, std::vector<Fields>& result)
|
||||
{
|
||||
DAO::queryUserList(pageInfo, result);
|
||||
}
|
||||
void PageUser::onOperate(int row, int col, std::string oper)
|
||||
{
|
||||
if (oper == POP_OPER_NEW)
|
||||
{
|
||||
Fields fields;
|
||||
fields.set(DMUser::USER_ID, Snowflake::instance().getIdStr());
|
||||
this->showPop(0, oper, fields);
|
||||
}
|
||||
else if (oper == POP_OPER_EDIT)
|
||||
{
|
||||
this->showPop(0, oper, table->getRowData(row));
|
||||
}
|
||||
};
|
||||
std::string PageUser::onValidation(std::shared_ptr<PvPopWidget> pop, Fields& fields)
|
||||
{
|
||||
if (fields.value(DMUser::ACCOUNT).empty()) { return "请输入用户名"; }
|
||||
return "";
|
||||
};
|
||||
std::string PageUser::onPopConfirm(std::shared_ptr<PvPopWidget> pop, Fields& fields)
|
||||
{
|
||||
if (pop->status == POP_OPER_NEW)
|
||||
{
|
||||
Errcode err = DAO::insertUser(fields);
|
||||
if (err == Errcode::OK) { return ""; }
|
||||
else if (err == Errcode::ERR_DB_DUPLICATE) { return "用户名已经存在"; }
|
||||
else { return "系统错误"; }
|
||||
}
|
||||
else if (pop->status == POP_OPER_EDIT)
|
||||
{
|
||||
Errcode err = DAO::updateUserById(fields);
|
||||
if (err == Errcode::OK) { return ""; }
|
||||
else { return "系统错误"; }
|
||||
}
|
||||
return "";
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// === PageRole ===
|
||||
PageRole::PageRole(PARAM* p, EPvCode pvcode) : PageTable(p)
|
||||
{
|
||||
auto& appdata = Application::data();
|
||||
|
||||
table->addHead(DMRole::ROLE_ID, "角色编号", 200, {});
|
||||
table->addHead(DMRole::NAME, "角色名称", 200, {});
|
||||
table->addHead(DMRole::DESCRIBE, "角色描述", 900, {});
|
||||
table->addHead(DMRole::IS_OPEN, "是否启用", 200, appdata.mapping.isopen);
|
||||
table->addOperate({"编辑"});
|
||||
|
||||
int btnNew = PvApp::button(p, PV_ID_MAIN, 20, 160, 80, 35, POP_OPER_NEW);
|
||||
PvApp::bind(p, PvEvent::BUTTON_EVENT, btnNew, [=](std::string) { this->onOperate(-1, -1, POP_OPER_NEW); });
|
||||
|
||||
int x = 80, y = 80, h = 60;
|
||||
auto pop = this->addPop(500, 600, 180, "角色信息", {DMUser::USER_ID});
|
||||
pop->addParamLineEdit(DMRole::ROLE_ID, "编号", x, y, false);
|
||||
pop->addParamLineEdit(DMRole::NAME, "名称", x, y += h);
|
||||
pop->addParamCombox(DMUser::IS_OPEN, "是否启用", x, y += h, {"启用", "禁用"});
|
||||
pop->addParamTextEdit(DMRole::DESCRIBE, "描述", x, y += h);
|
||||
|
||||
}
|
||||
void PageRole::onQueryTable(PageInfo& pageInfo, std::vector<Fields>& result)
|
||||
{
|
||||
DAO::queryRoleList(pageInfo, result);
|
||||
}
|
||||
void PageRole::onOperate(int row, int col, std::string oper)
|
||||
{
|
||||
if (oper == POP_OPER_NEW)
|
||||
{
|
||||
Fields fields;
|
||||
fields.set(DMUser::USER_ID, Snowflake::instance().getIdStr());
|
||||
this->showPop(0, oper, fields);
|
||||
}
|
||||
else if (oper == POP_OPER_EDIT)
|
||||
{
|
||||
this->showPop(0, oper, table->getRowData(row));
|
||||
}
|
||||
}
|
||||
std::string PageRole::onValidation(std::shared_ptr<PvPopWidget> pop, Fields& fields)
|
||||
{
|
||||
return "";
|
||||
};
|
||||
std::string PageRole::onPopConfirm(std::shared_ptr<PvPopWidget> pop, Fields& fields)
|
||||
{
|
||||
|
||||
return "";
|
||||
}
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// === PagePermission ===
|
||||
PagePermission::PagePermission(PARAM* p, EPvCode pvcode) : PageTable(p)
|
||||
{
|
||||
auto& appdata = Application::data();
|
||||
table->addHead(DMPermission::PERMISSION_ID, "权限编号", 200, {});
|
||||
table->addHead(DMPermission::NAME, "权限名称", 200, {});
|
||||
table->addHead(DMPermission::DESCRIBE, "权限描述", 900, {});
|
||||
table->addHead(DMPermission::IS_OPEN, "是否启用", 200, appdata.mapping.isopen);
|
||||
table->addOperate({"编辑"});
|
||||
|
||||
int btnNew = PvApp::button(p, PV_ID_MAIN, 20, 160, 80, 35, POP_OPER_NEW);
|
||||
PvApp::bind(p, PvEvent::BUTTON_EVENT, btnNew, [=](std::string) { this->onOperate(-1, -1, POP_OPER_NEW); });
|
||||
|
||||
int x = 80, y = 80, h = 60;
|
||||
auto pop = this->addPop(500, 600, 180, "角色信息", {DMPermission::PERMISSION_ID});
|
||||
pop->addParamLineEdit(DMPermission::PERMISSION_ID, "编号", x, y, false);
|
||||
pop->addParamLineEdit(DMPermission::NAME, "名称", x, y += h);
|
||||
pop->addParamCombox(DMPermission::IS_OPEN, "是否启用", x, y += h, {"启用", "禁用"});
|
||||
pop->addParamTextEdit(DMPermission::DESCRIBE, "描述", x, y += h);
|
||||
}
|
||||
void PagePermission::onQueryTable(PageInfo& pageInfo, std::vector<Fields>& result)
|
||||
{
|
||||
DAO::queryPermissionList(pageInfo, result);
|
||||
}
|
||||
void PagePermission::onOperate(int row, int col, std::string oper)
|
||||
{
|
||||
if (oper == POP_OPER_NEW)
|
||||
{
|
||||
Fields fields;
|
||||
fields.set(DMUser::USER_ID, Snowflake::instance().getIdStr());
|
||||
this->showPop(0, oper, fields);
|
||||
}
|
||||
else if (oper == POP_OPER_EDIT)
|
||||
{
|
||||
this->showPop(0, oper, table->getRowData(row));
|
||||
}
|
||||
}
|
||||
std::string PagePermission::onValidation(std::shared_ptr<PvPopWidget> pop, Fields& fields)
|
||||
{
|
||||
return "";
|
||||
};
|
||||
std::string PagePermission::onPopConfirm(std::shared_ptr<PvPopWidget> pop, Fields& fields)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// === PageStation ===
|
||||
PageStation::PageStation(PARAM* p, EPvCode pvcode) : PageTable(p)
|
||||
{
|
||||
auto& appdata = Application::data();
|
||||
table->addHead(DMStation::STATION_ID, "场站编号", 200, {});
|
||||
table->addHead(DMStation::NAME, "场站名称", 200, {});
|
||||
table->addHead(DMStation::ADDRESS, "地址", 200, {});
|
||||
table->addHead(DMStation::LONGITUDE, "经度", 200, {});
|
||||
table->addHead(DMStation::LATITUDE, "维度", 200, {});
|
||||
table->addHead(DMStation::TEL, "电话", 200, {});
|
||||
table->addHead(DMStation::STATUS, "状态", 200, appdata.mapping.isopen);
|
||||
table->addOperate({"编辑"});
|
||||
|
||||
int btnNew = PvApp::button(p, PV_ID_MAIN, 20, 160, 80, 35, POP_OPER_NEW);
|
||||
PvApp::bind(p, PvEvent::BUTTON_EVENT, btnNew, [=](std::string) { this->onOperate(-1, -1, POP_OPER_NEW); });
|
||||
|
||||
int x = 80, y = 80, h = 60;
|
||||
auto pop = this->addPop(500, 600, 240, "场站信息", {DMStation::STATION_ID});
|
||||
pop->addParamLineEdit(DMStation::STATION_ID, "编号", x, y, false);
|
||||
pop->addParamLineEdit(DMStation::NAME, "名称", x, y += h);
|
||||
pop->addParamLineEdit(DMStation::ADDRESS, "地址", x, y += h);
|
||||
pop->addParamLineEdit(DMStation::LONGITUDE, "经度", x, y += h);
|
||||
pop->addParamLineEdit(DMStation::LATITUDE, "维度", x, y += h);
|
||||
pop->addParamLineEdit(DMStation::TEL, "电话", x, y += h);
|
||||
pop->addParamCombox(DMStation::STATUS, "状态", x, y += h, {"启用", "禁用"});
|
||||
}
|
||||
void PageStation::onQueryTable(PageInfo& pageInfo, std::vector<Fields>& result)
|
||||
{
|
||||
DAO::queryStationList(pageInfo, result);
|
||||
}
|
||||
void PageStation::onOperate(int row, int col, std::string oper)
|
||||
{
|
||||
if (oper == POP_OPER_NEW)
|
||||
{
|
||||
Fields fields;
|
||||
fields.set(DMUser::USER_ID, Snowflake::instance().getIdStr());
|
||||
this->showPop(0, oper, fields);
|
||||
}
|
||||
else if (oper == POP_OPER_EDIT)
|
||||
{
|
||||
this->showPop(0, oper, table->getRowData(row));
|
||||
}
|
||||
}
|
||||
std::string PageStation::onValidation(std::shared_ptr<PvPopWidget> pop, Fields& fields)
|
||||
{
|
||||
return "";
|
||||
};
|
||||
std::string PageStation::onPopConfirm(std::shared_ptr<PvPopWidget> pop, Fields& fields)
|
||||
{
|
||||
if (pop->status == POP_OPER_NEW)
|
||||
{
|
||||
Errcode err = DAO::insertStation(fields);
|
||||
if (err == Errcode::OK) { return ""; }
|
||||
else { return "系统错误"; }
|
||||
}
|
||||
else if (pop->status == POP_OPER_EDIT)
|
||||
{
|
||||
Errcode err = DAO::updateStationById(fields);
|
||||
if (err == Errcode::OK) { return ""; }
|
||||
else { return "系统错误"; }
|
||||
}
|
||||
return "";
|
||||
}
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// === PageDevice ===
|
||||
PageDevice::PageDevice(PARAM* p, EPvCode pvcode) : PageTable(p)
|
||||
{
|
||||
auto& appdata = Application::data();
|
||||
table->addHead(DMDevice::DEVICE_ID, "设备编号", 120, {});
|
||||
table->addHead(DMDevice::TYPE_ID, "设备类型", 120, appdata.mapping.deviceType);
|
||||
table->addHead(DMDevice::NAME, "设备名称", 180, {});
|
||||
table->addHead(DMDevice::CODE, "设备编码", 160, {});
|
||||
table->addHead(DMDevice::MODEL, "设备型号", 160, {});
|
||||
table->addHead(DMDevice::FACTORY, "厂家", 160, {});
|
||||
table->addHead(DMDevice::TEL, "厂家电话", 160, {});
|
||||
table->addHead(DMDevice::ATTRS, "设备参数", 460, {});
|
||||
table->addHead(DMDevice::IS_OPEN, "是否启用", 120, appdata.mapping.isopen);
|
||||
table->addOperate({"编辑"});
|
||||
|
||||
int btnNew = PvApp::button(p, PV_ID_MAIN, 20, 160, 80, 35, POP_OPER_NEW);
|
||||
PvApp::bind(p, PvEvent::BUTTON_EVENT, btnNew, [=](std::string) { this->onOperate(-1, -1, POP_OPER_NEW); });
|
||||
|
||||
int x = 50, y = 80, w = 350, h = 60;
|
||||
auto pop = this->addPop(700, 520, 180, "设备信息", {DMDevice::DEVICE_ID});
|
||||
pop->addParamLineEdit(DMDevice::DEVICE_ID, "设备编号", x, y, false);
|
||||
pop->addParamCombox(DMDevice::TYPE_ID, "类型", x+w, y, appdata.getDeviceTypes());
|
||||
pop->addParamLineEdit(DMDevice::NAME, "设备名称", x, y += h);
|
||||
pop->addParamLineEdit(DMDevice::CODE, "设备编码", x+w, y);
|
||||
pop->addParamLineEdit(DMDevice::MODEL, "设备型号", x, y += h);
|
||||
pop->addParamLineEdit(DMDevice::FACTORY, "厂家", x+w, y);
|
||||
pop->addParamLineEdit(DMDevice::TEL, "厂家电话", x, y += h);
|
||||
pop->addParamCombox(DMDevice::IS_OPEN, "是否启用", x+w, y, {"启用", "禁用"});
|
||||
pop->addParamLineEdit(DMDevice::ATTRS, "设备参数", x, y += h);
|
||||
}
|
||||
void PageDevice::onQueryTable(PageInfo& pageInfo, std::vector<Fields>& result)
|
||||
{
|
||||
DAO::queryDeviceList(pageInfo, result);
|
||||
}
|
||||
void PageDevice::onOperate(int row, int col, std::string oper)
|
||||
{
|
||||
if (oper == POP_OPER_NEW)
|
||||
{
|
||||
Fields fields;
|
||||
fields.set(DMUser::USER_ID, Snowflake::instance().getIdStr());
|
||||
this->showPop(0, oper, fields);
|
||||
}
|
||||
else if (oper == POP_OPER_EDIT)
|
||||
{
|
||||
this->showPop(0, oper, table->getRowData(row));
|
||||
}
|
||||
}
|
||||
std::string PageDevice::onValidation(std::shared_ptr<PvPopWidget> pop, Fields& fields)
|
||||
{
|
||||
return "";
|
||||
};
|
||||
std::string PageDevice::onPopConfirm(std::shared_ptr<PvPopWidget> pop, Fields& fields)
|
||||
{
|
||||
if (pop->status == POP_OPER_NEW)
|
||||
{
|
||||
Errcode err = DAO::insertDevice(fields);
|
||||
if (err == Errcode::OK) { return ""; }
|
||||
else { return "系统错误"; }
|
||||
}
|
||||
else if (pop->status == POP_OPER_EDIT)
|
||||
{
|
||||
Errcode err = DAO::updateDeviceById(fields);
|
||||
if (err == Errcode::OK) { return ""; }
|
||||
else { return "系统错误"; }
|
||||
}
|
||||
return "";
|
||||
}
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// === PagePolicy ===
|
||||
PagePolicy::PagePolicy(PARAM* p, EPvCode pvcode) : PageTable(p)
|
||||
{
|
||||
auto& appdata = Application::data();
|
||||
table->addHead(DMPolicy::POLICY_ID, "策略编号", 200, {});
|
||||
table->addHead(DMPolicy::TYPE, "策略类型", 200, {});
|
||||
table->addHead(DMPolicy::NAME, "策略名称", 200, {});
|
||||
table->addHead(DMPolicy::DESCRIBE, "策略描述", 400, {});
|
||||
table->addHead(DMPolicy::VALUE, "策略参数", 400, {});
|
||||
table->addHead(DMPolicy::IS_OPEN, "是否启用", 200, appdata.mapping.isopen);
|
||||
table->addOperate({ "编辑"});
|
||||
|
||||
int btnNew = PvApp::button(p, PV_ID_MAIN, 20, 160, 80, 35, POP_OPER_NEW);
|
||||
PvApp::bind(p, PvEvent::BUTTON_EVENT, btnNew, [=](std::string) { this->onOperate(-1, -1, POP_OPER_NEW); });
|
||||
|
||||
int x = 80, y = 80, h = 60;
|
||||
auto pop = this->addPop(500, 600, 180, "策略信息", {DMPolicy::POLICY_ID});
|
||||
pop->addParamLineEdit(DMPolicy::POLICY_ID, "编号", x, y, false);
|
||||
}
|
||||
void PagePolicy::onQueryTable(PageInfo& pageInfo, std::vector<Fields>& result)
|
||||
{
|
||||
DAO::queryPolicyList(pageInfo, result);
|
||||
}
|
||||
void PagePolicy::onOperate(int row, int col, std::string oper)
|
||||
{
|
||||
if (oper == POP_OPER_NEW)
|
||||
{
|
||||
Fields fields;
|
||||
fields.set(DMUser::USER_ID, Snowflake::instance().getIdStr());
|
||||
this->showPop(0, oper, fields);
|
||||
}
|
||||
else if (oper == POP_OPER_EDIT)
|
||||
{
|
||||
this->showPop(0, oper, table->getRowData(row));
|
||||
}
|
||||
}
|
||||
std::string PagePolicy::onValidation(std::shared_ptr<PvPopWidget> pop, Fields& fields)
|
||||
{
|
||||
return "";
|
||||
};
|
||||
std::string PagePolicy::onPopConfirm(std::shared_ptr<PvPopWidget> pop, Fields& fields)
|
||||
{
|
||||
|
||||
return "";
|
||||
}
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// === PageSyslog ===
|
||||
PageSyslog::PageSyslog(PARAM* p, EPvCode pvcode) : PageTable(p)
|
||||
{
|
||||
table->addHead(DMSystemLog::LOG_ID, "日志编号", 160, {});
|
||||
table->addHead(DMSystemLog::TYPE, "日志类型", 160, {});
|
||||
table->addHead(DMSystemLog::USER_ACCOUNT, "用户", 160, {});
|
||||
table->addHead(DMSystemLog::CONTENT, "日志详情", 800, {});
|
||||
table->addHead(DMSystemLog::STATUS, "状态", 160, {});
|
||||
table->addHead(DMSystemLog::CREATE_TIME, "记录时间", 200, {});
|
||||
table->addOperate({"查看"});
|
||||
}
|
||||
void PageSyslog::onQueryTable(PageInfo& pageInfo, std::vector<Fields>& result)
|
||||
{
|
||||
DAO::querySystemLogList(pageInfo, result);
|
||||
}
|
||||
void PageSyslog::onOperate(int row, int col, std::string oper)
|
||||
{
|
||||
if (oper == POP_OPER_NEW)
|
||||
{
|
||||
Fields fields;
|
||||
fields.set(DMUser::USER_ID, Snowflake::instance().getIdStr());
|
||||
this->showPop(0, oper, fields);
|
||||
}
|
||||
else if (oper == POP_OPER_EDIT)
|
||||
{
|
||||
this->showPop(0, oper, table->getRowData(row));
|
||||
}
|
||||
}
|
||||
std::string PageSyslog::onValidation(std::shared_ptr<PvPopWidget> pop, Fields& fields)
|
||||
{
|
||||
return "";
|
||||
};
|
||||
std::string PageSyslog::onPopConfirm(std::shared_ptr<PvPopWidget> pop, Fields& fields)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// === PageAlertlog ===
|
||||
PageAlertlog::PageAlertlog(PARAM* p, EPvCode pvcode) : PageTable(p)
|
||||
{
|
||||
table->addHead(DMAlertLog::LOG_ID, "日志编号", 160, {});
|
||||
table->addHead(DMAlertLog::TYPE, "日志类型", 160, {});
|
||||
table->addHead(DMAlertLog::DEVICE_ID, "设备ID", 160, {});
|
||||
table->addHead(DMAlertLog::CONTENT, "日志详情", 800, {});
|
||||
table->addHead(DMAlertLog::STATUS, "状态", 160, {});
|
||||
table->addHead(DMAlertLog::CREATE_TIME, "记录时间", 200, {});
|
||||
table->addOperate({"查看"});
|
||||
}
|
||||
void PageAlertlog::onQueryTable(PageInfo& pageInfo, std::vector<Fields>& result)
|
||||
{
|
||||
//DAO::queryAlertLogList(pageInfo, result);
|
||||
}
|
||||
void PageAlertlog::onOperate(int row, int col, std::string oper)
|
||||
{
|
||||
if (oper == POP_OPER_NEW)
|
||||
{
|
||||
Fields fields;
|
||||
fields.set(DMUser::USER_ID, Snowflake::instance().getIdStr());
|
||||
this->showPop(0, oper, fields);
|
||||
}
|
||||
else if (oper == POP_OPER_EDIT)
|
||||
{
|
||||
this->showPop(0, oper, table->getRowData(row));
|
||||
}
|
||||
}
|
||||
std::string PageAlertlog::onValidation(std::shared_ptr<PvPopWidget> pop, Fields& fields)
|
||||
{
|
||||
return "";
|
||||
};
|
||||
std::string PageAlertlog::onPopConfirm(std::shared_ptr<PvPopWidget> pop, Fields& fields)
|
||||
{
|
||||
return "";
|
||||
}
|
||||
137
src/pv/pages/PageSysmgrPop.h
Normal file
137
src/pv/pages/PageSysmgrPop.h
Normal file
@@ -0,0 +1,137 @@
|
||||
#pragma once
|
||||
#include "pv/PvApp.h"
|
||||
#include "pv/PvTable.h"
|
||||
#include "pv/PvPopWidget.h"
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// === PageTable ===
|
||||
class PageTable : public PvMask
|
||||
{
|
||||
public:
|
||||
PageTable(PARAM* p);
|
||||
|
||||
void setPage(int pageIndex, int pageSize, int count) {}
|
||||
|
||||
std::shared_ptr<PvPopWidget> addPop(int w, int h, int w0, std::string name, std::vector<std::string> primaryKeys);
|
||||
|
||||
void showPop(int index, std::string optr, Fields& fields);
|
||||
void hidePop(int index);
|
||||
|
||||
void updateDataFromDB();
|
||||
|
||||
virtual void onQueryTable(PageInfo& pageInfo, std::vector<Fields>& result) {}
|
||||
virtual void onOperate(int row, int col, std::string oper) {};
|
||||
virtual std::string onValidation(std::shared_ptr<PvPopWidget> pop, Fields& fields) { return ""; };
|
||||
virtual std::string onPopConfirm(std::shared_ptr<PvPopWidget> pop, Fields& fields) { return ""; };
|
||||
|
||||
int pageSize {15};
|
||||
int pageIndex {0};
|
||||
PvTable::Options option;
|
||||
std::shared_ptr<PvTable> table;
|
||||
std::shared_ptr<PvPagination> pagination;
|
||||
std::vector<std::shared_ptr<PvPopWidget>> vecPop;
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// === PageUser ===
|
||||
class PageUser : public PageTable
|
||||
{
|
||||
public:
|
||||
PageUser(PARAM* p, EPvCode pvcode);
|
||||
|
||||
virtual void onQueryTable(PageInfo& pageInfo, std::vector<Fields>& result) override;
|
||||
virtual void onOperate(int row, int col, std::string oper) override;
|
||||
virtual std::string onValidation(std::shared_ptr<PvPopWidget> pop, Fields& fields) override;
|
||||
virtual std::string onPopConfirm(std::shared_ptr<PvPopWidget> pop, Fields& fields) override;
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// === PageRole ===
|
||||
class PageRole : public PageTable
|
||||
{
|
||||
public:
|
||||
PageRole(PARAM* p, EPvCode pvcode);
|
||||
|
||||
virtual void onQueryTable(PageInfo& pageInfo, std::vector<Fields>& result) override;
|
||||
virtual void onOperate(int row, int col, std::string oper) override;
|
||||
virtual std::string onValidation(std::shared_ptr<PvPopWidget> pop, Fields& fields) override ;
|
||||
virtual std::string onPopConfirm(std::shared_ptr<PvPopWidget> pop, Fields& fields) override;
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// === PagePermission ===
|
||||
class PagePermission : public PageTable
|
||||
{
|
||||
public:
|
||||
PagePermission(PARAM* p, EPvCode pvcode);
|
||||
|
||||
virtual void onQueryTable(PageInfo& pageInfo, std::vector<Fields>& result) override;
|
||||
virtual void onOperate(int row, int col, std::string oper) override;
|
||||
virtual std::string onValidation(std::shared_ptr<PvPopWidget> pop, Fields& fields) override;
|
||||
virtual std::string onPopConfirm(std::shared_ptr<PvPopWidget> pop, Fields& fields) override;
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// === PageStation ===
|
||||
class PageStation : public PageTable
|
||||
{
|
||||
public:
|
||||
PageStation(PARAM* p, EPvCode pvcode);
|
||||
|
||||
virtual void onQueryTable(PageInfo& pageInfo, std::vector<Fields>& result) override;
|
||||
virtual void onOperate(int row, int col, std::string oper) override;
|
||||
virtual std::string onValidation(std::shared_ptr<PvPopWidget> pop, Fields& fields) override;
|
||||
virtual std::string onPopConfirm(std::shared_ptr<PvPopWidget> pop, Fields& fields) override;
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// === PageDevice ===
|
||||
class PageDevice : public PageTable
|
||||
{
|
||||
public:
|
||||
PageDevice(PARAM* p, EPvCode pvcode);
|
||||
|
||||
virtual void onQueryTable(PageInfo& pageInfo, std::vector<Fields>& result) override;
|
||||
virtual void onOperate(int row, int col, std::string oper) override;
|
||||
virtual std::string onValidation(std::shared_ptr<PvPopWidget> pop, Fields& fields) override;
|
||||
virtual std::string onPopConfirm(std::shared_ptr<PvPopWidget> pop, Fields& fields) override;
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// === PagePolicy ===
|
||||
class PagePolicy : public PageTable
|
||||
{
|
||||
public:
|
||||
PagePolicy(PARAM* p, EPvCode pvcode);
|
||||
|
||||
virtual void onQueryTable(PageInfo& pageInfo, std::vector<Fields>& result) override;
|
||||
virtual void onOperate(int row, int col, std::string oper) override;
|
||||
virtual std::string onValidation(std::shared_ptr<PvPopWidget> pop, Fields& fields) override;
|
||||
virtual std::string onPopConfirm(std::shared_ptr<PvPopWidget> pop, Fields& fields) override;
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// === PageSyslog ===
|
||||
class PageSyslog : public PageTable
|
||||
{
|
||||
public:
|
||||
PageSyslog(PARAM* p, EPvCode pvcode);
|
||||
|
||||
virtual void onQueryTable(PageInfo& pageInfo, std::vector<Fields>& result) override;
|
||||
virtual void onOperate(int row, int col, std::string oper) override;
|
||||
virtual std::string onValidation(std::shared_ptr<PvPopWidget> pop, Fields& fields) override;
|
||||
virtual std::string onPopConfirm(std::shared_ptr<PvPopWidget> pop, Fields& fields) override;
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// === PageAlertlog ===
|
||||
class PageAlertlog : public PageTable
|
||||
{
|
||||
public:
|
||||
PageAlertlog(PARAM* p, EPvCode pvcode);
|
||||
|
||||
virtual void onQueryTable(PageInfo& pageInfo, std::vector<Fields>& result) override;
|
||||
virtual void onOperate(int row, int col, std::string oper) override;
|
||||
virtual std::string onValidation(std::shared_ptr<PvPopWidget> pop, Fields& fields) override;
|
||||
virtual std::string onPopConfirm(std::shared_ptr<PvPopWidget> pop, Fields& fields) override;
|
||||
};
|
||||
Reference in New Issue
Block a user