Jxstar平台集成-数据透视表-PivotGrid-的效果

个性开发admin 发表了文章 • 0 个评论 • 1760 次浏览 • 2018-05-12 18:20 • 来自相关话题

在功能设计器“事件注册”中导入事件“数据透视表”,在更多菜单点击此事件。





弹出下面的配置界面,需要设置好行标签、列标签、数值列,添加用拖拽的方式从左边字段栏拖到右边;取消右边字段可以双击。





常用数据透视方案可以保存。点击统计后输出效果如下:





点击右上角的导出按钮,可以导出:带透视表的Excel(Sheet2是源数据)、Excel数据、Html数据。















  查看全部
在功能设计器“事件注册”中导入事件“数据透视表”,在更多菜单点击此事件。

a.png

弹出下面的配置界面,需要设置好行标签、列标签、数值列,添加用拖拽的方式从左边字段栏拖到右边;取消右边字段可以双击。

b.png

常用数据透视方案可以保存。点击统计后输出效果如下:

c.png

点击右上角的导出按钮,可以导出:带透视表的Excel(Sheet2是源数据)、Excel数据、Html数据。

d.png


e.png


f.png

 

ExtJS 6.5.3学习笔记

个性开发admin 发表了文章 • 0 个评论 • 3456 次浏览 • 2018-05-12 18:13 • 来自相关话题

最近需要实现一个数据透视表功能,找了许多组件都不好用,如jqwidgets5.7.2等,最后采用了最新版的 ExtJS 6.5.3 的 PivotGrid 控件,集成效果见另一篇文章。
 
下面保存一下 ExtJS6的使用笔记:
 

--ExtJS GPL版,到这里下载:
https://www.sencha.com/legal/gpl/

--ExtJS试用版到这里下载:
https://www.sencha.com/products/evaluate/


Sencha Cmd 6.5.3 使用指南如下:
http://docs.sencha.com/extjs/6 ... .html
下面是创建应用的步骤:

--1、绑定SDK
sencha config --prop sencha.sdk.path=C:\D\Apache2.2\htdocs\ext-6.5.3 --save

--2、先新建一个文件夹,然后进入此文件夹再创建初始应用
sencha app init --modern PivotExp --移动模式
sencha app init --ext@6.2.0 --modern PivotExp --带中间参数报错 

sencha app init --classic PivotExp --经典模式

--sencha -sdk D:\extjs\ext-6.5.3 generate app -modern Demo D:\demo

--3、启动应用
sencha app watch

--4、调试应用URL
http://localhost:1841/ 


http://docs.sencha.com/extjs/6 ... orter
http://localhost/ext-6.5.3/bui ... -grid

--使用pivot_grid控件,总是提示找不到 pivot 包,需要下载 ext-addons-6.5.3-trial.zip ,在试用版申请邮件中有一行:
Pivot Grid, D3 Adapter, Calendar, and Exporter add-ons
下载链接类似 https://cdn.sencha.com/ext/tri ... xxxxx

--创建 sencha ExtJS 6 项目的几种方法
https://blog.csdn.net/lovelyel ... 77616

--怎么去掉顶部的 Ext JS Trial 字样
--把项目文件夹 *.scss 全文查找 'd',替换为 '' 为就可以了;
--或者 PivotExp-all_1.css 文件中的 content: 'd' 替换为 content: ''

--应用打包为发布版
sencha app build production

--发布版执行时报错 TypeError: c is not a constructor app.js 
--解决方案如下: https://www.cnblogs.com/icyhoo/p/8295162.html

--应用打包为测试版
sencha app build testing

--一般是因为 requires 类不够造成的,可以构建测试通过后在构建产品;
现在可以看到具体错误,因为无法创建 plugin.viewport,这个时候找到相关的类或文件,在Application.js  requires加入 Ext.container.Viewport
  查看全部
最近需要实现一个数据透视表功能,找了许多组件都不好用,如jqwidgets5.7.2等,最后采用了最新版的 ExtJS 6.5.3 的 PivotGrid 控件,集成效果见另一篇文章。
 
