Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
H
hymsysuser
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Oliver Hui
hymsysuser
Commits
008e4b60
Commit
008e4b60
authored
Oct 31, 2022
by
‘oliver.hui’
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
second
parent
cbeea10f
Pipeline
#30112
failed with stage
in 37 seconds
Changes
25
Pipelines
1
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
25 changed files
with
865 additions
and
21 deletions
+865
-21
sysuser.cpp
src/class/plugin/sysusermgt/sysuser.cpp
+9
-0
sysusermgt.cpp
src/class/plugin/sysusermgt/sysusermgt.cpp
+26
-17
sysusermgt.h
src/class/plugin/sysusermgt/sysusermgt.h
+1
-1
sysusermgtv1.cpp
src/class/plugin/sysusermgtv1/sysusermgtv1.cpp
+8
-1
sysuserv1.cpp
src/class/plugin/sysusermgtv1/sysuserv1.cpp
+5
-1
sysuserv1.h
src/class/plugin/sysusermgtv1/sysuserv1.h
+2
-1
delete.js
src/module/TOPSYS/sys-user-mgt/actions/delete.js
+29
-0
new.js
src/module/TOPSYS/sys-user-mgt/actions/new.js
+24
-0
open.js
src/module/TOPSYS/sys-user-mgt/actions/open.js
+27
-0
refresh.js
src/module/TOPSYS/sys-user-mgt/actions/refresh.js
+24
-0
reset_password.js
src/module/TOPSYS/sys-user-mgt/actions/reset_password.js
+30
-0
reset_password_validity.js
...le/TOPSYS/sys-user-mgt/actions/reset_password_validity.js
+30
-0
lang.conf
src/module/TOPSYS/sys-user-mgt/lang.conf
+23
-0
module.conf
src/module/TOPSYS/sys-user-mgt/module.conf
+107
-0
navi.ui.js
src/module/TOPSYS/sys-user-mgt/navi.ui.js
+41
-0
uim.conf
src/module/TOPSYS/sys-user-mgt/uim.conf
+28
-0
__hooks__.js
src/module/TOPSYS/sys-user/actions/__hooks__.js
+16
-0
cancel.js
src/module/TOPSYS/sys-user/actions/cancel.js
+23
-0
copy.js
src/module/TOPSYS/sys-user/actions/copy.js
+24
-0
refresh.js
src/module/TOPSYS/sys-user/actions/refresh.js
+23
-0
save.js
src/module/TOPSYS/sys-user/actions/save.js
+24
-0
lang.conf
src/module/TOPSYS/sys-user/lang.conf
+23
-0
module.conf
src/module/TOPSYS/sys-user/module.conf
+43
-0
uim.conf
src/module/TOPSYS/sys-user/uim.conf
+8
-0
user-info.ui.js
src/module/TOPSYS/sys-user/user-info.ui.js
+267
-0
No files found.
src/class/plugin/sysusermgt/sysuser.cpp
View file @
008e4b60
...
@@ -4,6 +4,7 @@
...
@@ -4,6 +4,7 @@
#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>
...
@@ -91,12 +92,14 @@ SysUser::~SysUser()
...
@@ -91,12 +92,14 @@ 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
;
...
@@ -111,6 +114,7 @@ void SysUser::copy()
...
@@ -111,6 +114,7 @@ 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
;
...
@@ -123,6 +127,7 @@ void SysUser::create()
...
@@ -123,6 +127,7 @@ 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
());
...
@@ -131,6 +136,7 @@ void SysUser::clearData()
...
@@ -131,6 +136,7 @@ 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
()));
...
@@ -139,6 +145,7 @@ void SysUser::setData(const QVariantMap &iDataMap)
...
@@ -139,6 +145,7 @@ 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
)
{
...
@@ -170,6 +177,7 @@ QVariantMap SysUser::getData() const
...
@@ -170,6 +177,7 @@ 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
;
...
@@ -263,6 +271,7 @@ void SysUser::showAddRoleDialog()
...
@@ -263,6 +271,7 @@ 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
();
...
...
src/class/plugin/sysusermgt/sysusermgt.cpp
View file @
008e4b60
...
@@ -3,6 +3,7 @@
...
@@ -3,6 +3,7 @@
#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>
...
@@ -122,6 +123,7 @@ SysUserMgt::~SysUserMgt()
...
@@ -122,6 +123,7 @@ 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
));
...
@@ -161,29 +163,32 @@ void SysUserMgt::deleteItem(const QVariantList &iIdLst)
...
@@ -161,29 +163,32 @@ 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)
{
//{
QString
detailModuleName
=
"sys-user"
;
// qDebug() << "************************open is working";
if
(
!
config
(
"detail_module_name"
).
toString
().
isEmpty
())
{
// QString detailModuleName = "sys-user";
detailModuleName
=
config
(
"detail_module_name"
).
toString
();
// if (!config("detail_module_name").toString().isEmpty()) {
}
// detailModuleName = config("detail_module_name").toString();
// }
SysUser
*
detail
=
qobject_cast
<
SysUser
*>
(
APP
->
openModule
(
detailModuleName
));
if
(
detail
!=
nullptr
)
{
// SysUser *detail = qobject_cast<SysUser *>(APP->openModule(detailModuleName));
detail
->
setConfig
(
"product_category"
,
this
->
config
(
"product_category"
));
// if (detail != nullptr) {
connect
(
detail
,
SIGNAL
(
dataSaved
(
QVariant
)),
this
,
SLOT
(
onDetailSaved
(
QVariant
)));
// detail->setConfig("product_category", this->config("product_category"));
connect
(
this
,
SIGNAL
(
destroyed
()),
detail
,
SLOT
(
close
()));
// connect(detail, SIGNAL(dataSaved(QVariant)), this, SLOT(onDetailSaved(QVariant)));
detail
->
setUid
(
iUserIdInt
);
// connect(this, SIGNAL(destroyed()), detail, SLOT(close()));
}
// 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
();
...
@@ -191,6 +196,7 @@ void SysUserMgt::newItem()
...
@@ -191,6 +196,7 @@ void SysUserMgt::newItem()
bool
SysUserMgt
::
canModify
()
bool
SysUserMgt
::
canModify
()
{
{
qDebug
()
<<
"************************canModify is "
;
return
!
mDetailView
->
isDataModified
();
return
!
mDetailView
->
isDataModified
();
}
}
...
@@ -249,6 +255,7 @@ void SysUserMgt::onPageChanged()
...
@@ -249,6 +255,7 @@ 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状态的刷新速度;
...
@@ -279,6 +286,7 @@ void SysUserMgt::onDetailSaved(const QVariant &iUidStr)
...
@@ -279,6 +286,7 @@ 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
)
{
...
@@ -294,6 +302,7 @@ void SysUserMgt::onDetailChanged()
...
@@ -294,6 +302,7 @@ 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
));
...
...
src/class/plugin/sysusermgt/sysusermgt.h
View file @
008e4b60
...
@@ -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
();
...
...
src/class/plugin/sysusermgtv1/sysusermgtv1.cpp
View file @
008e4b60
...
@@ -3,6 +3,7 @@
...
@@ -3,6 +3,7 @@
#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>
...
@@ -228,11 +229,12 @@ void SysUserMgtV1::initDetailView()
...
@@ -228,11 +229,12 @@ void SysUserMgtV1::initDetailView()
mDetailView
=
new
SysUserV1
(
detailModuleName
,
config
(),
this
);
mDetailView
=
new
SysUserV1
(
detailModuleName
,
config
(),
this
);
//功能
//功能
connect
(
mDetailView
,
SIGNAL
(
windowModifyChanged
(
bool
)),
this
,
SLOT
(
onDetailChanged
()));
connect
(
mDetailView
,
SIGNAL
(
dataSaved
(
QVariant
)),
this
,
SLOT
(
onDetailSaved
(
QVariant
)));
connect
(
mDetailView
,
SIGNAL
(
dataSaved
(
QVariant
)),
this
,
SLOT
(
onDetailSaved
(
QVariant
)));
connect
(
mDetailView
,
SIGNAL
(
windowModifyChanged
(
bool
)),
SLOT
(
onDetailChanged
()));
mDetailView
->
resize
(
TTHEME_DP
(
config
(
"detail.perfect_size.width"
,
mDetailView
->
perfectSize
().
width
()).
toInt
()),
mDetailView
->
height
());
mDetailView
->
resize
(
TTHEME_DP
(
config
(
"detail.perfect_size.width"
,
mDetailView
->
perfectSize
().
width
()).
toInt
()),
mDetailView
->
height
());
mCenterSplitter
->
addWidget
(
mDetailView
);
mCenterSplitter
->
addWidget
(
mDetailView
);
}
}
//点击事件模块
//点击事件模块
...
@@ -264,17 +266,21 @@ void SysUserMgtV1::onSelectionChanged()
...
@@ -264,17 +266,21 @@ void SysUserMgtV1::onSelectionChanged()
//detelet也会用到,构造函数,newitem,onselectionchangged,ondetailchangged
//detelet也会用到,构造函数,newitem,onselectionchangged,ondetailchangged
QVariantList
SysUserMgtV1
::
selectedItems
()
QVariantList
SysUserMgtV1
::
selectedItems
()
{
{
qDebug
()
<<
"****************************selectedItems is working"
;
return
mSelectedLst
;
return
mSelectedLst
;
}
}
bool
SysUserMgtV1
::
canModify
()
bool
SysUserMgtV1
::
canModify
()
{
{
qDebug
()
<<
"****************************canModify is working"
;
//例如 当datamoifed处于修改 则不可切换 取相反
//例如 当datamoifed处于修改 则不可切换 取相反
return
!
mDetailView
->
isDataModified
();
return
!
mDetailView
->
isDataModified
();
}
}
//页面变化覆盖模块
//页面变化覆盖模块
void
SysUserMgtV1
::
onDetailChanged
(){
void
SysUserMgtV1
::
onDetailChanged
(){
qDebug
()
<<
"***************************************ondetailchanged is working"
;
bool
isModified
=
mDetailView
->
isDataModified
();
bool
isModified
=
mDetailView
->
isDataModified
();
mTableView
->
setEnabled
(
!
isModified
);
mTableView
->
setEnabled
(
!
isModified
);
if
(
isModified
)
{
if
(
isModified
)
{
...
@@ -402,6 +408,7 @@ void SysUserMgtV1::fillTableData(const TDataResponse &iDataRes)
...
@@ -402,6 +408,7 @@ void SysUserMgtV1::fillTableData(const TDataResponse &iDataRes)
//新建模块 同时触发内容页变化detailchanged覆盖
//新建模块 同时触发内容页变化detailchanged覆盖
void
SysUserMgtV1
::
newItem
()
void
SysUserMgtV1
::
newItem
()
{
{
qDebug
()
<<
"****************************newitem is working"
;
mCenterSplitter
->
cacheSizes
();
mCenterSplitter
->
cacheSizes
();
mDetailView
->
create
();
mDetailView
->
create
();
mDetailView
->
refreshActionState
();
mDetailView
->
refreshActionState
();
...
...
src/class/plugin/sysusermgtv1/sysuserv1.cpp
View file @
008e4b60
...
@@ -87,6 +87,9 @@ void SysUserV1::initCenterUi()
...
@@ -87,6 +87,9 @@ 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
()));
}
}
void
SysUserV1
::
resizeEvent
(
QResizeEvent
*
iEvent
)
void
SysUserV1
::
resizeEvent
(
QResizeEvent
*
iEvent
)
...
@@ -161,6 +164,7 @@ void SysUserV1::create(){
...
@@ -161,6 +164,7 @@ void SysUserV1::create(){
//意义不明未深究
//意义不明未深究
defaultValueMap
=
defaultValueMap
.
unite
(
config
(
"default_value"
).
toMap
());
defaultValueMap
=
defaultValueMap
.
unite
(
config
(
"default_value"
).
toMap
());
//
//
defaultValueMap
setData
(
defaultValueMap
);
setData
(
defaultValueMap
);
//设置数据处于修改 默认true
//设置数据处于修改 默认true
setDataModified
();
setDataModified
();
...
@@ -187,7 +191,7 @@ void SysUserV1::saveData(){
...
@@ -187,7 +191,7 @@ void SysUserV1::saveData(){
}
}
t
::
saving
(
this
);
t
::
saving
(
this
);
QVariantMap
saveData
=
getData
();
QVariantMap
saveData
=
getData
();
//问题 意义不明?
//问题 意义不明?
对应_hooks_.js
if
(
isHookExists
(
"handleSaveData"
)){
if
(
isHookExists
(
"handleSaveData"
)){
saveData
=
callHooksQuick
(
"handleSaveData"
,
QVariantList
()
<<
saveData
).
toVariant
().
toMap
();
saveData
=
callHooksQuick
(
"handleSaveData"
,
QVariantList
()
<<
saveData
).
toVariant
().
toMap
();
}
}
...
...
src/class/plugin/sysusermgtv1/sysuserv1.h
View file @
008e4b60
...
@@ -34,6 +34,7 @@ private:
...
@@ -34,6 +34,7 @@ private:
private
:
private
:
QStringList
mProductCategoryLst
;
QStringList
mProductCategoryLst
;
QHBoxLayout
*
mBodyLayout
=
nullptr
;
QHBoxLayout
*
mBodyLayout
=
nullptr
;
TUiLoader
*
mUiLoader
=
nullptr
;
TUiLoader
*
mUiLoader
=
nullptr
;
};
};
...
...
src/module/TOPSYS/sys-user-mgt/actions/delete.js
0 → 100644
View file @
008e4b60
try
{
var
ans
=
TMessageBox
.
question
(
this
,
this
.
ttr
(
"Are you sure to delete selected items?"
),
''
,
this
.
ttr
(
'Delete'
),
[
this
.
ttr
(
"Delete"
)
+
":Yes:Yes:Error"
,
this
.
ttr
(
"Cancel"
)
+
":Cancel:Cancel:Normal"
]);
if
(
ans
!=
'Yes'
)
{
return
;
}
this
.
deleteItem
(
this
.
selectedItems
());
}
catch
(
e
)
{
print
(
e
);
}
/*---ACTION---
ICON: "times-circle"
LABEL: "Delete"
LABEL_ZHCN: "删除"
LABEL_ZHTW: "刪除"
ACCEL: "Delete"
TOOLTIP: "Delete User"
TOOLTIP_ZHCN: "删除用户"
TOOLTIP_ZHTW: "刪除用戶"
PERMISSION: "sys-user-delete"
CHECKED: ""
GROUP: ""
STYLE: "size=small 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
src/module/TOPSYS/sys-user-mgt/actions/new.js
0 → 100644
View file @
008e4b60
try
{
this
.
newItem
();
}
catch
(
e
)
{
print
(
e
);
}
/*---ACTION---
ICON: "plus"
LABEL: "New"
LABEL_ZHCN: "新建"
LABEL_ZHTW: "新建"
ACCEL: "Ctrl+N"
TOOLTIP: "Add new item"
TOOLTIP_ZHCN: "新建条目"
TOOLTIP_ZHTW: "新建條目"
PERMISSION: "sys-user-create"
CHECKED: ""
GROUP: ""
STYLE: "button_style=both"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: "if(this.canModify()){return 'enable'}else{return 'disable'}"
---ACTION---*/
\ No newline at end of file
src/module/TOPSYS/sys-user-mgt/actions/open.js
0 → 100644
View file @
008e4b60
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
src/module/TOPSYS/sys-user-mgt/actions/refresh.js
0 → 100644
View file @
008e4b60
try
{
this
.
refresh
(
false
);
}
catch
(
e
)
{
print
(
e
);
}
/*---ACTION---
ICON: "refresh"
LABEL: "Refresh"
LABEL_ZHCN: "刷新"
LABEL_ZHTW: "刷新"
ACCEL: "F5"
TOOLTIP: "Reload data from database"
TOOLTIP_ZHCN: "重载数据库数据"
TOOLTIP_ZHTW: "重載數據庫數據"
CHECKED: ""
GROUP: ""
STYLE: "size=small button_style=icon"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: ""
---ACTION---*/
\ No newline at end of file
src/module/TOPSYS/sys-user-mgt/actions/reset_password.js
0 → 100644
View file @
008e4b60
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
src/module/TOPSYS/sys-user-mgt/actions/reset_password_validity.js
0 → 100644
View file @
008e4b60
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
src/module/TOPSYS/sys-user-mgt/lang.conf
0 → 100644
View file @
008e4b60
"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
src/module/TOPSYS/sys-user-mgt/module.conf
0 → 100644
View file @
008e4b60
# 模块标题
sys_title
:
"User Management"
sys_title_en
:
"User Management"
sys_title_zhcn
:
"用户管理"
sys_title_zhtw
:
"用戶管理"
# 模块图标(普通图标在font awesome中找 http://fontawesome.io/icons/)
sys_icon
:
"user-o"
# 模块对应的插件DLL名称
sys_plugin
:
"topikm6-topsys-plugin"
# 模块对应的类名
sys_class
:
"SysUserMgt"
# 打开模块的权限
sys_open_right
:
"sys-user-read"
# 当关闭窗口时,如果提示是否保存,保存调用的action
sys_save_action
:
""
# 该模块用到的枚举列表
sys_enum_list
: [
"sys-user-status"
]
# 该模块用到的除了Action之外的权限列表
sys_permission_list
: []
#详情页面的初始大小
detail
.
perfect_size
.
width
:
600
# 产品类型,此选项用于当多个产品共用一个数据库时,只想看到自已产品的用户;
# * 表示匹配所有产品
product_category
: []
navi
: {
is_expanded
:
"true"
}
view
: {
data_keys
: [
"id"
,
"username"
,
"fullname"
,
"staffid"
,
"mail"
,
"contcat_id"
,
"remark"
,
"status"
,
"department_id"
]
primary_key
:
"id"
horizontal_header
: [
{
"name"
:
"username"
,
"display"
:
"Login Name"
,
"displayRole"
:
"$username"
,
"dataType"
:
"string"
,
"resizeMode"
:
"Interactive"
,
"search"
:
"string"
},
{
"name"
:
"fullname"
,
"display"
:
"Full Name"
,
"displayRole"
:
"$fullname"
,
"dataType"
:
"string"
,
"resizeMode"
:
"Interactive"
,
"search"
:
"string"
},
{
"name"
:
"staffid"
,
"display"
:
"Staff ID"
,
"displayRole"
:
"$staffid"
,
"dataType"
:
"string"
,
"resizeMode"
:
"Interactive"
,
"search"
:
"string"
},
{
"name"
:
"mail"
,
"display"
:
"Mail"
,
"displayRole"
:
"$mail"
,
"dataType"
:
"string"
,
"resizeMode"
:
"Interactive"
,
"size"
:
"200"
},
{
"name"
:
"status"
,
"display"
:
"Status"
,
"displayRole"
:
"$status.text"
,
"resizeMode"
:
"Interactive"
,
"decorationRole"
:
"$status.icon"
,
"format"
:
"enum(sys-user-status)"
},
{
"name"
:
"remark"
,
"display"
:
"Remark"
,
"displayRole"
:
"$remark"
,
"resizeMode"
:
"Interactive"
,
},
]
data_set
: {
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"
}
}
# 多工厂同步(用户的增删改)
multi_plant_sync
:
false
src/module/TOPSYS/sys-user-mgt/navi.ui.js
0 → 100644
View file @
008e4b60
function
func
(
self
)
{
return
{
type
:
"FormGridLayout"
,
child
:
[
{
name
:
"username"
,
type
:
"LineEdit"
,
pack
:
{
label
:
self
.
ttr
(
"Login Name"
)
},
property
:
{
user_data
:
{
field_name
:
"username"
,
operator
:
"like"
}
}
},
{
name
:
"fullname"
,
type
:
"LineEdit"
,
pack
:
{
label
:
self
.
ttr
(
"Full Name"
)
},
property
:
{
user_data
:
{
field_name
:
"fullname"
,
operator
:
"like"
}
}
},
{
name
:
"staffid"
,
type
:
"LineEdit"
,
pack
:
{
label
:
self
.
ttr
(
"Staff ID"
)
},
property
:
{
user_data
:
{
field_name
:
"staffid"
,
operator
:
"like"
}
}
},
{
name
:
"status"
,
type
:
"ComboBox"
,
pack
:
{
label
:
self
.
ttr
(
"Status"
)
},
property
:
{
item_list
:
TOPENM
.
enumList
(
"sys-user-status"
).
toComboList
(),
user_data
:
{
field_name
:
"status"
}
}
},
]
};
}
src/module/TOPSYS/sys-user-mgt/uim.conf
0 → 100644
View file @
008e4b60
# 表格的右键菜单
"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"
: [
{
"type"
:
"spacing"
,
"size"
:
10
},
{
"type"
:
"toolitem"
,
"action"
:
"new"
},
{
"type"
:
"stretcher"
},
{
"type"
:
"searchentry"
,
"name"
:
"SEARCH_ENTRY"
},
{
"type"
:
"toolitem"
,
"action"
:
"refresh"
}
]
# 底部工具栏
"BOTTOM_TOOLBAR"
: [
{
"type"
:
"stretcher"
},
{
"type"
:
"pagetool"
,
"name"
:
"PAGE_TOOL"
}
]
\ No newline at end of file
src/module/TOPSYS/sys-user/actions/__hooks__.js
0 → 100644
View file @
008e4b60
// 保存联系人数据时的额外处理(标准产品中注释掉,项目配置需要时启用)
// 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
src/module/TOPSYS/sys-user/actions/cancel.js
0 → 100644
View file @
008e4b60
try
{
this
.
reload
();
}
catch
(
e
)
{
print
(
e
);
}
/*---ACTION---
ICON: "times"
LABEL: "Cancel"
LABEL_ZHCN: "取消"
LABEL_ZHTW: "取消"
ACCEL: ""
TOOLTIP: "Cancel Edit"
TOOLTIP_ZHCN: "取消编辑"
TOOLTIP_ZHTW: "刷新編輯"
CHECKED: ""
GROUP: ""
STYLE: "button_style=both"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: "return (this.isDataModified() ) ? 'enable' : 'hide';"
---ACTION---*/
\ No newline at end of file
src/module/TOPSYS/sys-user/actions/copy.js
0 → 100644
View file @
008e4b60
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
src/module/TOPSYS/sys-user/actions/refresh.js
0 → 100644
View file @
008e4b60
try
{
this
.
reload
();
}
catch
(
e
)
{
print
(
e
);
}
/*---ACTION---
ICON: "refresh"
LABEL: "Refresh"
LABEL_ZHCN: "刷新"
LABEL_ZHTW: "刷新"
ACCEL: ""
TOOLTIP: "Reload data from database"
TOOLTIP_ZHCN: "重新从数据库加载数据"
TOOLTIP_ZHTW: "重新從數據庫加載數據"
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
src/module/TOPSYS/sys-user/actions/save.js
0 → 100644
View file @
008e4b60
try
{
this
.
saveData
();
}
catch
(
e
)
{
print
(
e
);
}
/*---ACTION---
ICON: "save"
LABEL: "Save"
LABEL_ZHCN: "保存"
LABEL_ZHTW: "保存"
ACCEL: "Ctrl+S"
TOOLTIP: "Save data to database"
TOOLTIP_ZHCN: "保存数据至数据库"
TOOLTIP_ZHTW: "保存數據至數據庫"
PERMISSION: "sys-user-edit"
CHECKED: ""
GROUP: ""
STYLE: " button_style=both"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: "return (this.isDataModified() ) ? 'enable' : 'disable';"
---ACTION---*/
\ No newline at end of file
src/module/TOPSYS/sys-user/lang.conf
0 → 100644
View file @
008e4b60
"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
src/module/TOPSYS/sys-user/module.conf
0 → 100644
View file @
008e4b60
# 模块标题
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
}
src/module/TOPSYS/sys-user/uim.conf
0 → 100644
View file @
008e4b60
# 工具栏
"MAIN_TOOLBAR"
: [
{
"type"
:
"toolitem"
,
"action"
:
"save"
},
{
"type"
:
"stretcher"
},
{
"type"
:
"toolitem"
,
"action"
:
"copy"
},
{
"type"
:
"toolitem"
,
"action"
:
"cancel"
},
{
"type"
:
"toolitem"
,
"action"
:
"refresh"
}
]
src/module/TOPSYS/sys-user/user-info.ui.js
0 → 100644
View file @
008e4b60
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment