提交 3e61df19 编写于 作者: ibizdev's avatar ibizdev

lxm1993 发布系统代码 [TrainSys,网页端]

上级 117f0073
......@@ -13,17 +13,18 @@
"dependencies": {
"@floating-ui/dom": "^1.0.11",
"@ibiz-template/command": "^0.0.1-beta.50",
"@ibiz-template/controller": "^0.0.1-beta.63",
"@ibiz-template/core": "^0.0.1-beta.63",
"@ibiz-template/model": "^0.0.1-beta.63",
"@ibiz-template/runtime": "^0.0.1-beta.63",
"@ibiz-template/service": "^0.0.1-beta.63",
"@ibiz-template/controller": "^0.0.1-beta.64",
"@ibiz-template/core": "^0.0.1-beta.64",
"@ibiz-template/model": "^0.0.1-beta.64",
"@ibiz-template/runtime": "^0.0.1-beta.64",
"@ibiz-template/service": "^0.0.1-beta.64",
"@ibiz-template/theme": "^0.0.1-beta.59",
"@ibiz-template/vue-util": "^0.0.1-beta.63",
"@ibiz-template/vue-util": "^0.0.1-beta.64",
"@ibiz/dynamic-model-api": "^2.1.17",
"@riophae/vue-treeselect": "^0.4.0",
"dayjs": "^1.11.7",
"echarts": "^5.4.2",
"element-ui": "^2.15.13",
"lodash-es": "^4.17.21",
"path-browserify": "^1.0.1",
"pinia": "^2.0.28",
......@@ -31,6 +32,7 @@
"qx-util": "^0.4.8",
"ramda": "^0.28.0",
"view-design": "^4.7.0",
"vite-plugin-style-import": "1.4.1",
"vue": "^2.7.14",
"vue-router": "^3.6.5"
},
......
此差异已折叠。
......@@ -41,6 +41,7 @@ import {
ViewPortlet,
ListControl,
ListPortlet,
TreeControl,
} from './components/widgets';
import {
EditView,
......@@ -58,6 +59,7 @@ import {
TabExpView,
ListExpView,
ListView,
TreeExpView,
} from './components/views';
import { IndexView } from './views';
import AppKeepAlive from './components/common/app-keep-alive/app-keep-alive.vue';
......@@ -145,6 +147,7 @@ export const AppRegister = {
v.component('TabExpView', TabExpView);
v.component('ListExpView', ListExpView);
v.component('ListView', ListView);
v.component('TreeExpView', TreeExpView);
// 注册部件组件
v.component('AppMenu', AppMenu);
v.component('GridControl', GridControl);
......@@ -171,6 +174,7 @@ export const AppRegister = {
v.component('ViewPortlet', ViewPortlet);
v.component('ListPortlet', ListPortlet);
v.component('PortletContainer', PortletContainer);
v.component('TreeControl', TreeControl);
// 注册通用组件
v.component('AppKeepAlive', AppKeepAlive);
v.component('AppIcon', AppIcon);
......
......@@ -14,13 +14,14 @@ import '@ibiz-template/theme/style/components/common/view-toolbar/view-toolbar.s
const btnContent = (item: IPSDEToolbarItem, viewMode: string) => {
const image = item.getPSSysImage();
const showIcon = item.showIcon;
if (viewMode === 'EMBED') {
if (image) {
return [<app-icon icon={image} />, item.caption];
return [showIcon ? <app-icon icon={image} /> : null, item.caption];
}
return [<img src='undefined' />, item.caption];
return [showIcon ? <img src='undefined' /> : null, item.caption];
}
return [<app-icon icon={image} />, item.caption];
return [showIcon ? <app-icon icon={image} /> : null, item.caption];
};
export const ViewToolbar = defineComponent({
......
......@@ -13,3 +13,4 @@ export * from './app-portal-view/app-portal-view';
export * from './tab-exp-view/tab-exp-view';
export * from './list-exp-view/list-exp-view';
export * from './list-view/list-view';
export * from './tree-exp-view/tree-exp-view';
import { IModal, ViewMode } from '@ibiz-template/runtime';
import { useRouteKey, useTreeExpViewController } from '@ibiz-template/vue-util';
import {
defineComponent,
getCurrentInstance,
h,
PropType,
ref,
Ref,
toRef,
watch,
} from 'vue';
export const TreeExpView = defineComponent({
props: {
context: Object as PropType<IContext>,
srfnav: String,
params: { type: Object as PropType<IParams> },
modelPath: { type: String, required: true },
modal: { type: Object as PropType<IModal> },
},
setup(props) {
const { proxy } = getCurrentInstance()!;
// const route = useRoute(proxy);
const c = useTreeExpViewController(proxy, props.modelPath);
const routeViewKey: Ref<string> = ref('');
// 绘制界面需要的响应变量
const defaultSelectKeys: Ref<string[]> = ref([]);
if (c.context.isRouter) {
// created生命周期后处理默认的路由回显
c.nerve.self.evt.on('created', () => {
// 路由模式下导航视图的key
c.currentNavKey = props.srfnav || '';
// 第一次打开的默认选中树节点
if (c.currentNavKey) {
defaultSelectKeys.value.push(c.currentNavKey);
}
// 监听并变更routeViewKey
useRouteKey(toRef(c, 'currentNavKey'), proxy, routeViewKey);
});
}
const keyHistory = ref<string[]>([]);
watch(routeViewKey, (newVal, oldVal) => {
if (newVal && newVal !== oldVal && !keyHistory.value.includes(newVal)) {
keyHistory.value.push(newVal);
}
});
return { c, defaultSelectKeys, routeViewKey, keyHistory };
},
render() {
const { currentNavKey, navViewParams } = this.c;
if (this.c.complete) {
return (
<exp-view-base
controller={this.c}
expBarModel={this.c.model.treeExpBar}
scopedSlots={{
default: () => {
const { tree } = this.c.model;
if (this.c.providers[tree.name]) {
const comp = this.c.providers[tree.name].component;
return h(comp, {
props: {
modelData: tree,
context: this.c.context,
params: this.c.params,
defaultSelectKeys: this.defaultSelectKeys,
isSelectFirstDefault: true,
},
on: {
neuronInit: this.c.nerve.onNeuronInit('tree'),
},
});
}
},
expView: () => {
if (!currentNavKey) {
return;
}
if (!this.c.context.isRouter) {
// 非路由模式下绘制嵌入视图
return h('ViewShell', {
props: {
context: navViewParams[currentNavKey].context,
params: navViewParams[currentNavKey].params,
modal: { mode: ViewMode.EMBED },
modelPath: navViewParams[currentNavKey].modelPath,
key: currentNavKey,
},
});
}
// 路由模式下绘制
if (this.routeViewKey) {
return <router-view key={this.routeViewKey}></router-view>;
}
return null;
},
}}
></exp-view-base>
);
}
return null;
},
});
......@@ -7,3 +7,4 @@ export * from './pickup-view-panel/pickup-view-panel';
export * from './view-panel/view-panel';
export * from './app-menu/app-menu';
export * from './dashboard-control';
export * from './tree-control/tree-control';
import { TreeModel } from '@ibiz-template/model';
import { ITreeNodeData } from '@ibiz-template/service';
import { useTreeController, useNamespace } from '@ibiz-template/vue-util';
import { defineComponent, getCurrentInstance, h, PropType, ref } from 'vue';
import { Tree } from 'element-ui';
export const TreeControl = defineComponent({
name: 'TreeControl',
props: {
modelData: {
type: TreeModel,
required: true,
},
context: { type: Object as PropType<IContext>, required: true },
params: { type: Object as PropType<IParams>, default: () => ({}) },
defaultSelectKeys: { type: Array<string>, required: false },
isSelectFirstDefault: { type: Boolean, required: false },
},
setup(props) {
const ns = useNamespace('control-treeview');
const { proxy } = getCurrentInstance()!;
const c = useTreeController(
proxy,
props.modelData,
props.context,
props.params,
);
const treeRef = ref<IData>();
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const loadData = async (item: any, callback: any) => {
// 根节点触发的加载不走
if (!item.parent) {
return;
}
const nodes = await c.loadNodes(item.data);
callback(nodes);
};
/**
* 当前选中节点变更
*
* @param {ITreeNodeData} nodeData
*/
const onCurrentChange = (nodeData: ITreeNodeData) => {
c.onTreeNodeClick(nodeData);
};
// 默认展开回显
const defaultExpands = ref<string[]>([]);
const currentKey = ref<string | undefined>();
if (props.defaultSelectKeys?.length) {
currentKey.value = props.defaultSelectKeys[0];
const arr: string[] = currentKey.value.split(':');
while (arr.length > 0) {
defaultExpands.value.push(arr.join(':'));
arr.pop();
}
}
// 数据加载回来后的处理
// todo 根据选中数据做回显
c.nerve.self.evt.on('onLoadSuccess', async ({ data, isFirstLoad }) => {
if (
isFirstLoad &&
c.isSelectFirstDefault &&
c.defaultSelectKeys.length === 0
) {
treeRef.value!.setCurrentKey(data![0].id);
}
});
const defaultProps = ref({
label: 'text',
children: 'children',
isLeaf: 'leaf',
});
return {
c,
ns,
treeRef,
defaultExpands,
currentKey,
onCurrentChange,
loadData,
defaultProps,
};
},
render() {
if (!this.c.complete) {
return;
}
return (
<control-layout modelData={this.c.model}>
{this.c.complete &&
h(Tree, {
ref: 'treeRef',
props: {
data: this.c.treeNodes,
props: this.defaultProps,
'node-key': 'id',
'highlight-current': true,
'default-expanded-keys': this.defaultExpands,
'current-node-key': this.currentKey,
lazy: true,
load: this.loadData,
'expand-on-click-node': false,
},
on: {
'current-change': this.onCurrentChange,
},
})}
</control-layout>
);
},
});
......@@ -19,6 +19,7 @@ import { piniaInstance } from './store';
import { attachEnvironmentConfig } from './attach-environment-config';
import { PluginFactory } from './plugin';
import { installDefaultPluginRegister } from './default-plugin-register';
import 'element-ui/lib/theme-chalk/index.css';
Vue.use(Router);
Vue.use(PiniaVuePlugin);
......
......@@ -7,6 +7,7 @@ import { EditFormProvider } from './edit-form-provider';
import { GridProvider } from './grid-provider';
import { ListProvider } from './list-provider';
import { SearchFormProvider } from './search-form-provider';
import { TreeProvider } from './tree-provider';
/**
* 预置默认的部件适配器
......@@ -32,6 +33,7 @@ export function presetControlProvider(): void {
ControlType.PICKUP_VIEW_PANEL,
new PickupViewPanelProvider(),
);
controlRegister.register(ControlType.TREEVIEW, new TreeProvider());
}
export {
......@@ -41,4 +43,5 @@ export {
AppMenuProvider,
DashboardProvider,
ListProvider,
TreeProvider,
};
import { IControlProvider } from '@ibiz-template/controller';
/**
* 树部件适配器
*
* @author lxm
* @date 2022-10-25 18:10:57
* @export
* @class TreeProvider
* @implements {IControlProvider}
*/
export class TreeProvider implements IControlProvider {
component: string = 'TreeControl';
}
......@@ -11,6 +11,7 @@ import { OptViewProvider } from './opt-view-provider';
import { PickupGridViewProvider } from './pickup-grid-view-provider';
import { PickupViewProvider } from './pickup-view-provider';
import { TabExpViewProvider } from './tab-exp-view-provider';
import { TreeExpViewProvider } from './tree-exp-view-provider';
import { WFDynaActionViewProvider } from './wf-dyna-action-view-provider';
import { WFDynaEditView3Provider } from './wf-dyna-edit-view3-provider';
import { WFDynaStartViewProvider } from './wf-dyna-start-view-provider';
......@@ -51,6 +52,7 @@ export function presetViewProvider(): void {
view.register(ViewType.DE_TAB_EXP_VIEW, new TabExpViewProvider());
view.register(ViewType.DE_LIST_EXP_VIEW, new ListExpViewProvider());
view.register(ViewType.DE_LIST_VIEW, new ListViewProvider());
view.register(ViewType.DE_TREE_EXP_VIEW, new TreeExpViewProvider());
}
export {
......@@ -70,4 +72,5 @@ export {
ListExpViewProvider,
ListViewProvider,
TabExpViewProvider,
TreeExpViewProvider,
};
import { IViewProvider } from '@ibiz-template/controller';
/**
* 树导航视图适配器
*
* @author lxm
* @date 2022-10-25 18:10:57
* @export
* @class TreeExpViewProvider
* @implements {IViewProvider}
*/
export class TreeExpViewProvider implements IViewProvider {
component: string = 'TreeExpView';
}
......@@ -2,7 +2,7 @@ import { defineComponent, h } from 'vue';
export default defineComponent({
setup() {
const loginViewName = ibiz.env.loginViewName;
const loginViewName = ibiz.env.loginViewName || 'AppLoginView';
return () => h(loginViewName);
},
});
......@@ -6,6 +6,7 @@ import eslint from 'vite-plugin-eslint';
import legacy from '@vitejs/plugin-legacy'; // ie11 开启此配置
// import { visualizer } from 'rollup-plugin-visualizer'; // 打包内容分析
import IBizVitePlugin from './vite-plugins/ibiz-vite-plugin';
import styleImport from 'vite-plugin-style-import';
// https://vitejs.dev/config/
export default defineConfig({
......@@ -85,6 +86,20 @@ export default defineConfig({
vueJsx(),
legacy({ targets: ['ie >= 11'], externalSystemJS: true }),
IBizVitePlugin(),
styleImport({
libs: [
{
libraryName: 'element-ui',
esModule: true,
resolveStyle(name) {
return `theme-chalk/${name}.css`;
},
resolveComponent(name) {
return `element-ui/lib/${name}`;
},
},
],
}),
// visualizer(),
],
});
此差异已折叠。
......@@ -48,6 +48,9 @@
}, {
"modelref" : true,
"path" : "PSMODULES/common/PSDATAENTITIES/Reginfof.json"
}, {
"modelref" : true,
"path" : "PSMODULES/common/PSDATAENTITIES/Role3.json"
}, {
"modelref" : true,
"path" : "PSMODULES/common/PSDATAENTITIES/Student.json"
......
{
"actionMode" : "CHECKKEY",
"actionType" : "BUILTIN",
"codeName" : "CheckKey",
"dynaModelFilePath" : "PSMODULES/common/PSDATAENTITIES/Role3/PSDEACTIONS/CheckKey.json",
"logicName" : "CheckKey",
"mOSFilePath" : "psmodules/common/psdataentities/SYS_ROLE/psdeactions/CheckKey",
"name" : "CheckKey",
"getPSDEActionInput" : {
"name" : "CheckKeyInput",
"getPSDEMethodDTO" : {
"modelref" : true,
"id" : "Role3DTO"
},
"type" : "DTO"
},
"getPSDEActionReturn" : {
"name" : "CheckKeyResult",
"stdDataType" : 9,
"type" : "SIMPLE"
},
"rTMOSFilePath" : "psmodules/common/psdataentities/SYS_ROLE/psdeactions/CheckKey",
"builtinAction" : true
}
\ No newline at end of file
{
"actionMode" : "CREATE",
"actionType" : "BUILTIN",
"codeName" : "Create",
"dynaModelFilePath" : "PSMODULES/common/PSDATAENTITIES/Role3/PSDEACTIONS/Create.json",
"logicName" : "Create",
"mOSFilePath" : "psmodules/common/psdataentities/SYS_ROLE/psdeactions/Create",
"name" : "Create",
"orderValue" : 1,
"getPSDEActionInput" : {
"name" : "CreateInput",
"getPSDEMethodDTO" : {
"modelref" : true,
"id" : "Role3DTO"
},
"type" : "DTO",
"output" : true
},
"getPSDEActionReturn" : {
"name" : "CreateResult",
"type" : "VOID"
},
"rTMOSFilePath" : "psmodules/common/psdataentities/SYS_ROLE/psdeactions/Create",
"builtinAction" : true
}
\ No newline at end of file
{
"actionMode" : "READ",
"actionType" : "BUILTIN",
"codeName" : "Get",
"dynaModelFilePath" : "PSMODULES/common/PSDATAENTITIES/Role3/PSDEACTIONS/Get.json",
"logicName" : "Get",
"mOSFilePath" : "psmodules/common/psdataentities/SYS_ROLE/psdeactions/Get",
"name" : "Get",
"orderValue" : 31,
"getPSDEActionInput" : {
"getKeyPSDEField" : {
"name" : "SYS_ROLEID",
"codeName" : "SysRoleId"
},
"name" : "GetInput",
"type" : "KEYFIELD"
},
"getPSDEActionReturn" : {
"name" : "GetResult",
"getPSDEMethodDTO" : {
"modelref" : true,
"id" : "Role3DTO"
},
"type" : "DTO"
},
"rTMOSFilePath" : "psmodules/common/psdataentities/SYS_ROLE/psdeactions/Get",
"builtinAction" : true
}
\ No newline at end of file
{
"actionMode" : "GETDRAFT",
"actionType" : "BUILTIN",
"codeName" : "GetDraft",
"dynaModelFilePath" : "PSMODULES/common/PSDATAENTITIES/Role3/PSDEACTIONS/GetDraft.json",
"logicName" : "GetDraft",
"mOSFilePath" : "psmodules/common/psdataentities/SYS_ROLE/psdeactions/GetDraft",
"name" : "GetDraft",
"orderValue" : 41,
"getPSDEActionInput" : {
"name" : "GetDraftInput",
"getPSDEMethodDTO" : {
"modelref" : true,
"id" : "Role3DTO"
},
"type" : "DTO"
},
"getPSDEActionReturn" : {
"name" : "GetDraftResult",
"getPSDEMethodDTO" : {
"modelref" : true,
"id" : "Role3DTO"
},
"type" : "DTO"
},
"rTMOSFilePath" : "psmodules/common/psdataentities/SYS_ROLE/psdeactions/GetDraft",
"builtinAction" : true
}
\ No newline at end of file
{
"actionMode" : "DELETE",
"actionType" : "BUILTIN",
"batchActionMode" : 1,
"codeName" : "Remove",
"dynaModelFilePath" : "PSMODULES/common/PSDATAENTITIES/Role3/PSDEACTIONS/Remove.json",
"logicName" : "Remove",
"mOSFilePath" : "psmodules/common/psdataentities/SYS_ROLE/psdeactions/Remove",
"name" : "Remove",
"orderValue" : 21,
"getPSDEActionInput" : {
"getKeyPSDEField" : {
"name" : "SYS_ROLEID",
"codeName" : "SysRoleId"
},
"name" : "RemoveInput",
"type" : "KEYFIELDS"
},
"getPSDEActionReturn" : {
"name" : "RemoveResult",
"type" : "VOID"
},
"rTMOSFilePath" : "psmodules/common/psdataentities/SYS_ROLE/psdeactions/Remove",
"batchAction" : true,
"builtinAction" : true
}
\ No newline at end of file
{
"actionMode" : "UNKNOWN",
"actionType" : "BUILTIN",
"codeName" : "Save",
"dynaModelFilePath" : "PSMODULES/common/PSDATAENTITIES/Role3/PSDEACTIONS/Save.json",
"logicName" : "Save",
"mOSFilePath" : "psmodules/common/psdataentities/SYS_ROLE/psdeactions/Save",
"name" : "Save",
"getPSDEActionInput" : {
"name" : "SaveInput",
"getPSDEMethodDTO" : {
"modelref" : true,
"id" : "Role3DTO"
},
"type" : "DTO"
},
"getPSDEActionReturn" : {
"name" : "SaveResult",
"type" : "VOID"
},
"rTMOSFilePath" : "psmodules/common/psdataentities/SYS_ROLE/psdeactions/Save",
"builtinAction" : true
}
\ No newline at end of file
{
"actionMode" : "UPDATE",
"actionType" : "BUILTIN",
"codeName" : "Update",
"dynaModelFilePath" : "PSMODULES/common/PSDATAENTITIES/Role3/PSDEACTIONS/Update.json",
"logicName" : "Update",
"mOSFilePath" : "psmodules/common/psdataentities/SYS_ROLE/psdeactions/Update",
"name" : "Update",
"orderValue" : 11,
"getPSDEActionInput" : {
"name" : "UpdateInput",
"getPSDEMethodDTO" : {
"modelref" : true,
"id" : "Role3DTO"
},
"type" : "DTO",
"output" : true
},
"getPSDEActionReturn" : {
"name" : "UpdateResult",
"type" : "VOID"
},
"rTMOSFilePath" : "psmodules/common/psdataentities/SYS_ROLE/psdeactions/Update",
"builtinAction" : true
}
\ No newline at end of file
{
"dBType" : "MYSQL5",
"mOSFilePath" : "psmodules/common/psdataentities/SYS_ROLE/psdedataqueries/DEFAULT/psdedqcodes/MYSQL5",
"name" : "MySQL5",
"getPSDEDataQueryCodeExps" : [ {
"expression" : "t1.`CREATEDATE`",
"name" : "CREATEDATE"
}, {
"expression" : "t1.`CREATEMAN`",
"name" : "CREATEMAN"
}, {
"expression" : "t1.`SYS_ROLEID`",
"name" : "SYS_ROLEID"
}, {
"expression" : "t1.`SYS_ROLENAME`",
"name" : "SYS_ROLENAME"
}, {
"expression" : "t1.`UPDATEDATE`",
"name" : "UPDATEDATE"
}, {
"expression" : "t1.`UPDATEMAN`",
"name" : "UPDATEMAN"
} ],
"queryCode" : "SELECT\nt1.`CREATEDATE`,\nt1.`CREATEMAN`,\nt1.`SYS_ROLEID`,\nt1.`SYS_ROLENAME`,\nt1.`UPDATEDATE`,\nt1.`UPDATEMAN`\nFROM `T_SYS_ROLE` t1 \n",
"rTMOSFilePath" : "psmodules/common/psdataentities/SYS_ROLE/psdedataqueries/DEFAULT/psdedqcodes/MYSQL5",
"id" : "PSMODULES/common/PSDATAENTITIES/Role3/PSDEDATAQUERIES/Default/PSDEDQCODES/MYSQL5.json"
}
\ No newline at end of file
{
"dBType" : "MYSQL5",
"mOSFilePath" : "psmodules/common/psdataentities/SYS_ROLE/psdedataqueries/VIEW/psdedqcodes/MYSQL5",
"name" : "MySQL5",
"getPSDEDataQueryCodeExps" : [ {
"expression" : "t1.`CREATEDATE`",
"name" : "CREATEDATE"
}, {
"expression" : "t1.`CREATEMAN`",
"name" : "CREATEMAN"
}, {
"expression" : "t1.`SYS_ROLEID`",
"name" : "SYS_ROLEID"
}, {
"expression" : "t1.`SYS_ROLENAME`",
"name" : "SYS_ROLENAME"
}, {
"expression" : "t1.`UPDATEDATE`",
"name" : "UPDATEDATE"
}, {
"expression" : "t1.`UPDATEMAN`",
"name" : "UPDATEMAN"
} ],
"queryCode" : "SELECT\nt1.`CREATEDATE`,\nt1.`CREATEMAN`,\nt1.`SYS_ROLEID`,\nt1.`SYS_ROLENAME`,\nt1.`UPDATEDATE`,\nt1.`UPDATEMAN`\nFROM `T_SYS_ROLE` t1 \n",
"rTMOSFilePath" : "psmodules/common/psdataentities/SYS_ROLE/psdedataqueries/VIEW/psdedqcodes/MYSQL5",
"id" : "PSMODULES/common/PSDATAENTITIES/Role3/PSDEDATAQUERIES/View/PSDEDQCODES/MYSQL5.json"
}
\ No newline at end of file
......@@ -1224,16 +1224,16 @@
"mOSFilePath" : "pssysapps/TemplatePublish/psappviewmsggroups/VMGroup2",
"name" : "视图消息组2",
"getPSAppViewMsgGroupDetails" : [ {
"name" : "视图消息",
"name" : "视图消息2",
"getPSAppViewMsg" : {
"modelref" : true,
"id" : "ViewMsg2"
"id" : "ViewMsg3"
}
}, {
"name" : "视图消息2",
"name" : "视图消息",
"getPSAppViewMsg" : {
"modelref" : true,
"id" : "ViewMsg3"
"id" : "ViewMsg2"
}
} ],
"rTMOSFilePath" : "pssysapps/TemplatePublish/psappviewmsggroups/VMGroup2"
......
......@@ -1367,6 +1367,11 @@
"path" : "PSSYSAPPS/Web/PSAPPDATAENTITIES/Student.json",
"name" : "STUDENT",
"codeName" : "Student"
}, {
"modelref" : true,
"path" : "PSSYSAPPS/Web/PSAPPDATAENTITIES/SysRole.json",
"name" : "SYS_ROLE",
"codeName" : "SysRole"
}, {
"modelref" : true,
"path" : "PSSYSAPPS/Web/PSAPPDATAENTITIES/TEST.json",
......@@ -2417,16 +2422,16 @@
"mOSFilePath" : "pssysapps/Web/psappviewmsggroups/VMGroup2",
"name" : "视图消息组2",
"getPSAppViewMsgGroupDetails" : [ {
"name" : "视图消息",
"name" : "视图消息2",
"getPSAppViewMsg" : {
"modelref" : true,
"id" : "ViewMsg2"
"id" : "ViewMsg3"
}
}, {
"name" : "视图消息2",
"name" : "视图消息",
"getPSAppViewMsg" : {
"modelref" : true,
"id" : "ViewMsg3"
"id" : "ViewMsg2"
}
} ],
"rTMOSFilePath" : "pssysapps/Web/psappviewmsggroups/VMGroup2"
......@@ -2795,6 +2800,12 @@
"viewType" : "DEEDITVIEW",
"resource" : "Book",
"view" : "EditView"
}, {
"modelref" : true,
"path" : "PSSYSAPPS/Web/PSAPPDEVIEWS/Role3EditView.json",
"viewType" : "DEEDITVIEW",
"resource" : "SysRole",
"view" : "EditView"
}, {
"modelref" : true,
"path" : "PSSYSAPPS/Web/PSAPPDEVIEWS/TESTEditView3_modal.json",
......@@ -1628,6 +1628,69 @@
"rTMOSFilePath" : "pssysdbschemes/A869db62931b97a65fd/pssysdbtables/T_STUDENT",
"autoExtendModel" : true,
"existingModel" : false
}, {
"getAllPSSysDBColumns" : [ {
"codeName" : "CREATEDATE",
"length" : 8,
"logicName" : "建立时间",
"mOSFilePath" : "pssysdbschemes/A869db62931b97a65fd/pssysdbtables/T_SYS_ROLE/pssysdbcolumns/CREATEDATE",
"name" : "CREATEDATE",
"rTMOSFilePath" : "pssysdbschemes/A869db62931b97a65fd/pssysdbtables/T_SYS_ROLE/pssysdbcolumns/CREATEDATE",
"stdDataType" : 5,
"nullable" : true
}, {
"codeName" : "CREATEMAN",
"length" : 60,
"logicName" : "建立人",
"mOSFilePath" : "pssysdbschemes/A869db62931b97a65fd/pssysdbtables/T_SYS_ROLE/pssysdbcolumns/CREATEMAN",
"name" : "CREATEMAN",
"rTMOSFilePath" : "pssysdbschemes/A869db62931b97a65fd/pssysdbtables/T_SYS_ROLE/pssysdbcolumns/CREATEMAN",
"stdDataType" : 25,
"nullable" : true
}, {
"codeName" : "SYS_ROLEID",
"length" : 100,
"logicName" : "实体标识",
"mOSFilePath" : "pssysdbschemes/A869db62931b97a65fd/pssysdbtables/T_SYS_ROLE/pssysdbcolumns/SYS_ROLEID",
"name" : "SYS_ROLEID",
"rTMOSFilePath" : "pssysdbschemes/A869db62931b97a65fd/pssysdbtables/T_SYS_ROLE/pssysdbcolumns/SYS_ROLEID",
"stdDataType" : 25,
"pKey" : true
}, {
"codeName" : "SYS_ROLENAME",
"length" : 200,
"logicName" : "实体名称",
"mOSFilePath" : "pssysdbschemes/A869db62931b97a65fd/pssysdbtables/T_SYS_ROLE/pssysdbcolumns/SYS_ROLENAME",
"name" : "SYS_ROLENAME",
"rTMOSFilePath" : "pssysdbschemes/A869db62931b97a65fd/pssysdbtables/T_SYS_ROLE/pssysdbcolumns/SYS_ROLENAME",
"stdDataType" : 25,
"nullable" : true
}, {
"codeName" : "UPDATEDATE",
"length" : 8,
"logicName" : "更新时间",
"mOSFilePath" : "pssysdbschemes/A869db62931b97a65fd/pssysdbtables/T_SYS_ROLE/pssysdbcolumns/UPDATEDATE",
"name" : "UPDATEDATE",
"rTMOSFilePath" : "pssysdbschemes/A869db62931b97a65fd/pssysdbtables/T_SYS_ROLE/pssysdbcolumns/UPDATEDATE",
"stdDataType" : 5,
"nullable" : true
}, {
"codeName" : "UPDATEMAN",
"length" : 60,
"logicName" : "更新人",
"mOSFilePath" : "pssysdbschemes/A869db62931b97a65fd/pssysdbtables/T_SYS_ROLE/pssysdbcolumns/UPDATEMAN",
"name" : "UPDATEMAN",
"rTMOSFilePath" : "pssysdbschemes/A869db62931b97a65fd/pssysdbtables/T_SYS_ROLE/pssysdbcolumns/UPDATEMAN",
"stdDataType" : 25,
"nullable" : true
} ],
"codeName" : "T_SYS_ROLE",
"logicName" : "实体",
"mOSFilePath" : "pssysdbschemes/A869db62931b97a65fd/pssysdbtables/T_SYS_ROLE",
"name" : "T_SYS_ROLE",
"rTMOSFilePath" : "pssysdbschemes/A869db62931b97a65fd/pssysdbtables/T_SYS_ROLE",
"autoExtendModel" : true,
"existingModel" : false
}, {
"getAllPSSysDBColumns" : [ {
"codeName" : "AMOUNT",
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册