下面保存一下 ExtJS6的使用笔记:
 

--ExtJS GPL版,到这里下载:
https://www.sencha.com/legal/gpl/

--ExtJS试用版到这里下载:
https://www.sencha.com/products/evaluate/


Sencha Cmd 6.5.3 使用指南如下:
http://docs.sencha.com/extjs/6 ... .html
下面是创建应用的步骤:

--1、绑定SDK
sencha config --prop sencha.sdk.path=C:\D\Apache2.2\htdocs\ext-6.5.3 --save

--2、先新建一个文件夹,然后进入此文件夹再创建初始应用
sencha app init --modern PivotExp --移动模式
sencha app init --ext@6.2.0 --modern PivotExp --带中间参数报错 

sencha app init --classic PivotExp --经典模式

--sencha -sdk D:\extjs\ext-6.5.3 generate app -modern Demo D:\demo

--3、启动应用
sencha app watch

--4、调试应用URL
http://localhost:1841/ 


http://docs.sencha.com/extjs/6 ... orter
http://localhost/ext-6.5.3/bui ... -grid

--使用pivot_grid控件,总是提示找不到 pivot 包,需要下载 ext-addons-6.5.3-trial.zip ,在试用版申请邮件中有一行:
Pivot Grid, D3 Adapter, Calendar, and Exporter add-ons
下载链接类似 https://cdn.sencha.com/ext/tri ... xxxxx

--创建 sencha ExtJS 6 项目的几种方法
https://blog.csdn.net/lovelyel ... 77616

--怎么去掉顶部的 Ext JS Trial 字样
--把项目文件夹 *.scss 全文查找 'd',替换为 '' 为就可以了;
--或者 PivotExp-all_1.css 文件中的 content: 'd' 替换为 content: ''

--应用打包为发布版
sencha app build production

--发布版执行时报错 TypeError: c is not a constructor app.js 
--解决方案如下: https://www.cnblogs.com/icyhoo/p/8295162.html

--应用打包为测试版
sencha app build testing

--一般是因为 requires 类不够造成的,可以构建测试通过后在构建产品;
现在可以看到具体错误,因为无法创建 plugin.viewport,这个时候找到相关的类或文件,在Application.js  requires加入 Ext.container.Viewport
 

Java-Mail 用QQ邮箱发送邮件时报错

回复

个性开发admin 回复了问题 • 1 人关注 • 1 个回复 • 2347 次浏览 • 2018-04-14 10:52 • 来自相关话题

配置审批单中显示部门印章与个人签名的效果

开发工具admin 发表了文章 • 1 个评论 • 1386 次浏览 • 2018-04-04 19:15 • 来自相关话题

效果如下:





 
配置手册见附件。
 
效果如下:

效果.png

 
配置手册见附件。
 

在一个功能中通过弹出窗口的方式打开另一个功能的表格或者表单

个性开发admin 发表了文章 • 0 个评论 • 1002 次浏览 • 2018-03-30 16:44 • 来自相关话题

