跟我一起学extjs5(28--加入模块和菜单定义[1建立数据库和表])

跟我一起学extjs5(28--加入模块和菜单定义[1建立数据库和表])

下面我们开始进入自定义系统的设计和各个组成部分的搭建工作。

首先在sql server中建立数据库,这里的数据的名字我定义为extjs5,然后需要建立模块的定义表,这个表里将存着系统中所有模块的定义信息。为了能有个直观的前后台的互动,先把模块和菜单这二个部分加进去,可以把菜单数据组织好后发送到前台去进行展示。

由于系统中的模块很多,需要分类,因此在先要设计一个“模块分组”的表,对于菜单也是一样,需要有一个“菜单分组”的表。

  • 模块分组表:_ModuleGroup
  • 模块表:_Module
  • 菜单分组表:_MenuGroup
  • 模块的菜单定义表:_MenuModule

一、数据库中建表

四个表的关系如下图所示:

下面是建表的语句:

CREATE TABLE [dbo].[_ModuleGroup](
	[tf_moduleGroupId] [nvarchar](10) COLLATE Chinese_PRC_CI_AS NOT NULL,
	[tf_title] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
	[tf_description] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
	[tf_iconURL] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
	[tf_remark] [nvarchar](max) COLLATE Chinese_PRC_CI_AS NULL,
 CONSTRAINT [PK___ModuleGroup__08EA5793] PRIMARY KEY CLUSTERED
(
	[tf_moduleGroupId] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY],
 CONSTRAINT [_ModuleGroup_ix1] UNIQUE NONCLUSTERED
(
	[tf_title] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[_Module](
	[tf_moduleId] [nvarchar](10) COLLATE Chinese_PRC_CI_AS NOT NULL,
	[tf_moduleGroupId] [nvarchar](10) COLLATE Chinese_PRC_CI_AS NOT NULL,
	[tf_moduleName] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
	[tf_title] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
	[tf_description] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
	[tf_requestMapping] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
	[tf_iconURL] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
	[tf_shortname] [nvarchar](20) COLLATE Chinese_PRC_CI_AS NULL,
	[tf_englishname] [nvarchar](20) COLLATE Chinese_PRC_CI_AS NULL,
	[tf_tableName] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
	[tf_primaryKey] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
	[tf_nameFields] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
	[tf_titleTpl] [nvarchar](200) COLLATE Chinese_PRC_CI_AS NULL,
	[tf_codeField] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
	[tf_orderField] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
	[tf_dateField] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
	[tf_yearField] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
	[tf_monthField] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
	[tf_seasonField] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
	[tf_fileField] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
	[tf_homepageTag] [int] NULL,
	[tf_isEnable] [bit] NOT NULL,
	[tf_hasBrowse] [bit] NOT NULL,
	[tf_hasInsert] [bit] NOT NULL,
	[tf_hasEdit] [bit] NOT NULL,
	[tf_hasDelete] [bit] NOT NULL,
	[tf_hasExec] [bit] NOT NULL,
	[tf_hasAuditing] [bit] NOT NULL,
	[tf_hasApprove] [bit] NOT NULL,
	[tf_hasPayment] [bit] NOT NULL,
	[tf_hasAddition] [bit] NOT NULL,
	[tf_isInlineOper] [bit] NULL CONSTRAINT [DF___Module__tf_isIn__1ED998B2]  DEFAULT ((0)),
	[tf_allowInsertExcel] [bit] NOT NULL,
	[tf_allowEditExcel] [bit] NOT NULL,
	[tf_defaultOrderField] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
	[tf_codeLevel] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
	[tf_linkedModule] [nvarchar](200) COLLATE Chinese_PRC_CI_AS NULL,
	[tf_hasChart] [bit] NOT NULL,
	[tf_canLimit] [bit] NOT NULL,
	[tf_isSystem] [bit] NOT NULL,
	[tf_searchCondOrder] [int] NULL,
	[tf_remark] [nvarchar](max) COLLATE Chinese_PRC_CI_AS NULL,
 CONSTRAINT [PK___Module__1BFD2C07] PRIMARY KEY CLUSTERED
(
	[tf_moduleId] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY],
 CONSTRAINT [_Module_ix1] UNIQUE NONCLUSTERED
(
	[tf_moduleName] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY],
 CONSTRAINT [_Module_ix2] UNIQUE NONCLUSTERED
(
	[tf_title] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

GO
USE [extjs5]
GO
ALTER TABLE [dbo].[_Module]  WITH CHECK ADD  CONSTRAINT [_Module_fk1] FOREIGN KEY([tf_moduleGroupId])
REFERENCES [dbo].[_ModuleGroup] ([tf_moduleGroupId])
ON UPDATE CASCADE
CREATE TABLE [dbo].[_MenuGroup](
	[tf_menuGroupId] [nvarchar](10) COLLATE Chinese_PRC_CI_AS NOT NULL,
	[tf_title] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
	[tf_description] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
	[tf_glyph] [nvarchar](10) COLLATE Chinese_PRC_CI_AS NULL,
	[tf_iconURL] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
	[tf_remark] [nvarchar](max) COLLATE Chinese_PRC_CI_AS NULL,
	[tf_expand] [bit] NULL,
 CONSTRAINT [PK___MenuGroup__1920BF5C] PRIMARY KEY CLUSTERED
(
	[tf_menuGroupId] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY],
 CONSTRAINT [_MenuGroup_ix1] UNIQUE NONCLUSTERED
(
	[tf_title] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[_MenuModule](
	[tf_menuModuleId] [int] NOT NULL,
	[tf_menuGroupId] [nvarchar](10) COLLATE Chinese_PRC_CI_AS NOT NULL,
	[tf_moduleId] [nvarchar](10) COLLATE Chinese_PRC_CI_AS NOT NULL,
	[tf_orderId] [int] NULL,
	[tf_addSeparator] [bit] NULL,
	[tf_parentMenu] [nvarchar](20) COLLATE Chinese_PRC_CI_AS NULL,
	[tf_title] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
	[tf_parentFilter] [nvarchar](max) COLLATE Chinese_PRC_CI_AS NULL,
 CONSTRAINT [PK___MenuModule__2C3393D0] PRIMARY KEY CLUSTERED
(
	[tf_menuModuleId] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

GO
USE [extjs5]
GO
ALTER TABLE [dbo].[_MenuModule]  WITH CHECK ADD  CONSTRAINT [_MenuModule_fk1] FOREIGN KEY([tf_menuGroupId])
REFERENCES [dbo].[_MenuGroup] ([tf_menuGroupId])
ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[_MenuModule]  WITH CHECK ADD  CONSTRAINT [_MenuModule_fk2] FOREIGN KEY([tf_moduleId])
REFERENCES [dbo].[_Module] ([tf_moduleId])
ON UPDATE CASCADE

建立表后加入一些数据:

数据库和源码会在一个阶段结束的时候提供下载。

时间: 2024-10-05 19:20:41

跟我一起学extjs5(28--加入模块和菜单定义[1建立数据库和表])的相关文章

跟我一起学extjs5(29--加入模块和菜单定义[2建立java bean])

跟我一起学extjs5(29--加入模块和菜单定义[2建立java bean]) 对上一节中加入的4个模块在java中建立相应的bean文件. 以上表建立好以后,需要建立java bean文件.在建立之前需要加入几个支持类. 先在com.jfok.server.common中建立包annotation,再在下面加入二个类库,这二个是自定义的注释类.分别用来注释每一个模块的信息和模块中每一字段的信息. package com.jfok.server.common.annotation; impor

跟我一起学extjs5(30--加入模块和菜单定义[3后台系统数据的组织和生成])

跟我一起学extjs5(30--加入模块和菜单定义[3后台系统数据的组织和生成]) 对于大多web程序来说,后台是完成控制和处理的,前台就是一个展示工具,这个系统也是这样.在上一节中建立了四个模块,下面开始设计前后台的交互.将系统信息和模块.菜单信息传到前台,由前台来进行展示. 首先新建一个java bean类用来存放各种需要传到前台的数据,里面包括:系统信息.操作人员信息.服务人员信息.模块信息.菜单.现在只加入了这几个,以后还要加入各种 各样的权限设置.在com.jfok.server.co

跟我一起学extjs5(32--加入模块和菜单定义[4更新菜单(源码下载)])

跟我一起学extjs5(32--加入模块和菜单定义[4根据后台信息更新菜单]) 这一节根据后台传递过来的菜单分组和菜单定义,以及模块定义来更新4种类型的菜单. 按钮菜单和标准菜单的数据格式是一样的,生成的函数都在MainModel.js中,下面将其改一下: // 根据data.tf_MenuGroups生成菜单条和菜单按钮下面使用的菜单数据 getMenus : function() { var items = [], me = this; Ext.Array.each(this.get('tf

跟我一起学extjs5(31--加入模块和菜单定义[4前台通过ajax来调用数据与展示])

跟我一起学extjs5(31--加入模块和菜单定义[4前台通过ajax来调用数据与展示]) 上一节已经把到现在为止的后台做好了,启动tomcat ,在浏览器中打入网址:http://localhost:8888/app/applicationinfo.do,就可以取得系统参数值.下面看一下在chrome调试器中的结果. 到此为止,后台暂告一段落,又要开始对前台的extjs的程序进行修改了. 首先要修改的是MainModel.js,在此js文件中加入构造函数: constructor : func

跟我一起学extjs5(35--单个模块的设计[3根据类的标注自动生成数据])

跟我一起学extjs5(35--单个模块的设计[3根据类的标注自动生成数据]) 然后在hibernate.cfg.xml中加入: <mapping class="com.jfok.server.hibernate.system._ModuleField" /> <mapping class="com.jfok.server.hibernate.system._ModuleGridScheme" /> <mapping class=&qu

跟我一起学extjs5(37--单个模块的设计[5取得模块列表数据])

跟我一起学extjs5(37--单个模块的设计[5取得模块列表数据]) 写了几个月,总算有点盼头了,最终要从后台取得数据了.后台的spring mvc 和 service 仅仅能简单的说说了,里面加了几十个类.有兴趣的下载了源代码自己看.以下画张通用的模块列表取数据的流程,这个流程是适用于全部的模块.我这个后台处理程序也是对全部的模块进行统一处理,包含数据查找,新增,改动,删除都是同样的. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamZvaw==

跟我一起学extjs5(38--单个模块的设计[6取得模块列表数据])

跟我一起学extjs5(38--单个模块的设计[6取得模块列表数据]) 上一节中做好了前后台的程序,现在来看看取得数据的运行过程.在菜单中选择 "系统管理"--"模块分组".就可以看到下图,在渲染后grid后,会显示数据. 来看看ajax取得数据的url和数据. url的信息: Remote Address:[::1]:8888 Request URL:http://localhost:8888/app/rest/module/fetchdata.do?_dc=14

跟我一起学extjs5(42--单个模块的数据新增方式)

跟我一起学extjs5(42--单个模块的数据新增方式) 前面的章节中已经加入了一个自定义的模块,并且可以进行数据的新增.修改.删除的操作了,在这个基础上就可以大作文章了.这一节来设想几种新据新增的方式,并给出一些具体的解决方案. 看了我后台java源码的可以看出,所有的模块的新增.修改.删除全部是相同的处理,只是用了反射来生成各个实体bean,这样不管你有多少个业务bean,你的这部分代码是不用再增加了,只需要考虑一些逻辑处理上的操作即可,这些在后面会提到.基于这样的方式,我们可以定义多种数据

跟我一起学extjs5(36--单个模块的设计[4根据菜单建立相应的模块])

跟我一起学extjs5(36--单个模块的设计[4根据菜单建立相应的模块]) 前几节处理好了后台,现在又要处理前台了.首先是要修改菜单的选择事件,在创建一个module的时候将 moduleName参数传递进去. 修改MainController.js中的函数: // 选择了主菜单上的菜单后执行 onMainMenuClick : function(menuitem) { var maincenter = this.getView().down('maincenter'); maincenter