Commit 3dd182c7 authored by ‘oliver.hui’'s avatar ‘oliver.hui’

x

parent 9b693ad3
Pipeline #30179 failed with stage
in 39 seconds
...@@ -53,6 +53,7 @@ win32 { ...@@ -53,6 +53,7 @@ win32 {
include(sysmainwindow/sysmainwindow.pri) include(sysmainwindow/sysmainwindow.pri)
include(sysusermgt/sysusermgt.pri) include(sysusermgt/sysusermgt.pri)
include(sysusermgtv1/sysusermgtv1.pri) include(sysusermgtv1/sysusermgtv1.pri)
include(sysusermgtv2/sysusermgtv2.pri)
include(sysrolemgt/sysrolemgt.pri) include(sysrolemgt/sysrolemgt.pri)
include(sysmoduleconfmgt/sysmoduleconfmgt.pri) include(sysmoduleconfmgt/sysmoduleconfmgt.pri)
include(sysenumlistmgt/sysenumlistmgt.pri) include(sysenumlistmgt/sysenumlistmgt.pri)
......
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
#include <QToolBar> #include <QToolBar>
#include <QHBoxLayout> #include <QHBoxLayout>
#include <QVBoxLayout> #include <QVBoxLayout>
#include <Qdebug>
#include <tbaseutil/tdataresponse.h> #include <tbaseutil/tdataresponse.h>
#include <tbaseutil/tdataparse.h> #include <tbaseutil/tdataparse.h>
#include <tbaseutil/ttheme.h> #include <tbaseutil/ttheme.h>
...@@ -92,14 +91,12 @@ SysUser::~SysUser() ...@@ -92,14 +91,12 @@ SysUser::~SysUser()
void SysUser::reload() void SysUser::reload()
{ {
qDebug() << "***************reload";
QString uidStr = lastUid().isEmpty() ? uid() : lastUid(); QString uidStr = lastUid().isEmpty() ? uid() : lastUid();
setUid(uidStr, true); setUid(uidStr, true);
} }
void SysUser::copy() void SysUser::copy()
{ {
qDebug() << "***************copy";
setLastUid(this->uid()); setLastUid(this->uid());
setUid(0, false); setUid(0, false);
QVariantMap data; QVariantMap data;
...@@ -114,7 +111,6 @@ void SysUser::copy() ...@@ -114,7 +111,6 @@ void SysUser::copy()
void SysUser::create() void SysUser::create()
{ {
qDebug() << "***************create";
setLastUid(this->uid()); setLastUid(this->uid());
setUid(0, true); setUid(0, true);
QVariantMap defaultValueMap; QVariantMap defaultValueMap;
...@@ -127,7 +123,6 @@ void SysUser::create() ...@@ -127,7 +123,6 @@ void SysUser::create()
void SysUser::clearData() void SysUser::clearData()
{ {
qDebug() << "***************clearData";
mUiLoader->loadValues(QVariantMap(), true); mUiLoader->loadValues(QVariantMap(), true);
if (mRoleTableView != nullptr) { if (mRoleTableView != nullptr) {
mRoleTableView->loadData(QVariantList()); mRoleTableView->loadData(QVariantList());
...@@ -136,7 +131,6 @@ void SysUser::clearData() ...@@ -136,7 +131,6 @@ void SysUser::clearData()
void SysUser::setData(const QVariantMap &iDataMap) void SysUser::setData(const QVariantMap &iDataMap)
{ {
qDebug() << "***************setData";
mUiLoader->loadValues(iDataMap, false); mUiLoader->loadValues(iDataMap, false);
if (iDataMap.contains("username")) { if (iDataMap.contains("username")) {
setTitle(ttr("User-%1").arg(iDataMap.value("username").toString())); setTitle(ttr("User-%1").arg(iDataMap.value("username").toString()));
...@@ -145,7 +139,6 @@ void SysUser::setData(const QVariantMap &iDataMap) ...@@ -145,7 +139,6 @@ void SysUser::setData(const QVariantMap &iDataMap)
QVariantMap SysUser::getData() const QVariantMap SysUser::getData() const
{ {
qDebug() << "***************getData";
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) {
...@@ -177,7 +170,6 @@ QVariantMap SysUser::getData() const ...@@ -177,7 +170,6 @@ QVariantMap SysUser::getData() const
void SysUser::saveData() void SysUser::saveData()
{ {
qDebug() << "***************saveData";
QVariantList errLst = mUiLoader->validateAll("COMMIT", true, "ERROR"); QVariantList errLst = mUiLoader->validateAll("COMMIT", true, "ERROR");
if (!errLst.isEmpty()) { if (!errLst.isEmpty()) {
QStringList errStrLst; QStringList errStrLst;
...@@ -271,7 +263,6 @@ void SysUser::showAddRoleDialog() ...@@ -271,7 +263,6 @@ void SysUser::showAddRoleDialog()
void SysUser::uidChangeEvent(const QString &iUidStr) void SysUser::uidChangeEvent(const QString &iUidStr)
{ {
qDebug() << "***************uidChangeEvent";
if (iUidStr.toInt() == 0) { if (iUidStr.toInt() == 0) {
setTitle(ttr("New User")); setTitle(ttr("New User"));
clearData(); clearData();
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
#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>
...@@ -123,7 +122,6 @@ SysUserMgt::~SysUserMgt() ...@@ -123,7 +122,6 @@ SysUserMgt::~SysUserMgt()
void SysUserMgt::refresh(bool iResetPageBol) void SysUserMgt::refresh(bool iResetPageBol)
{ {
qDebug() << "************************ is refresh";
t::loading(this); t::loading(this);
TSqlSelectorV2 selector = getSqlSelector(iResetPageBol); TSqlSelectorV2 selector = getSqlSelector(iResetPageBol);
QVariant data = doThreadWork(new TopClassSqlThread(this), TOPSQLTHREAD_SELECT_ARRAYMAP, QVariant::fromValue(selector)); QVariant data = doThreadWork(new TopClassSqlThread(this), TOPSQLTHREAD_SELECT_ARRAYMAP, QVariant::fromValue(selector));
...@@ -163,32 +161,29 @@ void SysUserMgt::deleteItem(const QVariantList &iIdLst) ...@@ -163,32 +161,29 @@ void SysUserMgt::deleteItem(const QVariantList &iIdLst)
QVariantList SysUserMgt::selectedItems() QVariantList SysUserMgt::selectedItems()
{ {
qDebug() << "************************ is selectedItems";
return mSelectedLst; return mSelectedLst;
} }
//TopClassAbs *SysUserMgt::openItem(int iUserIdInt) TopClassAbs *SysUserMgt::openItem(int iUserIdInt)
//{ {
// qDebug() << "************************open is working"; QString detailModuleName = "sys-user";
// QString detailModuleName = "sys-user"; if (!config("detail_module_name").toString().isEmpty()) {
// if (!config("detail_module_name").toString().isEmpty()) { detailModuleName = config("detail_module_name").toString();
// detailModuleName = config("detail_module_name").toString(); }
// }
SysUser *detail = qobject_cast<SysUser *>(APP->openModule(detailModuleName));
// SysUser *detail = qobject_cast<SysUser *>(APP->openModule(detailModuleName)); if (detail != nullptr) {
// if (detail != nullptr) { detail->setConfig("product_category", this->config("product_category"));
// detail->setConfig("product_category", this->config("product_category")); connect(detail, SIGNAL(dataSaved(QVariant)), this, SLOT(onDetailSaved(QVariant)));
// connect(detail, SIGNAL(dataSaved(QVariant)), this, SLOT(onDetailSaved(QVariant))); connect(this, SIGNAL(destroyed()), detail, SLOT(close()));
// connect(this, SIGNAL(destroyed()), detail, SLOT(close())); detail->setUid(iUserIdInt);
// detail->setUid(iUserIdInt); }
// }
return detail;
// return detail; }
//}
void SysUserMgt::newItem() void SysUserMgt::newItem()
{ {
qDebug() << "************************newItem is selectedItems";
mBodySplitter->cacheSizes(); mBodySplitter->cacheSizes();
mDetailView->create(); mDetailView->create();
mDetailView->refreshActionState(); mDetailView->refreshActionState();
...@@ -196,7 +191,6 @@ void SysUserMgt::newItem() ...@@ -196,7 +191,6 @@ void SysUserMgt::newItem()
bool SysUserMgt::canModify() bool SysUserMgt::canModify()
{ {
qDebug() << "************************canModify is ";
return !mDetailView->isDataModified(); return !mDetailView->isDataModified();
} }
...@@ -255,7 +249,6 @@ void SysUserMgt::onPageChanged() ...@@ -255,7 +249,6 @@ void SysUserMgt::onPageChanged()
void SysUserMgt::onSelectionChanged() void SysUserMgt::onSelectionChanged()
{ {
qDebug() << "************************onSelectionChanged is selectedItems";
if (mTableView != nullptr) { if (mTableView != nullptr) {
//因为Action的State函数中用到getSelectedList, 所以TableView选择更改时, //因为Action的State函数中用到getSelectedList, 所以TableView选择更改时,
//将其保存至mSelectedLst中, 这样可以加快Action状态的刷新速度; //将其保存至mSelectedLst中, 这样可以加快Action状态的刷新速度;
...@@ -286,7 +279,6 @@ void SysUserMgt::onDetailSaved(const QVariant &iUidStr) ...@@ -286,7 +279,6 @@ void SysUserMgt::onDetailSaved(const QVariant &iUidStr)
void SysUserMgt::onDetailChanged() void SysUserMgt::onDetailChanged()
{ {
qDebug() << "*******************************ondetailchanged is working";
bool isModified = mDetailView->isDataModified(); bool isModified = mDetailView->isDataModified();
mTableView->setEnabled(!isModified); mTableView->setEnabled(!isModified);
if (isModified) { if (isModified) {
...@@ -302,7 +294,6 @@ void SysUserMgt::onDetailChanged() ...@@ -302,7 +294,6 @@ void SysUserMgt::onDetailChanged()
TSqlSelectorV2 SysUserMgt::getSqlSelector(bool iResetPageBol) TSqlSelectorV2 SysUserMgt::getSqlSelector(bool iResetPageBol)
{ {
qDebug() << "************************getSqlSelector is working";
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));
......
...@@ -25,7 +25,7 @@ public slots: ...@@ -25,7 +25,7 @@ public slots:
void refresh(bool iResetPageBol = true); void refresh(bool iResetPageBol = true);
void deleteItem(const QVariantList &iIdLst); void deleteItem(const QVariantList &iIdLst);
QVariantList selectedItems(); QVariantList selectedItems();
// TopClassAbs *openItem(int iUserIdInt); TopClassAbs *openItem(int iUserIdInt);
void newItem(); void newItem();
bool canModify(); bool canModify();
bool isPasswordValidityControl(); bool isPasswordValidityControl();
......
...@@ -41,7 +41,6 @@ private: ...@@ -41,7 +41,6 @@ private:
QString uiloaderWhere(); QString uiloaderWhere();
void fillTableData(const TDataResponse &iDataRes); void fillTableData(const TDataResponse &iDataRes);
private: private:
QStringList mProductCategoryLst;
TSplitter *mCenterSplitter = nullptr; TSplitter *mCenterSplitter = nullptr;
TUiLoader *mNaviView = nullptr; TUiLoader *mNaviView = nullptr;
TTableView *mTableView = nullptr; TTableView *mTableView = nullptr;
...@@ -51,6 +50,6 @@ private: ...@@ -51,6 +50,6 @@ private:
TPageTool *mPageTool = nullptr; TPageTool *mPageTool = nullptr;
QVariantList mSelectedLst; QVariantList mSelectedLst;
SysUserV1 *mDetailView = nullptr; SysUserV1 *mDetailView = nullptr;
}; };
#endif // SYSUSERMGTV1_H #endif // SYSUSERMGTV1_H
...@@ -21,19 +21,16 @@ void SysUserMgtV1Thread::run() ...@@ -21,19 +21,16 @@ void SysUserMgtV1Thread::run()
void SysUserMgtV1Thread::deleteUser() void SysUserMgtV1Thread::deleteUser()
{ {
TDataResponse dataRes; TDataResponse dataRes;
TSqlQueryV2 sqlQuery(T_SQLCNT_POOL->getSqlDatabase()); TSqlQueryV2 sqlQuery(T_SQLCNT_POOL->getSqlDatabase());
sqlQuery.begin(); sqlQuery.begin();
try { try {
TSqlDeleterV2 sqlDeleter; TSqlDeleterV2 sqlDeleter;
sqlDeleter.setTable("pub_contacts"); sqlDeleter.setTable("pub_contacts");
// 将传入的值的id与sys_user中的id进行比较,要相等,并且contact_id不能为空,在这种条件下,如果有contcat_id,那么select语句就将它选出来
sqlDeleter.setWhere(QString("id IN (SELECT contcat_id FROM sys_user WHERE id IN (%1) AND contcat_id IS NOT NULL)").arg(invokeParameter().toStringList().join(","))); sqlDeleter.setWhere(QString("id IN (SELECT contcat_id FROM sys_user WHERE id IN (%1) AND contcat_id IS NOT NULL)").arg(invokeParameter().toStringList().join(",")));
sqlQuery.deleteRow(sqlDeleter); sqlQuery.deleteRow(sqlDeleter);
if (sqlQuery.lastError().isValid()) { if (sqlQuery.lastError().isValid()) {
throw sqlQuery.lastError(); throw sqlQuery.lastError();
} }
sqlDeleter.clear(); sqlDeleter.clear();
sqlDeleter.setTable("sys_user"); sqlDeleter.setTable("sys_user");
sqlDeleter.setWhere("id", invokeParameter()); sqlDeleter.setWhere("id", invokeParameter());
...@@ -41,7 +38,6 @@ void SysUserMgtV1Thread::deleteUser() ...@@ -41,7 +38,6 @@ void SysUserMgtV1Thread::deleteUser()
if (sqlQuery.lastError().isValid()) { if (sqlQuery.lastError().isValid()) {
throw sqlQuery.lastError(); throw sqlQuery.lastError();
} }
sqlQuery.commit(); sqlQuery.commit();
setInvokeResult(dataRes.toVariantMap()); setInvokeResult(dataRes.toVariantMap());
return; return;
......
#include "sysuserv1.h" #include "sysuserv1.h"
#include <QHBoxLayout>
#include <QGraphicsDropShadowEffect> #include <QGraphicsDropShadowEffect>
#include <QResizeEvent> #include <QResizeEvent>
#include <QToolBar> #include <QToolBar>
#include <QHBoxLayout>
#include <QVBoxLayout> #include <QVBoxLayout>
#include <QDebug>
#include <tbaseutil/tdataresponse.h> #include <tbaseutil/tdataresponse.h>
#include <tbaseutil/tdataparse.h> #include <tbaseutil/tdataparse.h>
#include <tbaseutil/ttheme.h> #include <tbaseutil/ttheme.h>
...@@ -25,16 +24,12 @@ SysUserV1::SysUserV1(const QString &iModuleNameStr, const QVariantMap iUrlPars, ...@@ -25,16 +24,12 @@ SysUserV1::SysUserV1(const QString &iModuleNameStr, const QVariantMap iUrlPars,
{ {
this->setLicenseKey("sys_common"); this->setLicenseKey("sys_common");
this->initModule(iModuleNameStr, iUrlPars); this->initModule(iModuleNameStr, iUrlPars);
//初始化布局 //初始化布局
initCenterUi(); initCenterUi();
//初始化窗口尺寸 //初始化窗口尺寸
restoreSizeState(); restoreSizeState();
//初始化id //初始化id
uidChangeEvent(this->uid()); uidChangeEvent(this->uid());
//刷新当前模块Action状态; //刷新当前模块Action状态;
refreshActionState(); refreshActionState();
} }
...@@ -50,21 +45,18 @@ void SysUserV1::initCenterUi() ...@@ -50,21 +45,18 @@ void SysUserV1::initCenterUi()
//主窗口 //主窗口
QWidget *centerWidget = new QWidget(this); QWidget *centerWidget = new QWidget(this);
this->setCentralWidget(centerWidget); this->setCentralWidget(centerWidget);
//主布局:1,toolbar 2,mbodylayout //主布局:1,toolbar 2,mbodylayout
QVBoxLayout *centerLayout = new QVBoxLayout(centerWidget); QVBoxLayout *centerLayout = new QVBoxLayout(centerWidget);
centerLayout->setMargin(0); centerLayout->setMargin(0);
centerLayout->setSpacing(0); centerLayout->setSpacing(0);
if(QToolBar *toolbar = qobject_cast<QToolBar *>(uim()->getWidget("MAIN_TOOLBAR"))){ if (QToolBar *toolbar = qobject_cast<QToolBar *>(uim()->getWidget("MAIN_TOOLBAR"))) {
centerLayout->addWidget(toolbar,0); centerLayout->addWidget(toolbar, 0);
} }
//局部布局 //局部布局
mBodyLayout = new QHBoxLayout(); mBodyLayout = new QHBoxLayout();
mBodyLayout->setMargin(TTHEME_DP(16)); mBodyLayout->setMargin(TTHEME_DP(16));
mBodyLayout->setSpacing(0); mBodyLayout->setSpacing(0);
centerLayout->addLayout(mBodyLayout, 1); centerLayout->addLayout(mBodyLayout, 1);
//TUILoader配置 //TUILoader配置
mUiLoader = new TUiLoader(this); mUiLoader = new TUiLoader(this);
mUiLoader->setScriptEngine(APP->scriptEngine()); mUiLoader->setScriptEngine(APP->scriptEngine());
...@@ -74,8 +66,7 @@ void SysUserV1::initCenterUi() ...@@ -74,8 +66,7 @@ void SysUserV1::initCenterUi()
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数据修改其实应该具体设置
connect(mUiLoader, SIGNAL(dataChanged()), this, SLOT(setDataModified())); connect(mUiLoader, SIGNAL(dataChanged()), this, SLOT(setDataModified()));
} }
...@@ -97,28 +88,20 @@ void SysUserV1::resizeEvent(QResizeEvent *iEvent) ...@@ -97,28 +88,20 @@ 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) {
clearData(); clearData();
}else{ } else {
//uid带值为选中id值 //uid带值为选中id值
t::loading(this); t::loading(this);
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();
//猜测:这里应该是对应存储功能中getData分割.字段的相反功能 带.字段载入
QVariantMap dataMap = dataRes.data().toMap(); QVariantMap dataMap = dataRes.data().toMap();
QVariantMap attrData = dataMap.value("attr_data").toMap();
for(QString key : attrData.keys()) {
dataMap.insert("attr_data." + key, attrData.value(key));
}
setData(dataMap); setData(dataMap);
alertOk(ttr("Data loaded")); alertOk(ttr("Data loaded"));
} }
...@@ -137,16 +120,13 @@ void SysUserV1::clearData() ...@@ -137,16 +120,13 @@ void SysUserV1::clearData()
void SysUserV1::setData(const QVariantMap &iDataMap) void SysUserV1::setData(const QVariantMap &iDataMap)
{ {
//载入 形参map 不清原数据 须接收未显示字段 比如product_category
mUiLoader->loadValues(iDataMap, false); mUiLoader->loadValues(iDataMap, false);
//问题:原代码此处会设置setTitie 为什么需要设置?
} }
//衔接mgt->newitem模块 //衔接mgt->newitem模块
void SysUserV1::create() void SysUserV1::create()
{ {
setLastUid(this->uid()); setLastUid(this->uid());
//问题: true对应false设置效果不明
setUid(0, true); setUid(0, true);
mUiLoader->setState("status", "disable"); mUiLoader->setState("status", "disable");
...@@ -161,7 +141,6 @@ void SysUserV1::create() ...@@ -161,7 +141,6 @@ void SysUserV1::create()
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);
} }
...@@ -181,18 +160,12 @@ void SysUserV1::saveData() ...@@ -181,18 +160,12 @@ void SysUserV1::saveData()
} }
t::saving(this); t::saving(this);
QVariantMap saveData = getData(); QVariantMap saveData = getData();
//问题 意义不明? 对应_hooks_.js
if(isHookExists("handleSaveData")){
saveData = callHooksQuick("handleSaveData", QVariantList() << saveData).toVariant().toMap();
}
//
QVariant data = doThreadWork(new SysUserV1Thread(this), "SAVE_DATA", saveData); QVariant data = doThreadWork(new SysUserV1Thread(this), "SAVE_DATA", saveData);
//问题 unloading总是搭配doThreadwork使用?
unloading(); unloading();
TDataResponse dataRes(data.toMap()); TDataResponse dataRes(data.toMap());
//获取保存错误 //获取保存错误
if(dataRes.hasError()){ if(dataRes.hasError()){
alertError(ttr("Save data failed!"),dataRes.errText()); alertError(ttr("Save data failed!"), dataRes.errText());
}else{ }else{
setUid(dataRes.data().toInt()); setUid(dataRes.data().toInt());
emit dataSaved(this->uid()); emit dataSaved(this->uid());
...@@ -201,30 +174,9 @@ void SysUserV1::saveData() ...@@ -201,30 +174,9 @@ 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();
for(QString key : keys){
if(key.contains(".")){
QString keyfirst = key.split('.').first();
QString keylast = key.split('.').last();
QVariantMap map = dataMap.value(keyfirst,QVariantMap()).toMap();
map.insert(keylast, dataMap.value(key));
dataMap.insert(keyfirst, map);
dataMap.remove(key);
}
}
//问题:新建时 为什么要这样做
//猜测:该字段不存在ui页面,mUiLoader->getAllValues无法获取,因此需要手动添加
if (this->uid().toInt() == 0) {
QVariantMap attrData = dataMap.value("attr_data").toMap();
attrData.insert("effective_date", APP->getServerToday());
dataMap.insert("attr_data", attrData);
}
//mUiLoader->getAllValues无法获取id值 手动添加
dataMap.insert("id", this->uid()); dataMap.insert("id", this->uid());
return dataMap; return dataMap;
} }
...@@ -35,29 +35,15 @@ void SysUserV1Thread::loadData(int iIdInt) ...@@ -35,29 +35,15 @@ void SysUserV1Thread::loadData(int iIdInt)
try { try {
// Selector:查 // Selector:查
TSqlSelectorV2 sqlSelector; TSqlSelectorV2 sqlSelector;
//将sys_user取小名为U,左连接pub_contacts表,pub_contacts的小名为C,两表连接的条件是U.contcat_id = C.id
sqlSelector.setTable("sys_user AS U LEFT JOIN pub_contacts AS C ON U.contcat_id = C.id"); sqlSelector.setTable("sys_user AS U LEFT JOIN pub_contacts AS C ON U.contcat_id = C.id");
//设置要查找的字段,查找的字段是U里面所有表格的C.mail
//这是查的内容
sqlSelector.setField("U.*, C.mail"); sqlSelector.setField("U.*, C.mail");
//设置查找条件U.id==QVariant(iIdInt)
sqlSelector.setWhere("U.id", QVariant(iIdInt)); sqlSelector.setWhere("U.id", QVariant(iIdInt));
//设置表里"product_category"字段的格式为数组
sqlSelector.setFieldFormat("product_category", "array");
sqlSelector.setFieldFormat("attr_data", "json");
//sqlQuery是执行器,用来执行sqlSelector表格,会返回查询结果给dataMap
QVariantMap dataMap = sqlQuery.selectMap(sqlSelector); QVariantMap dataMap = sqlQuery.selectMap(sqlSelector);
//这句话是在看查询语句是否错误,如果错误,抛出错误:可以看到这个错
if (sqlQuery.lastError().isValid()) { if (sqlQuery.lastError().isValid()) {
throw sqlQuery.lastError(); throw sqlQuery.lastError();
} }
//提交:把执行结果提交给数据库
sqlQuery.commit(); sqlQuery.commit();
//dataMap是查询结果,要把dataMap传回给dataRes,然后再
dataRes.setData(dataMap); dataRes.setData(dataMap);
//设置结果:把dataRes返回给data
setInvokeResult(dataRes.toVariantMap()); setInvokeResult(dataRes.toVariantMap());
return; return;
//捕获异常 //捕获异常
...@@ -66,9 +52,7 @@ void SysUserV1Thread::loadData(int iIdInt) ...@@ -66,9 +52,7 @@ void SysUserV1Thread::loadData(int iIdInt)
} catch (...) { } catch (...) {
dataRes.setErrText(ttr("Unknow Error!")); dataRes.setErrText(ttr("Unknow Error!"));
} }
//回滚:改了一个东西,但发现错了,就撤回SQL操作
sqlQuery.rollback(); sqlQuery.rollback();
//再次把结果传给data
setInvokeResult(dataRes.toVariantMap()); setInvokeResult(dataRes.toVariantMap());
} }
...@@ -78,6 +62,7 @@ void SysUserV1Thread::saveData(const QVariantMap &iDataMap) ...@@ -78,6 +62,7 @@ void SysUserV1Thread::saveData(const QVariantMap &iDataMap)
TSqlQueryV2 sqlQuery(T_SQLCNT_POOL->getSqlDatabase()); TSqlQueryV2 sqlQuery(T_SQLCNT_POOL->getSqlDatabase());
sqlQuery.begin(); sqlQuery.begin();
try { try {
//判断是否重复
TSqlSelectorV2 sqlSelector; TSqlSelectorV2 sqlSelector;
sqlSelector.setTable("sys_user"); sqlSelector.setTable("sys_user");
sqlSelector.setField("COUNT(1)"); sqlSelector.setField("COUNT(1)");
...@@ -101,14 +86,7 @@ void SysUserV1Thread::saveData(const QVariantMap &iDataMap) ...@@ -101,14 +86,7 @@ void SysUserV1Thread::saveData(const QVariantMap &iDataMap)
} }
contactMap.insert("name", name); contactMap.insert("name", name);
contactMap.insert("id", iDataMap.value("contcat_id").toInt()); contactMap.insert("id", iDataMap.value("contcat_id").toInt());
contactMap.insert("source", "company");
contactMap.insert("status", iDataMap.value("status").toString() == "active" ? "active" : "inactive"); contactMap.insert("status", iDataMap.value("status").toString() == "active" ? "active" : "inactive");
TopClassAbs *parentModule = static_cast<TopClassAbs*>(this->parent());
if (parentModule) {
if (parentModule->isHookExists("handleContactData")) {
contactMap = parentModule->callHooksQuick("handleContactData", QVariantList()<<contactMap<<iDataMap).toVariant().toMap();
}
}
QStringList contactFields = contactMap.keys(); QStringList contactFields = contactMap.keys();
contactFields.removeOne("id"); contactFields.removeOne("id");
...@@ -123,37 +101,10 @@ void SysUserV1Thread::saveData(const QVariantMap &iDataMap) ...@@ -123,37 +101,10 @@ void SysUserV1Thread::saveData(const QVariantMap &iDataMap)
if (sqlQuery.lastError().isValid()) { if (sqlQuery.lastError().isValid()) {
throw sqlQuery.lastError(); throw sqlQuery.lastError();
} }
// 更新sys_commu_grp_detail
TSqlUpdaterV2 sqlUpdater;
sqlUpdater.setTable("sys_commu_grp_detail");
sqlUpdater.setField(QStringList() << "address" << "name");
QVariantMap commuGrpDetailDataMap;
commuGrpDetailDataMap.insert("address", iDataMap.value("mail"));
commuGrpDetailDataMap.insert("name", name);
sqlUpdater.setData(commuGrpDetailDataMap);
TSqlWhereCompsiteV2 commuGrpDetailWhere;
commuGrpDetailWhere.append("src_type", "pub_contacts");
commuGrpDetailWhere.append("src_uid", iDataMap.value("contcat_id").toString());
commuGrpDetailWhere.setLogic(TSqlWhereCompsiteV2::Logic_And);
sqlUpdater.setWhere(commuGrpDetailWhere);
sqlQuery.updateRow(sqlUpdater);
if (sqlQuery.lastError().isValid()) {
throw sqlQuery.lastError();
}
// 更新sys_user表 // 更新sys_user表
QVariantMap dataMap = iDataMap; QVariantMap dataMap = iDataMap;
QStringList fieldLst = dataMap.keys(); QStringList fieldLst = dataMap.keys();
dataMap.insert("contcat_id", contactId); dataMap.insert("contcat_id", contactId);
QStringList productCategory = dataMap.value("product_category").toStringList();
// 只要产品分类列表中包含有*, 就只存*
if (productCategory.contains("*")) {
productCategory = (QStringList() << "*");
}
dataMap.insert("product_category", productCategory);
if (iDataMap.value("id").toInt() == 0) { if (iDataMap.value("id").toInt() == 0) {
// 新建时插入默认密码 // 新建时插入默认密码
QString password = iDataMap.value("password").toString(); QString password = iDataMap.value("password").toString();
...@@ -166,18 +117,10 @@ void SysUserV1Thread::saveData(const QVariantMap &iDataMap) ...@@ -166,18 +117,10 @@ void SysUserV1Thread::saveData(const QVariantMap &iDataMap)
} }
fieldLst.removeOne("id"); fieldLst.removeOne("id");
fieldLst.removeOne("mail"); fieldLst.removeOne("mail");
QVariantMap attrDataMap = dataMap.value("attr_data").toMap();
if (attrDataMap.value("password_validity_control") == 0) {
attrDataMap.insert("effective_date", QString(""));
attrDataMap.insert("validity_period", QString(""));
dataMap.insert("attr_data", attrDataMap);
}
qDebug().noquote().nospace()<<TDataParse::variant2JsonStr(dataMap);
sqlInserter.clear(); sqlInserter.clear();
sqlInserter.setTable("sys_user"); sqlInserter.setTable("sys_user");
sqlInserter.setData(dataMap); sqlInserter.setData(dataMap);
sqlInserter.setField(fieldLst); sqlInserter.setField(fieldLst);
sqlInserter.setUpdatePolicy("attr_data", "json_merge");
sqlInserter.setUniqueField("id"); sqlInserter.setUniqueField("id");
sqlInserter.setAutoIncrementField("id"); sqlInserter.setAutoIncrementField("id");
......
#include "sysusermgtv2.h"
SysUserMgtV2::SysUserMgtV2(const QString &iModuleNameStr, const QVariantMap iUrlPars, QWidget *iParent)
:TopClassAbs(iParent)
{
//载入模板
initModule(iModuleName, iUrlPars);
QString licenseKey = config("sys_common").toString();
if (!licenseKey.isEmpty()) {
setLicenseKey(licenseKey);
}
//语言
QStringList langLst = config("sys-userv2").toStringList();
for (const auto &lang : langLst) {
appendLanguage(lang);
}
QVariant prodCfg = config("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());
}
}
SysUserMgtV2::~SysUserMgtV2()
{
this->saveSizeState();
this->saveObjectState(mTableView);
}
void SysUserMgtV2::initUi(){
}
#ifndef SYSUSERMGTV2_H
#define SYSUSERMGTV2_H
#include <topcore/topclassabs.h>
class SysUserMgtV2 : public TopClassAbs
{
public:
Q_OBJECT
public:
explicit SysUserMgtV2(const QString &iModuleNameStr = QString(""),
const QVariantMap iUrlPars = QVariantMap(),
QWidget *iParent = nullptr);
~SysUserMgtV2();
public slots:
signals:
private slots:
private:
void initUi();
private:
};
#endif // SYSUSERMGTV2_H
HEADERS += \
$$PWD/sysusermgtv2.h
SOURCES += \
$$PWD/sysusermgtv2.cpp
try {
if (this.selectedItems().length > 0) {
var item = this.openItem(this.selectedItems()[0]);
item.show();
}
} catch (e) {
print(e);
}
/*---ACTION---
ICON: "desktop"
LABEL: "Open In New Window"
LABEL_ZHCN: "在新窗口中打开"
LABEL_ZHTW: "在新窗口中打開"
ACCEL: ""
TOOLTIP: "Open In New Window"
TOOLTIP_ZHCN: "在新窗口中打开"
TOOLTIP_ZHTW: "在新窗口中打開"
PERMISSION: "sys-user-read"
CHECKED: ""
GROUP: ""
STYLE: "size=small button_style=both"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: "if(this.selectedItems().length > 0){return 'enable'}else{return 'disable'}"
---ACTION---*/
\ No newline at end of file
try {
var ans = TMessageBox.question(this, this.ttr("Are you sure to reset password?"), '', this.ttr('Reset password'),
[this.ttr("Reset") + ":Yes:Yes", this.ttr("Cancel") + ":Cancel:Cancel:Normal"]);
if (ans != 'Yes') {
return;
}
this.resetPassword();
} catch (e) {
print(e);
}
/*---ACTION---
ICON: "reset"
LABEL: "Reset Password"
LABEL_ZHCN: "重置密码"
LABEL_ZHTW: "重置密碼"
ACCEL: ""
TOOLTIP: "Reset Password"
TOOLTIP_ZHCN: "重置密码"
TOOLTIP_ZHTW: "重置密碼"
PERMISSION: "sys-user-reset-password"
CHECKED: ""
GROUP: ""
STYLE: " button_style=both"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: "if(this.selectedItems().length > 0 && this.canModify()){return 'enable'}else{return 'disable'}"
---ACTION---*/
\ No newline at end of file
try {
var ans = TMessageBox.question(this, this.ttr("Are you sure the reset password effective date?"), '', this.ttr('Reset password'),
[this.ttr("Reset") + ":Yes:Yes", this.ttr("Cancel") + ":Cancel:Cancel:Normal"]);
if (ans != 'Yes') {
return;
}
this.resetPasswordValidityDate();
} catch (e) {
print(e);
}
/*---ACTION---
ICON: "reset"
LABEL: "Reset Password Validity"
LABEL_ZHCN: "重置密码生效日期"
LABEL_ZHTW: "重置密碼生效日期"
ACCEL: ""
TOOLTIP: "Reset Password Validity"
TOOLTIP_ZHCN: "重置密码生效日期"
TOOLTIP_ZHTW: "重置密碼生效日期"
PERMISSION: "sys-user-password-validity-control"
CHECKED: ""
GROUP: ""
STYLE: " button_style=both"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: "if(this.selectedItems().length > 0 && this.canModify() && this.isPasswordValidityControl()){return 'enable'}else{return 'disable'}"
---ACTION---*/
\ No newline at end of file
"Add Role": {en: "Add Role",zhcn: "添加角色",zhtw: "添加角色"}
"Current login user can not be deleted!": {en: "Current login user can not be deleted!",zhcn: "当前登陆的用户不可删除!",zhtw: "當前登錄的用戶不可刪除!"}
"Full Name": {en: "Full Name",zhcn: "全名",zhtw: "全名"}
"Login Name": {en: "Login Name",zhcn: "登录名",zhtw: "登錄名"}
"Mail": {en: "Mail",zhcn: "邮箱",zhtw: "郵箱"}
"New User": {en: "New User",zhcn: "新建用户",zhtw: "新建用戶"}
"Role Name": {en: "Role Name",zhcn: "角色名称",zhtw: "角色名稱"}
"Staff ID": {en: "Staff ID",zhcn: "工号",zhtw: "工號"}
"Status": {en: "Status",zhcn: "状态",zhtw: "狀態"}
"Reset password...": {en: "",zhcn: "重置密码...",zhtw: "重置密碼..."}
"Reset password failed!": {en: "",zhcn: "重置密码失败!",zhtw: "重置密碼失敗!"}
"Reset password success!": {en: "",zhcn: "重置密码成功!",zhtw: "重置密碼成功!"}
"Are you sure to reset password?": {en: "",zhcn: "确认重置密码吗?",zhtw: "確認重置密碼嗎?"}
"Are you sure the reset password effective date?": {en: "",zhcn: "确认重置密码生效日期吗?",zhtw: "確認重置密碼生效日期嗎?"}
"Reset password": {en: "",zhcn: "重置密码",zhtw: "重置密碼"}
"Reset": {en: "Reset",zhcn: "重置",zhtw: "重置"}
"Reset password validity date failed!": {en: "Reset password validity date failed!",zhcn: "重置密码生效日期失败!",zhtw: "重置密碼生效日期失敗!"}
"Reset password validity date success!": {en: "Reset password validity date success!",zhcn: "重置密码生效日期成功!",zhtw: "重置密碼生效日期成功!"}
"Navigation": {en: "Navigation",zhcn: "导航栏",zhtw: "導航欄"}
"Cancel": {en: "Cancel",zhcn: "取消",zhtw: "取消"}
"Ok": {en: "Ok",zhcn: "确认",zhtw: "確認"}
"Show Navigation": {en: "Show Navigation",zhcn: "打开导航栏",zhtw: "打開導航欄"}
"Hide Navigation": {en: "Hide Navigation",zhcn: "关闭导航栏",zhtw: "關閉導航欄"}
\ No newline at end of file
...@@ -4,15 +4,8 @@ ...@@ -4,15 +4,8 @@
"Login Name": {en: "Login Name",zhcn: "登录名",zhtw: "登錄名"} "Login Name": {en: "Login Name",zhcn: "登录名",zhtw: "登錄名"}
"Mail": {en: "Mail",zhcn: "邮箱",zhtw: "郵箱"} "Mail": {en: "Mail",zhcn: "邮箱",zhtw: "郵箱"}
"New User": {en: "New User",zhcn: "新建用户",zhtw: "新建用戶"} "New User": {en: "New User",zhcn: "新建用户",zhtw: "新建用戶"}
"Role Name": {en: "Role Name",zhcn: "角色名称",zhtw: "角色名稱"}
"Staff ID": {en: "Staff ID",zhcn: "工号",zhtw: "工號"} "Staff ID": {en: "Staff ID",zhcn: "工号",zhtw: "工號"}
"Status": {en: "Status",zhcn: "状态",zhtw: "狀態"} "Status": {en: "Status",zhcn: "状态",zhtw: "狀態"}
"Reset password...": {en: "",zhcn: "重置密码...",zhtw: "重置密碼..."}
"Reset password failed!": {en: "",zhcn: "重置密码失败!",zhtw: "重置密碼失敗!"}
"Reset password success!": {en: "",zhcn: "重置密码成功!",zhtw: "重置密碼成功!"}
"Are you sure to reset password?": {en: "",zhcn: "确认重置密码吗?",zhtw: "確認重置密碼嗎?"}
"Are you sure the reset password effective date?": {en: "",zhcn: "确认重置密码生效日期吗?",zhtw: "確認重置密碼生效日期嗎?"}
"Reset password": {en: "",zhcn: "重置密码",zhtw: "重置密碼"}
"Reset": {en: "Reset",zhcn: "重置",zhtw: "重置"} "Reset": {en: "Reset",zhcn: "重置",zhtw: "重置"}
"Reset password validity date failed!": {en: "Reset password validity date failed!",zhcn: "重置密码生效日期失败!",zhtw: "重置密碼生效日期失敗!"} "Reset password validity date failed!": {en: "Reset password validity date failed!",zhcn: "重置密码生效日期失败!",zhtw: "重置密碼生效日期失敗!"}
"Reset password validity date success!": {en: "Reset password validity date success!",zhcn: "重置密码生效日期成功!",zhtw: "重置密碼生效日期成功!"} "Reset password validity date success!": {en: "Reset password validity date success!",zhcn: "重置密码生效日期成功!",zhtw: "重置密碼生效日期成功!"}
...@@ -21,3 +14,4 @@ ...@@ -21,3 +14,4 @@
"Ok": {en: "Ok",zhcn: "确认",zhtw: "確認"} "Ok": {en: "Ok",zhcn: "确认",zhtw: "確認"}
"Show Navigation": {en: "Show Navigation",zhcn: "打开导航栏",zhtw: "打開導航欄"} "Show Navigation": {en: "Show Navigation",zhcn: "打开导航栏",zhtw: "打開導航欄"}
"Hide Navigation": {en: "Hide Navigation",zhcn: "关闭导航栏",zhtw: "關閉導航欄"} "Hide Navigation": {en: "Hide Navigation",zhcn: "关闭导航栏",zhtw: "關閉導航欄"}
"mail": {en: "mail",zhcn: "邮箱;",zhtw: "郵箱;"}
\ No newline at end of file
...@@ -45,7 +45,6 @@ view: { ...@@ -45,7 +45,6 @@ view: {
"contcat_id", "contcat_id",
"remark", "remark",
"status", "status",
"department_id"
] ]
primary_key: "id" primary_key: "id"
horizontal_header: [ horizontal_header: [
...@@ -99,6 +98,6 @@ view: { ...@@ -99,6 +98,6 @@ view: {
data_set: { data_set: {
db_table_name: "", db_table_name: "",
db_sql: "select U.id, U.username, U.staffid, C.mail, U.remark, U.status, U.contcat_id, U.fullname, U.department_id, U.product_category from sys_user AS U LEFT JOIN pub_contacts AS C ON U.contcat_id = C.id" db_sql: "select U.id, U.username, U.staffid, C.mail, U.remark, U.status, U.contcat_id, U.fullname from sys_user AS U LEFT JOIN pub_contacts AS C ON U.contcat_id = C.id"
} }
} }
\ No newline at end of file
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
"MAIN_TOOLBAR": [ "MAIN_TOOLBAR": [
{"type":"spacing","size":10}, {"type":"spacing","size":10},
{"type":"toolitem","action":"new"}, {"type":"toolitem","action":"new"},
{"type":"toolitem","action":"new"},
{"type":"stretcher"}, {"type":"stretcher"},
{"type":"searchentry","name":"SEARCH_ENTRY"}, {"type":"searchentry","name":"SEARCH_ENTRY"},
{"type":"toolitem","action":"refresh"} {"type":"toolitem","action":"refresh"}
......
this.afterViewInit = function () {
var self = this;
var stackup_viewer = self.uiLoader().getObject('stackup');
stackup_viewer.setDrawSetting(self.config("stackup.draw_setting"));
var selector = new TSqlSelectorV2;
selector.setTable("pdm_stkmatlib");
selector.setWhere("class = 'Core'");
selector.setField("DISTINCT family");
selector.setOrder(["family ASC"]);
var cores = self.runSqlQueryOnThreadSync("TOPSQLTHREAD_SELECT_ARRAYMAP", selector);
cores = _.map(cores, function(item) { return { name: item.family, text: item.family } } );
self.naviView().getObject('attr_data.core_family').setData('item_list', cores);
selector.clear();
selector.setTable("pdm_stkmatlib");
selector.setWhere("class = 'Prepreg'");
selector.setField("DISTINCT family");
selector.setOrder(["family ASC"]);
var pps = self.runSqlQueryOnThreadSync("TOPSQLTHREAD_SELECT_ARRAYMAP", selector);
pps = _.map(pps, function(item) { return { name: item.family, text: item.family } } );
self.naviView().getObject('attr_data.pp_family').setData('item_list', pps);
}
this.onNaviReset = function () {
var naviUi = this.naviLoader();
naviUi.clearValues();
this.refresh();
}
\ No newline at end of file
try { try {
this.reload(); this.reloadItem();
} catch(e) { } catch(e) {
print(e); print(e);
} }
/*---ACTION--- /*---ACTION---
ICON: "times" ICON: "cancel"
LABEL: "Cancel" LABEL: "Cancel"
LABEL_ZHCN: "取消" LABEL_ZHCN: "取消"
LABEL_ZHTW: "取消" LABEL_ZHTW: "取消"
ACCEL: "" ACCEL: ""
TOOLTIP: "Cancel Edit" TOOLTIP: "Cancel the action"
TOOLTIP_ZHCN: "取消编辑" TOOLTIP_ZHCN: "取消动作"
TOOLTIP_ZHTW: "刷新編輯" TOOLTIP_ZHTW: "取消動作"
CHECKED: "" CHECKED: ""
GROUP: "" GROUP: ""
STYLE: "button_style=both" STYLE: "button_style=text"
LANG: "JavaScript" LANG: "JavaScript"
STATUS: "Release" STATUS: "Release"
VERSION: "1" VERSION: "1"
STATEHOOK: "return (this.isDataModified() ) ? 'enable' : 'hide';" STATEHOOK: "return (this.isDetailModified()) ? 'enable' : 'hide';"
---ACTION---*/ ---ACTION---*/
\ No newline at end of file
try { try {
var ans = TMessageBox.question(this, this.ttr("Are you sure to delete selected items?"), '', this.ttr('Delete'), var ans = TMessageBox.question(this, this.ttr("Do you want to delete the selected item?"), '', '',
[this.ttr("Delete") + ":Yes:Yes:Error", this.ttr("Cancel") + ":Cancel:Cancel:Normal"]); [this.ttr('Delete')+':Yes:Yes:Error', this.ttr('Cancel')+':Cancel:Cancel:Normal']);
if (ans != 'Yes') { if (ans != 'Yes') {
return; return;
} }
this.deleteItem(this.selectedItems()); this.deleteItems(this.selectedItems());
} catch (e) { } catch (e) {
print(e); print(e);
} }
/*---ACTION--- /*---ACTION---
ICON: "times-circle" ICON: "times-circle"
LABEL: "Delete" LABEL: "Delete"
LABEL_ZHCN: "除" LABEL_ZHCN: "除"
LABEL_ZHTW: "刪除" LABEL_ZHTW: "刪除"
ACCEL: "Delete" ACCEL: "Delete"
TOOLTIP: "Delete User" TOOLTIP: "Delete"
TOOLTIP_ZHCN: "删除用户" TOOLTIP_ZHCN: "删除"
TOOLTIP_ZHTW: "刪除用戶" TOOLTIP_ZHTW: "刪除"
PERMISSION: "sys-user-delete" PERMISSION: "sys-user-delete"
CHECKED: "" CHECKED: ""
GROUP: "" GROUP: ""
...@@ -25,5 +26,5 @@ STYLE: "size=small button_style=both" ...@@ -25,5 +26,5 @@ STYLE: "size=small button_style=both"
LANG: "JavaScript" LANG: "JavaScript"
STATUS: "Release" STATUS: "Release"
VERSION: "1" VERSION: "1"
STATEHOOK: "if(this.selectedItems().length > 0 && this.canModify()){return 'enable'}else{return 'disable'}" STATEHOOK: "if(this.selectedItems().length > 0 && !this.isDetailModified()){return 'enable'}else{return 'disable'}"
---ACTION---*/ ---ACTION---*/
\ No newline at end of file
...@@ -9,7 +9,7 @@ ICON: "plus" ...@@ -9,7 +9,7 @@ ICON: "plus"
LABEL: "New" LABEL: "New"
LABEL_ZHCN: "新建" LABEL_ZHCN: "新建"
LABEL_ZHTW: "新建" LABEL_ZHTW: "新建"
ACCEL: "Ctrl+N" ACCEL: ""
TOOLTIP: "Add new item" TOOLTIP: "Add new item"
TOOLTIP_ZHCN: "新建条目" TOOLTIP_ZHCN: "新建条目"
TOOLTIP_ZHTW: "新建條目" TOOLTIP_ZHTW: "新建條目"
...@@ -20,5 +20,5 @@ STYLE: "button_style=both" ...@@ -20,5 +20,5 @@ STYLE: "button_style=both"
LANG: "JavaScript" LANG: "JavaScript"
STATUS: "Release" STATUS: "Release"
VERSION: "1" VERSION: "1"
STATEHOOK: "if(this.canModify()){return 'enable'}else{return 'disable'}" STATEHOOK: "return (!this.isDetailModified()) ? 'enable' : 'disable';"
---ACTION---*/ ---ACTION---*/
\ No newline at end of file
try { try {
this.refresh(false); this.refresh();
} catch (e) { } catch (e) {
print(e); print(e);
} }
/*---ACTION--- /*---ACTION---
ICON: "refresh" ICON: "refresh"
LABEL: "Refresh" LABEL: "Refresh"
LABEL_ZHCN: "刷新" LABEL_ZHCN: "刷新"
LABEL_ZHTW: "刷新" LABEL_ZHTW: "刷新"
ACCEL: "F5" ACCEL: "F5"
TOOLTIP: "Reload data from database" TOOLTIP: "Refresh"
TOOLTIP_ZHCN: "重载数据库数据" TOOLTIP_ZHCN: "刷新"
TOOLTIP_ZHTW: "重載數據庫數據" TOOLTIP_ZHTW: "刷新"
CHECKED: "" CHECKED: ""
GROUP: "" GROUP: ""
STYLE: "size=small button_style=icon" STYLE: "size=small button_style=icon"
......
try { try {
this.reload(); this.reloadItem();
} catch(e) { } catch(e) {
print(e); print(e);
} }
/*---ACTION--- /*---ACTION---
ICON: "refresh" ICON: "refresh"
LABEL: "Refresh" LABEL: "Refresh"
...@@ -19,5 +18,5 @@ STYLE: "button_style=icon" ...@@ -19,5 +18,5 @@ STYLE: "button_style=icon"
LANG: "JavaScript" LANG: "JavaScript"
STATUS: "Release" STATUS: "Release"
VERSION: "1" VERSION: "1"
STATEHOOK: "return (this.isDataModified() || this.uid() == 0) ? 'hide' : 'enable';" STATEHOOK: "return this.isDetailModified() ? 'hide' : 'enable';"
---ACTION---*/ ---ACTION---*/
\ No newline at end of file
try { try {
this.saveData(); this.saveItem();
} catch (e) { } catch(e) {
print(e); print(e);
} }
/*---ACTION--- /*---ACTION---
ICON: "save" ICON: "save"
LABEL: "Save" LABEL: "Save"
LABEL_ZHCN: "保存" LABEL_ZHCN: "保存"
LABEL_ZHTW: "保存" LABEL_ZHTW: "保存"
ACCEL: "Ctrl+S" ACCEL: "Ctrl+S"
TOOLTIP: "Save data to database" TOOLTIP: "Save"
TOOLTIP_ZHCN: "保存数据至数据库" TOOLTIP_ZHCN: "保存"
TOOLTIP_ZHTW: "保存數據至數據庫" TOOLTIP_ZHTW: "保存"
PERMISSION: "sys-user-edit" PERMISSION: ""
CHECKED: "" CHECKED: ""
GROUP: "" GROUP: ""
STYLE: " button_style=both" STYLE: " button_style=both"
LANG: "JavaScript" LANG: "JavaScript"
STATUS: "Release" STATUS: "Release"
VERSION: "1" VERSION: "1"
STATEHOOK: "return (this.isDataModified() ) ? 'enable' : 'disable';" STATEHOOK: "return (this.isDetailModified()) ? 'enable' : 'disable';"
---ACTION---*/ ---ACTION---*/
\ No newline at end of file
function func(self) {
var ui = {
type: 'TabWidget',
child:
{
type: 'VBoxLayout',
property: {stylesheet:"QTabWidget{background-color:red}"},
pack: { label: self.ttr('User Info') },
child: [
{
type: 'FormGridLayout',
child: [
{
name: 'id',
type: 'LineEdit',
title: self.ttr('ID'),
pack: { label: self.ttr('ID') },
property: { enabled: false },
state: function(obj) {
return "Hide";
}
},
{
name: 'contcat_id',
type: 'LineEdit',
property: { enabled: false },
state: function(obj,self) {
return 'Hide';
}
},
{
name: 'username',
type: 'LineEdit',
pack: { label: self.ttr('Login Name') }
},
{
name: 'password',
type: 'LineEdit',
pack: { label: self.ttr('Password') },
state: function(obj) {
return "Hide";
}
},
{
name: 'fullname',
type: 'LineEdit',
pack: { label: self.ttr('Full Name') }
},
{
name: 'staffid',
type: 'LineEdit',
pack: { label: self.ttr('Staff ID') }
},
{
name: 'mail',
type: 'LineEdit',
pack: { label: self.ttr('Mail') }
},
{
name: 'remark',
type: 'PlainTextEdit',
property: { vertical_scroll_bar_policy: 'ScrollBarAlwaysOff' },
pack: { label: self.ttr('Remark') }
},
{
name: 'status',
type: 'ComboBox',
property: { item_list: TOPENM.enumList("sys-user-status").toComboList() },
pack: { label: self.ttr('Status') }
},
]
},
{
type: 'Stretch'
}
]
}
};
return ui;
}
\ No newline at end of file
"Full Name": {en: "Full Name",zhcn: "全名",zhtw: "全名"}
"Login Name": {en: "Login Name",zhcn: "登录名",zhtw: "登錄名"}
"Staff ID": {en: "Staff ID",zhcn: "工号",zhtw: "工號"}
"Status": {en: "Status",zhcn: "状态",zhtw: "狀態"}
"Search": {en: "Search",zhcn: "搜索",zhtw: "搜索"}
"Do you want to delete the selected item?": {en: "", zhcn: "确定删除选中项?", zhtw: "確定刪除選中項?"}
"Delete": {en: "Delete",zhcn: "删除",zhtw: "刪除"}
"Cancel": {en: "Cancel",zhcn: "取消",zhtw: "取消"}
"Remark": {en: "Remark",zhcn: "备注",zhtw: "備註"}
"Mail": {en: "Mail",zhcn: "邮箱",zhtw: "郵箱"}
"User Info": {en: "User Info",zhcn: "用户信息",zhtw: "用戶信息"}
\ No newline at end of file
...@@ -8,46 +8,44 @@ sys_title_zhtw: "用戶管理" ...@@ -8,46 +8,44 @@ sys_title_zhtw: "用戶管理"
sys_icon: "user-o" sys_icon: "user-o"
# 模块对应的插件DLL名称 # 模块对应的插件DLL名称
sys_plugin: "topikm6-topsys-plugin" sys_plugin: "toptemplateclassplugin"
# 模块对应的类名 # 模块对应的类名
sys_class: "SysUserMgt" sys_class: "TopTemplateClass4"
# 打开模块的权限 # 打开模块的权限
sys_open_right: "sys-user-read" sys_open_right: ""
# 当关闭窗口时,如果提示是否保存,保存调用的action # 当关闭窗口时,如果提示是否保存,保存调用的action
sys_save_action: "" sys_save_action: ""
# 该模块用到的枚举列表 # 该模块用到的枚举列表
sys_enum_list: ["sys-user-status"] sys_enum_list: []
# 该模块用到的除了Action之外的权限列表 # 该模块用到的除了Action之外的权限列表
sys_permission_list: [] sys_permission_list: ["sys-user-status"]
#详情页面的初始大小
detail.perfect_size.width: 600
# 产品类型,此选项用于当多个产品共用一个数据库时,只想看到自已产品的用户; navi {
# * 表示匹配所有产品 __type__: "UiLoader"
product_category: [] is_expanded: true
navi: {
is_expanded: "true"
} }
view: { # 主表格
view {
# 数据项, 默认包含表头中配置的数据项
data_keys: [ data_keys: [
"id", "id",
"username", "username",
"fullname", "fullname",
"contcat_id",
"staffid", "staffid",
"mail", "mail",
"contcat_id",
"remark", "remark",
"status", "status"
"department_id"
] ]
# 主键
primary_key: "id" primary_key: "id"
# 水平表头
horizontal_header: [ horizontal_header: [
{ {
"name": "username", "name": "username",
...@@ -96,12 +94,19 @@ view: { ...@@ -96,12 +94,19 @@ view: {
"resizeMode": "Interactive", "resizeMode": "Interactive",
}, },
] ]
# 默认排序列
data_set: { sort_by: "id DESC"
db_table_name: "", # 数据集
db_sql: "select U.id, U.username, U.staffid, C.mail, U.remark, U.status, U.contcat_id, U.fullname, U.department_id, U.product_category from sys_user AS U LEFT JOIN pub_contacts AS C ON U.contcat_id = C.id" data_set {
# 数据库表名
db_table_name: ""
# 删除标记
# 若为空表示做物理删除
db_del_flag_key: ""
# 过滤项
db_filter {
}
db_sql: "select U.id, U.username, U.staffid, C.mail, U.remark, U.status, U.contcat_id, U.fullname from sys_user AS U LEFT JOIN pub_contacts AS C ON U.contcat_id = C.id"
} }
} }
# 多工厂同步(用户的增删改)
multi_plant_sync: false
function func(self) { function func(self) {
return { return {
type: "FormGridLayout", type: 'FormGridLayout',
child: [ child: [
{ {
name: "username", name: "username",
...@@ -34,8 +34,7 @@ function func(self) { ...@@ -34,8 +34,7 @@ function func(self) {
item_list: TOPENM.enumList("sys-user-status").toComboList(), item_list: TOPENM.enumList("sys-user-status").toComboList(),
user_data: { field_name: "status" } user_data: { field_name: "status" }
} }
}, }
] ]
}; };
} }
# 表格的右键菜单
"TABLEVIEW_POPUP": [
{"type":"menuitem","action":"new"},
{"type":"separator"},
{"type":"menuitem","action":"open"},
{"type":"separator"},
{"type":"menuitem","action":"delete"},
{"type":"separator"},
{"type":"menuitem","action":"refresh"},
{"type":"separator"},
{"type":"menuitem","action":"reset_password"},
{"type":"menuitem","action":"reset_password_validity"}
]
# 工具栏 # 工具栏
"MAIN_TOOLBAR": [ "MAIN_TOOLBAR": [
{"type":"spacing","size":10},
{"type":"toolitem","action":"new"}, {"type":"toolitem","action":"new"},
{"type":"stretcher"}, {"type":"stretcher"},
{"type":"searchentry","name":"SEARCH_ENTRY"}, {"type":"searchentry","name":"SEARCH_ENTRY"}
{"type":"toolitem","action":"refresh"} {"type":"toolitem","action":"refresh"}
] ]
# 表格的右键菜单
"TABLEVIEW_POPUP": [
{"type":"menuitem","action":"delete"},
{"type":"separator"},
{"type":"menuitem","action":"refresh"}
]
# 底部工具栏 # 底部工具栏
"BOTTOM_TOOLBAR" : [ "BOTTOM_TOOLBAR" : [
{"type":"stretcher"}, {"type":"stretcher"},
{"type":"pagetool","name":"PAGE_TOOL"} {"type":"pagetool","name":"PAGE_TOOL"}
] ]
# 详细信息工具栏
"DETAIL_TOOLBAR": [
{"type":"toolitem","action":"save_detail"},
{"type":"stretcher"},
{"type":"toolitem","action":"cancel_detail"},
{"type":"toolitem","action":"refresh_detail"}
]
\ No newline at end of file
// 保存联系人数据时的额外处理(标准产品中注释掉,项目配置需要时启用)
// this.handleContactData = function (iContactData, iUserData) {
// var data = iContactData;
// data['attr_data'] = {
// staffid: _.toString(iUserData['staffid'])
// };
// print(_.toString(data));
// return data;
// }
// 保存用户数据时的额外处理
// this.handleSaveData = function (iSaveData) {
// var data = iSaveData;
// data['attr_data']['effective_date'] = "";
// return data;
// }
\ No newline at end of file
try {
this.copy();
} catch (e) {
print(e);
}
/*---ACTION---
ICON: "copy"
LABEL: "Copy"
LABEL_ZHCN: "复制"
LABEL_ZHTW: "複製"
ACCEL: ""
TOOLTIP: "Copy selected item"
TOOLTIP_ZHCN: "复制选中条目"
TOOLTIP_ZHTW: "複製選中條目"
PERMISSION: "sys-user-edit"
CHECKED: ""
GROUP: ""
STYLE: "button_style=icon"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: "return (this.isDataModified() || this.uid() == 0) ? 'hide' : 'enable';"
---ACTION---*/
\ No newline at end of file
"Add Role": {en: "Add Role",zhcn: "添加角色",zhtw: "添加角色"}
"Admin can not be deleted!": {en: "Admin can not be deleted!",zhcn: "Admin不能被删除!",zhtw: "Admin不能被刪除!"}
"Are you sure to delete selected roles?": {en: "Are you sure to delete selected roles?",zhcn: "确定要删除选择的角色吗?",zhtw: "確定要刪除選擇的角色嗎?"}
"Full Name": {en: "Full Name",zhcn: "全名",zhtw: "全名"}
"Login Name": {en: "Login Name",zhcn: "登录名",zhtw: "登錄名"}
"Mail": {en: "Mail",zhcn: "邮箱",zhtw: "郵箱"}
"New User": {en: "New User",zhcn: "新建用户",zhtw: "新建用戶"}
"Password": {en: "Password",zhcn: "密码",zhtw: "密碼"}
"Remove Role": {en: "Remove Role",zhcn: "移除角色",zhtw: "移除角色"}
"Role": {en: "Role",zhcn: "角色",zhtw: "角色"}
"Role Name": {en: "Role Name",zhcn: "角色名称",zhtw: "角色名稱"}
"Saving data failed!": {en: "Saving data failed!",zhcn: "保存数据失败!",zhtw: "保存數據失敗!"}
"Staff ID": {en: "Staff ID",zhcn: "工号",zhtw: "工號"}
"Status": {en: "Status",zhcn: "状态",zhtw: "狀態"}
"User Information": {en: "User Information",zhcn: "用户信息",zhtw: "用戶信息"}
"User-%1": {en: "User-%1",zhcn: "用户-%1",zhtw: "用戶-%1"}
"invalid mail format": {en: "invalid mail format",zhcn: "无效的邮箱格式;",zhtw: "無效的郵箱格式;"}
"Product Category": {en: "Product Category",zhcn: "产品分类",zhtw: "產品分類"}
"'%1' already exists!": {en: "'%1' already exists!", zhcn: "'%1' 已经存在!", zhtw: "'%1' 已經存在!"}
"Clear All": {en: "Clear All",zhcn: "清除选择",zhtw: "清除選擇"}
"Password Validity Control": {en: "Password Validity Control",zhcn: "密码有效期管控",zhtw: "密碼有效期管控"}
"Validity Period": {en: "Validity Period",zhcn: "有效期",zhtw: "有效期"}
"Month": {en: "Month",zhcn: "月",zhtw: "月"}
\ No newline at end of file
# 模块标题
sys_title: "User"
sys_title_en: ""
sys_title_zhcn: "用户信息"
sys_title_zhtw: "用戶信息"
# 模块图标(普通图标在font awesome中找 http://fontawesome.io/icons/)
sys_icon: "user"
# 模块对应的插件DLL名称
sys_plugin: "topikm6-topsys-plugin"
# 模块对应的类名
sys_class: "SysUser"
# 打开模块的权限
sys_open_right: "sys-user-read"
# 当关闭窗口时,如果提示是否保存,保存调用的action
sys_save_action: "save"
# 该模块用到的枚举列表
sys_enum_list: ["sys-user-status", "sys-product-category"]
# 该模块用到的除了Action之外的权限列表
sys_permission_list: []
# 模块的最佳显示尺寸
perfect_size : {
width: 800
height: 600
}
# 模块的最大尺寸
maximum_size.width: 800
# 新建用户时默认值:
default_value : {
status: "active",
password: "123456",
product_category: "*",
"attr_data.password_validity_control": 1,
"attr_data.validity_period": 6
}
# 工具栏
"MAIN_TOOLBAR": [
{"type":"toolitem","action":"save"},
{"type":"stretcher"},
{"type":"toolitem","action":"copy"},
{"type":"toolitem","action":"cancel"},
{"type":"toolitem","action":"refresh"}
]
This diff is collapsed.
...@@ -108,86 +108,6 @@ function func(self) { ...@@ -108,86 +108,6 @@ function func(self) {
return [title + self.ttr(" can not be null"), 'Error']; return [title + self.ttr(" can not be null"), 'Error'];
} }
} }
},
{
name: 'attr_data.password_validity_control',
type: 'CheckBox',
title: self.ttr('Password Validity Control'),
property: {},
pack: { label: self.ttr('Password Validity Control') },
// getter : function(obj, self) {
// return obj.getData("current_names");
// },
// setter: function(obj,value,self){
// obj.setData("current_names", value);
// },
callback: function (obj, checked, self) {
if (checked) {
this.setState("attr_data.validity_period", "show");
} else {
this.setState("attr_data.validity_period", "hide");
}
},
setter: function (obj, value, self) {
if (value === 1 || value == true || value === 'on' || value === 'yes') {
obj.setIntValue(1);
this.setState("attr_data.validity_period", "show");
} else {
obj.setIntValue(0);
this.setState("attr_data.validity_period", "hide");
}
},
state: function (obj, self) {
if (APP.hasRight("sys-user-password-validity-control")) {
return 'Show';
} else {
return 'Hide';
}
}
},
{
name: 'attr_data.validity_period',
type: 'IntLineEdit',
title: self.ttr('Validity Period'),
property: { min_value: 0 },
pack: { label: self.ttr('Validity Period') },
state: function (obj, self) {
if (APP.hasRight("sys-user-password-validity-control") &&
this.getValue('attr_data.password_validity_control') == 1) {
return 'Show';
} else {
return 'Hide';
}
},
child: [
{
name: "validity_period_unit",
type: "Label",
property: {
text: " " + self.ttr('Month') + " ",
alignment: "HCenter|VCenter",
fixed_height: 26,
stylesheet: "background-color: white;border-left: 1px solid lightgray;"
}
}
]
},
{
name: 'product_category',
type: 'MultiComboBox',
title: self.ttr('Product Category'),
property: { item_list: TOPENM.enumList("sys-product-category").toComboList(), name_format: 'A,B' },
pack: { label: self.ttr('Product Category') },
getter : function(obj, self)
{
return obj.getData("current_names");
},
setter: function(obj,value,self){
obj.setData("current_names", value);
},
state: function(obj, self) {
return 'hide';
}
} }
] ]
} }
......
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