Commit 9b693ad3 authored by ‘oliver.hui’'s avatar ‘oliver.hui’

10311803

parent 0b461be4
Pipeline #30120 failed with stage
in 32 seconds
#include "sysusermgtv1.h" #include "sysusermgtv1.h"
#include <QDebug>
#include <QDockWidget> #include <QDockWidget>
#include <QGraphicsDropShadowEffect> #include <QGraphicsDropShadowEffect>
#include <QToolBar> #include <QToolBar>
#include <QVBoxLayout> #include <QVBoxLayout>
#include <QDebug>
#include <tbaseutil/tdataparse.h> #include <tbaseutil/tdataparse.h>
#include <tbaseutil/tdataresponse.h> #include <tbaseutil/tdataresponse.h>
#include <tbaseutil/tenumlist.h> #include <tbaseutil/tenumlist.h>
#include <tbaseutil/ttheme.h>
#include <tbaseutil/tresource.h> #include <tbaseutil/tresource.h>
#include <tbaseutil/ttheme.h>
#include <topcore/topclasshelper.h>
#include <topcore/topclasssqlthread.h> #include <topcore/topclasssqlthread.h>
#include <topcore/topenummanager.h>
#include <topcore/topcore.h> #include <topcore/topcore.h>
#include <toputil/t.h> #include <topcore/topenummanager.h>
#include <topcore/topmessagecontroller.h> #include <topcore/topmessagecontroller.h>
#include <topcore/topclasshelper.h> #include <toputil/t.h>
#include <twidget/taccordion.h>
#include <twidget/tmessagebar.h> #include <twidget/tmessagebar.h>
#include <twidget/tmessagebox.h> #include <twidget/tmessagebox.h>
#include <twidget/tpagetool.h> #include <twidget/tpagetool.h>
#include <twidget/tsearchentry.h> #include <twidget/tsearchentry.h>
#include <twidget/tsplitter.h> #include <twidget/tsplitter.h>
#include <twidget/ttableview.h> #include <twidget/ttableview.h>
#include <twidget/taccordion.h>
#include "sysusermgtv1thread.h" #include "sysusermgtv1thread.h"
SysUserMgtV1::SysUserMgtV1(const QString &iModuleNameStr, const QVariantMap iUrlPars, QWidget *iParent) SysUserMgtV1::SysUserMgtV1(const QString &iModuleNameStr, const QVariantMap iUrlPars, QWidget *iParent)
...@@ -43,7 +43,6 @@ SysUserMgtV1::SysUserMgtV1(const QString &iModuleNameStr, const QVariantMap iUrl ...@@ -43,7 +43,6 @@ SysUserMgtV1::SysUserMgtV1(const QString &iModuleNameStr, const QVariantMap iUrl
if (mProductCategoryLst.isEmpty()) { if (mProductCategoryLst.isEmpty()) {
mProductCategoryLst.append(APP->productCategory()); mProductCategoryLst.append(APP->productCategory());
} }
//
mCenterSplitter = new TSplitter(this); mCenterSplitter = new TSplitter(this);
this->setCentralWidget(mCenterSplitter); this->setCentralWidget(mCenterSplitter);
...@@ -93,24 +92,19 @@ void SysUserMgtV1::initNaviView() ...@@ -93,24 +92,19 @@ void SysUserMgtV1::initNaviView()
//设置导航栏顶部label 伸缩按钮区域 显示导航栏文本 //设置导航栏顶部label 伸缩按钮区域 显示导航栏文本
QLabel *naviLabel = new QLabel(ttr("Navigation")); QLabel *naviLabel = new QLabel(ttr("Navigation"));
naviLabel->setProperty("SS_TYPE", "SUBHEADER"); naviLabel->setProperty("SS_TYPE", "SUBHEADER");
naviLayout->addWidget(naviLabel,0); naviLayout->addWidget(naviLabel, 0);
naviLayout->addSpacing(TTHEME_DP(4)); naviLayout->addSpacing(TTHEME_DP(4));
//ui界面与按钮窗口 //ui界面与按钮窗口
QFrame *naviWidget = new QFrame(this); QFrame *naviWidget = new QFrame(this);
naviLayout->addWidget(naviWidget); naviLayout->addWidget(naviWidget);
//垂直布局left包含ui解析窗口 与按钮布局 //垂直布局left包含ui解析窗口 与按钮布局
QVBoxLayout *leftLayout = new QVBoxLayout(naviWidget); QVBoxLayout *leftLayout = new QVBoxLayout(naviWidget);
//新建ui解析窗口 //新建ui解析窗口
mNaviView = new TUiLoader(this); mNaviView = new TUiLoader(this);
TUiLoader *filterUi = qobject_cast<TUiLoader*>(mNaviView); mNaviView->setSelf(this);
filterUi->setSelf(this); mNaviView->setScriptEngine(APP->scriptEngine());
filterUi->setScriptEngine(APP->scriptEngine()); mNaviView->setUiStr(ui("navi").toString());
filterUi->setUiStr(ui("navi").toString());
leftLayout->addWidget(mNaviView); leftLayout->addWidget(mNaviView);
QHBoxLayout *BtnsLayout = new QHBoxLayout(); QHBoxLayout *BtnsLayout = new QHBoxLayout();
...@@ -142,7 +136,6 @@ void SysUserMgtV1::initNaviView() ...@@ -142,7 +136,6 @@ void SysUserMgtV1::initNaviView()
void SysUserMgtV1::initTableView() void SysUserMgtV1::initTableView()
{ {
//布局 //布局
//新建表格窗口mbodywidget //新建表格窗口mbodywidget
mBodyWidget = new QWidget(this); mBodyWidget = new QWidget(this);
//表格窗口mbodywidget添加垂直布局vboxlayout //表格窗口mbodywidget添加垂直布局vboxlayout
...@@ -153,7 +146,6 @@ void SysUserMgtV1::initTableView() ...@@ -153,7 +146,6 @@ void SysUserMgtV1::initTableView()
//新加表格视图mtableview //新加表格视图mtableview
mTableView = new TTableView(this); mTableView = new TTableView(this);
//新建表头 空白无内容 //新建表头 空白无内容
mTableConf = new TopClassTableConf; mTableConf = new TopClassTableConf;
//把view里面的键值对给到mTableConf //把view里面的键值对给到mTableConf
...@@ -164,12 +156,14 @@ void SysUserMgtV1::initTableView() ...@@ -164,12 +156,14 @@ void SysUserMgtV1::initTableView()
//将表头添加进表格中 //将表头添加进表格中
mTableView->setHeaderItem(headerItem); mTableView->setHeaderItem(headerItem);
// 给表设置键和主键 // 给表设置键和主键
mTableView->setDataKeyList(mTableConf->dataKeys); mTableView->setDataKeyList(mTableConf->dataKeys);
mTableView->setPrimaryKey(mTableConf->primaryKey); mTableView->setPrimaryKey(mTableConf->primaryKey);
//创建连接,当用户点击表头图标时,切换数据的正序反序排列顺序 //创建连接,当用户点击表头图标时,切换数据的正序反序排列顺序
QHeaderView *horizontaHeaderView = mTableView->horizontalHeader(); QHeaderView *horizontaHeaderView = mTableView->horizontalHeader();
//对应功能 点击表头排序功能
connect(horizontaHeaderView, SIGNAL(sortIndicatorChanged(int,Qt::SortOrder)),
this, SLOT(refresh()));
//添加 搜索按钮工具TSearchEntry //添加 搜索按钮工具TSearchEntry
if (QToolBar *toolbar = qobject_cast<QToolBar*>(uim()->getWidget("MAIN_TOOLBAR"))) { if (QToolBar *toolbar = qobject_cast<QToolBar*>(uim()->getWidget("MAIN_TOOLBAR"))) {
...@@ -179,20 +173,15 @@ void SysUserMgtV1::initTableView() ...@@ -179,20 +173,15 @@ void SysUserMgtV1::initTableView()
} }
//表格窗口mbodywidget添加mTableview //表格窗口mbodywidget添加mTableview
vboxlayout->addWidget(mTableView, 1); vboxlayout->addWidget(mTableView, 1);
//添加 翻页按钮工具TpageTool //添加 翻页按钮工具TpageTool
if (QToolBar *toolbar = qobject_cast<QToolBar*>(uim()->getWidget("BOTTOM_TOOLBAR"))) { if (QToolBar *toolbar = qobject_cast<QToolBar*>(uim()->getWidget("BOTTOM_TOOLBAR"))) {
vboxlayout->addWidget(toolbar, 2); vboxlayout->addWidget(toolbar, 2);
mPageTool = qobject_cast<TPageTool *>(uim()->getWidget("BOTTOM_TOOLBAR/PAGE_TOOL")); mPageTool = qobject_cast<TPageTool *>(uim()->getWidget("BOTTOM_TOOLBAR/PAGE_TOOL"));
} }
//功能 //功能
//点击事件切换功能 //点击事件切换功能
connect(mTableView->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), connect(mTableView->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)),
this, SLOT(onSelectionChanged())); this, SLOT(onSelectionChanged()));
//点击表头排序功能
connect(horizontaHeaderView, SIGNAL(sortIndicatorChanged(int,Qt::SortOrder)),
this, SLOT(refresh()));
//添加 右键弹窗工具 //添加 右键弹窗工具
if (QMenu *table_popup = qobject_cast<QMenu *>(uim()->getWidget("TABLEVIEW_POPUP"))) { if (QMenu *table_popup = qobject_cast<QMenu *>(uim()->getWidget("TABLEVIEW_POPUP"))) {
mTableView->setContextMenu(table_popup); mTableView->setContextMenu(table_popup);
...@@ -311,7 +300,8 @@ void SysUserMgtV1::refresh(bool iResetPageBol) ...@@ -311,7 +300,8 @@ void SysUserMgtV1::refresh(bool iResetPageBol)
mDetailView->setUid(0); mDetailView->setUid(0);
} }
TSqlSelectorV2 SysUserMgtV1::getSqlSelector(bool iResetPageBol){ TSqlSelectorV2 SysUserMgtV1::getSqlSelector(bool iResetPageBol)
{
TSqlSelectorV2 selector; TSqlSelectorV2 selector;
if (!mTableConf->dbSql.isEmpty()) { if (!mTableConf->dbSql.isEmpty()) {
selector.setTable(QString("(%1) _TEMP_TABLE_").arg(mTableConf->dbSql)); selector.setTable(QString("(%1) _TEMP_TABLE_").arg(mTableConf->dbSql));
...@@ -415,7 +405,8 @@ void SysUserMgtV1::newItem() ...@@ -415,7 +405,8 @@ void SysUserMgtV1::newItem()
} }
//删除模块 //删除模块
void SysUserMgtV1::deleteItem(const QVariantList &iIdLst){ void SysUserMgtV1::deleteItem(const QVariantList &iIdLst)
{
//不能删除当前登陆的用户 //不能删除当前登陆的用户
if (selectedNames().contains(APP->userName())) { if (selectedNames().contains(APP->userName())) {
alertError(ttr("Current login user can not be deleted!")); alertError(ttr("Current login user can not be deleted!"));
......
...@@ -26,14 +26,12 @@ public slots: ...@@ -26,14 +26,12 @@ public slots:
bool canModify(); bool canModify();
QVariantList selectedItems(); QVariantList selectedItems();
void deleteItem(const QVariantList &iIdLst); void deleteItem(const QVariantList &iIdLst);
private slots: private slots:
void onSelectionChanged(); void onSelectionChanged();
void onDetailChanged(); void onDetailChanged();
void onDetailSaved(const QVariant &iUidStr); void onDetailSaved(const QVariant &iUidStr);
void onNaviReset(); void onNaviReset();
void onPageChanged(); void onPageChanged();
private: private:
void initNaviView(); void initNaviView();
void initTableView(); void initTableView();
...@@ -42,7 +40,6 @@ private: ...@@ -42,7 +40,6 @@ private:
TSqlSelectorV2 getSqlSelector(bool iResetPageBol = true); TSqlSelectorV2 getSqlSelector(bool iResetPageBol = true);
QString uiloaderWhere(); QString uiloaderWhere();
void fillTableData(const TDataResponse &iDataRes); void fillTableData(const TDataResponse &iDataRes);
private: private:
QStringList mProductCategoryLst; QStringList mProductCategoryLst;
TSplitter *mCenterSplitter = nullptr; TSplitter *mCenterSplitter = nullptr;
...@@ -56,5 +53,4 @@ private: ...@@ -56,5 +53,4 @@ private:
SysUserV1 *mDetailView = nullptr; SysUserV1 *mDetailView = nullptr;
}; };
#endif // SYSUSERMGTV1_H #endif // SYSUSERMGTV1_H
...@@ -20,24 +20,11 @@ ...@@ -20,24 +20,11 @@
#include <twidget/tuiloader.h> #include <twidget/tuiloader.h>
#include "sysuserv1thread.h" #include "sysuserv1thread.h"
SysUserV1::SysUserV1(const QString &iModuleNameStr,const QVariantMap iUrlPars,QWidget *iparent) SysUserV1::SysUserV1(const QString &iModuleNameStr, const QVariantMap iUrlPars, QWidget *iparent)
: TopClassAbs(iparent) : TopClassAbs(iparent)
{ {
this->setLicenseKey("sys_common"); this->setLicenseKey("sys_common");
this->initModule(iModuleNameStr,iUrlPars); this->initModule(iModuleNameStr, iUrlPars);
//产品相关 大致明白意思没有具体了解为什么这样做
QVariant prodCfg = iUrlPars.value("product_category");
if (prodCfg.type() == QVariant::List || prodCfg.type() == QVariant::StringList) {
for (QVariant row : prodCfg.toList()) {
mProductCategoryLst.append(row.toString());
}
} else if (!prodCfg.toString().isEmpty()) {
mProductCategoryLst.append(prodCfg.toString());
}
if (mProductCategoryLst.isEmpty()) {
mProductCategoryLst.append(APP->productCategory());
}
//初始化布局 //初始化布局
initCenterUi(); initCenterUi();
...@@ -86,7 +73,7 @@ void SysUserV1::initCenterUi() ...@@ -86,7 +73,7 @@ void SysUserV1::initCenterUi()
mUiLoader->setProperty("SS_BG", "PANEL"); mUiLoader->setProperty("SS_BG", "PANEL");
mUiLoader->setProperty("SS_BORDER", 1); mUiLoader->setProperty("SS_BORDER", 1);
mUiLoader->setUiStr(ui("user-info").toString()); mUiLoader->setUiStr(ui("user-info").toString());
mBodyLayout->addWidget(mUiLoader,0); mBodyLayout->addWidget(mUiLoader, 0);
//数据更改关联功能。之前以为initdetail涵盖了数据修改 但uiloader数据修改其实应该具体设置 //数据更改关联功能。之前以为initdetail涵盖了数据修改 但uiloader数据修改其实应该具体设置
connect(mUiLoader, SIGNAL(dataChanged()), this, SLOT(setDataModified())); connect(mUiLoader, SIGNAL(dataChanged()), this, SLOT(setDataModified()));
...@@ -108,7 +95,8 @@ void SysUserV1::resizeEvent(QResizeEvent *iEvent) ...@@ -108,7 +95,8 @@ void SysUserV1::resizeEvent(QResizeEvent *iEvent)
} }
//uid变化模块 //uid变化模块
void SysUserV1::uidChangeEvent(const QString &iUidStr){ void SysUserV1::uidChangeEvent(const QString &iUidStr)
{
//uid无值为初始0 //uid无值为初始0
if(iUidStr.toInt() == 0){ if(iUidStr.toInt() == 0){
...@@ -119,16 +107,16 @@ void SysUserV1::uidChangeEvent(const QString &iUidStr){ ...@@ -119,16 +107,16 @@ void SysUserV1::uidChangeEvent(const QString &iUidStr){
QVariant data = doThreadWork(new SysUserV1Thread(this), "LOAD_DATA", QVariant(this->uid())); QVariant data = doThreadWork(new SysUserV1Thread(this), "LOAD_DATA", QVariant(this->uid()));
unloading(); unloading();
//获取data.tomap();的回执
TDataResponse dataRes(data.toMap()); TDataResponse dataRes(data.toMap());
if(dataRes.hasError()){ if(dataRes.hasError()) {
alertError(ttr("load data failed!"), dataRes.errText()); alertError(ttr("load data failed!"), dataRes.errText());
}else{ } else {
clearData(); clearData();
//问题:dataRes已经是data.tomap为什么还要取dataRes.data().toMap?
//猜测:这里应该是对应存储功能中getData分割.字段的相反功能 带.字段载入 //猜测:这里应该是对应存储功能中getData分割.字段的相反功能 带.字段载入
QVariantMap dataMap = dataRes.data().toMap(); QVariantMap dataMap = dataRes.data().toMap();
QVariantMap attrData = dataMap.value("attr_data").toMap(); QVariantMap attrData = dataMap.value("attr_data").toMap();
for(QString key : attrData.keys()){ for(QString key : attrData.keys()) {
dataMap.insert("attr_data." + key, attrData.value(key)); dataMap.insert("attr_data." + key, attrData.value(key));
} }
setData(dataMap); setData(dataMap);
...@@ -136,47 +124,50 @@ void SysUserV1::uidChangeEvent(const QString &iUidStr){ ...@@ -136,47 +124,50 @@ void SysUserV1::uidChangeEvent(const QString &iUidStr){
} }
} }
//设置状态栏调节:可 //设置状态栏调节:可
mUiLoader->setState("status", "unable"); mUiLoader->setState("status", "enable");
//设置数据处于修改:否 //设置数据处于修改:否
setDataModified(false); setDataModified(false);
} }
void SysUserV1::clearData(){ void SysUserV1::clearData()
{
//载入 构造map 清空原数据 //载入 构造map 清空原数据
mUiLoader->loadValues(QVariantMap(), true); mUiLoader->loadValues(QVariantMap(), true);
} }
void SysUserV1::setData(const QVariantMap &iDataMap){ void SysUserV1::setData(const QVariantMap &iDataMap)
{
//载入 形参map 不清原数据 须接收未显示字段 比如product_category //载入 形参map 不清原数据 须接收未显示字段 比如product_category
mUiLoader->loadValues(iDataMap, false); mUiLoader->loadValues(iDataMap, false);
//问题:原代码此处会设置setTitie 为什么需要设置? //问题:原代码此处会设置setTitie 为什么需要设置?
} }
//衔接mgt->newitem模块 //衔接mgt->newitem模块
void SysUserV1::create(){ void SysUserV1::create()
{
setLastUid(this->uid()); setLastUid(this->uid());
//问题: true对应false设置效果不明 //问题: true对应false设置效果不明
setUid(0, true); setUid(0, true);
mUiLoader->setState("status", "disable"); mUiLoader->setState("status", "disable");
QVariantMap defaultValueMap; QVariantMap defaultValueMap;
defaultValueMap.insert("product_category", mProductCategoryLst);
//意义不明未深究
defaultValueMap = defaultValueMap.unite(config("default_value").toMap()); defaultValueMap = defaultValueMap.unite(config("default_value").toMap());
//
setData(defaultValueMap); setData(defaultValueMap);
//设置数据处于修改 默认true //设置数据处于修改 默认true
setDataModified(); setDataModified();
} }
//取消模块 同时触发mgt-detailchanged 页面变化 //取消模块 同时触发mgt-detailchanged 页面变化
void SysUserV1::reload(){ void SysUserV1::reload()
{
QString uidStr = lastUid().isEmpty() ? uid() : lastUid(); QString uidStr = lastUid().isEmpty() ? uid() : lastUid();
//uidchanged true setid 为真调用uidchangged
setUid(uidStr, true); setUid(uidStr, true);
} }
//保存模块 //保存模块
void SysUserV1::saveData(){ void SysUserV1::saveData()
{
//写报错不熟练 //写报错不熟练
//获取提交错误 //获取提交错误
QVariantList errList = mUiLoader->validateAll("COMMIT", true, "ERROR"); QVariantList errList = mUiLoader->validateAll("COMMIT", true, "ERROR");
...@@ -211,6 +202,7 @@ void SysUserV1::saveData(){ ...@@ -211,6 +202,7 @@ void SysUserV1::saveData(){
} }
QVariantMap SysUserV1::getData() const{ QVariantMap SysUserV1::getData() const{
//ui获取所有字段
QVariantMap dataMap = mUiLoader->getAllValues(true).toVariant().toMap(); QVariantMap dataMap = mUiLoader->getAllValues(true).toVariant().toMap();
QStringList keys = dataMap.keys(); QStringList keys = dataMap.keys();
for(QString key : keys){ for(QString key : keys){
...@@ -231,9 +223,6 @@ QVariantMap SysUserV1::getData() const{ ...@@ -231,9 +223,6 @@ QVariantMap SysUserV1::getData() const{
attrData.insert("effective_date", APP->getServerToday()); attrData.insert("effective_date", APP->getServerToday());
dataMap.insert("attr_data", attrData); dataMap.insert("attr_data", attrData);
} }
if (dataMap.value("product_category").toStringList().isEmpty()) {
dataMap.insert("product_category", mProductCategoryLst);
}
//mUiLoader->getAllValues无法获取id值 手动添加 //mUiLoader->getAllValues无法获取id值 手动添加
dataMap.insert("id", this->uid()); dataMap.insert("id", this->uid());
......
...@@ -33,8 +33,6 @@ private: ...@@ -33,8 +33,6 @@ private:
void initCenterUi(); void initCenterUi();
private: private:
QStringList mProductCategoryLst;
QHBoxLayout *mBodyLayout = nullptr; QHBoxLayout *mBodyLayout = nullptr;
TUiLoader *mUiLoader = nullptr; TUiLoader *mUiLoader = nullptr;
}; };
......
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