--在表格中选择某条记录,打开一个弹出窗口,显示另一个功能的表单界面,表格的INC示列代码如下:
--参考功能:功能设计器 -- 更多 -- 扩展页面定义config.eventcfg = {
setFunext: function(){
var records = this.grid.getSelectionModel().getSelections();
if (!JxUtil.selectone(records)) return;
var selfunid = records[0].get('fun_base__fun_id');

//加载Form数据
var hdcall = function(page) {
//设置外键键
page.getForm().fkName = 'fun_ext__fun_id';
page.getForm().fkValue = selfunid;

//加载显示数据
var options = {
where_sql: 'fun_ext.fun_id = ?',
where_type: 'string',
where_value: selfunid,
callback: function(data) {
//如果没有数据则执行新增
if (data.length == 0) {
page.formNode.event.create();
} else {
var r = page.formNode.event.newRecord(data[0]);

page.getForm().myRecord = r;
page.getForm().loadRecord(r);
}
}
};
Jxstar.queryData('fun_ext', options);
};

//显示数据
var define = Jxstar.findNode('fun_ext');
Jxstar.showData({
filename: define.formpage,
title: define.nodetitle,
width: 500,
height: 250,
callback: hdcall
});
}
}
--在表单打开一个弹出窗口,显示另一个功能的表单界面,表单的INC示列代码如下:config.eventcfg = {
setFunext: function(){
var keyid = this.getPkField().getValue();--取主键值
var myform = this.form;
var selfunid = myform.get("fun_base__fun_id");

--打开表单的方法同上
...
}
}
--在表格中打开一个弹出窗口,显示另一个功能的布局页面,双击表格记录可以切换到表单,表格的INC示列代码如下:config.eventcfg = {
mywin: function(){
var records = this.grid.getSelectionModel().getSelections();
if (!JxUtil.selectone(records)) return;
//var selfunid = records[0].get('fun_base__fun_id');

//加载Form数据
var hdcall = function(layout) {
//过滤条件
var where_sql = 'store_in.in_id like ?';
var where_type = 'string';
var where_value = '%';//查询条件根据实际情况修改

//加载数据
JxUtil.delay(500, function(){
var grid = layout.getComponent(0).getComponent(0);
if (!grid) {
alert('没有找到表格对象!'); return;
}
Jxstar.loadData(grid, {where_sql:where_sql, where_value:where_value, where_type:where_type});
});
};

//显示数据
var define = Jxstar.findNode('store_in');
Jxstar.showData({
nodedefine: define,
filename: define.layout,
title: define.nodetitle,
width: 900,
height: 650,
callback: hdcall
});
}
}
--在表格中打开一个弹出窗口,显示另一个功能的表格,表格的INC示列代码如下:
--参考功能:系统设置 -- 权限设置 -- 用户注册 -- “所属角色”按钮config.eventcfg = {
setRole: function(){
var records = this.grid.getSelectionModel().getSelections();
if (!JxUtil.selectone(records)) return;

var pkcol = this.define.pkcol;
var seluserid = records[0].get(pkcol);

//过滤条件
var where_sql = 'sys_user_role.user_id = ?';
var where_type = 'string';
var where_value = seluserid;

//加载数据
var hdcall = function(grid) {
//显示数据
JxUtil.delay(500, function(){
//设置外键值
grid.fkValue = where_value;
Jxstar.loadData(grid, {where_sql:where_sql, where_value:where_value, where_type:where_type});
});
};

var srcDefine = Jxstar.findNode('sys_user_role');
//显示数据
Jxstar.showData({
filename: srcDefine.gridpage,
title: srcDefine.nodetitle,
pagetype: 'subgrid',
nodedefine: srcDefine,
callback: hdcall
});
}
}; 查看全部
--在表格中选择某条记录,打开一个弹出窗口,显示另一个功能的表单界面,表格的INC示列代码如下:
--参考功能:功能设计器 -- 更多 -- 扩展页面定义
config.eventcfg = {
setFunext: function(){
var records = this.grid.getSelectionModel().getSelections();
if (!JxUtil.selectone(records)) return;
var selfunid = records[0].get('fun_base__fun_id');

//加载Form数据
var hdcall = function(page) {
//设置外键键
page.getForm().fkName = 'fun_ext__fun_id';
page.getForm().fkValue = selfunid;

//加载显示数据
var options = {
where_sql: 'fun_ext.fun_id = ?',
where_type: 'string',
where_value: selfunid,
callback: function(data) {
//如果没有数据则执行新增
if (data.length == 0) {
page.formNode.event.create();
} else {
var r = page.formNode.event.newRecord(data[0]);

page.getForm().myRecord = r;
page.getForm().loadRecord(r);
}
}
};
Jxstar.queryData('fun_ext', options);
};

//显示数据
var define = Jxstar.findNode('fun_ext');
Jxstar.showData({
filename: define.formpage,
title: define.nodetitle,
width: 500,
height: 250,
callback: hdcall
});
}
}

