Commit 61ba5f15 authored by Qiu Chuntao's avatar Qiu Chuntao

Optimization and modification

parent 7e12663a
Pipeline #11802 failed with stage
in 1 minute and 3 seconds
#include "custommoduleplugin.h" #include "custommoduleplugin.h"
#include "sysusermgt/sysusermgt.h" #include "sysusermgt/sysusermgt.h"
//#include "sysmainwindow/msysmainwindow.h"
QStringList TopSysPlugin::getClassList() QStringList TopSysPlugin::getClassList()
{ {
return QStringList()<< QStringLiteral("Musermgt"); return QStringList()<< QStringLiteral("SysUserMgt");
} }
TopClassAbs *TopSysPlugin::newClass(const QString &iClassName, TopClassAbs *TopSysPlugin::newClass(const QString &iClassName,
const QString &iModuleName, const QString &iModuleName,
const QVariantMap &iUrlPars) const QVariantMap &iUrlPars)
{ {
if (iClassName == QStringLiteral("Musermgt")) { if (iClassName == QStringLiteral("SysUserMgt")) {
return new Musermgt(iModuleName, iUrlPars, nullptr); return new SysUserMgt(iModuleName, iUrlPars, nullptr);
} }
return nullptr; return nullptr;
} }
...@@ -30,9 +30,9 @@ ...@@ -30,9 +30,9 @@
#include <tbaseutil/tdataparse.h> #include <tbaseutil/tdataparse.h>
Musermgt::Musermgt(const QString &iModuleNameStr, SysUserMgt::SysUserMgt(const QString &iModuleNameStr,
const QVariantMap &iUrlPars, const QVariantMap &iUrlPars,
QWidget *iParent): QWidget *iParent):
TopClassAbs(iParent) TopClassAbs(iParent)
{ {
initModule(iModuleNameStr, iUrlPars); initModule(iModuleNameStr, iUrlPars);
...@@ -66,13 +66,13 @@ Musermgt::Musermgt(const QString &iModuleNameStr, ...@@ -66,13 +66,13 @@ Musermgt::Musermgt(const QString &iModuleNameStr,
QTimer::singleShot(0, this, SLOT(refresh())); QTimer::singleShot(0, this, SLOT(refresh()));
} }
Musermgt::~Musermgt() SysUserMgt::~SysUserMgt()
{ {
this->saveSizeState(); this->saveSizeState();
this->saveObjectState(mTableView); this->saveObjectState(mTableView);
} }
void Musermgt::setData(const QVariantMap &iDataMap) void SysUserMgt::setData(const QVariantMap &iDataMap)
{ {
DetailView->loadValues(iDataMap, false); DetailView->loadValues(iDataMap, false);
...@@ -82,17 +82,17 @@ void Musermgt::setData(const QVariantMap &iDataMap) ...@@ -82,17 +82,17 @@ void Musermgt::setData(const QVariantMap &iDataMap)
} }
void Musermgt::reload() void SysUserMgt::reload()
{ {
setDetailUid(mLastDetailUid.isEmpty() ? mDetailUid : mLastDetailUid, true); setDetailUid(mLastDetailUid.isEmpty() ? mDetailUid : mLastDetailUid, true);
} }
bool Musermgt::DetailModified() const bool SysUserMgt::DetailModified() const
{ {
return IsDetailchange; return IsDetailchange;
} }
void Musermgt::setIsDetailModified(bool iIsDetailModified) void SysUserMgt::setIsDetailModified(bool iIsDetailModified)
{ {
if (IsDetailchange == iIsDetailModified) { if (IsDetailchange == iIsDetailModified) {
return; return;
...@@ -101,17 +101,17 @@ void Musermgt::setIsDetailModified(bool iIsDetailModified) ...@@ -101,17 +101,17 @@ void Musermgt::setIsDetailModified(bool iIsDetailModified)
emit isDetailModifiedChanged(iIsDetailModified); emit isDetailModifiedChanged(iIsDetailModified);
} }
QVariantList Musermgt::selectedItems() QVariantList SysUserMgt::selectedItems()
{ {
return mSelectedItems; return mSelectedItems;
} }
QString Musermgt::detailUid() const QString SysUserMgt::detailUid() const
{ {
return mDetailUid; return mDetailUid;
} }
void Musermgt::setDetailUid(const QString &iUid, bool iForceRefresh) void SysUserMgt::setDetailUid(const QString &iUid, bool iForceRefresh)
{ {
if (iForceRefresh || mDetailUid != iUid) { if (iForceRefresh || mDetailUid != iUid) {
mDetailUid = iUid; mDetailUid = iUid;
...@@ -119,15 +119,16 @@ void Musermgt::setDetailUid(const QString &iUid, bool iForceRefresh) ...@@ -119,15 +119,16 @@ void Musermgt::setDetailUid(const QString &iUid, bool iForceRefresh)
} }
} }
void Musermgt::newItem() void SysUserMgt::newItem()
{ {
mLastDetailUid = mDetailUid; mLastDetailUid = mDetailUid;
setDetailUid(QString()); setDetailUid(QString());
setIsDetailModified(true); setIsDetailModified(true);
} }
//新增用户
void Musermgt::saveItem() /*保存详细信息表里的数据信息*/
void SysUserMgt::saveItem()
{ {
//验证有效性 //验证有效性
QVariantList errLst = DetailView->validateAll("COMMIT", true, "ERROR"); QVariantList errLst = DetailView->validateAll("COMMIT", true, "ERROR");
...@@ -157,10 +158,10 @@ void Musermgt::saveItem() ...@@ -157,10 +158,10 @@ void Musermgt::saveItem()
i.next(); i.next();
saveData.insert(i.key(), i.value()); //向saveData里插入各项数据的键和值 saveData.insert(i.key(), i.value()); //向saveData里插入各项数据的键和值
} }
} }
QVariantMap defaultValueMap; QVariantMap defaultValueMap;
QVariantMap resultmap; QVariantMap resultmap;
defaultValueMap = defaultValueMap.unite(config("default_value").toMap()); defaultValueMap = defaultValueMap.unite(config("default_value").toMap()); //去module里拿默认的的信息
QString password = defaultValueMap.value("password").toString(); QString password = defaultValueMap.value("password").toString();
resultmap = TDataParse::mergeVariantMap(saveData, defaultValueMap); resultmap = TDataParse::mergeVariantMap(saveData, defaultValueMap);
resultmap.insert("password", TDataParse::getVariantMd5(password)); resultmap.insert("password", TDataParse::getVariantMd5(password));
...@@ -188,8 +189,8 @@ void Musermgt::saveItem() ...@@ -188,8 +189,8 @@ void Musermgt::saveItem()
alertOk(ttr("Data saved")); alertOk(ttr("Data saved"));
} }
//删除用户 /*删除用户*/
void Musermgt::removeUser(const QVariantList &iItems) void SysUserMgt::removeUser(const QVariantList &iItems)
{ {
if (mTableConf.dbDelFlagKey.isEmpty()) { if (mTableConf.dbDelFlagKey.isEmpty()) {
TSqlDeleterV2 deleter; TSqlDeleterV2 deleter;
...@@ -223,12 +224,12 @@ void Musermgt::removeUser(const QVariantList &iItems) ...@@ -223,12 +224,12 @@ void Musermgt::removeUser(const QVariantList &iItems)
} }
} }
void Musermgt::onPageChanged() void SysUserMgt::onPageChanged()
{ {
refresh(false); refresh(false);
} }
void Musermgt::onSelectionChanged() void SysUserMgt::onSelectionChanged()
{ {
mSelectedItems = mTableView->selectedPrimaryKeys(); mSelectedItems = mTableView->selectedPrimaryKeys();
QString curId; QString curId;
...@@ -244,18 +245,18 @@ void Musermgt::onSelectionChanged() ...@@ -244,18 +245,18 @@ void Musermgt::onSelectionChanged()
refreshActionState(); refreshActionState();
} }
void Musermgt::onDetailSaved(const QVariant &iUidStr) void SysUserMgt::onDetailSaved(const QVariant &iUidStr)
{ {
this->refresh(false); this->refresh(false);
mTableView->selectRow(iUidStr); mTableView->selectRow(iUidStr);
} }
void Musermgt::onDetailDataChanged() void SysUserMgt::onDetailDataChanged()
{ {
setIsDetailModified(true); setIsDetailModified(true);
} }
void Musermgt::onDetailChanged(bool iIsDetailModified) void SysUserMgt::onDetailChanged(bool iIsDetailModified)
{ {
mTableView->setEnabled(!iIsDetailModified); mTableView->setEnabled(!iIsDetailModified);
if (iIsDetailModified) { if (iIsDetailModified) {
...@@ -266,16 +267,16 @@ void Musermgt::onDetailChanged(bool iIsDetailModified) ...@@ -266,16 +267,16 @@ void Musermgt::onDetailChanged(bool iIsDetailModified)
refreshActionState(); refreshActionState();
} }
//刷新表格 /*刷新表格*/
void Musermgt::refresh(bool iResetPage) void SysUserMgt::refresh(bool iResetPage)
{ {
TSqlSelectorV2 selector; TSqlSelectorV2 selector;
if (!mTableConf.dbSql.isEmpty()) { if (!mTableConf.dbSql.isEmpty()) {
selector.setTable(QString("(1% TEMP_TABLE)").arg(mTableConf.dbSql)); selector.setTable(mTableConf.dbSql);
} else if (!mTableConf.dbTableName.isEmpty()) { } else if (!mTableConf.dbTableName.isEmpty()) {
selector.setTable(mTableConf.dbTableName); selector.setTable(mTableConf.dbTableName);
} else { } else {
alertError(ttr("dbSql or dbtablename isempty!")); alertError(ttr("dbSql and dbtablename isempty!"));
return; //dbSql和dbTableName为空则返回不做处理 return; //dbSql和dbTableName为空则返回不做处理
} }
selector.setField(mTableConf.queryFields); selector.setField(mTableConf.queryFields);
...@@ -287,7 +288,7 @@ void Musermgt::refresh(bool iResetPage) ...@@ -287,7 +288,7 @@ void Musermgt::refresh(bool iResetPage)
if (!mTableConf.dbDelFlagKey.isEmpty()) { if (!mTableConf.dbDelFlagKey.isEmpty()) {
selector.addWhere(QString("%1 = 0 OR %1 IS NULL").arg(mTableConf.dbDelFlagKey)); selector.addWhere(QString("%1 = 0 OR %1 IS NULL").arg(mTableConf.dbDelFlagKey));
} }
if(!mTableConf.dbFilter.isEmpty()) { if (!mTableConf.dbFilter.isEmpty()) {
selector.addWhere(mTableConf.dbFilter); selector.addWhere(mTableConf.dbFilter);
} }
t::loading(this); t::loading(this);
...@@ -311,11 +312,10 @@ void Musermgt::refresh(bool iResetPage) ...@@ -311,11 +312,10 @@ void Musermgt::refresh(bool iResetPage)
setDetailUid(QString()); setDetailUid(QString());
alertOk(ttr("Data loaded")); alertOk(ttr("Data loaded"));
} }
return;
} }
//刷新详细表单 /*刷新详细表单*/
void Musermgt::refreshDetail(const QString &iUid) void SysUserMgt::refreshDetail(const QString &iUid)
{ {
if (iUid.isEmpty()) { if (iUid.isEmpty()) {
DetailView->loadValues(QVariantMap(), true); DetailView->loadValues(QVariantMap(), true);
...@@ -346,8 +346,8 @@ void Musermgt::refreshDetail(const QString &iUid) ...@@ -346,8 +346,8 @@ void Musermgt::refreshDetail(const QString &iUid)
setIsDetailModified(false); setIsDetailModified(false);
} }
//初始化界面 /*初始化界面*/
void Musermgt::initTableView() void SysUserMgt::initTableView()
{ {
mBodySplitter = new TSplitter(this); mBodySplitter = new TSplitter(this);
mBodySplitter->setObjectName("mBodySplitter"); mBodySplitter->setObjectName("mBodySplitter");
...@@ -399,7 +399,6 @@ void Musermgt::initTableView() ...@@ -399,7 +399,6 @@ void Musermgt::initTableView()
connect(mPageTool, SIGNAL(pageChanged(int,int)), this, SLOT(onPageChanged())); connect(mPageTool, SIGNAL(pageChanged(int,int)), this, SLOT(onPageChanged()));
} }
} }
QWidget *detailWgt = new QWidget(this); QWidget *detailWgt = new QWidget(this);
QVBoxLayout *detailLayout = new QVBoxLayout(detailWgt); QVBoxLayout *detailLayout = new QVBoxLayout(detailWgt);
detailLayout->setSpacing(0); detailLayout->setSpacing(0);
...@@ -409,11 +408,7 @@ void Musermgt::initTableView() ...@@ -409,11 +408,7 @@ void Musermgt::initTableView()
detailLayout->addWidget(toolbar, 0); detailLayout->addWidget(toolbar, 0);
} }
DetailView = new TUiLoader(this); DetailView = new TUiLoader(this);
DetailView->setObjectName("__detail__");
const QStringList typePlugins = config("uiloader_plugins").toStringList();
if (typePlugins.size() > 0) {
TopClassHelper::setUiLoaderPluginCallback(DetailView,this,typePlugins);
}
connect(DetailView, SIGNAL(dataChanged()), this, SLOT(onDetailDataChanged())); connect(DetailView, SIGNAL(dataChanged()), this, SLOT(onDetailDataChanged()));
DetailView->setProperty("SS_BG", "PANEL"); DetailView->setProperty("SS_BG", "PANEL");
DetailView->setSelf(this); DetailView->setSelf(this);
...@@ -429,132 +424,3 @@ void Musermgt::initTableView() ...@@ -429,132 +424,3 @@ void Musermgt::initTableView()
detailWgt->setVisible(false); detailWgt->setVisible(false);
} }
} }
Musermgt::NaviType Musermgt::str2NaviType(const QString &iType)
{
const QString type = iType.toUpper();
if (type == "UILOADER") {
return NaviType::UiLoader;
} else if (type == "ADVANCEDQUERY") {
return NaviType::AdvancedQuery;
} else if (type == "NAVIFILTER") {
return NaviType::NaviFilter;
} else if (type == "CATEGORYTREEVIEWANDADVANCEDQUERY") {
return NaviType::CategoryTreeViewAndAdvancedQuery;
} else if (type == "NONE") {
return NaviType::None;
} else {
return NaviType::CategoryTreeView;
}
}
QVariantList Musermgt::parseCategoryConfig()
{
QVariantList categoryLst;
QVariantList categoryConfig = config("navi.categories").toList();
QString format = config("navi.format", "filter_by_enum").toString();
if (format.compare("filter_by_enum") == 0) {
for(const QVariant &item: categoryConfig) {
QVariantMap itemMap = item.toMap();
QString itemName = itemMap.value("name").toString();
QVariantList childrenLst = itemMap.value("children").toList();
QString enumCfg = itemMap.value("enum_children").toString();
QStringList enumCheckedLst = itemMap.value("enum_checked").toStringList();
QStringList enumInvisibleLst = itemMap.value("enum_invisible").toStringList();
if (itemMap.contains("visible")) {
itemMap.insert("VISIBLE", itemMap.take("visible"));
}
if (itemMap.contains("expand")) {
itemMap.insert("EXPAND", itemMap.take("expand"));
}
TSqlWhereCompsiteV2 childWhere;
childWhere.setLogic(TSqlWhereCompsiteV2::Logic_Or);
QVariantList type = TOPENM->enumList(enumCfg)->toComboList();
for (const QVariant &item: type) {
QVariantMap enumMap = item.toMap();
QString enumName = enumMap.value("name").toString();
QVariantMap childMap;
childMap.insert("name",enumName);
childMap.insert("text",ttr(enumMap.value("text").toString()));
childMap.insert("icon",enumMap.value("icon"));
childMap.insert("data", itemName);
if(enumCheckedLst.contains(enumName)) {
childMap.insert("checked",1);
} else {
childMap.insert("checked",0);
}
if (enumInvisibleLst.contains(enumName)) {
childMap.insert("VISIBLE", 0);
} else {
childMap.insert("VISIBLE",1);
}
childrenLst.append(childMap);
}
int checkedChildLen = 0;
for (QVariant &item : childrenLst) {
QVariantMap itemMap = item.toMap();
QString name = itemMap.value("name").toString();
if(itemMap.value("checked").toInt() == 1) {
childWhere.append(itemName, name);
checkedChildLen++;
}
item = itemMap;
}
if (checkedChildLen == childrenLst.length()) {
itemMap.insert("checked", 1);
} else {
itemMap.insert("checked", 0);
}
//mCategoryWhere.append(childWhere);
itemMap.remove("children");
itemMap.remove("enum_children");
itemMap.remove("enum_checked");
itemMap.remove("enum_invisible");
itemMap.insert("text",ttr(itemMap.value("text").toString()));
itemMap.insert("CHILDREN",childrenLst);
categoryLst.append(itemMap);
}
} else if (format.compare("filter_by_sql_where") == 0) {
return categoryConfig;
}
return categoryLst;
}
QVariantMap Musermgt::getDefaultQueryDataFromCfgMap()
{
QVariantMap conditionMap = config("advance").toMap().value("condition").toMap();
QVariantList valueList = conditionMap.value("value").toList();
for (QVariant &var: valueList) {
QVariantMap m = var.toMap();
m.insert("title", ttr(m.value("title").toString()));
var = m;
}
conditionMap.insert("value", valueList);
return conditionMap;
}
void Musermgt::initAdvanceCfgMap()
{
mAdvancedQueryCfgMap = config("advance").toMap();
QVariantList queryItems = mAdvancedQueryCfgMap.value("advanced_items").toList();
QVariantList newQueryItems;
for (QVariant var : queryItems) {
QVariantMap m = var.toMap();
// 翻译title
m.insert("title", ttr(m.value("title").toString()));
// 转换枚举
QVariantList optionList;
QRegExp regExp("enum(.*)");
if ((m.value("optionList").type() == QVariant::String) && (regExp.indexIn(m.value("optionList").toString()) != -1)) {
if (regExp.capturedTexts().count() > 1) {
optionList = TOPENM->enumList(regExp.capturedTexts().value(1).remove("(").remove(")"))->toComboList();
m.insert("optionList", optionList);
}
}
newQueryItems << m;
}
mAdvancedQueryCfgMap.insert("advanced_items", newQueryItems);
}
#ifndef MUSERMGT #ifndef SYSUSERMGT
#define MUSERMGT #define SYSUSERMGT
#include <topcore/topclassabs.h> #include <topcore/topclassabs.h>
#include <tdatabaseutil/tsqlselectorv2.h> #include <tdatabaseutil/tsqlselectorv2.h>
...@@ -12,22 +12,14 @@ class TSearchEntry; ...@@ -12,22 +12,14 @@ class TSearchEntry;
class TPageTool; class TPageTool;
class TSplitter; class TSplitter;
class Musermgt : public TopClassAbs class SysUserMgt : public TopClassAbs
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit Musermgt(const QString &iModuleNameStr = QString(""), explicit SysUserMgt(const QString &iModuleNameStr = QString(""),
const QVariantMap &iUrlPars = QVariantMap(), const QVariantMap &iUrlPars = QVariantMap(),
QWidget *iParent = nullptr); QWidget *iParent = nullptr);
enum class NaviType { ~SysUserMgt();
None,
CategoryTreeView,
UiLoader,
AdvancedQuery,
NaviFilter,
CategoryTreeViewAndAdvancedQuery
};
~Musermgt();
public slots: public slots:
void refresh(bool iResetPageBol = true); //刷新表格信息 void refresh(bool iResetPageBol = true); //刷新表格信息
void refreshDetail(const QString &iUid); //刷新右侧详细信息 void refreshDetail(const QString &iUid); //刷新右侧详细信息
...@@ -53,12 +45,7 @@ signals: ...@@ -53,12 +45,7 @@ signals:
void detailSaved(const QVariant &iUid); //当详细表单数据保存时发送 void detailSaved(const QVariant &iUid); //当详细表单数据保存时发送
void selectionChanged(); //左侧表单选中条目变化时发送该信号 void selectionChanged(); //左侧表单选中条目变化时发送该信号
private: private:
void initAdvanceCfgMap();
void initTableView(); //初始化界面 void initTableView(); //初始化界面
Musermgt::NaviType str2NaviType(const QString &iType);
QVariantList parseCategoryConfig();
QVariantMap getDefaultQueryDataFromCfgMap();
private: private:
TSplitter *mBodySplitter = nullptr; TSplitter *mBodySplitter = nullptr;
TSplitter *mBodyWidget = nullptr; TSplitter *mBodyWidget = nullptr;
...@@ -69,12 +56,9 @@ private: ...@@ -69,12 +56,9 @@ private:
QWidget *mBodyWgt = nullptr; QWidget *mBodyWgt = nullptr;
QString mLastDetailUid; QString mLastDetailUid;
QString mDetailUid; QString mDetailUid;
NaviType mNaviType = NaviType::CategoryTreeView;
QWidget *mNaviView = nullptr;
QVariantMap mAdvancedQueryCfgMap;
bool IsDetailchange = false; bool IsDetailchange = false;
TopClassTableConf mTableConf; TopClassTableConf mTableConf;
QVariantList mSelectedItems; QVariantList mSelectedItems;
}; };
#endif //MUSERMGT #endif //SYSUSERMGT
# 模块标题 # 模块标题
sys_title: "Module Menu" sys_title: "User Management Module"
sys_title_en: "" sys_title_en: "User Management Module"
sys_title_zhcn: "模块菜单" sys_title_zhcn: "用户管理模块"
sys_title_zhtw: "" sys_title_zhtw: ""
# 模块图标(普通图标在font awesome中找 http://fontawesome.io/icons/) # 模块图标(普通图标在font awesome中找 http://fontawesome.io/icons/)
...@@ -63,7 +63,7 @@ desktop: { ...@@ -63,7 +63,7 @@ desktop: {
"title_en": "Custom module", "title_en": "Custom module",
"title_zhcn": "自定义模块", "title_zhcn": "自定义模块",
"title_zhtw": "自定义模块", "title_zhtw": "自定义模块",
"url_address": "Custom_module" "url_address": "user management-custom_module"
}, },
{ {
"route_type": "module", "route_type": "module",
...@@ -72,7 +72,7 @@ desktop: { ...@@ -72,7 +72,7 @@ desktop: {
"title_en": "Module configuration module", "title_en": "Module configuration module",
"title_zhcn": "模板配置模块", "title_zhcn": "模板配置模块",
"title_zhtw": "模板配置模块", "title_zhtw": "模板配置模块",
"url_address": "Module_configuration_module" "url_address": "user management-module_configuration_module"
}, },
] ]
}, },
......
...@@ -61,9 +61,9 @@ ...@@ -61,9 +61,9 @@
name: "attr_data.age", name: "attr_data.age",
type: "IntLineEdit", type: "IntLineEdit",
title: self.ttr("Age"), title: self.ttr("Age"),
validate: function (obj, val, title, moment, self) { validate:function(obj, val, title, moment, self){
if (!val.match(new RegExp('^[0-9_]+$'))) { if (isNaN(val)) {
return [title + self.ttr(" can only contain [0-9]!"), 'Error']; return [title + self.ttr(" can only contain [0-9]!"), 'Error'];
} else if (parseInt(val) >= 100 || parseInt(val) <= 0) { } else if (parseInt(val) >= 100 || parseInt(val) <= 0) {
return [title + self.ttr("Are you sure you are a hundred years old?"), 'Error']; return [title + self.ttr("Are you sure you are a hundred years old?"), 'Error'];
} }
......
# 模块标题 # 模块标题
sys_title: "Custom module" sys_title: "User management-Custom module"
sys_title_en: "Custom module" sys_title_en: "User management-Custom module"
sys_title_zhcn: "自定义模块" sys_title_zhcn: "用户管理-自定义模块"
sys_title_zhtw: "" sys_title_zhtw: ""
# 模块图标 # 模块图标
sys_icon: "wpforms" sys_icon: "wpforms"
# 模块对应的插件DLL名称 # 模块对应的插件DLL名称
sys_plugin: "topikm6-custommodule-plugin" sys_plugin: "topikm6-custommodule-plugin"
# 模块对应的类名 # 模块对应的类名
sys_class: "Musermgt" sys_class: "SysUserMgt"
# 许可证验证键 # 许可证验证键
sys_license_key: "" sys_license_key: ""
# 打开模块的权限 # 打开模块的权限
...@@ -28,8 +28,7 @@ default_value : { ...@@ -28,8 +28,7 @@ default_value : {
# 主表格 # 主表格
view { view {
# 数据项, 默认包含表头中配置的数据项 # 数据项, 默认包含表头中配置的数据项
data_keys: ["id","username","fullname","status", data_keys: ["id", "username", "fullname", "status", "attr_data"]
"attr_data"]
# 主键 # 主键
primary_key: "id" primary_key: "id"
# 水平表头 # 水平表头
...@@ -54,8 +53,8 @@ view { ...@@ -54,8 +53,8 @@ view {
"search": "string" "search": "string"
}, },
{ {
"name": "status", "name": "Status",
"display": "status", "display": "Status",
"displayRole": "$status.text", "displayRole": "$status.text",
"size": 100, "size": 100,
"format": "enum(tpm-machine-maintenance-plan-status)" "format": "enum(tpm-machine-maintenance-plan-status)"
...@@ -78,8 +77,9 @@ view { ...@@ -78,8 +77,9 @@ view {
sort_by: "id DESC" sort_by: "id DESC"
# 数据集 # 数据集
data_set { data_set {
# 数据库表名 # 数据库表名
db_table_name: "sys_user" db_table_name: "sys_user"
db_filter: "" db_filter: ""
db_sql: ""
} }
} }
try { try {
this.reload(); this.reloadItem();
} catch(e) { } catch(e) {
print(e); print(e);
} }
...@@ -18,5 +18,5 @@ STYLE: "button_style=icon" ...@@ -18,5 +18,5 @@ STYLE: "button_style=icon"
LANG: "JavaScript" LANG: "JavaScript"
STATUS: "Release" STATUS: "Release"
VERSION: "1" VERSION: "1"
STATEHOOK: "return this.DetailModified() ? 'hide' : 'enable';" STATEHOOK: "return this.isDetailModified() ? 'hide' : 'enable';"
---ACTION---*/ ---ACTION---*/
\ No newline at end of file
...@@ -61,10 +61,10 @@ ...@@ -61,10 +61,10 @@
name: "attr_data.age", name: "attr_data.age",
type: "IntLineEdit", type: "IntLineEdit",
title: self.ttr("Age"), title: self.ttr("Age"),
validate: function (obj, val, title, moment, self) { validate:function(obj, val, title, moment, self){
if (!val.match(new RegExp('^[0-9_]+$'))) { if (isNaN(val)) {
return [title + self.ttr(" can only contain [0-9]!"), 'Error']; return [title + self.ttr(" can only contain [0-9]!"), 'Error'];
} else if (parseInt(val) >= 100 || parseInt(val) <= 0) { } else if ((parseInt(val) >= 100) || (parseInt(val) <= 0)) {
return [title + self.ttr("Are you sure you are a hundred years old?"), 'Error']; return [title + self.ttr("Are you sure you are a hundred years old?"), 'Error'];
} }
}, },
......
# 模块标题 # 模块标题
sys_title: "Module configuration module" sys_title: "User management-Module configuration module"
sys_title_en: "Module configuration module" sys_title_en: "User management-Module configuration module"
sys_title_zhcn: "模板配置模块" sys_title_zhcn: "用户管理-模板配置模块"
sys_title_zhtw: "" sys_title_zhtw: ""
# 模块图标 # 模块图标
sys_icon: "wpforms" sys_icon: "wpforms"
...@@ -27,13 +27,12 @@ navi: { ...@@ -27,13 +27,12 @@ navi: {
} }
default_value : { default_value : {
password: "123456" password: "123456",
} }
# 主表格 # 主表格
view { view {
# 数据项, 默认包含表头中配置的数据项 # 数据项, 默认包含表头中配置的数据项
data_keys: ["id","username","fullname","status", data_keys: ["id", "username", "fullname", "status", "attr_data"]
"attr_data"]
# 主键 # 主键
primary_key: "id" primary_key: "id"
# 水平表头 # 水平表头
...@@ -58,8 +57,8 @@ view { ...@@ -58,8 +57,8 @@ view {
"search": "string" "search": "string"
}, },
{ {
"name": "status", "name": "Status",
"display": "status", "display": "Status",
"displayRole": "$status.text", "displayRole": "$status.text",
"size": 100, "size": 100,
"format": "enum(tpm-machine-maintenance-plan-status)" "format": "enum(tpm-machine-maintenance-plan-status)"
...@@ -85,5 +84,6 @@ view { ...@@ -85,5 +84,6 @@ view {
# 数据库表名 # 数据库表名
db_table_name: "sys_user" db_table_name: "sys_user"
db_filter: "" db_filter: ""
db_sql: ""
} }
} }
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