Commit f7015004 authored by Qiu Chuntao's avatar Qiu Chuntao

add files

parent ad302cfe
Pipeline #11725 failed with stage
in 1 minute and 19 seconds
#include "topsysplugin.h"
//#include "sysmainwindow/sysmainwindow.h"
#include "custommoduleplugin.h"
#include "sysusermgt/musermgt.h"
//#include "sysusermgt/sysuser.h"
#include "sysmainwindow/msysmainwindow.h"
QStringList TopSysPlugin::getClassList()
{
return QStringList()<< QStringLiteral("Musermgt");
return QStringList()<< QStringLiteral("Musermgt")
<< QStringLiteral("SysMainWindow");
}
TopClassAbs *TopSysPlugin::newClass(const QString &iClassName,
const QString &iModuleName,
const QVariantMap &iUrlPars)
{
if (iClassName == QStringLiteral("Musermgt")) {
if (iClassName == QStringLiteral("SysMainWindow")) {
return new SysMainWindow(iModuleName, iUrlPars, nullptr);
} else if (iClassName == QStringLiteral("Musermgt")) {
return new Musermgt(iModuleName, iUrlPars, nullptr);
}
return nullptr;
......
......@@ -35,10 +35,10 @@ TEMPLATE = lib
CONFIG += plugin
SOURCES += \
topsysplugin.cpp
custommoduleplugin.cpp
HEADERS += \
topsysplugin.h
custommoduleplugin.h
LIB_LIST = tsec tbaseutil tdatabaseutil twidget topcore toputil tchart
win32 {
......
This diff is collapsed.
#ifndef SYSMAINWINDOW_H
#define SYSMAINWINDOW_H
#include <QStackedWidget>
#include <topcore/topclassabs.h>
#include <QSystemTrayIcon>
class QHBoxLayout;
class QLabel;
class QPropertyAnimation;
class QStackedWidget;
class QTabBar;
class QDateTime;
class QVBoxLayout;
class TFramelessWindowBar;
class TPanelMenu;
class TopMessageController;
class TopQuickToolBar;
class TopQuickButton;
class TToolButton;
class QSplitter;
struct NaviData;
class StretchFrame: public QFrame {
Q_OBJECT
public:
StretchFrame(QWidget* iParent = nullptr);
void setWidget(QWidget *iWidget);
void setStretchWidgetVisible(bool iVisible);
protected:
void mousePressEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *);
bool event(QEvent *event);
void showEvent(QShowEvent *event);
private:
bool mLeftButtonPressed = false;
QPoint mDragPosition;
qreal mStretchWidgetWidth = 1;
bool mMouseAnchor = false;
QWidget *mWidget = nullptr;
QFrame *mStretchWidget = nullptr;
QHBoxLayout *mLayout = nullptr;
};
class StackedWidget : public QStackedWidget {
Q_OBJECT
public:
StackedWidget(QWidget *iParent = nullptr);
void setBackground(const QString &iBackground);
protected:
void paintEvent(QPaintEvent *iEvent);
private:
QString mBackground;
};
class SysMainWindow final : public TopClassAbs
{
Q_OBJECT
public:
enum class RouteType {
None,
Module,
Menu,
Action,
Url,
ModuleBar
};
public:
explicit SysMainWindow(const QString &iModuleNameStr = QString(""),
const QVariantMap &iUrlPars = QVariantMap(),
QWidget *iParent = nullptr);
~SysMainWindow();
public slots:
void openModule(const QString &iUrl, const QVariant &iConfig = QVariant());
void showPasswordModificationDialog();
void showAboutDialog();
void openModuleUpgrade();
void setIsPinned(bool iIsPinned, bool iForce = false);
bool hide2SystemTrayState();
void saveHide2SystemTrayState(bool iState);
bool isSystemTrayIconShow();
protected:
bool nativeEvent(const QByteArray &iEventTypeLst,
void *iMsgPtr,
long *oResultI64Ptr) override;
void closeEvent(QCloseEvent *iEvent) override;
private slots:
void onOperateTimer();
void onQuickBtnClicked();
void onTabBarCurrentChanged(int iIndexInt);
void onTabBarCloseRequested(int iIndexInt);
void onNaviButtonClicked();
void onPinButtonClicked();
void onPanelMenuClicked(const QVariant &iDataVar);
void onNotification(const QString &iKeyStr, const QVariant &iDataVar, const QString &iUuid);
void onModuleWindowTitleChanged();
void onSysTrayIconActived(QSystemTrayIcon::ActivationReason reason);
private:
void initIsPinned();
void initNaviToolBar();
void initMainWidget();
void initDefaultRoute();
void updateTabBar(const QString &iUrl, const QVariant &iConfigVar = QVariant());
void updateTabBarWhenRemoveTab(int iIndexInt);
void updatePopupWidget(TopQuickButton *iBtn, const QVariantMap &iConfigVar, RouteType type);
void movePanelMenuWidget();
void initSysTrayIcon();
RouteType str2RouteType(const QString &iTypeStr);
void routeUrl(const QString &iUrlAddressStr, const QVariantMap &iConfigVar);
void routeModule(const QString &iUrlAddressStr, const QVariantMap &iConfigVar);
void routeAction(const QString &iUrlAddressStr);
void route(TopQuickButton *iBtn, NaviData *iData, const QVariantMap &iConfigVar);
void insertStatusInfo(QVariantList &oMenuDataLst);
void insertStatusInfo(QVariantList &oMenuDataLst, const QVariantMap &iModulePermission, const QVariantMap &iActionPermission);
QVariantMap getUrlAddressInfo(const QVariantList &iMenuDataLst);
void buildPanelMenuData(QVariantList &oMenuDataLst);
QVariantMap searchDefaultRoute(const QVariantList &iNaviLst);
void showCloseDialog();
private:
QDateTime *mPreOperateTime = nullptr;
QPointF mPreMousePos;
QPointF mNowMousePos;
bool mPreWindowHideState = false;
bool mNowWindowHideState = false;
bool mPreWindowActiveState = false;
bool mNowWindowActiveState = false;
QTimer *mOperateTimeOutTimer = nullptr;
TopQuickToolBar *mNaviToolBar = nullptr;
TFramelessWindowBar *mWindowTitleBar = nullptr;
QTabBar *mTabBar = nullptr;
StackedWidget *mStackedWidget = nullptr;
QStackedWidget *mModuleBarStackedWidget = nullptr;
QMap<QString, TopClassAbs *> mModuleBarUrlAddressMap;
QMap<TopQuickButton *, NaviData *> mNaviDataMap;
TopQuickButton *mCurrentActiveQuickBtn = nullptr;
QLabel *mPanelMenuTitleLabel = nullptr;
TToolButton *mPinButton = nullptr;
TPanelMenu *mPanelMenu = nullptr;
StretchFrame *mPopupWidget = nullptr;
QSplitter *mCenterWidget = nullptr;
QWidget *mMainWidget = nullptr;
QHBoxLayout *mMainLayout = nullptr;
QMap<QString, QWidget *> mUrlAddressWidgetMap; // urlAddress:QWidget
QMap<QString, QVariantMap> mUrlAddressConfigMap; // urlAddress:Config
bool mIsPinned = false;
QLabel *mMessageLabel = nullptr;
QPropertyAnimation *mMessageAnimation = nullptr;
TopMessageController *mMessageController = nullptr;
bool mIsRoutingModule = false;
// 托盘图标
QSystemTrayIcon *mSysTrayIcon = nullptr;
bool mSysTrayIconShow = false; // 是否显示托盘图标
bool mHidetoSysTray = false; // 关闭时是否隐藏程序到托盘
bool mHidetoSysTrayFlag = false; // 注册表中是否有mHidetoSysTray标记,是否显示确认弹窗
QString mHidetoTrayRegName;
QString mSysTrayTitle;
};
#endif // SYSMAINWINDOW_H
HEADERS += \
$$PWD/sysmainwindow.h
##$$PWD/sysmainwindow.h \
$$PWD/msysmainwindow.h \
$$PWD/topquickbutton.h \
$$PWD/topquicktoolbar.h
SOURCES += \
$$PWD/sysmainwindow.cpp
##$$PWD/sysmainwindow.cpp \
$$PWD/msysmainwindow.cpp \
$$PWD/topquickbutton.cpp \
$$PWD/topquicktoolbar.cpp
#include "topquickbutton.h"
#include <QLayout>
#include <QMenu>
#include <QPainter>
#include <QPaintEvent>
#include <QVariant>
#include <tbaseutil/tresource.h>
#include <tbaseutil/ttheme.h>
#include <topcore/topclassabs.h>
class TopQuickButtonPrivate
{
Q_DECLARE_PUBLIC(TopQuickButton)
public:
explicit TopQuickButtonPrivate(TopQuickButton *qptr)
: q_ptr(qptr)
{
}
~TopQuickButtonPrivate()
{
}
QString uidStr;
bool modifiedBol = false;
bool closableBol = false;
bool activedBol = false;
bool openedBol = false;
QVariant dataVar;
protected:
TopQuickButton * const q_ptr;
};
TopQuickButton::TopQuickButton(QWidget *parent) :
QToolButton(parent),
d_ptr(new TopQuickButtonPrivate(this))
{
setStyleSheet(QString("TopQuickButton{margin:%1px; border:none; background:#2196F3; border-radius:%2px;color:#FFFFFF;}\n" \
"TopQuickButton:hover{border-radius:%3px}\n" \
"QToolButton::menu-indicator{image:None;}")
.arg(TTHEME_DP(4)).arg(TTHEME_DP(10)).arg(TTHEME_DP(16)));
setFixedSize(QSize(TTHEME_DP(40),TTHEME_DP(40)));
}
TopQuickButton::~TopQuickButton()
{
}
void TopQuickButton::setUid(const QString &iUidStr)
{
Q_D(TopQuickButton);
d->uidStr = iUidStr;
}
QString TopQuickButton::uid() const
{
Q_D(const TopQuickButton);
return d->uidStr;
}
void TopQuickButton::setData(const QVariant &iDataVar)
{
Q_D(TopQuickButton);
d->dataVar = iDataVar;
}
QVariant TopQuickButton::data() const
{
Q_D(const TopQuickButton);
return d->dataVar;
}
void TopQuickButton::setModified(bool iBol)
{
Q_D(TopQuickButton);
if (d->modifiedBol != iBol) {
d->modifiedBol = iBol;
changeStyleSheet();
}
}
bool TopQuickButton::isModified() const
{
Q_D(const TopQuickButton);
return d->modifiedBol;
}
void TopQuickButton::setClosable(bool iBol)
{
Q_D(TopQuickButton);
d->closableBol = iBol;
}
bool TopQuickButton::isClosable() const
{
Q_D(const TopQuickButton);
return d->closableBol;
}
void TopQuickButton::setActived(bool iBol)
{
Q_D(TopQuickButton);
if (d->activedBol != iBol) {
d->activedBol = iBol;
changeStyleSheet();
}
}
bool TopQuickButton::isActived() const
{
Q_D(const TopQuickButton);
return d->activedBol;
}
void TopQuickButton::setOpened(bool iBol)
{
Q_D(TopQuickButton);
if (d->openedBol != iBol) {
d->openedBol = iBol;
changeStyleSheet();
}
}
bool TopQuickButton::isOpened() const
{
Q_D(const TopQuickButton);
return d->openedBol;
}
void TopQuickButton::changeStyleSheet()
{
}
#ifndef TOPQUICKBUTTON_H
#define TOPQUICKBUTTON_H
#include <QToolButton>
#include <QVariant>
#include <QWidget>
class TopClassAbs;
class TopQuickButtonPrivate;
class TopQuickButton : public QToolButton
{
Q_OBJECT
public:
explicit TopQuickButton(QWidget *parent = nullptr);
~TopQuickButton();
public slots:
void setUid(const QString &iUidStr);
QString uid() const;
void setData(const QVariant &iDataVar);
QVariant data() const;
void setModified(bool iBol);
bool isModified() const;
void setClosable(bool iBol);
bool isClosable() const;
void setActived(bool iBol);
bool isActived() const;
void setOpened(bool iBol);
bool isOpened() const;
private slots:
void changeStyleSheet();
protected:
const QScopedPointer<TopQuickButtonPrivate> d_ptr;
private:
Q_DISABLE_COPY(TopQuickButton)
Q_DECLARE_PRIVATE(TopQuickButton)
};
#endif // TOPQUICKBUTTON_H
#include "topquicktoolbar.h"
#include <QActionGroup>
#include <QMenu>
#include <QStackedWidget>
#include <QVariantMap>
#include <tbaseutil/tdataparse.h>
#include <tbaseutil/tresource.h>
#include <tbaseutil/ttheme.h>
#include <topcore/topcore.h>
#include "topquickbutton.h"
class TopQuickToolBarPrivate
{
Q_DECLARE_PUBLIC(TopQuickToolBar)
public:
explicit TopQuickToolBarPrivate(TopQuickToolBar *qptr)
: languageStr(APP->language()),
q_ptr(qptr)
{
}
~TopQuickToolBarPrivate()
{
}
QString languageStr;
QActionGroup *mToolBarActions;
protected:
TopQuickToolBar * const q_ptr;
};
TopQuickToolBar::TopQuickToolBar(QWidget *parent)
: QToolBar(parent),
d_ptr(new TopQuickToolBarPrivate(this))
{
Q_D(TopQuickToolBar);
d->mToolBarActions = new QActionGroup(this);
// this->setIconSize(QSize(16, 16));
}
TopQuickToolBar::~TopQuickToolBar()
{
// 保存来自用户配置的数据
QEventLoop loop;
connect(this, SIGNAL(userDataSaved()), &loop, SLOT(quit()));
QTimer::singleShot(300, &loop, SLOT(quit()));
emit saveUserData();
loop.exec();
}
void TopQuickToolBar::setLanguage(const QString &iLangStr)
{
Q_D(TopQuickToolBar);
d->languageStr = iLangStr;
}
QString TopQuickToolBar::language() const
{
Q_D(const TopQuickToolBar);
return d->languageStr;
}
void TopQuickToolBar::loadQuickButtons(const QVariantList &iVarLst)
{
for (QVariant var: iVarLst) {
addQuickButton(var.toMap());
}
}
TopQuickButton *TopQuickToolBar::addQuickButton(const QVariantMap &iParamMap)
{
Q_D(TopQuickToolBar);
TopQuickButton *btn = createQuickBtn(iParamMap);
btn->setToolButtonStyle(Qt::ToolButtonIconOnly);
d->mToolBarActions->addAction(addWidget(btn));
return btn;
}
void TopQuickToolBar::clearAllButtons()
{
Q_D(TopQuickToolBar);
// 清除当前ACTION,会自动析构对应的QToolButoon
QList<QAction *> listAction = d->mToolBarActions->actions();
for (QAction *act: listAction) {
d->mToolBarActions->removeAction(act);
this->removeAction(act);
act->deleteLater();
}
}
TopQuickButton *TopQuickToolBar::createQuickBtn(const QVariantMap &iParamMap)
{
Q_D(TopQuickToolBar);
TopQuickButton *toolBtn = new TopQuickButton(this);
QString btnTextStr = iParamMap.value("title_" + d->languageStr).toString();
if (btnTextStr.isEmpty()) {
btnTextStr = iParamMap.value("title").toString();
}
QString btnTooltipStr = iParamMap.value("remark_" + d->languageStr).toString();
if (btnTooltipStr.isEmpty()) {
btnTooltipStr = iParamMap.value("remark").toString();
}
if (btnTooltipStr.isEmpty()) {
btnTooltipStr = btnTextStr;
}
QString iconStr = iParamMap.value("icon").toString();
if (!iconStr.isEmpty() && !iconStr.contains('.')) {
iconStr += ".white";
}
toolBtn->setText(btnTextStr);
toolBtn->setToolTip(btnTooltipStr);
if (!iconStr.isEmpty()) {
toolBtn->setIcon(TRES->colorIcon(iconStr));
}
QString bgColor;
if (iParamMap.contains("icon_bgcolor") &&
!iParamMap.value("icon_bgcolor").toString().isEmpty()) {
bgColor = iParamMap.value("icon_bgcolor").toString();
} else {
bgColor = TTHEME->value("COLOR_PRIMARY_5").toString();
}
toolBtn->setStyleSheet(QString("TopQuickButton{border:none; background:%1;margin:%2px; border-radius:%3px;color:#FFFFFF;}\n" \
"TopQuickButton:hover{border-radius:%4px}\n" \
"QToolButton::menu-indicator{image:None;}")
.arg(bgColor).arg(TTHEME_DP(4)).arg(TTHEME_DP(10)).arg(TTHEME_DP(16)));
toolBtn->setData(iParamMap);
return toolBtn;
}
#ifndef TOPQUICKTOOLBAR_H
#define TOPQUICKTOOLBAR_H
#include <QToolBar>
#include <QVariant>
#include <QVariantList>
class QMenu;
class QStackedWidget;
class TopQuickButton;
class TopQuickToolBarPrivate;
class TopQuickToolBar : public QToolBar
{
Q_OBJECT
public:
explicit TopQuickToolBar(QWidget *parent = nullptr);
~TopQuickToolBar();
signals:
void saveUserData();
void userDataSaved();
void sizeChanged(QSize);
public slots:
void setLanguage(const QString &iLangStr);
QString language() const;
void loadQuickButtons(const QVariantList &iVarLst);
TopQuickButton *addQuickButton(const QVariantMap &iParamMap);
void clearAllButtons();
private:
TopQuickButton *createQuickBtn(const QVariantMap &iParamMap);
protected:
const QScopedPointer<TopQuickToolBarPrivate> d_ptr;
private:
Q_DISABLE_COPY(TopQuickToolBar)
Q_DECLARE_PRIVATE(TopQuickToolBar)
};
#endif // TOPQUICKTOOLBAR_H
This diff is collapsed.
......@@ -21,6 +21,14 @@ public:
explicit Musermgt(const QString &iModuleNameStr = QString(""),
const QVariantMap &iUrlPars = QVariantMap(),
QWidget *iParent = nullptr);
enum class NaviType {
None,
CategoryTreeView,
UiLoader,
AdvancedQuery,
NaviFilter,
CategoryTreeViewAndAdvancedQuery
};
~Musermgt();
......@@ -50,7 +58,10 @@ signals:
void selectionChanged(); //左侧表单选中条目变化时发送该信号
private:
void initTableView(); //初始化界面
void initNavi();
Musermgt::NaviType str2NaviType(const QString &iType);
QVariantList parseCategoryConfig();
private:
TSplitter *mBodySplitter = nullptr;
TSplitter *mBodyWidget = nullptr;
......@@ -62,10 +73,16 @@ private:
QString mLastDetailUid;
QString mDetailUid;
NaviType mNaviType = NaviType::CategoryTreeView;
QWidget *mNaviView = nullptr;
QVariantMap mAdvancedQueryCfgMap;
bool IsDetailchange = false;
TopClassTableConf mTableConf;
QTimer *mRefreshTimer = nullptr;
QVariantList mSelectedItems;
void initAdvanceCfgMap();
QVariantMap getDefaultQueryDataFromCfgMap();
};
#endif //MUSERMGT
# 模块标题
sys_title: "System Config"
sys_title_en: ""
sys_title_zhcn: "系统设置"
sys_title_zhtw: ""
# 模块图标(普通图标在font awesome中找 http://fontawesome.io/icons/)
sys_icon: "toplinker-cd"
# 模块对应的插件DLL名称
sys_plugin: "musermgt-plugin"
# 模块对应的类名
sys_class: "SysMainWindow"
# 打开模块的权限
sys_open_right: ""
# 当关闭窗口时,如果提示是否保存,保存调用的action
sys_save_action: ""
# 该模块用到的枚举列表
sys_enum_list: []
# 该模块用到的除了Action之外的权限列表
sys_permission_list: []
# 产品版本号
product_version: "V0.0.1"
# 关于对话框配置
about_us {
title:"", title_en:"", title_zhcn:"", title_zhtw:"",
copyright:"", copyright_en:"", copyright_zhcn:"", copyright_zhtw:"",
lawdesc:"", lawdesc_en:"", lawdesc_zhcn:"", lawdesc_zhtw:"",
}
# 当左侧导航的moudle或action没有权限时的状态
# 状态包括 show, hide, disable
# 默认为show
navi_status_without_permission: "disable"
# 资源
resource: {
rcc: ["topsys.rcc"]
}
# 主桌面配置
desktop: {
"navi": [
{
"route_type": "menu",
"icon": "gear",
"title": "Module menu",
"title_en": "Module menu",
"title_zhcn": "模块菜单",
"title_zhtw": "模块菜单",
"icon_bgcolor": "#7493B8",
"items": [
{
"route_type": "module",
"icon": "user-o",
"title": "Custom module",
"title_en": "Custom module",
"title_zhcn": "自定义模块",
"title_zhtw": "自定义模块",
"url_address": "Custom_module"
},
{
"route_type": "module",
"icon": "users",
"title": "Module configuration module",
"title_en": "Module configuration module",
"title_zhcn": "模板配置模块",
"title_zhtw": "模板配置模块",
"url_address": "Module_configuration_module"
},
]
},
"stretcher",
{
"route_type": "menu",
"icon": "home",
"title": "System",
"title_en": "System",
"title_zhcn": "系统",
"title_zhtw": "系統",
"icon_bgcolor": "#3598DB",
"items": [
{
"route_type": "action",
"icon": "info",
"title": "About",
"title_en": "About",
"title_zhcn": "关于",
"title_zhtw": "關於",
"url_address": "about"
},
{
"route_type": "action",
"icon": "sign-out",
"title": "Logout",
"title_en": "Logout",
"title_zhcn": "退出",
"title_zhtw": "退出",
"url_address": "quit"
}
]
}
]
}
......@@ -22,31 +22,6 @@ sys_enum_list: []
# 该模块用到的除了Action之外的权限列表
sys_permission_list: []
# 导航栏
# is_checkable,=true 或1, 表示支持checkbox形式; =false 或0, 表示非checkbox形式
navi: {
__type__: CategoryTreeViewAndAdvancedQuery,
is_checkable: 1,
categories: [
{
name: "status",
text: "status",
icon: "",
visible: 1,
expand: 1,
checked: 0,
data: "",
children: [
{ name: "active", text: "active", data: "status", checked: 1, VISIBLE:1 },
{ name: "inactive", text: "inactive", data: "status", checked: 1, VISIBLE:1 }
],
enum_children: "tpm-machine-maintenance-plan-status",
enum_checked:["active"],
enum_invisible:[]
},
]
}
# 主表格
view {
......
try {
this.newItem();
this.addUser();
} catch (e) {
print(e);
}
/*---ACTION---
ICON: "plus.#54698d"
LABEL: "New Attribute"
LABEL_ZHCN: "新建属性"
LABEL_ZHTW: "新建屬性"
ICON: "plus"
LABEL: "Add"
LABEL_ZHCN: "添加客户"
LABEL_ZHTW: "添加客戶"
ACCEL: "Ctrl+N"
TOOLTIP: "New Attribute"
TOOLTIP_ZHCN: "新建属性"
TOOLTIP_ZHTW: "新建屬性"
TOOLTIP: "Add Customer"
TOOLTIP_ZHCN: "添加客户"
TOOLTIP_ZHTW: "添加客戶"
CHECKED: ""
GROUP: ""
LABEL_EN: ""
LABEL_JP: ""
TOOLTIP_EN: ""
TOOLTIP_JP: ""
PERMISSION: "pdm-attr-name-create"
PERMISSION: ""
STYLE: "button_style=both"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: ""
STATEHOOK: "return (this.state() != 'EDIT') ? 'enable' : 'hide';"
---ACTION---*/
\ No newline at end of file
try {
this.copyItem();
this.copy();
} catch(e) {
print(e);
}
......@@ -20,5 +20,5 @@ STYLE: "button_style=icon"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: "return this.isDetailModified() ? 'hide' : 'enable';"
STATEHOOK: "return this.DetailModified() ? 'hide' : 'enable';"
---ACTION---*/
\ No newline at end of file
try {
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']);
if (ans != 'Yes') {
return;
var ans = TMessageBox.question(this, this.ttr("Are you sure to delete selected items?"), '', '',
[this.ttr('Delete')+':Yes:Yes:Primary', this.ttr('Cancel')+':Cancel:Cancel:Normal']);
if (ans != 'Yes') {
return;
}
this.removeUser(this.selectedItems());
} catch (e) {
print(e);
}
this.deleteItems(this.selectedItems());
} catch (e) {
print(e);
}
/*---ACTION---
......@@ -26,5 +26,5 @@ STYLE: "size=small button_style=both"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: "if(this.selectedItems().length > 0 && !this.isDetailModified()){return 'enable'}else{return 'disable'}"
STATEHOOK: "if(this.selectedItems().length > 0 && !this.DetailModified()){return 'enable'}else{return 'disable'}"
---ACTION---*/
\ No newline at end of file
......@@ -20,5 +20,5 @@ STYLE: "button_style=both"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: "if (!this.isDetailModified()){return 'enable'} else {return 'disable'}"
STATEHOOK: "if (!this.DetailModified()){return 'enable'} else {return 'disable'}"
---ACTION---*/
\ No newline at end of file
try {
this.reloadItem();
this.reload();
} catch(e) {
print(e);
}
......@@ -18,5 +18,5 @@ STYLE: "button_style=icon"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: "return this.isDetailModified() ? 'hide' : 'enable';"
STATEHOOK: "return this.DetailModified() ? 'hide' : 'enable';"
---ACTION---*/
\ No newline at end of file
[
{
name: "basic_info_area",
type: "ScrollArea",
property: {
widget_resizable: true,
frame_shape: 'NoFrame'
},
pack: { label: self.ttr('Basic Info') },
child: [
{
name: 'formlayout',
type: 'FormGridLayout',
property: {
// label_alignment: 'AlignTop | AlignRight',
// horizontal_spacing: 10,
// vertical_spacing: 10,
// margin: 10,
columns: 2
},
child: [
{
name: "id",
type: "LineEdit",
title: self.ttr(""),
pack: {column_span: 2},
initCallback: function(obj,value,self) {
obj.setVisible(false)
}
},
{
name: "username",
type: "LineEdit",
title: self.ttr("UserName"),
validate: function (obj, val, title, moment, self) {
if (val.trim() == '') {
return [title + self.ttr(" can not be null"), 'Error'];
} else if (!val.match(new RegExp('^[A-Za-z0-9_]+$'))) {
return [title + self.ttr(" can only contain [A-Za-z0-9]!"), 'Error'];
}
},
},
{
name: "fullname",
type: "LineEdit",
title: self.ttr("FullName"),
validate: function (obj, val, title, moment, self) {
if (val.trim() == '') {
return [title + self.ttr(" can not be null"), 'Error'];
} else if (!val.match(new RegExp('^[A-Za-z0-9_]+$'))) {
return [title + self.ttr(" can only contain [A-Za-z0-9]!"), 'Error'];
}
},
},
{
name: "status",
type: "ComboBox",
title: self.ttr("Status"),
property: {
item_list: TOPENM.enumList("tpm-machine-maintenance-plan-status").toComboList()
},
validate: 'NOTNULL',
},
{
name: "attr_data.age",
type: "LineEdit",
title: self.ttr("Age"),
validate: function (obj, val, title, moment, self) {
if (!val.match(new RegExp('^[0-9_]+$'))) {
return [title + self.ttr(" can only contain [0-9]!"), 'Error'];
} else if (parseInt(val) >= 100 || parseInt(val) <= 0) {
return [title + self.ttr("Are you sure you are a hundred years old?"), 'Error'];
}
},
},
{
name: "attr_data.gender",
type: "ComboBox",
title: self.ttr("Gender"),
property: {
item_list: TOPENM.enumList("tpm-machine-maintenance-plan-gender").toComboList()
}
},
{
type: 'VBoxLayout'
},
{
type: 'Stretch'
}
]
}
]
}
]
\ No newline at end of file
"Age": {en: "Age", zhcn: "年龄", zhtw: "年龄"}
"Gender": {en: "Gender", zhcn: "性别", zhtw: "性别"}
"Navigation": {en: "Navigation", zhcn: "导航栏", zhtw: "導航欄"}
"Display Navigation": {en: "Display Navigation", zhcn: "显示导航栏", zhtw: "顯示導航欄"}
"Hide Navigation": {en: "Hide Navigation", zhcn: "隐藏导航栏", zhtw: "隱藏導航欄"}
"Password": {en: "Password", zhcn: "密码", zhtw: "密码"}
"UserName": {en: "UserName", zhcn: "用户名", zhtw: "用户名"}
"FullName": {en: "FullName", zhcn: "全名", zhtw: "全名"}
"Status": {en: "Status", zhcn: "状态", zhtw: "状态"}
"Load data successful!": {en: "Load data successful!" ,zhcn: "加载数据完成!" ,zhtw: "加載數據完成!"}
"Choose": {en: "Choose", zhcn: "选择", zhtw: "選擇"}
"Basic Info": {en: "Basic Info", zhcn: "基本信息", zhtw: "基本信息"}
"Ok": {en: "OK", zhcn: "确定", zhtw: "確定"}
"Cancel": {en: "Cancel", zhcn: "取消", zhtw: "取消"}
"Name": {en: "Name", zhcn: "姓名", zhtw: "姓名"}
\ No newline at end of file
# 模块标题
sys_title: "Template Demo - Single Tree Show"
sys_title_en: "Template Demo - Single Tree Show"
sys_title_zhcn: "树形信息展示"
# 模块标题
sys_title: "Module configuration module"
sys_title_en: "Module configuration module"
sys_title_zhcn: "模板配置模块"
sys_title_zhtw: ""
# 模块图标
sys_icon: "wpforms"
# 模块对应的插件DLL名称
sys_plugin: "toptemplateclassplugin"
# 模块对应的类名
sys_class: "TopTemplateClass1A"
sys_class: "TopTemplateClass4"
# 许可证验证键
sys_license_key: ""
# 打开模块的权限
......@@ -22,59 +22,62 @@ sys_enum_list: []
# 该模块用到的除了Action之外的权限列表
sys_permission_list: []
# 主表格
view {
# 数据项, 默认包含表头中配置的数据项
data_keys: [ "id", "parent_id" ]
data_keys: ["id","username","fullname","status",
"attr_data"]
# 主键
primary_key: "id"
# 分组键
group_key: ""
# 父结点键
# 当无此值,表示按照group_key进行分组,树形结构只有一级
# 当有此值,表示按照parent_key生成树形结果,可能有多级
child_key: "id"
parent_key: "parent_id"
# 同级结点排序的键
seq_key: "seq"
# 水平表头
horizontal_header: [
{
"name": "code",
"display": "Code",
"displayRole": "$code",
"search": "string"
"name": "id",
"display": "ID",
"displayRole": "$id",
"size": 100
},
{
"name": "name",
"display": "Name",
"displayRole": "$name",
"search": "string"
"name": "username",
"display": "登录名",
"displayRole": "$username",
"size": 100
},
{
"name": "node_type",
"display": "Node Type",
"displayRole": "$node_type"
"name": "fullname",
"display": "全名",
"displayRole": "$fullname",
"size": 100,
"search": "string"
},
{
"name": "status",
"display": "Status",
"displayRole": "$status"
"name": "status",
"display": "状态",
"displayRole": "$status.text",
"size": 100,
"format": "enum(tpm-machine-maintenance-plan-status)"
},
{
"name": "stop_reason",
"display": "Stop Reason",
"displayRole": "$stop_reason"
}
"name": "attr_data.age",
"display": "年龄",
"displayRole": "$attr_data.age",
"size": 100
},
{
"name": "attr_data.gender",
"display": "性别",
"displayRole": "$attr_data.gender.text",
"size": 100
"format": "enum(tpm-machine-maintenance-plan-gender)"
},
]
# 默认排序列
sort_by: ""
sort_by: "id DESC"
# 数据集
data_set {
# 数据库表名
db_table_name: "mes_workcenter"
# 若有sql, 以sql为最优先
# 若无sql, 默认根据表头的配置进行查询
db_sql: ""
db_table_name: "sys_user"
db_filter: ""
}
}
# 枚举类信息
label: "TopMes/Attr Name Mgt/Data Type"
label_en: "TopMes/Attr Name Mgt/Data Type"
label_zhcn: "TopMes/属性名称列表/数据类型"
label_zhtw: "TopMes/屬性名稱列表/數據類型"
remark: ""
# 枚举项信息
items :[
{"name":"attachment","icon":"","text":"Attachment","text_zhcn":"附件","text_zhtw":"Attachment","remark":"","tags":[],"data":
{"fieldType":"VARCHAR","fieldLength":255,"widgetType":"Attachment"}},
{"name":"string","icon":"","text":"String","text_zhcn":"字符串","text_zhtw":"String","remark":"","tags":[],"data":
{"fieldType":"VARCHAR","fieldLength":255,"widgetType":"LineEdit"}},
{"name":"integer","icon":"","text":"Integer","text_zhcn":"整数","text_zhtw":"Integer","remark":"","tags":[],"data":
{"fieldType":"INTEGER","fieldLength":255,"widgetType":"LineEdit"}},
{"name":"number","icon":"","text":"Number","text_zhcn":"数字","text_zhtw":"Number","remark":"","tags":[],"data":
{"fieldType":"DOUBLE","fieldLength":255,"widgetType":"LineEdit"}},
{"name":"enum","icon":"","text":"EnumList","text_zhcn":"选项列表(单选不可编辑)","text_zhtw":"EnumList","remark":"","tags":[],"data":
{"fieldType":"VARCHAR","fieldLength":255,"widgetType":"ComboBox"}},
{"name":"multiple_enum","icon":"","text":"MultipleEnum","text_zhcn":"可多选列表","text_zhtw":"MultipleEnum","remark":"","tags":[],"data":
{"fieldType":"VARCHAR","fieldLength":255,"widgetType":"MultiComboBox"}},
{"name":"editable_enum","icon":"","text":"EditableEnum","text_zhcn":"选项列表(单选可编辑)","text_zhtw":"EditableEnum","remark":"","tags":[],"data":
{"fieldType":"VARCHAR","fieldLength":255,"widgetType":"EditableComboBox"}},
{"name":"radio_box","icon":"","text":"RadioBox","text_zhcn":"单选框","text_zhtw":"RadioBox","remark":"","tags":[],"data":
{"fieldType":"VARCHAR","fieldLength":255,"widgetType":"RadioBox"}},
{"name":"check_box","icon":"","text":"CheckBox","text_zhcn":"复选框","text_zhtw":"CheckBox","remark":"","tags":[],"data":
{"fieldType":"VARCHAR","fieldLength":255,"widgetType":"CheckBox"}},
{"name":"multiple_check","icon":"","text":"MultipleCheck","text_zhcn":"可多选复选框","text_zhtw":"MultipleCheck","remark":"","tags":[],"data":
{"fieldType":"VARCHAR","fieldLength":255,"widgetType":"MultiCheckBox"}},
{"name":"plain_text","icon":"","text":"PlainText","text_zhcn":"文本(不可变字体及颜色)","text_zhtw":"PlainText","remark":"","tags":[],"data":
{"fieldType":"TEXT","fieldLength":255,"widgetType":"PlainTextEdit"}},
{"name":"text","icon":"","text":"Text","text_zhcn":"富文本(字体及颜色可变)","text_zhtw":"Text","remark":"","tags":[],"data":
{"fieldType":"TEXT","fieldLength":255,"widgetType":"TextEdit"}},
{"name":"date_time","icon":"","text":"DateTime","text_zhcn":"日期时间","text_zhtw":"DateTime","remark":"","tags":[],"data":
{"fieldType":"TIMESTAMP","fieldLength":255,"widgetType":"DateTimeEdit"}},
{"name":"date","icon":"","text":"Date","text_zhcn":"日期","text_zhtw":"Date","remark":"","tags":[],"data":
{"fieldType":"DATE","fieldLength":255,"widgetType":"DateEdit"}},
{"name":"time","icon":"","text":"Time","text_zhcn":"时间","text_zhtw":"Time","remark":"","tags":[],"data":
{"fieldType":"TIMESTAMP","fieldLength":255,"widgetType":"TimeEdit"}},
{"name":"table_view","icon":"","text":"TableView","text_zhcn":"表格","text_zhtw":"TableView","remark":"","tags":[],"data":
{"fieldType":"Text","fieldLength":255,"widgetType":"TableView"}},
{"name":"code","icon":"","text":"CodeEdit","text_zhcn":"代码片段","text_zhtw":"CodeEdit","remark":"","tags":[],"data":
{"fieldType":"TEXT","fieldLength":255,"widgetType":"CodeEdit"}},
{"name":"tree_view","icon":"","text":"TreeView","text_zhcn":"树形","text_zhtw":"TreeView","remark":"","tags":[],"data":
{"fieldType":"Text","fieldLength":255,"widgetType":"PcbPdmTreeView"}}
]
\ No newline at end of file
# 枚举类信息
label: "TopPDM/Attr Name Mgt/Attr Category"
label_en: "TopPDM/Attr Name Mgt/Attr Category"
label_zhcn: "东领产品数据管理/属性名称列表/属性分类"
label_zhtw: "東領產品數據管理/屬性名稱列表/屬性分類"
remark: ""
# 枚举项信息
items :[
{"name":"info","icon":"","text":"Info","text_zhcn":"Info","text_zhtw":"Info","remark":"","tags":[],"data":null},
{"name":"drill","icon":"","text":"Drill","text_zhcn":"钻孔","text_zhtw":"鑽孔","remark":"","tags":[],"data":null},
{"name":"inner","icon":"","text":"Inner","text_zhcn":"内层","text_zhtw":"內層","remark":"","tags":[],"data":null},
{"name":"outer","icon":"","text":"Outer","text_zhcn":"外层","text_zhtw":"外層","remark":"","tags":[],"data":null},
{"name":"relam","icon":"","text":"Relam","text_zhcn":"层压","text_zhtw":"層壓","remark":"","tags":[],"data":null},
{"name":"soldermask","icon":"","text":"SM","text_zhcn":"防焊","text_zhtw":"防焊","remark":"","tags":[],"data":null},
{"name":"silkscreen","icon":"","text":"SS","text_zhcn":"字符","text_zhtw":"字符","remark":"","tags":[],"data":null},
{"name":"logo","icon":"","text":"Logo","text_zhcn":"Logo","text_zhtw":"Logo","remark":"","tags":[],"data":null},
{"name":"surface","icon":"","text":"Surface","text_zhcn":"表面处理","text_zhtw":"表面處理","remark":"","tags":[],"data":null},
{"name":"contour","icon":"","text":"Contour","text_zhcn":"外形","text_zhtw":"外形","remark":"","tags":[],"data":null},
{"name":"quote","icon":"","text":"Quote","text_zhcn":"报价","text_zhtw":"報價","remark":"","tags":[],"data":null},
{"name":"other","icon":"","text":"Other","text_zhcn":"其他","text_zhtw":"其他","remark":"","tags":[],"data":null},
{"name":"sys","icon":"","text":"Sys","text_zhcn":"系统","text_zhtw":"系統","remark":"","tags":[],"data":null}
]
\ No newline at end of file
# 枚举类信息
label: "TopPDM/Attr Name Mgt/Attr Type"
label_en: "TopPDM/Attr Name Mgt/Attr Type"
label_zhcn: "东领产品数据管理/属性名称列表/属性类型"
label_zhtw: "東領產品數據管理/屬性名稱列表/屬性類型"
remark: ""
# 枚举项信息
items :[
{"name":"job","icon":"","text":"Job","text_zhcn":"料号属性","text_zhtw":"料號屬性","remark":"","tags":[],"data":null},
{"name":"layer","icon":"","text":"Layer","text_zhcn":"层属性","text_zhtw":"層屬性","remark":"","tags":[],"data":null}
]
\ No newline at end of file
# 枚举类信息
label: "TopPDM/Attr Name Mgt/Data Type"
label_en: "TopPDM/Attr Name Mgt/Data Type"
label_zhcn: "东领产品数据管理/属性名称列表/数据类型"
label_zhtw: "東領產品數據管理/屬性名稱列表/數據類型"
remark: ""
# 枚举项信息
items :[
{"name":"attachment","icon":"","text":"Attachment","text_zhcn":"附件","text_zhtw":"Attachment","remark":"","tags":[],"data":
{"fieldType":"VARCHAR","fieldLength":255,"widgetType":"Attachment"}},
{"name":"string","icon":"","text":"String","text_zhcn":"字符串","text_zhtw":"String","remark":"","tags":[],"data":
{"fieldType":"VARCHAR","fieldLength":255,"widgetType":"LineEdit"}},
{"name":"integer","icon":"","text":"Integer","text_zhcn":"整数","text_zhtw":"Integer","remark":"","tags":[],"data":
{"fieldType":"INTEGER","fieldLength":255,"widgetType":"LineEdit"}},
{"name":"number","icon":"","text":"Number","text_zhcn":"数字","text_zhtw":"Number","remark":"","tags":[],"data":
{"fieldType":"DOUBLE","fieldLength":255,"widgetType":"LineEdit"}},
{"name":"length_entry","icon":"","text":"LengthEntry","text_zhcn":"数字(单位转换)","text_zhtw":"數字(單位轉換)","remark":"","tags":[],"data":
{"fieldType":"DOUBLE","fieldLength":255,"widgetType":"LengthValueEntry"}},
{"name":"enum","icon":"","text":"EnumList","text_zhcn":"选项列表(单选不可编辑)","text_zhtw":"EnumList","remark":"","tags":[],"data":
{"fieldType":"VARCHAR","fieldLength":255,"widgetType":"ComboBox"}},
{"name":"multiple_enum","icon":"","text":"MultipleEnum","text_zhcn":"可多选列表","text_zhtw":"MultipleEnum","remark":"","tags":[],"data":
{"fieldType":"VARCHAR","fieldLength":255,"widgetType":"MultiComboBox"}},
{"name":"editable_enum","icon":"","text":"EditableEnum","text_zhcn":"选项列表(单选可编辑)","text_zhtw":"EditableEnum","remark":"","tags":[],"data":
{"fieldType":"VARCHAR","fieldLength":255,"widgetType":"EditableComboBox"}},
{"name":"radio_box","icon":"","text":"RadioBox","text_zhcn":"单选框","text_zhtw":"RadioBox","remark":"","tags":[],"data":
{"fieldType":"VARCHAR","fieldLength":255,"widgetType":"RadioBox"}},
{"name":"check_box","icon":"","text":"CheckBox","text_zhcn":"复选框","text_zhtw":"CheckBox","remark":"","tags":[],"data":
{"fieldType":"VARCHAR","fieldLength":255,"widgetType":"CheckBox"}},
{"name":"multiple_check","icon":"","text":"MultipleCheck","text_zhcn":"可多选复选框","text_zhtw":"MultipleCheck","remark":"","tags":[],"data":
{"fieldType":"VARCHAR","fieldLength":255,"widgetType":"MultiCheckBox"}},
{"name":"plain_text","icon":"","text":"PlainText","text_zhcn":"文本(不可变字体及颜色)","text_zhtw":"PlainText","remark":"","tags":[],"data":
{"fieldType":"TEXT","fieldLength":255,"widgetType":"PlainTextEdit"}},
{"name":"text","icon":"","text":"Text","text_zhcn":"富文本(字体及颜色可变)","text_zhtw":"Text","remark":"","tags":[],"data":
{"fieldType":"TEXT","fieldLength":255,"widgetType":"TextEdit"}},
{"name":"date_time","icon":"","text":"DateTime","text_zhcn":"日期时间","text_zhtw":"DateTime","remark":"","tags":[],"data":
{"fieldType":"TIMESTAMP","fieldLength":255,"widgetType":"DateTimeEdit"}},
{"name":"date","icon":"","text":"Date","text_zhcn":"日期","text_zhtw":"Date","remark":"","tags":[],"data":
{"fieldType":"DATE","fieldLength":255,"widgetType":"DateEdit"}},
{"name":"time","icon":"","text":"Time","text_zhcn":"时间","text_zhtw":"Time","remark":"","tags":[],"data":
{"fieldType":"TIMESTAMP","fieldLength":255,"widgetType":"TimeEdit"}},
{"name":"table_view","icon":"","text":"TableView","text_zhcn":"表格","text_zhtw":"TableView","remark":"","tags":[],"data":
{"fieldType":"Text","fieldLength":255,"widgetType":"TableView"}},
{"name":"code","icon":"","text":"CodeEdit","text_zhcn":"代码片段","text_zhtw":"CodeEdit","remark":"","tags":[],"data":
{"fieldType":"TEXT","fieldLength":255,"widgetType":"CodeEdit"}},
{"name":"tree_view","icon":"","text":"TreeView","text_zhcn":"树形","text_zhtw":"TreeView","remark":"","tags":[],"data":
{"fieldType":"Text","fieldLength":255,"widgetType":"PcbPdmTreeView"}}
]
\ No newline at end of file
# 枚举类信息
label: "TopPDM/Attr Name Mgt/Department"
label_en: "TopPDM/Attr Name Mgt/Department"
label_zhcn: "东领产品数据管理/属性名称列表/部门"
label_zhtw: "東領產品數據管理/屬性名稱列表/部門"
remark: ""
# 枚举项信息
items :[
{"name":"sales","icon":"","text":"Sales","text_zhcn":"销售","text_zhtw":"銷售","remark":"","tags":[],"data":null},
{"name":"mi","icon":"","text":"MI","text_zhcn":"预审","text_zhtw":"預審","remark":"","tags":[],"data":null},
{"name":"cam","icon":"","text":"CAM","text_zhcn":"CAM","text_zhtw":"CAM","remark":"","tags":[],"data":null}
]
\ No newline at end of file
# 枚举类信息
label: "TopPDM/Job Management/Job Status"
label_en: "TopPDM/Job Management/Job Status"
label_zhcn: "东领产品数据管理/料号管理/料号状态"
label_zhtw: "東領產品數據管理/料號管理/料號狀態"
remark: ""
# 枚举项信息
items :[
{"name":"active","icon":"play-circle-o.#27ad3a","text":"Active","text_zhcn":"激活","text_zhtw":"激活","remark":"","tags":[]},
{"name":"finish","icon":"check-circle-o.#3366ff","text":"Finish","text_zhcn":"结案","text_zhtw":"結案","remark":"","tags":[]},
{"name":"pause","icon":"pause-circle-o.#f49138","text":"Pause","text_zhcn":"暂停","text_zhtw":"暫停","remark":"","tags":[]},
{"name":"cancel","icon":"times-circle-o.#e82525","text":"Cancel","text_zhcn":"取消","text_zhtw":"取消","remark":"","tags":[]}
]
\ No newline at end of file
# 枚举类信息
label: "TopPDM/Job Management/Job Type"
label_en: "TopPDM/Job Management/Job Type"
label_zhcn: "东领产品数据管理/料号管理/料号类型"
label_zhtw: "東領產品數據管理/料號管理/料號類型"
remark: ""
# 枚举项信息
items :[
{"name":"normal","icon":"","text":"Normal","text_zhcn":"厂内料号","text_zhtw":"廠內料號","remark":"","tags":[]},
{"name":"combine","icon":"","text":"Combine","text_zhcn":"合拼料号","text_zhtw":"合拼料號","remark":"","tags":[]},
{"name":"sub_job","icon":"","text":"SubJob","text_zhcn":"子料号","text_zhtw":"子料號","remark":"","tags":[]}
]
\ No newline at end of file
# 枚举类信息
label: "MES/Mes TPM Maintenance Category/Plan Category"
label_en: "MES/Mes TPM Maintenance PlCategoryan/Plan Category"
label_zhcn: "MES/维护计划/计划分类"
label_zhtw: "MES/维护计划/计划分类"
remark: ""
# 枚举项信息
items :[
{"name":"overhaul","icon":"","text":"大修","text_zhcn":"大修","text_zhtw":"大修","remark":"","tags":[]},
{"name":"part_repairing","icon":"","text":"局部维修","text_zhcn":"局部维修","text_zhtw":"局部维修","remark":"","tags":[]},
{"name":"lubrication","icon":"","text":"润滑保养","text_zhcn":"润滑保养","text_zhtw":"润滑保养","remark":"","tags":[]},
{"name":"sealing","icon":"","text":"密封保养","text_zhcn":"密封保养","text_zhtw":"密封保养","remark":"","tags":[]}
]
\ No newline at end of file
# 枚举类信息
label: "MES/Mes TPM Maintenance Class/Maintenance Class"
label_en: "MES/Mes TPM Maintenance Class/Maintenance Class"
label_zhcn: "MES/维护计划/维护分类"
label_zhtw: "MES/维护计划/维护分类"
remark: ""
# 枚举项信息
items :[
{"name":"repair","icon":"","text":"维修","text_zhcn":"维修","text_zhtw":"维修","remark":"","tags":[]},
{"name":"maintenance","icon":"","text":"保养","text_zhcn":"保养","text_zhtw":"保养","remark":"","tags":[]},
{"name":"spot_check","icon":"","text":"点检","text_zhcn":"点检","text_zhtw":"点检","remark":"","tags":[]}
]
\ No newline at end of file
# 枚举类信息
label: "MES/Mes TPM Maintenance Class/Maintenance Cycle"
label_en: "MES/Mes TPM Maintenance Class/Maintenance Cycle"
label_zhcn: "MES/维护计划/维护周期"
label_zhtw: "MES/维护计划/维护周期"
remark: ""
# 枚举项信息
items :[
{"name":"day","icon":"","text":"天","text_zhcn":"天","text_zhtw":"天","remark":"","tags":[]},
{"name":"week","icon":"","text":"周","text_zhcn":"周","text_zhtw":"周","remark":"","tags":[]},
{"name":"month","icon":"","text":"月","text_zhcn":"月","text_zhtw":"月","remark":"","tags":[]}
]
\ No newline at end of file
# 枚举类信息
label: "MES/Mes TPM Maintenance Category/Plan Execution Cycle"
label_en: "MES/Mes TPM Maintenance PlCategoryan/Plan Execution Cycle"
label_zhcn: "MES/维护计划/计划执行周期"
label_zhtw: "MES/维护计划/计划执行周期"
remark: ""
# 枚举项信息
items :[
{"name":"once","icon":"","text":"单次","text_zhcn":"单次","text_zhtw":"单次","remark":"","tags":[]},
{"name":"cycle","icon":"","text":"周期","text_zhcn":"周期","text_zhtw":"周期","remark":"","tags":[]}
]
\ No newline at end of file
# 枚举类信息
label: "MES/Mes TPM Maintenance Plan/Plan Priority"
label_en: "MES/Mes TPM Maintenance Plan/Plan Priority"
label_zhcn: "MES/维护计划/计划优先级"
label_zhtw: "MES/维护计划/计划优先级"
remark: ""
# 枚举项信息
items :[
{"name":"1","icon":"","text":"1","text_zhcn":"1","text_zhtw":"1","remark":"","tags":[]},
{"name":"2","icon":"","text":"2","text_zhcn":"2","text_zhtw":"2","remark":"","tags":[]},
{"name":"3","icon":"","text":"3","text_zhcn":"3","text_zhtw":"3","remark":"","tags":[]}
]
\ No newline at end of file
try {
this.showPasswordModificationDialog();
} catch (e) {
print(e);
}
/*---ACTION---
ICON: ""
LABEL: "Modify Password"
LABEL_ZHCN: "修改密码"
LABEL_ZHCN: "修改密碼"
ACCEL: ""
TOOLTIP: "Modify Password"
TOOLTIP_ZHCN: "修改密码"
TOOLTIP_ZHTW: "修改密碼"
CHECKED: ""
GROUP: ""
STYLE: "size=small button_style=both"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: ""
---ACTION---*/
\ No newline at end of file
# 模块标题
sys_title: "Demo Summary"
sys_title_en: ""
sys_title_zhcn: "模板模块汇总"
sys_title_zhtw: ""
# 模块图标(普通图标在font awesome中找 http://fontawesome.io/icons/)
sys_icon: "toplinker-cd"
# 模块对应的插件DLL名称
sys_plugin: "topikm6-topsys-plugin"
# 模块对应的类名
sys_class: "SysMainWindow"
# 打开模块的权限
sys_open_right: ""
# 当关闭窗口时,如果提示是否保存,保存调用的action
sys_save_action: ""
# 该模块用到的枚举列表
sys_enum_list: []
# 该模块用到的除了Action之外的权限列表
sys_permission_list: []
# 产品版本号
product_version: "V0.0.1"
# 关于对话框配置
about_us {
title:"", title_en:"", title_zhcn:"", title_zhtw:"",
copyright:"", copyright_en:"", copyright_zhcn:"", copyright_zhtw:"",
lawdesc:"", lawdesc_en:"", lawdesc_zhcn:"", lawdesc_zhtw:"",
}
# 当左侧导航的moudle或action没有权限时的状态
# 状态包括 show, hide, disable
# 默认为show
navi_status_without_permission: "disable"
# 资源
resource: {
rcc: []
}
# 主桌面配置
desktop: {
"navi": [
{
"route_type": "module",
"icon": "code",
"title": "单表格",
"title_en": "",
"title_zhcn": "",
"title_zhtw": "",
"url_address": "template-demo-single-table"
},
{
"route_type": "module",
"icon": "code",
"title": "单树形表格",
"title_en": "",
"title_zhcn": "",
"title_zhtw": "",
"url_address": "template-demo-single-tree"
},
{
"route_type": "module",
"icon": "code",
"title": "表单",
"title_en": "",
"title_zhcn": "",
"title_zhtw": "",
"url_address": "template-demo-uiloader"
},
{
"route_type": "module",
"icon": "code",
"title": "带详情表单",
"title_en": "",
"title_zhcn": "",
"title_zhtw": "",
"url_address": "template-demo-table-with-detail"
},
{
"route_type": "module",
"icon": "code",
"title": "属性名称列表",
"title_en": "",
"title_zhcn": "",
"title_zhtw": "",
"url_address": "pdm-attr-name-mgt"
},
{
"route_type": "module",
"icon": "code",
"title": "叠构模板库",
"title_en": "",
"title_zhcn": "",
"title_zhtw": "",
"url_address": "pdm-stackup-template"
},
{
"route_type": "module",
"icon": "code",
"title": "主从表",
"title_en": "",
"title_zhcn": "",
"title_zhtw": "",
"url_address": "template-demo-master-slave"
},
{
"route_type": "menu",
"icon": "home",
"title": "System",
"title_en": "System",
"title_zhcn": "系统",
"title_zhtw": "系統",
"icon_bgcolor": "#3598DB",
"items": [
{
"route_type": "module",
"icon": "gears",
"title": "Module Setting",
"title_en": "Module Setting",
"title_zhcn": "模块配置",
"title_zhtw": "模塊配置",
"url_address": "module-conf-mgt"
},
{
"route_type": "module",
"icon": "gear",
"title": "Config Management",
"title_en": "Config Management",
"title_zhcn": "配置管理",
"title_zhtw": "配置管理",
"url_address": "sys-config-mgt"
},
{
"route_type": "action",
"icon": "cloud-upload",
"title": "Module Upgrade",
"title_en": "Module Upgrade",
"title_zhcn": "模块升级",
"title_zhtw": "模塊升级",
"url_address": "open_module_upgrade"
},
{
"route_type": "module",
"icon": "code",
"title": "Macro Console",
"title_en": "Macro Console",
"title_zhcn": "宏控制台",
"title_zhtw": "宏控制臺",
"url_address": "sys-macro-console"
},
{
"route_type": "module",
"icon": "file-text-o",
"title": "Log Console",
"title_en": "Log Console",
"title_zhcn": "后台日志",
"title_zhtw": "後台日誌",
"url_address": "sys-log-console"
},
{
"route_type": "action",
"icon": "lock",
"title": "Change Password",
"title_en": "Change Password",
"title_zhcn": "修改密码",
"title_zhtw": "修改密碼",
"url_address": "modifypwd"
},
{
"route_type": "action",
"icon": "info",
"title": "About",
"title_en": "About",
"title_zhcn": "关于",
"title_zhtw": "關於",
"url_address": "about"
},
{
"route_type": "action",
"icon": "sign-out",
"title": "Logout",
"title_en": "Logout",
"title_zhcn": "退出",
"title_zhtw": "退出",
"url_address": "quit"
}
]
}
]
}
this.afterModuleInit = function () {
var self = this;
var lang_def = APP.languageDefine();
// 根据语言定义确定要查的title_i18n
var cfg = self.config();
var data_keys = self.config('view.data_keys');
_.forEach(lang_def, function (v, k) {
data_keys.push('attr_data.title_i18n.' + k);
self.setUserData('attr_data.title_i18n.' + k + '.visible', 0);
});
_.set(cfg, 'view.data_keys', data_keys);
self.setConfig(cfg);
// 根据语言定义动态修改detail.ui.js
var detail_ui = self.ui('detail');
var title_i18n_actions = [];
var title_i18n_widgets = [];
var action_template_str = "{ \
type: 'Action', \
property: { text: '{0}', user_data: '{1}', checkable: true}, \
callback: function(obj, checked, self) { \
var lang = obj.getData('user_data'); \
self.setUserData('{2}'+lang+'.visible', checked); \
this.refreshState(); \
} \
}";
var widget_template_str = "{ \
name: '{0}', \
type: 'LineEdit', \
title: self.ttr('Title') + ' ({1})', \
pack: { label: self.ttr('Title') + ' ({1})' }, \
state: function(obj, self) { \
var v = self.userData('{0}.visible'); \
if (v) { \
return 'show'; \
} else { \
return 'hide'; \
} \
}, \
getter: function(obj) { \
if (_.isEmpty(obj.text)) { \
return null; \
} \
return obj.text; \
} \
}";
_.forEach(lang_def, function (v, k) {
title_i18n_actions.push(_.format(action_template_str, v, k, 'attr_data.title_i18n.'));
title_i18n_widgets.push(_.format(widget_template_str, 'attr_data.title_i18n.' + k, v));
});
detail_ui = detail_ui.replace('/*{% TITLE_I18N_ACTIONS %}*/', title_i18n_actions.join(','))
.replace('/*{% TITLE_I18N_WIDGETS %},*/', title_i18n_widgets.join(',') + ',');
self.setUi('detail', detail_ui);
// 根据语言定义动态修改option-list.ui.js
var option_ui = self.ui('option-list');
var option_i18n_actions = [];
var option_i18n_widgets = [];
_.forEach(lang_def, function (v, k) {
option_i18n_actions.push(_.format(action_template_str, v, k, 'text_'));
option_i18n_widgets.push(_.format(widget_template_str, 'text_' + k, v));
});
option_ui = option_ui.replace('/*{% TITLE_I18N_ACTIONS %}*/', option_i18n_actions.join(','))
.replace('/*{% TITLE_I18N_WIDGETS %},*/', option_i18n_widgets.join(',') + ',');
self.setUi('option-list', option_ui);
};
try {
var self = this;
var option_list_table = self.uiLoader().getObject("option_list");
if (option_list_table == undefined) return;
var allDataMap = option_list_table.allDataMap();
var ret = GUI.showForm({
title: self.ttr('New Option'),
self: self,
use_core_engine: true,
ui: self.ui('option-list'),
size: '400x400',
buttons: [
self.ttr('Ok') + ':Ok:Ok:Primary',
self.ttr('Cancel') + ':Cancel:Cancel:Normal'
],
include_hidden_items: true,
});
if (_.isEmpty(ret)) return;
var isNameExist = false;
_.forEach(allDataMap, function(item) {
if (ret['name'] == item['name']) {
isNameExist = true;
}
});
if (isNameExist) {
GUI.msgbox({
title: this.ttr("Error"),
text: this.ttr("Option name is exist")
});
return;
}
option_list_table.appendRow(ret);
} catch (e) {
print(e);
}
\ No newline at end of file
try {
this.reloadItem();
} catch(e) {
print(e);
}
/*---ACTION---
ICON: "times.#54698d"
LABEL: "Cancel"
LABEL_ZHCN: "取消"
LABEL_ZHTW: "取消"
ACCEL: ""
TOOLTIP: "Cancel Edit"
TOOLTIP_ZHCN: "取消编辑"
TOOLTIP_ZHTW: "取消編輯"
CHECKED: ""
GROUP: ""
LABEL_EN: ""
LABEL_JP: ""
TOOLTIP_EN: ""
TOOLTIP_JP: ""
STYLE: "button_style=both"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: "return (this.isDetailModified() ) ? 'enable' : 'hide';"
---ACTION---*/
\ No newline at end of file
try {
this.copyItem();
this.uiLoader().setValue('name', "");
} catch (e) {
print(e);
}
/*---ACTION---
ICON: "copy.#54698d"
LABEL: "Copy"
LABEL_ZHCN: "复制"
LABEL_ZHTW: "複製"
ACCEL: ""
TOOLTIP: "Copy Attribute"
TOOLTIP_ZHCN: "复制属性"
TOOLTIP_ZHTW: "複製屬性"
CHECKED: ""
GROUP: ""
LABEL_EN: ""
LABEL_JP: ""
TOOLTIP_EN: ""
TOOLTIP_JP: ""
PERMISSION: "pdm-attr-name-edit"
STYLE: "button_style=icon"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: "return (this.isDetailModified() || this.detailUid() == 0) ? 'hide' : 'enable';"
---ACTION---*/
\ No newline at end of file
var del_flag_key = this.config("view_data_set.db_del_flag_key");
try {
if (_.isEmpty(del_flag_key)) {
if ('ok' != TMessageBox.warning(this, this.ttr('Are you sure to delete selected items?'), '', this.ttr('Delete item'), [this.ttr('Sure') + ':ok:ok:warn', this.ttr('Cancel') + ':cancel:cancel:primary'])) {
return;
}
} else {
if ('ok' != TMessageBox.warning(this, this.ttr('Are you sure to move the selected item to the recycling station?'), '', this.ttr('Delete item'), [this.ttr('Sure') + ':ok:ok:warn', this.ttr('Cancel') + ':cancel:cancel:primary'])) {
return;
}
}
this.deleteItems(this.selectedItems());
this.refresh();
this.refreshDetail("");
}
catch (e) {
print(e);
}
/*---ACTION---
ICON: "trash.#54698d"
LABEL: "Delete"
LABEL_ZHCN: "删除"
LABEL_ZHTW: "刪除"
ACCEL: "Delete"
TOOLTIP: "Delete Attribute"
TOOLTIP_ZHCN: "删除属性"
TOOLTIP_ZHTW: "刪除屬性"
CHECKED: ""
GROUP: ""
LABEL_EN: ""
LABEL_JP: ""
TOOLTIP_EN: ""
TOOLTIP_JP: ""
PERMISSION: "pdm-attr-name-delete"
STYLE: "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 self = this;
var option_list_table = self.uiLoader().getObject("option_list");
if (option_list_table == undefined) {
return;
}
if (option_list_table.selectedRowDataMaps().length <= 0) {
return;
}
var allDataMap = option_list_table.allDataMap();
var rowMap = option_list_table.selectedRowDataMaps()[0];
var currentIndex = -1;
_.each(allDataMap, function(item, index) {
if (_.isEqual(rowMap, item)) {
currentIndex = index;
}
})
var ret = GUI.showForm({
title: self.ttr('Edit Option') + ": " + rowMap['name'],
self: self,
use_core_engine: true,
ui: self.ui('option-list'),
size: '400x400',
buttons: [
self.ttr('Ok') + ':Ok:Ok:Primary',
self.ttr('Cancel') + ':Cancel:Cancel:Normal'
],
include_hidden_items: true,
values: rowMap
})
if (_.isEmpty(ret)) {
return;
}
var isNameExist = false;
var iindex;
_.forEach(allDataMap, function(item, index) {
if (currentIndex != index && ret['name'] == item['name']) {
isNameExist = true;
}
});
if (isNameExist) {
GUI.msgbox({
title: this.ttr("Error"),
text: this.ttr("Option Name is existed!")
});
return;
}
option_list_table.setRowDataByPrimaryKey(rowMap["name"], ret);
} catch (e) {
print(e);
}
\ No newline at end of file
try {
this.refresh(false);
} catch(e) {
print(e);
}
/*---ACTION---
ICON: "refresh.#54698d"
LABEL: "Refresh"
LABEL_ZHCN: "刷新"
LABEL_ZHTW: "刷新"
ACCEL: "F5"
TOOLTIP: "Refresh"
TOOLTIP_ZHCN: "刷新"
TOOLTIP_ZHTW: "刷新"
CHECKED: ""
GROUP: ""
LABEL_EN: ""
LABEL_JP: ""
TOOLTIP_EN: ""
TOOLTIP_JP: ""
STYLE: "button_style=icon"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: ""
---ACTION---*/
\ No newline at end of file
try {
this.reloadItem();
} catch(e) {
print(e);
}
/*---ACTION---
ICON: "refresh.#54698d"
LABEL: "Refresh"
LABEL_ZHCN: "刷新"
LABEL_ZHTW: "刷新"
ACCEL: ""
TOOLTIP: "Reload data from database"
TOOLTIP_ZHCN: "重载数据"
TOOLTIP_ZHTW: "重載數據"
CHECKED: ""
GROUP: ""
LABEL_EN: ""
LABEL_JP: ""
TOOLTIP_EN: ""
TOOLTIP_JP: ""
STYLE: "button_style=icon"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: "return (this.isDetailModified() || this.detailUid() == 0) ? 'hide' : 'enable';"
---ACTION---*/
\ No newline at end of file
var self = this;
var option_list_table = self.uiLoader().getObject("option_list");
if (option_list_table == undefined) {
return;
}
if (option_list_table.selectedRowDataMaps().length <= 0) {
return;
}
if ('ok' != TMessageBox.warning(self, self.ttr('Are you sure to remove selected items?'), '', self.ttr('Delete item'), [self.ttr('Sure') + ':ok:ok:warn', self.ttr('Cancel') + ':cancel:cancel:primary'])) {
return;
}
option_list_table.removeSelectedRows();
var ans = TMessageBox.question(this, this.ttr("Are you sure to restore selected items?"), '', this.ttr('Ask'));
if (ans != 'Yes')
{
return;
}
var query = new TSqlQueryV2(T_SQLCNT_POOL.getSqlDatabase());
query.begin();
try {
var updater = new TSqlUpdaterV2;
updater.setTable("pdm_attrname");
updater.setWhere('id', this.selectedItems());
updater.setData({del_flag: 0});
query.updateRow(updater);
var error = query.lastError();
if (error.isValid()) {
throw error;
}
query.commit();
this.alertOk(this.ttr("Restore data Success!"));
this.refresh(false);
this.refreshDetail("");
} catch (e) {
query.rollback();
this.alertError(this.ttr("Restore Data Failed"));
print(e);
}
/*---ACTION---
ICON: "mail-reply"
LABEL: "Restore"
LABEL_ZHCN: "还原"
LABEL_ZHTW: "還原"
ACCEL: "Ctrl+R"
TOOLTIP: "Restore Attribute"
TOOLTIP_ZHCN: "还原属性"
TOOLTIP_ZHTW: "還原屬性"
CHECKED: ""
GROUP: ""
LABEL_EN: ""
LABEL_JP: ""
TOOLTIP_EN: ""
TOOLTIP_JP: ""
PERMISSION: "pdm-attr-name-edit"
STYLE: "button_style=both"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: "if(_.isEmpty(this.config('view.data_set.db_del_flag_key')) == false){return 'hide'} else if( this.selectedItems().length > 0){return 'enable'}else{return 'disable'}"
---ACTION---*/
\ No newline at end of file
try {
this.saveItem();
} catch (e) {
print(e);
}
/*---ACTION---
ICON: "save.#54698d"
LABEL: "Save"
LABEL_ZHCN: "保存"
LABEL_ZHTW: "保存"
ACCEL: "Ctrl+S"
TOOLTIP: "Save Attribute"
TOOLTIP_ZHCN: "保存属性"
TOOLTIP_ZHTW: "保存屬性"
PERMISSION: "pdm-attr-name-edit"
CHECKED: ""
GROUP: ""
STYLE: "button_style=both"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: "return (this.isDetailModified() ) ? 'enable' : 'disable';"
---ACTION---*/
\ No newline at end of file
var query = new TSqlQueryV2(T_SQLCNT_POOL.getSqlDatabase());
var self = this;
try {
var selector = new TSqlSelectorV2;
selector.setTable("pdm_attrname");
selector.setField(["id", "name", "title", "storage_flag"]);
selector.setWhere("del_flag = 0 OR del_flag IS NULL");
var error = new TError;
var data = this.runSqlQueryOnThreadSync('TOPSQLTHREAD_SELECT_ARRAYMAP', selector, error);
if (error.isValid()) {
throw error.text();
}
var flagTrueList = []; //storage_flag = 1
var flagFalseList = []; //storage_flag = 0 or null
_.forEach(data, function(item){
var storage_flag = item["storage_flag"];
if (storage_flag == 1) {
flagTrueList.push(item);
} else {
flagFalseList.push(item);
}
});
var dialog = new TTableChooserDialog(self);
dialog.setTitle(self.ttr("Set primary attrname"));
dialog.setButtons([self.ttr('Ok') + ':Ok:Ok:Primary', self.ttr('Cancel') + ':Cancel:Cancel:ERROR']);
dialog.setIcon("pdm-setting.546998d");
dialog.setRepetitionEnabled(false);
dialog.setPrimaryKey('id');
dialog.setSearchKeys(['name', 'title']);
dialog.setHeaderItem(
[
{
},
{
name: 'name',
display: self.ttr('Attrname'),
displayRole: '$name',
resizeMode: 'Stretch',
sorting_enabled: 1,
},
{
name: 'title',
display: self.ttr('Title'),
displayRole: '$title',
resizeMode: 'Stretch',
sorting_enabled: 0
}
]
);
dialog.setDataKeyList(['id', 'name', 'title', 'storage_flag']);
dialog.loadAllData(flagFalseList);
dialog.loadSelectedData(flagTrueList);
var ret = dialog.run();
if (_.isEmpty(ret)) {
return;
}
var newFlagFalseList = dialog.tableView().allDataMap();
var newFlagTrueList = dialog.selectedTableView().allDataMap();
var flagTrueIds = [];
var flagFalseIds = [];
_.forEach(newFlagTrueList, function(item) {
flagTrueIds.push(item['id']);
});
_.forEach(newFlagFalseList, function(item) {
flagFalseIds.push(item['id']);
});
var updater = new TSqlUpdaterV2;
updater.setTable('pdm_attrname');
var updateTrueMap = {};
updateTrueMap["storage_flag"] = 1;
updater.setField(["storage_flag"]);
updater.setWhere("id", flagTrueIds);
updater.setData(updateTrueMap);
query.updateRow(updater);
var error = query.lastError();
if (error.isValid()) {
throw error;
}
var updateFalseMap = {};
updateFalseMap["storage_flag"] = 0;
updater.setField(["storage_flag"]);
updater.setWhere("id", flagFalseIds);
updater.setData(updateFalseMap);
query.updateRow(updater);
var error = query.lastError();
if (error.isValid()) {
throw error;
}
query.commit();
} catch (e) {
query.rollback();
this.alertError(this.ttr('Error!'), e);
print(e);
}
/*---ACTION---
ICON: "pdm-setting.#54698d"
LABEL: "Set Primary Attributes"
LABEL_ZHCN: "设置关键属性"
LABEL_ZHTW: "設置關鍵屬性"
ACCEL: ""
TOOLTIP: "Set Primary Attributes"
TOOLTIP_ZHCN: "设置关键属性"
TOOLTIP_ZHTW: "設置關鍵屬性"
CHECKED: ""
GROUP: ""
LABEL_EN: ""
LABEL_JP: ""
TOOLTIP_EN: ""
TOOLTIP_JP: ""
PERMISSION: "pdm-attr-name-edit"
STYLE: "button_style=both"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: ""
---ACTION---*/
\ No newline at end of file
try {
var checked = arguments[0];
var cfg = this.config();
if (checked) {
var dbFilter = {};
dbFilter['del_flag'] = '1';
_.set(cfg, 'view.data_set.db_filter', dbFilter);
_.set(cfg, 'view.data_set.db_del_flag_key', "");
} else {
_.set(cfg, 'view.data_set.db_filter', {});
_.set(cfg, 'view.data_set.db_del_flag_key', "del_flag");
}
this.setConfig(cfg);
this.viewConfChanged();
this.refresh(false);
} catch(e) {
print(e);
}
/*---ACTION---
ICON: "trash-o"
LABEL: "Recycle Bin"
LABEL_ZHCN: "回收站"
LABEL_ZHTW: "回收站"
ACCEL: ""
TOOLTIP: "Recycle Bin"
TOOLTIP_ZHCN: "回收站"
TOOLTIP_ZHTW: "回收站"
CHECKED: "false"
GROUP: ""
LABEL_EN: ""
LABEL_JP: ""
TOOLTIP_EN: ""
TOOLTIP_JP: ""
PERMISSION: ""
STYLE: "button_style=both"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: ""
---ACTION---*/
\ No newline at end of file
This diff is collapsed.
"Delete item": {en: "Delete item", zhcn: "删除条目", zhtw: ""}
"Sure": {en: "Confirmed", zhcn: "确认", zhtw: ""}
" already exists in the recycle bin!": {en: " already exists in the recycle bin!",zhcn: " 已在回收站中存在!",zhtw: " 已在回收站中存在!"}
" already exists!": {en: " already exists!",zhcn: " 已存在!",zhtw: " 已存在!"}
" can only contain [A-Za-z0-9_]!": {en: " can only contain [A-Za-z0-9_]!",zhcn: " 只能包含数字字母下划线!",zhtw: " 只能包含數字字母下劃線!"}
"Are you sure to remove selected items?": {en: "Are you sure to remove selected items?",zhcn: "确定要移除所选项吗?",zhtw: "確定要移除所選項嗎?"}
"Are you sure to move the selected item to the recycling station?": {en:"Are you sure to move the selected item to the recycle bin?", zhcn: "确定要将选中的条目移至回收站吗?", zhtw: "確定要將選中的條目移至回收站嗎?"}
"Arrow bottom": {en: "Move bottom",zhcn: "置底",zhtw: "置底"}
"Arrow down": {en: "Move down",zhcn: "下移",zhtw: "下移"}
"Arrow top": {en: "Move top",zhcn: "置顶",zhtw: "置頂"}
"Arrow up": {en: "Move up",zhcn: "上移",zhtw: "上移"}
"Attribute Type": {en: "Attribute Type",zhcn: "属性类型",zhtw: "屬性類型"}
"Category": {en: "Category",zhcn: "分类",zhtw: "分類"}
"Common Query Attributes": {en: "Common Query Attributes",zhcn: "常用查询",zhtw: "常用查詢"}
"Data": {en: "Data",zhcn: "数据",zhtw: "數據"}
"Data Type": {en: "Data Type",zhcn: "数据类型",zhtw: "數據類型"}
"Department": {en: "Department",zhcn: "部门",zhtw: "部門"}
"Used Department": {en: "Used Department",zhcn: "使用部门",zhtw: "使用部門"}
"Edit Option": {en: "Edit Option",zhcn: "编辑选项",zhtw: "編輯選項"}
"Job Attr-%1": {en: "Job Attr-%1",zhcn: "料号属性-%1",zhtw: "料號屬性-%1"}
"Name": {en: "Name",zhcn: "名称",zhtw: "名稱"}
"Navigation": {en: "Navigation",zhcn: "分类导航",zhtw: "分類導航"}
"New Attr": {en: "New Attr",zhcn: "新建属性",zhtw: "新建屬性"}
"New Option": {en: "New Option",zhcn: "新建选项",zhtw: "新建選項"}
"Option List": {en: "Option List",zhcn: "选项列表",zhtw: "選項列表"}
"Remove Option": {en: "Remove Option",zhcn: "移除选项",zhtw: "移除選項"}
"Saving data failed!": {en: "Saving data failed!",zhcn: "保存数据失败!",zhtw: "保存數據失敗!"}
"Tag": {en: "Tag",zhcn: "标签",zhtw: "標籤"}
"Text": {en: "Text",zhcn: "标题",zhtw: "標題"}
"Title": {en: "Title",zhcn: "标题",zhtw: "標題"}
"Trash": {en: "Trash",zhcn: "回收站",zhtw: "回收站"}
"UI Cfg": {en: "UI Cfg",zhcn: "界面配置",zhtw: "界面配置"}
"Units": {en: "Units",zhcn: "单位",zhtw: "單位"}
"can not be null": {en: "can not be null",zhcn: "不为空",zhtw: "不為空"}
"Attribute-%1": {en: "Attribute-%1",zhcn: "属性-%1",zhtw: "屬性-%1"}
"Set data failed!": {en: "Set data failed!",zhcn: "设置数据失败!",zhtw: "設置數據失敗!"}
"Set data success!": {en: "Set data success!",zhcn: "设置数据成功!",zhtw: "設置數據成功!"}
"Defalt Yes/No": {en: "Default Yes/No",zhcn: "默认 Yes/No",zhtw: "默認 Yes/No"}
"Set flag success!": {en: "Set flag success!",zhcn: "设置关键属性成功!",zhtw: "設置關鍵屬性成功!"}
"Set flag failed!": {en: "Set flag failed!",zhcn: "设置关键属性失败!",zhtw: "設置關鍵屬性失敗!"}
"Set primary attrname": {en: "Set primary attrname",zhcn: "设置关键属性",zhtw: "設置關鍵屬性"}
"Attrname": {en: "Attrname",zhcn: "属性",zhtw: "屬性"}
"Are you sure to restore selected items?": {en: "Are you sure to restore selected items?",zhcn: "确定要还原所选项吗?",zhtw: "確定要還遠所選項嗎?"}
"Restore data success!": {en: "Restore data success!", zhcn: "还原数据成功!", zhtw: "還原數據成功!"}
"Restore data failed!": {en: "Restore data failed!", zhcn: "还原数据失败!", zhtw: "還原數據失敗!"}
"Add Translation": { en: "Add Translation", zhcn: "添加翻译", zhtw: "添加翻譯" }
"Option Name is existed!": { en: "Option Name is existed!", zhcn: "选项名称已存在!", zhtw: "選項名稱已存在!"}
# 模块标题
sys_title: "Attribute Name List"
sys_title_en: "Attribute Name List"
sys_title_zhcn: "属性名称列表"
sys_title_zhtw: "屬性名稱列表"
# 模块图标
sys_icon: "pdm-check_item"
# 模块对应的插件DLL名称
sys_plugin: "toptemplateclassplugin"
# 模块对应的类名
sys_class: "TopTemplateClass4"
# 打开模块的权限
sys_open_right: "pdm-attr-name-read"
# 当关闭窗口时,如果提示是否保存,保存调用的action
sys_save_action: ""
# 该模块用到的枚举列表
sys_enum_list: ["pdm-attrname-attrtype", "pdm-attrname-datatype", "pdm-attrname-department", "pdm-attrname-attrcategory"]
# 该模块用到的除了Action之外的权限列表
sys_permission_list: []
#详情页面的初始大小
detail.perfect_size.width: 600
#导航栏初宽度
navi.perfect_size.width:200
navi.min_size.width:150
# 新建时是否全屏
detail.create.fullscreen: false
# 导航栏配置
navi: {
min_width: 150,
is_expanded: true,
is_checkable: true,
categories: [
{
name: "category",
text: "Category",
icon: "",
VISIBLE: 1,
EXPAND: 1,
checked: 0,
data: "category",
children: [],
enum_children: "pdm-attrname-attrcategory",
enum_checked:[]
},
{
name: "type",
text: "Attribute Type",
icon: "",
VISIBLE: 1,
EXPAND: 1,
checked: 0,
data: "type",
children: [],
enum_children: "pdm-attrname-attrtype",
enum_checked:[]
},
{
name: "department",
text: "Used Department",
icon: "",
VISIBLE: 1,
EXPAND: 1,
checked: 0,
data: "department",
children: [],
enum_children: "pdm-attrname-department",
enum_checked:[]
}
]
}
# 显示相关配置
view {
data_keys: ["id", "title", "attr_data.store_table", "ui_cfg", "option_list", "tags", "del_flag"],
primary_key: "id",
horizontal_header: [
{
"name": "name",
"display": "Name",
"displayRole": "$name",
"size": 100,
"search": "string"
},
{
"name": "title",
"display": "Title",
"displayRole": "$title",
"size": 100,
"search": "string"
}
{
"name": "units",
"display": "Units",
"displayRole": "$units",
"size": 100
},
{
"name": "category",
"display": "Category",
"displayRole": "$category.text",
"size": 100,
"format": "enum(pdm-attrname-attrcategory)",
"field_format": "array"
},
{
"name": "type",
"display": "Attribute Type",
"displayRole": "$type.text",
"size": 100,
"format": "enum(pdm-attrname-attrtype)",
"field_format": "array"
},
{
"name": "data_type",
"display": "Data Type",
"displayRole": "$data_type.text",
"size": 100,
"format": "enum(pdm-attrname-datatype)"
},
{
"name": "department",
"display": "Department",
"displayRole": "$department.text",
"size": 100,
"format": "enum(pdm-attrname-department)",
"field_format": "array"
},
{
"name": "remark",
"display": "Remark",
"displayRole": "$remark",
"size": 100,
"search": "string"
}
],
data_set {
db_table_name: "pdm_attrname",
db_sql: "",
# 删除标记,若为空表示做物理删除
db_del_flag_key: "del_flag"
# 过滤项
db_filter {
}
}
}
\ No newline at end of file
# 表格的右键菜单
"TABLEVIEW_POPUP": [
{"type":"menuitem","action":"new"},
{"type":"separator"},
{"type":"menuitem","action":"delete"},
{"type":"menuitem","action":"restore"},
{"type":"separator"},
{"type":"menuitem","action":"refresh"}
]
# 工具栏
"MAIN_TOOLBAR": [
{"type":"spacing", "size":10},
{"type":"toolitem","action":"new"},
{"type":"separator"},
{"type":"toolitem","action":"trash"},
{"type":"toolitem","action":"c1"},
{"type":"toolitem","action":"c2"},
{"type":"toolitem","action":"c3"},
{"type":"toolitem","action":"c4"},
{"type":"toolitem","action":"c5"},
{"type":"stretcher"},
{"type":"searchentry","name":"SEARCH_ENTRY"},
{"type":"toolitem", action:"refresh"},
{type:"menu", text:"", icon:"ellipsis-v",
child: [
{"type":"menuitem","action":"set_key_attr"},
]},
]
# 底部工具栏
"BOTTOM_TOOLBAR" : [
{"type":"stretcher"},
{"type":"pagetool","name":"PAGE_TOOL"}
]
# 详细信息工具栏
"DETAIL_TOOLBAR": [
{"type":"toolitem","action":"save_detail"},
{"type":"stretcher"},
{"type":"toolitem","action":"copy_detail"},
{"type":"toolitem","action":"cancel_detail"},
{"type":"toolitem","action":"refresh_detail"}
]
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);
}
\ No newline at end of file
try {
this.reloadItem();
} catch(e) {
print(e);
}
/*---ACTION---
ICON: "cancel"
LABEL: "Cancel"
LABEL_ZHCN: "取消"
LABEL_ZHTW: "取消"
ACCEL: ""
TOOLTIP: "Cancel the action"
TOOLTIP_ZHCN: "取消动作"
TOOLTIP_ZHTW: "取消動作"
CHECKED: ""
GROUP: ""
STYLE: "button_style=text"
LANG: "JavaScript"
STATUS: "Release"
VERSION: "1"
STATEHOOK: "return (this.isDetailModified()) ? 'enable' : 'hide';"
---ACTION---*/
\ No newline at end of file
try {
this.refresh();
} catch (e) {
print(e);
}
/*---ACTION---
ICON: "refresh"
LABEL: "Refresh"
LABEL_ZHCN: "刷新"
LABEL_ZHTW: "刷新"
ACCEL: "F5"
TOOLTIP: "Refresh"
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
This diff is collapsed.
This diff is collapsed.
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