--在表单打开一个弹出窗口,显示另一个功能的表单界面,表单的INC示列代码如下:
config.eventcfg = {
setFunext: function(){
var keyid = this.getPkField().getValue();--取主键值
var myform = this.form;
var selfunid = myform.get("fun_base__fun_id");

--打开表单的方法同上
...
}
}

--在表格中打开一个弹出窗口,显示另一个功能的布局页面,双击表格记录可以切换到表单,表格的INC示列代码如下:
config.eventcfg = {
mywin: function(){
var records = this.grid.getSelectionModel().getSelections();
if (!JxUtil.selectone(records)) return;
//var selfunid = records[0].get('fun_base__fun_id');

//加载Form数据
var hdcall = function(layout) {
//过滤条件
var where_sql = 'store_in.in_id like ?';
var where_type = 'string';
var where_value = '%';//查询条件根据实际情况修改

//加载数据
JxUtil.delay(500, function(){
var grid = layout.getComponent(0).getComponent(0);
if (!grid) {
alert('没有找到表格对象!'); return;
}
Jxstar.loadData(grid, {where_sql:where_sql, where_value:where_value, where_type:where_type});
});
};

//显示数据
var define = Jxstar.findNode('store_in');
Jxstar.showData({
nodedefine: define,
filename: define.layout,
title: define.nodetitle,
width: 900,
height: 650,
callback: hdcall
});
}
}

--在表格中打开一个弹出窗口,显示另一个功能的表格,表格的INC示列代码如下:
--参考功能:系统设置 -- 权限设置 -- 用户注册 -- “所属角色”按钮
config.eventcfg = {
setRole: function(){
var records = this.grid.getSelectionModel().getSelections();
if (!JxUtil.selectone(records)) return;

var pkcol = this.define.pkcol;
var seluserid = records[0].get(pkcol);

//过滤条件
var where_sql = 'sys_user_role.user_id = ?';
var where_type = 'string';
var where_value = seluserid;

//加载数据
var hdcall = function(grid) {
//显示数据
JxUtil.delay(500, function(){
//设置外键值
grid.fkValue = where_value;
Jxstar.loadData(grid, {where_sql:where_sql, where_value:where_value, where_type:where_type});
});
};

var srcDefine = Jxstar.findNode('sys_user_role');
//显示数据
Jxstar.showData({
filename: srcDefine.gridpage,
title: srcDefine.nodetitle,
pagetype: 'subgrid',
nodedefine: srcDefine,
callback: hdcall
});
}
};


主表单新增保存后,子表格的按钮还是灰色的

回复

个性开发admin 发起了问题 • 1 人关注 • 0 个回复 • 1234 次浏览 • 2018-03-30 11:14 • 来自相关话题

给没有图标的按钮统一添加一个图标

开发工具admin 发表了文章 • 0 个评论 • 719 次浏览 • 2018-03-29 09:59 • 来自相关话题

update fun_event set iconcls = 'fa-bookmark-o' where show_type = 'tool' and client_method > ' ' and is_hide = '0' and iconcls is null
and event_code not in (select event_code from fun_event where fun_id in ('sysevent', 'queryevent', 'login')) 查看全部
update fun_event set iconcls = 'fa-bookmark-o' where show_type = 'tool' and client_method > ' ' and is_hide = '0' and iconcls is null 
and event_code not in (select event_code from fun_event where fun_id in ('sysevent', 'queryevent', 'login'))

定义一个快速新建功能的菜单

开发工具admin 发表了文章 • 0 个评论 • 788 次浏览 • 2018-03-24 14:08 • 来自相关话题

用下面的代码保存到一个js文件中,如:/demo/store/pub/create_store_in.js
新建一个功能ID,如:store_in_new,功能名称为“新建入库单”,用上面的js文件作为布局页面文件。
这样点击“新建入库单”菜单时,打开的就是一个新增入库单状态的表单界面。 
 Jxstar.currentPage = function(define, pageParam) {
var param = {};
param.whereSql = 'store_in.auditing = ?';//要改为目标功能的表名
param.whereValue = '0';
param.whereType = 'string';
param.isfast = true;
param.funTitle = define.nodetitle;
Jxstar.createNode('store_in', param);//要改为目标功能ID
}; 查看全部
用下面的代码保存到一个js文件中,如:/demo/store/pub/create_store_in.js
新建一个功能ID,如:store_in_new,功能名称为“新建入库单”,用上面的js文件作为布局页面文件。
这样点击“新建入库单”菜单时,打开的就是一个新增入库单状态的表单界面。 
 
Jxstar.currentPage = function(define, pageParam) {
var param = {};
param.whereSql = 'store_in.auditing = ?';//要改为目标功能的表名
param.whereValue = '0';
param.whereType = 'string';
param.isfast = true;
param.funTitle = define.nodetitle;
Jxstar.createNode('store_in', param);//要改为目标功能ID
};

微信服务号消息没有提醒声音

移动开发admin 发表了文章 • 0 个评论 • 878 次浏览 • 2018-03-23 15:58 • 来自相关话题

进入微信公众平台管理界面:https://mp.weixin.qq.com 
 
菜单:安全中心 -- 风险操作提醒 -- 启用,这样服务号发送的消息就会有声音提醒了。
 
但已经关注这个服务号的用户如果收到的消息还是没有提醒声音,就需要先取消关注,
 
然后再关注一下,就有声音了。 查看全部
进入微信公众平台管理界面:https://mp.weixin.qq.com 
 
菜单:安全中心 -- 风险操作提醒 -- 启用,这样服务号发送的消息就会有声音提醒了。
 
但已经关注这个服务号的用户如果收到的消息还是没有提醒声音,就需要先取消关注,
 
然后再关注一下,就有声音了。

Mysql不停报错:IP address 'x.x.x.x' could not be resolved: 这是在主机名解析时通常出现的暂时错误

项目管理admin 发表了文章 • 0 个评论 • 3316 次浏览 • 2018-03-21 20:24 • 来自相关话题

Mysql 在 C:\mysql-5.5.22\data\[机器名].err 中不断出现类似下面的错误:
 
180318  3:51:00 [Warning] IP address '118.193.206.236' could not be resolved: 这是在主机名解析时通常出现的暂时错误,它意味着本地服务器没有从权威服务器上收到响应。 
180318  3:51:12 [Warning] IP address '118.193.206.236' could not be resolved: 请求的名称有效,但是找不到请求的类型的数据。 
180318  3:56:47 [Warning] IP address '61.97.248.10' could not be resolved: 不知道这样的主机。 
180318  4:21:38 [Warning] IP address '112.30.132.111' could not be resolved: 这是在主机名解析时通常出现的暂时错误,它意味着本地服务器没有从权威服务器上收到响应。 
 
则修改:my.ini 文件,最后添加下面一段,问题解决: 

sip-host-cache
skip-name-resolve

 
具体原因,大家百度。
  查看全部
Mysql 在 C:\mysql-5.5.22\data\[机器名].err 中不断出现类似下面的错误:
 
180318  3:51:00 [Warning] IP address '118.193.206.236' could not be resolved: 这是在主机名解析时通常出现的暂时错误,它意味着本地服务器没有从权威服务器上收到响应。 
180318  3:51:12 [Warning] IP address '118.193.206.236' could not be resolved: 请求的名称有效,但是找不到请求的类型的数据。 
180318  3:56:47 [Warning] IP address '61.97.248.10' could not be resolved: 不知道这样的主机。 
180318  4:21:38 [Warning] IP address '112.30.132.111' could not be resolved: 这是在主机名解析时通常出现的暂时错误,它意味着本地服务器没有从权威服务器上收到响应。 
 
则修改:my.ini 文件,最后添加下面一段,问题解决: 


sip-host-cache
skip-name-resolve


 
具体原因,大家百度。